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