技术文章及通讯

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

Bill Seufzer博士,NASA兰利研究中心


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

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

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

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

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

用MATLAB生成控制代码

在手册EBF3.过程中,工程师用g码(一种计算机数控编程语言)编写指令。例如,这些指令将打开电子束并设置其强度,开始向金属丝输送以启动金属熔池,并移动机器人焊机以制造金属珠。由于珠子的精确厚度无法预先确定,工程师不得不估计下一层应该从哪里开始。如果估计不准确,工程师必须在沉积过程中手动重新调整焊接平台的高度。即使拥有专业的技能和知识,编写g代码并引导过程完成任何比基本3D形状更复杂的部分也是一个挑战。

在自动化这一过程中,我们的首要任务是简化更复杂形状的g代码的创建,例如用于加固低温罐的正交几何图形(图2)。这种结构的g代码很难手工编写,特别是需要防止过多的材料沉积在十字路口的代码。

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

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

从CAD文件中制造零件

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

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

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

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

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

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

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

将仪器

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

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

图6。图5所示的零件,是经过多层沉积后部分成型的。
图6。图5所示的零件,是经过多层沉积后部分成型的。

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

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

组装完整的控制系统

完整的控制系统包括一台控制台PC机和一台运行MATLAB代码的仪表PC机,以及Sciaky的嵌入式计算机,用于控制机器人。在仪器PC上,一个称为编排器的MATLAB应用程序从STL文件生成g代码。它将此代码发送到控制台PC,在那里代码被编译并上传到焊工的嵌入式计算机。然后舞蹈指导示意焊工开始焊接。

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

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

classdef shazam手柄属性lmu %激光测量单元(Acuity®zab %接口到Zaber®真空额定执行器w2kOffset % [x y z]矢量探头对焊机点的offset %一组测量点[x y z t] results %测量结果portLmu = 'com2';portZab = 'com3';结束方法%不完整的一套方法函数打开(sha) %函数简化打字为手动操作%打开屏蔽门sha.zab.open;end函数measure(sha,w2k) %在每个点对x=1进行Z轴测量:size(sha.points,1) %将探针移动到点w2k.goto(sha.points(x,:)+sha. w2koffset)之上;curPos = sha.points(X,:);% get measurement (Z) curPos(3) = sha.height;记录位置sha.results(x,:)= curPos;结束结束结束

图7。SHAZAM类定义对象。该对象封装了两个串行接口,一个连接Acuity激光器,另一个连接Zaber驱动器,用于打开和关闭保护激光的门。

利用MATLAB,我们可以在任何时间对任何对象进行交互式检测。面向对象的方法还使向系统添加新功能变得更容易。我们目前正在测试一个系统,该系统使用摄像头来检测送丝器和热电偶的问题,以监测制造过程中固定部件的底板的温度。

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

发布于2012 - 92009v00

查看相关功能的文章

查看相关行业的文章