104規約筆記

電力系統中常見的設備分爲 調度端(控制站、主站、客戶機) , 服務端(被控站、子站,典型設備包含TTU、RTU等),兩者之間通過104規約來進行數據通信與傳輸。其傳輸層實際上使用的是TCP協議進行數據的傳輸。固定端口號爲2404。《電力系統104規約幀報文解析》
注意這裏的調度端和服務端,調度端往往安裝在PC電腦上,用網線連接(可靠的網絡),服務端是工業設備:
TTU(distribution Transformer supervisory Terminal Unit,配電變壓器監測終端)。
RTU(遠程終端單元),英文全稱RemoteTerminalUnit,中2113文全稱爲遠程終端控制系統,負責對現場信號、工業設備的監測和控制。

104規約報文格式
來自《104規約ASDU結構解析》
在這裏插入圖片描述
第一個字節:啓動字符固定16進制數68H,十進制爲104(正好代表104規約吧),二進制爲:0110 1000。
第二個字節:APDU長度,注意APDU長度並不包括1字節的啓動字符和1字節的APDU長度本身,而由於只有1字節代表數據長度,其最大值爲255(2^8 - 1),所以最大值爲255 - 2 = 253,又由於APCI除了這兩個字節外還包括了4個字節的控制域(1~4),那麼剩下的ASDU(可選的應用服務數據單元)長度爲253 - 4 = 249字節。

報文有三種類型:
1、U格式,未編號的控制功能幀,如果第3字節不等於十六進制01H並且,第2字節長度爲04,就一定是功能幀。
只有三種命令,每種命令有“命令”和“確認”兩個步驟。
在這裏插入圖片描述
比如TCP連接後馬上要做的“握手”操作,就是STARTDT命令(來自《IEC104協議規約解析》):

第一步:首次握手(U幀)
發送→激活傳輸啓動:68(啓動符)04(長度)07(控制域)00 00 00
接收→確認激活傳輸啓動: 68(啓動符)04(長度)0B(控制域)00 00 00

STARTDT用於啓動傳輸,只有發送了這條命令,對方纔會將數據發送過來,也只有發送了這條命令,才代表本方程序會解析發送過來的數據。
STOPDT用於停止傳輸,發送了這條命令,代表不必發送數據過來了,並且本方也不會再解析任何收到的數據。
TESTFR用於雙方都空閒,無話可說的時候定時問候一下,代表對方還處於正常的服務狀態。

2、S格式,編號的監視幀,當接收到I幀後需要返回一個S幀,如果第3字節爲十六進制01H,就一定是S格式幀。
在這裏插入圖片描述
發送STARTDT啓用傳輸後,發送方第一次發送I格式報文,其發送序列號一定是0,此時接收方的接收序列號也是0,接收報文後,接收序列號+1,但注意接收序列號在控制域3的低1bit位爲0,並非序列號數據,所以第一次應答的S幀如下:

接收→S幀 :
注意:記錄接收到的長幀,雙方可以按頻率發送,比如接收8幀I幀回答一幀S幀,也可以要求接收1幀I幀就應答1幀S幀。 68 04 01 00 02 00

接收序列號因爲是2字節表示,注意第一個8bit是低字節,第二個8比特是高字節,又第一個8bit的最低位是無效數據,所以這裏的無符號短整形數據(2字節)0002H / 2 = 0001H,代表的序列號的十進制數字是1。下次再發送S幀就可能是0004H,代表十進制數字2。第三次是0006H,代表十進制數據3,看二進制代碼最直觀:
0010 0000,取有效的二進制組合起來就是0000 001;
0100 0000,取有效的二進制組合起來就是0000 010;
0110 0000,取有效的二進制組合起來就是0000 011;
有效的二進制組合就是將後4位二進制作爲高位,前4位二進制拋棄最後那個0作爲低位,二進制數據仍然是從1,10,11,100,101,110這樣的進位來的。

3、I格式,信息傳輸幀,用於信息交互。只要第2字節數不等於04,就一定是信息傳輸幀。
在這裏插入圖片描述
發送序列號N是指本設備往外發送了N幀I格式幀,接收序列號是指接收到對方N幀I格式幀。應用程序發送數據的同時,也會檢查對方發過來的S幀,比如發送數據的程序已經發送了12幀了,就可以接收數據,看看S幀是否已經到了至少第8幀的序號(接收8幀至少要回答一次),如果沒收到,就發送STOPDT,然後斷開這個連接了(認爲該連接出故障,可能對方已經斷網並重啓了,這是一個無效的連接了)。

I格式的幀又隨着攜帶信息不同而不同,比如主站發送總召喚(要求傳遞所有遙測、遙信數據),報文如下:

總召喚(I幀)

召喚YC、YX(可變長I幀)初始化後定時發送總召喚,每次總召喚的間隔時間一般設爲15分鐘召喚一次,不同的主站系統設置不同。

發送→總召喚 : 68(啓動符)0E(長度)00 00(發送序號)00 00(接收序號)64(類型標示)01(可變結構限定詞)06 00(傳輸原因)01 00(公共地址即RTU地址)00 00 00(信息體地址)14(區分是總召喚還是分組召喚,02年修改後的規約中沒有分組召喚)
這裏每一個字節的內容都可以從協議裏查到。解析如下:
68是啓動字符,0E代表本次數據長度爲14個字節,從0E往後數14個字節就結束了(數一數是否剛剛好?)。
發送序號是00 00,前兩個00是低位,後兩個00是高位(注意這裏高位在後),且前兩個00的最後一個二進制是無效的,所以要除以2(或右移1位,右移1位就等效於除以2),所以發送序號是十進制數0。接收序號相同算法,也是0.
64H是類型標示,十進制數是100,在手冊裏能查到是“站總召喚”:
在這裏插入圖片描述
可變結構限定詞01,這裏代表單個信息元素(總召喚),這個數據代表的規則很複雜,需要仔細閱讀手冊《配電自動化系統應用DLT634.5104-2009實施細則(試行)》
傳輸原因爲2個字節,同理高位在後,數字爲16進制0006H,就是十進制的6。查詢手冊,得知代表激活:
在這裏插入圖片描述
公共地址爲0001H,一般用來代表站址(主站系統將連接上來的設備分爲多個虛擬的站,可能按照連接過來的TTU,RTU進行區別對待)。
信息體地址是0,因爲總召喚不是具體的信息,如果要發送遙測數據,就會帶有遙測號了。
14H是十進制的20,是召喚限定詞,手冊裏有描述:
在這裏插入圖片描述

再看一個發送遙信信息的幀:

68(啓動符)1E(長度)04 00(發送序號)02 00(接收序號)03(類型標示,雙點遙信)05(可變結構限定詞,有5個遙信上送)14 00(傳輸原因,響應總召喚) 01 00(公共地址)01 00 00(信息體地址,第1號遙信)02(遙信合)06 00 00(信息體地址,第6號遙信)02(遙信合)0A 00 00(信息體地址,第10號遙信)01(遙信分)0B 00 00(信息體地址,第11號遙信)02(遙信合)0C 00 00(信息體地址,第12號遙信)01(遙信分)

這一幀數據帶了5個遙信,每一個遙信都帶有一個信息體地址,公共地址則是5個遙信公用的。而且這裏雙點遙信用2個二進制位標示,二進制01(01H)代表分,二進制10(02H)代表合,二進制11(03H)代表狀態未知。

104規約在掌握規則以後,就是根據手冊查詢具體的I幀含義和ASDU(信息體)的具體規定了。所以不再具體介紹了。以後如果有新情況,我再補充這個筆記。

補充:
手冊裏的7 應用報文與數據結構可看出來主站和DTU,RTU之間的交互類型。
列舉類型如下:
第一類:主站的系統命令
總召喚:獲取所有遙測、遙信數據。
電能量召喚:召喚所有電量數據。
時鐘讀取:覈對時間。
復位進程:
初始化結束:

第二類:DTU,RTU發送給主站
遙信報文
遙測報文
電能量報文
故障事件信息

第三類:雙方交互
遙控命令報文

第四類:文件傳輸
召喚目錄
讀文件服務
寫文件服務
寫文件數據

第五類:遠程參數讀寫
切換定值區
讀取當前定製區
讀多個/全部參數和定值
寫多個參數和定值
故障錄波採用文件服務傳輸。
歷史數據文件也採用文件服務傳輸。
軟件升級

參考資料《電力系統104規約幀報文解析》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章