Siemens保護裝置Modbus通訊協議的配置注意事項及報文解析
Modbus協議簡介:
Modbus協議定義了一個與基礎通信層無關的簡單協議數據單元(PDU)。特定匯流排或網路上的Modbus協議映射能夠在應用數據單元(ADU)上引入一些附加域。
Modbus使用的是主站詢問,從站回答的數據傳送方式。
Modbus 數據模型:
Modbus以一系列具有不同特徵表格上的數據模型為基礎。四個基本表格為:
下例示出了設備中的數據結構,這個設備含有數字量和模擬量、輸入量和輸出量。由於不同塊中的數據不相關,每個塊是相互獨立。按不同Modbus功能碼訪問每個塊。
Modbus 公共功能碼定義:
Siemens保護的Modbus配置以及報文示例
概述:
信息類型、寄存器類型、功能碼之間的對應關係
1. 雙遙控帶雙遙信的信號(CF_D2)
a)配置:雙遙控及雙遙信信息屬於線圈狀態類型(coil),在DIGSI中配置在寄存器類型0的範圍(可用的地址可以在相應裝置的modbusmapping file描述中找到),且遙信與遙控方向地址相同,如下圖Q0,Q1
b)如何從DIGSI配置中換算出Modbus協議中的寄存器號。
寄存器號Y =Register address + 1 + x, 其中 mask =2x+ 2x+1
以上圖Q0為例:mask 3072 = 1024 + 2048 = 210+ 211, 所以 x = 10
Q0的寄存器號 Y = 0 + 1 + 10 = 11
同理Q1:mask 12288 = 4096 + 8192 = 212+ 213, 所以 x = 12
Q1的寄存器號 Y = 0 + 1 + 12 = 13
c)示例報文
由於Modbus報文查詢是從0開始定址的,所以報文中的地址比計算的寄存器號小1。
雙遙控(寫多個線圈)功能碼:15
遙控Q0報文
雙遙信(讀取多個線圈狀態)功能碼:01
讀取Q0位置報文
同時讀取Q0,Q1位置的報文
2. 單遙控信號(C_S)
a)配置:單遙控信息同樣屬於線圈類型(coil),在DIGSI中配置在寄存器類型0的範圍(可用的地址可以在相應裝置的Modbusmapping file描述中找到)。
b)如何從DIGSI配置中換算出Modbus協議中的寄存器號。
寄存器號Y =Register address + 1 + Log2mask
上圖中寄存器號Y =32 + 1 + Log264= 39
c)示例報文
由於Modbus報文查詢是從0開始定址的,所以報文中的地址比計算的寄存器號小1。
單遙控(寫單個線圈)功能碼:05
單遙控報文
注意:對於脈衝型輸出的單遙控命令,後台發送分閘命令是沒有實際意義的,保護裝置會拒絕分閘命令,拒絕的附加原因是不合常理(Plausibility error)。
3. 單遙信信號(SP)
a)配置:單遙信信息屬於離散量類型,在DIGSI中配置在寄存器類型1的範圍。
b)如何從DIGSI配置中換算出Modbus協議中的寄存器號。
寄存器號Y =Register address + 1 + Log2mask
上圖中寄存器號分別為Y=32+1+Log216= 37,Y=32+1+Log232= 38
c)示例報文
由於Modbus報文查詢是從0開始定址的,所以報文中的地址比計算的寄存器號小1。
單遙信(讀離散量)功能碼:02
以下是同時讀取遙信1與遙信2的報文
4. 遙測值
a)配置:遙測值屬於輸入寄存器類型,DIGSI中配置在寄存器類型3的範圍。裝置中未給遙測值預留多餘地址,如果有用戶自定義的遙測值需要配置到後台,則需要把部分默認的遙測值從系統口移除。
b)如何從DIGSI配置中換算出Modbus協議中的寄存器號。
寄存器號 Y = Register address + 1
上圖中 Ia 寄存器號Y = 0 + 1 = 1,其它模擬量寄存器號可在mapping file描述中查找到。
c)示例報文
由於Modbus報文查詢是從0開始定址的,所以報文中的地址比計算的寄存器號小1。
遙測(讀輸入寄存器)功能碼:04
下例中是7SJ62 mapping file3-1,從寄存器號1開始,讀取18個寄存器的報文,不同類型裝置的寄存器代表的數據內容有所差異,請參考相關裝置的mapping file。
遙測值是有符號16位數,數值範圍是 -32768 到 +32767,數值 -32768 = Hex8000表示無效值或越限值,
輸入寄存器5為Va,Hex0242 = 578,除係數100(a配置部分示例圖)得到一次值5.78kV。
5. 電度量
a)配置:電度量屬於保持寄存器類型,每個電度量佔用兩個寄存器,DIGSI中配置在寄存器類型4的範圍。
b)如何從DIGSI配置中換算出Modbus協議中的寄存器號。
寄存器號 Y = Register address + 1
上圖中 WpForward 寄存器號 Y = 204 + 1 = 205,其它電度量寄存器號可在mappingfile描述中查找到。
c)示例報文
由於Modbus報文查詢是從0開始定址的,所以報文中的地址比計算的寄存器號小1。
遙測(讀輸入寄存器)功能碼:03
下例中從寄存器號205開始,讀取4個電度量的報文。
電度量是無符號32位數,數值範圍是0到+4294967295。保護裝置通過協議上送到主站是電度量的脈衝個數,所以後台收到脈衝數目後還要乘以係數(即每個脈衝代表的電度量值)才能得到與裝置上顯示相同的電度量值。
係數(即每個脈衝代表的電度量值)與保護參數1101和1102(a配置部分示例圖)相關,係數公式為:1.732* 參數1101 * 參數1102/60000
本例中的係數為1.732 * 12000 * 100/60000 = 34.64 WH
TAG:技術資料交流 |