贾涛 陈家林
【摘要】 Modbus协议作为一个跨时代的网络协议,是全球第一个真正用于工业现场的总线协议,在工业领域具备广阔的应用前景。本文介绍了Modbus协议的主要特点,并详述在基于STM32单片机以及嵌入式实时操作系统μC/OS-II上的工业仪表内进行构建Modbus协议的系统设计。
【关键词】 Modbus协议 嵌入式实时操作系统 系统设计
一、引言
Modbus协议是由Modicon公司在1978年发明的一种工业通信协议,正式为工业网络拉开了序幕。Modbus 标准定义了 OSI 模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。由于其开放性标准、支持多种电气接口、帧格式通俗易懂的特点,特别是工控领域上HMI、PLC、前端仪表等设备间通信得到了广泛使用。通常Modbus协议由串行链路通过一个主/从总线模型实现。同一时刻,只有一个主站连接于总线,一个或多个从站连接在同一个串行总线上。
二、硬件结构设计
在工业仪表内除了实现主要的监测物理量之外,仪表还需具备数据通信互连功能。本文所指的工业仪表是基于STM32L152RBT6为控制器的硬件环境实现的对外界环境温度监测的仪表,并通过在其内部构建Modbus协议实现数据通信。STM32L152RBT6是属于由ST公司的STM32L152系列微控制器,该系列属于是超低功耗,高数据安全性,高效能的ARM Cortex-M3微控制器芯片。其低功耗运行模式电流为10.4μA,能够满足实际的工业应用中低功耗稳定的需求。同时利用STM32内提供的串行口外设和485总线转换模块实现通信接口。转换模块采用的是SP3072EEN接口芯片,采用半双工通讯方式,与单片机引脚连接简单。硬件结构框图如图1所示。
三、软件功能设计
为了在基于嵌入式的工业仪表内构建一个实时性强、运行稳定的Modbus协议,使用了μC/OS-II作为整个仪表的软件平台,其是由Jean J. Labrosse于1992年编写的一个嵌入式多任务操作系统,凭借其足够的稳定性和安全性在数十年之间得到了许多机构的标准认证。在μC/OS-II内具体应用的软功能都是通过系统提供的多个用户任务来实现。
3.1 Modbus主站设计
实际工业应用中,工业仪表需要向前端传感设备或其他仪表进行数据交互,以便实时读取到需要的数据值,仪表内部需要构建一个Modbus主站作为主动发送数据请求命令的客户端。Modbus主站工作原理如图2所示。
本设计利用了μC/OS-Ⅱ所提供的系统服务将主站模块分为三个部分:请求主站服务的用户任务、主站服务管理任务、串口底层驱动函数。
请求主站服务的用户任务是指的是那些用户任务中有调用Modbus主站服务的需求。各个用户任务通过实际应用发送特定的主站请求命令,并通过操作系统提供的消息队列进行命令缓冲。
主站系统中的主站管理任务是负责专门管理来自各个请求主站服务的任务的具体请求。该任务也属于一个用户任务,只是对请求命令的缓冲队列进行集中处理。
串口底层的中断处理实现了串行链路上具体的数据发送与接收。
主站服务由请求主站服务的任务发起,各个请求主站服务的任务按优先级顺序执行并依次调用主站服务调用函数,该函数完成数据帧的建立与命令的填充最后将缓冲区传递给主站管理任务。主站管理任务优先级是低于所有请求主站服务的任务,它将依次处理接收到得数据帧内容,对数据帧进行封装并交给串口底层驱动实现最终的发送和接收工作。当接收到从站回复或者发生接收超时,主站管理任务将在缓冲区中产生一个标志符通知上层请求任务进行处理。为了发送和接收的实时性考虑,这里将数据帧的校验和处理工作交给上层请求任务完成。
3.2 Modbus从站设计
为了实现数据互连,后台上位机或者现场PLC需要实时获取前端仪表的数据信息。前端仪表内部需要构建一个Modbus从站作为服务器提供前端数据。Modbus从站工作原理如图3所示。
由基于μC/OS-II的平台,可将从站功能模块化到一个μC/OS-II的独立任务内,通过内核的多任务管理调度对从站进行状态轮询并且通过底层中断进行实际的数据帧接收工作。当收到一个请求时,从站在首先需要校验报文包。若发生通信错误则不作任何响应,回到空闲状态。若无通信错误,则按照Modbus协议规定解析请求包,进行具体的事务处理。若发生错误,则返回一个异常响应给主站。当要求的处理完成后,单播报文需要一个格式化的响应发往给主站。
四、结语
本文实现了在基于嵌入式的工业仪表上的Modbus主从站搭建和设计工作。经过测试,仪表内的Modbus协议具备协议标准的要求和功能,满足实时性要求和稳定性,能够同时作为主站和从站多任务进行工作,达到了设计的目的。