基于RTU油井远程测控系统的数据采集与传输层软件设
MBAP报文头(Modbus Application Protocol Header)是TCP/IP使用的专用报文头,用来识别Modbus的应用数据单元。MBAP共有7个字节,其具体组成及含义如表2所列。 Modbus/RTU报文帧是否完整和帧与帧之间的区分可以通过空闲间隔来实现,但这需要使用定时器完成1.5个字符和3.5个字符的定时,并在定时到后,进入接收处理函数
3.1.2 Modbus/TCP通信协议
Modbus/TCP是一种应用层的协议,上层为Modbus协议,下层为TCP协议,它规定了网络互联节点间的请求/应答的通信方式。帧格式必须严格遵守协议所规定的ADU(Application Data Unit)格式,才能在以太网上实现数据的传输。图3所示即为Modbus/TCP的数据帧格式。
国际互联网编号分配管理机构IANA(Internet Assigned Numbers Authority)专门为其赋予了一个TCP端口号502端口,利用TCP发送所有的Modbus/TCP ADU。
3.1.3 Modbus/TCP与Modbus RTU数据帧的区别
Modbus/TCP虽然包括了从站地址、功能码和传输的数据,但是没有校验控制码,这是因为Modbus/TCP校验功能已经在下面的四层如TCP/IP协议和链路层的校验机制得到了保证。
3.2 数据采集与传输层系统软件设计
油井远程测控系统的数据采集与传输层主要完成的功能:传感器数据的采集、传输和对继电器的控制。图1中提到了两种常见的工作方式。在井场1中存在RTU主站和从站:主站主要负责对各从站进行轮询、数据打包和向上位机发送数据,从站主要负责数据的采集、继电器的控制和轮询命令的响应,主从站之间的通信使用的是Modbus/RTU。在井场2中只存在一个RTU,主要完成数据的采集、继电器的控制和向上位机发送数据,通信使用的是Modbus/TCP。在数据采集与传输层的工作过程中,考虑到系统的兼容性,对RTU软件设计提出了可配置的要求,不需要重新下载程序,只需要使用系统配置软件就可选择不同的工作方式和通信方式,这就保证了系统的可操作性和兼容性,系统的适应性大大加强。
在软件开发过程中,考虑到串行通信速度较慢的特点,采用多线程技术,故引入实时操作系统μC/OS_II,将Modbus/RTU通信、Modbus /TCP通信等放在单独的线程中进行,而数据采集和控制等则采用另的线程实现。
3.2.1 μC/OS_II的移植
μC/OS_II是可移植、可剪裁的抢占式实时多任务操作系统内核,适用于工业控制中的实时监控。本系统成功地将实时操作系统μC/ OS_II移植到S3C2440A微处理器上,并实现了Modbus通信协议。
μC/OS_II可以管理64个任务,具有信号量、互斥信号量、消息队列、任务管理、时间管理和内存块管理等系统功能。μC/OS_II的移植主要包括三部分代码:μC/OS_II核心代码、μC/OS_II配置代码、μC/OS_II移植代码。其中μC/OS_II移植代码包括1个汇编文件、1个C程序文件和1个头文件。这部分代码与微处理器相关,是移植的关键。
3.2.2 Modbus通信的实现
RTU与上位机使用Modbus/TCP进行以太网通信时,需不断接收上位机发送的查询命令,处于服务器(从站)状态。RTU在使用。Modbus/ RTU进行串口通信时,需单独完成主从站功能。在实际应用中,不存在Modbus/TCP和Modbus/RTU的从站并存在同一RTU的情况,因而在程序编写过程中,Modbus/TCP和Modbus/RTU的从站使用同一个Modbus从站库,但对其帧头的处理略有不同。以下分别讲述Modbus/TCP服务器(从站)在TCP/IP协议栈上的实现以及Modbus/RTU主站在串口通信上的实现。
(1)Modbus/TCP通信协议实现
由于操作系统μC/OS_II本身没有TCP/IP协议栈,故先移植嵌入TCP/IP协议栈,再编写Modbus/TCP服务器(从站)程序。在μC/OS_II下嵌入了TCP/IP协议栈后就监听TCP502端口的连接请求,只有在与客户机建立了连接之后才能进行数据处理。服务器端在收到客户机的请求之后,会确认和客户机的连接,同时接收并分析客户机的请求报文。如果MBAP报文头正确,则读完所有的报文,只有协议类型值为0x00时才对请求帧进行下一步操作,否则直接丢弃报文。接着分析PDU中的功能代码,不同的功能对参数要求也不同,最后根据数据域中的参数规定,执行相应的操作。若有错误出现,直接丢弃报文,仍继续处理PDU的数据显得不必要,影响实时性。根据对客户端请求报文的分析处理,有两种响应结果,一种是正常的响应报文,另一种是异常响应报文,即返回的是错误信息。其Modbus/TCP的从站通信流程如图4所示。
(2)Modbus/RTU通信协议实现
Modbus主站需要处理发送请求帧、等待应答、处理应答、处理差错和等待转换延时等事件。其主站设计流程如图5所示。
- 一种高性价比等精度数字频率计方案设计(03-16)
- 基于FPGA的PLL频率合成器设计(08-12)
- 一种基于CCD技术的钢管长度测量系统设计(01-27)
- 一种基于DDS的电路板检测仪信号源设计(01-27)
- 逻辑分析仪我也DIY (一)(02-24)
- ADM2483在建筑能耗检测系统中的应用(10-25)