APP下载

基于单片机的多变频器Modbus通讯控制

2022-09-22游乙龙

机电工程技术 2022年8期
关键词:控制板寄存器串口

游乙龙

(广东省粤东技师学院电气工程系,广东 汕头 515041)

0 引言

通用变频器是三相异步电动机进行调速的首选控制器。一般来说,可采用面板、外部端子和通讯3种基本方法实现变频器运行指令和频率值的给定[1-3]。面板方式适合对变频器参数进行初始设置,如系统调试、维护阶段,外部端子走线不宜太长,特别是模拟量给定方式容易受到干扰、精度不高。随着现场总线技术的普及,通讯方式逐步成为主流做法。不同厂家往往开发有自家的专门协议,用于快速实现自家PLC与变频器的通讯控制,如三菱变频器采用ASCII码形式专用协议[4-5]、西门子变频器采用USS协议[6]、松下变频器采用MEWTOCOLCOM协议[7]等,不利于不同品牌之间的自由选用。而在一些应用场合,如水洗机、挤出机等只需实现多台变频器的控制,且根据控制要求同一控制系统可能选用不同品牌的变频器。

Modbus是用于工业现场的总线协议,具有完全免费、简单易用、标准规范等优点,在工业控制中获得广泛的应用。大多数通用变频器搭配有RS485接口电路、内置有Modbus协议。陈建荣等[8]、吴征等[9]、郝迎吉等[10]给出了基于Modbus协议的、以单片机为控制核心的变频器通讯控制方案,但缺少单片机Modbus主站功能的具体实现,也未给出实用的控制程序。本文设计制作了一款带有RS485接口电路的、8进8出的单片机控制板,分析设计Modbus控制程序,通过淘晶驰串口屏进行人机交互,实现对不同品牌变频器的通讯控制。

1 控制原理

单片机控制板是控制系统的核心,通过TTL电平实现与串口屏的全双工通讯,接收串口屏发来的运行指令、运行频率,同时定时将查询到的变频器的状态信息上传到串口屏中进行显示。在实际工程中,为提高控制系统的可靠性,变频器的运行指令还允许通过外部物理信号进行控制,为此单片机控制板接收外部按钮等开关信号。单片机板、变频器通过RS485总线二线制连接,并以单片机板作为Modbus主站,各变频器作为具有指定站号的从站。控制的核心是,按Modbus协议,单片机将控制信号按一定控制逻辑产生相应的查询帧发送到总线上,目标从站处理后按规定的帧格式进行应答。本文分析了Modbus通讯的帧格式及其单片机编程实现。控制框图如图1所示。

图1 控制框图

2 硬件结构

2.1 单片机控制板

本文选用国产增强型8051内核、超高性价比的STC单片机作为主控,具体型号是STC15F2K60S2-PDIP40。该型号具有两个串口,其中一路与串口屏进行TTL通讯,接收触摸屏的命令、上传变频器的状态;一路设计RS485接口电路实现Modbus通讯。该控制板设计有8路漏型输入、8路晶体管输出,可灵活增加输入输出信号,比如输入按钮信号,用以控制运行指令。整个电路板使用24VDC开关电源供电,输入输出电路、RS485通讯电路均使用光耦(EL357)隔离,其中RS485接口电路使用2片高速光耦(TLP109)隔离收发信号、1片普通光耦作为方向控制信号。电源使用DCDC隔离电源模块,B2405S将输入电压24 V转为控制板所需的5V电源,B0505S产生隔离的RS485电源。特别地,为提高波特率的准确性和通讯稳定性,时钟电路选用外部22.1184 MHz的晶振,而不使用内部RC时钟。单片机控制板框图、实物图如图2所示。

图2 单片机控制板

2.2 三菱变频器的RS485接线与参数设置

三菱FR-A700系列变频器的通讯分为使用变频器的PU接口的通讯和使用RS485端子的通讯,分别对应两组不同的参数。PU接口方式的通讯,使用三菱变频器专用协议,且通讯帧采用ASCII码格式,数据密度低,通讯效率低;RS485端子使用标准化、通用的Modbus RTU协议。RS485端子如图3(a)所示,可采用四线式、两线式两种接法。两线式更为普遍,将RXD1+和TXD1+短接并接RS485总线的A端,将RXD1-和TXD1-短接并接RS485总线的B端,如图3(b)所示。

图3 FR-A700变频器RS485端子

相互通讯的各方必须设置同样的通讯格式,才能确保通讯正常。本文通讯格式统一设置为9600/8/N/2,即通讯波特率为9600 bit/s,8位数据位,无奇偶校验,2位停止位。三菱变频器使用RS485端子的ModbusRTU通讯相关的参数如表1所示。设置通讯参数前,建议执行ALLC=1操作,将所有参数恢复出厂默认值。

表1 三菱变频器RS485通讯参数设置

2.3 西门子变频器的RS485接线与参数设置

西门子V20系列变频器的控制回路接线端子如图4所示,P+接RS485总线A端,N-接RS485总线的B端。西门子V20变频器可通过RS485接口的USS协议与西门子PLC进行通讯。用户可以通过参数设置为RS485接口选择USS或者Modbus RTU协议。为增强抗干扰性能,建议使用屏蔽双绞线作为RS485通讯电缆。

图4 V20变频器控制回路接线端子

本文选择ModbusRTU协议实现单片机与变频器的通讯,如前文所述通讯规格统一为9600/8/N/2,V20变频器相关参数设置如表2所示。设置通讯参数前,最好执行恢复出厂默认值的操作,且在更改P2023后,须对变频器重新上电。

表2 西门子变频器通讯参数设置

3 ModbusRTU的控制实现

3.1 ModbusRTU简介

Modbus是用于工业现场的总线协议,具有标准、开放、免费、通俗易懂等优点,支持多种电气接口,已纳入国家标准。Modbus分为标准Modbus、Modbus-TCP、Modbus Plus三种形式。标准Modbus的物理层是串行链路,广泛采用的是RS485电气接口。串行链路Modbus可分为ASCII码和RTU两种传输模式。RTU模式具有较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率,是标准Modbus要求支持的传输模式。Modbus串行链路协议是一个主-从协议。Modbus通讯总是由主站发起,从站被动响应,从站从来不会主动向主站发送信息,从站之间也从来不会相互通讯。主站可以采用单播模式和广播模式向从站发送信息。每个从站都有一个唯一的站号。Modbus的对象有单比特和16比特两个类型。单比特类型主要处理离散输入与线圈,16比特类型则是两字节的寄存器。在工程实际应用中,用户可以将16个单个比特类型的对象包装成一个16比特类型的寄存器,读写一个16比特的寄存器可以实现对16个单比特类型的对象进行读写操作。

3.2 变频器的功能码与寄存器

查阅手册[11-12],无论是三菱变频器还是西门子变频器,在Modbus通讯时,均主要支持0x03、0x06、0x10三个功能码,其中0x03功能码的主要功能是读取保持寄存器的数据,用户可实时监视变频器的各种状态信息、运行参数等,0x06功能码的主要功能是向单个保持寄存器写入数据,实现变频器的运行控制或频率调节,0x10功能码则可以一次向多个保持寄存器写入数据。在实际应用中,可以简化成只需用两个功能码,即0x03监视运行状态,0x06实现运行控制与频率值写入。Modbus通讯有关寄存器分析汇总如表3所示。

表3 Modbus寄存器

V20变频器使用基准变量,这有助于采用统一的方式显示设定值和实际值信号,一个100%的值相当于一个0x4000的过程数据值。用户通过设置P2000~P2004分别实现基准频率、基准电压、基准电流、基准转矩、基准功率的设置。寄存器40101的数据与频率值的对应关系是:

已知期望输出频率,则寄存器40101的设定值表示为:

3.3 单片机控制程序

单片机程序分为串口基本读写部分、串口屏通讯部分、ModbusRTU主站程序等3部分。串口1与串口屏通讯,初始化为38400/8/N/1;串口2实现RS485接口,初始化为9600/8/N/2,两路串口均使用环形数组实现串口数据的读写,开放收发中断且配置为高优先级,确保响应实时性。

本文选用淘晶驰的X5系列7寸电阻屏,型号是TJC8048X570_011R。相比于工控常用同等尺寸的触摸屏,串口屏具有明显的价格优势,开发难度低,自由灵活设计用户界面。单片机与串口屏的通讯是无协议的自由通讯。串口屏以连续3个0xff作为数据帧的结尾,一旦接收到第1个字节,串口1开始监视接收的信息,如连续接收到3个结束符0xff则视为一帧结束,立即解析并将控制信息通过串口2发送给相应从站。同时,单片机还通过串口1定时将从站的状态信息发往串口屏进行显示。

标准ModbusRTU要求帧间隔不少于3.5 t,帧中字符间隔不超过1.5 t。由于从站收到查询帧时需要时间进行处理,再进行应答,在实际应用中,简化了对3.5 t的判断,采用定义一个监视变量HostRx_TimeOut,在持续规定时间未再接收到字符,则视为一帧结束HostRx_Time-Out被置为1,开始分析数据帧。无论收发,由于使用了缓冲功能,先将数据写入缓冲区再启动发送,确保了同一数据帧中的字节是连续发送的,字符间隔不超过1.5 t。

三菱、西门子、ABB[7]等知名品牌变频器的Modbus通讯均主要支持0x03、0x06、0x10等3个功能码,在实际工程应用中,0x03和0x06这两个功能码足以满足通讯要求。0x03功能码用于读取16 bit的寄存器,其收发帧格式如图5所示。

图5 0x03功能码收发帧格式

定义从站地址Slave_Addr、寄存器地址RegAddr、寄存器数量RegNum,则存在如下关系:查询帧与应答帧的头两个字节相同,分别是从站地址、功能码(03H);应答帧的“字节数”等于寄存器数量RegNum的两倍;寄存器地址、寄存器数量、寄存器内容都是16 bit类型,在Modbus帧中均高字节在先、低字节在后,CRC16则是低字节在先、高字节在后。

0x06功能码用于写入单个16 bit的寄存器,其收发帧格式如图6所示。

图6 0x06功能码收发帧格式

定义寄存器内容RegVal。明显地,0x06功能码收发帧完全一致,这是一个重要的判断依据。

在编程时,使用全局变量Host_Status,只有当Host_Status为0时(称为准备状态)才允许更新功能码Host_Tx_Code的值,相应地更新从站地址Slave_Addr、寄存器地址RegAddr、寄存器数量RegNum或寄存器内容RegVal,再根据功能码Host_Tx_Code是0x03还是0x06分别调用不同的处理函数。这样做的好处是避免上一次的通讯被打断。另外,为提高通讯可靠性,对应答帧进行了多次判断处理,一旦超时或判断出错,启用多次发送机制,如多次尝试均失败,则认定通讯故障。对0x03功能码而言,在接收到应答帧时,依次进行从站地址、CRC校验、帧长度判断等判断无误后,将接收到的数据寄存器值填入到相应的区域。图7、图8分别给出了0x03和0x06功能码的处理函数。

图7 0x03功能码处理函数

图8 0x06功能码处理函数

4 结束语

本文以单片机控制板为核心、以串口屏为人机界面实现对不同品牌的多变频器的Modbus通讯控制。设计了一款通用性强、成本低的单片机控制板,克服了PLC或工控机不利于对不同品牌变频器的通讯困难,分析了Modbus收发帧格式,为编写Modbus通讯处理函数提供依据。实践证明,本方案可以大幅度降低控制系统成本,在成本敏感场合具有明显的优势。特别地,如使用同一品牌的变频器,可以使用广播方式实现对全部从站的同时控制,较好地保障了同步性;同时控制板具有IO功能,可方便实现输入输出控制,具有简易PLC的灵活性。

猜你喜欢

控制板寄存器串口
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
Lite寄存器模型的设计与实现
基于EM9000工控板高性能双串口通信模型设计与实现
二进制翻译中动静结合的寄存器分配优化方法
轨道交通AFC导向标识控制板设计
移位寄存器及算术运算应用
一种集成脚本控制单元的设计与实现
一种全隔离的无刷直流电机的反馈制动控制板的研究
船舶电子设备串口数据的软件共享方法
一种机载SAR中心控制板的设计