献给刚学脉冲指令的工控朋友:用PLSY指令控制步进电机 点击:23420 | 回复:137



永无止境

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-07-21 17:11: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
这是最简单的控制了,希望对大家有一定的启发,没有上机调试,应该是没什么问题了。看在同行的份上,大家不要扔臭鸡蛋哦。
另求好的PLCQQ群。



湛湛流云

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 89回
  • 年度积分:0
  • 历史总积分:173
  • 注册:2002年5月14日
发表于:2006-08-01 11:25:00
21楼
各位,若有相关问题可以与我商量。
关于帖子就不说什么了。
412001572。

呆板吧

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 220回
  • 年度积分:0
  • 历史总积分:340
  • 注册:2006年4月14日
发表于:2006-08-01 16:43:00
22楼
谢谢

聚沙成塔

  • 精华:0帖
  • 求助:1帖
  • 帖子:85帖 | 654回
  • 年度积分:0
  • 历史总积分:1083
  • 注册:2006年4月15日
发表于:2006-08-05 12:05:00
23楼
顶了,写的很好,希望多发这样的帖子,感谢楼主

zhendema

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 41回
  • 年度积分:0
  • 历史总积分:88
  • 注册:2006年3月19日
发表于:2006-08-05 15:33:00
24楼
谢谢!!顶了,写的很好,希望多发这样的帖子,感谢楼主!!!

无限0

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 149回
  • 年度积分:0
  • 历史总积分:172
  • 注册:2006年4月18日
发表于:2006-08-05 23:13:00
25楼
长知识了,谢谢

白衣少年

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 25回
  • 年度积分:0
  • 历史总积分:106
  • 注册:2005年1月15日
发表于:2006-08-06 22:07:00
26楼
收藏了,感谢楼主.

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-08-07 11:20:00
27楼
这段程序其实有个缺点:当工作台移动的时候,屏幕上的工作实际位置值(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

郁闷着的小雄

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 20回
  • 年度积分:0
  • 历史总积分:25
  • 注册:2006年4月13日
发表于:2006-08-10 21:26:00
28楼
非常大的收获!多谢以上的各位大虾!希望真的多发此类贴!在此先谢

草中利剑

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 28回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2003年12月30日
发表于:2006-08-11 18:52:00
29楼
对各位前辈致以最崇高的敬意,收获非常大。感谢大家!!

三年电工

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 170回
  • 年度积分:0
  • 历史总积分:371
  • 注册:2006年1月10日
发表于:2006-08-11 21:54:00
30楼
受益很多呀!正在找这方面资料,谢谢了

大名。。

  • 精华:0帖
  • 求助:0帖
  • 帖子:86帖 | 154回
  • 年度积分:0
  • 历史总积分:666
  • 注册:2006年3月12日
发表于:2006-08-12 08:32:00
31楼
有收获,多谢大家

周加军

  • 精华:0帖
  • 求助:0帖
  • 帖子:20帖 | 158回
  • 年度积分:0
  • 历史总积分:202
  • 注册:2004年2月17日
发表于:2006-08-12 15:07:00
32楼
呵呵,有收获,不错,真好做项目要!

大名。。

  • 精华:0帖
  • 求助:0帖
  • 帖子:86帖 | 154回
  • 年度积分:0
  • 历史总积分:666
  • 注册:2006年3月12日
发表于:2006-09-07 22:57:00
33楼
hao 好帖子要顶,大家继续讨论

micke(深圳)

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 281回
  • 年度积分:0
  • 历史总积分:362
  • 注册:2003年10月10日
发表于:2006-09-08 13:23:00
34楼
我用三菱的FX2N和FX1S(FX1N)做过好多个步进电机/伺服点机定位的设备,最高的机械定位精度达到1个丝(0.01mm)。脉冲的输出是通过硬件控制的,所以不要太担心。

yeyub2005

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:39
  • 注册:2005年1月03日
发表于:2006-09-08 21:45:00
35楼
我刚刚用三菱的FX1S做过脉冲的输出控制步进电机。定位没有问题.

耷拉;

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 164回
  • 年度积分:0
  • 历史总积分:171
  • 注册:2006年8月30日
发表于:2006-09-11 11:02:00
36楼
帖子不错!

pt950

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 127回
  • 年度积分:0
  • 历史总积分:244
  • 注册:2005年8月18日
发表于:2006-09-11 16:06:00
37楼
不错

程风

  • 精华:1帖
  • 求助:0帖
  • 帖子:2帖 | 23回
  • 年度积分:0
  • 历史总积分:68
  • 注册:2003年8月16日
发表于:2006-09-15 16:08:00
38楼
好贴

增辉

  • 精华:0帖
  • 求助:1帖
  • 帖子:10帖 | 25回
  • 年度积分:0
  • 历史总积分:156
  • 注册:2004年11月15日
发表于:2006-09-15 16:52:00
39楼
FX2N发脉冲时有一个最大的缺点,那就是脉冲计数器D8140,不论电机是正转还是反转,始终处于增加的状态,也就是说你无法知道电机的当前位置,如果单纯用于控制步进电机或伺服建议还是选用FX1S或FX1N而且价格也要比FX2N便宜。但FX1S和FX1N没有浮点运算功能,在精密计算时,很可能会丢步。

李泉平

  • 精华:1帖
  • 求助:0帖
  • 帖子:88帖 | 292回
  • 年度积分:0
  • 历史总积分:745
  • 注册:2006年12月22日
发表于:2006-09-15 22:02:00
40楼
   谢谢各位,学到不少。
   小弟我现在在做步进电机控制单轴定长度,到设定长度停止步进电机完成切料,在启动步进电机。但现在好像是频率发到4000左右步进电机就出现严重的丢步现象,有时不带负载也是步进电机不会转的。以前用松下的PLC,同样步进电机不会胡壕种现象,而且最高频率可到10800,也不会丢步现象。
   各位高手看看现在用的程序,PLC是FX1N的,请帮忙指点一下,怎样才能加快步进电机的速度。
  LD800

MOV D145 D40    切料长度设定

DMUL D40 K10 D36  

DMUL K3200 D36 D44   8细分

DDIV D44 K80 D56   拉料轴直径

DDIV D56 K314 D70   圆周率

DADD D70 D148 D78   拉料长度调整

DSUB D78 D132 D90   拉料长度调整

MUL K1200 D140 D135  速度设定

MOV K10800 D8147    最高速度频率
 
MOV K1200 D8145   步进电机启动频率

MOV K200 D8148   加减速时间

LD M106      由外部由接近开关驱动控制脉冲输出

DDRVI D90 D135 Y000 Y002  脉冲加方向输出

  我现在用的脉冲输出指令是DRVI,是不是这指令不行的?

热门招聘
相关主题

官方公众号

智造工程师