| |
|
开发:
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 调用:
事件与告警????????事件和告警在IOT模型中已经有定义,对与应用程序而言,只要读写相关的属性变量就可以了。 小结????????本文提出了一个十分重要的理念,就是如何将物联网系统中的软件区分为软件组件和应用程序。软件组件由专业的软件工程师完成。而应用软件由OT工程师编排。建立了IT和OT的界面。以及应用程序与信息模型的界面。下一步,我们在这些理念之下,完善MAXIM System 物联网系统中。敬请期待。 ? ? 在一个复杂软件的构建过程中,清晰地定义术语,理念十分重要。一个好的架构师应该是一位出色的布道师。让设计师,用户能接受你的理念,术语。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/29 8:29:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |