亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

电路的所需状态配置

使用特定于域的 LED 闪烁语言通过 Module Twin 应用于在 Raspberry Pi 上运行 Johnny 5 的 Docker 容器。

故事

概述:

Azure IoT Edge 允许间歇性连接的设备通过“模块孪生”获得所需的属性。这些孪生可用作所需的状态配置,以驱动边缘模块内的特定行为。边缘模块作为容器工作负载运行,无需持续连接即可实现自我修复和快速部署。当互联网可用时,设备可以利用云服务调用模块内的方法。

在这个项目中,我们使用 Azure IoT NodeJS SDK 开发了一个 IoT Edge 模块,该模块从云中获取所需的状态,该状态配置 Raspberry Pi 上的 GPIO 引脚以使用以下方法在连接的电路上执行所需的操作约翰尼 5.

这可以允许有趣的用例,例如:* 通过应用不同的状态配置允许单个电路的多种操作模式* 两个设备连接到同一电路时的冗余硬件故障转移,当编排并正确配置时Kubernetes。

背景:

期望状态配置是一个流行的概念,通常在首次配置服务器时使用,并在运行系统中强制执行合规性。我们将这一概念扩展到使用服务的电路,这些服务旨在在网络连接可能间歇性的区域中实现弹性和健康运行。这种方法允许我们在运行时更改连接电路的行为,并允许涉及硬件冗余的有趣场景。

来自 Microsoft 的 Azure IoT Edge 运行时使我们能够为该项目奠定坚实的基础。此运行时在本地硬件上作为服务运行,并允许编排在 Azure 云中按设备配置的容器化“模块”。始终采用两个系统模块,获取和应用模块部署配置的边缘代理和允许缓存消息到云和模块间通信的边缘集线器。

我们首先使用 Azure IoT NodeJS SDK 创建了一个 Azure IoT Edge 模块。该模块接收一个孪生配置,该配置指定给定设备所需的和报告的属性。我们使用解析为 Johny 5 配置的域特定语言。这使我们能够定义电路在云中的工作方式,并将其应用于我们的 IoT Edge 模块。

下面提供了一个示例配置:

“config”:“{\”peripherals\”:[{\”type\”:\”Led\”,\”name\”:\”alarm\”,\”settings\”
:{\ ”pin\”:\”GPIO18\”},\”initialState\”:{\”method\”:\”blink\”,\”period\”:500},\
“outputAlias\”:\”alias2\”},{\”type\”:\”Button\”,\”name\”:\”button\”,\”settings\”:
{\”pin\”:\ ”GPIO20\”},\”outputAlias\”:\”alias1\”}]}”,

此示例在 GPIO18 上定义了一个 LED 设备,其初始状态为每 500 毫秒闪烁一次开/关。 LED 的状态能够使用 outputAlias 传播到其他模块。 GPIO20 上还使用了一个按钮,它将状态更改发布到 alias1。在这样的配置中,我们可以通过路由 outputAlias 来独立响应附加模块中的状态变化。

我们目前支持使用这种机制配置温度计、LED 和按钮设备。

重现步骤:

首先,您需要一个 Microsoft Azure 订阅并部署了 IoT 中心。

接下来,您需要通过将 LED 连接到 Raspberry Pi 的 GPIO18 来开始配置您的硬件。可以在此处找到此过程的说明。

准备好电路和云服务后,您需要按照本指南将 Azure IoT Edge 运行时安装到您的 Raspberry Pi。安装运行时后,您需要按照这些说明手动配置设备。

接下来,我们将在 Azure 中创建一个特殊的部署,让我们可以使 LED 闪烁。

创建如下所示的部署:

图片网址:

toolboc/johnny5onedge:0.0.981-arm32v7

容器创建选项:

{“ExposedPorts”:{“9229/tcp”:{}},“HostConfig”:{“PortBindings”:{“9229/tcp”:[{“HostPort”:“9229”}]},“Privileged”:true ,“设备”:[{“PathOnHost”:“/dev/i2c-1”,“PathInContainer”:“/dev/i2c-1”,“CgroupPermissions”:“rwm”},{“PathOnHost”:“/dev /gpiomem”,“PathInContainer”:“/dev/gpiomem”,“CgroupPermissions”:“rwm”}],“Mounts”:[{“Type”:“bind”,“Source”:“/lib/modules/” ,“目标”:“/lib/modules/”}]}}

Module Twin 所需的属性:

{
“properties.desired”:{
“config”:“{\”peripherals\”:[{\”type\”:\”Led\”,\”name\”:\” alarm\”,\”settings\”:{\”pin\”:\”GPIO18\”},\”initialState\”:{\”method\”:\”blink\”,\”period\”:500 },\”outputAlias\”:\”alias2\”},{\”type\”:\”Button\”,\”name\”:\”on\”,\”settings\”:{\”pin \”:\”GPIO20\”},\”outputAlias\”:\”alias1\”}]}”
}
}

完成后保存。然后跳过“指定路由”和“指定指标”部分,直到到达“目标设备”。

将 Priority 设置为 10 并添加 tags.environment='blinK 的目标条件

阅读更多信息.....

电路的期望状态配置


制造工艺

  1. Azure 中的 Kubernetes:成功的工具和技巧
  2. Azure 认证:Cloud Institute 的专家解释哪种更适合您
  3. Azure DevOps 认证适合我吗?
  4. 如何在没有培训的情况下准备 Azure DevOps 认证考试?
  5. 如何对 AWS、GCP 和 Azure 进行有效的成本管理
  6. 控制电路
  7. 危险情况下的 HMI 配置
  8. 信号电路用屏蔽电缆(第 2 部分)
  9. 信号电路用屏蔽电缆(第 1 部分)
  10. 微软为 5G 应用程序推出 Azure Edge Zones
  11. 最先进的 CAD/CAM 技术:工程材料的有利制造方法
  12. 了解引擎配置