一种通用工业物联网数据采集与控制软件的实现

2021-09-22 07:44孙建庭班莹
电子技术与软件工程 2021年13期
关键词:轮询规约插件

孙建庭 班莹

(水利部南京水利水文自动化研究所 江苏省南京市 210012)

1 引言

数据采集和控制系统一种用于实时处理、过程控制以及高速数据采集等的系统。随着工业4.0的发展,工业物联网近几年发展迅速,不断改变着传统工业领域的发展方向。但无论智能制造发展到何种程度,数据采集与控制都是生产中最实际最高频的需求,也是工业4.0的先决条件。

由于存在大量异构的通信规范,物联设备不同厂家、不同品牌、不同型号的信息获取各种各样,单独为每一个设备编写采集控制程序费时费力,因此需要一种通用的框架,尽可能地减少软件开发成本。

2 软件结构

软件结构如图1所示,由数据模块、规约模块、通信模块、控制模块四个部分组成。各模块相互独立,模块之间通过接口API调用,完成相互关联。

2.1 数据模块

在数据模块中,用数据对象表示数据。数据对象可以理解为比传统变量具有更多功能的对象变量,一个数据对象通常包括:对象名称、数据类型、实时值、时间邮戳、描述等信息。大多数情况下只需使用数据对象的名称来直接操作数据对象,如同使用变量一样来使用数据对象。

一个数据对象包括更新(UPDATE)、增加(INSERT)、删除(DELETE)三种类型的触发器,其它模块可按单个对象的粒度绑定到数据对象触发器。例如定义一个数据对象为某设备的开关动作,规约模块绑定该对象的UPDATE触发器,当该对象的值被置为ON时,触发规约模块生成控制命令,通过通讯模块将命令文本下发到设备。

控制模块可通过脚本的方式绑定触发器执行触发操作,如当某数据对象的值改变时进行相关计算等。

数据模块是软件的数据处理中心。软件各个部分均以实时数据为公用区交换数据,实现各个部分协调动作。

2.2 规约模块

参考OSI七层模型,规约模块实现应用层和表示层的功能,即数据报文的编码和解析。对上,规约模块将数据模块中相应的实时数据编码成报文通过通信模块发送出去;对下,规约模块将通信模块接收到的报文解析成各种数据存储到数据模块中。规约模块负责报文的完整性和一致性检查。

规约模块提供一组接口函数供调度处理程序调用,包括:启动、停止、时间片轮询、数据推送处理、数据通知函数。

2.3 通信模块

参考OSI七层模型,通信模块实现会话层和传输层的功能,提供处于网络连接中的两台计算机之间或计算机与设备之间的数据传输。通信模块实现了RS232/422/485、Tcp、Udp、Port IO等通信协议。

通信模块负责设备的打开、关闭、读写等操作,并实现连接故障断开后自动重连,向上层通知读写错误等。通信模块可以有同步、异步两种工作模式,同步模式下由规约模块调用通信模块读写函数执行读写操作;异步模式由通信模块主动监听设备,当设备数据到达时调用规约模块的数据通知函数。

通信模块将提供了一组接口函数供规约模块和控制模块调用,包括:打开设备、关闭设备、读设备、写设备、设备IO命令、异步通知函数等。

图1:软件结构

2.4 控制模块

控制模块是微内核服务的核心,负责资源管理、为其它模块提供运行服务环境、进行各项工作的调度等。控制模块提供以下几个方面的功能支持:模块加载、事务分发、事务调度、资源管理、脚本管理、事件日志等功能。

控制模块在程序初始化时根据配置文件加载插件模块,分配线程环境,创建对象实例;当运行事件发生时,根据事件的优先级进行调用相应的处理函数;对象实例销毁时,负责内存回收;调度脚本执行等。

3 关键技术

3.1 微内核架构

微内核是内核的一种精简形式。将通常与内核集成在一起的系统服务层被分离出来,变成可以根据需求加入选件,这样就可提供更好的可扩展性和更加有效的应用环境。使用微内核设计,对系统进行升级,只要用新模块替换旧模块,不需要改变整个操作系统。

微内核架构核心仅负责事务分发、调度处理及资源管理,通过插件向核心应用添加额外的功能,提供了可扩展性和功能的独立和分离。

按照接口不变原则,微内核框架设计步骤如下:

(1)设计标准统一的插件接口;

(2)根据配置文件加载相应插件(Windows系统下为动态链接库dll),获取每个dll导出函数;

(3)根据操作调用相应函数。

3.2 通信接口的标准化

在物联网应用中,计算机与外设或计算机之间的通信接口通常有网络接口、串行通信接口、IO板卡等,相应的通信协议有TCP、UDP、RS232/422/485、PORT IO。在 Unix和其衍生系统中,一切都可以看做文件,因此参照Unix系统文件的概念,通信接口可以标准化为打开、关闭、读写等几个函数。

3.3 通信规约的标准化

通信规约是为了保证数据通信系统中通信双方能有效和可靠地通信,而规定的双方应共同遵守的一系列约定。在物联网应用中,通信规约表现为将本方的数据或命令按规定的格式发送给对方,将接收到对方的报文解析为数据或命令动作。

通信规约函数按调用时机可标准化为:在通信接口打开后调用启动函数,进行规约的初始化操作,如通信双方的连接握手等;调用轮询函数轮询读写设备或通设备数据到达后调用数据推送处理函数;数据模块数据对象改变后调用数据通知函数;设备模块关闭时调用停止函数进行规约的终止,如关闭挥手等。

3.4 轮询模式和推送模式

软件使用多线程模式,每个通信接口实例运行在自己的线程环境中。

在轮询模式下,每个通信接口实例维护一个轮询定时器,按时间片检查最近的任务是否到期,调用规约模块轮询函数。

在推送模式下,通信接口实例线程监听设备是否有数据到达,有数据到来就接收数据,回调处理函数进行解析。

如果设备通信故障则关闭设备,启动重新连接设备的定时器,定期进行设备重连。

3.5 嵌入式脚本

脚本语言是一种解释性语言,不需要编译,可以直接用,由解释器来负责解释。脚本语言一般都是以文本形式存在,简单、易学、易用。通过脚本语言可以动态改变主程序的逻辑行为,而不需要重新编译整个主程序。

Lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

Lua的主要特性就是它的可扩展性。Lua除了是一种可扩展的语言,还是一种“胶水语言”,支持一种基于组件的开发方法:通过粘合现有的高层组件来创建新的应用程序。而所粘合的组件可以是已编译好的,也可以是静态类型语言编写的。另外,不同于其他胶水语言,Lua还可以适配、改造组件。

软件使用Lua脚本语言作为扩展,将自身一些重要、安全的功能封装成脚本,让脚本解释器来控制使用这些功能,实现软件系统自身功能的重利用。

4 主要优点

(1)易于扩展。由于采用微内核架构,各插件模块功能相对独立,当开发了新的模块时,只须进行相应的配置即可。同时也改善了系统的灵活性,不仅可增加新的功能,还可修改原有功能,删除无用功能。新的功能以插件的形式给出,是相对独立的,不影响整个系统框架和其它的功能。甚至可以把扩展软件的功能开放给用户或第三方厂商,以达到最大限度的功能扩展。

(2)易于维护。易于维护体现在对插件功能的维护。当一个系统功能修改或发现问题时,可以以插件这样的最小粒度更新,一是能尽可能地降低维护成本,二是修改后的功能对其它完整功能带来的影响降到最低。软件模块插件体现为独立的dll,这就使得开发人员修改功能时只重新编译相关的dll即可。

(3)高效灵活。软件将一部分逻辑功能外置并脚本化,采用嵌入脚本Lua作为扩展,增强应用逻辑的可配置性和适应性,对程序逻辑的修改更加方便。某些功能的实现可以只用脚本来开发,不用频繁的编译/重启程序,只需重新加载lua脚本即可,提高了开发效率。

5 应用示例

某水质自动站需对上游来水水量、水质的全面实时监测,并将监测数据发送至巡测基地,实现基地远程查看测站数据,全面监测省界水量、水质变化。

主要功能需求如下:

(1)实时数据管理。在内存中建立测点信息(测点名、量程、单位、实时值等),按测点名建立索引表,支持按测点名称快速存取;

(2)数据采集。实时采集各种仪表数据、电气控制、PLC、或其他类型传感器的数据;

(3)设备控制。控制命令缓存和下发。将组态软件发送的控制指令根据设备的规约下发到设备,并监视设备的指令执行状态;

(4)数据计算。对采集的原始数据,按相应的公式进行计算;

(5)报警判别及管理。根据测点的量程上、下限等信息产生报警信息,对报警信息进行分类、存储等管理;

(6)事件日志处理。对系统运行过程中产生的各种事件生成日志;

(7)历史数据存储。将数据写入到历史数据库;

(8)与其它软件交互数据。

实现步骤如下:

(1)数据模块:

1.配置水质、水量监测点变量,配置计算点变量;

2.配置设备控制命令变量;

(2)规约模块:

1.复用其它项目编写的通用Mobus规约插件;

2.编写数据入库插件;

3.编写外部数据交互规约插件;

(3)控制模块:

1.编写公式计算脚本,绑定相关对象变量UPDATE事件实时触发计算;

2.编写报警判别脚本,绑定相关对象变量UPDATE事件实时触发报警判别;

(4)通讯模块:

1.配置RS232通讯接口项,绑定到Mobus规约插件,实现从计算机串口轮询读取设备数据,并接收其它软件交互数据触发控制命令;

2.配置虚拟设备接口配置项,绑定到数据入库插件,实现定时将历史数据写入数据库;

3.配置TCP通讯接口配置项,绑定到数据交互规约插件,接收其它软件读数据请求和发送控制命令。

6 结论

从工业物理网底层的数据采集与控制遇到的传输接口不一致、协议不统一、相关软件开发难度大等问题出发,开发了一种通用的工业物理网数据采集与控制软件,基于模块化设计、采用微内核架构和嵌入式脚本技术,极大的拓展了软件的应用范围,目前应用于多个物联网系统中,效果显著,具有良好的应用前景。

猜你喜欢
轮询规约插件
自编插件完善App Inventor与乐高机器人通信
基于等概率的ASON业务授权设计∗
电力系统通信规约库抽象设计与实现
一种在复杂环境中支持容错的高性能规约框架
一种改进的LLL模糊度规约算法
基于jQUerY的自定义插件开发
依托站点状态的两级轮询控制系统时延特性分析
利用时间轮询方式操作DDR3实现多模式下数据重排
MapWindowGIS插件机制及应用
基于Revit MEP的插件制作探讨