西门子S7-200PLC在步进电机定位控制中的应用(4)
时间:2017-05-21 09:50 来源:自动控制网
5 程序和注释 //标题:用脉冲输出进行定位控制 //主程序 ld sm0.1 //仅首次扫描周期sm0.1才为1。 r m0.0,128 //md0至md12复位 atch 0,19 //把中断程序0分配给中断事件19(脉冲串终止) eni //允许中断 //脉冲输出功能的初始化 movw 500,smw68 //脉冲周期t=500us movw 0,smw70 //脉冲宽度为0(脉冲调制) movd 429496700,smd72 //为参考点设定的最大脉冲数 //设置逆时针旋转 ldn m0.1 //若电机停止 a i1.5 //且旋转方向开关=1 s q0.2,1 //则逆时针旋转(q0.2=1) //设置顺时针旋转 ldn m0.1 //若电机停止 an i1.5 //且旋转方向开关=0 r q0.2,1 //则逆时针旋转(q0.2=0) //联锁 ld i1.1 //若按“stop”(停止)按钮 s m0.2,1 //则激活联锁(m0.2=1) //解除联锁 ldn i1.1 //若“start”(启动)按钮松开 an i1.0 //且“stop”(停止)按钮松开 r m0.2,1 //则解除联锁(m0.2=0) //确定操作模式(参考点定位控制) ld i1.4 //若按“设置/取消参考点”按钮 eu //上升沿 call 1 //则调用子程序1 //启动电机 ld i1.0 //若按“start”(启动)按钮 eu //上升沿 an m0.1 //且电机停止 an m0.2 //且无联锁 ad≥ smd72,1 //且步数≥1,则 movb 16#85,smb67 //置脉冲输出功能(pto)的控制位 pls 0 //启动脉冲输出(q0.0) s m0.1,1 //“电机运行”标志位置位(m0.1=1) //定位控制 ld m0.3 //若已激活“定位控制” 操作模式 an m0.1 //且电机停止 call 2 //则调用子程序2 //停止电机 ld i1.1 //若按“stop”(停止)按钮 eu //上升沿 a m0.1 //且电机运行,则 call 0 //则调用子程序0 mend //主程序结束 //子程序1 sbr 0 //子程序0停止电机 movb 16#cb,smb67 //激活脉宽调制 pls 0 //停止输出脉冲到q0.0 r m0.1,1 //“电机运行”标志位复位(m0.1=0) ret //子程序0结束 sbr1 //子程序1,“确定操作模式” ld m0.1 //若电机运行 call 0 //则调用子程序0,停止电机 //申请“参考点曲线” ld m0.3 //若已激活“定位控制”,则 r m0.3,1 //参考点标志位;复位(m0.3=0) r q1.0,1 //取消“定位控制激活”信息(q1.0=0) movd 429496700,smd72 //为新的“参考点曲线”设定最大的脉冲数。 cret //条件返回到主程序。 //申请“定位控制” ldn m0.3 //若未设置参考点(m0.3=0),则 s m0.3,1 //参考点标志位置位(m0.3=1) s q1.0,1 //输出“定位控制激活”信息(q1.0=1) ret //子程序1结束 //子程序2 sbr2 //子程序2,“定位控制” movb ib0,mb11 //把定位角度从ibo拷到md8的最低有效字节mb11。 r m8.0,24 //mb8至mb10清零 div 9,md8 //角度/9=q1+r1 movw mw8,mw14 //把r1存入md12 mul 25,md8 //q1×25→md8 mul 25,md12 div 9,md12 // r1×25/9= q2+r2 call 3 //在子程序3中循环步数 movw 0,mw12 //删除r2 +d md12,md8 //把步数写入md8 movd md8,smd72 //把步数传到smd72 ret //子程序2结束 //子程序3 sbr3 //子程序3,“循环步数” ldw≥mw12,5 //如果r2≥5/9,则 incw mw14 //步数增加1。 ret //子程序3结束 //中断程序0,“脉冲输出终止” int0 //中断程序0 r m0.1,1 //“电机运行”标志位复位(m0.1=0) ret //子程序0结束 6 结束语 通过对硬件和软件的合理设计,用较为价廉的西门子s7-200系列plc作为核心控制部件,构成的定位系统能够达到精确定位的目的。特别应指出的是通过灵活、巧妙的应用plc的指令系统,可使系统实现高精度定位。 |