基于MODBUS协议的人机界面和单片机串行通信

2014-07-02 00:21孟祥剑黎向阳
关键词:人机界面电压表主站

孟祥剑,黎向阳

(国防科技大学电子科学与工程学院,长沙 410073)

基于MODBUS协议的人机界面和单片机串行通信

孟祥剑,黎向阳

(国防科技大学电子科学与工程学院,长沙 410073)

为实现人机界面和单片机之间的可靠通信,对基于MODBUS协议的人机界面和单片机串行通信进行了研究。在详细讨论了MODBUS通信协议的基础上,设计了以人机界面和单片机为核心的通信系统。通信由单片机主控,软件采用MODBUS协议的RTU模式数据格式编程。介绍了基于单片机的MODBUS协议实现,以循环冗余校验(CRC)为例介绍了人机界面宏指令。测试结果表明:该系统稳定可靠且实时性强,人机交互能力较好。

MODBUS协议;人机界面;单片机;串行通信

MODBUS协议是MODICON公司提出的开放式现场总线通信协议。通过此协议,可实现在不同控制器之间、控制器和其他设备之间进行串行通信,目前已成为一种工业领域被广泛使用的,真正开放、标准的网络通信协议,是事实上的主流工业通信标准之一[1-2]。

带触控功能的彩色液晶屏的人机界面(HMI),如台达公司的DOP-B系列,具有良好的人机交互能力,具备精细高画质显示、多种通信接口、方便直观的开发环境和元件库,在一些嵌入式电子系统中应用非常广泛[3]。人机界面一般都集成了基于MODBUS协议的驱动程序,可与上百种可编程逻辑控制器(PLC)或设备通讯。

电子系统常常需要具备参数设置、运行监控、故障诊断等人机交互功能。当系统设计中不具备PLC器件时,与人机界面的通信就需要自主开发。本文基于单片机主控,采用MODBUS协议,设计开发了人机界面通信系统,解决了人机界面对单片机采集数据的显示和相关参数设置问题。

1 MODBUS协议

MODBUS协议规定通信遵循主从式通信方式,支持RS-232/422/485接口标准[4]。该协议规定主站发送的查询数据帧格式:从站站号、功能码、需要发送的数据和校验码。从站站号表示需要访问的从站地址,功能码表示将要执行什么样的操作。相应的从站返回的数据帧格式也遵循类似的格式[5-6]。正常通信时,从站返回的从站站号及功能码和主站发送的站号及功能码一致。如果通信过程中出错,那么从站将功能码的最高位置1形成新的功能码,表示传输出错,形成错误数据帧并返回给主站。通信过程中,主站和从站需要遵循相同的校验方式。

该协议有两种通信模式:ASCII(american standard code for information interchange)模式和RTU(remote terminal unit)模式[4]。两种模式下的数据帧格式如表1所示。

1.1 ASCII模式

在ASCII模式下,数据帧中的每个字节都作为2个ASCII字符来发送,例如站号01,在ASCII模式下应该发送ASCII码:30H 31H。该模式以字符冒号(:)字符(ASCII码是3AH)作为起始位,以字符回车换行(ASCII码为0DH 0AH)为终止位。ASCII模式下的校验方式采取纵向冗余校验(longitudinal redundancy check,LRC)。通信过程中,设备不断监测总线上的冒号字符,当监测到冒号字符时,判断下一个地址信息是否和设备自己的站号相同。如果相同,则进行下一步处理;如果不同则不处理。ASCII模式的主要优点是2个字符之间的时间间隔可达到1 s且不会发生错误。

1.2 RTU模式

在RTU模式下,数据帧中的每个字节用2个十六进制字符来表示。可以看出该模式在同样的传输速率下,能传输比ASCII模式更多的数据。RTU模式下,MODBUS协议规定以至少3.5个字符时间间隔作为起始位和终止位。它采用循环冗余校验(cyclic redundancy check,CRC)方式校验由站号、功能码和数据组成的数据串。需要注意的是:当CRC被添加到数据帧中时,低字节在前,高字节在后。设备接收到其他设备发来的数据后,对收到的站号、功能码和数据计算CRC校验码,并将计算的CRC校验码和接收到的CRC校验码相比较,判断传输过程中是否出错。

MODBUS协议规定了很多功能码,如读多个寄存器命令03、写多个寄存器命令16等。表2给出了RTU模式下,主站读取从站站号为02、地址为0142H起始的连续2个寄存器地址数据的查询数据帧,表3给出了相应的从站返回数据帧。

表2 RTU模式下主站查询数据帧

表3 RTU模式下从站返回数据帧

2 系统硬件构成

以单片机和人机界面为核心、结合数字电压表设计了MODBUS协议通信系统如图1所示。该系统中,MCU采用单片机CY7C68013作为主站。人机界面采用台达公司的集成宏指令功能的人机界面DOP-B07S515作为从站1来提供显示和控制功能。数字电压表采用集成MODBUS协议的直流电压表作从站2实时采集电压数据。系统总线采用RS-485总线接口方式。系统工作时,作为主站的MCU周期性地对从站的状态进行查询。先由主站MCU读取数字电压表的数据,然后将读取到的数据写入人机界面。当用户对人机界面进行控制操作,例如实时输入数据时会产生数据变化,该变化被主站的MCU查询到后,MCU会立即解析并设置相应的寄存器地址数据。

图1 通信系统硬件结构

RS-485采用差分线形式,能较好地抑制干扰,并且传输距离较远,具有适合分布式系统等诸多优点,在工业控制方面得到了广泛使用[7-8]。本通信系统采用RS-485接口。人机界面和数字电压表均具备RS-485的接口。

3 软件流程

3.1 主站单片机编程

系统软件采用MODBUS协议的RTU模式编程。要实现系统整体正常通信,作为主站的单片机非常重要。系统工作时的所有命令都是先由它发出的。主站的编程主要包括3个方面:系统初始化、MODBUS协议解析处理和必要的时序控制。下面将分别阐述这3个方面。

小学生天性对一切事物都有极强的好奇心,基于他们的本性,教师要充分的利用这一特点来进行教育和指导。在课程中,小学数学教师要积极的通过相关教学手段,促使小学生能够积极的开动大脑,动手制作数学模型,将数学的知识应用于生活中,这对于培养小学生的思维能力、创造能力和动手能力都有积极的作用。所以,在素质教学的指导下,小学数学改革要将德智体美劳方面的能力,贯穿于小学生的日常学习和生活实际之中[1]。

系统初始化主要是指单片机及数字电压表串口的初始化。对单片机而言,就是设定串口的波特率、工作模式、开启串口中断、启动定时器等。单片机CY7C68013有2个串口,本文使用串口0作为发送和接收端口。对数字电压表而言,需要按照它内部集成MODBUS协议的通信格式对其进行串口初始化的设置,确保数字电压表的串口参数和主站的串口参数保持一致。

MODBUS协议解析是指对MODBUS协议规定的数据帧进行处理,这其中包括数据发送和接收处理、数据帧解析和CRC校验。数据发送采用查询方式,数据接收采用中断方式。

数据帧解析方面,首先结合数字电压表的协议说明,编写了读取数字电压表的函数read-Watch。此外还利用03读寄存器命令编写了读取人机界面寄存器数据,利用16命令写多个寄存器命令编写了写入人机界面寄存器数据的函数,限于篇幅,这里仅给出了读数字电压表的程序[6]。

时序控制方面,主站主要运用定时查询、中断等手段实现协议规定的通信时序控制。为了遵循RTU模式下的起始和终止位至少需要3.5个字符的延时要求,在发送和接收函数的前后分别加入了延时函数Delay。此外,主机在先后两次发送数据帧之间留有足够的时间间隔,使得从站有充分的时间响应主站的查询请求。

3.2 从站人机界面编程

DOP-B07S515人机界面是台达公司最近推出的高性能人机界面。该人机界面集成了功能强大的宏指令功能。宏指令功能提供了相当多样的指令,利用宏指令不仅可以处理复杂的运算,还可以自行编写通信协议,大大扩展了人机界面的功能。人机界面在和单片机相连接时,由于内部没有集成的通信驱动程序,故需要根据MODBUS协议编写相应的宏指令程序。

系统主要实现了单片机写入和读取人机界面的数据的功能。利用配套的人机组态软件DOPSoft编辑画面,设置界面上的各元件对象属性,并依据MODBUS协议RTU模式编写宏指令程序,离线模拟成功后将数据及画面资料利用USB下载线加载到人机界面中[4]。作为从机,人机界面的程序流程见图2。在利用通信宏指令进行串口初始化时的参数设置必须严格地和主站的串口初始化数据一致,这样才能保证双方正常通信。

图2 人机界面程序流程

编写的人机界面效果图见图3。可以看出:主站单片机接收到数字电压表测量到的电压数据是12.05 V,主站单片机将该数据写入人机界面。同时,利用人机界面可以对相关参数进行设置,参数设置画面见图4。人机界面分别给出了在参数显示和参数设置下主站单片机发送的数据帧和从站人机界面的返回数据帧。试验结果表明:该通信系统性能稳定,可靠性高,人机界面显示清晰,画面美观,人机交互能力较好。

图3 人机界面效果图

图4 参数设置界面

4 结束语

为了实现人机界面和单片机之间的可靠通信,本文基于单片机主控,利用MODBUS协议设计了以人机界面和单片机为核心的通信系统。测试结果表明:该系统具有界面显示丰富友好、组态灵活、通信可靠性高、实时性强等特点,能较好地应用于电子系统中的数据监测、实时参数设置。对基于如单片机等微处理器的控制系统具有广泛的应用价值和参考意义。

[1]袁臣虎,王臻,李秀艳,等.基于MODBUS协议的触摸屏与TMS320F2812串行通信研究[J].天津工业大学学报,2010,29(2):63-67.

[2]温建明,鲁五一,袁庆国.基于MODBUS协议的触摸屏与单片机通信的实现[J].起重运输机械,2008(7): 39-42.

[3]台达电子工业股份有限公司.DOP-B系列人机界面使用手册[M].台湾:台达电子工业股份有限公司,2012.

[4]李喜东,刘波涛,刘刚.Modbus RTU串行通讯协议在工业现场的应用[J].自动化技术与应用,2005,24 (7):37-40.

[5]朱小超,徐雪春.基于Modbus协议的上位机与单片机通信的实现与仿真[J].仪表技术与传感器,2011(6): 65-68.

[6]颜河恒,王晓华,佟为明.Modbus关键技术分析及节点开发[J].自动化技术与应用,2006,25(5):49-51.

[7]陈池,陈峦,任金忠.基于MODBUS协议的RS-485工业现场总线系统[J].装备制造技术,2009(5):93-96.

[8]王书根,王振松,刘晓云.Modbus协议的RS485总线通讯机的设计及应用[J].自动化与仪表,2011(5):25-28.

[9]向阳,徐景涛,董鹏永.基于MODBUS协议的CRC编码研究[J].太原科技,2007(9):40-43.

(责任编辑 杨黎丽)

Serial Communication System Design between Touch Screen and MCU Based on MODBUS Protocol

MENG Xiang-jian,LIXiang-yang
(College of Electronic Science and Engineering,National University of Defense Technology,Changsha 410073,China)

For reliable communication between humanmachine interface(HMI)and MCU,the serial communication based on the MODBUS protocol is studied.The MODBUS communication protocol is discussed in detail.A communication system based on the HMIand MCU is designed.The communication is controlled by MCU.The software of the system is programmed by the data transmission format of MODBUSRTU.The MODBUS protocol MCU-based is realized.Then the HMImacro instruction is introduced by cyclic redundancy check.Experimental results show that the control system is stable,reliable,and has the ability to better human-machine interaction.

MODBUS protocol;human machine interface;MCU;serial communication

TP29

A

1674-8425(2014)09-0087-05

10.3969/j.issn.1674-8425(z).2014.09.019

2014-04-09

孟祥剑(1991—),男,安徽濉溪人,硕士研究生,主要从事宽带信号产生技术研究;黎向阳(1972—),男,湖南浏阳人,副教授,硕士生导师,主要从事新体制雷达系统设计和实时信息处理研究。

孟祥剑,黎向阳.基于MODBUS协议的人机界面和单片机串行通信[J].重庆理工大学学报:自然科学版,2014(9):87-91.

format:MENG Xiang-jian,LIXiang-yang.Serial Communication System Design between Touch Screen and MCU Based on MODBUS Protocol[J].Journal of Chongqing University of Technology:Natural Science,2014 (9):87-91.

猜你喜欢
人机界面电压表主站
如何判断电压表的测量对象
判断电压表测量对象有妙招
EtherCAT主站与主站通信协议的研究与实现*
多表远程集抄主站系统
电压表的妙用
再探电压表内阻的测量方法
CBTC系统车载人机界面的设计与实现
基于PLC与人机界面的经编机电子横移控制系统研究
CTCS-3级列控车载人机界面的系统设计与实现
基于改进经济压差算法的主站AVC的研究