一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种边缘计算的云边协同系统的制作方法

2021-11-09 23:17:00 来源:中国专利 TAG:


1.本发明涉及物联网技术领域,尤其涉及一种边缘计算的云边协同系统。


背景技术:

2.云边协同是边缘计算多数部署和应用场景中边缘侧与中心云的协同,包括资源协同、应用协同、数据协同、智能协同等多种协同。现有边缘计算的云边协同技术方案一般采用在接近数据的源头部署边缘节点,进行数据采集,过滤、加工,并使用遥测传输协议(message queue telemetry transport,mqtt)的方式和云端进行通讯,可以减少延迟、提高可扩展性、增强对信息的访问量,并使业务开发变得更加敏捷。
3.目前边缘计算的实现方式基本是分为云、边两部分,通过云上的管理平台进行策略的配置,分发到边缘节点执行。但是,现有的边缘计算定位比较单一,单纯提供某些协议设备数据的采集与上报,要支持新的功能或者新的协议,只能进行定制化开发,扩展性较差。


技术实现要素:

4.本发明提供一种边缘计算的云边协同系统,解决了现有技术中边缘计算需定制化开发,扩展性差的问题。
5.本发明的实施例提供一种边缘计算的云边协同系统,包括:用于提供物联网应用的云平台,以及用于管理物联网服务的边缘网关;其中,
6.云平台包括:边缘市场模块和节点管理模块,边缘市场模块用于展示和开发物理网应用,节点管理模块支持自动下载工具包、程序文件、初始化时程序并行启动;
7.边缘网关包括:通过遥测传输协议mqtt通信的主程序模块、遥测传输协议中心mqtt hub模块、代理模块、远程mqtt通讯模块、数据解析模块、串行模块和统一架构模块。
8.可选地,边缘市场模块支持:镜像仓库、应用模板、应用管理与监控功能。
9.可选地,云平台通过边缘市场模块下发物联网应用的策略至边缘网关的远程mqtt通讯模块,远程通讯模块调用主程序模块拉取镜像仓库中的物联网应用并启动。
10.可选地,主程序模块根据物联网应用的策略,下载物联网应用。
11.可选地,主程序模块支持rest api接口,通过rest api接口获取物联网应用的宿主机信息。
12.可选地,mqtt hub模块用于获取物联网应用的目标信息,目标信息包括:连接信息、切断信息、订阅信息、取消订阅信息、发布信息、ping信息中的至少一项;
13.其中,连接请求包括:客户端id、用户名和密码、主题访问控制中的至少一项;
14.订阅信息包括:包含通配符 、#、*中至少一项的主题。
15.可选地,边缘网关通过远程mqtt通讯模块与云平台进行边云消息同步。
16.可选地,远程mqtt通讯模块具有go轻量级的通道和数据库,其中,
17.当边缘网关和云平台连接中断时,远程mqtt通讯模块将创建中断处理协程,中断
处理协程将需要发送的消息从队列中取出并持久化到数据库;
18.当边缘网关和云平台恢复连接时,远程mqtt通讯模块将创建恢复处理协程,恢复处理协程从数据库中批量取出数据重新发送至云平台。
19.可选地,远程mqtt通讯模块采用以下方式中的至少一种与云平台通信:
20.客户端id鉴权,
21.用户和密码鉴权,
22.主题鉴权,以及
23.客户端id与主题是否匹配。
24.可选地,远程mqtt通讯模块与云平台通信的数据采用循环冗余校验crc算法加密。
25.可选地,代理模块用于采集边缘网关中各设备的系统信息,并通过宣城mqtt通讯模块上报至云平台。
26.可选地,系统信息包括:cpu、内存、硬盘使用率、应用运行状态、网卡、操作系统、容器应用引擎版本和程序版本中的至少一项。
27.可选地,数据解析模块用于将不同格式的数据解析为事件对象,事件对象包括:产品id、设备id、属性名和属性值中的至少一项;其中,
28.数据解析模块包括以下至少一项:
29.用于判断属性值是否触发指定动作的规则引擎模块;
30.用于按照云平台下发的转发策略进行转发的消息路由模块。
31.可选地,串行模块接收云平台配置的采集规则,并根据采集规则采集设备数据。
32.可选地,串行模块支持离散量输入、线圈状态、保持寄存器、输入寄存器,设备数据的类型包括:int8、uint8、float32、float64中的至少一种。
33.可选地,边缘网关中的各模块通过socket文件与主程序模块进行通信。
34.本发明的上述技术方案的有益效果是:
35.节点管理模块负责一键安装部署脚本和监控功能,很好的降低对用户运维和开发能力的要求;通过结合wget工具包、shell脚本、systemd等技术将节点安装部署的所有步骤精简为一条指令,用户只需一键就可以完成安装部署和监控,提高了边缘计算的扩展性。
附图说明
36.图1表示本发明实施例的主程序模块的工作原理流程示意图;
37.图2表示本发明实施例的mqtt hub模块的工作原理流程示意图;
38.图3表示本发明实施例的远程mqtt通讯模块的工作原理流程示意图;
39.图4表示本发明实施例的代理模块的工作原理流程示意图;
40.图5表示本发明实施例的数据解析模块的工作原理流程示意图;
41.图6表示本发明实施例的规则引擎模块的工作原理流程示意图;
42.图7表示本发明实施例的消息路由模块的工作原理流程示意图;
43.图8表示本发明实施例的串行模块的工作原理流程示意图;
44.图9表示本发明实施例的统一架构模块的工作原理流程示意图。
具体实施方式
45.为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。在下面的描述中,提供诸如具体的配置和组件的特定细节仅仅是为了帮助全面理解本发明的实施例。因此,本领域技术人员应该清楚,可以对这里描述的实施例进行各种改变和修改而不脱离本发明的范围和精神。另外,为了清楚和简洁,省略了对已知功能和构造的描述。
46.应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。
47.在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
48.另外,本文中术语“系统”和“网络”在本文中常可互换使用。
49.在本技术所提供的实施例中,应理解,“与a相应的b”表示b与a相关联,根据a可以确定b。但还应理解,根据a确定b并不意味着仅仅根据a确定b,还可以根据a和/或其它信息确定b。
50.本发明的实施例提供了一种边缘计算的云边协同系统,包括:用于提供物联网应用的云平台,以及用于管理物联网服务的边缘网关;其中,
51.云平台包括:边缘市场模块和节点管理模块,边缘市场模块用于展示和开发物理网应用,节点管理模块支持自动下载工具包(如wget工具包)、程序文件(如shell脚本)、初始化时程序并行启动(如systemd等技术);
52.边缘网关包括:通过遥测传输协议mqtt通信的主程序模块、遥测传输协议中心mqtt hub模块、代理(agent)模块、远程mqtt通讯模块、数据解析模块、串行(modbus)模块和统一架构(object linking and embedding forprocess control unified architecture,opcua)模块。
53.本发明实施例的边缘计算的智能云边协同系统,主要由云平台和边缘网关组成,云平台包括边缘市场模块、节点管理模块;边缘网关包括主程序master模块、mqtt hub模块、agent模块、远程mqtt通讯模块、数据解析模块、规则引擎模块、消息路由模块、modbus模块、opc ua模块,边缘网关内部各个模块间通过mqtt进行消息通讯,实现模块间的解耦。
54.其中,节点管理模块负责一键安装部署脚本和监控功能,很好的降低对用户运维和开发能力的要求;通过结合wget工具包、shell脚本、systemd等技术将节点安装部署的所有步骤精简为一条指令,用户只需一键就可以完成安装部署和监控。
55.可选地,边缘市场模块支持:镜像仓库、应用模板、应用管理与监控功能。具体地,边缘市场模块具有镜像仓库、应用模板、应用管理与监控等功能;能够将大量物联网应用集中在平台市场进行展示、售卖,用户可以通过一键部署在边缘网关实现自己想要的功能,还可以自己开发应用上架至市场,同时边缘市场还具有应用分发的功能。作为进一步的优化,云平台端还具有镜像仓库,可以实现容器镜像管理,同时还能对全局和项目进行容量限制、打通平台用户体系。
56.其中,应用分发功能可通过但不限于以下方式实现:云平台通过边缘市场模块下发物联网应用的策略至边缘网关的远程mqtt通讯模块,远程通讯模块调用主程序模块拉取镜像仓库中的物联网应用并启动。具体地,云平台通过边缘市场模块下发应用策略至边缘网关远程mqtt通讯模块,远程通讯模块调用master主程序rest api接口拉取镜像并启动,从而实现应用分发功能。作为进一步的优化,通过对master主程序容器应用引擎(docker)客户端的设定,还可以实现自动从云端同步账号密码进行镜像拉取操作,解决了需要手动使用docker登陆(login)命令才能实现拉取操作的缺点。
57.作为进一步的优化,主程序模块根据物联网应用的策略,下载物联网应用。这样,利用mqtt协议实现应用和策略分离,应用分发只需通过mqtt协议分发相关策略给远程mqtt通讯模块,master主程序再根据策略进行应用下载,可以大大节省部署时间并减轻平台压力。
58.可选地,主程序模块支持rest api接口,通过rest api接口获取物联网应用的宿主机信息。master主程序是系统的核心,负责管理所有的服务,内置docker运行引擎系统,对各个模块进行管理,包括拉取镜像、启动/停止容器、错误重试等等,同时也提供rest api,供模块调用以获取宿主机的一些信息,包括cpu、内存、磁盘使用率、操作系统、网卡、程序版本等信息。
59.可选地,mqtt hub模块用于获取物联网应用的目标信息,目标信息包括:连接信息、切断信息、订阅信息、取消订阅信息、发布信息、ping信息中的至少一项;
60.其中,连接请求包括:客户端id、用户名和密码、主题访问控制中的至少一项;
61.订阅信息包括:包含通配符 、#、*中至少一项的主题。
62.mqtt hub模块是一个单机版的消息订阅和发布中心,可采用mqtt协议(如mqtt3.1.1协议)在低带宽、不可靠网络中提供可靠的消息传输服务。其作为边缘计算系统的消息中间件,为所有服务提供消息驱动的互联能力。另外,它还负责mqtt物联网设备的接入和鉴权,是边缘计算最为核心的模块。mqtt hub目前支持功能包括:支持connect、disconnect、subscribe、publish、unsubscribe、ping等功能,支持keepalive、支持retain、will、clean session、支持订阅含有 、#等通配符的主题、支持clienid、用户名和密码鉴权和topic访问控制、支持qos级别0、1。
63.可选地,边缘网关通过远程mqtt通讯模块与云平台进行边云消息同步。也就是说,远程mqtt通讯模块负责桥接边缘网关和云平台两个mqtt server进行边云消息同步,和云平台的所有通讯都是通过它进行的,该模块具备数据中断续传功能且具有数据传输安全的特点。
64.可选地,远程mqtt通讯模块具有go轻量级的通道和数据库,其中,远程mqtt通讯模块的断续传功能可通过以下方式实现:
65.当边缘网关和云平台连接中断时,远程mqtt通讯模块将创建中断处理协程,中断处理协程将需要发送的消息从队列中取出并持久化到数据库;
66.当边缘网关和云平台恢复连接时,远程mqtt通讯模块将创建恢复处理协程,恢复处理协程从数据库中批量取出数据重新发送至云平台。
67.也就是说,远程mqtt通讯模块具有go轻量级的通道(channel),当边缘网关和平台连接中断时,远程mqtt通讯模块将创建中断处理协程,该协程负责将需要发送的消息从队
列中取出并持久化到数据库;当边缘网关和云平台恢复连接时,远程mqtt通讯模块将创建恢复处理协程,该协程负责从数据库中批量取出数据重新发送至平台,两个协程通过channel进行通信,达到准确控制的效果,从而实现中断续传。
68.作为进一步的优化,远程mqtt通讯模块还具有数据库中间件,该中间件是从核心时序数据库中剥离出来的底层存储部分,可以作为远程mqtt通讯模块和平台连接中断后用于持久化的数据库中间件,再利用多层嵌套桶实现更细致化的数据存储策略控制,比如可以灵活限制中断续传数据保存周期为1天、12小时、30分钟等。
69.可选地,为提高数据传输的安全性,远程mqtt通讯模块采用以下方式中的至少一种与云平台通信:
70.客户端id鉴权,
71.用户和密码鉴权,
72.主题鉴权,以及
73.客户端id与主题是否匹配。
74.具体地,远程mqtt通讯模块和平台通讯时,在标准的mqtt协议上加入tls支持,可实现mqtts加密传输,保证了通讯传输的安全性;
75.作为进一步的优化,远程mqtt通讯模块和平台通讯时,在原生mqtt协议clientid、用户、密码的校验方式上,业务内部再增加topic鉴权以及clientid和topic是否匹配等逻辑,保证了通讯传输的安全性。
76.又或者,远程mqtt通讯模块与云平台通信的数据采用循环冗余校验crc算法加密。这样,远程mqtt通讯模块和平台通讯时,mqtt传输数据增加循环冗余校验(如crc16)算法,进一步保证数据完整性。
77.值得指出的是,利用mqtt的轻量便捷等特性,远程mqtt通讯模块可以集成以上几种技术,从而很好的达到了性能和安全性方面的平衡。
78.可选地,代理模块用于采集边缘网关中各设备的系统信息,并通过远程mqtt通讯模块上报至云平台。可选地,系统信息包括:cpu、内存、硬盘使用率、应用运行状态、网卡、操作系统、容器应用引擎版本和程序版本中的至少一项。
79.具体地,agent模块负责采集网关设备的系统信息并由远程通讯模块上报至平台,便于在平台侧更好的监控到网关的工作状态,采集信息目前包括:
80.1)cpu、内存、硬盘使用率
81.2)自定义容器应用运行状态
82.3)网关软硬件信息:网卡、操作系统、docker版本、程序版本等。
83.可选地,数据解析模块用于将不同格式的数据解析为事件(event)对象,事件对象包括:产品id、设备id、属性名和属性值中的至少一项。数据解析模块负责将设备上报的数据按照规定的几种标准数据格式解析成event对象,将设备上报的数据解析成event对象,event包含了产品id、设备id、属性名、属性值等信息,然后将event重新发送至localhub供其他模块消费。
84.其中,数据解析模块包括以下至少一项:
85.用于判断属性值是否触发指定动作的规则引擎模块;具体地,规则引擎模块:消费event,判断属性值是否触发规则,并执行相应动作。规则引擎模块负责将平台创建的场景
联动规则下发到边缘网关,在边缘网关进行规则判断和动作执行,实现设备间的联动。另外,部署至边缘网关的场景联动能够快速响应本地的消息,并且可在断网环境下正常运行,是平台侧场景联动功能的一个扩展。
86.用于按照云平台下发的转发策略进行转发的消息路由模块;具体地,消息路由模块:消费event,按照平台下发的转发策略进行序列化、加密、压缩,然后转发至第三方的kafka、mqtt等服务。消息路由模块负责将数据解析模块推送的设备数据event对象按照用户配置的规则进行转换,然后再将数据发送给第三方的数据存储,便于用户基于数据进行上层应用开发。
87.可选地,串行模块接收云平台配置的采集规则,并根据采集规则采集设备数据。
88.可选地,串行模块支持离散量输入、线圈状态、保持寄存器、输入寄存器,设备数据的类型包括:int8、uint8、float32、float64中的至少一种。
89.具体地,modbus模块支持modbus设备以rtu的方式接入至网关,负责根据在平台上配置的规则进行周期性采集设备数据并进行相应的数据转换,最终将采集到的设备数据以mqtt方式推送至平台进行存储展示;其支持四种常用的寄存器:离散量输入、线圈状态、保持寄存器、输入寄存器;数据类型也支持int8、uint8、float32、float64等等,可以根据用户自己的需求进行各种数据采集。
90.可选地,opc ua模块主要负责opc ua设备数据的采集以及命令下发,其作为一个opc ua客户端,连接用户指定的opc ua server,根据配置的节点路径和节点名称以及采集周期,进行数据的读写操作,同样,采集到的数据最终以mqtt方式转发至平台。
91.可选地,边缘网关中的各模块通过socket文件与主程序模块进行通信。也就是说,边缘网关除了master主程序以外其他所有功能模块实现了模块化和容器化,各功能模块和master主程序之间通过socket文件进行通信,以此来调用其rest api接口,该方式大大降低模块间的耦合,并借助docker的优势实现资源隔离以及跨平台的快速部署,极大的降低了用户使用成本;
92.具体的,socket文件通信是通过如下方式实现的:
93.1、封装go语言http server包,让master出程序的rest api服务端启动的时候监听在linux socket文件,而不是常见的tcp协议;
94.2、利用docker卷挂载技术,在启动远程mqtt通讯模块等容器应用时将宿主机上master主程序监听的socket文件挂载至容器内;
95.3、封装go语言http client包,让容器应用内的http客户端通过socket文件和服务端进行通信。
96.以上介绍了本发明实施例中边缘计算的云边协同系统的各个模块,下面将结合附图对其中主要模块的工作原理进行简单说明。
97.如图1所示,主程序的工作原理包括但不限于以下步骤:
98.(1)执行启动命令启动程序,首先加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;如果加载成功则执行(2);
99.(2)读取配置文件中的产品id、设备id、masterkey、日志策略等信息,进行日志初始化、config结构体初始化等工作;
100.(3)启动http server,提供相应rest api供其他模块调用;
101.(4)启动docker engine,创建docker网络,以确保所有容器能通过容器名进行通信;
102.(5)加载内置模块配置文件,根据配置拉取模块的镜像到本地并启动容器,同时将网关产品id、网关设备id等公共信息写入到容器环境变量中;
103.(6)加载自定义模块配置文件,执行和内置模块一样的操作;
104.(7)启动容器守护协程,监听所有容器运行状态,如果异常退出则进行重启等操作。
105.如图2所示,mqtt hub模块的工作原理包括但不限于以下步骤:
106.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;如果加载成功,则执行(2);
107.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
108.(3)读取云平台下发的策略文件,进行子设备信息初始化;
109.(4)启动mqtt broker,监听端口,等待接收消息;
110.(5)接收到connect和disconnect包,需要向平台发送消息,将子设备上下线状态告知平台,其他报文按照标准mqtt协议进行处理。
111.如图3所示,远程mqtt通讯模块的工作原理包括但不限于以下步骤:
112.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;如果加载成功,则执行(2);
113.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
114.(3)模块初始化成功后会分别创建两个mqtt client:一个用于连接本地hub,将订阅的消息发送至平台,另一个则是用于连接平台的hub,将消息发送值本地hub;
115.(4)本地客户端(client)收到消息后,根据topic判断是属于那种类型的数据,分三种情况:
116.设备数据上报:将topic中pid和devkey解析出来,作为产品id和设备id加入到原始的payload中,并将原始的topic改为网关上报数据的topic,然后将该msg通过平台client发送出去;
117.设备命令响应:将topic中devkey解析出来,作为设备id加入到原始的payload中,并将原始的topic改为网关响应命令的topic,然后将该msg通过平台client发送出去;
118.其他topic的消息则直接由平台client转发,不做消息转换。
119.(5)平台client主要用于接收命令下发和配置下发,两个topic的消息处理方式如下:
120.命令下发:解析payload,取出子设备的产品id和设备id,将topic改为子设备订阅的命令下发topic,并且解析出来的产品id和设备id分别填入topic中的pid和devkey部分,通过本地client将消息发送出去;
121.配置下发:解析payload,封装成策略结构体,依次将各个模块需要的策略发送至各自订阅的topic中,完成策略分发,最终回复平台一个部署成功的响应消息,如果解析出错,则回复部署失败消息。
122.如图4所示,代理模块的工作原理包括但不限于以下步骤:
123.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;如果加载成功,则执行(2);
124.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
125.(3)创建mqtt client连接localhub,成功后启动三个协程分别周期性的调用主程序rest api获取cpu等使用率、系统信息以及容器应用状态;
126.(4)封装成mqtt消息发送给localhub(由remotemqtt模块消费并发送至平台)
127.如图5所示,数据解析模块的工作原理包括但不限于以下步骤:
128.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;如果加载成功则执行(2);
129.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
130.(3)读取平台下发的策略文件,初始化物模型;
131.(4)创建mqtt client连接localhub,订阅设备上报数据的topic;
132.(5)收到消息,按照第一个字节对应的类型进行报文解析,得到属性名和属性值,再结合产品id、设备id等信息封装成event对象;
133.(6)event对象中的产品id是否对应modbus产品,如果是,则直接转发(modbus数据是网关主动按照配置进行采集的,不存在类型和范围不合法情况),如果否,则下一步:
134.(7)event的产品id和属性名对应的物模型是否存在,如果是,则根据物模型校验(类型和取值范围校验),校验成功转发,失败丢弃;如果否,同样丢弃;
135.(8)需要转发的event发向localhub指定的topic,由规则引擎和消息路由模块订阅消费。
136.如图6所示,规则引擎模块的工作原理包括但不限于以下步骤:
137.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;否则执行以下:
138.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
139.(3)读取平台下发的策略文件,初始化规则;
140.(4)创建mqtt client连接localhub,订阅数据解析模块推送event的topic;
141.(5)定时触发规则:创建相应的定时任务,定时执行动作,发送命令下发消息至localhub;
142.(6)设备触发规则:收到event消息,解析得到产品id、设备id、属性名和属性值信息,依次匹配规则,如果存在满足触发条件的规则,则执行对应命令下发动作,如果不存在满足条件的规则,则继续等待消息;
143.(7)规则执行动作处理完后,发送一条规则触发日志给localhub,由remote模块转发至平台;
144.如图7所示,消息路由模块的工作原理包括但不限于以下步骤:
145.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于
文件不存在或者内容格式错误),则输出错误日志并退出程序;否则执行以下:
146.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
147.(3)读取平台下发的消息路由策略文件,根据规则创建并初始化转发客户端,连接上第三方的kafka、mqtt等;
148.(4)创建mqtt client连接localhub,订阅数据解析模块推送event的topic;
149.(5)接收到event消息,与每个转发客户端的过滤条件匹配,如果产品id、设备id和属性名满足条件,则将event发送至该客户端的channel;
150.(6)客户端协程从channle中获取event,并按照规则依次进行序列化、压缩、加密生成最终的数据(mysql客户端不做数据转换);
151.(7)将数据由客户端发送至第三方存储。
152.如图8所示,modbus模块的工作原理包括但不限于以下步骤:
153.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;否则,执行
154.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
155.(3)读取平台下发的modbus策略文件,根据modbus通道和设备配置信息,创建客户端连接串口以及创建每个设备的采集协程;
156.(4)创建mqtt client连接localhub,订阅命令下发topic;
157.(5)每个设备的采集协程根据自身配置的采集周期,周期性的依次将产品中定义的功能按照mobus协议进行采集和数据转换,最终将属性名和属性值以json格式发送至localhub,由remote上报至平台;
158.(6)mqtt client接收到命令下发消息,同样将消息发送至采集协程,采集协程根据命令类型(读/写),发送读/写modbus报文,成功后发送命令响应mqtt报文至localhub,由remote转发至平台(如果是读命令,则需要把读取的值封装到响应包中)。
159.如图9所示,opc ua模块的工作原理包括但不限于以下步骤:
160.(1)由主程序拉取该模块docker镜像并启动,加载配置文件,如果加载失败(由于文件不存在或者内容格式错误),则输出错误日志并退出程序;否则执行以下:
161.(2)读取配置文件以及环境变量中的日志策略、产品id等信息,进行日志初始化、config结构体初始化等工作;
162.(3)读取平台下发的modbus策略文件,根据opc ua通道和设备配置信息,创建客户端opc ua server以及创建每个设备的采集协程;
163.(4)创建mqtt client连接localhub,订阅命令下发topic;
164.(5)每个设备的采集协程根据自身配置的采集周期,周期性的依次将产品中定义的功能按照opc ua协议进行采集,最终将属性名和属性值以json格式发送至localhub,由remote上报至平台;
165.(6)mqtt client接收到命令下发消息,同样将消息发送至采集协程,采集协程根据命令类型(读/写),发送读/写opc ua报文,成功后发送命令响应mqtt报文至localhub,由remote转发至平台(如果是读命令,则需要把读取的值封装到响应包中)。
166.本领域技术人员可以理解,实现上述实施例的全部或者部分步骤可以通过硬件来完成,也可以通过计算机程序来指示相关的硬件来完成,所述计算机程序包括执行上述方法的部分或者全部步骤的指令;且该计算机程序可以存储于一可读存储介质中,存储介质可以是任何形式的存储介质。
167.此外,需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行,某些步骤可以并行或彼此独立地执行。对本领域的普通技术人员而言,能够理解本发明的方法和装置的全部或者任何步骤或者部件,可以在任何计算装置(包括处理器、存储介质等)或者计算装置的网络中,以硬件、固件、软件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
168.因此,本发明的目的还可以通过在任何计算装置上运行一个程序或者一组程序来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。还需要指出的是,在本发明的装置和方法中,显然,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本发明的等效方案。并且,执行上述系列处理的步骤可以自然地按照说明的顺序按时间顺序执行,但是并不需要一定按照时间顺序执行。某些步骤可以并行或彼此独立地执行。
169.以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献