首页 上一页 1 2 3 4 5 6 7 下一页 尾页

献给刚学脉冲指令的工控朋友:用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帖
  • 求助:1帖
  • 帖子:26帖 | 521回
  • 年度积分:1
  • 历史总积分:1639
  • 注册:2006年1月18日
发表于:2006-07-21 20:48:00
1楼
这段时间在做伺服电机,差不多了,呵呵
就是多了个 SEVER-ON

myrandge

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 62回
  • 年度积分:0
  • 历史总积分:182
  • 注册:2006年2月22日
发表于:2006-07-30 13:58:00
2楼
楼主应该没有考虑进PLC的刷新速度吧
由PLC直接产生脉冲来控制步进电机可以有效地简化系统的硬件电路,进一步提高可靠性。由于PLC是以循环扫描方式工作,其扫描周期一般在几毫秒至几十毫秒之间,因此受到PLC工作方式的限制以及扫描周期的影响,步进电机不能在高频下工作。例如,若控制步进电机的脉冲频率为4000HZ,则脉冲周期为0.25毫秒,这样脉冲周期的数量级就比扫描周期小很多,如采用此频率来控制步进电机。则PLC在还未完成输出刷新任务时就已经发出许多个控制脉冲,但步进电机仍一动不动,出现了严重的失步现象。若控制步进电机的脉冲频率为100HZ,则脉冲周期为10毫秒,与PLC的扫描周期约处于同一数量级,步进电机运行时亦可能会产生较大的误差。因此用PLC驱动步进电机时,为防止步进电机运行时出现失步与误差,步进电机应在低频下运行,脉冲信号频率选为十至几十赫兹左右,这可以利用程序设计加以实现。

sicui

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 152回
  • 年度积分:0
  • 历史总积分:446
  • 注册:2006年3月19日
发表于:2006-07-30 14:19:00
3楼
还没有做过这样的工程,但我想以后肯定会做一个参考的,谢楼主及
楼上的朋友。
另建议像类似的帖子多发一点,多发言。

古代人

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 64回
  • 年度积分:0
  • 历史总积分:74
  • 注册:2006年5月01日
发表于:2006-07-30 20:36:00
4楼
谢谢,真诚的!!!!!

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-07-31 17:17:00
5楼
TO myrandge:
    你的考虑是正确的,很多时候我们都要考虑到PLC的扫描周期对程序的影响,但是这个程序不是你想象的那样的,因为这段程序执行的时候是以中断的方式执行的,就是说脉冲的处理与PLC的扫描周期并没有关系,以这种方式输出脉冲时,FX2N最高可以到20KHz,好象FX1S的可以更高。
    希望大家多交流。

fightingTO611

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 62回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2006年7月09日
发表于:2006-07-31 17:31:00
6楼
嗯 谢谢 留作参考

myrandge

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 62回
  • 年度积分:0
  • 历史总积分:182
  • 注册:2006年2月22日
发表于:2006-07-31 18:36:00
7楼
楼主你好:
发脉冲可以达到20KHZ是没错的,三菱PLC上的说明书也确实是这样写的,但是,就那个文章中所说,你发的脉冲并不全用在控制步进电机了,会产生失步的.
PLSY指令发连续脉冲是不受扫描速度的影响的,但是如果发出的脉冲去控制步进电机,就如文章中所说,是要受扫描速度的影响的,文章不是我写的,我对这方面也不懂,所以,请问,楼主如果你有现在有条件的话,去试验下,因为我没有这方面的条件.
另外,请教楼主的是,你刚才说的中断方式是否是指PLSY的自身的发脉冲方式?还是楼主你编写的程序是用到了中断指令?多谢指教,谢谢!还请问楼主, DPLSY K1000 K206 Y0 ;以1000赫兹的频率输出脉冲所需的脉冲数 LD DMUL D204 K80 D206 ;所需输出的脉冲数 LD M8029 你这里的M8029在程序里起了什么作用呢?为什么这里你加了M8029而不是其他呢?请楼主指点,谢谢!

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-07-31 22:07:00
8楼
TO:myrandge
PLSY指令发送脉冲去控制步进电机,不会有失步,因为使用PLSY指令,当扫描到PLSY指令时,输出端子会立刻输出脉冲信号,而并不是等到程序扫描到END时,才会输出脉冲信号。

myrandge

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 62回
  • 年度积分:0
  • 历史总积分:182
  • 注册:2006年2月22日
发表于:2006-07-31 23:55:00
9楼
谢谢lesing.du大哥的指点

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-08-01 08:45:00
10楼
TO:myrandge
M8029是脉冲输出执行完标志。

牛牛牛

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 145回
  • 年度积分:0
  • 历史总积分:363
  • 注册:2004年3月25日
发表于:2006-08-01 09:02:00
11楼
谢谢

lcx426

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 140回
  • 年度积分:0
  • 历史总积分:144
  • 注册:2005年7月09日
发表于:2006-08-01 09:11:00
12楼
讲的不错

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-08-01 10:19:00
13楼
    其实这段程序是我以前做过的一个项目里面的一段,刚开始的时候不是用的脉冲指令,而是用的一个计时器指令产生脉冲:
ld m8000
ani t246
out t246 k0
    刚开始程序不长的时候,效果和PLSY差不多,后来程序不断的完善,也越来越长,这段指令就不行了,因为扫描周期变大,使得脉冲输出周期也越来越大,对步进电机的速度影响很大,所以就改成PLSY了。

myrandge

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 62回
  • 年度积分:0
  • 历史总积分:182
  • 注册:2006年2月22日
发表于:2006-08-01 10:19:00
14楼
楼主你好,
M8029是脉冲输出执行完标志,编写脉冲程序的时候一定需要把M8029写进去吗?它在程序里有没有起什么作用的?
就是M8026作为一个脉冲输入执行完标志,这个标志有什么用呢?不要这个标志是否可以呢?谢谢楼主!

lesing

  • 精华:1帖
  • 求助:0帖
  • 帖子:76帖 | 3076回
  • 年度积分:0
  • 历史总积分:5728
  • 注册:2005年4月13日
发表于:2006-08-01 10:23:00
15楼
M1026和M1029只是一个标志信号而已,编写程序时,根据自己的需要,如果需要用到M1026和M1029作为条件时,就可以将M1026或者M1029作为条件编写到PLC程序中,如果不需要就不用便写到程序中。

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-08-01 10:32:00
16楼
正如lesing.du所说的那样,就看你的需要了。
作为我的这段程序来说,因为我要在屏子上显示实际的位置所以,就需要在脉冲输出完成后马上将数据处理好并将数据传到触摸屏上,因此就用了M8029。

myrandge

  • 精华:0帖
  • 求助:0帖
  • 帖子:36帖 | 62回
  • 年度积分:0
  • 历史总积分:182
  • 注册:2006年2月22日
发表于:2006-08-01 10:34:00
17楼
嗯,谢谢lesing.du和楼主,现在终于清楚了
但是我还希望请教一个问题,如果定时器发脉冲为什么就要受扫描速度的影响呢?这个是PLC的指令的工作方式问题吧
另外,在什么情况下,我们是需要考虑扫描周期的影响的呢?
2000步左右的程序,正常情况下的程序,就FX2N来说,扫描时间20MS足够了吗?

石头0114

  • 精华:0帖
  • 求助:3帖
  • 帖子:49帖 | 85回
  • 年度积分:0
  • 历史总积分:262
  • 注册:2005年6月28日
发表于:2006-08-01 10:42:00
18楼
收藏!谢谢楼主

永无止境

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 51回
  • 年度积分:0
  • 历史总积分:99
  • 注册:2005年8月23日
发表于:2006-08-01 10:47:00
19楼
正如你所说的那样,定时器发脉冲是要受到PLC扫描周期的影响的,我记得当时我做这个程序的时候,刚开始是单轴的,工艺也比较简单,所以就用了定时器。后来到了双轴了,工艺也复杂了,这种方式就不行了。尽管T246的时基是1ms的,但是这种方式发脉冲时,他是要程序处理后才发脉冲,就是说程序每扫描一次就执行一次,这样的话,步数多了速度就不行了。当然,也可以做定时中断处理。但这样也有误差,累积误差还很大。

迷失的糕羊

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 82回
  • 年度积分:0
  • 历史总积分:88
  • 注册:2006年7月28日
发表于:2006-08-01 10:50:00
20楼
谢谢! http://www.gkcity.com/SearchEngin/search.htm?SeriesNumber=TEPCP306&PingPai=TE&FType=ProductSeriesTree

热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 3 4 5 6 7 下一页 尾页