程保喜(山西省自动化研究所,山西 太原 030012)
基于Modbus协议的变频器串行通信设计
程保喜(山西省自动化研究所,山西 太原 030012)
串行通讯在工业控制中有着广泛的应用,Modbus协议是应用于电子控制器上的一种通用语言,它已经成为一种通用工业标准。本文针对变频器与上位机之间需要进行通讯以方便数据处理的问题设计了基于Modbus协议的变频器串行通讯程序,首先介绍了Modbus协议的工作原理,基于Modbus中的RTU模式在TMS320LF2407上使用汇编语言进行串行通信程序编写,对设计中的关键程序通过程序流程图的方式进行了重点分析,并通过硬件平台验证了方法的可行性,最终实现了变频器和上位机的串行通信功能。
Modbus协议;RTU;变频器;串行通信
变频器是交流调速的一种重要手段,在工业生产中得到了越来越广泛的应用。它本身所带的显示面板具有简单、高效的特点, 但却有专业化、操作不方便等缺点,而且在数据的处理、计算、保存等诸多方面不尽人意。通过变频器与上位机的通信可以将数据上传或下载,以便充分发挥上位机数据处理和操作方便的优势。
1.1 Modbus主从协议原理
Modbus最早由Modicon公司开发,现在已是全球工业领域最广为使用的协议。它支持RS-232/422/485及以太网设备。许多工业设备(如DCS、PLC及智能仪表)都将其作为通信标准。
Modbus数据通信采用半双工的主从应答方式,在同一时刻,同一串行总线上,仅有一个主机和一个或多个从机连接。Modbus通信由主机端发送数据请求寻址到相应正确的从机,从机确认信息正确后发出应答信息传输给主机以响应请求,从机未收到来自主机的数据请求时,不会主动发送数据。Modbus协议只能够在主从机间通信。主机有两种发送数据请求模式即广播模式和单播模式。广播模式是主机对所有从机发送数据请求,而从机不需要有应答响应;单播模式是主机特定寻址某一从机,被寻址从机在接收到数据请求后,需要对主机做应答响应。
1.2 传输模式和帧格式
Modbus常见的通信协议有:Modbus RTU和Modbus ACSII两种模式。本设计主要采用Modbus RTU模式,它主要是用于二进制数值且数据量较大的传输通信中。
在Modbus RTU模式中,数据帧包括起始位、地址码、功能码、数据区、CRC校验位及停止位。为区分两帧数据,每帧报文之间间隔需要大于3.5个字符时间,图1为Modbus RTU模式图。其中,每帧报文必须采用连续的字符流发送且字符空闲间隔时间须小于1.5个字符时间,否则接收到的报文帧将被认为不完整而被丢弃。
图1 Modbus RTU模式图
Modbus RTU模式通信协议采用异步通信方式并规定了传输的通信信息和通信数据帧格式及内容。通信信息采用11位的字格式;主机通信信息帧内容包括:地址码、执行功能码、数据区及错误校验,如表1所示。从机给主机的返回帧也是采用同样结构,内容包括:动作确认,数据区和错误校验等。如果从机在接收信息时发生错误,或未能执行主机传达的命令,它将给主机返回一个故障帧。
表1 通信数据的类型及格式
本方案中串行通讯采用RS485接口,RS485的电气标准并不符合DSP芯片的电平要求,因此必须进行电平转换。如图2所示,本方案使用的电平转换芯片是MAX483E,硬件设计简单。RXD1和TXD分别接DSP的SCIRXD和SCITXD。
图2 连接原理图
本文串行通行设计使用的控制芯片是TI公司的TMS320LF2407,采用汇编语言编写程序。
本文中通讯程序设计分为3个部分:SCI初始化程序、SCI中断程序和SCI数据处理程序。
3.1 SCI初始化程序
SCI初始化程序主要是设置相应的SCI寄存器。下面是一些相应的寄存器设置代码:
LDP #0E01H ;装载数据页
SPLK #0003H,MCRA ;选中SCI输入引脚
LDP #0E0H ;装载数据页
SPLK #07H,SCICCR ;1位停止位,无校验 ; 8位数据,
SPLK #03H,SCICTL1 ;使能TX,RX;使能SCICLK
SPLK #02H,SCICTL2 ;使能RX中断;禁止TX中断
SPLK #02H,SCIHBAUD
SPLK #08H,SCILBAUD ;波特率9600bps
SPLK #023H,SCICTL1 ;复位放弃SCILDP#0
SPLK #0,GPR0 ;设置等待状态发生器
3.2 SCI中断程序
SCI接收和发送数据均采用中断程序来实现。
SCI接收数据时,将按字节方式接收,每接收到一个字节数据,就进入一次中断。通过中断重复接收,直到数据接收完毕。中断模式中需要定时器实时监测所接收每帧数据之间的时间间隔,当间隔大于3.5个字符时,说明准备接收新的一帧数据。每一帧数据接收完成后,从机将重新计算其CRC校验值,并与所接收到的数据中的CRC值进行比较,与此同时,表明接收数据正确,从机将执行数据帧中的功能码,否则从机将向主机返回一条异常数据帧。
SCI中断发送数据时,程序会记录所发数据的长度,直至所有字符发送完毕。中断程序默认的是接收状态,每当数据发送完毕后需清除发送标志位,关闭发送中断,打开接收中断。图3是SCI中断流程图。
3.3 SCI数据处理程序
SCI数据处理程序的主要功能是根据已接收Modbus的正确命令码来控制变频器进行相应动作。每当变频器接收到一条完整的数据帧后,首先判断所接收数据帧的地址是否为本机或广播地址,然后重新计算CRC校验码是否与接收的校验码一致及命令码的合法性,在所有条件都满足后,变频器执行操作命令。图4为数据处理流程图。
图3 SCI中断流程图
图4 数据处理流程图
上位机通过串口调试工具发送数据,测试结果如表2~表5所示。
表2 命令码03H主机命令信息(RTU)
表3 命令码03H从机回应信息(RTU)
表4 命令码06H主机命令信息(RTU)
表5 命令码06H从机回应信息(RTU)
本文所介绍的方案是通用变频器设计的一部分。本文的设计在该装置运行情况良好,达到了设计要求,实验结果令人满意。
[1] 刘和平, 严利平, 张学锋, 等. TMS320LF240x DSP结构、原理及应用[M].北京: 北京航空航天大学出版社,2002.
[2] 金立江, 李文, 张继和. 基于ModBus协议的变频器VC++控制系统[J].自动化与仪表, 2008, (4):32-35.
[3] 梅锐, 牟永敏.基于Modbus协议的自动化设备之间通信实现[J]. 北京机械工业学院学报, 2006, (21):44-46.
[4] 王靖欧, 雷山凤. Modbus协议在监控系统串行通讯中的应用[J]. 湖北水力发电,2007, 10(1):18-20.
[5] 李宥谋, 房鼎益. CRC编码算法研究与实现[J]. 西北大学学报, 2006, 36(1): 895-898.
[6] 郭鹏义, 杨耕. 基于DSP的变频器与PC机串行通信的实现[J]. 电气传动,2004, (2): 45-47.
[7] 薛海涛, 和卫星, 陈晓平. 数据采集系统中MODBUS协议的实现[J]. 微计算机信息, 2007, 23.
Serial Communication Design of Inverter Based on Modbus
Serial communication has been widely used in industrial control. The Modbus protocol is a common language which is applied to electronic control. Serial communication program is designed based on Modbus protocol in order to communicate between the inverter and the computer for data processing. This paper introduces the Modbus protocol and programs on TMS320LF2407 with assembly language based on RTU model in Modbus. The key point of design procedure is analyzed through flow chart and the feasibility of method is verified by hardware platform. The serial communication between inverter and PC is finally achieved.
Modbus protocol; RTU; Inverter; Serial communication
B
1003-0492(2015)02-0088-03
TP273
程保喜(1971-),男,山西太原人,本科,工程师,现就职于山西省自动化研究所,主要研究方向为电气工程及其自动化。