数控机床PLC程序设计.doc_第1页
数控机床PLC程序设计.doc_第2页
数控机床PLC程序设计.doc_第3页
数控机床PLC程序设计.doc_第4页
数控机床PLC程序设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PLC程序设计【实际的PLC代码以实际应用为准】设计思想PMAC内嵌了PLC功能,以支持数控系统的逻辑处理和I/O控制,并且具有一般PLC的运行特征,即循环运行方式,但通常是通过语句程序实现的,而且没有明确的集中处理约束,因此在进行复杂PLC程序设计时应借鉴常规PLC的设计方法和原则,才能保证程序逻辑的准确性。要实现PLC的集中输入输出特性,首先要保证I/O语句在程序中的位置,即首先将输入端口的状态数据读入映象寄存器中,使运行程序只检测该寄存器的状态,将输出结果存放在输出映象寄存器中,最后将输出映象寄存器的内容映射到实际物理端口。在配置了ACC-34A端子板的PMAC系统中,程序格式如下:(1)数据定义M1000-TWS:1 ;输入端口定义M1001-D:$0010F0 ;建立输入映像M800-Y:$0010F0,0 ;分解输入字节M801-Y:$0010F0,1 M1002- TWS:6 ;输出端口定义M1003-D:$0010F1 ;建立输出映像M900-Y:$0010F1,0 ;分解输出字节M901-Y:$0010F1,1 ;分解输出字节上述定义中,M1000和M1002分别对应输入和输出端口物理地址,由PMAC系统即时刷新端口状态;M1001和M1003为对应的映象变量,并指向PMAC固定存储器,以便在上电或复位时自动清零。把缓冲器字节分解成位,并由M变量直接进行位操作,方便了对端口各位的独立操作。(2)PLC程序open plc 1 ;建立或打开程序缓冲区clear ;清除缓冲区内容M1001=M1000 ;输入采样 ;用户编制的程序逻辑M1003=M1002 ;输出刷新close ;关闭缓冲区上述程序格式完全符合了PLC的基本工作方式,用户程序只需对M1001和M1003映象变量或分解后的M变量操作,不要直接访问M1000和M1002。梯形图是编制PLC程序的有效方法,将其引入PMAC的PLC程序设计中,代替直接使用编程语句的设计方法,在很大程度上降低了PLC程序设计难度。为描述该设计方法,以图1所示典型的电机正反转控制电路为例进行说明。KRKM1图1 电机正反转控制电路SB2KM1SB1KM2SB3KM2KM1KM2 在PMAC数控系统中,将按钮SB1、SB2、SB3和热继电器KR的常开触点接在端子板的输入端,将KM1和KM2接触器线圈接在输出端,则其控制逻辑可表达为图2所示的梯形图。KM1图2 电机正反转控制梯形图SB2KM1KM2SB1M800M801M901M900M900KM2SB3KM2KM1SB1M800M802M900M901M901KRM803KRM803图2中的M变量分别对应按钮在PMAC中的输入位和输出位,因此M具有逻辑变量特性,即只能取值0或1。容易根据梯形图写出由布尔逻辑表达的PMAC程序语句:M900=(M8001)&(M801|M900)&(M9011)&(M8031);M901=(M8001)&(M802|M901)&(M9001)&(M8031);语句中的“|”是“位或”操作符,表示节点并联;“&” 是“位与”操作符,表示节点串联;PMAC中没有“位反”指令,但可使用“异或”操作符“”表示梯形图中的常闭节点,即有:M按位取反=M1M常闭节点 显然,采用梯形图设计使逻辑关系清晰明了,尤其对于复杂的逻辑程序设计,采用布尔逻辑表达式避免了因大量使用IfElseEndIf条件语句而造成的逻辑混乱,而且程序语句运算简单,有利于加快程序的执行速度。使用梯形图方式设计逻辑和变量分配,用位操作结合PMAC的结构控制语句将梯形图转换为程序语句。设计程序:系统安全程序PLC1,机床回零程序PLC2,固定功能程序PLC3。接口类变量使用M10M39,M90M99:PLC接受的命令:M10M19M10:回零指令,1:执行回零控制过程,回零结束变量自动复位;0:取消回零运动。M11:断电命令,1:切断伺服驱动电源,断电后变量自动复位。M12:主轴启动,1:主轴运行,变量自动复位。M13:主轴停止,1:主轴停止运行,变量自动复位。M14:刀具坐标修正,变量自动复位。在改变刀具时必须调用。M15:XZY坐标回零指令,变量自动复位。M16:数控复位指令,变量自动复位。M17M19:未定M90,X轴JOG+,自动复位M91,X轴JOG-,自动复位M92,Y轴JOG+,自动复位M93,Y轴JOG-,自动复位M94,Z轴JOG+,自动复位M95,Z轴JOG-,自动复位M96,A轴JOG+,自动复位M97,A轴JOG-,自动复位M98,B轴JOG+,自动复位M99,B轴JOG-,自动复位Q98:刀具长度mmQ99:刀具半径mmQ127:主轴转速rpmQ128:XYZ直线点动移动增量mmQ129:AB旋转点动移动增量 Q130:倍率值PLC反馈的系统错误状态:M20M29M20:伺服断电M21:伺服开环(已隐含致命跟随误差检查)M22:到达硬限位M23:到达限位(硬限位软限位)M24:致命跟随误差M25:报警跟随误差M26:运行或计算错误M27:硬件或通讯错误M28:直线电机换向搜索零点开关报警M29:机床未回零报警PLC反馈的操作状态:M30M39M30:机床回零成功M31:机床状态正常。如M31=0时,上位机操作时应检查M20M29状态,并且操作许可为:如M22或M23或M28或M29为1,可以进行机床回零操作;如只有M23为1,可以进行点动操作或手动操作,使其离开软极限点;如只有M26为1,应检查NC程序中的参数错误,或逆解程序错误或其他计算错误。其他情况不能操作,建议用户重新冷启动系统。M32:NC程序正在运行。此时可以等待或数控复位或其他操作。M33M39:未定操作补充:1、在MDA或JOG或Auto方式转换时,如已启动主轴,应保持主轴状态,不要自动关闭;2、任何方式下,都可通过按键启动主轴,但在Auto方式下不得通过按键停止主轴,在MDA或JOG方式下可以通过按键停止主轴。3、不要使用“A”指令,如需要退出运行程序时,应启动数控复位指令。使用的中间变量:M40M69,M75M79M40M59:回零程序(PLC2)使用。M60M69:安全程序(PLC1)使用。M75M79:功能程序(PLC3)使用。注:M0M9在程序中不得使用,保留给PMAC系统或自定义伺服算法。安全PLC程序梯形图M1001M1000M121M22M122M221M222M321M322M521M522M621M622M800M20驱动故障标志到达硬限位标志M21 M138M238M338M538M638电机开环标志输入采样M6810000M131M23M132M231M232M331M332M531M532M631M632到达限位标志M142M24M242M342M542M642M141M241M341M541M641致命跟随误差M25报警跟随误差CMDKM60M26 M5182运行错误标志M5181M27 M83硬件错误标志M84M86CMD“#1J/#2J/#3j/#5j/#6j/”M62M60 M20断电脉冲产生M61M61 M60M61M20驱动故障开环驱动正常闭环延时M62 M20通电脉冲产生M63M63 M62M63M20延时M901=1,M12=0M12主轴启动M10=0,M30=0CMD“#7O0”M10=0, M30=0要求主轴开环M20M900M21M23报警指示输出M24M25M26M27M110断电命令复位M20M28M902 M21驱动上电保持M10M22M24M28M11M900M31运动使能标志M30M901=0M20强行停止主轴M21M779=Q127*I769/12000设定主轴转速M901=0,M13=0M13主轴停止M738CMD“#7O0”M5197=Q130*I10设定倍率M1002M1003输出刷新M30M29未回零标志M32程序正在运行M5180上述延时均表达为:M682000 ; M69M68 ; WHILE(M690) ; M69=M69-1 ; ENDWHILE 本程序占用变量M60M69M28由回零程序传过来,使直线电机负向搜索断电。M30为回零程序传过来的回零成功标志。M29为机床未回零报警标志M11为断电指令,M12为主轴启动指令,M13为主轴停止指令。主轴转速设定中,12000表示最大转速,即12000rpm/10V,该值在变频器中已确定,即变频器10V-200Hz-12000rpm。主轴转速的设定方法:在开环状态下,使用“o0”后,直接通过M779(已定义指向7电机PID内部滤波结果寄存器,16bitDAC)设定DAC输出,等效于“o数据”。倍率设定方法:直接将倍率值I10写入M5197(已定义指向1坐标系主命令时基寄存器),I10为伺服中断时间。机床回零PLC程序梯形图 CMDA等待回零指令M40WHILE (M10=0 or M20=1 or M21=1)HOME指令M121I123=-ABS(I123)直1负向搜索人工上电While(m140!=1) EndwM41CMD“#1HM”M40M51=0,M581000,M28=0I123=ABS(I123), I223=ABS(I223),I323=ABS(I323)M145=0,M245=0,M345=0,M545=0,M645=0M41=1,M42=0,M28=1M40=1,M30=0复位HM状态CMD”#1j/#2j/#3j/#5j/#6j/”M51M51=0M21ENDWHILEM10=0M20M21退出运动程序延时CMD“#1HM#2HM#3HM#5HM#6HM”等待在“位置”M321I323=-ABS(I323)直3负向搜索人工上电While(m340!=1) EndwM45CMD“#3HM”M45=1,M46=0,M28=1M221I223=-ABS(I223)直2负向搜索人工上电While(m240!=1) EndwM43CMD“#2HM”M43=1,M44=0,M28=1M222I223=ABS(I223)直2正向搜索人工上电While(m240!=1) EndwM44CMD“#2HM”M44=1,M43=0,M28=1M322I323=ABS(I323)直3正向搜索人工上电While(m340!=1) EndwM46CMD“#3HM”M46=1,M45=0,M28=1M122I123=ABS(I123)直1正向搜索人工上电While(m140!=1) EndwM42CMD“#1HM”M42=1,M41=0,M28=1M245M57M145M645M345M545到机床零位M621I623=-ABS(I623)Y负向搜索M622I623=ABS(I623)Y正向搜索While(m640!=1) EndwM49While(m640!=1) EndwCMD“#6HM”M50CMD“#6HM”M49=1, M50=0M50=1, M49=0M51M57M521I523=-ABS(I523)X负向搜索M522I523=ABS(I523)X正向搜索While(m540!=1) EndwM47While(m540!=1) EndwCMD“#5HM”M48CMD“#5HM”M47=1, M48=0M48=1, M47=0M57延时5全部坐标回零CMD “Z”M14=1M5187M10=0减小跟随误差Z坐标修正M30=1回零结束回零成功标志上述延时均表达为:M58=2000 ; M59M58 ; WHILE(M590) ; M59=M59-1 ; ENDWHILE延时的作用是:电机稳定后,才接受CMD命令,通过延时等待电机稳定。本程序占用M40M59变量。图中,M10为机床回参考点指令,M101机床复位回参考点(HOME);回零过程结束后自动复位M100。M10=0可强行停止回零运动。通过M30可以检查回零状态,M301表示完成回零操作,M300 失败。M281时(直线电机换向搜索),会传送给安全程序,自动断电,必须通过手动上电实现换向搜索。注: M141时通过功能程序(PLC3)设置在机床零点的Z坐标。固定功能PLC程序梯形图M75=0 ENDWHILE等待调用指令WHILE (M75=0 M14M75M15M16M90M91M92M93M94M95M96M97M98M99M30M91M91M532M5180M90M90M531M5180点动限位检查M93M93M632M5180M92M92M631M5180M95M95M232M5180M94M94M231M5180M132M131M332M331M97M97M23M5180M96M96M23M5180M99M99M23M5180M98M98M23M5180CMD“Q”M14运行修正程序M14=0结束运动程序CMD“B990R”M5180CMD“X=0Y=0Z=0”M15M15=0XZY坐标回零CMDAM16While (m5187 != 1) Endw数控复位Q127=0程序退出修正M5180等待“在位”While (m5187 != 1) Endw等待“在位”CMD“#1j=#2j=#3j=#5j=#6j=”CMD“B1”指向主程序区Q1301转速设定0倍率100I5189=0M90M91M92M93M94M95M96M97M98M99CMD“B991R”调用点动程序M16=0进给速度0退出程序注:程序退出修正的原理见上述运动学和指令说明部分,或论文;PLC和运动程序代码回零PLC程序; 接口参数:; 输入参数:M10,回零指令,M101时执行回零运动过程;M10=0时可强行终止回零运动; 输出参数:M30,回零状态,M30=1回零成功;M30=0回零未完成; 设计思想:; 工作台在回零时可以到达硬极限一次,再反向搜索;; 直线电机只能沿正向搜索,若到达硬极时,将断开驱动电源; 若要反向搜索,必须手动保持电源m10.19-* ;复位命令变量m40.59-* ;复位中间变量closeopen plc 2clearWhile (m10 = 0 Or m20 = 1 Or m21 = 1) If (m51 = 1) If (m21 = 0) cmd#1j/#2j/#3j/#5j/#6j/ ; 1号电机接入后增加#1j/ EndIf m51=0 EndIf If (m20 = 1 Or m21 = 1) m10=0 EndIf i123=abs(i123) i223=abs(i223) i323=abs(i323) m40=0 m41=0 m42=0 m43=0 m44=0 m45=0 m46=0 m47=0 m48=0 m49=0 m50=0 m51=0 m28=0 ; 传给安全PLC m58=1000EndWhileIf (m40 = 0) cmdA m59=m58 While (m59 0) m59=m59-1; EndWhile cmd#1hm#2hm#3hm#5hm#6hm ;1号电机接入后增加#1hm m145=0 m245=0 m345=0 m545=0 m645=0 ; 1号电机接入后增加m145=0 m30=0 m5181=0 ; 新加内容:复位圆弧半径错误标志,对应m38 m39=0 ; 新加内容:复位刀轴转角超差标志 m40=1EndIfIf (m121 = 1 And m41 = 0) ; 1号电机接入后增加 i123=-abs(i123) While (m140 != 1) Endwhile cmd#1hm m41=1 m42=0 m28=1EndIfIf (m122 = 1 And m42 = 0) ; 1号电机接入后增加 i123=abs(i123) While (m140 != 1) Endwhile cmd#1hm m42=1 m41=0 m28=1EndIfIf (m221 = 1 And m43 = 0) i223=-abs(i223) While (m240 != 1) Endwhile cmd#2hm m43=1 m44=0 m28=1EndIfIf (m222 = 1 And m44 = 0) i223=abs(i223) While (m240 != 1) Endwhile cmd#2hm m44=1 m43=0 m28=1EndIfIf (m321 = 1 And m45 = 0) i323=-abs(i323) While (m340 != 1) Endwhile cmd#3hm m45=1 m46=0 m28=1EndIfIf (m322 = 1 And m46 = 0) i323=abs(i323) While (m340 != 1) Endwhile cmd#3hm m46=1 m45=0 m28=1EndIfIf (m521 = 1 And m47 = 0) i523=-abs(i523) While (m540 != 1) Endwhile cmd#5hm m47=1 m48=0EndIfIf (m522 = 1 And m48 = 0) i523=abs(i523) While (m540 != 1) Endwhile cmd#5hm m48=1 m47=0EndIfIf (m621 = 1 And m49 = 0) i623=-abs(i623) While (m640 != 1) Endwhile cmd#6hm m49=1 m50=0EndIfIf (m622 = 1 And m50 = 0) i623=abs(i623) While (m640 != 1) Endwhile cmd#6hm m50=1 m49=0EndIfm57=m145&m245&m345&m545&m645 ; 1号电机接入后增加m145&m51=m571If (m57 = 1 And M5187 = 1) m59=m58*5 While (m59 0) m59=m59-1; EndWhile cmdz ; 所有坐标回零 m30=1 m17=1 ; 启动坐标修正程序(刀长补) m10=0EndIfclose;enable plc2安全PLC程序; 主控制PLC程序; 接口参数:; 输入参数:M11,1:断电指令; M12,1:主轴启动; M13,1:主轴停止; 如需要直接设定主轴转速,可操作Q127变量(rpm/min); 如通过S程序指令设定,不需要任何参数操作; Q130,倍率值,通过该变量直接设定倍率值; 输出参数:M20,1:伺服驱动故障; M21,1:伺服开环; M22,1:到达硬限位; M23,1:到达软或硬限位; M24,1:致命跟随误差; M25,1:跟随误差报警; M26,1:运行或运动学计算错误; M27,1:硬件校验或I/O板错误; M28,1:直线电机向下搜索零点开关报警; M29,1:机床未回零; M31,1:机床状态正常; M32,1:程序正在运行; M38,1:圆弧半径错误(新加内容); M39, 1: 刀轴与Z轴夹角到达报警值 (新加内容); 设计思想:;m60.69-* ; 复位中间变量q130=1 ; 初始化倍率为%100q127=0 ; 初始化主轴转速0closeopen plc 1clearm1001=m1000m68=1000m20=m8001 ;1号电机接入后改为m20=m8001m21=m138|m238|m338|m538|m638 ;1号电机接入后增加(m138|)m22=m121|m122|m221|m222|m321|m322|m521|m522|m621|m622;1号电机接入后增加m121|m122m23=m131|m132|m231|m232|m331|m332|m531|m532|m631|m632;1号电机接入后增加m131|m132m24=m142|m242|m342|m542|m642 ;1号电机接入后增加m142m25=m141|m241|m341|m541|m641 ;1号电机接入后增加m141m26=m5182m27=m83|m84|m86m38=m5181 ; 新加内容m60=m20&(m611)m61=(m60|m61)&m20m62=(m201)&(m631)m63=(m62|m63)&(m201)If (m60 = 1) cmdK m69=m68 While (m69 0) m69=m69-1 EndWhile m10=0 m30=0EndIfIf (m62 = 1) cmd#1j/#2j/#3j/#5j/#6j/ ;1号电机接入后增加#1j/ m69=m68 While (m69 0) m69=m69-1 EndWhile cmd#7o0 m10=0 m30=0EndIfIf (m12 = 1) m901=1 m12=0EndIfIf (m13 = 1) m901=0 m13=0EndIfIf (m20 = 1 Or m21 = 1) m901=0EndIfm902=(m221)|m10)&(m211)&(m241)&(m281)&(m111)If (m20 = 1) m11=0EndIfIf (m738 = 1) m779 = Q127*i769/12000 ; 转速,在o0后,=o命令,12000rpm/10vElse cmd#7o0EndIfm5197=q130*i10 ; 倍率设定,=%命令m900=m20|m21|m22|m23|m24|m25|m26|m27|m28|m38|m39 ; 新增加了m38和m39If (m900 = 1 And m5180 = 1) cmdAEndIfIf (m38 = 1 And m5180 = 1) ;(新加内容) cmdAEndIfIf (m39 = 1 And m5180 = 1) ;(新加内容) cmdAEndIf If (i5189 * ;复位命令变量m90.99-*m75.79-* ;复位中间变量closeopen plc 3clearm75=0m78=1000While

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论