给定段的周期增量=(ECT-ICT)/Q
式中:ECT=该段结束周期时间
ICT=该段初始周期时间
利用这个公式,加速部分(第1段)周期增量为2,减速部分(第3段)周期增量为1。因第2段是恒速部分,故周期增量为0。如果PTO的包络表从VB500开始存放,则表1为上例的包络表值。
2.2 源程序
//主程序
LD SM0.1 //首次扫描为1
R Q0.0,1 //复位映像寄存器位
CALL 0 //调用子程序0,初始化粗定位相关参数
LD M0.0 //粗定位完成
R Q0.0,1
CALL 1 //调用子程序1,初始化精定位相关参数
//子程序0,粗定位
LD SM0.0
MOVB 16#A0,SMB67 //设定控制字:允许PTO操作,选择ms增量,选择多段操作
MOVW 500,SMW168 //指定包络表起始地址为V500
MOVB 3,VB500 //设定包络表段数是3
MOVW 500,VW501 //设定第一段初始周期为500ms
MOVW -2,VD503 //设定第一段周期增量为-2ms
MOVD 200,VD505 //设定第一段脉冲个数为200
MOVW 100,VW509 //设定第二段初始周期为100ms
MOVW 0,VD511 //设定第二段周期增量为0ms
MOVD 1360,VD513 //设定第二段脉冲个数为1360
MOVW 100,VW517 //设定第三段初始周期为100ms
MOVW 1,VD519 //设定第三段周期增量为1ms
MOVD 400,VD521 //设定第三段脉冲个数为400
ATCH 2,19 //定义中断程序2处理PTO完成中断
ENI //允许中断
PLS 0 //启动PTO操作
//子程序1,精定位
LD SM0.0 //首次扫描为1
MOVB 16#8D,SMB67 //允许PTO功能,选择ms增量,设定脉冲数和周期
MOVW 500,SMW68 //设定精定位周期为500ms
MOVD 400,SMD72 //设定脉冲个数为400
ATCH 3,19 //定义中断程序3处理PTO完成中断
ENI //允许中断
PLS 0 //启动PTO操作
//中断程序2
LD SM0.0 //一直为1
= M0.0 //启动精定位
//中断程序3
LD SM0.0 //一直为1
= M0.1 //实现其他功能
3 结束语
实践证明,本文提出的应用PLC控制步进电机实现快速精确定位的方法切实可行。在数控机床、物料计量、印刷、送膜包装等用步进电机实现定位控制的领域有一定的实用价值和参考价值。