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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 工业物联网 将工业设备快速连接到亚马逊AWS IoT的边缘层软件AwsIotDeviceAgent -> 正文阅读

[嵌入式]工业物联网 将工业设备快速连接到亚马逊AWS IoT的边缘层软件AwsIotDeviceAgent

概述

AWS IoT 是 AWS 云服务中的物联网服务和解决方案,能够连接和管理数十亿台设备,这些设备在连接到 AWS IoT后,即可利用 AWS 提供的云服务实现完整的物联网解决方案,如数据存储、分析、机器学习和行业价值洞察。
将工业设备连接至AWS IoT需要基于AWS IoT设备开发工具包(SDK)构建边缘网关应用,这需要较为复杂的开发工作。本次发布的AwsIotDeviceAgent结合凌顶其他边缘应用软件,能够快速的实现工业设备和AWS IoT Core的交互,从而为终端用户提供开箱即用的解决方案。
AwsIotDeviceAgent提供的服务:

  1. 通过简单的配置即可将边缘网关连接到 AWS IoT Core。
  2. 提供从设备到云的数据遥测,将边缘网关内置 MDC OPCUA 服务器的标签数据持续上报到 AWS IoT Core。
  3. 提供从云到设备的远程控制,如读写工业设备参数,访问边缘网关内部数据库,远程执行网关软件等。

应用架构

凌顶边缘网关通过各类网络接口连接到工业设备的控制系统,通过 MDC OPCUA 服务器获取设备的实时生产数据,然后连接至AWS IoT Core,实现和云端的数据交互。

file

应用演示

演示步骤:

  1. 在AWS IoT Core 中创建物品,设置访问策略和获取证书文件。
  2. 使用 MDC OPCUA服务器的设备模拟驱动模拟一组变化的设备实时生产数据。
  3. 配置AwsIotDeviceAgent的定时遥测和值变化遥测,将数据上报到AWS IoT Core。
  4. 通过AwsIotDeviceAgent的日志查看遥测消息,通过AWS IoT 提供的MQTT客户端查看消息。
  5. 通过AWS IoT 提供的MQTT客户端主动读取OPCUA标签值。
  6. 通过AWS IoT 提供的MQTT客户端主动修改OPCUA标签值。

步骤一:在AWS IoT Core 中创建物品,设置访问策略和获取证书文件

  • 登陆到 AWS,进入 IoT 控制台页面。

file

  • 在左侧控制面板选择【管理】【物品】,在右侧页面点击【创建物品】。

file

  • 选择【创建单个物品】,点击【下一步】。

file

  • 输入【物品名称】,如EP31010(Edge模块的序列号)。点击【下一步】。

file

  • 选择【自动生成新证书(推荐)】,点击【下一步】。

file

  • 忽略创建策略,直接点击【创建物品】。

file

  • 下载所有证书和密钥文件。下载后点击【已完成】。后续我们需要使用到的是设备证书和私有密钥文件。

file

  • 点击进入物品EP31010的属性页面,切换到【交互】页面,点击【查看设置】。

file

  • 获取设备的【终端节点】,复制字符串到文本文件,后续在配置AwsIotDeviceAgent时需要使用。

在本页面中为 a31wmfqq9hucsv.ats.iot.cn-north-1.amazonaws.com.cn

file

  • 进入【安全】【策略】页面,点击【创建策略】,创建访问策略。

file

  • 在创建策略页面,输入【策略名称】,如EdgeAccessPolicy,点击【JSON】,切换到策略文档编辑页面。

file

  • 删除默认的策略文档内容,输入以下内容。
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Publish",
        "iot:Receive",
        "iot:RetainPublish"
      ],
      "Resource": [
        "arn:aws-cn:iot:cn-north-1:865810612014:topic/${iot:ClientId}/PreDefinedTelemetry/*",
        "arn:aws-cn:iot:cn-north-1:865810612014:topic/${iot:ClientId}/direct_method/*/c2d_request",
        "arn:aws-cn:iot:cn-north-1:865810612014:topic/${iot:ClientId}/direct_method/*/c2d_response"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": [
        "arn:aws-cn:iot:cn-north-1:865810612014:topicfilter/${iot:ClientId}/direct_method/*/c2d_request",
        "arn:aws-cn:iot:cn-north-1:865810612014:topicfilter/${iot:ClientId}/direct_method/*/c2d_response"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "iot:Connect",
      "Resource": [
        "arn:aws-cn:iot:cn-north-1:865810612014:client/${iot:ClientId}",
        "arn:aws-cn:iot:cn-north-1:865810612014:client/${iot:ClientId}_*"
      ]
    }
  ]
}
  • 点击【创建】按钮生成策略。

file

  • 关于策略资源的用途,这些策略用于服务AwsIotDeviceAgent软件的对应功能。

file

  • 进入证书页面,将刚创建的策略附加到物品的证书。

file

file

步骤二:使用 MDC OPCUA服务器的设备模拟驱动模拟一组变化的设备实时生产数据

  • 打开EdgePlant,连接到Edge网关,配置 MDC OPCUA 服务器,创建模拟设备。

file

  • 创建三个模拟数据TempCur、TempSet、Count,下载配置文件。
TempCur:在0~200之间的随机值,只读。
TempSet:可读可写,不启用模拟。
Count:0~65535,每隔1秒增1,只读。

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!--MDC_OPCUA_SERVER Project File, SCAPEAK, 2019-->
<MDC_OPCUA_SERVER_Project Name="Project" CreateTime="2022-03-08 13:15:00" Comment="默认项目配置">
  <Group Name="Group" Enable="1" Comment="组别1">
    <Device Name="SIMU" Protocol="Simulator" Enable="1" Comment="" Parm="DataCoding=8 ByteOrder=BigEndian">
      <Item Name="TempCur" Alias="" UA_Type="UA_Int16" Enable="1" Writable="0" Comment="" Parm="Area=D||Offset=0||BitNo=0||StringLength=0||InitValue=0||SimEnable=1||SimMode=rand||SimInterval=1000||ValueMin=0||ValueMax=200||IncValue=1||ValueList=" />
      <Item Name="TempSet" Alias="" UA_Type="UA_Int16" Enable="1" Writable="1" Comment="" Parm="Area=D||Offset=2||BitNo=0||StringLength=0||InitValue=0||SimEnable=0||SimMode=rand||SimInterval=1000||ValueMin=0||ValueMax=200||IncValue=1||ValueList=" />
      <Item Name="Count" Alias="" UA_Type="UA_UInt16" Enable="1" Writable="0" Comment="" Parm="Area=D||Offset=10||BitNo=0||StringLength=0||InitValue=0||SimEnable=1||SimMode=inc||SimInterval=1000||ValueMin=0||ValueMax=65535||IncValue=1||ValueList=" />
    </Device>
  </Group>
</MDC_OPCUA_SERVER_Project>

file

  • 将MDC_OPCUA_SERVER添加到开机自启,重启Edge网关。

file

  • 打开OPCUA客户端查看数据是否正常。

file

步骤三:配置AwsIotDeviceAgent的定时遥测和值变化遥测,将数据上报到AWS IoT Core

  • 打开EdgePlant的AWS IoT设备代理服务软件配置界面。

file

  • 配置参数
设备名称:EP31010,自由设置
客户端ID:EP31010,必须设置为 EP31010或者EP31010_开头,否则无法连接到AWS IoT,见上述策略文件。
服务终结点:a31wmfqq9hucsv.ats.iot.cn-north-1.amazonaws.com.cn,见上述步骤。
传输质量:QoS1,注意AWS不支持QoS2.
保活时间:30(秒)。
OPCUA服务终结点:opc.tcp://localhost:4840,即连接到网关内部MDC OPCUA服务器。
OPCUA通讯超时时间:2000毫秒
直接方法:云到设备的控制命令,启用 opcua_read_value opcua_write_value query_edge_info。
  • 点击证书和密钥参数右侧的按钮,打开证书下载对话框

file

  • 下载设备证书和设备私钥文件,选择步骤一下载的设备证书(-certificate.pem.crt)和设备私钥文件(-private.pem.key)。

file

  • 配置预配置遥测

    • 创建一个定时发布主题:每秒钟上报TempCur和Count的值。
      file

    • 定义DT(当前时间)、TempCur、Count(OPCUA标签值)。
      file

  • 保存并下载到Edge网关。整个配置文件内容:

<?xml version="1.0" encoding="utf-8"?>
<!--AwsIotDeviceAgent配置文件, 济桓科技IIOT开发部, 2020-->
<AwsIotDeviceAgent_Config Version="1.4.0.RC1">
  <IotDevice DeviceName="EP31010" ClientId="EP31010" EndPoint="a31wmfqq9hucsv.ats.iot.cn-north-1.amazonaws.com.cn" ProxyHost="" ProxyPort="8080" QoS="1" KeepAlive="30">
    <DirectMethod MethodEnable="opcua_read_value opcua_write_value query_edge_info"/>
  </IotDevice>
  <PreDefinedTelemetry>
    <Topic TopicName="CyclePub_TempCur" TopicType="RegularPublish" RegularTime="1000">
      <Field FieldName="DT" FieldAlias="日期时间字段" FieldType="DATETIME(3)" DataFormat="NOW(3)" DataSource="DataFormat" ItemNode=""/>
      <Field FieldName="TempCur" FieldAlias="OPC标签值字段" FieldType="INT" DataFormat="%d" DataSource="OpcUaServer" ItemNode="ns=1;s=Project.Group.SIMU.TempCur"/>
      <Field FieldName="Count" FieldAlias="OPC标签值字段" FieldType="INT" DataFormat="%d" DataSource="OpcUaServer" ItemNode="ns=1;s=Project.Group.SIMU.Count"/>
    </Topic>
  </PreDefinedTelemetry>
  <OpcUAServer EndpointUrl="opc.tcp://localhost:4840" Timeout="2000"/>
</AwsIotDeviceAgent_Config>
  • 将AwsIotDeviceAgent的调试等级设置为TRACE(跟踪),点击【软件列表】【下载软件参数】。

file

  • 将AwsIotDeviceAgent添加到Edge网关的开机自启。重启Edge网关。

file

步骤四:通过AwsIotDeviceAgent的日志查看遥测消息,通过AWS IoT 提供的MQTT客户端查看消息

在AwsIotDeviceAgent的调试日志中查看设备连接和遥测消息。

双击软件列表中的AwsIotDeviceAgent,打开日志记录。可以看到网关已成功连接到AWS IoT并每秒发送遥测数据。

file

在AWS IoT平台的MQTT测试客户端输入#订阅所有消息,可以看到上报的消息。

file

步骤五:通过AWS IoT 提供的MQTT客户端主动读取OPCUA标签值

从云端主动读取TempCur、TempSet和Count的值。要主动读取网关内部的OPCUA数据,我们需要使用直接方法opcua_read_value,将以下消息发送到以下主题:
请求主题:EP31010/direct_method/opcua_read_value/c2d_request
请求消息:

{
    "read_id":"1",
    "node_prefix":"ns=1;s=Project.Group.SIMU.",
    "items_read":["TempCur", "TempSet", "Count"]
} 

使用MQTT测试客户端页面测试:
订阅响应主题:EP31010/direct_method/opcua_read_value/c2d_response

file

在请求主题上发布主题消息,在响应主题上获得响应消息。

{
  "status": "200",
  "timestamp": "2022.03.08 14:02:25.891",
  "payload": {
    "read_id": "1",
    "node_prefix": "ns=1;s=Project.Group.SIMU.",
    "read_values": [
      "5",
      "0",
      "764"
    ]
  }
}

file

步骤六:通过AWS IoT 提供的MQTT客户端主动修改OPCUA标签值

从云端主动修改TempSet的值。要主动修改网关内部的OPCUA数据,我们需要使用直接方法opcua_write_value,将以下消息发送到以下主题:
请求主题:EP31010/direct_method/opcua_write_value/c2d_request
请求消息:

{
    "write_id":"1",
    "node_prefix":"ns=1;s=Project.Group.SIMU.",
    "items_write":[{"name":"TempSet","value":"123"}]         
}  

使用MQTT测试客户端页面测试:
订阅响应主题:EP31010/direct_method/opcua_write_value/c2d_response

file

在请求主题上发布主题消息,在响应主题上获得响应消息。

{
  "status": "200",
  "timestamp": "2022.03.08 14:15:16.419",
  "payload": {
    "write_id": "1",
    "node_prefix": "ns=1;s=Project.Group.SIMU.",
    "write_results": [
      "ok"
    ]
  }
}

file

通过EdgePlant的OPCUA客户端查看TempSet的值,已修改为123。

file

总结

  • AwsIotDeviceAgent 能够快速的将工业设备生产数据(通过内置的OPCUA服务器)快速上报到AWS IoT Core。
  • 通过简单的配置即可实现OPCUA数据的定时上报和值变化上报。
  • 打通云到设备的远程控制,客户端只需要在预定义好的主题上按照命令格式发布消息即可远程读写OPCUA数据。
  • 关于远程控制的更多命令和消息格式见具体技术手册。
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:43:47  更:2022-03-12 17:45:19 
 
开发: 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/26 6:53:14-

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