基于单片机操作平台的数据采集网关的设计

2019-01-10 01:48丁梦遥魏霞
现代电子技术 2019年1期
关键词:热电厂中断网关

丁梦遥 魏霞

关键词: 协议转换; 网关; Modbus RTU; Modbus TCP; 消息机制; 数据采集

中图分类号: TN915.04?34; TP274+.2                   文献标识码: A               文章编号: 1004?373X(2019)01?0028?05

Abstract: With the control strengthen of large power plants, and increase of controlled data category and data protocol category, the benefit maximization is pursued, which leads to a bottleneck for many?to?one protocol conversion. Therefore, the available protocol conversion mode is improved, and the traditional "one?to?one" transmission mode is improved as the "many?to?one" mode to avoid "message blocking". The single chip microcomputer (SCM) operation platform is introduced. A multi?protocol data acquisition gateway is implemented on software and hardware. The message mechanism is used in software to combine the functions of channel selection, protocol conversion, gateway parameter setting and detection into a complete system, which is convenient for uniform scheduling, and can improve the efficiency and real?time performance of protocol conversion effectively. The 51 serial SCM is used to complete the protocol conversion gateway, which can reduce the design cost.

Keywords: protocol conversion; gateway; Modbus RTU; Modbus TCP; message mechanism; data acquisition

0  引  言

随着人们对环保的重视程度越来越高,特别是像热电厂、铝厂、钢铁厂这样的烟气排放量大的厂站,环保局更是严格要求。本文主要针对热电厂的能耗以及烟气排放量等非实时数据进行研究。在电力监控系统中,电厂的烟气排放以及电能量相关数据被划分到生产控制大区内的安全二区即非实时区[1]。

现代大型的热电厂中主流采用的是DCS系统,而DCS系统中的数据信息协议格式和种类繁多,这对于数据的集中调度和处理产生一定影响,而且容易造成“信息孤岛”,难以实现设备间或者系统与设备间的信息交互,并且在一定程度上阻碍了运行管理体系的进一步发展[2]。传统方法花费大量的资金投入在现场的智能本地设备上,并且为每种协议格式的数据配一个专门的协议转换网关,最后汇集到数据库中。现场的智能设备和系统大部分支持的通信协议种类繁多,且系统具有分布性、异构性等特点,更加不利于数据的采集和集成[3]。虽然已经有公司研发出多协议转化网关,但由于价格昂贵且针对的协议种类领域较单一,无法满足热电厂实际需求。

考虑到数据的非实时性以及实际需求,本文设计采用51系列单片机,可在满足基本要求的前提下大大降低成本,增加备件数量。

首先将各个底层智能设备采集来的数据汇集到数据采集网关,由数据采集网关将各种串口传输的数据格式Modbus/RTU转化成统一的网口传输格式Modbus/TCP,再通过以太网发送给上位机。

1  数据采集网关

多协议数据采集网关主要通过在软件上实现多种协议到一种协议的转换,硬件设计上较简单,便于现场的安装和使用[4],同时软件层面引入单片机操作平台,便于后期维护和升级。

本文设计针对的是热电厂中DCS系统中底层设备的水、电、气数据进行汇总和传输,常用的协议有Modbus,M?bus以及DEL?645协议,本文设计就是针对上述三种协议进行转换,统一成Modbus /TCP,再借助以太网上传。

现在工业上使用最广泛的通信协议之一就是由Modicon于1979年发表的Modbus协议,该协议主要有Modbus /RTU和Modbus/TCP两种[5]。其中Modbus/RTU主要应用于串口传输,由于协议对功能码进行了严格定义,虽然传播速度不及RTU但是其数据安全性较高,而Modbus/TCP协议则是将Modbus /RTU和以太网相结合,以满足一些对数据传输速度有较高要求的用户需求[6]。除此以外,Modbus协议还是完全对外开放的一种通信协议[7]。

本文设计了一款基于经典的51单片机的数据采集网关,通过数据采集网关可以将底层采集上来的串口类型信息转换成统一的Modbus/TCP格式的报文信息,便于在网口上快速安全上传和管理[8]。而热电厂中常用的串口数据类型主要有Modbus协议、M?Bus协议以及DEL?645协议等。由于篇幅有限,本文只对Modbus/RTU与 Modbus/TCP协议转化进行详细阐述。

整体的实现方法如图1所示,其中接口机可以使用PC机代替。

在數据采集网关工作的过程中,数据采集网关主要的工作就是扫描检测串口和以太网端口,当有数据需要上传或者下达时,网关只需根据消息类型读取相应的数据,再通过消息机制调用相应的子函数进行协议转换。

当主机即上位机发送读取数据命令请求时,网关首先对请求消息进行分析,判断是否为广播消息。如果是,则读取所有端口消息;否则就会针对性地读取相应串口的状态,并且读取串口数据,先存储到单片机的外部存储设备中,再根据不同的数据类型执行相应的协议转换子程序,转换成统一的Modbus/TCP协议格式,借助TCP/IP协议栈通过以太网发送给上位机。

整个协议完成主要通过软件实现,那么就得考虑如何合理地利用有限的资源更好地实现协议转换功能,所以将整个协议转化的功能分解到一个小单片机的前后台架构上,这样既可以简化程序开发的过程,便于后期维护,又可以提高协议的转换效率。

2  数据采集网关的软件平台

本文设计采用的软件平台是一种简易的前后台架构,主要借鉴操作系统、手机的一些概念,在一个标准化的硬件基础上扩展一个标准化的软件平台,将一些常用功能集成到一起,形成一个完整的系统。基于该平台,可自主地增减功能以满足自己的实际需求。而该软件平台主要由三大结构——中断、节拍和大循环构成,贯穿整个框架的核心是消息机制。

2.1  三大结构

2.1.1  大循环

嵌入式程序设计时,常常采用中断的方式实现循环,这样做可以快速对外部或内部中断信号进行响应,但是容易受到错误的中断信号干扰。为了克服这一缺点,并且针对协议转换的特点,本设计采用了一种更为简单、主动、安全的循环方法——扫描。在大循环内通过不断地主动扫描,判断switch语句中各个case状态的变化,每种case对应一种消息类型,再根据不同消息类型调用不同的消息执行程序,从而降低了CPU的等待时间,提高了程序整体的效率。但由于扫描周期的局限性,这种主动的扫描方式只适合低速设备,并且当发生突发性事件时,只能等到下一个扫描周期到达才可以被执行。

2.1.2  节拍和中断

为了实现对协议转换时间的精确控制,本文设计采用由芯片内部时钟产生的节拍,有效地避免了由于转换时间的误差导致的错误。此外,可以通过对系统节拍进行速度分级提高系统的实时性,使系统更加稳定可靠地运行。

中断的使用则是用于分担CPU负担,帮助完成一些任务,减少CPU的占用率,同时也提高了整体程序的效率。

2.2  消息机制

消息机制作为协议转换的软件实现框架,主要是对已知的任务和事件进行预先定义,并且设置特定的消息处理函数,当检测到事件或者任务被触发,再调用相应的消息处理函数进行处理,可以简单地理解为“入消息”和“出消息”。

而将消息机制运行起来,需要先对其参数——消息队列进行设置。对消息的定义分为两个部分,即消息类型(MsgType)和消息值(Val)。

消息队列常被定义为16 bit无符号整形数据,将其高8位定义为消息类型,低8位定义为消息值。

消息类型根据实际需要在头文件中先定义并枚举出,方便对各种消息类型进行遍历,而消息值则作为相应的消息处理函数作参数。

首先完成协议转换相关程序的初始化,再执行大循环内的程序,大循环内通过主动扫描方式判断各消息的状态,当有消息被触发时,再调用相应功能函数实现消息调度。

取消息,顾名思义即通过取消息函数将消息队列中的16 bit消息取出,再执行该消息相应的程序。

同样,在执行取消息程序前,首先判断消息队列是否为空,若为空则返回0x0000;若不为空,则先保存中断使能状态,并且关中断,取出消息后,恢复中断使能状态后返回。

2.2.2  消息机制的应用

上述即为消息机制的执行过程。在程序初始化之后,消息队列默认为空,虽然循环体内一直会取消息并判断消息类型,但始终执行MSG_NULL程序段。

消息只能在大循环中被读取和执行,在中断和节拍中被接收,存入消息队列中。

消息机制可以有效解决由于运行时间较长而造成的延迟问题,避免消息堵塞。消息机制可以理解为一个连接器,先将运行时间较长的事件分解为多个小任务,当完成一个小任务后,再发起执行下一个小任务的消息。

同理,消息机制还可以用于解决函数嵌套的深度问题,当函数调用嵌套过深,会导致内存消耗过大而编译失败,特别是内存不是很宽裕的芯片,通过引入消息机制,可以把一个很深的函数调用问题分解为多个较短的函数调用问题,且函数入口都在大循环main里,有效地解决了内存不足的问题。

3  协议转换

3.1  协议转换原理

在协议转化前,需要对下位机发送来的串口数据的正确性进行分析。如果符合串口协议的规约再进行协议转化,否则返回错误信息。

协议转化的实现过程,简单地说就是通过对底层智能设备上传过来的串口协议报文进行分析,根据不同串口协议中的报文帧的差异性,将报文中相应的数据帧提取出来,再加上目的协议的报文头、校验位以及结束符等具体位数,通过以太网发送出去。

本文以Modbus/RTU与Modbus/TCP转换为例具体说明,首先分析两个协议报文结构的差异,如图2所示。

通過对报文帧的具体分析可知,实现Modbus/RTU到Modbus/TCP的转换如图3所示。

由于Modbus ASCII的协议格式和RTU差距不是很大,所以此处就不详细赘述。

Modbus采用主/从工作模式,其中主机只能有一个,而从机可以有多个,并且只有主机可以发送请求,从机根据主机的要求给出相应的响应[9]。整个数据采集网关的工作过程如图4所示。

3.2  数据采集网关软件部分介绍

数据采集网关的软件框架,主要函数有以下几个:

boot.c:主程序入口,大循环通过内部的while()函数实现;

common.h:包含了用到的全局头文件;

rtu2tcp.c:实现Modbus/RTU到TCP的转换;

tcp2rtu.c:实现Modbus/TCP到RTU的转换;

uIP.c和uIP.h:将Modbus/TCP网口数据通过uIP协议栈发送到网络上。

4  uIP协议栈

数据采集网关将底层下位机的数据类型Modbus RTU转化成Modbus TCP后,再借助以太网向上传送,此处可借助TCP/IP协议栈实现。而传统的TCP/IP协议栈实现起来过程较为复杂且实时性较差,考虑到系统硬件资源的限制,所以本文引入轻量级的TCP/IP协议栈——uIP协议栈,以实现以太网传输功能[10]。

uIP协议栈是一种免费、可实现的极小的TCP/IP协议栈,可以使用于由8位或16位微处理器构建的嵌入式系统[11]。

5  结  语

目前,市场上的协议转换网关主要针对某些固定的应用需求,协议种类比较单一,且只能实现协议间一对一的转换。本文设计是针对新疆某热电厂运行管理的现状提出的,网关具有支持多种串口设备组网,以及能建立串口与网口间桥梁的特点。

参考文献

[1] 唐俊,蒋健,谢申喜.基于树莓派的能耗数据采集网关设计[J].测控技术,2017(3):98?100.

TANG Jun, JIANG Jian, XIE Shenxi. Design of energy consumption data acquisition gateway based on Raspberry Pi [J]. Measurement & control technology, 2017(3): 98?100.

[2] 毛苏杭,宋蕴璞,刘林.基于工业网关的钢铁企业实时数据采集技术[J].物联网技术,2015,5(12):10?12.

MAO Suhang, SONG Yunpu, LIU Lin. Real?time data acquisition technology of steel enterprises based on industrial gateways [J]. Internet of Things technologies, 2015, 5(12): 10?12.

[3] 霍昕,关丽嘉.如何有效提升信令采集网关的数据完整性[J].中国新通信,2015(13):64.

HUO Xin, GUAN Lijia. How to effectively improve the data integrity of the signal acquisition gateway [J]. China new communications, 2015(13): 64.

[4] 李琦,张康,王月明.基于CoAP协议的数据采集网关设计[J].电子技术应用,2015(6):154?156.

LI Qi, ZHANG Kang, WANG Yueming. Design of data acquisition gateway based on CoAP protocol [J]. Electronic technology application, 2015(6): 154?156.

[5] XU Sen, REN Jia, SU Jie. Design of the Modbus communication through serial port in QNX operation system [C]// Procee?dings of 2008 Computing, Communication, Control, and Ma?nagement Conference. Guangzhou, China: IEEE, 2008: 434?438.

[6] KUANG Jian, WANG Guibao, BIAN Jiali. A Modbus protocol stack compatible with RTU/TCP frames and embedded application [M]// ZHU Min. Business, economic, financial sciences. Berlin: Springer?Verlag, 2012: 765?770.

[7] 陈岩.安全隔离网关对数据库数据的采集在宣钢的应用[J].通讯世界,2015(11):266.

CHEN Yan. The application of the security isolation gateway to the collection of database data in Xuanhua Iron and Steel Co., Ltd. [J]. Communications world, 2015(11): 266.

[8] 刘清茂,万春红,杨彩玲,等.基于ZigBee的水泥生产过程电量无线采集[J].电气技术,2015(3):85?86.

LIU Qingmao, WAN Chunhong, YANG Cailing, et al. Wireless collection of electricity in cement production process based on ZigBee [J]. Electric technology, 2015(3): 85?86.

[9] 郭蓝天.数据采集网关的研制及其在中型热电厂运行管理系统中的应用[D].青岛:青岛科技大学,2012.

GUO Lantian. Development of data acquisition gateway and its application in medium?sized thermal power plant operation ma?nagement system [D]. Qingdao: Qingdao University of Science and Technology, 2012.

[10] 吴磊,李振亮.一种网络温湿度控制器设计与实现[J].计算机测量与控制,2014(10):3165?3167.

WU Lei, LI Zhenliang. Design and implementation of a network temperature and humidity controller [J]. Computer measurement & control, 2014(10): 3165?3167.

[11] 谢文娣.基于DSP的嵌入式uIP TCP/IP协议栈的应用研究[D].南京:南京邮电大学,2012.

XIE Wendi. Application research of embedded uIP TCP/IP protocol stack based on DSP [D]. Nanjing: Nanjing University of Posts and Telecommunications, 2012.

猜你喜欢
热电厂中断网关
跟踪导练(二)(5)
千里移防,卫勤保障不中断
自动化技术在热电厂电气中的应用
某热电厂风机电机节能技术改造
关于金山热电厂节能减排途径的探索
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计
基于Zigbee与TCP的物联网网关设计
浅述PLC与DCS的特点及在热电厂中应用分析