[西门子] 用PLSY指令控制步进电机

[复制链接]
查看33479 | 回复206 | 2006-9-19 18:23:00 | 显示全部楼层 |阅读模式
经常看到有的工控朋友问起用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
这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。看在同行的份上,大家不要扔臭鸡蛋哦。
gkboy | 2006-9-19 18:28:00 | 显示全部楼层
由PLC直接产生脉冲来控制步进电机可以有效地简化系统的硬件电路,进一步提高可靠性。由于PLC是以循环扫描方式工作,其扫描周期一般在几毫秒至几十毫秒之间,因此受到PLC工作方式的限制以及扫描周期的影响,步进电机不能在高频下工作。例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。若控制步进电机的脉冲频率为100HZ,则脉冲周期为10毫秒,与PLC的扫描周期约处于同一数量级,步进电机运行时亦可能会产生较大的误差。因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。
gkboy | 2006-9-19 18:28:00 | 显示全部楼层
这段程序其实有个缺点:当工作台移动的时候,屏幕上的工作实际位置值(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
smtplc | 2006-9-24 10:42:00 | 显示全部楼层
VERY GOOD。
xhwyq168 | 2006-9-29 10:22:00 | 显示全部楼层
了解一下
sunday_qh | 2006-10-1 13:04:00 | 显示全部楼层
biiqnyaqkt | 2006-10-1 17:26:00 | 显示全部楼层

???

怎么看不到内容
fangmcu | 2006-10-2 08:32:00 | 显示全部楼层
ding

fangmcu | 2006-10-2 09:00:00 | 显示全部楼层
不同意二楼的意见,PLC的脉冲输出是采用中断形式的,不会受扫描周期的影响,如果PLC驱动步进电机只几十HZ才准确,那么这台PLC实在没有什么用,我用FX1编了个5010步的程序,控制四个步进电机,(只有两个同时运动)其它两个通过分时运动,每个电机的速度都可以设定,每个电机输出的脉冲频率最低有8K,输出的脉冲很正常,没有掉步!!
liuplc | 2006-10-9 01:34:00 | 显示全部楼层
fenglang | 2007-5-14 22:25:00 | 显示全部楼层
好像看懂了一点点
LUQINGCHUN | 2007-5-15 13:23:00 | 显示全部楼层

??:(sunday_qh)?

好例子,值得学习

zhang0041151 | 2007-5-16 14:52:00 | 显示全部楼层
谢谢,这几位前辈不错!!这个社会肯把自己的好东西拿出来分享的人不多呀!
zhang0041151 | 2007-5-16 14:55:00 | 显示全部楼层
可惜我看不太懂
30700425 | 2007-5-16 19:59:00 | 显示全部楼层

??:(gkboy)?PLSY????????

9楼的朋友没理解楼主的意思,你用一般的时间继电器能产生8K脉冲的频率?不可能吧.楼主的意思是用一般的指令不用功能指令只可以做到几十赫兹
yisheng_liao102 | 2007-6-7 22:40:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
lh_fei | 2008-2-24 14:39:00 | 显示全部楼层
hao
eslaozhang | 2008-2-24 22:11:00 | 显示全部楼层
顶一个看看好不好
lv9606 | 2008-2-28 15:49:00 | 显示全部楼层
[em26][em08]
vaker | 2008-3-2 16:28:00 | 显示全部楼层
[em01]
ligp99 | 2008-3-4 13:42:00 | 显示全部楼层
不同意二楼的意见,PLC的脉冲输出是采用中断形式的,不会受扫描周期的影响,如果PLC驱动步进电机只几十HZ才准确,那么这台PLC实在没有什么用,我用FX1编了个5010步的程序,控制四个步进电机,(只有两个同时运动)其它两个通过分时运动,每个电机的速度都可以设定,每个电机输出的脉冲频率最低有8K,输出的脉冲很正常,没有掉步!!

程序呢
qwh123 | 2008-3-4 14:49:00 | 显示全部楼层
[em01]
yd1988yu | 2008-3-25 15:19:00 | 显示全部楼层
ding
hjj_10170 | 2008-3-27 12:07:00 | 显示全部楼层

LOOK

skying | 2008-3-30 19:21:00 | 显示全部楼层
请9F的指教一下,小弟有三个步进电机要控制,有二个是童声运行的
skying | 2008-4-1 14:39:00 | 显示全部楼层
ldd >d200 d202没法输入
hjaiyy0521 | 2008-4-5 18:00:00 | 显示全部楼层

大开眼界

dalin_shu | 2008-4-6 08:51:00 | 显示全部楼层

看了才好交流

dalin_shu | 2008-4-6 09:06:00 | 显示全部楼层

用步进电机定位,如有相当负载或变化的负载,丢步应是难免的.

建议在每次循环定位前提供参考位置,类似机床回参考点

这样会避免累计误差

xingtaig | 2008-4-8 19:36:00 | 显示全部楼层
好想看看
duyu2003 | 2008-4-8 20:25:00 | 显示全部楼层
顶一下
392507720 | 2008-4-9 00:20:00 | 显示全部楼层

我做过。是用FX1S控制步进电机。最高用到7000HZ。最低10HZ。同时输出也没掉步,失步现象。

majie | 2008-4-9 14:22:00 | 显示全部楼层
[em06]
fucheng0124 | 2008-4-10 21:05:00 | 显示全部楼层
kan xia
wanghuozhi | 2008-4-11 23:26:00 | 显示全部楼层
学习学习下
jiangyihan | 2008-4-12 11:34:00 | 显示全部楼层
谢谢祥细的解释啊。。对我们CC很有帮助 
8351liu | 2008-4-14 10:55:00 | 显示全部楼层

kk

binbinwang | 2008-4-17 00:50:00 | 显示全部楼层
ol
wenhong_teng | 2008-4-17 12:14:00 | 显示全部楼层
very good[em01][em01][em01]
ceyddn | 2008-4-18 13:16:00 | 显示全部楼层
不错

wangzhy1986 | 2008-4-22 20:30:00 | 显示全部楼层

哎,到处看看啊

希望找到合适的啊

ronalyao | 2008-4-23 13:09:00 | 显示全部楼层
先看看
8351liu | 2008-4-23 13:15:00 | 显示全部楼层

kk

xinfeiyang | 2008-4-23 16:44:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
xuefeng520 | 2008-4-24 10:28:00 | 显示全部楼层
我为什么就看不懂呢~~~~~~~~[em04]
icename | 2008-4-25 16:12:00 | 显示全部楼层

看看什么好东西

[em06]
boney898 | 2008-4-26 16:36:00 | 显示全部楼层
支持一下。希望[em49]
l158abc | 2008-4-28 09:52:00 | 显示全部楼层
yisheng_liao102 | 2008-5-9 15:13:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
lomeya | 2008-5-19 22:13:00 | 显示全部楼层
OK,LET ME SEE YI SEE!
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则