S7-200SMART是西门子公司的一款小型PLC。本文介绍一种PLC直接控制步进电机的方法,会附带梯形图程序。
现有能搜到的很多教程都是使用步进电机驱动器,然后用开发工具中使用向导生成PWM子程序调用,这种方法因为简便可靠,也是目前实际工程中使用最多的。还可以使用PTO,也是使用开发工具中的向导初始化。以上两种方法都可以搜到很多教程。只用定时器直接控制的很少有教程。本文介绍的直接控制就是不适用电机驱动器,仅依靠PLC的计时器来生成控制脉冲。
步进电机简述
既然是控制步进电机,我们就要先了解步进电机。步进电机分为三大类:永磁式、反应式、混合式。具体区别自行查阅即可,此处不赘述(别问,问就是懒的码)。
四相步进电机通过给四个定子线圈通电顺序和时间的不同,从而形成强度和方向不同的旋转磁场,吸引转子以不同方向和速度旋转。按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。本文介绍的就是八拍驱动的方法。
控制原理:
四相八拍电机的四相线圈分别用 A、B、C、D 表示。
当电机正转时,其工作方式如下:A→AB→B→BC→C→CD→D→DA→A。
当电机反转时,其工作方式如下:A→AD→D→DC→C→CB→B→BA→A。
设计要求:
设计程序实现对步进电机启动、停止、正转、反转的控制及实现 3 档调速即快速、中速、慢速。控制模块中的步进电机工作方式为四相八拍电机的四相线圈分别用 A、B、C、D 表示。需要使用数码管显示电机档位。
PLC梯形图程序实现
此程序I/O配置分配情况如下表:
I/O口 | 连接端口 | I/O口 | 连接端口 |
I0.0 | 启动 | Q0.3 | 步进电机D相 |
I0.1 | 停止 | Q1.0 | 数码管A段 |
I0.2 | 正转 | Q1.1 | 数码管B段 |
I0.3 | 反转 | Q1.2 | 数码管C段 |
I0.4 | 快速 | Q1.3 | 数码管D段 |
I0.5 | 慢速 | Q1.4 | 数码管E段 |
Q0.0 | 步进电机A相 | Q1.5 | 数码管F段 |
Q0.1 | 步进电机B相 | Q1.6 | 数码管G段 |
Q0.2 | 步进电机C相 |
下面是使用s7-200 smart官方集成开发环境Step 7MicroWIN SMART软件编程实现对四相八拍步进电机控制的程序。工作原理及对此程序的解释均以注释的形式在下图中给出。此处仅声明程序中出现的变量的含义:VB10(存放电机转速挡位的字节变量)、VW50(存放转速的字变量,即脉冲宽度)、VB100(八拍进给控制的字节变量)。
这里要提醒各位一个我在编程中忽略的问题:
在控制脉冲的程序部分我先是写了如下的梯形图,结果发现输出继电器存在问题,没有按照我程序输出,但是软件上显示的是没有问题,输出继电器均可正常输出。我先是拆了试验箱,验证了步进电机是没有问题的,然后使用电源依次给定子线圈按照控制次序依次供电,发现可以正常运转。故,肯定是程序存在问题。问题就是输出继电器线圈不能重复使用,如下图:
解决方法就是使用一组中间继电器来作为8拍的输出,再用这些中间继电器去控制真正的输出ABCD四相的线圈。
后记
完成PLC直接控制步进电机对我而言没有太大难度。但这次设计也感触颇深,本以为自己学的还行。调试半天找不出毛病,信誓旦旦地觉得自己的程序是没有问题的。拆解实验箱,单独调试步进电机无果后,老师一语道破天机,输出继电器线圈不能重复使用,方觉自己的无知与渺小。学海无涯更无止境,一知半解贻笑大方。