18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> PLC基礎及應用 >> 正文

電力儀表怎麽設置modbus ,電力-MODBUS_RTU通訊規約

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2022-04-09
電力-MODBUS_RTU通訊規約1
目錄:
一、簡介
1、簡介
2、簡單理解MODBUS通信協議
3、表1與表2名詞解釋
二、通訊信息傳輸過程
1.1 地址碼
1.2 功能碼
1.3 數據區
三、MODBUS功能碼
3.1 功能碼“02”:讀1路或多路開關量輸入狀態
3.2 功能碼“01”:讀1路或多路開關量輸出狀態
3.3 功能碼“03”:讀多路寄存器輸入
3.4 功能碼“05”:寫1路開關量輸出(遙控)
3.5 功能碼“06”:寫單路寄存器
3.6 功能碼“10”:寫多路寄存器
3.7 功能碼“03”:讀事件記錄
四、錯誤校驗碼(CRC校驗)
五、通訊錯誤信息及數據的處理
-------------------------------------------------------
相關參考搜索我的百度網盤“Modbus-國家標準-完整版、ModBus_RTU通訊自定義範例和Modbus TCP_IP協議規範”。
--------------------------------------------------------------------------------------------------------------
一、簡介
1、簡介
ModBus通訊規約允許PDM係列儀表/變送器與施耐德、西門子、AB、GE等多個國際著名品牌的可編程順序控製器(PLC)、RTU、SCADA係統、DCS或與第三方具有ModBus兼容的監控係統之間進行信息交換和數據傳送。
PDM係列儀表/變送器隻要簡單地增加一套基於計算機(或工控機)的監控軟件(如:組態王、Intouch、FIX、synall等)就可以構成一套電力監控係統。
①ModBus通訊規約有兩種數據傳送方式:HEX碼和ASCII碼,分別稱為ModBus-RTU和ModBus-ASCII,前者為數據傳送,而後者需將數據變換為ASCII碼後傳送,因此ModBus-RTU協議的通訊效率較高,處理簡單,使用得更多。
②ModBus TCP/IP是RTU模式的延伸:基於ModBus以太網
----------------------------
廣泛的係統集成:
PDM係列儀表/變送器提供了標準的RS-485/422通訊接口及ModBus通訊協議,這個通訊協議已廣泛被國內外電力行業及工控行業作為係統集成的標準。
----------------------------
通訊數據的類型及格式:
信息傳輸為異步方式,並以字節為單位。在主站和從站之間傳遞的通訊信息是11位的字格式:
字格式(串行數據)
11位二進製
起始位
1位
數據位
8位
奇偶校驗位
1位:有奇偶校驗位/無:無奇偶校驗位
停止位
1位:有奇偶校驗位/2位:無奇偶校驗位
● 通訊數據(信息幀)格式
數據格式:
地址碼
功能碼
數據區
錯誤校檢
數據長度:
1字節
1字節
N字節
16位CRC碼(冗餘循環碼)
★ 注:1)1個字節由8位二進製數組成(既8 bit)
2)ModBus是Modicon公司的注冊商標
3)“從機”在本文件中既為PDM
----------------------------
判斷Modbus一幀數據結束的方法:在RTU方式下,ModBus協議是根據3.5個字符時間內有沒有接收數據來判斷是否接受完成。
串行數據一般采用11位的字格式,那麽3.5個字符就是3.5*11=38.5位。如果沒有校驗位,采用10位的字格式,那麽3.5個字符就是
3.5*10=35位。
波特率是每秒傳輸的二進製位的個數,比如9600bps,即每1秒傳輸9600位,那麽傳輸38.5個二進製位需要的時間:
38.5/9.6=4.0104167mS,Modbus_RTU要求一幀數據起始到結束至少要不小於3.5個字符時間。
先給定時器定時大概3.5個字符(更大點也可以),然後在串口的接收中斷服務程序中,先將定時器的計數寄存器清零,然後重新開
始定時,如果接收的不是最後一個字節,那麽在下個字節來的時候定時器就會又從零開始計數,如果後麵再沒有數據進來的話,定
時器就會因為定時時間到而進入定時器中斷,就表示數據接收結束了。
-------------------------------------------------------
2、簡單理解MODBUS通信協議
對於01 16 1000 1234 ABCD這段代碼的含義說明如下:
向地址 01的控製器1000地址處寫入1234 。
地址域:就是指 從站的地址,比如一個儀表,這個地址就是它的通訊地址;
功能碼:就是你要做的事情,通訊的目的 就是讀寫數據,所以 ModBus 功能碼雖然很多,但是隻有兩個是我們常用的,就是讀和
寫。讀的功能碼是03,寫的功能碼是16。注意,這裏的讀寫都是一次性寫16個位,也就是一個WORD(包含數據地址與數據)
功能碼如表2。
----------------------------
表1、ModBus功能碼
功能碼 名稱 作用
1 0x01 讀取線圈狀態 取得一組邏輯線圈的當前狀態(ON/OFF)
2 0x02 讀取輸入狀態 取得一組開關輸入的當前狀態(ON/OFF)
3 0x03 讀取保持寄存器 在一個或多個保持寄存器中取得當前的二進製值
4 0x04 讀取輸入寄存器 在一個或多個輸入寄存器中取得當前的二進製值
5 0x05 強置單線圈 強置一個邏輯線圈的通斷狀態
6 0x06 預置單寄存器 把具體二進值裝入一個保持寄存器
7 0x07 讀取異常狀態 取得8個內部線圈的通斷狀態,這8個線圈的地址由控製器決定,用戶邏輯可以將這些線圈定義,以說明從機狀態,短報文適宜於迅速讀取狀態。
8 0x08 回送診斷校驗 把診斷校驗報文送從機,以對通信處理進行評鑒。
9 0x09 編程(隻用於484) 使主機模擬編程器作用,修改PC從機邏輯。
10 0x0A 控詢(隻用於484) 可使主機與一台正在執行長程序任務從機通信,探詢該從機是否已完成其操作任務,僅在含有功能碼9的報文發送後,本功能碼才發送。
11 0x0B 讀取事件計數 可使主機發出單詢問,並隨即判定操作是否成功,尤其是該命令或其他應答產生通信錯誤時。
12 0x0C 讀取通信事件記錄 可是主機檢索每台從機的ModBus事務處理通信事件記錄(比如傳送53條報文)。如果某項事務處理完成,記錄會給出有關錯誤。
13 0x0D 編程(184/384 484 584) 可使主機模擬編程器功能修改PC從機邏輯
14 0x0E 探詢(184/384 484 584) 可使主機與正在執行任務的從機通信,定期控詢該從機是否已完成其程序操作,僅在含有功能13的報文發送後,本功能碼才得發送。
15 0x0F 強置多線圈 強置一串連續邏輯線圈的通斷。
16 0x10 預置多寄存器 把具體的二進製值裝入一串連續的保持寄存器。
17 0x11 報告從機標識 可使主機判斷編址從機的類型及該從機運行指示燈的狀態。
18 0x12 (884和MICRO 84) 可使主機模擬編程功能,修改PC狀態邏輯。
19 0x13 重置通信鏈路 發生非可修改錯誤後,是從機複位於已知狀態,可重置順序字節。
20 0x14 讀取通用參數(584L) 顯示擴展存儲器文件中的數據信息。
21 0x15 寫入通用參數(584L) 把通用參數寫入擴展存儲文件,或修改之。
22~64 保留作擴展功能備用
65~72 保留以備用戶功能所用 留作用戶功能的擴展編碼
73~119 非法功能
120~127 保留 留作內部作用
128~255 保留 用於異常應答
----------------------------
表2、ModBus功能碼與數據類型對應表
代碼 功能 數據類型
1
2
3 整型、字符型狀態字浮點型
4 整型、狀態字、浮點型
5
6 整型、字符型、狀態字、浮點型
8 N/A 重複“回路反饋”信息
15
16 整型、字符型、狀態字、浮點型
----------------------------
表3、Modbus寄存器
寄存器種類 說明 PLC類比 舉例說明
離散輸入
狀態DI
輸入端口。通過外部設定改變輸入狀態,可讀但不可寫 DI數字量輸入 麵板上的按鍵、開關狀態,電機的故障狀態
線圈狀態DO 輸出端口。可設定端口的輸出狀態,也可以讀取該位的輸出狀態,可分為兩種不同的執行狀態,例如保持型或邊沿觸發型 DO數字量
輸出
電磁閥輸出、電機的啟停控製信號、
LED顯示等
保持
寄存器AO
輸出參數或保持參數,控製器運行時被設定的某些參數。
可讀可寫
AO模擬量 模擬量輸出設定值,PID運行參數
輸入
寄存器AI
輸入參數。控製器運行時從外部設備獲得的參數。
可讀但不可寫
AI模擬量輸入 模擬量輸入
Modbus協議定義了4種基本數據類型:隻讀位數據DI可讀寫位數據DO隻讀16位數據AI可讀寫16位數據AO這些數據分別被稱為輸入狀態線圈狀態輸入寄存器保持寄存器
DI 數字輸入,離散輸入,一個地址一個數據位,用戶隻能讀取它的狀態,不能修改。
比如麵板上的按鍵、開關狀態,電機的故障狀態
DO 數字輸出,線圈輸出,一個地址一個數據位,用戶可以置位、複位,可以回讀狀態。
比如電磁閥輸出,電機的啟停控製信號、LED顯示等
AI 模擬輸入,輸入寄存器,一個地址16位數據,用戶隻能讀,不能修改,比如一個電壓值的讀數
AO 模擬輸出,保持寄存器,一個地址16位數據,用戶可以寫,也可以回讀,比如一個控製變頻器的電流值
無論這些東西被叫做什麽名字,其內容不外乎這幾種,輸入的信號用戶隻能看不能改,輸出的信號用戶控製,並可以回讀。離散的
數據隻有一位,模擬的數據有16位。
----------------------------
數據 就是我們傳遞的消息,這個對於我們來說才是最終目的。 1000 1234 就是我們傳遞的消息,是我們要告訴從站的內容,它又
分兩部分:地址和內容。如果把從站比喻成一個大樓地址域就是大樓的門牌號,而數據裏的地址就是大樓的房間號,換成變頻器也
就是變頻器的參數地址。所以這段幀 就是這樣理解:告訴01大樓的1000房間,1234 往01變頻器的1000參數寫1234。差錯校驗:
是為了防止出錯而做的保護,就是雙方約定的各種計算方法,也就是我們在實際應用中的偶校驗、奇校驗、停止位等等。 這裏的
ABCD 是隨便寫的,沒任何意義。
-------------------------------------------------------
3、表1與表2名詞解釋
1)功能碼含義
讀:
01_DI: 讀內部比特量輸出狀態,如告警、變位、故障、異常等。
02_DO:讀外部開關量輸入狀態,如光耦輸入、繼電器輸入等。
03_AO:讀內部輸出量的寄存器,如一些配置參數、定值的讀取等。
04_AI: 讀外部輸入量的寄存器,如外部電壓電流模擬量,溫濕度等。
功能碼01、02讀到的位滿8個組合成一個字節,可以用功能碼04讀取;線圈可以直接定義成一個位變量或者直接置某變量的某一位
寫:
功能碼05:寫內部單個開關量狀態;如光耦輸出、繼電器輸出等。
功能碼06:寫內部單個寄存器的值;如更改配置參數、定值等。
功能碼15:寫內部多個開關量狀態;如同05。
功能碼16:寫內部多個寄存器的值;如同06;對時是寫多個寄存器,用此功能碼。
11:通信超時或錯誤時詢問用
12:詢問從機檢測到的各種故障、異常事件
----------------------------
2)關於實現
先定義一個變量區如: uint modbus_data [50],再定義那些保持寄存器和輸入寄存器,如下:
保持寄存器:M30001-M300022 // 存放設置的參數,用 03讀,16寫
輸入寄存器:M40001-M40028 // 存放實時數據,如啟動、運行、停止、待機以及錯誤代碼 ,用04讀

#define M30001 modbus_data[0]
#define M30002 modbus_data[1]

…………

#define M30021 modbus_data[20]

#define M30022 modbus_data[21]

#define M40001 modbus_data[22]

#define M40002 modbus_data[23]

…………

#define M400021 modbus_data[48]
#define M400028 modbus_data[49]
參考:www.amobbs.com/thread-3339982-2-1.html
--------------------------------------------------------------------------------------------------------------
二、通訊信息傳輸過程
當通訊命令由發送設備(主機)發送至接收設備(從機)時,符合相應地址碼的從機接收通訊命令,並根據功能碼及相關要求讀取信息,如果CRC校驗無誤,則執行相應的任務,然後把執行結果(數據)返送給主機。返回的信息中包括地址碼、功能碼、執行後的數據以及CRC校驗碼,如果CRC校驗出錯就不返回任何信息。
1.1 地址碼
地址碼是每次通訊信息幀的第一字節(8位),從0到255。這個字節表明由用戶設置地址的從機將接收由主機發送來的信息。每個從機都必須有唯一的地址碼,並且隻有符合地址碼的從機才能響應回送信息。當從機回送信息時,回送數據均以各自的地址碼開始。主機發送的地址碼表明將發送到的從機地址,而從機返回的地址碼表明回送的從機地址。相應的地址碼表明該信息來自於何處。
-------------------------------------------------------
1.2 功能碼
功能碼是每次通訊信息幀傳送的第二個字節。ModBus通訊規約可定義的功能碼為1到127。PDM係列儀表/變送器僅用到其中的一部分功能碼。作為主機請求發送,通過功能碼告訴從機應執行什麽動作。作為從機響應,從機返回的功能碼與從主機發送來的功能碼一樣,並表明從機已響應主機並且已進行相關的操作。
表1 Modbus部分功能碼
功能碼
定 義
操 作(二進製)
0x02
讀開關量輸入
讀取一路或多路開關量狀態輸入數據
0x01
讀開關量輸出
讀取一路或多路開關量輸出狀態數據
0x03
讀寄存器數據
讀取一個或多個寄存器的數據
0x05
寫開關量輸出
控製一路繼電器“合/分”輸出
0x06
寫單路寄存器
把一組二進製數據寫入單個寄存器
0x10
寫多路寄存器
把多組二進製數據寫入多個寄存器
-------------------------------------------------------
1.3 數據區
數據區包括需要由從機返送何種信息或執行什麽動作。這些信息可以是數據(如:開關量輸入/輸出、模擬量輸入/輸出、寄存器等等)、參考地址等。例如,主機通過功能碼03告訴從機返回寄存器的值(包含要讀取寄存器的起始地址及讀取寄存器的長度),則返回的數據包括寄存器的數據長度及數據內容。對於不同的從機,地址和數據信息都不相同(應給出通訊信息表)。
PDM 係列儀表/變送器采用Modbus通訊規約,主機(PLC、RTU、PC機、DCS等)利用通訊命令(功能碼03),可以任意讀取其數據寄存器(其數據信息表詳見附錄)。PDM係列儀表/變送器的數據寄存器存儲的電量多達幾百個(如:電流、電壓、功率、0~31次諧波分量等),並且都是16位(2字節)的二進製數據,並且高位在前;一次最多可讀取寄存器數(既各種電量的數量)是50個。
PDM響應的命令格式是從機地址、功能碼、數據區及CRC碼。數據區的數據都是兩個字節,並且高位在前(電能量除外)。
注:1PDM-820AC/ACM/ACRPDM-800AC/ACM具有“03”、“06”、“10”功能碼;
2、如果PDM采用MODBUS ASCII通訊協議,其通訊數據格式為;7個數據位,1停止位,偶校驗。
--------------------------------------------------------------------------------------------------------------
三、MODBUS功能碼
3.1 功能碼“02:讀1路或多路開關量輸入狀態
例如:主機要讀取地址為01,開關量DI1—DI4的輸入狀態。讀取告警、變位、故障、異常等。
從機(PDM)數據寄存器的地址和數據為:
起始位地址
DI寄存器數據(16進製)
備 注
0000
0B
DI1/DI2/DI4狀態為“1”,DI3狀態為
“0”
主機發送的報文格式為:
主機發送
字節數
發送的信息
備 注
從機地址
1
01
發送至地址為01的從機
功能碼
1
02
讀開關量輸入狀態
起始BIT位
2
0000
起始BIT位地址為0000
讀數據長度
2
0004
讀取4路開關量輸入狀態位
CRC碼
2
79C9
由主機計算得到CRC碼
從機(PDM)響應返回的報文格式:
從機響應
字節數
返回的信息
備 注
從機地址
1
01
來自從機01
功能碼
1
02
讀開關量輸入狀態
數據長度
1
01
1個字節(8個BIT位)
DI狀態數據
1
0B
DI寄存器內容
CRC碼
2
E04F
由從機計算得到CRC碼
-------------------------------------------------------
3.2 功能碼“01:讀1路或多路開關量輸出狀態
例如:主機要讀取地址為01,開關量DO1,DO2的輸出狀態。讀取電磁閥輸出、電機的啟停控製信LED顯示等
從機(PDM)數據寄存器的地址和數據為:
起始位地址
DO寄存器數據(16進製)
備 注
0000
02
DO2輸出狀態為“1”,DO1輸出狀態為“0”
主機發送的報文格式:
主機發送
字節數
發送的信息
備 注
從機地址
1
01
發送至地址為01的從機
功能碼
1
01
讀開關量輸出狀態
起始BIT位
2
0000
起始BIT位地址為0000
讀數據長度
2
0002
讀取2路繼電器輸出狀態位
CRC碼
2
BDCB
由主機計算得到CRC碼
從機(PDM)響應返回的報文格式:
從機響應
字節數
返回的信息
備 注
從機地址
1
01
來自從機01
功能碼
1
01
讀開關量輸出狀態
數據長度
1
01
1個字節(8個BIT位)
DO狀態數據
1
02
DO寄存器內容
CRC碼
2
D049
由從機計算得到CRC碼
-------------------------------------------------------
3.3 功能碼“03:讀多路寄存器輸入
例如:主機要讀取地址為01,起始地址為0116的3個從機寄存器數據。讀取多路定值,比如模擬量輸出設定值,PID運行參數
從機(PDM)數據寄存器的地址和數據為:
寄存器地址
寄存器數據(16進製)
對應PDM電量
0116
1784
UA
0117
1780
UB
0118
178A
UC
主機發送的報文格式:
主機發送
字節數
發送的信息
備 注
從機地址
1
01
發送至地址為01的從機
功能碼
1
03
讀取寄存器
起始地址
2
0116
起始地址為0116
數據長度
3
0003
讀取3個寄存器(共6個字節)
CRC碼
2
E5F3
由主機計算得到CRC碼
從機(PDM)響應返回的報文格式:
從機響應
字節數
返回的信息
備 注
從機地址
1
01
來自從機01
功能碼
1
03
讀取寄存器
讀取字
1
06
3個寄存器共6個字節
寄存器數據1
2
1784
地址為0116內存的內容
寄存器數據2
2
1780
地址為0117內存的內容
寄存器數據3
2
178A
地址為0118內存的內容
CRC碼
2
5847
由從機計算得到CRC碼
-------------------------------------------------------
3.4 功能碼“05:寫1路開關量輸出(遙控)
例1:開關量輸出點DO1,其當前狀態為“分”,主機要控製該路繼電器“合”。強置一個邏輯線圈的通斷狀態
控製命令為:
“FF00”為控製繼電器“合”;“0000”為控製繼電器“分”;
主機發送的報文格式:
主機發送
字節數
發送的信息
備 注
從機地址
1
01
發送至地址為01的從機
功能碼
1
05
寫開關量輸出狀態
輸出BIT位
2
0000
對應輸出繼電器BIT位(DO1)
控製命令
2
FF00
控製該路繼電器輸出為“合”狀態位
CRC碼
2
8C3A
由主機計算得到CRC碼
從機(PDM)響應返回的報文格式:
與主機發送的報文格式及數據內容完全相同。
例2:開關量輸出點DO2,其當前狀態為“合”,主機要控製該路繼電器“分”。
主機發送的報文格式:
主機發送
字節數
發送的信息
備 注
從機地址
1
01
發送至地址為01的從機
功能碼
1
05
寫開關量輸出狀態
輸出BIT位
2
0001
對應輸出繼電器BIT位(DO2)
控製命令
2
0000
控製該路繼電器輸出為“合”狀態位
CRC碼
2
9C0A
由主機計算得到CRC碼
從機(PDM)響應返回的報文格式:與主機發送的報文格式及數據內容完全相同。
-------------------------------------------------------
3.5 功能碼“06:寫單路寄存器
例如:主機要把數據07D0,保存到地址為002C的從機寄存器中去(從機地址碼為01)。通訊數據保存結束後,地址為002C的PDM表原存儲信息為:
地址
原來存儲數據(16進製)
002C
04B0
主機發送的報文格式:
主機發送
字節數
發送的信息
舉 例
從機地址
1
01
發送至地址為01的從機
功能碼
1
06
寫單路寄存器
起始地址
2
002C
要寫入的寄存器地址
寫入數據
2
07D0
對應的新數據
CRC碼
2
4BAF
由主機計算得到的CRC碼
從機(PDM)響應返回的報文格式: 與主機發送的報文格式及數據內容完全相同。
-------------------------------------------------------
3.6 功能碼“10:寫多路寄存器
主機利用這個功能碼把多個數據保存到PDM表的數據存儲器中去。Modbus通訊規約中的寄存器指的是16位(即2字節),並且高位在前。這樣PDM的存儲器都是二個字節。由於Modbus通訊規約允許每次最多保存60個寄存器,因此PDM一次也最多允許保存60個數據寄存器。比如對時
例如:主機要把0064,0010保存到地址為002C,002D的從機寄存器中去(從機地址碼為01)。通訊數據保存結束後,地址為002C/002D的PDM表內存儲信息為:
地址
原來存儲數據(16進製)
002C
04B0
002D
1388
主機發送的報文格式:
主機發送
字節數
發送信息
舉 例
從機地址
1
01
發送至從機01
功能碼
1
10
寫多路寄存器
起始地址
2
002C
要寫入的寄存器的起始地址
保存數據字長度
2
0002
保存數據的字長度(共2字)
保存數據字節長
1
04
保存數據的字節長度(共4字節)
保存數據1
2
04B0
數據地址002C
保存數據2
2
1388
數據地址002D
CRC碼
2
FC63
由主機計算得到的CRC碼
從機(PDM)響應返回的報文格式:
從機響應
字節數
字節數
舉 例
從機地址
1
01
來自從機01
功能碼
1
10
寫多路寄存器
起始地址
2
002C
起始地址為002C
保存數據字長度
2
0002
保存2個字長度的數據
CRC碼
2
8001
由從機計算得到的CRC碼
-------------------------------------------------------
3.7 功能碼“03”:讀事件記錄
采用功能碼03H向保持寄存器地址0x0001,讀一個字,產生讀一個事件記錄的作用。
主站發送: 從機地址 功能碼 事件記錄地址H 事件記錄地址L 事件記錄個數H 事件記錄個數L CRC碼H CRC碼L 01 03 00 01 00 01 D5 CA 子站響應: 從機地址 功能碼 字節數 事件條目數H 事件條目數L 事件代碼H
(事件組號) 事件代碼L
(事件代碼) 動作值
02:合; 01:分 01 03 0C 00 01 04 09 02 毫秒L 毫秒H 分鍾 小時 日 月份 年份 CRC碼H CRC碼L A5 4D 19 12 17 01 07 2F EB

--------------------------------------------------------------------------------------------------------------
四、錯誤校驗碼(CRC校驗)
主機或從機可用校驗碼進行判別接收信息是否正確。由於電子噪聲或一些其它幹擾,信息在傳輸過程中有時會發生錯誤,錯誤校驗碼(CRC)可以檢驗主機或從機在通訊數據傳送過程中的信息是否有誤,錯誤的數據可以放棄(無論是發送還是接收),這樣增加了係統的安全和效率。
MODBUS通訊協議的CRC(冗餘循環碼)包含2個字節,即16位二進製數。CRC碼由發送設備(主機)計算,放置於發送信息幀的尾部。接收信息的設備(從機)再重新計算接收到信息的CRC,比較計算得到的CRC是否與接收到的相符,如果兩者不相符,則表明出錯。
在進行CRC計算時隻用8個數據位,起始位及停止位,如有奇偶校驗位也包括奇偶校驗位,都不參與CRC計算。
● CRC碼的計算方法是:
1.預置1個16位的寄存器為十六進製FFFF(即全為1);稱此寄存器為CRC寄存器;
2.把第一個8位二進製數據(既通訊信息幀的第一個字節)與16位的CRC寄存器的低8位相異或,把結果放於CRC寄存器;
3.把CRC寄存器的內容右移一位(朝低位)用0填補最高位,並檢查右移後的移出位;
4.如果移出位為0:重複第3步(再次右移一位);
如果移出位為1:CRC寄存器與多項式A001(1010 0000 0000 0001)進行異或;
5.重複步驟3和4,直到右移8次,這樣整個8位數據全部進行了處理;
6.重複步驟2到步驟5,進行通訊信息幀下一個字節的處理;
7.將該通訊信息幀所有字節按上述步驟計算完成後,得到的16位CRC寄存器的高、低字節進行交換;
8.最後得到的CRC寄存器內容即為:CRC碼。
--------------------------------------------------------------------------------------------------------------
五、通訊錯誤信息及數據的處理
當PDM表檢測到除了CRC碼出錯以外的錯誤時,必須向主機回送信息,功能碼的最高位置為1,即從機返送給主機的功能碼是在主機發送的功能碼的基礎上加128 。以下的這些代碼表明有意外的錯誤發生。PDM從主機接收到的信息如有CRC錯誤,則將被PDM表忽略。
PDM返送的錯誤碼的格式如下(CRC碼除外):
地址碼: 1字節
功能碼: 1字節(最高位為1)
錯誤碼: 1字節
CRC碼: 2字節
PDM響應回送如下錯誤碼:
81.非法的功能碼。
接收到的功能碼PDM表不支持。
82.非法的數據位置。
指定的數據位置超出PDM表的範圍。
83.非法的數據值。
接收到主機發送的數據值超出PDM相應地址的數據範圍。
--------------------------------------------------------------------------------------------------------------
Tags:電力儀表,modbus,設置  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章:
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    推薦文章
    最新推薦
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢