APP下载

支持Modbus RTU协议的步进电机控制器设计

2012-03-17许家林朴仁官

电子设计工程 2012年17期
关键词:数据模型串口绕组

许家林,王 鹤,朴仁官

(中国科学院 长春光学精密机械与物理研究所,吉林 长春 130000)

步进电机由于其转动的角度和其输入驱动脉冲的个数成正比,可以使用开环控制来代替闭环控制,因此,在精度要求不高的运动控制系统中,在工业领域得到了大量应用。特别在多自由度的设备中,步进电机的个数随着自由度的增加而增加。随着电机个数的增加,使用一个处理器来控制所有的电机已经不能胜任。而通常需要遵循严格的时序要求的运动可能只有2~3个,这些有严格时序要求运动的控制必须使用1个处理器来实现;而其他的运动没有严格时序要求的运动,可以使用不同的处理器来控制。各个处理器之间的同步可以使用网络总线进行通讯。

基于Modbus RTU的电机控制系统在伺服系统中得到了应用[1],一个较为简单易实现该协议的网络便是RS-485网络。这是个主从式的网络结构,使用一个主机多个从机。主机负责所有电机的管理,从机接收主机各种运动指令,并且执行响应的指令。根据实时性要求,从机处理器可以只控制一个电机,也可以控制多个电机。这种基于网络的步进电机控制器,可以控制的电机数目由原理的几个可以宽展到上百个,并且分模块设计的设计方法也增加了系统的可靠性。

文中设计了基于RS-485网络的多步进电机控制系统,系统中步进电机的驱动采用集成功率驱动器,使用STM32单片机作为步进电机的主控处理器,并且在STM32中实现了Modbus[2]协议。

1 系统结构

基于RS-485网络的多步进电机控制系统的结构如图1所示,在图中,有一个主机多个从机,使用总线型的拓扑结构将所有的主机、从机组成网络。

图1 主从式RS-485网络结构Fig.1 Master-slave type RS-485 network structure

在单个处理器构成的从机单元中,根据需要严格联动的步进电机的数量,需要设计单轴、双轴和三轴的步进电机控制单元,这些控制单元在系统网络中有各自的地址,并且有各自的Modbus RTU数据模型。

一个三轴控制单元的结构框图如图2所示,单片机负责零位,极限位置的处理,脉冲的发送和计数等,电机的驱动器负责接收单片机的脉冲信号、方向信号、细分信号等,控制电机的绕组流过的电流,控制电机进行正反转。使用STM32的一个异步串口(UART)进行网络通信,并使用SN75176A做电平转换,同时使用一个单片机的一个IO口作为发送和接收的使能端口。

图2 三轴系统框图Fig.2 Three-axis system diagram

步进电机系统由于采用开环设计,必须要有零点检测,否则系统在上电后不能找到系统的零点。也必须有两个极限位置检测以防止运动部件超出行程造成机械碰撞导致破坏。一个运动机构在运动过程中达到这3个位置时,需要通过光电开关、机械行程开关等形式通知控制系统,系统以中断的形式进行管理。STM32F103的外部时间中断源多达19个,可以方便地为每一个电机分配3个中断源,提高了控制的可靠性。

2 步进电机驱动

步进电机的驱动方法包括高低压驱动,斩波恒流驱动,调频调压[3-4]等方式,市场上目前有各种集成功率驱动器可供选择。两相步进电机的驱动芯片基本都是斩波恒流的方式。根据功率和电流的大小,可以使用的不同的驱动芯片,如Allegro MicroSystem公司的A3979[5]可以驱动2.5 A以下的两相步进电机,东芝的THB6064H可以驱动4.5 A以下的两相步进电机,如果需要更大的驱动电流,通常使用外置的MOSFET,如 Allegro MicroSystem 公司的 A3986[6],可以提供30~500W的功率,10 A以上的电流。

使用集成功率驱动芯片驱动步进电机的关键点是步进电机实现恒流驱动的原理和细分技术,以选取合适的参数来使电机稳定可靠的运行。

文中根据设计需要,使用A3979作为驱动,实现恒流的方式是固定关断时间的PWM电流控制电路。其内部使用两个H桥路分别驱动步进电机的两个绕组,并在下桥臂和地之间使用采样电阻,采集流过绕组的电流,如图3所示。

两相绕组中每一项电流的大小,和两个参数有关,一个参数是通过外部设定的参考电压,这个参考电压决定了在整个工作周期中,绕组中电流的最大值,最大值的大小为:

另一个参数是电机每一步的细分数决定的,细分数决定了通过绕组电流占电流最大值的百分比。

图3 双H桥驱动两相步进电机的结构Fig.3 System structure of 2-phase steppermotor drove by dual H-bridge

当电流值达到设定的百分比值后,开始衰减,衰减的模式有3种:快速衰减、慢速衰减和混合衰减,如图4所示。固定关断时间指的便是这里的衰减时间。衰减的方式不同是依靠H桥的MOS管开关来实现的。其中要设置的参数就是固定关断时间。设置了关断时间便可以根据衰减方式和电流的上升时间计算出MOS管的开关频率。MOS管的开关频率应该避开机械系统的固有频率,避免发生共振。使用慢速衰减时,PWM的频率最高,使用快速衰减时,PWM的频率最低。A3979的关断时间为30~46 ns,加上电流的上升时间,PWM的频率约为 12~25 kHz。

步进电机转动依靠脉冲驱动,单片机产生脉冲的方法是使用定时器来实现,在定时中断中翻转IO口的电平,使用两次中断来产生一个脉冲。在程序中计算速度和位置时都要处理由此引起的2倍关系。

3 单片机中Modbus RTU的实现

Modbus串行传输模式有两种,ASCII模式和RTU模式,两种模式的区别在于:编码格式不一样,信息帧的起始、结束方法不一样,信息帧内部的延时不一样,错误校验算法不一样,ASCII数据使用7位,信息的起始和结束用的字符作为标志,用0x3A表示起始,用0x0D或者0x0A表示结束,字符之间的延时可以长达1 s,使用纵向冗余校验(LRC);RTU数据使用的是8位,起始和结束使用3.5个以上字符的时间间隔,数据帧内的延时不得大于1.5个字符时间,使用循环冗余校验(CRC)。RTU的传输效率大于ASCII。

RTU数据帧的格式如下:

其中,地址表示设备的地址,每个设备分配唯一的地址,功能码表示对数据处理的方式,如读、写等。数据有4中不同的模型,包括读离散输入、读写线圈、只读寄存器和保持寄存器。数据根据类型有各自的地址,范围0~65 535。错误校验使用CRC。

图4 A3979的电流衰减模式Fig.4 Current decaymode of A3979

表1 数据帧格式Tab.1 Form at of data fram e

对于本应用,一轴的步进电机只需要设置3种数据模型就可以完成绝大部分功能,如表2所示,三轴系统设置3组这样的数据模型即可。

表2 步进电机数据模型Tab.2 Stepper m otor data model

在单片机中,IO的状态的改变使用IO中断的方法,特别是极限开关的处理,当极限开关动作时,需要步进电机立刻停止工作。

在硬件上,单片机实现Modbus RTU使用了一个异步串口和一个定时器。异步串口负责接收数据,把数据放在接收缓冲区,并且给定时器赋初值;定时器负责计时,时刻监视每两个数据之间的时间间隔,当一帧数据开始后,当间隔大于3.5个字符长度时间,认为接收数据完成,通知主程序处理本帧数据。主程序处理一帧数据的流程图如下。

图5 软件流程图Fig.5 Flow chart of the software design

如果设备地址或者校验码不正确,都将本帧数据放弃;其余出错方式按照Modbus的错误类型的定义。在生成返回信息时,如果是出错信息,返回的功能码是原来的功能码+0x80,即将原来的功能码最高位置1。

为了减小单片机CPU的效率,这里所有的串口返回数据都是用DMA进行。这样CPU计算完成返回信息后不需要等待串口设备进行数据发送,节约了CPU的时间。

4 结 论

文中设计的支持Modbus RTU协议的步进电机控制系统在某设备中得到了应用。应用中,主控单元根据软件要求,同时控制了13路步进电机,其中有3路由严格的时序要求,这3路使用一个处理器进行控制,占用一个物理地址。其余10路分别使用各自的处理器,并分配各自的物理地址。基于RS-485网络来控制多电机系统,不但满足了控制要求的实时性,而且控制电机的数目显著增加,各个电机之间模块可以互换,具有较高的可靠性,在运动自由度较多的场合会得到更多的应用。

[1]杨世超,陶正苏.基于Modbus RTU通信协议的伺服电机联动控制系统[J].电子设计工程,2012,20(1):91-97.

YANG Shi-chao,TAO Zheng-su.Servo-motor control system based on Modbus RTU communication protocol[J].Electronic Design Engineering,2012,20(1):91-97.

[2]Modbus-IDA.Modbus application protocol specification[EB/OL].(2006-12).http://www.modbus-ida.org/docs/Modbus_Application_Protocol_V1_1b.pdf.

[3]史敬灼,王宗培.步进电动机驱动控制技术的发展[J].微特电机,2007(7):50-54.

SHI Jing-zhuo,WANG Zong-pei.Review of stepping motors’driving technology[J].Small& Special Electrical Machines,2007(7):50-54.

[4]李玲娟.多细分二相混合式步进电机驱动器的研制[D].陕西:西北工业大学,2007.

[5]AllegroMicro systems,Inc.A3979Micro stepping DMOSDriver with Translator[EB/OL].(2005-10).http://www.allegromicro.com/en/Products/Motor-Driver-And-Interface-ICs/Bipolar-Stepper-Motor-Drivers/~/media/Files/Datasheets/A3979-Datasheet.ashx.

[6]AllegroMicro systems,Inc.A3986Dual Full-BridgeMOSFET Driver with Micro-stepping Translator[EB/OL].(2012-01).http://www.allegromicro.com/en/Products/Motor-Driver-And-Interface-ICs/Bipolar-Stepper-Motor-Drivers/~/media/Files/Datasheets/A3986-Datasheet.ashx.

猜你喜欢

数据模型串口绕组
浅谈AB PLC串口跟RFID传感器的通讯应用
面板数据模型截面相关检验方法综述
基于FPGA的双绕组无刷直流电机软件设计
基于AL1676的单绕组LED驱动电源设计
基于三步隐式Adams法的同步电机阻尼绕组电流计算
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
财政支出效率与产业结构:要素积累与流动——基于DEA 和省级面板数据模型的实证研究
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
10KV配变绕组材质鉴别初探