时间:2024-05-04
施永贵
(福建和盛高科技产业有限公司,福建 福州 350100)
网关作为物联网技术的核心组成部件,具有承上启下的作用,是用于连接感知层网络与上层公共网络的纽带,也被视为一种协议转换器。网关正朝着效率、实时性、抗干扰能力逐渐提升的方向发展,应用的场景也越来越多,在农业、工业、交通、智慧电网等诸多场景都有一席之地。应用场景的增加导致网关种类随之增多,如家居智能网关、工业数据网关和交通管控网关等。网关的功能是相通的,主要用于协议转换、数据交互、网络互联互通,区别在于各网关的应用场景不同。
传统网关的创建方法是把现场设备的数据先收集到网关节点,利用内嵌协议分析转换器将处理完毕的数据通过MQTT物联网协议传送到客户自定义的云平台。存在支持的数据协议较为单一、应用范围较小、开放性不足等问题,当现场使用的设备和数据协议发生改变时,需要重新对网关程序进行二次开发,花费大量的人力物力。针对此类问题,设计一种支持多种接入协议、具备边缘计算特性以提高网关的通用性、数据采集可配置以减少数据冗余,避免浪费传输带宽的物联网网关就变得十分重要。
物联网网关整体框架可分为五层,如图1所示。
图1 物联网网关总体设计框架
感知层作为物联网关框架的第一层,用于采集各类接入网关设备数据,并将采集的数据上传给数据处理层。
数据处理层对感知层上传的数据包进行解析和协议转换,将数据分析成标准格式后交给边缘计算层处理。
边缘计算层作为物联网网关的核心层,需要对转换后的标准格式数据进行边缘计算,包括数据运算、逻辑判断、信号联动和故障研判。边缘计算的内容需要预先设定,计算方法由用户设定。
传输层用于传输感知层采集的数据,使用4G网络传输。
应用层是指对采集设备的数据进行本地动态曲线显示,网关的本地显示使用微信小程序实现。
物联网网关硬件平台由边缘计算核心板EC Core-L-1和网关底板和扩展单片机STM32F4007IG组成,其连接和软件架构如图2和图3所示。EC Core-L-1板卡构架了双嵌入式操作系统:网络OS系统和容器Linux 系统。该板卡主要含有内存、NAND FLASH、DDR3、RTC实时时钟、LTE 4G模块、WiFi模块、电源管理模块。扩展单片机能扩接丰富的模块,如USB接口模块、(PLC)电力载波模块、以太网接口模块、LTE模块。外设通过USB和GPIO接口连接扩展单片机,扩展单片机作为USB Device设备,核心板作为USB Host控制器,实现核心板接口的扩展。
图2 扩展单片机连接
图3 核心板与扩展单片机软件架构
配置客户端需要实现采集网关及其下联设备的参数及信息,因此界面需要包含多个输入框便于填写信息,以满足不同的配置要求。首先,设备配置文件的参数输入,填入每个设备的身份认证(三元组);然后,填入设备的数据协议参数(目前为Modbus协议);最后,填入设备寄存器的对应地址及其含义和计算系数,填写完成后保存。具体工作流程如图4所示。
图4 配置客户端工作流程
根据配置客户端的工作流程,设计配置客户端各界面,客户端设备管理界面设计如图5所示。界面第一行输入框为网关的参数信息,这些参数大多在阿里云物联网云平台创建网关设备时生成,是网关连接阿里云物联网平台的唯一身份认证(三元组)。填写完参数后需要点击按钮更新并保存网关信息。界面左下部分的区域为设备参数输入框,第一个输入框的参数为Modbus_RTU或Modbus_TCP,选择Modbus_RTU之后就可以选择接口类型(485或PLC),若选择485类型,则在设备参数区域的第三行输入串口信息;选择 PLC则输入第四行的IP信息。同理,当第一个输入框选择Modbus_TCP时,只需输入第四行的IP信息。接下来输入设备属性的标识符和地址,按照设备使用说明中的信息填写。界面右边部分是设备配置文件的菜单栏,可以看到各接口下的设备数量。
图5 配置客户端设备管理界面
配置客户端边缘计算界面如图6所示。左边显示已经创建好的计算节点,右边为添加计算节点的部分。根据边缘计算的设计,将一串长长的计算公式拆分成两两一组的计算节点,将每个计算节点的信息输入框中,然后点击“插入”即可,添加完成后选择“保存”,生成边缘计算的配置文件。
图6 配置客户端边缘计算界面
配置客户端联动界面如图7所示。左边显示创建好的联动任务,右边是输入联动任务的操作界面。本配置客户端将联动任务拆分成监测设备和联动设备,当监测设备的目标值达到阈值时触发联动设备动作。添加联动任务的方法与添加边缘计算方法相似,即插入、保存。
图7 配置客户端联动界面
感知层主要负责识别网关连接的设备并采集数据。本设计使用多个线程采集不同接口下连接设备的数据。首先读取配置客户端生成配置文件,判断类型后将数据分别复制到不同的JSON对象中。分完大类后将提取每个类型的小类,按照配置文件的设计,Modbus_RTU_json对象的下一层是485_json和PLC_json,故将Modbus_RTU_json对象解析成485_json和PLC_json对象,485_json对象向下为各COM口的对象,即所有设备信息的上一层。创建4个COM接口的JSON对象存储设备信息。得到每个类型的设备信息JSON数组后,将JSON数组内的设备信息取出存入对应的接口链表中,每个设备的信息均存放在链表节点的json_data内。设备信息提取完成后,各接口的采集线程开始工作,等待接口的轮循时间,到达时间后开始判断每个设备的采集周期是否到达,若到达采集周期,则按照当前设备节点的信息创建串口或Socket连接,采集设备数据,采集后存储到当前设备链表节点的数据缓存区即可。数据采集流程如图8所示。
图8 数据采集流程
感知层采集到数据后,根据配置文件的内容判断是否对采集的数据包进行协议解析和数据处理。若需处理,数据处理程序按照当前线程的通信协议类型进行协议解析,解析完成后,根据当前链表节点的信息判断是否需要其他处理,最后将数据存储到链表缓存区,等待边缘计算层使用。数据处理模块流程如图9所示。
图9 数据处理模块流程
将边缘计算需要的公式在配置客户端上按照规定方法写入,生成的边缘计算配置文件将被传入网关指定文件夹内。在网关程序运行之初,将文件读取到程序缓存中等待使用。此设计将边缘计算的公式分解成两个一组的计算节点,便于长公式的计算。数据处理层已将数据解析完成并存储到每个设备的链表节点缓存中,存储时按照寄存器地址顺序进行。链表节点中还有关于设备寄存器地址和寄存器标识符的映射关系表,因此在使用这些数据时可以直接用寄存器标识符来调用数据。
阿里云物联网云平台提供基于设备端SDK开发,可以在网关程序开发中结合云平台设计开发者使用的设备端SDK,实现网关与物联网云平台的数据互通。子设备接入云平台通过网关设备上报,网关设备会根据读取的配置客户端的配置文件获取需要连接云平台的子设备数量,并且获取每个子设备的三元组(在云平台创建设备生成的设备身份信息),通过网关向云平台报备子设备并建立拓扑关系。子设备可通过网关上发数据。本设计选择C-SDK进行网关开发,C-SDK安装完成后可使用其提供的API与云端通信,传输其规定格式的数据包至云端。业务逻辑、SDK、HAL关系如图10所示。
图10 业务逻辑、SDK、HAL关系图
应用层主要具备实时云动态曲线显示功能、手机端动态曲线显示功能和远程控制终端设备功能。应用层的云端动态曲线展示在阿里云物联网云平台已有工具可实现,只需配置使用即可。手机端的动态曲线展示选用微信小程序实现,在微信小程序上,可以使用云平台提供的云端SDK API实现云平台的设备属性设置、设备服务调用、设备信息获取等功能,之后即可在微信小程序上实现物联网云平台的功能。微信小程序可通过调用云平台的服务调用功能实现远程控制。控制过程如图11所示。
图11 服务器远程控制设备
本文针对目前网关数据采集中协议转换复杂、难以复用的情况,对网关整体框架进行设计。并通过引入分层的思想,将物联网网关整体架构分为5个层次:感知层、数据处理层、边缘计算层、传输层和应用层,实现了根据实际需求结合配置客户端进行输入文件参数、数据协议参数、设备信息、边缘计算公式等功能,使网关的利用率以及使用灵活度得到了极大提高,具有较高的工程应用价值。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!