工业互联网网关软件分析与设计

news2024/11/22 19:19:45

一、 案例软件分析

一、总体目标

工业互联网是新一代信息技术与制造业深度融合形成的新兴业态和应用模式,其发展前景广阔。工业互联网网关是将各采集监测点的数据通过无线或有线传感网络进行数据汇集,进行统一有效的监管。在工业互联网体系架构中,感知层网络和工业互联网之间需要一个网关设备,实现工业互联网与传感层网络的互联互通。工业互联网网关旨在解决当前感知层网络设备的横向不关联,无法联动控制和统一管理的问题。网关以工业互联网为载体进行信息交换,把分散在各种工业现场的感知网络设备信息进行采集、存储、分析、管理,并能够对多种协议下的数据进行解析。

二、需求分析

如下图所示,网关软件需要实现的功能主要包括:

(1)串口收发:通过串口实现软件与设备的通信,传输相关数据。

(2)本地设置:用于设置串口号、定时周期、感知节点信息、访问权限、网关及网络相关参数等。

(3)本地数据存储:基于 Access 数据库编程技术,实现采集数据本地化存储。

(4)本地数据显示:将存储到数据库中的采集数据以图表形式展现出来。

(5)本地数据导出:采集的数据还可以 Excel 的格式输出。

(6)实时数据通信:通过 WebSocket 技术,实现本地与远端(云服务器) 之间的数据实时传送、显示与双向控制。

(7)远程网络通信: 搭建 TCP 服务器,通过 Socket 编程技术,实现采集数据的 远程传送,方便在本地与远端(云服务器)进行网络存储。

(8)实现多协议转换:采集器可能是支持多种通信协议的不同设备。

img

三、总体设计

下图中的数据采集器是一种嵌入式设备,用于采集工业现场环境的实时数据,其数据通过 RS485总线或其他总线传输至工控机;各数据采集器(节点)通过 RS485总线进行联网,通信数据封装一般采用 Modbus等工业通信协议;边缘计算设备采用基于工控机的网关软件进行集中处理,具体包括串口数据收发、本地设置、数据本地存储、数据本地显示、网络数据实时传输等功能;工控机和云平台直接通过 WebSocket 和 Socket 协议进行通信,其中,WebSocket 协议可为云平台提供双向实时数据传输,达到远程实时显示和远程控制的目的,Socket 协议则用于传送 RS485 采集过来的工业现场数据,并传送到云平台上去;在云平台上,需要部署 WebSocket 和 TCP 服务器,并提供实时显示、存储、监控及管理等 Web 应用功能。

img

工业互联网网关中集成通用的短距离通信协议,能覆盖大部分工业领域的感知层设备,为感知网络节点数据提供统一的封装,保证不同的协议能够抽象成统一的数据帧,通过上行通信接口上传至应用服务器端;应用服务器端数据,通过通用的工控协议、互联网协议将数据下发给工业物联网网关,网关通过协议解析,将数据帧拆解并重新组合成感知层网络能识别的数据帧,通过下行通信接口进行下发。

img

四、详细设计及实现部署

1、实时数据通信

网关软件实时数据通信采用了WebSocket技术。WebSocket 技术是 HTML5 标准下的一种新的应用层协议,实现了服务器和浏览器之间全双工通信。WebSocket 能够像 Socket 一样,在服务器和浏览器之间形成一个真正的“长连接”。 具体实现原理为:

(1)客户端发起连接请求;

(2)服务器根据规则接收客户端请求后,进行握手,握手成功后建立连接;

(3)连接成功建立后,和 Socket 通信类似,可以在客户端和服务器之间以帧序列的方式收发数据,无需发起新的连接请求,其中发送方以帧序列格式发送,接收方需要对帧序列进行解码;

(4)客户端发起断开连接或者网络中断时,连接才会中断。

img

由此可以看出,WebSocket 技术是一种真正的全双工通信协议,成功建立连接后,客户端和服务器之间的地位是完全对等的,其协议是基于 HTTP 协议,非常适合B/S 架构。因此,通过使用 WebSocket 技术,可以实现对远程服务器端的实时发送与控制。下面介绍具体实现过程。在连接前,需要首先搭建基于PHP的WebSocket服务器端,并通过Apache httpd服务器发布。网关软件端作为客户端,需要设置 WebSocket 服务器的相关信息,包括 IP 地址和端口号等。 其中服务器端连接程序包括:

(1)创建连接:$conn=socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

(2) 绑定 ip 和端口号:socket_bind($conn, $address, $port);

(3) 监听:socket_listen($conn, 5)。

客户端主要程序包括:

(1)static WebSocketClass socketManager; string jsonStr = JsonNewtonsoft.ToJSON(data);// 将多组数 据组成成 json 格式

(2)socketManager.Send(jsonStr); // 发送数据

(3)string str = socketManager.Recv(); // 等待服务器返回数据

在与 WebSocket 服务器建立连接后,客户端不仅能够把 采集到的多组数据以json格式封装发送到服务器,还能接收 到服务器发送回来的数据,进而对温度采集器实施控制、管 理,真正实现网页端大数据实时监测与监控功能。安全性方 面,在 HTTP 握手的时候,需要进行 HTTP 认证,以确保服务器与浏览器之间通信安全。此外,项目实施后,还要防范 XSS 漏洞攻击,在后续版本中,还将对数据进行加密处理, 防止明文传输带来安全漏洞。

2、远程网络通信

网关软件远程存储采用传统 Socket 技术中的 TCP 传输协议,是一种 C/S 架构,在具体实现过程中选用了异步 Socket 插件 SanNiuSignal。SanNiuSignal 是一个 dll 文件,具有简单易用、传输稳定等特点,非常方便建立基于 TCP 和 UDP 的数据传输,简化编程流程。经过测试,能够满足远程 数据传输功能。 具体实现过程包含服务器和客户端(网关软件)两部分。其中,服务器端,需要搭建 TCP 服务器,设置服务器端口,并点击启动监听按钮,监听客户端发起连接。客户端设置服务器 IP 地址和端口号,发起连接请求,服务器接 收请求后,客户端和服务器之间即可实现双向通信。客户端负责将采集到的数据以 json 格式封装,发送到服务器端,还会监听服务器发送过来的数据。服务器端不仅能够接收 数据、解析数据,并将数据存储到 MySQL 网络数据库中,还能够发送数据到客户端,并监测是否存在非法用户,确保数据的安全性。客户端主要代码包括:

(1) private ITxClient client = null; string ip_addr=textBox9.Text;// 读取服务器 IP 地址

(2) string ip_port= textBox10.Text;// 读取服务器端口号

(3) TxClient = TxStart.startClient(ip_addr, int.Parse(ip_port));

if (TxClient!=null)TxClient.sendMessage(jsonStr);// 发 送 json 数据包到服务器端

服务器端主要代码包括:

(1) Data4 data4 = JsonNewtonsoft.FromJSON(str); // 解析 json 内容

(2) int i=DataPackTool_MySQL.InsertData4(data4); // 存储数 据到 MySQL 数据库

3、串口收发及通信协议转换

本网关软件支持一路串口、多路节点的数据收发,在开始采集数据前,需要设置串口号、本机序列号、采样周期、节点地址批量添加等参数。网关软件和数据采集器之间是一种主从模式,网关软件为主,数据采集器为从,只要网关软件发送指令,数据采集器才会返回响应的数据。以Modbus 协议为例,协议分为发送指令和返回数据帧。其中发送指令包括传感器地址、功能码、寄存器起始地址、寄存器数量、CRC 校验,而返回的数据帧内容包括地址码、功能码、数据长度、数据以及 CRC 校验码。而功能码不仅包含读取数据,还包含修改地址、 修改串口通信比特率、设置用户标定零点、设置 scl3300 工 作模式、设置 scl3300 工作采样率等内容。知道这些协议数据包的组成后,我们定义了一种新的通信协议来构建数据包,将底层的modbus协议等解析出来的数据重新封装为一统一格式,再通过websocket、socket、mqtt等已有的通信协议传输至控制台软件或云平台。实现数据通过 MQTT 协议与云平台进行交互。协议参数配置模块负责工业协议数据的接入参数配置,数据解析模块负责对上行和下行的数据进行标准和格式的转换。

五、数据库设计

数据库设计:完整项目包含服务器端的 MySQL 数据库和边缘计算机网关软件端的 Access 数据库。网关软件为本地数据库,只包含两张表,分别是用户表(ID, myname, mypass),数据表(ID,sensorId,sensorName,first,second,third,forth,createtime),其具体表项定义分别如1和表2所示。其中,用户表用于登录验证用,数据表用于存储各节点采集的数据。

img

二、 再分析

工业互联网网关的主要功能是实现对工业感知层不同的异构设备进行管理监控,交互控制并将其接入互联网,从而实现对设备及工业数据的云监控、云设置,基本功能大致如下:

(1) 将感知层设备接入互联网,需要解决协议转换的问题;

(2) 对感知层设备进行管理控制,需要了解不同设备的控制命令并进行统一;

(3) 与互联网云平台进行通信,需使用MQTT、TCP等;

三、 再设计

暂且将电脑作为网关,使用电脑进行开发。

1、设备数据的帧格式:起始字符、长度、控制域、链路用户数据、校验和、结束字符等。

img

长度 L 包括协议标识和用户数据长度,由 2 字节组成,如下图所示

img

控制域 C 表示报文传输方向和所提供的传输服务类型的信息,定义见下图:

img

传输方向位 DIR:DIR=0:表示此帧报文是由服务提供方发出的报文; DIR=1:表示此帧报文是由服务请求方发 出的报文。

启动标志位 PRM:PRM =1:表示此帧报文来自启动站;PRM =0:表示此帧报文来自从动站。

帧校验和:帧校验和是用户数据区所有字节的八位位组算术和,不考虑溢出位。

应用层(链路用户数据)格式定义见下图 :

img

帧序列域 SEQ 为 1 字节,用于描述帧之间的传输序列的变化规则,由于受报文长度限制,数据无 法在一帧内传输,需要分成多帧传输(每帧都应有数据单元标识,都可以作为独立的报文处理)。SEQ 定义如下图

img

2、设备和云平台交互流程:

img

3、云平台和设备交互流程:

img

4、在python中,我们可以定义一个数据类来解析该数据包,如下图所示:

img

将解析出来的数据进行封装后可以通过MQTT传输至云平台,同时我们可以在我们的网关软件中定义许多控制类来对感知层设备进行管理设置。

5、接收数据包校验python编程:

img

6、接收数据包数据解析python编程:

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1566476.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐语SecretFlow实训营-第8讲:快速上手隐语SCQL的开发实践

SCQL使用/集成实践 目前SCQL只开放API供用户使用/集成 使用SCDBClient上手体验可以基于SCQL API开发封装白屏产品,或集成到业务链路中 使用流程: 部署系统 环境配置: 机器配置:CPU/MEM最低8C16G机构之间的网络互通 镜像&…

【面试HOT200】链表篇

系列综述: 💞目的:本系列是个人整理为了秋招面试coding部分的,整理期间苛求每个算法题目,平衡可读性与代码性能(leetcode运行复杂度均打败80%以上)。 🥰来源:材料主要源于…

25+web技术站点,事半功倍,总有一个值得got

前言 收集一些有用的网站,为自己用,也分享一下,仅此而已。 ECMA 国际组织 各种文案 Ecma-262 - ECMAScript 规范Ecma-402, -国际化 API 规范Ecma-404 - JSON 数据交换语法ECMA-419 - 嵌入式系统 API 规范ECMA-414 规定了和 ECM…

数据挖掘|关联分析与Apriori算法详解

数据挖掘|关联分析与Apriori算法 1. 关联分析2. 关联规则相关概念2.1 项目2.2 事务2.3 项目集2.4 频繁项目集2.5 支持度2.6 置信度2.7 提升度2.8 强关联规则2.9 关联规则的分类 3. Apriori算法3.1 Apriori算法的Python实现3.2 基于mlxtend库的Apriori算法的Python实现 1. 关联分…

比较靠谱的测试进度报告

在测试的过程中,不要等领导过问,有一份比较靠谱的测试进度报告,让关心和支持项目的干系人心里有谱,有利于管理层对项目的监控和资源的支持,有利于项目团队成员之间沟通协调,及时发现问题利于项目风险控制等…

Docker 笔记

1.Ubuntu安装Docker 安装Docker看这篇文章 http://t.csdnimg.cn/IsSsJ 2.在docker中运行python代码 2.1搭建python环境 docker部署python环境看这篇文章 http://t.csdnimg.cn/TYz0G 2.2在python shell中运行python代码 2.2.1查看镜像 2.2.1启动python,厦门这个…

ABC318 F - Octopus

解题思路 对于每个宝藏维护个区间,答案一定在这些区间中对于每个区间的端点由小到大排序对于每个点进行判断,若当前位置合法,则该点一定为一个右端点则该点到前一个端点之间均为合法点若前一个点不合法,则一定是某一个区间限制的…

【Linux】详解动静态库的制作和使用动静态库在系统中的配置步骤

一、库的作用 1、提高开发效率,让开发者所有的函数实现不用从零开始。 2、隐藏源代码。 库其实就是所有的.o文件用特定的方式进行打包形成一个文件,各个.o文件包含了源代码中的机器语言指令。 二、动态库和静态库的制作和使用 2.1、静态库的制作和使用…

【学习笔记】java项目—苍穹外卖day03

文章目录 苍穹外卖-day03课程内容1. 公共字段自动填充1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 1.4 功能测试1.5 代码提交 2. 新增菜品2.1 需求分析与设计2.1.1 产品原型2.1.2 接口设计2.1.3 表设计 2.2 代码开发2.2.1 文件上传实现2.2.2 新…

【代码随想录】数组

704. 二分查找 class Solution {public int search(int[] nums, int target) {if(numsnull || nums.length0){return -1;}return searchTarget(nums, 0, nums.length-1, target);}private int searchTarget(int[] nums, int left, int right, int target){//left和right都指向同…

RegionCLIP网络结构解析 Region-based Language-Image Pretraining

1、简单介绍 主要是关注目标检测方面的工作,现在纯CV已经前景黯淡,即使前段时间的YOLOv9发布也是关注一般。 现在大模型已成热点,而大模型要求的数据量和算力和算法复杂度,显然让很多人却步。但是具有大模型特点的多模态算法也算…

Vue3从入门到实战:路由的query和params参数

在Vue 3中,我们可以通过路由的查询参数来传递数据。这意味着我们可以在不同的页面之间传递一些信息,以便页面可以根据这些信息来显示不同的内容或执行不同的操作。 查询参数的使用方式类似于在URL中添加附加信息,以便页面之间可以根据这些信息…

AI技术创业:把握机遇,提升能力,迎接未来挑战

文章目录 人工智能三次浪潮人工智能时代机遇提升核心能力AI时代的长期赛道和早期优势实践应用:让AI工具为你所用学会变通:适应AI领域的快速变化提升核心能力:想象力、创造力和提问能力结语 人工智能三次浪潮 第一次黄金期:1956年…

基于SSM的网络视频播放器

目录 背景 技术简介 系统简介 界面预览 背景 互联网的迅猛发展彻底转变了全球各类组织的管理策略。自20世纪90年代起,中国政府和企业便开始探索利用网络系统进行信息管理。然而,早期的网络覆盖不广泛、用户接受度不高、相关法律法规不完善以及技术开…

WPF文本框TextEdit不以科学计数法显示

WPF文本框TextEdit不以科学计数法显示 一个float或者double类型的数值,如果小数点后0的个数≥4,在界面上就会自动以科学计数法显示, 比如:0.00003会显示成这样 但是很多时候我并不希望它这样显示,因为这样不方便编辑…

成都欣丰洪泰文化传媒有限公司引领电商新风向

在当今数字化时代,电子商务行业日新月异,竞争激烈。然而,在这股浪潮中,成都欣丰洪泰文化传媒有限公司凭借其独特的战略眼光和创新精神,正引领着电商领域的新浪潮。本文将探讨成都欣丰洪泰文化传媒有限公司如何在激烈的…

实战webSocket压测(二)jmeter配置webSocket连接

背景 我们可以通过Jmeter添加插件实现webSocket脚本编写。WebSocket的插件较多,我选择以WebSocket Samplers by Peter Doornbosch为例来进行配置。 步骤1、WebSocket Samplers插件安装 下载地址:JMeter WebSocket Samplers,建议下载最新版本…

阿里巴巴25届实习生内推

#阿里巴巴 #春招实习 阿里国际春季2025届实习生招聘4月1日已正式启动!学生网申投递、师兄师姐内推通道均已开放 整体介绍(含在招岗位) 内推投递方式 方式一:内推码自行投递 方式二:通过简历投递 简历发邮箱&#xf…

Lumos学习王佩丰Excel第一讲:认识Excel

最近发现自己在操作excel的一些特殊功能时会有些不顺手,所以索性找了一个比较全的教程(王佩丰excel24讲)拿来学习,刚好形成文档笔记,分享给有需要但没有时间看视频的朋友们。整体笔记以王老师授课的知识点去记录&#…

蓝桥杯备考

目录 P8823 [传智杯 #3 初赛] 期末考试成绩 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码 P8828 [传智杯 #3 练习赛] 直角三角形 题目描述 输入格式 输出格式 输入输出样例 代码 P8833 [传智杯 #3 决赛] 课程 题目背景 题目描述 输入格式 输出格式…