用MATLAB实现电子束自由曲面加工的自动化

Bill Seufzer博士,NASA Langley研究中心

在国际空间站和其他长期空间任务中,更换关键系统上损坏部件的能力可以将潜在的任务失败转化为成功。但是宇航员如何在微重力下,在离地球表面数百英里的地方制造零件或工具呢?

电子束自由成型制造(EBF)3.)技术提供了一个可能的解决方案。发明于美国宇航局兰利研究中心,EBF3.是一种用于金属的分层添加制造工艺,使用电子束能量源和送丝原料,通过逐层添加材料(主要是铝和钛合金)来构建3D对象。NASA Langley的当前系统基于Sciaky电子束焊机,该焊机已在工业工厂中使用多年(图1a和1b)。电子束焊机非常适合空间应用,因为它们必须在真空中操作,并且在微重力下工作良好。

图1a。美国宇航局兰利研究中心的电子束焊机。
图1b。电子束自由焊接。

然而,直到最近,使用电子束焊机制造即使是相对简单的形状,也是一个劳动密集型的手工过程,需要熟练的操作人员的密切监督。在NASA Langley,我们用MATLAB开发了一个控制系统®这完全自动化了过程,并且能够从CAD软件中创建的3D表示中生产复杂的钛和铝组件。

MATLAB的交互环境和面向对象编程特性简化了控制开发过程中的各个阶段:开发机器人控制,增加对从标准镶嵌语言(STL)文件读取形状数据的支持,并结合测量和图像采集功能。金宝app

用MATLAB生成控制代码

在手动EBF中3.在这一过程中,一位工程师用计算机数控编程语言G-code编写了指令。例如,这些指令将打开电子束并设置其强度,开始送丝以启动金属熔池,并移动机器人焊机以生成金属珠。因为珠的精确厚度可以并非预先确定,工程师必须估计下一层应从何处开始。如果估计值不正确,工程师必须在沉积过程中手动重新调整焊接平台的高度。即使具备专业技能和知识,编写G代码并指导更复杂零件的工艺完成也是一项挑战比基本的3D形状更复杂。

在自动化这个过程中,我们的首要任务是简化更复杂形状的g代码的创建,例如用于加固低温容器的正交几何形状(图2)。特别是防止过量材料堆积在十字路口所需的规范。

图2。一个粗糙的正交网格结构,用MATLAB生成的G代码创建。

我们的解决方案是开发一个MATLAB脚本,它可以自动生成g代码,从对象的兴趣点描述创建复杂对象。例如,给定图2所示网格的描述,MATLAB脚本生成注释的g -代码来打开光束,设置适当的电源设置,移动机器人焊机通过需要制造网格的点,然后关闭光束。

从CAD文件制作零件

我们制作的一些形状是使用CAD软件包设计的,这些软件包可以将设计导出为STL文件。我们的下一个自动化步骤是使用MATLAB直接读取这些STL文件,然后生成制作它们定义的形状所需的G代码。

我们编写了MATLAB代码,解析STL文件,获得形状的3D表示(图3)。然后代码将形状切片成层,层的厚度近似于焊机沉积的金属珠的厚度。

图3。MATLAB可视化的部分定义在STL文件。

例如,给定目标高度为1英寸,厚度为0.025英寸,MATLAB代码应用几何计算来确定形状与距其基础上方1英寸的平面将相交的点(图4)。

图4。三维形状的三层,每层由一组无序点组成。

MATLAB代码将这些点输入逻辑焊机刀具路径(图5),并生成该层的g代码。当我们开发这段代码时,我们使用MATLAB可视化3D形状,各个图层,以及这些图层的最终工具路径。

图5。描述单层焊机刀具路径的一组点。

合并仪表

在自动生成G代码以创建任意3D形状的过程中,我们将注意力转向了焊接过程。由于不可能精确控制焊机产生的金属珠的高度,因此每个熔敷层的厚度可能会有所不同。尽管层厚度通常与预期值相差不到0.002英寸,但当需要几百层来形成零件时,即使在每层上重复一个小错误,也会导致零件设计高度和制造高度之间的明显差异。操作员无法手动调整焊机的高度以纠正此错误。

我们的解决方案是一种激光测量系统,称为顺序水平自动Z轴测量,或SHAZAM。通过仪表控制工具箱进行控制,该系统引导激光束到正在制造的零件上,以确定其当前的高度。MATLAB代码使用这个值来选择下一个要制造的切片的位置。这种基本的反馈控制使我们能够更准确地再现原始设计,焊工操作人员的手动干预更少(图6)。

图6。如图5所示的部分是经过多层沉积后部分制备的。

我们的下一个工艺改进集中在加强控制珠。具体来说,我们想根据焊接点金属熔池的大小自动调整电子束的功率。为了沉积均匀的珠,我们需要在熔池太大时降低功率,在熔池太小时增加功率。同样,这一任务通常由操作员手工处理,需要大量的经验。

为了使这部分过程自动化,我们设置了一个8位黑白摄像机来拍摄焊接过程。我们使用图像采集工具箱从相机和图像处理工具箱导入图像的步骤模糊逻辑工具箱以编程方式确定何时需要调整熔池的大小。用模糊逻辑来表达机器操作员的经验观测值比用方程来描述它们更容易。我们可以简单地调整模糊逻辑,直到得到我们想要的结果。基于我们创建的模糊干扰系统,MATLAB代码通过仪表控制工具箱和与焊机计算机的RS-232链路调整束流。

组装完整的控制系统

完整的控制系统包括一台控制台PC和一台运行MATLAB代码的仪表PC,以及控制机器人的Sciaky嵌入式计算机。在仪表PC上,一个称为choreographer的MATLAB应用程序从STL文件生成G代码。它将该代码发送到控制台PC,在控制台PC上编译并更新代码加载到焊工的嵌入式计算机。编舞然后向焊工发出开始焊接的信号。

当熔敷层沉积时,MATLAB闭环控制器监控熔池并根据需要调整束流。当图层完成后,编舞指导焊工将SHAZAM移动到位并测量零件的高度。然后,它根据当前高度从STL文件中获取下一个切片,并重复该过程,直到零件完成。MATLAB在这一领域的一个关键优势是它能够集成和协调不同的技术,包括G代码生成软件、焊机、摄像头和激光测量系统。

通过应用面向对象编程技术,简化了系统包含的12000多行MATLAB代码的开发和维护。例如,SHAZAM设备被表示为通过定义良好的方法访问的对象,例如s、 开()s、 量.面向对象的代码几乎是自文档化的,并且比一组分散的子例程更容易调试(图7)。

classdef shazam手柄特性lmu%激光测量单位(锐度®ar700) zab %接口的Zaber®真空额定致动器w2kOffset%[x y z]探头到焊接点的矢量偏移量%a一组测量点[x y z t]结果%测量结果端口LMU='com2';portZab='com3';结束方法%不是一套完整的方法功能打开(sha)%用于简化手动操作的键入功能%打开屏蔽门sha.zab.open;端部功能测量(sha,w2k)%在每个点进行x=1的Z轴测量:尺寸(sha.points,1)%将探头移动到w2k.goto点上方(sha.points(x,:)+sha.w2k偏移);%获取X和Y坐标curPos=sha.点(X,:);%获取测量值(Z)curPos(3)=高度;%记录位置sha。结果(x,:)=curPos;结束

图7。SHAZAM classdef对象。该对象封装了两个串行接口,一个连接到Acuity激光器,另一个连接到打开和关闭保护激光器的门的Zaber执行器。

使用MATLAB,我们可以在任何时候以交互方式检查任何对象。面向对象的方法还可以更轻松地向系统添加新功能。我们目前正在测试一个系统,该系统使用摄像头检测送丝器和热电偶的问题,以监测制造过程中固定零件的基板的温度。

我们已经现场测试了我们的EBF的微型版本3.美国宇航局的减重力飞机上的焊接系统。我们还在许多实际应用中使用了该技术。例如,与我们合作的一家航空航天公司要求我们生产一个4磅重的零件,以展示EBF的潜在材料和省力优势3.的过程。零件的形状需要他们从一个400磅重的钛坯开始,这将导致大量的浪费,并需要数周的加工时间。使用我们的系统,我在一天内制作了一个大约23磅重的零件。从这部分开始,而不是400磅的块省去了两周的加工,并减少了80%以上的钛需求量。

2012年出版-92009v00


查看相关功能的文章

查看相关行业的文章