沈 文,徐 曦,李亚宁,杨 雪,邓依婷
(1.湖南工业大学 计算机学院,湖南 株洲 412007;2.智能信息感知及处理技术湖南省重点实验室,湖南 株洲 412007)
近年来,以物联网数字化技术为核心新技术不断深入至智能养殖各个环节[1]。质量检测是设备出厂之前的必备流程,智能养殖设备作为新生产物,同样需要质量检测。网关是数据汇聚节点,承担与底层设备、云平台的数据交互,可应用于此场景。在此之前,廖建尚等人[2]将智能网关应用在农业物联网协议统一上,葛聪乐等人[3]以网关为核心设计了传感数据监控系统,赵佶[4]则提到网关的边缘计算应用。但是这些方法场景各异,并不适合特定产品质量检测。
为了应对某公司智能养殖设备的标准化质检,设计了一种基于智能养殖设备的边缘计算质量检测网关,创造性地在边缘侧使用质检网关对智能养殖设备进行质量检测。实现对数据协议、设备功能、数据通信方面的检测。并对质检边缘计算逻辑、数据存储、可视化、数据传输等进行设计。
图1是质量检测网关系统总体架构。该系统硬件主要由网关主板、通信模块(ZigBee)、串口、网口、无线模块组成。其中,网关硬件为天启科技Firefly-RK3399开发板,基于6核的ARM®64位处理器,主频为1.8 GHz,支持Linux,Ubuntu,Android 等系统。质检系统为三层架构:终端设备、网关、云平台。
图1 边缘质检网关架构
质检原理为在边缘质检网关中设计一整套设备质检逻辑,与终端设备进行数据交互,当终端设备的某个限位或规定的理想结果值回传给网关设备,质检网关在边缘侧对终端传输的数据进行边缘计算并比对特定规则,从而确定检测结果;并将每个设备测试的结果(成功或失败原因)存储在本地数据库中,同时将检测结果发送到云平台存储。
网关的边缘计算后台作为整个质检逻辑的重要支撑,是整个系统的大脑,所有检测逻辑处理都在本部分实现,也是本文的核心。网关系统包含与底层智能终端数据交互、数据边缘解析判断、数据库设计、与云平台的数据交互等部分。后台开发主要在Linux,Ubuntu系统环境下,采用Jetbrains公司的C/C++跨平台集成开发环境CLion进行软件开发。
图2是边缘计算质检网关后台检测框图。从图2可见,向下的通信方式采用串口、ZigBee,WiFi,LAN等四种方式。其中智能车主分为四部分:环控系统、摄像系统、制动系统、主控网关。多个设备将集合成为智能车设备,为了方便对整体的测试采用异步测试方式进行。开发单独的测试程序对车进行质检,得到相应的结果后将数据传回主质检网关。摄像头则采用网线直连接方式并与网关组成局域网进行。其他串口设备,将通过质检网关对各同类设备逐一测试。该测试仅在软件层面对设备进行测试,硬件设备测试在此不作叙述。
图2 边缘计算质检网关后台检测框图
图3是质检网关测试流程图。主要分为三大类:智能车、串口交互(ZigBee)型设备、摄像头。
图3 质检流程框图
智能车采用单独模块进行质检。第一,获取车中传感器主板外接的传感器数据,判断是否设备异常;第二,则是摄像头数据,通过内部配置拍照回传命令,发送给摄像头终端,将所拍照片传回;第三,则是智能车主板数据,包括小车运行状态、位置、电压、运行模式、巡检圈数、告警数据等;最后,车网关自身数据:心跳、服务、网关ID等信息都将通过独立质检程序获取,并将所有信息写入文件中等待质检网关远程获取。ZigBee设备根据不同的协议功能将测试不同的项目,通过命令交互检测。摄像头与质检网关通过建立UDP连接进行数据交互,支持实时抓拍。如有需求,也支持边缘加载算法接口对图片进行边缘计算。算法调用方式可归纳为:1)接收到的图片临时放入一个容器vector〈char〉存储;2)显示加载算法.so文件,并初始化创建算法实例;3)每张图片vector〈char〉将执行固定的调用接口:
void algAPI(const void *picData=NULL,
const long DataSize=0,
void *Params=NULL,
void *AlgResult=NULL);
最后获取结果AlgResult参数。
网关采用SQLite3轻量级嵌入式数据库,具有可移植、无须配置、可自给自足、无服务器等优势[5]。本文中主要创建了4个数据表:用户数据表、规则表、测试记录表、测试结果表。其中用户数据则存储用户名、密码、待测试项等信息;规则表是传感器数据及其他可量化判断的异常判断依据;测试记录表则详细存储了每个设备的所有测试过程;测试结果表存储单个设备测试的ID号、测试时间、测试结果等。
消息队列遥测传输协议(MQTT)是ISO 标准发布/订阅(publish/subscribe)模式消息通信协议[6]。具有开源、轻量、简单和易于实现等特点,在嵌入式物联网通信领域被广泛使用,原理如图4所示。网关将所有检测结果通过JSON组包成图5格式,包括网关ID,终端设备ID,检测结果及类型等,以特定主题发布到服务端,待其他订阅方订阅获取。
图4 MQTT原理图
图5 MQTT推送JSON格式图
QT技术源于诺基亚公司的界面开发平台。由于具有良好的跨平台(兼容多种系统:如Linux、Window 、Android等)、可扩展、开发简单等特点,现被广泛运用于嵌入式终端、物联网、数据采集等系统中[7~9]。QT5集成了可视化的本地调试器,开发环境Qt Creator包含各种源码包、UI界面。本文系统采用Ubuntu系统,支持QT界面,适用于此开发场景。本场景中由于后台库采用Cmake方式编译,为了方便界面接口调用,QT也采用此方式编译。
质检网关的主控平台采用Linux,QT的方式进行设计,也是人机交互的唯一界面系统。界面系统通过调用边缘计算后台应用程序接口(application programming interface,API)的方式进行数据交互,其中后台处理逻辑已生成动态库,供界面系统直接调用。界面系统可主要分为4个部分:登录部分、设备选型、测试输入与开停控制、设备检测结果接收部分。
图6是界面系统示意图,采用水平布局,左边一列主要作为设备型号选择操作。采用QtreeWeight方式生成界面UI,右上为主要的输入控制操作区,即设备输入设备的目标地址,被检测设备ID等基本信息,通过开始、停止按钮控件对设备进行操作。右下主空白部分作为检测输出窗口,动态显示被检测项目与结果,并给出最终结论为测试合格。整体逻辑设计流程如下:1)登录、主控、结果接收的UI界面设计;2)启动键盘与登录窗,输入密码校验;3)根据数据库中检测项信息遍历并新增多个QTreeWidgetItem对象,并为其增加设备的子类型;4)通过信号与槽机制跳转到控制操作平台上,根据传输不同的测试类型有不同的操作界面,分为设备地址、设备ID、网关ID三种类型;5)测试接收与测试开始同步进行,启用后台接收API,接收线程将所有测试数据接收到本地并实时进行逻辑判断。
图6 质检网关界面示意
为了证明本质检网关的功能性,依据各设备协议,对设备检测时长、设备类型、逻辑功能性进行逐一测试。表1是测试项目表,举例以下4种设备进行测试详细说明。1)传感器:配置上报地址、测试心跳、ID类型、传感数据(温度、湿度、气压、氨气、PM10、风速、光感、烟感)值是否在正常范围内。2)饲喂器:配置上报地址、ID类型校验、心跳、下料、喷雾、冲洗、堵转告警、空转告警。3)摄像头:摄像头绑定、心跳、ID校验、拍照获图,并将图像展示。4)智能车:智能车将读取外设测试传感器数据测试是否有异常值;摄像头心跳ID校验、拍照获图;测试小车电压、前进状态、位置、心跳及ID校验等。
表1 智能设备检测项目
通过以上测试方法,完全模拟现场真实使用环境测试设备,智能车采用24 V供电、其他设备12 V供电。通过模拟异常情况,预估测试结果,与质检网关测试结果对比,一致则表示设计符合要求。同时为了检验MQTT功能,使用MQTT.fx软件订阅质检网关主题查看测试结果。经过本地测试表明,改质检网关测试ZigBee设备单个设备30次以上,偶发存在单条数据接收丢包,出现概率低于1 %;并且所有类型设备测试时间控制在3 min以内。
ZigBee设备:测试并记录最大指令数,喷淋62条、卷被65条、饲喂45条、传感器26条、料线水线12条,任意一条指令收发在1 s内完成。给设备升级收发指令超过500条指令未出现失败现象,在数据交互上满足测试需求。智能车:测试有多个WiFi终端,同局域网内具有8个终端设备,NMAP扫描时间最长10 s,最短1 s,在正式测试场景不超过3设备,满足现有需求。摄像头:采用真实场景测试,一个网关网口接入并串联交换机,最高接入36个摄像头正常拍照取图;小车摄像头网关同时加载3个算法,CPU占用不超过60 %,内存占用超过12.7 %,在合理范围内。以上结果表明,该质检网关性能优越,能支撑常规的业务应用。
目前该边缘质检网关已在沈阳、北京等几个组装厂使用,常用质检网关记录的测试指令数据已超过2万条,测试设备数超过2千个,检测记录中失败数目超过100个,控制了产品出厂质量,具有实用性。
根据产品质检需求,设计了对智能养殖设备进行质量检测的边缘质检网关。分别对质检网关的边缘后台、QT人机交互系统、设备通信传输与数据存储等方面做了设计。质量检测网关,是应用于特定场景的质量检测系统,在边缘侧对智能设备进行质检,对于设备的通信质量,设备功能具有良好的检测效果。该产品已实际应用在工厂生产环节,为出厂质检提供了软件检测依据。在设备出厂检测中,质检网关在软件层面对智能养殖终端设备质量进行了把控,对于农业设备智能化、设备质量检测溯源具有重要意义。