前言:
通過配置 DTU 的腳本指令實現 DTU 定時自動采集,用戶只需知道外接儀表、無需再單獨 增加控制器 傳感器的采集流程,然后通過編寫腳本指令即可讓 DTU 按照用戶的流程自動采集、上傳數 據。腳本實現了基本的開關控制、延時控制、指令下發、循環控制、上報控制、插入自定義 報文頭、是否接收儀表應答、波特率改變等功能,能滿足大部分儀表的采集需求。
此文檔定義的腳本指令主要是為了實現 DTU 自動采集功能,在某種情況下,用戶可能 需要數據中心遠程控制采集或者干預一些開關動作,眾山 DTU 也支持用戶的數據中心通過 SHELL:+腳本的形式發送給 DTU,DTU 收到此數據會臨時執行一次數據中心下發的腳本來實 現遠程采集和控制。如數據中心下發:SHELL:@W1=1@C=0102@W1=0 DTU 收到 SHELL:開 始的數據不會透傳給 DTU 串口,而是執行一次腳本。--本文針對眾山科技DTU腳本指令詳解。
一、腳本格式:
@cmd=value
@:腳本頭,每一條腳本指令都使用@開始。
cmd:指令,為 1 或多個字符、數字組成的字符串,不區分大小寫,下面詳解每一條腳 本指令的含義。
value:指令動作,指定指令需要執行的值。
二、腳本指令詳解:
E: ECHO 回顯,此腳本指令控制 C 腳本指令下發給儀表的采集命令是否需要同時上報
給中心,value 為 1 表示需要回顯,value 為 0 表示不回顯。不使用此指令時默認為
不回顯。此指令為整個腳本全局生效指令,直到腳本結束。如果有些采集指令需要
回顯有些不需要回顯只需要在相應的采集指令前加入此指令做相應的控制即可。
示例:
@E=1 回顯采集命令
@E=0 不回顯采集命令
M:標記,此腳本指令無實際動作,用于產生一個標記,和 L 指令配合完成 LOOP 循環
控制。value 為 1-3,支持 3 個標記,循環嵌套時需要使用不同的標記,非嵌套循環
可以重復使用。
示例:
@M=1 產生 M1 標記點
@M=2 產生 M2 標記點
L: 循環腳本,此腳本指令控制循環到標記點的次數,用于需要對儀表進行多次重復數 據
采集的場合,比如需要對儀表連續采集 3 次數據。value 為 x,y 的格式,x 表示標 記點,值
為 1-3 表示 M1~M3 標記點,y 為循環次數。3 個標記點允許實現 3 層循環 的嵌套,不嵌套
的循環無限制,可以重復使用標記點。腳本執行到 L 指令時立即跳轉到指定的 M 標記點,
直到達到循環指定的次數后,繼續往后面執行。
示例:
@L=1,3 表示跳轉到 M1 標記,循環執行 3 次。
@L=2,2 表示跳轉到 M2 標記,循環執行 2 次。
T: 數據上報中心控制,此腳本指令用于實現多次采集周期結束后一次性上報數據的 應用,比如
用戶設置每 5 分鐘采集一次數據,1 小時上報一次,就可以通過設置此 指令值為 12 來實現。
value 表示次數,默認為 1 次,即當次采集周期結束后立即上 報。此指令為整個腳本全局生效指
令,直到腳本結束,并且只允許出現一次此指令, 如果此腳本出現多次時,以最后一次的值為有
效。注意:此指令控制的上報次數以 一次腳本完全執行結束為一個周期,與 L 指令控制的循環執
行不產生影響。
示例:
@T=3 表示 3 個采集周期結束后才上報數據。
B: 波特率控制,此腳本指令用于外接多個不同波特率儀表或者儀表波特率與 DTU 串口 波特率不相
同時臨時改變 DTU 的串口波特率。value 為波特率值,需要在發送采集 命令前通過此指令改變 DTU
波特率與儀表波特率一致。當腳本執行結束,會自動 回到 DTU 默認的串口波特率。
示例:
@B=38400
H: 數據頭控制,此腳本指令用于在采集的儀表數據前加入用戶自定義的數據頭或用 戶便于解析的
特征碼等, 比如在進行多個儀表數據采集時加入分隔符便于區分不 同的儀表數據,value 為可見的
HEX 字符,比如 123 表示為 313233。此指令執行一 次立即失效,如果需要在不同的采集指令前插
入特征碼需要分開加入此指令,特征 碼可以相同也可以不同。
示例:
@H=AA5501
@H=AA5502
C: 儀表下發命令,此腳本指令用于定義下發給儀表的采集命令內容,value 為可見的 HEX 字符,執
行到此腳本 DTU 會通過串口把內容發送給儀表,同時如果回顯為開 DTU 會立即把此內容加入上報隊列。
示例:
下發 Modbus 采集指令:01 03 00 01 00 01 12 34
腳本表示為:@C=0103000100011234
A: 接收儀表應答控制,此腳本指令用于控制 DTU 是否接收儀表的應答,value 為 1 表 示接收應答,
value 為 0 表示不接收應答。不使用此指令時默認為接收應答。此指 令為整個腳本全局生效指令,直到
腳本結束,如果有些采集指令需要接收應答有些 不需要接收應答只需在相應的采集命令前加入此指令做
相應的控制即可
示例:
@A=0 不接收后面的儀表應答數據
D: 延時控制,此腳本指令用于控制延時,DTU 發送采集命令后的延時控制或者等待 應答的延時控制。
value 為數字+單位的格式,單位有 S(秒)、M(分鐘)、H(小時),DTU 遇到此指令后等待相應的延時值再
繼續執行腳本。
示例:
@D=10S (等待 10 秒)
@D=2M (等待 2 分鐘)
@D=1H (等待 1 小時)
S: 立即上報數據控制,此腳本指令用于控制 DTU 立即上報儀表數據。value 為 1 表 示立即上報,默認
情況下 DTU 執行完 T 指令控制的采集次數后上報(T 默認為 1, 每次腳本執行結束都上報),用戶在需
要分開上報多個儀表數據時或者 1 個儀表的 多條數據時,可以在發送采集命令后,DTU 已經收到儀表應
答時插入@S=1 來立即 上報之前的數據。
示例:
@S=1 立即上報
W1:開關 1 控制,此腳本指令用于 DTU 控制外接儀表的電源。value 為 1表 示 開 , value 為 0 表示關。
示例:
@W1=1 打開開關 1
@W1=0 關閉開關 1
注:需要硬件支持有開關控制的型號才支持此指令。
W2:開關 2 控制,此腳本指令用于 DTU 控制外接儀表的電源。value 為 1表 示 開 , value 為 0 表示關。
示例:
@W2=1 打開開關 2
@W2=0 關閉開關 2
注:需要硬件支持有開關控制的型號才支持此指令。
W3:開關 3 控制,此腳本指令用于 DTU 控制外接儀表的電源。value 為 1表 示 開 , value 為 0 表示關。
示例:
@W3=1 打開開關 3
@W3=0 關閉電開關 3
注:需要硬件支持有開關控制的型號才支持此指令。
I1:數字量 DI1 狀態上報,DI1 觸發控制,此腳本指令用于 DTU 采集 DI1 的狀態以及配 置 DI1 的狀態改變
時觸發采集腳本的執行。 value 的值可為:?(報告狀態)、 0 (下降沿觸發采集)、1(上升沿觸發采集)、2(下降沿和上升沿均觸發采集)、
其他(不觸發采集)。默認 DI1 不觸發采集。此指令可以出現多個,比如需要上報 DI1 狀態同時又需要配置 DI1 的觸發采集。如:配置 DI1 為下降沿觸發采集且同時 上報 DI1 狀態,可配置腳本@I1=0@I1=?
示例:
@I1=? 采集 DI1 狀態,小提示:可在前面插入 H 指令加入便于識別的頭。
@I1=0 DI1 下降沿觸發采集
@I1=1 DI1 上升沿觸發采集 @I1=2 DI1 上升沿和下降沿觸發采集
@I1=其他 DI1 不觸發采集(默認,可省略),即使不觸發采集也可在腳本 中插入
@I1=?讓 DTU 定時采集時報告 DI1 的狀態。
I2:數字量 DI2 狀態上報,DI2 觸發控制,此腳本指令用于 DTU 采集 DI2 的狀態以及配 置 DI2 的狀態改變時觸發采集腳本的執行。 value 的值可為:?(報告狀態)、 0 (下降沿觸發采集)、1(上升沿觸發采集)、2(下降沿和上升沿均觸發采集)、 其他(不觸發采集)。默認 DI2 不觸發采集。此指令可以出現多個,比如需要上報 DI2 狀態同時又需要配置 DI2 的觸發采集。如:配置 DI2 為下降沿觸發采集且同時 上報 DI2 狀態,可配置腳本@I2=0@I2=?
示例:
@I2=? 采集 DI2 狀態,小提示:可在前面插入 H 指令加入便于識別的頭。
@I2=0 DI2 下降沿觸發采集 @I2=1 DI2 上升沿觸發采集
@I2=2 DI2 上升沿和下降沿觸發采集 @I2=其他 DI2 不觸發采集(默認,可省略),即使不觸發采集也可在腳本 中插入
@I2=?讓 DTU 定時采集時報告 DI2 的狀態。
三、應用案例 在眾山 DTU 的串口外接 2 個 RS485 接口的儀表,2 個儀表使用 W1 開關控制電源,打開 電源需要 10 秒時間讓儀表穩定,儀表為標準的 Modbus 協議,Modbus 地址分別為 01 和 02。 每個儀表需要采集 2 個寄存器數據,寄存器地址為 0000 和 0001,儀表 1 的 2 個寄存器采集 指令為: 0103000000010000 和 0103000100010000。儀表 2 的 2 個寄存器采集指令為: 0203000000010000 和 0203000100010000。一次采集需要連續采集 3 次數據,CRC 校驗需用戶自己計算。儀表 1 的波特率為 4800,儀表 2 的波特率為 38400。 用戶需求為每 1 小時采集一次數據,一次數據采集需要采集到 2 個儀表的 2 個寄存器數 據,并且需要采集 3 次,上報的數據需要回顯采集命令,在每條數據前加入 AA55 以便于用 戶解析數據,每條采集指令之間延時 3 秒,都需要接收儀表應答。
首先需要設置 DTU 的儀表自動采集周期參數為 3600 秒。
腳本設計如下,和默認值一致的腳本指令可省略
1:每次采集周期結束立即上報
@E=1@T=1@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@H=AA5
5@C=0103000100010000@D=3S@B=38400@H=AA55@C=0203000000010000@D=3S@H=AA55 @C=0203000100010000@D=3S@L=1,3@W1=0 注:@T=1 可省略,默認即為 1 次采集周期結束立即上報。
2:每 3 小時上報一次數據 @E=1@T=3@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@H=AA5 5@C=0103000100010000@D=3S@B=38400@H=AA55@C=0203000000010000@D=3S@H=AA55 @C=0203000100010000@D=3S@L=1,3@W1=0 注:3 次采集周期結束才上報一次數據,所以@T=3
3:每采集到 1 個儀表的 2 個寄存器數據時分開上報 @E=1@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@H=AA55@C= 0103000100010000@D=3S@S=1@B=38400@H=AA55@C=0203000000010000@D=3S@H=AA55 @C=0203000100010000@D=3S@S=1@L=1,3@W1=0 注:采集完一個儀表的 2 個數據后用@S=1 立即上報
4:每采集到 1 個儀表的 1 個寄存器數據時分開上報 @E=1@W1=1@D=10S@M=1@B=4800@H=AA55@C=0103000000010000@D=3S@S=1@H=AA5 5@C=0103000100010000@D=3S@S=1@B=38400@H=AA55@C=0203000000010000@D=3S@S= 1@H=AA55@C=0203000100010000@D=3S@S=1@L=1,3@W1=0 注:每采集一個數據后用@S=1 立即上報
四、腳本指令默認值 1、@E=0 默認為不回顯,用戶不需要上報采集指令時可省略此腳本 2、@T=1 默認為 1 個采集周期結束立即上報數據,可省略 3、@A=1 默認為接收儀表的應答,可省略
發布評論請先 登錄
相關推薦
評論