数控机床PLC程序设计.docx
- 文档编号:10037302
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:28
- 大小:445.33KB
数控机床PLC程序设计.docx
《数控机床PLC程序设计.docx》由会员分享,可在线阅读,更多相关《数控机床PLC程序设计.docx(28页珍藏版)》请在冰豆网上搜索。
数控机床PLC程序设计
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程序
openplc1;建立或打开程序缓冲区
clear;清除缓冲区内容
M1001=M1000;输入采样
……;用户编制的程序逻辑
M1003=M1002;输出刷新
close;关闭缓冲区
上述程序格式完全符合了PLC的基本工作方式,用户程序只需对M1001和M1003映象变量或分解后的M变量操作,不要直接访问M1000和M1002。
梯形图是编制PLC程序的有效方法,将其引入PMAC的PLC程序设计中,代替直接使用编程语句的设计方法,在很大程度上降低了PLC程序设计难度。
为描述该设计方法,以图1所示典型的电机正反转控制电路为例进行说明。
在PMAC数控系统中,将按钮SB1、SB2、SB3和热继电器KR的常开触点接在端子板的输入端,将KM1和KM2接触器线圈接在输出端,则其控制逻辑可表达为图2所示的梯形图。
图2中的M变量分别对应按钮在PMAC中的输入位和输出位,因此M具有逻辑变量特性,即只能取值0或1。
容易根据梯形图写出由布尔逻辑表达的PMAC程序语句:
M900=(M800^1)&(M801|M900)&(M901^1)&(M803^1);
M901=(M800^1)&(M802|M901)&(M900^1)&(M803^1);
语句中的“|”是“位或”操作符,表示节点并联;“&”是“位与”操作符,表示节点串联;PMAC中没有“位反”指令,但可使用“异或”操作符“^”表示梯形图中的常闭节点,即有:
M按位取反=M^1→M常闭节点
显然,采用梯形图设计使逻辑关系清晰明了,尤其对于复杂的逻辑程序设计,采用布尔逻辑表达式避免了因大量使用If…Else…EndIf条件语句而造成的逻辑混乱,而且程序语句运算简单,有利于加快程序的执行速度。
使用梯形图方式设计逻辑和变量分配,用位操作结合PMAC的结构控制语句将梯形图转换为程序语句。
设计程序:
系统安全程序PLC1,机床回零程序PLC2,固定功能程序PLC3。
接口类变量
使用M10~M39,M90~M99:
PLC接受的命令:
M10~M19
M10:
回零指令,1:
执行回零控制过程,回零结束变量自动复位;0:
取消回零运动。
M11:
断电命令,1:
切断伺服驱动电源,断电后变量自动复位。
M12:
主轴启动,1:
主轴运行,变量自动复位。
M13:
主轴停止,1:
主轴停止运行,变量自动复位。
M14:
刀具坐标修正,变量自动复位。
在改变刀具时必须调用。
M15:
XZY坐标回零指令,变量自动复位。
M16:
数控复位指令,变量自动复位。
M17~M19:
未定
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:
刀具长度mm
Q99:
刀具半径mm
Q127:
主轴转速rpm
Q128:
XYZ直线点动移动增量mm
Q129:
AB旋转点动移动增量°
Q130:
倍率值
PLC反馈的系统错误状态:
M20~M29
M20:
伺服断电
M21:
伺服开环(已隐含致命跟随误差检查)
M22:
到达硬限位
M23:
到达限位(硬限位+软限位)
M24:
致命跟随误差
M25:
报警跟随误差
M26:
运行或计算错误
M27:
硬件或通讯错误
M28:
直线电机换向搜索零点开关报警
M29:
机床未回零报警
PLC反馈的操作状态:
M30~M39
M30:
机床回零成功
M31:
机床状态正常。
如M31=0时,上位机操作时应检查M20~M29状态,并且操作许可为:
如M22或M23或M28或M29为1,可以进行机床回零操作;
如只有M23为1,可以进行点动操作或手动操作,使其离开软极限点;
如只有M26为1,应检查NC程序中的参数错误,或逆解程序错误或其他计算错误。
其他情况不能操作,建议用户重新冷启动系统。
M32:
NC程序正在运行。
此时可以等待或数控复位或其他操作。
M33~M39:
未定
操作补充:
1、在MDA或JOG或Auto方式转换时,如已启动主轴,应保持主轴状态,不要自动关闭;
2、任何方式下,都可通过按键启动主轴,但在Auto方式下不得通过按键停止主轴,在MDA或JOG方式下可以通过按键停止主轴。
3、不要使用“A”指令,如需要退出运行程序时,应启动数控复位指令。
使用的中间变量:
M40~M69,M75~M79
M40~M59:
回零程序(PLC2)使用。
M60~M69:
安全程序(PLC1)使用。
M75~M79:
功能程序(PLC3)使用。
注:
M0~M9在程序中不得使用,保留给PMAC系统或自定义伺服算法。
安全PLC程序梯形图
上述延时均表达为:
M68=2000;M69=M68;WHILE(M69>0);M69=M69-1;ENDWHILE
本程序占用变量M60~M69
M28由回零程序传过来,使直线电机负向搜索断电。
M30为回零程序传过来的回零成功标志。
M29为机床未回零报警标志
M11为断电指令,M12为主轴启动指令,M13为主轴停止指令。
主轴转速设定中,12000表示最大转速,即12000rpm/10V,该值在变频器中已确定,即变频器10V->200Hz->12000rpm。
主轴转速的设定方法:
在开环状态下,使用“o0”后,直接通过M779(已定义指向7#电机PID内部滤波结果寄存器,16bitDAC)设定DAC输出,等效于“o数据”。
倍率设定方法:
直接将倍率值×I10写入M5197(已定义指向1#坐标系主命令时基寄存器),I10为伺服中断时间。
机床回零PLC程序梯形图
上述延时均表达为:
M58=2000;M59=M58;WHILE(M59>0);M59=M59-1;ENDWHILE
延时的作用是:
电机稳定后,才接受CMD命令,通过延时等待电机稳定。
本程序占用M40~M59变量。
图中,M10为机床回参考点指令,M10=1机床复位回参考点(HOME);回零过程结束后自动复位M10=0。
M10=0可强行停止回零运动。
通过M30可以检查回零状态,M30=1表示完成回零操作,M30=0失败。
M28=1时(直线电机换向搜索),会传送给安全程序,自动断电,必须通过手动上电实现换向搜索。
注:
M14=1时通过功能程序(PLC3)设置在机床零点的Z坐标。
固定功能PLC程序梯形图
注:
程序退出修正的原理见上述运动学和指令说明部分,或论文;
PLC和运动程序代码
回零PLC程序
;接口参数:
;输入参数:
M10,回零指令,M10=1时执行回零运动过程;M10=0时可强行终止回零运动
;输出参数:
M30,回零状态,M30=1回零成功;M30=0回零未完成
;设计思想:
;工作台在回零时可以到达硬极限一次,再反向搜索;
;直线电机只能沿正向搜索,若到达硬极时,将断开驱动电源;若要反向搜索,必须手动保持电源
m10..19->*;复位命令变量
m40..59->*;复位中间变量
close
openplc2
clear
While(m10=0Orm20=1Orm21=1)
If(m51=1)
If(m21=0)
cmd"#1j/#2j/#3j/#5j/#6j/";1号电机接入后增加"#1j/"
EndIf
m51=0
EndIf
If(m20=1Orm21=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=1000
EndWhile
If(m40=0)
cmd^A
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=1
EndIf
If(m121=1Andm41=0);1号电机接入后增加"
i123=-abs(i123)
While(m140!
=1)Endwhile
cmd"#1hm"
m41=1
m42=0
m28=1
EndIf
If(m122=1Andm42=0);1号电机接入后增加"
i123=abs(i123)
While(m140!
=1)Endwhile
cmd"#1hm"
m42=1
m41=0
m28=1
EndIf
If(m221=1Andm43=0)
i223=-abs(i223)
While(m240!
=1)Endwhile
cmd"#2hm"
m43=1
m44=0
m28=1
EndIf
If(m222=1Andm44=0)
i223=abs(i223)
While(m240!
=1)Endwhile
cmd"#2hm"
m44=1
m43=0
m28=1
EndIf
If(m321=1Andm45=0)
i323=-abs(i323)
While(m340!
=1)Endwhile
cmd"#3hm"
m45=1
m46=0
m28=1
EndIf
If(m322=1Andm46=0)
i323=abs(i323)
While(m340!
=1)Endwhile
cmd"#3hm"
m46=1
m45=0
m28=1
EndIf
If(m521=1Andm47=0)
i523=-abs(i523)
While(m540!
=1)Endwhile
cmd"#5hm"
m47=1
m48=0
EndIf
If(m522=1Andm48=0)
i523=abs(i523)
While(m540!
=1)Endwhile
cmd"#5hm"
m48=1
m47=0
EndIf
If(m621=1Andm49=0)
i623=-abs(i623)
While(m640!
=1)Endwhile
cmd"#6hm"
m49=1
m50=0
EndIf
If(m622=1Andm50=0)
i623=abs(i623)
While(m640!
=1)Endwhile
cmd"#6hm"
m50=1
m49=0
EndIf
m57=m145&m245&m345&m545&m645;1号电机接入后增加"m145&"
m51=m57^1
If(m57=1AndM5187=1)
m59=m58*5
While(m59>0)
m59=m59-1;
EndWhile
cmd"z";所有坐标回零
m30=1
m17=1;启动坐标修正程序(刀长补)
m10=0
EndIf
close
;enableplc2
安全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;初始化倍率为%100
q127=0;初始化主轴转速0
close
openplc1
clear
m1001=m1000
m68=1000
m20=m800^1;1号电机接入后改为"m20=m800^1"
m21=m138|m238|m338|m538|m638;1号电机接入后增加"(m138|)"
m22=m121|m122|m221|m222|m321|m322|m521|m522|m621|m622;1号电机接入后增加"m121|m122"
m23=m131|m132|m231|m232|m331|m332|m531|m532|m631|m632;1号电机接入后增加"m131|m132"
m24=m142|m242|m342|m542|m642;1号电机接入后增加"m142"
m25=m141|m241|m341|m541|m641;1号电机接入后增加"m141"
m26=m5182
m27=m83|m84|m86
m38=m5181;新加内容
m60=m20&(m61^1)
m61=(m60|m61)&m20
m62=(m20^1)&(m63^1)
m63=(m62|m63)&(m20^1)
If(m60=1)
cmd^K
m69=m68
While(m69>0)
m69=m69-1
EndWhile
m10=0
m30=0
EndIf
If(m62=1)
cmd"#1j/#2j/#3j/#5j/#6j/";1号电机接入后增加"#1j/"
m69=m68
While(m69>0)
m69=m69-1
EndWhile
cmd"#7o0"
m10=0
m30=0
EndIf
If(m12=1)
m901=1
m12=0
EndIf
If(m13=1)
m901=0
m13=0
EndIf
If(m20=1Orm21=1)
m901=0
EndIf
m902=((m22^1)|m10)&(m21^1)&(m24^1)&(m28^1)&(m11^1)
If(m20=1)
m11=0
EndIf
If(m738=1)
m779=Q127*i769/12000;转速,在o0后,=o命令,12000rpm/10v
Else
cmd"#7o0"
EndIf
m5197=q130*i10;倍率设定,=%命令
m900=m20|m21|m22|m23|m24|m25|m26|m27|m28|m38|m39;新增加了m38和m39
If(m900=1Andm5180=1)
cmd^A
EndIf
If(m38=1Andm5180=1);(新加内容)
cmd^A
EndIf
If(m39=1Andm5180=1);(新加内容)
cmd^A
EndIf
If(i5189<10);i5189=0时,会使速度无穷大
i5189=10
EndIf
m31=(m900^1)&m30
m32=M5180
m29=m30^1
m1002=m1003
close
;enableplc1
固定功能PLC程序
;接口参数:
;输入参数:
M14,刀具修正指令,自动复位
;M15,坐标回零指令,自动复位
;M16,数控复位指令,自动复位
;M17,机床回零坐标修正指令,自动复位
;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-,自动复位
m10..19->*;复位命令变量
m90..99->*
m75..79->*;复位中间变量
close
openplc3
clear
m75=0
m78=1000
While(m75=0)
m75=(m14|m15|m16|m17|m90|m91|m92|m93|m94|m95|m96|m97|m98|m99)&m30
EndWhile
m90=m90&(m531^1)&(m5180^1)
m91=m91&(m532^1)&(m5180^1)
m92=m92&(m631^1)&(m5180^1)
m93=m93&(m632^1)&(m5180^1)
m94=m94&(m131^1)&(m231^1)&(m331^1)&(m5180^1);接入1号电机后加“(m131^1)&”
m95=m95&(m132^1)&(m232^1)&(m332^1)&(m5180^1);接入1号电机后加“(m132^1)&”
m96=m96&(m23^1)&(m5180^1)
m97=m97&(m23^1)&(m5180^1)
m98=m98&(m23^1)&(m5180^1)
m99=m99&(m23^1)&(m5180^1)
If(m14=1orm17=1)
cmd^A
While(M5180|M5183=1)Endwhile
While(m5187!
=1)Endwhile
If(m14=1)
cmd"b990r";调用刀具修正运动程序
Else
cmd"b993r"
EndIf
m14=0
m17=0
EndIf
If(m15=1)
cmd"x=0y=0z=0";虚轴XYZ坐标回零
m15=0
EndIf
If(m16=1);数控复位(数控取消)
;If(M5180|M5183=1)
cmd^A;退出运动程序
While(M5180|M5183=1)Endwhile
cmd"b992r";电机回退到分段端点,接入1号电机时加“#1j=”
m79=m78
While(m79>0)
m79=m79-1
EndWhile
While(M5180|M5183=1)Endwhile
;EndIf
While(m5187!
=1)Endwhile
;cmd"b1";指向主运动程序区B1
m13=1;停止主轴
;q127=0;设定转速0rpm
q130=1;设置缺省倍率%100
m16=0
EndIf
If(m90|m91|m92|m93|m94|m95|m96|m97|m98|m99=1);调用点动程序
cmd"b991r"
EndIf
close
;enableplc3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数控机床 PLC 程序设计