步进电机控制(PLC)
目录
设计一个三相六拍环形分配器控制脉冲进而控制步进电机运行。
该程序应具有:
- 电机正反转控制
- 转速控制:快速(0.5s)、中速(1s)、慢速(2s)
- 定步控制:执行8步后自动停止
- 高分要求:正反转/转速可以任意组合
步进电机是电流在线圈中按顺序切换而使电机转轴作步矩式转的电机 。切换是由输入驱动的脉冲信号来完成的,每给驱动电路一个脉冲,电机转轴就按要求旋转一定的角度。故这种电机可以用输入的脉冲数来控制电机的转角,并且转速由脉冲的频率决定。
本实训的步进电机采用单-双相励磁,如下图:
表中的S1、 S2 、S3 分别为步进电机三相激励线圈A、B、C的控制开关。
设A相首先通电,转子齿与定子A、A’对齐(图1a)。然后在A相继续通电的情况下接通B相,这时定子B、B′极对转子齿2、4产生磁拉力,使转子顺时针方向转动,但是A、A’极继续拉住齿1、3,因此,转子转到两个磁拉力平衡为止,这时转子的位置如图1b所示,即转子从图1a位置顺时针转过了15°。接着A相断电,B相继续通电,这时转子齿2、4和定子B、B’极对齐(图1c),转子从图1c的位置又转过了15°,其位置如图1d 所示。这样,如果按A→AB→B→BC→C→CA→A.的顺序轮流通电,则转子便顺时针方向一步一步地转动,步距角15°。电流换接六次,磁场旋转一周,转子前进了一个齿距角。如果按A→AC→C→CB→B→BA→A.的顺序通电,则电机转子逆时针方向转动。采用六拍方式时,转子走六步前进一个齿距角,即每走一步前进六分之一齿距角,由上面介绍可知,步进电机具有结构简单、维护方便、精确度高、起动灵敏、停车准确等性能。此外,步进电动机的转速决定于电脉冲频率,并与频率同步。
在步进电机控制系统中,步进电机作为一种控制用的特种电机,利用其没有积累误差的特点,广泛应用于各种控制中。对于步进电动机来讲,它受控于脉冲量,比直
流电机或交流电机组成的开环精度高,适用于精度要求不太高的机电一体化伺服传动系统。
步进电机的驱动电源开环控制基本上由脉冲发生器、脉冲分配器和脉冲放大器三部分组成。
所以对于三相六拍步进电机的控制转换为 对于A、B、C输出脉冲的控制,所以我们只要使用PLC输出不同周期的脉冲对步进电机进行驱动。
整体的设计方案如下:
定时脉冲输出设计
使用一个时间Time变量作为所需的延迟时间输入到定时器延时的时间中,在用这个定时器时间一到控制转换输出状态为高电平,同时启用使用另外一个定时器(固定时间)控制输出为低电平(比前面的时间短很多),这样就实现一个脉冲的输出。同时设计在按键按下触发使用移位指令 将时间数值送过去。从而实现实时改变步进电机的运行速度。
脉冲驱动A、B、C三相输出控制
因为步进电机一个周期走完需要6拍,也就是有6个状态,用顺序功能图进行设计时候就很繁琐,因为有六个状态,3个输出,所以我们可以对六个状态进行编码(数字电子技术),每一步对应一个状态,每一个状态对应一个输出。这里有两种思路,一种,将增计数器的输出CV设一个变量,代表一步的状态,然后进行|==|的判断,等等与0就是第一步,等等1就是第二部……以此类推。以上这种方案比较繁琐,需要多处判断指令;第二种方案使用移位指令。从100000一直移位,移到000001.
采用移位指令进行步进控制。每右移1位,代表电机一步,据此,可作出移位寄存器输出状态及步进电机正反转绕组的状态真值表,从而得出三相绕组的控制逻辑关系式。
正转时;
A相:Q0.O=MO.5+M0.4+M0.0
B相:Q0.1=M0.4+MO.3+MO.2
C相:Q0.2=MO.2+MO.1+MO.0
反转时:
A相:Q0.O=M0.5+MO.4+M0.0
B相:Q0.1=M0.2+MO.1+MO.0
C相:Q0.2=M0.4+MO.3+M0.2
正反转设计
为了简单,我使用了一个常闭的按钮作为正反转的控制,这样简化了程序(减少了自锁、互锁环节),实际生活中,安全隐患可能较大,但作为实验,能简单则简单,而且查找程序错误也比较的方便。
控制信号 | 信号名称 | 元件名称 | 地址编码 |
输入信号 | 启动 | 常开按钮 | I0.0 |
正、反转 | 常闭按钮 | I0.4 | |
低速开关 | 常开按钮 | I0.1 | |
中速开关 | 常开按钮 | I0.2 | |
高速开关 | 常开按钮 | I0.3 | |
定步、不定步控制 | 常闭按钮 | I0.3 | |
输出信号 | 控制A相绕组 |
| Q0.0 |
控制B相绕组 |
| Q0.1 | |
控制C相绕组 |
| Q0.2 |
Part one:启动
Part two :速度选择
Part three :移位初始化
Part Four 脉冲生成+移位
Part Five 计数
Part six:
Part seven:
Part eight:
软件调试
首先,由于上机的次数比较少,导致编程的时候有点生疏。主要有以下几点:
1、上升沿指令用得不是很明白。
用线圈的常开上升沿指令需要设定一个存储位,这个存储位不能设置成和本身一样,或者其他已经存在变量,否者很难出结果。在这个点卡了不少时间。
2、步进电机是通过脉冲控制的。
由于实验前并不知道对步进电机的控制是通过脉冲实现的,以为步进电机是通过对相电平的识别实现的,所以饶了不少弯路,最后从脉冲定时器找到灵感。这主要是查资料查找得不够充分,以后会改进。
3、定时器的PV上的值是Time类型的变量。
对于变量的类型不是很清晰,但是在编译中出错了,通过对在变量表中对变量类型的更改才通过编译,明白变量的类型也是挺重要的。
4、常闭开关的妙用
常闭开关有两种状态,闭合、断开,这两者是分离的,因此在效果对立(不是这个,就是)的两个功能中可以使用,可以减少不少的编程量(自锁、互锁可以省略),但实际生产中不推荐用。
硬件调试
要注意的是IO口与相应类型的按钮要对应好,否者很难出结果。调试的时候使用监视模式,可以很清楚的看到按钮按下是否起作用了。
通过这次设计实践。我提高了了PLC的编程能力,对PLC的工作原理和使用方法也有了更深刻的理解。在对理论的运用中,提高了我们的工程素质,在没有做实践设计。以前,我们对知道的撑握都是思想上的,对一些细节不加重视,当我们把自己想出来的程序与到PLC中的时候,问题出现了,不是不能运行,就是运行的结果和要求的结果不相符合。能过解决一个个在调试中出现的问题,我们对PLC的理解得到加强,看到了实践与理论的差距。
参考文献:
1、廖常初. S7-1200 PLC编程及应用.第2版[M]. 机械工业出版社, 2010.
2、叶真. 步进电机的PLC控制梯形图程序设计[J]. 应用技术学报, 2007, 7(002):83-86.