IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于图模型的物联网系统(2)-软件组件与程序编排 -> 正文阅读

[嵌入式]基于图模型的物联网系统(2)-软件组件与程序编排

????????在基于图模型的物联网系统中,信息模型描述了各个物模型以及它们的相互关系。看上去它们都是静态的数据模型那么,物联网系统的程序如何建模,并且执行呢?本博文讨论这个问题。

物联网程序的执行模型

????????物联网程序是分布式结构,它们包括了设备中的嵌入式软件,边缘服务器和云端的软件。这些软件有的是为其它程序提供服务的软件组件,有的是应用软件。

????????软件组件构成的服务称为微服务(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

RequestIoT

ResultIoT

?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 物联网系统中。敬请期待。

? ? 在一个复杂软件的构建过程中,清晰地定义术语,理念十分重要。一个好的架构师应该是一位出色的布道师。让设计师,用户能接受你的理念,术语。
?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-29 09:31:07  更:2021-08-29 09:34:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:00:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码