基于工业物联网的数据采集软件设计
2022-05-11赵磊
赵磊
[摘 要]文章设计了基于工业物联网的数据采集软件,包括软件的架构设计、数据库设计、软件初始设计、采集通道设计、报警预警设计、数据存储设计、数据接口设计等,可广泛应用于各类工业数据采集应用场景,实现实时数据采集、历史数据存储、报警预警、数据交互等功能,为满足工业物联网领域的数据采集需求提供了一种新的软件设计。
[关键词]工业;物联网;数据采集;采集通道
[中图分类号]TN929.5 [文献标志码]A [文章编号]2095–6487(2022)03–0–03
Design of Data Acquisition Software based on Industrial Internet of Things
Zhao Lei
[Abstract]This paper designs data acquisition software based on the Industrial Internet of Things, including software architecture design, database design, software initial design, acquisition channel design, alarm warning design, data storage design, data interface design, etc., which can be widely used in various types of The industrial data collection application scenario realizes functions such as real-time data collection, historical data storage, alarm warning, data interaction, etc., and provides a new software design to meet the data collection needs of the industrial Internet of Things.
[Keywords]industry; Internet of things; data acquisition; acquisition channel
在互联网技术、通讯技术、计算机技术等飞速发展的时代,工业物联网领域也在飞速发展,过去20年间组态软件在工业数据采集方面得到了广泛应用,但随着技术的发展,组态软件众多问题已经暴露,比如功能繁冗、安装环境要求高、硬件服务器配置要求高、学习成本高、应用成本高等问题。本文为工业物联网领域在数据采集方面提供更优的软件设计,力求解决工业物联网领域在数据采集方面的若干关键技术问题,为进一步的广泛应用打下良好的基础,促进我国工业物联网的进一步发展。
本设计具有对工业传感器、工业设备及相关系统进行数据采集、处理、存储、展示等功能,支持的通信协议有IEC104、ModbusTCP、ModbusRTU、OPC、西门子S7等,具有如下技术特点:①采集内容及通信方式灵活可配置;②支持多种通信协议,应用范围广;③轻量级设计,内核精简,占用硬件资源少,响应速度快、性能稳定;④变量采用“模板化”设计,可复用,实际应用中使得系统搭建简单快速;⑤软件支持跨平台部署,支持Windows及Linux。
1 软件架构设计
基于工业物联网的数据采集软件设计主要包括软件初始设计、采集通道设计、报警预警设计、数据存储设计、数據接口设计,其中软件初始设计包括变量模板初始化设计、监控对象初始化设计、采集通道初始化设计,采集通道设计包括IEC104采集通道设计、ModbusTCP采集通道设计、ModbusRTU采集通道设计、OPC采集通道设计、SIMATIC_S7采集通道设计,数据存储设计包括实时数据存储设计和历史数据存储设计,数据接口设计包括实时数据接口设计和遥控遥调接口设计,如图1所示。
2 数据库设计
软件的系统数据存储于关系数据库中,主要的表有采集通道表、变量模板表、监控对象表、变量IO信息表、报警预警记录表、采集设备表。
采集通道表为描述采集通道的属性表,主要包括通信帧、通信间隔、通信协议、端口信息、类型。
变量模板表为描述变量模板的属性表,每1条记录都代表1个变量,主要包括变量名、功能码、变量类型、变量模板名、字节长度、基数、系数、数据地址、数据类型、触发规则、存储规则。
监控对象表为描述监控对象的属性表,每1条记录都代表1个监控对象,主要包括监控对象的编号、设备地址、变量模板名、类型、采集通道序号。
变量I/O信息表为描述变量I/O信息的属性表,该表主要用于计算变量的报警预警功能,主要包括报警上下限值、预警上下限值、报警是否推送、报警预警信息、延时时间。
报警预警记录表为报警预警信息的历史记录表,主要包括报警预警发生时间、确认时间、恢复时间、报警预警值、阈值、报警级别。
采集设备表为采集设备的属性表,主要包括设备地址、间隔、类型、超时时间、安装位置、安装时间、生产厂家。
3 软件详细设计
3.1 软件初始设计
软件启动时,首先需要对系统配置信息开启初始化功能,主要包括变量模板初始化、监控对象初始化、采集通道初始化。
变量模板初始化需要从变量模板表中读取所有变量,再将变量分配到相应的变量模板上,再根据变量的分组信息自动建立历史数据表;监控对象初始化需要从监控对象表中取出所有监控对象,根据监控对象所对应的变量模板赋予该监控对象的变量,同时读取变量IO信息中对应的信息来初始化监控对象的报警预警属性;采集通道初始化需要从采集通道表中取出所有采集通道,首先初始化通讯属性(包括通信协议、通信帧等),然后初始化该采集通道对应的监控对象(可以是1个采集通道对应多个监控对象),最后等待采集通道启动采集。
3.2 采集通道设计
采集通道设计是数据采集软件的核心设计,主要用于解析不同通信协议的数据,然后对数据进行报警预警处理、数据存储处理、数据接口处理等。软件支持的通信协议有IEC104、ModbusTCP、ModbusRTU、OPC、西门子S7等,采用多线程方式进行数据采集,每个采集通道均支持遥控遥调操作。每种采集通道的设计均围绕着该采集通道的通信协议进行,大体流程类似,但每种采集通道都会根据各自通信协议的特点,有各自独特的设计。
3.2.1 IEC104采集通道设计
采集通道线程启动后,首先根据通道的连接属性(IP和端口)去连接设备,如果连接不上10 s后继续尝试建立连接直至与设备连接上,然后发送采集通道的所有帧,发送之后等待数据返回,先处理返回的历史数据,再解析设备的实时数据,数据解析完毕之后将最新的数据更新到实时库缓存中,最后将历史数据存到历史库中。
需要特别说明的是,IEC104采集通道的报警信息是下位机设备主动上送的,任何时候都有可能收到主动上送的报警,收到报警后对报警进行处理。
3.2.2 ModbusTCP采集通道设计
采集通道线程启动后,首先根据通道的连接属性(IP和端口)去连接设备,如果连接不上5s后继续尝试建立连接直至与设备连接上,然后发送1帧数据请求帧,发送之后等待该帧数据响应(如果响应超时则重发),然后解析响应数据,等所有帧都发送并解析响应完毕后,将最新的数据更新到实时库缓存中,最后将历史数据存到历史库中。
3.2.3 ModbusRTU采集通道设计
ModbusRTU采集通道与ModbusTCP类似,都属于modbus协议,区别主要是ModbusRTU协议是基于串口通讯的,所以本软件的设计除了在连接属性上与ModbusTCP不同外,在功能码、帧格式和数据采集流程基本一致。
3.2.4 OPC采集通道设计
采集通道线程启动后,首先根据IP和OPC服务初始化,然后通过采集通道的帧配置初始化OPC分组,再将OPC分组注册OPC异步监听器,之后该采集通道进行异步数据采集,采集到数据后进行解析处理,最后更新实时库和存储历史数据。
3.2.5 SIMATIC_S7采集通道设计
采集通道线程启动后,首先根据通道的连接属性(IP和端口)去连接设备,如果连接不成功继续尝试建立连接直至与设备连接上,然后发送数据请求帧(如果响应超时则重发),然后解析响应数据,解析完毕后将最新的数据更新到实时库缓存中,最后将历史数据存到历史库中。
3.3 报警预警设计
报警预警模块是软件的重要组成部分,软件的遥测、遥信变量支持报警预警功能,其中遥信变量支持的报警类型有:SOE报警、故障报警和遥信变位报警,遥测变量支持的报警类型为超上上限报警、超上限预警、超下限预警、超下下限报警4种越限类型,具体的配置及说明如下:①遥信SOE报警,由前端设备推送的报警;②遥信故障报警,遥信的1报警或0报警;③遥信变位报警,遥信由0变1或由1变0报警;④遥测越限报警,为超上上限报警、超上限预警、超下限预警、超下下限报警4种类型。报警预警流程如图2所示。
3.4 数据存储设计
3.4.1 实时数据存储设计
实时数据存储采用实时库实现,本文实时库采用Redis,Redis是1个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis只存储数据的最新1条数据,当数据有变化时则覆盖该数据。在Redis中的数据格式以HashMap为主,具体格式为:
监控对象编号 变量名 变量值
监控对象编号 变量名:DATE 变量值时间戳
3.4.2 历史数据存储设计
历史数据存储用关系型数据库实现,主流关系型数据库(如MySQL、Oracle、PostgreSQL、SQL Server等)都可以作为软件的历史存储数据库。
历史库的数据表是在软件初始化时自动建立的,根据变量模板的分组信息,每1个分组对应一个历史数据表,关联该变量模板的每1个监控对象的历史数据就按照分组信息以固定时间间隔存入到自动建立的数据库表中。只有变量分组中的遥测、遥信变量才会被自动创建到表中。变量的存储间隔在t_var_group_cfg表中进行配置,单位为分钟,-1表示不存储历史数据。
3.5 数据接口设计
3.5.1 实时数据接口设计
软件提供基于SOAP的WebService服务接口来访问实时数据,软件提供的接口地址为http://IP地址:8085/services/ws,主要是通过监控对象编号与变量名来获取实时数据。
接口设计为:
public interface RtData {
String getValue(@QueryParam("code") String code,
@QueryParam("varName") String varName);
}
3.5.2 遥控遥调接口设计
软件提供基于RESTful的WebService服务接口来进行遥控遥调操作,接口地址为http://IP地址:8085/services/rs。
主要通过采集通道序号、监控对象编号、变量名和操作值来调用接口,其中遥调接口的操作值是整型,遥控接口的操作值是布尔型。
public interface RemoteSetting{
String yt(@QueryParam("channelIndex") int channelIndex,
@QueryParam("endCode") String endCode,
@QueryParam("varName") String varName,
@QueryParam("value") int value);
String yk(@QueryParam("channelIndex") int channelIndex,
@QueryParam("endCode") String endCode,
@QueryParam("varName") String varName,
@QueryParam("value") boolean value);
}
4 结语
本文设计的基于工业物联网的数据采集软件为工业领域提供了配置灵活、模板化、轻量级、性能稳定的软件解决方案,可广泛应用于各类工业数据采集应用场景,在某些工业领域上通过定制和深入的开发可取代组态软件进行数据采集与监视控制工作,具有很好的推广前景和应用价值。
参考文献
[1] 张建雄,吴晓丽,杨震,等.基于工业物联网的工业数据采集技术研究与应用[J].电信科学,2018,34(10):124-129.
[2] 马平,季德亨,王智超.工业互联网数据监控系统架构的设计与实现[J].工业控制计算机,2019,32(8):7-9.
[3] 李君,邱君降,柳楊,等.工业互联网平台评价指标体系构建与应用研究[J].中国科技论坛,2018(12):70-86.
[4] 周剑,肖琳琳.工业互联网平台发展现状、趋势与对策[J].智慧中国,2017(12):56-58.