概述
AWS IoT 是 AWS 云服務(wù)中的物聯(lián)網(wǎng)服務(wù)和解決方案,能夠連接和管理數(shù)十億臺(tái)設(shè)備,這些設(shè)備在連接到 AWS IoT后,即可利用 AWS 提供的云服務(wù)實(shí)現(xiàn)完整的物聯(lián)網(wǎng)解決方案,如數(shù)據(jù)存儲(chǔ)、分析、機(jī)器學(xué)習(xí)和行業(yè)價(jià)值洞察。
將工業(yè)設(shè)備連接至AWS IoT需要基于A(yíng)WS IoT設(shè)備開(kāi)發(fā)工具包(SDK)構(gòu)建邊緣網(wǎng)關(guān)應(yīng)用,這需要較為復(fù)雜的開(kāi)發(fā)工作。本次發(fā)布的AwsIotDeviceAgent結(jié)合凌頂其他邊緣應(yīng)用軟件,能夠快速的實(shí)現(xiàn)工業(yè)設(shè)備和AWS IoT Core的交互,從而為終端用戶(hù)提供開(kāi)箱即用的解決方案。
AwsIotDeviceAgent提供的服務(wù):
- 通過(guò)簡(jiǎn)單的配置即可將邊緣網(wǎng)關(guān)連接到 AWS IoT Core。
- 提供從設(shè)備到云的數(shù)據(jù)遙測(cè),將邊緣網(wǎng)關(guān)內(nèi)置 MDC OPCUA 服務(wù)器的標(biāo)簽數(shù)據(jù)持續(xù)上報(bào)到 AWS IoT Core。
- 提供從云到設(shè)備的遠(yuǎn)程控制,如讀寫(xiě)工業(yè)設(shè)備參數(shù),訪(fǎng)問(wèn)邊緣網(wǎng)關(guān)內(nèi)部數(shù)據(jù)庫(kù),遠(yuǎn)程執(zhí)行網(wǎng)關(guān)軟件等。
應(yīng)用架構(gòu)
凌頂邊緣網(wǎng)關(guān)通過(guò)各類(lèi)網(wǎng)絡(luò)接口連接到工業(yè)設(shè)備的控制系統(tǒng),通過(guò) MDC OPCUA 服務(wù)器獲取設(shè)備的實(shí)時(shí)生產(chǎn)數(shù)據(jù),然后連接至AWS IoT Core,實(shí)現(xiàn)和云端的數(shù)據(jù)交互。
應(yīng)用演示
演示步驟:
- 在A(yíng)WS IoT Core 中創(chuàng)建物品,設(shè)置訪(fǎng)問(wèn)策略和獲取證書(shū)文件。
- 使用 MDC OPCUA服務(wù)器的設(shè)備模擬驅(qū)動(dòng)模擬一組變化的設(shè)備實(shí)時(shí)生產(chǎn)數(shù)據(jù)。
- 配置AwsIotDeviceAgent的定時(shí)遙測(cè)和值變化遙測(cè),將數(shù)據(jù)上報(bào)到AWS IoT Core。
- 通過(guò)AwsIotDeviceAgent的日志查看遙測(cè)消息,通過(guò)AWS IoT 提供的MQTT客戶(hù)端查看消息。
- 通過(guò)AWS IoT 提供的MQTT客戶(hù)端主動(dòng)讀取OPCUA標(biāo)簽值。
- 通過(guò)AWS IoT 提供的MQTT客戶(hù)端主動(dòng)修改OPCUA標(biāo)簽值。
步驟一:在A(yíng)WS IoT Core 中創(chuàng)建物品,設(shè)置訪(fǎng)問(wèn)策略和獲取證書(shū)文件
- 登陸到 AWS,進(jìn)入 IoT 控制臺(tái)頁(yè)面。
- 在左側(cè)控制面板選擇【管理】【物品】,在右側(cè)頁(yè)面點(diǎn)擊【創(chuàng)建物品】。
- 選擇【創(chuàng)建單個(gè)物品】,點(diǎn)擊【下一步】。
- 輸入【物品名稱(chēng)】,如EP31010(Edge模塊的序列號(hào))。點(diǎn)擊【下一步】。
- 選擇【自動(dòng)生成新證書(shū)(推薦)】,點(diǎn)擊【下一步】。
- 忽略創(chuàng)建策略,直接點(diǎn)擊【創(chuàng)建物品】。
- 下載所有證書(shū)和密鑰文件。下載后點(diǎn)擊【已完成】。后續(xù)我們需要使用到的是設(shè)備證書(shū)和私有密鑰文件。
- 點(diǎn)擊進(jìn)入物品EP31010的屬性頁(yè)面,切換到【交互】頁(yè)面,點(diǎn)擊【查看設(shè)置】。
- 獲取設(shè)備的【終端節(jié)點(diǎn)】,復(fù)制字符串到文本文件,后續(xù)在配置AwsIotDeviceAgent時(shí)需要使用。
在本頁(yè)面中為 a31wmfqq9hucsv.ats.iot.cn-north-1.amazonaws.com.cn
- 進(jìn)入【安全】【策略】頁(yè)面,點(diǎn)擊【創(chuàng)建策略】,創(chuàng)建訪(fǎng)問(wèn)策略。
- 在創(chuàng)建策略頁(yè)面,輸入【策略名稱(chēng)】,如EdgeAccessPolicy,點(diǎn)擊【JSON】,切換到策略文檔編輯頁(yè)面。
- 刪除默認(rèn)的策略文檔內(nèi)容,輸入以下內(nèi)容。
{
"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}_*"
]
}
]
}
- 點(diǎn)擊【創(chuàng)建】按鈕生成策略。
- 關(guān)于策略資源的用途,這些策略用于服務(wù)AwsIotDeviceAgent軟件的對(duì)應(yīng)功能。
- 進(jìn)入證書(shū)頁(yè)面,將剛創(chuàng)建的策略附加到物品的證書(shū)。
步驟二:使用 MDC OPCUA服務(wù)器的設(shè)備模擬驅(qū)動(dòng)模擬一組變化的設(shè)備實(shí)時(shí)生產(chǎn)數(shù)據(jù)
- 打開(kāi)EdgePlant,連接到Edge網(wǎng)關(guān),配置 MDC OPCUA 服務(wù)器,創(chuàng)建模擬設(shè)備。
- 創(chuàng)建三個(gè)模擬數(shù)據(jù)TempCur、TempSet、Count,下載配置文件。
TempCur:在0~200之間的隨機(jī)值,只讀。
TempSet:可讀可寫(xiě),不啟用模擬。
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="默認(rèn)項(xiàng)目配置">
<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>
- 將MDC_OPCUA_SERVER添加到開(kāi)機(jī)自啟,重啟Edge網(wǎng)關(guān)。
- 打開(kāi)OPCUA客戶(hù)端查看數(shù)據(jù)是否正常。
步驟三:配置AwsIotDeviceAgent的定時(shí)遙測(cè)和值變化遙測(cè),將數(shù)據(jù)上報(bào)到AWS IoT Core
- 打開(kāi)EdgePlant的AWS IoT設(shè)備代理服務(wù)軟件配置界面。
- 配置參數(shù)
設(shè)備名稱(chēng):EP31010,自由設(shè)置
客戶(hù)端ID:EP31010,必須設(shè)置為 EP31010或者EP31010_開(kāi)頭,否則無(wú)法連接到AWS IoT,見(jiàn)上述策略文件。
服務(wù)終結(jié)點(diǎn):a31wmfqq9hucsv.ats.iot.cn-north-1.amazonaws.com.cn,見(jiàn)上述步驟。
傳輸質(zhì)量:QoS1,注意AWS不支持QoS2.
保活時(shí)間:30(秒)。
OPCUA服務(wù)終結(jié)點(diǎn):opc.tcp://localhost:4840,即連接到網(wǎng)關(guān)內(nèi)部MDC OPCUA服務(wù)器。
OPCUA通訊超時(shí)時(shí)間:2000毫秒
直接方法:云到設(shè)備的控制命令,啟用 opcua_read_value opcua_write_value query_edge_info。
- 點(diǎn)擊證書(shū)和密鑰參數(shù)右側(cè)的按鈕,打開(kāi)證書(shū)下載對(duì)話(huà)框
- 下載設(shè)備證書(shū)和設(shè)備私鑰文件,選擇步驟一下載的設(shè)備證書(shū)(-certificate.pem.crt)和設(shè)備私鑰文件(-private.pem.key)。
-
配置預(yù)配置遙測(cè)
-
創(chuàng)建一個(gè)定時(shí)發(fā)布主題:每秒鐘上報(bào)TempCur和Count的值。
-
定義DT(當(dāng)前時(shí)間)、TempCur、Count(OPCUA標(biāo)簽值)。
-
-
保存并下載到Edge網(wǎng)關(guān)。整個(gè)配置文件內(nèi)容:
<?xml version="1.0" encoding="utf-8"?>
<!--AwsIotDeviceAgent配置文件, 濟(jì)桓科技IIOT開(kāi)發(fā)部, 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="日期時(shí)間字段" FieldType="DATETIME(3)" DataFormat="NOW(3)" DataSource="DataFormat" ItemNode=""/>
<Field FieldName="TempCur" FieldAlias="OPC標(biāo)簽值字段" FieldType="INT" DataFormat="%d" DataSource="OpcUaServer" ItemNode="ns=1;s=Project.Group.SIMU.TempCur"/>
<Field FieldName="Count" FieldAlias="OPC標(biāo)簽值字段" 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的調(diào)試等級(jí)設(shè)置為T(mén)RACE(跟蹤),點(diǎn)擊【軟件列表】【下載軟件參數(shù)】。
- 將AwsIotDeviceAgent添加到Edge網(wǎng)關(guān)的開(kāi)機(jī)自啟。重啟Edge網(wǎng)關(guān)。
步驟四:通過(guò)AwsIotDeviceAgent的日志查看遙測(cè)消息,通過(guò)AWS IoT 提供的MQTT客戶(hù)端查看消息
在A(yíng)wsIotDeviceAgent的調(diào)試日志中查看設(shè)備連接和遙測(cè)消息。
雙擊軟件列表中的AwsIotDeviceAgent,打開(kāi)日志記錄。可以看到網(wǎng)關(guān)已成功連接到AWS IoT并每秒發(fā)送遙測(cè)數(shù)據(jù)。
在A(yíng)WS IoT平臺(tái)的MQTT測(cè)試客戶(hù)端輸入#訂閱所有消息,可以看到上報(bào)的消息。
步驟五:通過(guò)AWS IoT 提供的MQTT客戶(hù)端主動(dòng)讀取OPCUA標(biāo)簽值
從云端主動(dòng)讀取TempCur、TempSet和Count的值。要主動(dòng)讀取網(wǎng)關(guān)內(nèi)部的OPCUA數(shù)據(jù),我們需要使用直接方法opcua_read_value,將以下消息發(fā)送到以下主題:
請(qǐng)求主題:EP31010/direct_method/opcua_read_value/c2d_request
請(qǐng)求消息:
{
"read_id":"1",
"node_prefix":"ns=1;s=Project.Group.SIMU.",
"items_read":["TempCur", "TempSet", "Count"]
}
使用MQTT測(cè)試客戶(hù)端頁(yè)面測(cè)試:
訂閱響應(yīng)主題:EP31010/direct_method/opcua_read_value/c2d_response
在請(qǐng)求主題上發(fā)布主題消息,在響應(yīng)主題上獲得響應(yīng)消息。
{
"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"
]
}
}
步驟六:通過(guò)AWS IoT 提供的MQTT客戶(hù)端主動(dòng)修改OPCUA標(biāo)簽值
從云端主動(dòng)修改TempSet的值。要主動(dòng)修改網(wǎng)關(guān)內(nèi)部的OPCUA數(shù)據(jù),我們需要使用直接方法opcua_write_value,將以下消息發(fā)送到以下主題:
請(qǐng)求主題:EP31010/direct_method/opcua_write_value/c2d_request
請(qǐng)求消息:
{
"write_id":"1",
"node_prefix":"ns=1;s=Project.Group.SIMU.",
"items_write":[{"name":"TempSet","value":"123"}]
}
使用MQTT測(cè)試客戶(hù)端頁(yè)面測(cè)試:
訂閱響應(yīng)主題:EP31010/direct_method/opcua_write_value/c2d_response
在請(qǐng)求主題上發(fā)布主題消息,在響應(yīng)主題上獲得響應(yīng)消息。
{
"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"
]
}
}
通過(guò)EdgePlant的OPCUA客戶(hù)端查看TempSet的值,已修改為123。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-421246.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-421246.html
總結(jié)
- AwsIotDeviceAgent 能夠快速的將工業(yè)設(shè)備生產(chǎn)數(shù)據(jù)(通過(guò)內(nèi)置的OPCUA服務(wù)器)快速上報(bào)到AWS IoT Core。
- 通過(guò)簡(jiǎn)單的配置即可實(shí)現(xiàn)OPCUA數(shù)據(jù)的定時(shí)上報(bào)和值變化上報(bào)。
- 打通云到設(shè)備的遠(yuǎn)程控制,客戶(hù)端只需要在預(yù)定義好的主題上按照命令格式發(fā)布消息即可遠(yuǎn)程讀寫(xiě)OPCUA數(shù)據(jù)。
- 關(guān)于遠(yuǎn)程控制的更多命令和消息格式見(jiàn)具體技術(shù)手冊(cè)。
到了這里,關(guān)于工業(yè)物聯(lián)網(wǎng) 將工業(yè)設(shè)備快速連接到亞馬遜AWS IoT的邊緣層軟件AwsIotDeviceAgent的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!