基于图模型的物联网系统-软件组件与程序编排
Posted 姚家湾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于图模型的物联网系统-软件组件与程序编排相关的知识,希望对你有一定的参考价值。
在基于图模型的物联网系统中,信息模型描述了各个物模型以及它们的相互关系。看上去它们都是静态的数据模型。那么,物联网系统的程序如何建模,并且执行呢?本博文讨论这个问题。
物联网程序的执行模型
物联网程序是分布式结构,它们包括了设备中的嵌入式软件,边缘服务器和云端的软件。这些软件有的是为其它程序提供服务的软件组件,有的是应用软件。
软件组件构成的服务称为微服务(micro-service),它们通过应用软件来调用。应用程序与微服务之间可以采用不同的通信协议和调用方式。
软件组件通常是专业软件工程师开发,而应用程序由OT 工程师编排。
主动型节点和被动被动型节点
在IoT 信息模型中,能够运行程序的节点是主动性节点(Active Node),它们对应的是系统中所有运行程序的物模型,对应于物理设备,或者云服务器或者边缘服务器中的软件。而数据类型的节点是被动型节点(Passive Node)。
在MAXIM System 中,使用Controller 类型来描述主动型节点。每个物理设备或者软件组件都对应一个控制器节点。控制器节点中包含了一个或者多个对象。
控制器类型节点又分为可编排程序(Programmable)和固定程序(Fixed)两类。这里指的可编程类型是指OT工程师可以编排程序。
在控制器类型节点中,有一个Source Code属性。可以设置编排程序文件名称。系统能够下载源代码。
软件组件和编排语言
在物联网系统中,通常将软件实现组件化,比如微服务形式。这些组件化软件通常是由专业的程序员采用高级程序设计语言设计,它们包括了C/C++,Go,Python ,java,javascript。
OT工程师是编排语言来调用各种软件组件。常用的编排语言通常是解释性语言,比如JAVA,JavaScript,lua等。OT工程师更倾向使用IEC61131-3 或者IEC614991编排程序。
在MAXIM System 中,我们采用了IEC61499 作为OT 工程师的编排语言。
程序的协同执行
程序是通过远程过程调用(RPC)的方式协同执行,所有程序的RPC 通过IoT 中转。PRC协议构建了统一,简洁和标准化的接口,简化了消息系统的地址空间的复杂性。
远程过程调用是一种常用的分布式系统的通信协议,一个计算机上的程序远程调用另一台计算机上的过程。
原始的远程过程调用和程序中的函数调用类似,是同步的,向一个进程发送一个调用(Call),然后等待结果(Result)。同步RPC 也可以称为紧耦合的,如果调用后,没有返回结果,调用者就会在死等。
在IoT架构中,程序之间的消息队列采取松耦合,异步方式更加合适。在异步方式下RPC 的调用和消息返回是由两个消息完成,调用者不等待结果消息。消息的结果被“异步”地接收和处理。这可以将程序之间的相互依赖降到最低。
MAXIM System中使用异步RPC 协议。
承载PRC 调用的通信协议
程序的RPC 通过不同的通信协议传输,例如MQTT,Web socket,iosocket,HTTP RESTful 等等。
MQTT 消息系统
MQTT 的Topic 被设计的非常少,这样减少了控制器和IoT 平台订阅主题的数量,在Payload 中,包含了RPC调用详细的参数,包括源,目标节点路径,方法名称和参数
MQTT 的Topic
IoT ->控制器
<控制器名称>.Request
<控制器名称>.Result
控制器->IoT
IoTHub,Request
IoTHub.Result
MQTT的Payload
MQTTPayload={
ID:RPC-ID
To: DestinationNodePath
From:SourceNodePath
Method:RPCMethod
Parameters:RPCMethodParameters
}
源和目标节点路径
HTTP Restful
HTTP Restful主要用于HMI 前端应用程序与MAXIM System 之间Request/Client 方式消息传递。
socket.io
socket.io 主要用于HMI 前端应用程序与MAXIM System 的即时消息传递。MAXIM System 可以通过socket.io主动发送消息给前端应用程序。
远程过程调用(RPC)的方法
物联网系统中的所有应用软件都提供了远程过程调用方法,供IoT 平台以及其它应用软件调用。IoT 平台也同样提供一组RPC ,使其他应用软件访问物联网基于图模型的信息模型的数据。
基本的RPC 调用
MAXIM System 提供的基本RPC 调用
Start
Pause
Stop
LoadCode
Read
Write
Heartbeat
Read 读一个属性
Read 完成读一个节点的属性。读操作有多种模式:
-单独读操作
-连续读操作
-读数据变化
-读历史数据
后两种类似于Subscribe 订阅。
访问IoT 信息模型的RPC
程序能够直接访问信息模型,它们包括下列RPC 调用:
- GetElementsOfCatalog
- ReadElementInfor
- ReadAttribute
- CreateNewNode
- CreateNewAttribute
- CreateNewRelationship
- UpdateGeneral
- UpdateAttribute
- WriteAttribute
- DeleteNode
- DeleteAttribute
- QueryDatabase
- CreateTemplateByJSON
- CreateNodesByCVS
事件与告警
事件和告警在IOT模型中已经有定义,对与应用程序而言,只要读写相关的属性变量就可以了。
小结
本文提出了一个十分重要的理念,就是如何将物联网系统中的软件区分为软件组件和应用程序。软件组件由专业的软件工程师完成。而应用软件由OT工程师编排。建立了IT和OT的界面。以及应用程序与信息模型的界面。下一步,我们在这些理念之下,完善MAXIM System 物联网系统中。敬请期待。
在一个复杂软件的构建过程中,清晰地定义术语,理念十分重要。一个好的架构师应该是一位出色的布道师。让设计师,用户能接受你的理念,术语。
以上是关于基于图模型的物联网系统-软件组件与程序编排的主要内容,如果未能解决你的问题,请参考以下文章
最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传)