基于图模型的物联网系统-软件组件与程序编排

姚家湾 姚家湾     2022-12-26     736

关键词:

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

物联网程序的执行模型

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

        软件组件构成的服务称为微服务(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的物联网相机系统①(用网页实现拍照图传)(代码片段)

最简单DIY基于ESP32CAM的物联网相机系统系列文章目录第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传)文章目录最简单DIY基于ESP32CAM的物联网相机系统系列文章目录前言一、最简单DIY基于ESP32CAM... 查看详情

基于图模型的hmi设计(代码片段)

...I)是自动控制与物联网不可或缺的重要部分。在一个基于模型的物联网或者自动控制平台上如何构建HMI是一个富有挑战的课题。本文讨论如何使用图模型构建HMI模型,系统模型与HMI模型之间的相互操作。 HMI技术背景HMI... 查看详情

基于机器学习的物联网安全技术:物联网设备如何使用人工智能来增强安全性?

基于机器学习的物联网安全机器学习与物联网安全的关联物联网攻击模式基于机器学习的安全技术基于认证的学习基于恶意软件探测的学习基于访问控制的学习物联网安全卸载和学习物联网安全中机器学习的注意事项机器学习与... 查看详情

最简单diy基于esp32cam的物联网相机系统②(在javaweb服务器实现图片查看器)

最简单DIY基于ESP32CAM的物联网相机系统系列文章目录第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传)第二篇:最简单DIY基于ESP32CAM的物联网相机系统②(在JAVAWEB服务器实现图片查看器&... 查看详情

最简单diy基于esp32cam的物联网相机系统⑥(用上位机vs2013mfc实现wifi图传)(代码片段)

第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传)第二篇:最简单DIY基于ESP32CAM的物联网相机系统②(在JAVAWEB服务器实现图片查看器)第三篇:最简单DIY基于ESP32CAM的物联网相机... 查看详情

巨无霸对组件模型

 基于组件的应用程序结构域与传统的巨无霸程序有着根本的不同。为了理解不同,我们来比较一下相同应用程序的各个实施方法。 巨无霸模型现在,假设你是一个软件公司的产品经理,负责为制造业研发软件。这个软件... 查看详情

uml静态结构模型与动态行为模型的定义与作用

...开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors,也就是与系统交互的其他实体)关系,以及系统内用例之间的关系类图:类图表示不同的实体(人、事物和数据)如何彼此相关;换... 查看详情

edgex简述(代码片段)

...营的开源边缘计算物联网软件框架项目,该项目的核心是基于与硬件和操作系统完全无关的参考软件平台建立的互操作框架,使能即插即用的组件生态系统,统一市场,加速物联网方案的部署。EdgeXFoundry使有意参与的各方在开放... 查看详情

一种基于区块链的物联网架构设计

摘要目前已有一些学者基于区块链技术尝试搭建物联网系统,但基于区块链技术搭建的应用对计算资源要求较高,这些物联网系统往往无法良好地契合实际应用环境。为了降低基于区块链技术的物联网系统的复杂度,更契合实际... 查看详情

软件架构与设计-----架构模型

架构模型软件架构涉及软件系统抽象的高级结构,通过使用分解和组合,具有架构风格和质量属性。软件架构设计必须符合系统的主要功能和性能要求,并满足可靠性,可扩展性,可移植性和可用性等非功能性要求。软件架构必... 查看详情

设计几个类,用uml类图说明一个学生借阅图书系统

参考技术A基于UML的图书馆借阅管理系统设计(1)系统分析(包括系统描述(问题域描述)、用例模型、分析类图)。(2)系统设计(包括系统的逻辑模型如设计类图、顺序图、状态图及组件图等)。(3)系统实施(包括信息... 查看详情

基于zigbee设计的物联网led控制系统(代码片段)

1.前言随着LED照明越来越普及以及移动互联网技术的快速发展,人们对家居生活的网络化、智能化、节能化的需求越来越强烈,将家用电器、照明灯具等模块通过无线网络集成到控制平台,实现智能控制和智能管理,目前智能LED... 查看详情

基于zigbee设计的物联网led控制系统(代码片段)

1.前言随着LED照明越来越普及以及移动互联网技术的快速发展,人们对家居生活的网络化、智能化、节能化的需求越来越强烈,将家用电器、照明灯具等模块通过无线网络集成到控制平台,实现智能控制和智能管理,目前智能LED... 查看详情

基于lora的无线广域物联网应用系统设计

...无线广域物联网应用的经济实用方案。1总体设计典型的基于LORA的物联网应用系统是通过LORA终端向LORA基站发送 查看详情

采用esp8266+mqtt+云服务器+mysql的物联网温湿度检测系统(代码片段)

文章目录前言一、项目所使用软硬件1.硬件部分2.软件部分二、软件安装与使用1.安装宝塔2.安装EMQX3.使用宝塔与Navicat15forMySQL建立数据库4.使用EMQX将数据提取出来转存至MySQL三、硬件接线与代码1.接线部分2.核心代码四、项目效果1.... 查看详情

0代码1个人2小时完成基于工程模型的物联网可视化场景搭建

...头的各类工程项目的建设,数据可视化,尤其是基于三维模型的数据可视化变成了一个热门的领域,毫无疑问,三维可视化为工程提供了更高效和直观的管理和展示手段,已经渐渐成为了工程行业的刚需,... 查看详情

0代码1个人2小时完成基于工程模型的物联网可视化场景搭建

...头的各类工程项目的建设,数据可视化,尤其是基于三维模型的数据可视化变成了一个热门的领域,毫无疑问,三维可视化为工程提供了更高效和直观的管理和展示手段,已经渐渐成为了工程行业的刚需,... 查看详情

基于android技术的物联网应用开发(代码片段)

U4Android应用界面     4.2Android界面控件基础4.2.1文本框TextView(1)在程序中完成控件的使用TextViewtv=newTextView(this);tv.setText("HelloWorld");setContentView(tv);(2)使用XML描述控件 并在程序中引用和使用 查看详情