wuzhitang
级别: 探索解密
精华主题: 0
发帖数量: 21 个
工控威望: 166 点
下载积分: 400 分
在线时间: 32(小时)
注册时间: 2009-02-22
最后登录: 2022-10-20
查看wuzhitang的 主题 / 回贴
楼主  发表于: 2010-03-05 09:28
用PLSY指令控制步进电机
作者:ALLEN.WU     电话:15962598389      E:wuzhitang@sina.com

   经常看到有的工控朋友问起用PLC控制步进马达的问题,在这里我举个最简单的例子,只能提供思路,更深入的研究就靠大家自己了。


如图所示:1、2为步进电机驱动器的电源  3为控制电源正极  4为脉冲输入  5为方向控制
步进电机的步距角为1.8度,驱动器有细分的功能,考虑到精度和速度的问题,我们选用了半步运行的方式。丝杆的螺距为5mm,即步进电机旋转一周,它所拖动的工件移动5个mm,PLC则输出400个脉冲,即每毫米需要输出80个脉冲。5号脚高电平则电机正转,反之亦反。
设计的要求是这样的:在人机界面上输入工件要到的位置(以mm为单位),输入完成后工件自动运行到指定位置停下。如果设定的位置大于实际的位置,则工件正向运转到位,反之亦反。
D200:人机界面输入的工件要求位置
D202:工件的实际位置
D204:实际位置与设定位置之差值
程序如下:
LDD> D200 D202    
DSUBP D200 D202 D204            ;将差值送到D204
SET Y2                        ;如果设定值大于实际值则正转
LDD<= D200 D202
DSUBP D202 D200 D204            ;将差值送到D204
RST Y2                        ;如果设定值小于实际值则反转
LDD<> D200 D202                ;设定值与实际值不等
PLS M0
ANI M0
DPLSY K1000 K206 Y0        ;以1000赫兹的频率输出脉冲所需的脉冲数
LD M0
DMUL D204 K80 D206    ;所需输出的脉冲数
LD M8029
DADDP D202 D204 D202        ;脉冲输出完成后实际位置与设定位置一样
END
这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。看在同行的份上,大家不要扔臭鸡蛋哦。
由PLC直接产生脉冲来控制步进电机可以有效地简化系统的硬件电路,进一步提高可靠性。由于PLC是以循环扫描方式工作,其扫描周期一般在几毫秒至几十毫秒之间,因此受到PLC工作方式的限制以及扫描周期的影响,步进电机不能在高频下工作。例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。若控制步进电机的脉冲频率为100HZ,则脉冲周期为10毫秒,与PLC的扫描周期约处于同一数量级,步进电机运行时亦可能会产生较大的误差。因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。

这段程序其实有个缺点:当工作台移动的时候,屏幕上的工作实际位置值(D202)并没有随着工作台的移动而改变,它只是在工作台移动完成后才变为实际位置值。好比现在工作台的实际位置为200,要求位置是300,当工作台移动的时候,实际值(200)并没有随着工作台的移动而201,202……的增加,而是工作台移动到300的位置后直接变为300,因此这段程序不能实时的反映工作台的移动情况。
为了克服这种情况,我将程序做了部分的修改,更新如下:
D200:人机界面输入的工件要求位置
D202:工件的实际位置
D204:工件的实际位置(做转换用)
D206:实际位置变化值
程序如下:
LDD> D200 D202    
OUT M10
DSUBP D200 D202 D204             ;将差值送到D204
SET Y2                          ;如果设定值大于实际值则正转
LDD<= D200 D202
OUT M11
DSUBP D202 D200 D204            ;将差值送到D204
RST Y2                                 ;如果设定值小于实际值则反转
LD M10
OR M11                             ;设定值与实际值不等
PLS M0
ANI M0
DPLSY K1000 K0 Y0              ;以1000赫兹的频率不间断输出脉冲
DDIV D8140 K80 D206         ;脉冲数折算成毫米
LD M0
MOV D202 D204                ;实际位置值送到D204
LD M10
ADD D204 D206 D202          ;增加的毫米数实时传到D202(工作台实际位置)
LD M11
SUB D204 D206 D202          ;减少的毫米数实时传到D202(工作台实际位置)
LD M8029
DMOV K0 D8140           ;脉冲输出完成后给脉冲计数器清零
END


luoshunxingq
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看luoshunxingq的 主题 / 回贴
1楼  发表于: 2010-03-09 03:33
谢谢,不错。。。。。。。。