自动化电子束自由格式制作与MATLAB

美国国家航空航天局兰利研究中心的Bill Seufzer博士

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

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

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

直到最近,然而,制造即使使用电子束焊机是由熟练的操作员需要严密监督劳动密集型人工处理相对简单的形状。在NASA兰利,我们开发的MATLAB的控制系统®该完全自动化的过程,并且能够在CAD软件生成的3D表示生产复杂钛和铝组分。

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

用MATLAB生成控制代码

在手动EBF3.过程中,工程师在写G代码,计算机数控编程语言指令。这些指令将,例如,打开电子束上,并设置其强度,开始进给焊丝以引发金属的熔池,并移动机器人焊机创建金属的胎圈。因为在胎圈的精确厚度不能预先确定,则工程师必须估计下一个层应该开始。如果估计被关闭,工程师不得不手动重新调整沉积过程中焊接平台的高度。即使有专业的技能和知识,这是写的G代码和程序牧羊人完成了比基本3D形状更复杂的任何部分,是一个挑战。

我们在此自动化过程中的首要任务是简化为更复杂的形状,如用于增强低温储罐的几何形状orthogrid(图2)创建的G代码。用于这种结构中的G代码是很难用手,特别需要防止材料的过度量从在交点处被沉积的代码编写。

图2.粗orthogrid结构,与由生成MATLAB G代码创建的。

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

从CAD文件制造零件

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

我们写MATLAB代码解析STL文件,获得的形状(图3)的3D表示。然后,该代码切片形状成大致由焊机沉积的金属胎圈的厚度的层。

图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,被称为编导一个MATLAB应用生成从STL文件G码。它发送验证码到控制台的PC,其中代码被编译并上传到焊工的嵌入式计算机。编导然后发信号以开始焊接焊机。

作为层被沉积时,MATLAB闭环控制器监控熔池,并根据需要调整电子束电流。当该层完成后,编导指示SHAZAM移动到位并测量部分的高度的焊机。然后它从基于当前高度的STL文件中的下一个片,并重复该过程,直到部分已经完成。MATLAB在本领域的一个重要的好处是它的整合和协调不同的技术,包括G代码生成软件,焊工,照相机和激光测量系统的能力。

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

classdef shazam handle properties lmu % Laser measurement unit (Acuity® AR 700) zab % interface to the Zaber® vacuum rated actuator w2kOffset % [x y z] vector offset of probe to the welder points % a set of points to measure [x y z t] results % the result of measurements portLmu = 'com2'; portZab = 'com3'; end methods % not a complete set of methods function open(sha) % function to simplify typing for manual operations % open the shield door sha.zab.open; end function measure(sha,w2k) % at each point make a Z axis measurement for x=1:size(sha.points,1) % move the probe above the point w2k.goto(sha.points(x,:)+sha.w2kOffset); % get the X and Y coordinates curPos = sha.points(x,:); % get measurement (Z) curPos(3) = sha.height; % record the location sha.results(x,:)= curPos; end end end end

图7。沙札姆classdef对象。该对象封装了两个串行接口,一个连接到激光敏锐器,另一个连接到Zaber致动器,Zaber致动器打开和关闭一扇保护激光的门。

使用MATLAB,我们可以交互地检查在任何时间任何对象。在面向对象的方法也使得添加新功能,系统更容易。我们目前正在测试使用照相机检测与焊丝送进器和热电偶的问题并监控持有制造过程中部件的基板的温度的系统。

我们已经现场测试我们的EBF的微缩版3.焊接系统搭乘美国宇航局的减少重力飞机。我们也使用该技术在许多实际应用。例如,与我们合作的航空航天公司要我们生产出4磅重的部分是为了展示潜在的材料和EBF省力效益3.处理。零件的形状会要求他们开始与400磅重的钛坯,这将导致大量浪费和将需要数周来的机器。使用我们的系统,我公司生产的部分粗略的版本仅重23磅一天。本部分的而不是400磅的块开始消除2周加工和减少了超过80%所需的钛的量。

发布时间2012 - 92009v00


查看文章的相关能力

查看相关行业的文章