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