用PLSY指令控制步进电机 点击:3460 | 回复:17



因为你而快乐

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:15帖 | 79回
  • 年度积分:0
  • 历史总积分:141
  • 注册:2005年2月14日
发表于:2007-09-27 18:40: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
这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。看在同行的份上,大家不要扔臭鸡蛋哦。
由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       &



heidai

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 1835回
  • 年度积分:0
  • 历史总积分:2824
  • 注册:2007年5月23日
发表于:2007-09-27 18:54:00
1楼
图发不上没关系,看了已经很受启发了

南宁市

  • 精华:0帖
  • 求助:0帖
  • 帖子:15帖 | 36回
  • 年度积分:0
  • 历史总积分:102
  • 注册:2006年12月27日
发表于:2007-09-27 20:22:00
2楼
学习

bg7mka

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 261回
  • 年度积分:0
  • 历史总积分:701
  • 注册:2006年6月28日
发表于:2007-09-27 22:21:00
3楼
学习!

******

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 88回
  • 年度积分:0
  • 历史总积分:196
  • 注册:2006年4月18日
发表于:2007-10-08 23:15:00
4楼
谢谢

三脚猫

  • 精华:0帖
  • 求助:0帖
  • 帖子:180帖 | 1598回
  • 年度积分:0
  • 历史总积分:1097
  • 注册:2004年7月08日
发表于:2007-10-09 09:50:00
5楼
刚开始学伺服,多谢提点.
肯定会掌握,因为有处大,尽管这里连伺服或步进电机
的影子也没有

小农

  • 精华:1帖
  • 求助:0帖
  • 帖子:3帖 | 16回
  • 年度积分:0
  • 历史总积分:30
  • 注册:2004年3月11日
发表于:2007-10-10 23:51:00
6楼
[color=#008000]"因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。"[/color]

  这里为什么用1000Hz的??


wenjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:27帖 | 629回
  • 年度积分:0
  • 历史总积分:733
  • 注册:2005年2月21日
发表于:2007-10-11 07:59:00
7楼
楼主说的很仔细,让我受益!

清风狂吹

  • 精华:2帖
  • 求助:0帖
  • 帖子:42帖 | 395回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2003年5月07日
发表于:2007-10-11 10:37:00
8楼
请问楼主:
步进电机的驱动器要和PLC的定位模块连接,还是用几个晶体管输出口就可以了,谢谢您的回复,不胜感激!

维羞电工

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 1346回
  • 年度积分:0
  • 历史总积分:5381
  • 注册:2007年9月12日
发表于:2007-10-11 15:38:00
9楼
学习!
能否把图发到我的邮箱里吗?gms7410@126.com 谢谢!!!

  • 精华:0帖
  • 求助:0帖
  • 帖子:104帖 | 641回
  • 年度积分:0
  • 历史总积分:1360
  • 注册:2005年7月21日
发表于:2007-10-11 17:37:00
10楼
PLC中断处理高速输出,和扫描周期有什么关系,最大100KHZ的输出,加上高速比较指令

清风狂吹

  • 精华:2帖
  • 求助:0帖
  • 帖子:42帖 | 395回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2003年5月07日
发表于:2007-10-13 13:01:00
11楼
请问楼主:
控制步进电机需要中断程序吗?
步进驱动器用晶体管输出控制还是用定位模组,谢谢?

c小侠

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 24回
  • 年度积分:0
  • 历史总积分:80
  • 注册:2007年9月11日
发表于:2007-10-13 13:09:00
12楼
启发很大,谢谢。

清风狂吹

  • 精华:2帖
  • 求助:0帖
  • 帖子:42帖 | 395回
  • 年度积分:0
  • 历史总积分:792
  • 注册:2003年5月07日
发表于:2007-10-13 17:38:00
13楼
TO  因为你而快乐 :
   如何知道步进电机的当前位置,是否用码盘进行?
   

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2007-10-17 15:19:00
14楼
强烈PS楼主!转帖要注明嘛,剽窃他人的劳动成果真不道德,这是我去年写的帖子,大家要研究的话可以点以下连接,那里有图.http://www.gongkong.com/tech/detail.asp?id=341697

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2007-10-17 15:31:00
15楼
并且LZ有误导他人的嫌疑,不知道就不要乱教别人,[u]例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。[/u]知道PLSY的工作方式吗,不知道就别乱说,顶yangzi.

刘凯22

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 10回
  • 年度积分:0
  • 历史总积分:36
  • 注册:2007年9月02日
发表于:2007-11-04 18:02:00
16楼
控制步进电机,一般的用晶体管输出的就可以,三菱的fx2n 能控制两台,fx3u能控制3台步进电机,如果不够,或要求稍微高一点,可一追加fx2n-1pg脉冲输出模块,成本稍高,最准确最好的定位单元是fx2n-10GM,fx2n-20GM后者可实现直线插补.但定位单元也是最贵的 

aoshihai

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 20回
  • 年度积分:0
  • 历史总积分:41
  • 注册:2009年4月04日
发表于:2012-06-12 18:02:18
17楼

学学中,楼主说的很仔细,让我受益!


热门招聘
相关主题

官方公众号

智造工程师