国产精品一区在线观看你懂的,三级电影网站免费观看,日韩黄色网,大黄网站在线观看

當前位置: 首頁 >應用方案 >技術應用 >

利用云平臺腳本解析連接物模型(一)

不久前億佰特小編發(fā)布在《串口服務器接入阿里云物模型》一文中通過編寫TPC-7062MCGS腳本)的腳本程序解析Alink JSON數(shù)據,從而實現(xiàn)阿里云物模型采集控制RTU設備。

本文將介紹另一種方式實現(xiàn)阿里云物模型控制RTU設備,之前是通過設備進行數(shù)據解析,因此開發(fā)者既需要了解MCGS腳本程序還需要了解Modbus協(xié)議導致使用門檻較高,而本文使用方法無需使用設備解析Alink JSON數(shù)據,因此不需要編寫MCGS腳本從而降低是使用門檻。

小編將通過物模型查詢RTU設備的保持寄存器(0x0000)的值講解如何實現(xiàn)該功能。

一.軟硬件準備

1.硬件準備

串口服務器一臺用于連接MQTT服務器,本例程的從機將通過Modbus Slave仿真實現(xiàn)(方便觀察數(shù)據變化);

可上網路由器一臺;

網線兩根,一根連接串口服務器與路由器,一根連接電腦與路由器;

電腦一臺,用于配置串口服務器以及調試云平臺;

2.軟件準備

MQTTX調試工具(https://mqttx.app/zh),用于接入前數(shù)據幀分析;

Modbus Slave仿真工具(https://www.modbustools.com/),用于Modbus RTU從機仿真;

億佰特網絡配置工具(http:///product/1465.html,相關下載),用于配置串口服務器,可以不適應軟件通過網頁配置,由于設備采用DHCP獲取本機IP,因此采用上位機配置更為方便;

二.云平臺

第一次使用阿里云的數(shù)據解析功能,并且這是筆者第一次使用JavaScript(ECMAScript 5)編寫腳本,因此接下的云平臺配置都將參考阿里云幫助中性的最佳實例下的設備通過DTU接入物聯(lián)網平臺”進行開發(fā),建議開發(fā)者仔細閱讀阿里云手冊可以發(fā)現(xiàn)不一樣的世界,活學活用里面案例能對初學者有很好的引導和啟發(fā)。

阿里云平臺

三.產品與設備創(chuàng)建

1.產品創(chuàng)建

這次創(chuàng)建的產品和以往的不同不能無腦點擊下一步,需要調整數(shù)據收發(fā)協(xié)議為透傳/自定義,如下圖:

阿里云產品創(chuàng)建2

其余參數(shù)保持默認。

2.設備創(chuàng)建

阿里云設備創(chuàng)建3

3.物模型配置

在產品詳情下的功能定義目錄下點擊編輯草稿”,選擇添加自定義功能;

物模型配置4

一共需要添加兩個自定義功能,一個用于保存寄存器值(左圖),一個用于物模型發(fā)起讀取指令;

物模型配置5

這里需要分析下Modbus響應數(shù)據幀,0103020064320C,可以看到響應幀只有地址用于標記,未標記寄存器地址,因此只有在平臺對收發(fā)數(shù)據進行標記,本例程重點介紹連接使用不需要考慮標記,保留接口待后續(xù)使用。因此在定義功能時使用枚舉變量。

腳本語言JavaScript(ECMAScript 5)配置

復制參考實例的腳本,并調整部分配置,如下:

var ALINK_ID = "12345";

var ALINK_VERSION = "1.1";

var ALINK_PROP_POST_METHOD = 'thing.event.property.post';

var ALINK_PROP_SET_METHOD = 'thing.service.property.set';

/*此函數(shù)將設備上報數(shù)據轉換為Alink JSON物模型數(shù)據。*/

function rawDataToProtocol(bytes) {

? ?/*將設備上報的原始數(shù)據轉換為數(shù)組。其中bytes對象中存儲著設備上報原始數(shù)據。*/

? ?var uint8Array = new Uint8Array(bytes.length);

? ?for (var i = 0; i < bytes.length; i++) {

? ? ? ?uint8Array[i] = bytes[i] & 0xff;

? ?}

? ?var params = {}; ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 定義屬性存放對象。

? ?var jsonMap = {}; ? ? ? ? ? ? ? ? ? ? ? ? ? // 定義模擬Alink數(shù)據報對象。

? ?/*填寫Alink數(shù)據報協(xié)議頭部分。*/

? ?jsonMap['version'] = ALINK_VERSION; ? ? ? ? // Alink 協(xié)議版本號。

? ?jsonMap['id'] = ALINK_ID; ? ? ? ? ? ? ? ? ? // 消息ID。

? ?jsonMap['method'] = ALINK_PROP_POST_METHOD; // 設備上行數(shù)據方法:設備屬性上報。

/*填寫Alink數(shù)據報屬性部分。*/

//0103020064320c

? ?params['register'] = uint8Array[3]*265+ uint8Array[4]; ? ? ? ? ? ?// 將收到的第一和第二字節(jié)轉換為十進制數(shù)存儲。

? ?jsonMap['params'] = params; ? ? ? ? ? ? ? ? // 將參數(shù)打包到數(shù)據幀中。

? ?return jsonMap; ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 返回結果會發(fā)送給物聯(lián)網平臺。

}

//以下是部分輔助函數(shù)。

function buffer_uint8(value)

{

? ?var uint8Array = new Uint8Array(1);

? ?var dv = new DataView(uint8Array.buffer, 0);

? ?dv.setUint8(0, value);

? ?return [].slice.call(uint8Array);

}

/*此函數(shù)實現(xiàn)由物聯(lián)網平臺下發(fā)數(shù)據轉換為設備能識別的16進制數(shù)。*/

function protocolToRawData(json)

{

? ?var method = json['method'];

? ?var id = json['id'];

? ?var version = json['version'];

? ?var payloadArray = [];

? ?if (method == ALINK_PROP_SET_METHOD) ? ?// 接收來自物聯(lián)網平臺的“設置設備屬性”的命令。

? ?{

? ? ? ?var send_params = json['params'];

? ? ? ?var prop_cur = send_params['READ_R']; ? // 將設置的具體值抽取出來。

? ? ? ?//按照自定義協(xié)議格式拼接rawdata。

//0103000000018833

? ? ? ?payloadArray = payloadArray.concat(buffer_uint8(0x01));

payloadArray = payloadArray.concat(buffer_uint8(0x03));

payloadArray = payloadArray.concat(buffer_uint8(0x00));

payloadArray = payloadArray.concat(buffer_uint8(0x00));

payloadArray = payloadArray.concat(buffer_uint8(0x00));

payloadArray = payloadArray.concat(buffer_uint8(0x01));

payloadArray = payloadArray.concat(buffer_uint8(0x88));//校驗錯誤,但保留錯誤,引導學習如何分析問題,見“從機仿真”,正確校驗0x840A

payloadArray = payloadArray.concat(buffer_uint8(0x33));//

? ?}

? ?return payloadArray; ? ?// 返回時,將數(shù)據發(fā)送至設備端。

}

function transformPayload(topic, rawData) {

? ?var jsonObj = {};

? ?return jsonObj;

}

將上述腳本粘貼到產品詳情下的數(shù)據解析”,如圖所示:

物聯(lián)網云平臺配置6

腳本語言測試與提交

測試數(shù)據上報功能,如下圖所示:

數(shù)據上報7

測試數(shù)據下發(fā)功能,如下圖所示:

數(shù)據下發(fā)8

測試完成點擊“提交”,自此云平臺腳本與產品配置完成。

四.軟件調試

1.MQTT X軟件測試

使用MQTT X軟件連接MQTT服務器進行測試,配置如下:

MQTT協(xié)議服務器9

查詢“訂閱”“發(fā)布”的地址,如下圖所示:

MQTT協(xié)議服務器10

平臺發(fā)送讀取請求,如下圖所示:

MQTT協(xié)議服務器11

MQTT X發(fā)送響應幀,如下圖所示:

MQTT協(xié)議服務器12

通過調試軟件可以更加直觀的對數(shù)據幀進行分析,若發(fā)現(xiàn)數(shù)據幀錯誤可以更加方便定位問題,這里是沒有錯誤的可進入下一步串口服務器演示。

五.設備演示

串口服務器參數(shù)配置,如下圖所示:

串口服務器13

從機仿真

Modbus Slave并非免費軟件,可免費試用30天,若有長時間使用需求請購買正版授權。

點擊Connection”配置連接參數(shù),選擇“Serial Port”,并配置正確端口與匹配的波特率參數(shù),如下圖所示:

串口服務器14

配置仿真軟件的保持寄存器值,如下圖所示:

串口服務器15

物模型發(fā)送查詢指令,仿真從機收到云平臺下發(fā)指令,仿真設備未響應,檢查發(fā)現(xiàn)之前使用的校驗工具沒有配置正確導致校驗錯誤。

串口服務器16

修改腳本中關于校驗的兩位,注意需要先調試才能提交生效。

串口服務器17

修改后再次發(fā)送,如下圖所示:

串口服務器18

效果演示,如下圖所示:

串口服務器19

利用云平臺腳本解析連接物模型(



點擊撥打: 億佰特官網 4000-330-990