第二节 让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脉冲,同时计数器进行计数
当然需要把所有这些都放在子程序中,这样使用太不方便了,可一般电机运转的长度单位是毫米,如果在屏幕上用脉冲来表示长度,将给客户带来极大的不便,因此还需要换算,另外一个直线运动还需要一个基点,所有这些我们都可以做在子程序中,待下回再无聊时一并论述。
酒劲上来了,晕晕乎乎写了这些,希望没误导朋友。