基于台达机电一体化平台的数控弯管设备共有六个运动轴系,工艺要求其中两轴需要直线插补,两轴需要圆弧插补,其它两轴没有特别的要求。PLC控制器选择的是32EH00T2和20PM00D,显示部分选择的是10.4寸触摸屏DOP-AE10THTD1,如下表所示。
数控弯管系统配置表
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>名称
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>型号
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>数量
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>触摸屏人机界面
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>DOP-AE10THTD1
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>1
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>PLC
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>DVP-32EH00T2
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>1
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>运动控制器
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>DVP-20PM00D
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>1
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>伺服驱动
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>三菱
normal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center>6
3.2 20PM运动控制器
弯管控制系统核心由台达运动控制器DVP-20PMMOOD构成。台达DVP-20PM00D是一款具有运动控制专用功能的可编程控制器。DVP-20PM00D的最大特点是PLC主机直接提供电子凸轮功能,或者说DVP-20PM00D是内置电子凸轮功能的PLC,所以有些场所直接称呼DVP-20PM00D为台达20PM运动控制器。20PM具有2路500KHz的输入与输出,在电子凸轮功能中定义X轴为从轴,编码器输入轴为主轴,当定义好CAM Table后,从轴依据定义的曲线跟随主轴运动。采用高速双CPU结构形式,利用独立CPU处理运动控制算法,可以很好地实现各种运动轨迹控制、逻辑动作控制,直线/圆弧插补控制等,数控弯管机正是利用了20PM运动控制器的电子凸轮功能解决复杂运动轨迹控制问题。 nextpage4 20PM数控弯管编程设计 4.1 弯模模式根据弯管加工要求,开发了两个弯管工艺模式,参见图1所示。
图1 弯管模式
4.2 工艺流程 设备分手动和自动模式,手动模式下主要是包括设备回原点、悬臂定长前进/后退、悬臂定长上升/下降以及弯短管时的手动弯模。设备的自动流程分A模式和B模式,分别对应下面的A流程和B流程,流程之间的切换通过人机来完成。在具体实施中,PLC为主控制器,用来控制流程的选择和跳转等,同时通过PLC给PM命令,以完成PM所担负的工作。
图2 弯模A模式流程图nextpage
图3 弯模B模式流程图
4.3 渐开线坐标计算
由于20PM自身不支持渐开线方式的插补功能,所以在具体实施中,将渐开线按照弯曲的角度分成多点,通过人机计算出每点的坐标,最后PM通过做直线插补来实现用户要求的功能。当时给出的具体渐开线方程: X=(R+H)*sinα+(L-α*R)*cosα Y= R-(R+H)* cosα+(L-α*R)*sinα 其中L,R,H都为常量,可以通过人机设定在计算时,为了预防编写的宏指令对人机的执行速度造成影响,通过画面cycle宏来实现坐标的计算,这样就不会影响到人机其它页面的操作速度。下面是编写的宏指令:
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>BMOV($88, (2@D664), 2)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>BMOV($90, (2@D144), 2)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>## X=(R+H)*SINθ+(L-R*θ)COSθ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>## Y=R-(R+H)*COSθ+(L-R*θ)SINθ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>#初始化运算
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>IF $58 <= $M56 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$112 = SIN($58) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$116 = COS($58) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$66 = FCNV($58) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$60 = FCNV($M50) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$62 = FCNV($M52) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$64 = FCNV($M54) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$120 = FDIV($66, 180.0) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$124 = FMUL($120, 3.14) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$128 = FMUL($124, $62) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##R+H
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$108 = FADD($62, $64) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##L-R*θ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$132 = FSUB($60, $128) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##(R+H)*SINθ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$136 = FMUL($108, $112) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##(L-R*θ)COSθ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$140 = FMUL($132, $116) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##(R+H)*COSθ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$144 = FMUL($108, $116) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##(L-R*θ)SINθ
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$148 = FMUL($132, $112) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##开始计算
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>## X
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$152 = FADD($136, $140) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>## Y
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$156 = FSUB($62, $144) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$160 = FADD($156, $148) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##角度自加一
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$58 = $58 + 1 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##转成整数并存储
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$164 = iCNV($152) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$168 = iCNV($160) (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$170 = $88 - $164 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$172 = $90 - $168 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>*$200 = $170 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>*$900 = $172 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$200 = $200 + 2 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$900 = $900 + 2 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>ELSEIF $58 < 120 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$58 = $58 + 1 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>*$200 = 400 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>*$900 = 400 (Signed DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$200 = $200 + 2 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$900 = $900 + 2 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>ELSE
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>##赋值给PM,并重新初始化
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>BMOV((2@D3000), $500, 240)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>BMOV((2@D3600), $1000, 240)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$58 = 0 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$200 = 500 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>$900 = 1000 (DW)
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>SETB $50.0
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt; TEXT-ALIGN: left" align=left>endif
normal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 37.8pt">end
5 结束语 台达PM20运动控制器在执行圆弧插补以及执行连续性的动作流程方面更接近于专业数控系统,有着PLC所不能比拟的优势,尽管在执行程序流程的灵活性方面,和PLC还是有一定的距离。 用管材制造的弯曲零件,无论是平面弯曲件,还是空间弯曲件,除大量应用于气体、液体的输送管路外,在金属结构中的应用也十分广泛。因此管材弯曲成形工艺是备受关注并得到迅速发展的重要领域,开展这方面的研究工作,具有十分重要的意义。