醉湮邃虞
醉湮邃虞话老黑
级别: 略有小成
精华主题: 0
发帖数量: 229 个
工控威望: 409 点
下载积分: 1577 分
在线时间: 209(小时)
注册时间: 2009-01-16
最后登录: 2015-03-18
查看醉湮邃虞的 主题 / 回贴
楼主  发表于: 2009-04-30 23:02
第二节   让PLC控制步进电机
上次是闲的无聊,今天是酒醉方归,打了会儿游戏,晕晕乎乎,实在无聊,想起了我曾写过一篇--脉冲,还没进行第二节,歪歪扭扭做在电脑前,这回应该是【醉言醉语话--步进】了。

书接上回  http://bbs.ymmfa.com/read-gktid-34771.htm,,上次已经利用PLC的Q0.1发出了脉冲,这个脉冲已经可以使步进电机转动了,只是需要方向信号,我们随便使用个其他Q点来改变方向,例如Q0.3,其1为正向,0为反向运转。只需在上贴主程序的网络3中加入方向即可,
如果让步进电机以200速度正向行走2000脉冲,在M11.1的上升沿后加入,S Q0.3
如果让步进电机以200速度反向行走2000脉冲,在M11.1的上升沿后加入,R Q0.3

可见改变方向还是比较简单的,不再论述。

在步进电机应用中,大都是旋转变直(弧)线运动,而且需要在某些位置进行一些动作,比如200脉冲打开阀1,到300脉冲时,关闭阀1,500脉冲时回返,回返100脉冲时,打开阀2,回返到100脉冲时,关闭所有阀,然后重新开始,基于这样的假定,比较好理解的编程方法是,先发送200脉冲,完成后开阀1,再继续行走100脉冲,关闭阀1,以此类推其他的控制。这种编程方法虽然好理解和编程,但若中间动作很多,则编出的程序会非常庞大。
如果电机在运转过程中一直是恒速运转,若能掌握当前电机的运动位置,情况就变的简单了,在PLS指令中,不能回返当前位置,但PLC提供了一个高速计数器可以记录当前发出了多少脉冲,如果能充分利用,情况就变得的简单多了。PLC的高速计数器HSC0,和HSC3可以分别记录PLS0和PLS1发出的脉冲,只需要在SM0.1控制下初始化一次:

LD SM0.1
HDEF 3, 12
这段程序定义了,HSC3工作在模式12,用来记录Q0.1发出的脉冲,我们就可以利用计数器来数数共发出了多少脉冲了。


if HSC3>=200 and HSC3<=300 than SET Q1.0
情况就变的非常简单了,需要做的就是在适当的时候对HSC3进行清零、正向计数、反向计数的控制了

计数器清零
MOVB 16#D0, SMB137
MOVD 0, SMD138
HSC 3

正向计数控制
MOVB 16#98, SMB137
HSC 3

反向计数控制
MOVB 16#90, SMB137
HSC 3


所有这些我们可以加在前贴的主程序对子程序的调用中
比如正向行走,需要在M11.1上升沿后加入
SET Q0.3
MOVB 16#98, SMB137
HSC 3
此时电机以200速度,正向行走2000脉冲,同时计数器进行计数

当然需要把所有这些都放在子程序中,这样使用太不方便了,可一般电机运转的长度单位是毫米,如果在屏幕上用脉冲来表示长度,将给客户带来极大的不便,因此还需要换算,另外一个直线运动还需要一个基点,所有这些我们都可以做在子程序中,待下回再无聊时一并论述。

酒劲上来了,晕晕乎乎写了这些,希望没误导朋友。
本帖最近评分记录:
  • 下载积分:+5(sjm213) 支持原创!
  • 棋牌比赛免费得实物,闲暇好去处
    http://www.jj.cn/indexTG.html?promoterid=108502812
    yueyukui
    成功源于细节
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 320 个
    工控威望: 1569 点
    下载积分: 3574 分
    在线时间: 381(小时)
    注册时间: 2008-06-17
    最后登录: 2024-12-29
    查看yueyukui的 主题 / 回贴
    1楼  发表于: 2010-04-18 22:15
    好文章,多谢分享!