基于虚拟设备模型的工业协议转换方法研究

2023-12-26 04:46卞志国汤东阳曹栋
智能制造 2023年6期
关键词:插件网关客户端

卞志国,汤东阳,曹栋

(1.南京工业职业技术大学计算机与软件学院,江苏 南京 210023;2.江苏省工业软件工程技术研究开发中心,江苏南京 210023)

1 引言

在工业生产领域,由于自动化设备厂商和相关国际标准化组织的不妥协,导致了现场总线和工业以太网均出现了多种标准共存的局面,标准之间互不兼容,导致不同的工控协议使用不同的实现方法,数据组织方式、语义表示也不尽相同[1-2]。针对当前工业互联网边缘计算基础网关与软件平台多协议交互形式存在普适性低、缺乏自适应能力等问题[3-7],本文研究并开发在工业互联网边缘计算场景下,多种工控协议的自适应协议交互模型,解决具有有限联网能力的设备之间进行数据交互过程中存在的瓶颈问题,从而实现该类设备之间通过协议转换进行数据交互。

2 研究与方法

2.1 协议转换流程设计

本文设计了一种满足读、写、订阅/发布、设备状态查询等功能的普适性数据交互语义模型,并利用Golang语言实现跨平台的交互数据协议转换服务。该服务北向与标准化协议客户端通过HTTP 协议进行交互,负责将获取的标准化协议数据转换为普适性数据交互语义模型,南向与非标准化协议的智能设备或边缘云平台进行交互,将获取的非标准化协议数据(如智能传感器、无线设备、智能工业云平台)转换为普适性数据交互语义模型,从而为客户端提供统一的数据输入/输出协议,系统总体架构如图1 所示。

图1 跨平台交互数据协议转换服务数据流

协议转换网关实现了web 服务功能,向客户端提供RESTful 风格的API 接口,客户端通过向协议转换网关请求数据,从而实现设备数据的读、写、订阅/发布。协议转换网关接收到客户端发送的请求后,通过查询其管理的设备资源模型,进行相应的操作,并向客户端返回响应。

2.2 设备资源模型

(1)资源模型文件 本文采用统一的设备资源模型描述文件定义终端设备的数据资源,支持JSON 和TOML两种文件格式。以Modbus 设备为例,其中Name 定义了设备的名称,DebiceId 定义设备的ID 号,对于连接到该网关的设备而言,该ID 号应该是唯一的,Protocol 定义了设备支持的工业协议,本文采用动态加载的方式,支持Modbus、OPC UA、MQTT 三种协议。BaseInfo 给出了该设备所特有的信息,如Modbus 设备要求给出设备IP、设备端口号、从设备号、寄存器节点信息,其中寄存器节点信息表Nodes 定义了该设备所有可访问寄存器数据的信息,包括地址、数据类型、数据长度,BaseInfo 部分根据设备协议的不同定义相应的字段。

(2)插件式协议转换模块 本文采用插件模块实现非标准工业协议的转换,开发了OPC UA、Modbus、MQTT 三种常用协议转换模块。

本文采用Golang 作为系统开发工具,作为编译型的开发语言,Golang 本身并不支持通过源代码实现动态加载和更新。但Golang 官方提供了Plugin 技术,实现动态加载。即通过动态共享对象封装操作系统底层接口,对外提供统一的调用接口,以供上层应用程序调用,相当于提供了一层兼容层。

首先定义插件模块基类,在此基类的基础上,派生出对应协议转换模块,插件模块关系如图2 所示。

图2 插件模块关系

在插件模块基类中,定义了设备的基础信息,如设备名称、ID 号、是否在线等,定义了共性操作方法,如初始化模块,断开连接,处理WebSocket 请求,处理HTTP 请求等。非标准协议转换插件均派生于该基类,并根据非标准协议的具体操作规程,增加协议特有的操作,改写基类中相应的函数等。

其次,在转换软件启动时,扫描插件模块文件夹,依次加载对应的插件模块,协议转换软件服务的总活动流程如图3 所示。

图3 协议转换软件服务的总活动流程

2.3 协议转换软件设计

协议转换软件服务有两部分组成,一是协议转换软件网关主线程,二是挂载在该服务器的虚拟设备线程。

软件主线程启动后,首先加载协议转换插件,获取该服务支持的非标准协议类型;然后从配置文件加载设备资源模型,构建虚拟设备;最后启动web 服务,等待客户端请求。服务端接收到客户端请求后,首先解析请求数据,将对应的请求分配到对应的虚拟设备,如果对应的虚拟设备不存在,则直接返回错误信息,否则将对应的服务请求转发至对应的虚拟设备线程;接着,虚拟设备线程将基于普适协议的请求数据转换为对应的设备协议数据,对相应的设备进行读、写、订阅等操作,并获取相应的返回数据;最后,将返回的非标准协议数据转换为标准协议数据,并返回到请求客户端。

3 测试与分析

按照上述总体架构搭建测试系统,其中协议转换网关分别部署于PC 机和RaspberryPi 3B,PC 机配置运行于Intel(R)Core(TM)i7-10750H CPU @ 2.60GHz,32G内存机器上的WSL Ubuntu20.04 子系统;RaspberryPi 3B配 置BCM2835,ARMv7 Processor rev 4(v7l),内 存1G。

利用Postman 对服务器进行不间断写操作访问100次,统计API 响应时间,其平均每次API 响应时间见表1。

表1 API 请求响应时间(单位:ms)

API 一次完整的写操作时间包括三个部分:一是客户端与web 服务器之间消耗的时间,二是web 服务器与设备之间消耗的时间,三是协议转换的时间,如图4 所示。

因此表1 中ping 的时间只有t1+t6,而访问设备的时间包括t1+t2+t3+t4+t5+t6,所以平均一次协议转换时间不超过(t3+t4+t5+t6)/2,在本次测试中,平均转换时间见表2。

表2 平均转换时间(单位:ms)

从表2 可以看出,Modbus 耗时最长,这是因为Modbus 设备端对寄存器的读写是串行的,对设备的访问相对较耗时间;MQTT 耗时最短,因为MQTT 写完后并不需要等待返回数据因此相对速度较快。

4 结束语

本文提出的协议转换方案优点主要体现在五个方面:①Golang 语言开发,部署方便,并发效率高;②设备协议插件化,便于扩展新的设备协议;③利用多线程技术及设备描述文件虚拟化设备,系统适应性强,响应速度快;④系统采用RESTful API 接口和WebSocket 长连接设计,便于多种类型客户端操作各类协议设备;⑤系统运行环境适应性强,可运行于普通计算机平台或树莓派等嵌入式系统。

猜你喜欢
插件网关客户端
自编插件完善App Inventor与乐高机器人通信
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
基于jQUerY的自定义插件开发
MapWindowGIS插件机制及应用
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”
基于Revit MEP的插件制作探讨
一种实时高效的伺服控制网关设计