欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開發(fā)網(wǎng)

電子開發(fā)網(wǎng)電子設(shè)計(jì) | 電子開發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開發(fā)網(wǎng) >> 電子開發(fā) >> PLC基礎(chǔ)入門教程 >> 正文

電力儀表怎么設(shè)置modbus ,電力-MODBUS_RTU通訊規(guī)約

作者:佚名    文章來源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2022/4/9
電力-MODBUS_RTU通訊規(guī)約1
目錄:
一、簡介
1、簡介
2、簡單理解MODBUS通信協(xié)議
3、表1與表2名詞解釋
二、通訊信息傳輸過程
1.1 地址碼
1.2 功能碼
1.3 數(shù)據(jù)區(qū)
三、MODBUS功能碼
3.1 功能碼“02”:讀1路或多路開關(guān)量輸入狀態(tài)
3.2 功能碼“01”:讀1路或多路開關(guān)量輸出狀態(tài)
3.3 功能碼“03”:讀多路寄存器輸入
3.4 功能碼“05”:寫1路開關(guān)量輸出(遙控)
3.5 功能碼“06”:寫單路寄存器
3.6 功能碼“10”:寫多路寄存器
3.7 功能碼“03”:讀事件記錄
四、錯(cuò)誤校驗(yàn)碼(CRC校驗(yàn))
五、通訊錯(cuò)誤信息及數(shù)據(jù)的處理
-------------------------------------------------------
相關(guān)參考搜索我的百度網(wǎng)盤“Modbus-國家標(biāo)準(zhǔn)-完整版、ModBus_RTU通訊自定義范例和Modbus TCP_IP協(xié)議規(guī)范”。
--------------------------------------------------------------------------------------------------------------
一、簡介
1、簡介
ModBus通訊規(guī)約允許PDM系列儀表/變送器與施耐德、西門子、AB、GE等多個(gè)國際著名品牌的可編程順序控制器(PLC)、RTU、SCADA系統(tǒng)、DCS或與第三方具有ModBus兼容的監(jiān)控系統(tǒng)之間進(jìn)行信息交換和數(shù)據(jù)傳送。
PDM系列儀表/變送器只要簡單地增加一套基于計(jì)算機(jī)(或工控機(jī))的監(jiān)控軟件(如:組態(tài)王、Intouch、FIX、synall等)就可以構(gòu)成一套電力監(jiān)控系統(tǒng)。
①M(fèi)odBus通訊規(guī)約有兩種數(shù)據(jù)傳送方式:HEX碼和ASCII碼,分別稱為ModBus-RTU和ModBus-ASCII,前者為數(shù)據(jù)傳送,而后者需將數(shù)據(jù)變換為ASCII碼后傳送,因此ModBus-RTU協(xié)議的通訊效率較高,處理簡單,使用得更多。
②ModBus TCP/IP是RTU模式的延伸:基于ModBus以太網(wǎng)
----------------------------
廣泛的系統(tǒng)集成:
PDM系列儀表/變送器提供了標(biāo)準(zhǔn)的RS-485/422通訊接口及ModBus通訊協(xié)議,這個(gè)通訊協(xié)議已廣泛被國內(nèi)外電力行業(yè)及工控行業(yè)作為系統(tǒng)集成的標(biāo)準(zhǔn)。
----------------------------
通訊數(shù)據(jù)的類型及格式:
信息傳輸為異步方式,并以字節(jié)為單位。在主站和從站之間傳遞的通訊信息是11位的字格式:
字格式(串行數(shù)據(jù))
11位二進(jìn)制
起始位
1位
數(shù)據(jù)位
8位
奇偶校驗(yàn)位
1位:有奇偶校驗(yàn)位/無:無奇偶校驗(yàn)位
停止位
1位:有奇偶校驗(yàn)位/2位:無奇偶校驗(yàn)位
● 通訊數(shù)據(jù)(信息幀)格式
數(shù)據(jù)格式:
地址碼
功能碼
數(shù)據(jù)區(qū)
錯(cuò)誤校檢
數(shù)據(jù)長度:
1字節(jié)
1字節(jié)
N字節(jié)
16位CRC碼(冗余循環(huán)碼)
★ 注:1)1個(gè)字節(jié)由8位二進(jìn)制數(shù)組成(既8 bit)
2)ModBus是Modicon公司的注冊(cè)商標(biāo)
3)“從機(jī)”在本文件中既為PDM
----------------------------
判斷Modbus一幀數(shù)據(jù)結(jié)束的方法:在RTU方式下,ModBus協(xié)議是根據(jù)3.5個(gè)字符時(shí)間內(nèi)有沒有接收數(shù)據(jù)來判斷是否接受完成。
串行數(shù)據(jù)一般采用11位的字格式,那么3.5個(gè)字符就是3.5*11=38.5位。如果沒有校驗(yàn)位,采用10位的字格式,那么3.5個(gè)字符就是
3.5*10=35位。
波特率是每秒傳輸?shù)亩M(jìn)制位的個(gè)數(shù),比如9600bps,即每1秒傳輸9600位,那么傳輸38.5個(gè)二進(jìn)制位需要的時(shí)間:
38.5/9.6=4.0104167mS,Modbus_RTU要求一幀數(shù)據(jù)起始到結(jié)束至少要不小于3.5個(gè)字符時(shí)間。
先給定時(shí)器定時(shí)大概3.5個(gè)字符(更大點(diǎn)也可以),然后在串口的接收中斷服務(wù)程序中,先將定時(shí)器的計(jì)數(shù)寄存器清零,然后重新開
始定時(shí),如果接收的不是最后一個(gè)字節(jié),那么在下個(gè)字節(jié)來的時(shí)候定時(shí)器就會(huì)又從零開始計(jì)數(shù),如果后面再?zèng)]有數(shù)據(jù)進(jìn)來的話,定
時(shí)器就會(huì)因?yàn)槎〞r(shí)時(shí)間到而進(jìn)入定時(shí)器中斷,就表示數(shù)據(jù)接收結(jié)束了。
-------------------------------------------------------
2、簡單理解MODBUS通信協(xié)議
對(duì)于01 16 1000 1234 ABCD這段代碼的含義說明如下:
向地址 01的控制器1000地址處寫入1234 。
地址域:就是指 從站的地址,比如一個(gè)儀表,這個(gè)地址就是它的通訊地址;
功能碼:就是你要做的事情,通訊的目的 就是讀寫數(shù)據(jù),所以 ModBus 功能碼雖然很多,但是只有兩個(gè)是我們常用的,就是讀和
寫。讀的功能碼是03,寫的功能碼是16。注意,這里的讀寫都是一次性寫16個(gè)位,也就是一個(gè)WORD(包含數(shù)據(jù)地址與數(shù)據(jù))
功能碼如表2。
----------------------------
表1、ModBus功能碼
功能碼 名稱 作用
1 0x01 讀取線圈狀態(tài) 取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)
2 0x02 讀取輸入狀態(tài) 取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF)
3 0x03 讀取保持寄存器 在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值
4 0x04 讀取輸入寄存器 在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值
5 0x05 強(qiáng)置單線圈 強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài)
6 0x06 預(yù)置單寄存器 把具體二進(jìn)值裝入一個(gè)保持寄存器
7 0x07 讀取異常狀態(tài) 取得8個(gè)內(nèi)部線圈的通斷狀態(tài),這8個(gè)線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機(jī)狀態(tài),短報(bào)文適宜于迅速讀取狀態(tài)。
8 0x08 回送診斷校驗(yàn) 把診斷校驗(yàn)報(bào)文送從機(jī),以對(duì)通信處理進(jìn)行評(píng)鑒。
9 0x09 編程(只用于484) 使主機(jī)模擬編程器作用,修改PC從機(jī)邏輯。
10 0x0A 控詢(只用于484) 可使主機(jī)與一臺(tái)正在執(zhí)行長程序任務(wù)從機(jī)通信,探詢?cè)搹臋C(jī)是否已完成其操作任務(wù),僅在含有功能碼9的報(bào)文發(fā)送后,本功能碼才發(fā)送。
11 0x0B 讀取事件計(jì)數(shù) 可使主機(jī)發(fā)出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯(cuò)誤時(shí)。
12 0x0C 讀取通信事件記錄 可是主機(jī)檢索每臺(tái)從機(jī)的ModBus事務(wù)處理通信事件記錄(比如傳送53條報(bào)文)。如果某項(xiàng)事務(wù)處理完成,記錄會(huì)給出有關(guān)錯(cuò)誤。
13 0x0D 編程(184/384 484 584) 可使主機(jī)模擬編程器功能修改PC從機(jī)邏輯
14 0x0E 探詢(184/384 484 584) 可使主機(jī)與正在執(zhí)行任務(wù)的從機(jī)通信,定期控詢?cè)搹臋C(jī)是否已完成其程序操作,僅在含有功能13的報(bào)文發(fā)送后,本功能碼才得發(fā)送。
15 0x0F 強(qiáng)置多線圈 強(qiáng)置一串連續(xù)邏輯線圈的通斷。
16 0x10 預(yù)置多寄存器 把具體的二進(jìn)制值裝入一串連續(xù)的保持寄存器。
17 0x11 報(bào)告從機(jī)標(biāo)識(shí) 可使主機(jī)判斷編址從機(jī)的類型及該從機(jī)運(yùn)行指示燈的狀態(tài)。
18 0x12 (884和MICRO 84) 可使主機(jī)模擬編程功能,修改PC狀態(tài)邏輯。
19 0x13 重置通信鏈路 發(fā)生非可修改錯(cuò)誤后,是從機(jī)復(fù)位于已知狀態(tài),可重置順序字節(jié)。
20 0x14 讀取通用參數(shù)(584L) 顯示擴(kuò)展存儲(chǔ)器文件中的數(shù)據(jù)信息。
21 0x15 寫入通用參數(shù)(584L) 把通用參數(shù)寫入擴(kuò)展存儲(chǔ)文件,或修改之。
22~64 保留作擴(kuò)展功能備用
65~72 保留以備用戶功能所用 留作用戶功能的擴(kuò)展編碼
73~119 非法功能
120~127 保留 留作內(nèi)部作用
128~255 保留 用于異常應(yīng)答
----------------------------
表2、ModBus功能碼與數(shù)據(jù)類型對(duì)應(yīng)表
代碼 功能 數(shù)據(jù)類型
1
2
3 整型、字符型狀態(tài)字浮點(diǎn)型
4 整型、狀態(tài)字、浮點(diǎn)型
5
6 整型、字符型、狀態(tài)字、浮點(diǎn)型
8 N/A 重復(fù)“回路反饋”信息
15
16 整型、字符型、狀態(tài)字、浮點(diǎn)型
----------------------------
表3、Modbus寄存器
寄存器種類 說明 PLC類比 舉例說明
離散輸入
狀態(tài)DI
輸入端口。通過外部設(shè)定改變輸入狀態(tài),可讀但不可寫 DI數(shù)字量輸入 面板上的按鍵、開關(guān)狀態(tài),電機(jī)的故障狀態(tài)
線圈狀態(tài)DO 輸出端口。可設(shè)定端口的輸出狀態(tài),也可以讀取該位的輸出狀態(tài),可分為兩種不同的執(zhí)行狀態(tài),例如保持型或邊沿觸發(fā)型 DO數(shù)字量
輸出
電磁閥輸出、電機(jī)的啟停控制信號(hào)、
LED顯示等
保持
寄存器AO
輸出參數(shù)或保持參數(shù),控制器運(yùn)行時(shí)被設(shè)定的某些參數(shù)。
可讀可寫
AO模擬量 模擬量輸出設(shè)定值,PID運(yùn)行參數(shù)
輸入
寄存器AI
輸入?yún)?shù)。控制器運(yùn)行時(shí)從外部設(shè)備獲得的參數(shù)。
可讀但不可寫
AI模擬量輸入 模擬量輸入
Modbus協(xié)議定義了4種基本數(shù)據(jù)類型:只讀位數(shù)據(jù)DI可讀寫位數(shù)據(jù)DO只讀16位數(shù)據(jù)AI可讀寫16位數(shù)據(jù)AO這些數(shù)據(jù)分別被稱為輸入狀態(tài)線圈狀態(tài)輸入寄存器保持寄存器
DI 數(shù)字輸入,離散輸入,一個(gè)地址一個(gè)數(shù)據(jù)位,用戶只能讀取它的狀態(tài),不能修改。
比如面板上的按鍵、開關(guān)狀態(tài),電機(jī)的故障狀態(tài)
DO 數(shù)字輸出,線圈輸出,一個(gè)地址一個(gè)數(shù)據(jù)位,用戶可以置位、復(fù)位,可以回讀狀態(tài)。
比如電磁閥輸出,電機(jī)的啟停控制信號(hào)、LED顯示等
AI 模擬輸入,輸入寄存器,一個(gè)地址16位數(shù)據(jù),用戶只能讀,不能修改,比如一個(gè)電壓值的讀數(shù)
AO 模擬輸出,保持寄存器,一個(gè)地址16位數(shù)據(jù),用戶可以寫,也可以回讀,比如一個(gè)控制變頻器的電流值
無論這些東西被叫做什么名字,其內(nèi)容不外乎這幾種,輸入的信號(hào)用戶只能看不能改,輸出的信號(hào)用戶控制,并可以回讀。離散的
數(shù)據(jù)只有一位,模擬的數(shù)據(jù)有16位。
----------------------------
數(shù)據(jù) 就是我們傳遞的消息,這個(gè)對(duì)于我們來說才是最終目的。 1000 1234 就是我們傳遞的消息,是我們要告訴從站的內(nèi)容,它又
分兩部分:地址和內(nèi)容。如果把從站比喻成一個(gè)大樓地址域就是大樓的門牌號(hào),而數(shù)據(jù)里的地址就是大樓的房間號(hào),換成變頻器也
就是變頻器的參數(shù)地址。所以這段幀 就是這樣理解:告訴01大樓的1000房間,1234 往01變頻器的1000參數(shù)寫1234。差錯(cuò)校驗(yàn):
是為了防止出錯(cuò)而做的保護(hù),就是雙方約定的各種計(jì)算方法,也就是我們?cè)趯?shí)際應(yīng)用中的偶校驗(yàn)、奇校驗(yàn)、停止位等等。 這里的
ABCD 是隨便寫的,沒任何意義。
-------------------------------------------------------
3、表1與表2名詞解釋
1)功能碼含義
讀:
01_DI: 讀內(nèi)部比特量輸出狀態(tài),如告警、變位、故障、異常等。
02_DO:讀外部開關(guān)量輸入狀態(tài),如光耦輸入、繼電器輸入等。
03_AO:讀內(nèi)部輸出量的寄存器,如一些配置參數(shù)、定值的讀取等。
04_AI: 讀外部輸入量的寄存器,如外部電壓電流模擬量,溫濕度等。
功能碼01、02讀到的位滿8個(gè)組合成一個(gè)字節(jié),可以用功能碼04讀取;線圈可以直接定義成一個(gè)位變量或者直接置某變量的某一位
寫:
功能碼05:寫內(nèi)部單個(gè)開關(guān)量狀態(tài);如光耦輸出、繼電器輸出等。
功能碼06:寫內(nèi)部單個(gè)寄存器的值;如更改配置參數(shù)、定值等。
功能碼15:寫內(nèi)部多個(gè)開關(guān)量狀態(tài);如同05。
功能碼16:寫內(nèi)部多個(gè)寄存器的值;如同06;對(duì)時(shí)是寫多個(gè)寄存器,用此功能碼。
11:通信超時(shí)或錯(cuò)誤時(shí)詢問用
12:詢問從機(jī)檢測(cè)到的各種故障、異常事件
----------------------------
2)關(guān)于實(shí)現(xiàn)
先定義一個(gè)變量區(qū)如: uint modbus_data [50],再定義那些保持寄存器和輸入寄存器,如下:
保持寄存器:M30001-M300022 // 存放設(shè)置的參數(shù),用 03讀,16寫
輸入寄存器:M40001-M40028 // 存放實(shí)時(shí)數(shù)據(jù),如啟動(dòng)、運(yùn)行、停止、待機(jī)以及錯(cuò)誤代碼 ,用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
--------------------------------------------------------------------------------------------------------------
二、通訊信息傳輸過程
當(dāng)通訊命令由發(fā)送設(shè)備(主機(jī))發(fā)送至接收設(shè)備(從機(jī))時(shí),符合相應(yīng)地址碼的從機(jī)接收通訊命令,并根據(jù)功能碼及相關(guān)要求讀取信息,如果CRC校驗(yàn)無誤,則執(zhí)行相應(yīng)的任務(wù),然后把執(zhí)行結(jié)果(數(shù)據(jù))返送給主機(jī)。返回的信息中包括地址碼、功能碼、執(zhí)行后的數(shù)據(jù)以及CRC校驗(yàn)碼,如果CRC校驗(yàn)出錯(cuò)就不返回任何信息。
1.1 地址碼
地址碼是每次通訊信息幀的第一字節(jié)(8位),從0到255。這個(gè)字節(jié)表明由用戶設(shè)置地址的從機(jī)將接收由主機(jī)發(fā)送來的信息。每個(gè)從機(jī)都必須有唯一的地址碼,并且只有符合地址碼的從機(jī)才能響應(yīng)回送信息。當(dāng)從機(jī)回送信息時(shí),回送數(shù)據(jù)均以各自的地址碼開始。主機(jī)發(fā)送的地址碼表明將發(fā)送到的從機(jī)地址,而從機(jī)返回的地址碼表明回送的從機(jī)地址。相應(yīng)的地址碼表明該信息來自于何處。
-------------------------------------------------------
1.2 功能碼
功能碼是每次通訊信息幀傳送的第二個(gè)字節(jié)。ModBus通訊規(guī)約可定義的功能碼為1到127。PDM系列儀表/變送器僅用到其中的一部分功能碼。作為主機(jī)請(qǐng)求發(fā)送,通過功能碼告訴從機(jī)應(yīng)執(zhí)行什么動(dòng)作。作為從機(jī)響應(yīng),從機(jī)返回的功能碼與從主機(jī)發(fā)送來的功能碼一樣,并表明從機(jī)已響應(yīng)主機(jī)并且已進(jìn)行相關(guān)的操作。
表1 Modbus部分功能碼
功能碼
定 義
操 作(二進(jìn)制)
0x02
讀開關(guān)量輸入
讀取一路或多路開關(guān)量狀態(tài)輸入數(shù)據(jù)
0x01
讀開關(guān)量輸出
讀取一路或多路開關(guān)量輸出狀態(tài)數(shù)據(jù)
0x03
讀寄存器數(shù)據(jù)
讀取一個(gè)或多個(gè)寄存器的數(shù)據(jù)
0x05
寫開關(guān)量輸出
控制一路繼電器“合/分”輸出
0x06
寫單路寄存器
把一組二進(jìn)制數(shù)據(jù)寫入單個(gè)寄存器
0x10
寫多路寄存器
把多組二進(jìn)制數(shù)據(jù)寫入多個(gè)寄存器
-------------------------------------------------------
1.3 數(shù)據(jù)區(qū)
數(shù)據(jù)區(qū)包括需要由從機(jī)返送何種信息或執(zhí)行什么動(dòng)作。這些信息可以是數(shù)據(jù)(如:開關(guān)量輸入/輸出、模擬量輸入/輸出、寄存器等等)、參考地址等。例如,主機(jī)通過功能碼03告訴從機(jī)返回寄存器的值(包含要讀取寄存器的起始地址及讀取寄存器的長度),則返回的數(shù)據(jù)包括寄存器的數(shù)據(jù)長度及數(shù)據(jù)內(nèi)容。對(duì)于不同的從機(jī),地址和數(shù)據(jù)信息都不相同(應(yīng)給出通訊信息表)。
PDM 系列儀表/變送器采用Modbus通訊規(guī)約,主機(jī)(PLC、RTU、PC機(jī)、DCS等)利用通訊命令(功能碼03),可以任意讀取其數(shù)據(jù)寄存器(其數(shù)據(jù)信息表詳見附錄)。PDM系列儀表/變送器的數(shù)據(jù)寄存器存儲(chǔ)的電量多達(dá)幾百個(gè)(如:電流、電壓、功率、0~31次諧波分量等),并且都是16位(2字節(jié))的二進(jìn)制數(shù)據(jù),并且高位在前;一次最多可讀取寄存器數(shù)(既各種電量的數(shù)量)是50個(gè)。
PDM響應(yīng)的命令格式是從機(jī)地址、功能碼、數(shù)據(jù)區(qū)及CRC碼。數(shù)據(jù)區(qū)的數(shù)據(jù)都是兩個(gè)字節(jié),并且高位在前(電能量除外)。
注:1PDM-820AC/ACM/ACRPDM-800AC/ACM具有“03”、“06”、“10”功能碼;
2、如果PDM采用MODBUS ASCII通訊協(xié)議,其通訊數(shù)據(jù)格式為;7個(gè)數(shù)據(jù)位,1個(gè)停止位,偶校驗(yàn)。
--------------------------------------------------------------------------------------------------------------
三、MODBUS功能碼
3.1 功能碼“02:讀1路或多路開關(guān)量輸入狀態(tài)
例如:主機(jī)要讀取地址為01,開關(guān)量DI1—DI4的輸入狀態(tài)。讀取告警、變位、故障、異常等。
從機(jī)(PDM)數(shù)據(jù)寄存器的地址和數(shù)據(jù)為:
起始位地址
DI寄存器數(shù)據(jù)(16進(jìn)制)
備 注
0000
0B
DI1/DI2/DI4狀態(tài)為“1”,DI3狀態(tài)為
“0”
主機(jī)發(fā)送的報(bào)文格式為:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送的信息
備 注
從機(jī)地址
1
01
發(fā)送至地址為01的從機(jī)
功能碼
1
02
讀開關(guān)量輸入狀態(tài)
起始BIT位
2
0000
起始BIT位地址為0000
讀數(shù)據(jù)長度
2
0004
讀取4路開關(guān)量輸入狀態(tài)位
CRC碼
2
79C9
由主機(jī)計(jì)算得到CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式:
從機(jī)響應(yīng)
字節(jié)數(shù)
返回的信息
備 注
從機(jī)地址
1
01
來自從機(jī)01
功能碼
1
02
讀開關(guān)量輸入狀態(tài)
數(shù)據(jù)長度
1
01
1個(gè)字節(jié)(8個(gè)BIT位)
DI狀態(tài)數(shù)據(jù)
1
0B
DI寄存器內(nèi)容
CRC碼
2
E04F
由從機(jī)計(jì)算得到CRC碼
-------------------------------------------------------
3.2 功能碼“01:讀1路或多路開關(guān)量輸出狀態(tài)
例如:主機(jī)要讀取地址為01,開關(guān)量DO1,DO2的輸出狀態(tài)。讀取電磁閥輸出、電機(jī)的啟停控制信號(hào)LED顯示等
從機(jī)(PDM)數(shù)據(jù)寄存器的地址和數(shù)據(jù)為:
起始位地址
DO寄存器數(shù)據(jù)(16進(jìn)制)
備 注
0000
02
DO2輸出狀態(tài)為“1”,DO1輸出狀態(tài)為“0”
主機(jī)發(fā)送的報(bào)文格式:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送的信息
備 注
從機(jī)地址
1
01
發(fā)送至地址為01的從機(jī)
功能碼
1
01
讀開關(guān)量輸出狀態(tài)
起始BIT位
2
0000
起始BIT位地址為0000
讀數(shù)據(jù)長度
2
0002
讀取2路繼電器輸出狀態(tài)位
CRC碼
2
BDCB
由主機(jī)計(jì)算得到CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式:
從機(jī)響應(yīng)
字節(jié)數(shù)
返回的信息
備 注
從機(jī)地址
1
01
來自從機(jī)01
功能碼
1
01
讀開關(guān)量輸出狀態(tài)
數(shù)據(jù)長度
1
01
1個(gè)字節(jié)(8個(gè)BIT位)
DO狀態(tài)數(shù)據(jù)
1
02
DO寄存器內(nèi)容
CRC碼
2
D049
由從機(jī)計(jì)算得到CRC碼
-------------------------------------------------------
3.3 功能碼“03:讀多路寄存器輸入
例如:主機(jī)要讀取地址為01,起始地址為0116的3個(gè)從機(jī)寄存器數(shù)據(jù)。讀取多路定值,比如模擬量輸出設(shè)定值,PID運(yùn)行參數(shù)
從機(jī)(PDM)數(shù)據(jù)寄存器的地址和數(shù)據(jù)為:
寄存器地址
寄存器數(shù)據(jù)(16進(jìn)制)
對(duì)應(yīng)PDM電量
0116
1784
UA
0117
1780
UB
0118
178A
UC
主機(jī)發(fā)送的報(bào)文格式:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送的信息
備 注
從機(jī)地址
1
01
發(fā)送至地址為01的從機(jī)
功能碼
1
03
讀取寄存器
起始地址
2
0116
起始地址為0116
數(shù)據(jù)長度
3
0003
讀取3個(gè)寄存器(共6個(gè)字節(jié))
CRC碼
2
E5F3
由主機(jī)計(jì)算得到CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式:
從機(jī)響應(yīng)
字節(jié)數(shù)
返回的信息
備 注
從機(jī)地址
1
01
來自從機(jī)01
功能碼
1
03
讀取寄存器
讀取字
1
06
3個(gè)寄存器共6個(gè)字節(jié)
寄存器數(shù)據(jù)1
2
1784
地址為0116內(nèi)存的內(nèi)容
寄存器數(shù)據(jù)2
2
1780
地址為0117內(nèi)存的內(nèi)容
寄存器數(shù)據(jù)3
2
178A
地址為0118內(nèi)存的內(nèi)容
CRC碼
2
5847
由從機(jī)計(jì)算得到CRC碼
-------------------------------------------------------
3.4 功能碼“05:寫1路開關(guān)量輸出(遙控)
例1:開關(guān)量輸出點(diǎn)DO1,其當(dāng)前狀態(tài)為“分”,主機(jī)要控制該路繼電器“合”。強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài)
控制命令為:
“FF00”為控制繼電器“合”;“0000”為控制繼電器“分”;
主機(jī)發(fā)送的報(bào)文格式:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送的信息
備 注
從機(jī)地址
1
01
發(fā)送至地址為01的從機(jī)
功能碼
1
05
寫開關(guān)量輸出狀態(tài)
輸出BIT位
2
0000
對(duì)應(yīng)輸出繼電器BIT位(DO1)
控制命令
2
FF00
控制該路繼電器輸出為“合”狀態(tài)位
CRC碼
2
8C3A
由主機(jī)計(jì)算得到CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式:
與主機(jī)發(fā)送的報(bào)文格式及數(shù)據(jù)內(nèi)容完全相同。
例2:開關(guān)量輸出點(diǎn)DO2,其當(dāng)前狀態(tài)為“合”,主機(jī)要控制該路繼電器“分”。
主機(jī)發(fā)送的報(bào)文格式:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送的信息
備 注
從機(jī)地址
1
01
發(fā)送至地址為01的從機(jī)
功能碼
1
05
寫開關(guān)量輸出狀態(tài)
輸出BIT位
2
0001
對(duì)應(yīng)輸出繼電器BIT位(DO2)
控制命令
2
0000
控制該路繼電器輸出為“合”狀態(tài)位
CRC碼
2
9C0A
由主機(jī)計(jì)算得到CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式:與主機(jī)發(fā)送的報(bào)文格式及數(shù)據(jù)內(nèi)容完全相同。
-------------------------------------------------------
3.5 功能碼“06:寫單路寄存器
例如:主機(jī)要把數(shù)據(jù)07D0,保存到地址為002C的從機(jī)寄存器中去(從機(jī)地址碼為01)。通訊數(shù)據(jù)保存結(jié)束后,地址為002C的PDM表原存儲(chǔ)信息為:
地址
原來存儲(chǔ)數(shù)據(jù)(16進(jìn)制)
002C
04B0
主機(jī)發(fā)送的報(bào)文格式:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送的信息
舉 例
從機(jī)地址
1
01
發(fā)送至地址為01的從機(jī)
功能碼
1
06
寫單路寄存器
起始地址
2
002C
要寫入的寄存器地址
寫入數(shù)據(jù)
2
07D0
對(duì)應(yīng)的新數(shù)據(jù)
CRC碼
2
4BAF
由主機(jī)計(jì)算得到的CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式: 與主機(jī)發(fā)送的報(bào)文格式及數(shù)據(jù)內(nèi)容完全相同。
-------------------------------------------------------
3.6 功能碼“10:寫多路寄存器
主機(jī)利用這個(gè)功能碼把多個(gè)數(shù)據(jù)保存到PDM表的數(shù)據(jù)存儲(chǔ)器中去。Modbus通訊規(guī)約中的寄存器指的是16位(即2字節(jié)),并且高位在前。這樣PDM的存儲(chǔ)器都是二個(gè)字節(jié)。由于Modbus通訊規(guī)約允許每次最多保存60個(gè)寄存器,因此PDM一次也最多允許保存60個(gè)數(shù)據(jù)寄存器。比如對(duì)時(shí)
例如:主機(jī)要把0064,0010保存到地址為002C,002D的從機(jī)寄存器中去(從機(jī)地址碼為01)。通訊數(shù)據(jù)保存結(jié)束后,地址為002C/002D的PDM表內(nèi)存儲(chǔ)信息為:
地址
原來存儲(chǔ)數(shù)據(jù)(16進(jìn)制)
002C
04B0
002D
1388
主機(jī)發(fā)送的報(bào)文格式:
主機(jī)發(fā)送
字節(jié)數(shù)
發(fā)送信息
舉 例
從機(jī)地址
1
01
發(fā)送至從機(jī)01
功能碼
1
10
寫多路寄存器
起始地址
2
002C
要寫入的寄存器的起始地址
保存數(shù)據(jù)字長度
2
0002
保存數(shù)據(jù)的字長度(共2字)
保存數(shù)據(jù)字節(jié)長
1
04
保存數(shù)據(jù)的字節(jié)長度(共4字節(jié))
保存數(shù)據(jù)1
2
04B0
數(shù)據(jù)地址002C
保存數(shù)據(jù)2
2
1388
數(shù)據(jù)地址002D
CRC碼
2
FC63
由主機(jī)計(jì)算得到的CRC碼
從機(jī)(PDM)響應(yīng)返回的報(bào)文格式:
從機(jī)響應(yīng)
字節(jié)數(shù)
字節(jié)數(shù)
舉 例
從機(jī)地址
1
01
來自從機(jī)01
功能碼
1
10
寫多路寄存器
起始地址
2
002C
起始地址為002C
保存數(shù)據(jù)字長度
2
0002
保存2個(gè)字長度的數(shù)據(jù)
CRC碼
2
8001
由從機(jī)計(jì)算得到的CRC碼
-------------------------------------------------------
3.7 功能碼“03”:讀事件記錄
采用功能碼03H向保持寄存器地址0x0001,讀一個(gè)字,產(chǎn)生讀一個(gè)事件記錄的作用。
主站發(fā)送: 從機(jī)地址 功能碼 事件記錄地址H 事件記錄地址L 事件記錄個(gè)數(shù)H 事件記錄個(gè)數(shù)L CRC碼H CRC碼L 01 03 00 01 00 01 D5 CA 子站響應(yīng): 從機(jī)地址 功能碼 字節(jié)數(shù) 事件條目數(shù)H 事件條目數(shù)L 事件代碼H
(事件組號(hào)) 事件代碼L
(事件代碼) 動(dòng)作值
02:合; 01:分 01 03 0C 00 01 04 09 02 毫秒L 毫秒H 分鐘 小時(shí) 日 月份 年份 CRC碼H CRC碼L A5 4D 19 12 17 01 07 2F EB

--------------------------------------------------------------------------------------------------------------
四、錯(cuò)誤校驗(yàn)碼(CRC校驗(yàn))
主機(jī)或從機(jī)可用校驗(yàn)碼進(jìn)行判別接收信息是否正確。由于電子噪聲或一些其它干擾,信息在傳輸過程中有時(shí)會(huì)發(fā)生錯(cuò)誤,錯(cuò)誤校驗(yàn)碼(CRC)可以檢驗(yàn)主機(jī)或從機(jī)在通訊數(shù)據(jù)傳送過程中的信息是否有誤,錯(cuò)誤的數(shù)據(jù)可以放棄(無論是發(fā)送還是接收),這樣增加了系統(tǒng)的安全和效率。
MODBUS通訊協(xié)議的CRC(冗余循環(huán)碼)包含2個(gè)字節(jié),即16位二進(jìn)制數(shù)。CRC碼由發(fā)送設(shè)備(主機(jī))計(jì)算,放置于發(fā)送信息幀的尾部。接收信息的設(shè)備(從機(jī))再重新計(jì)算接收到信息的CRC,比較計(jì)算得到的CRC是否與接收到的相符,如果兩者不相符,則表明出錯(cuò)。
在進(jìn)行CRC計(jì)算時(shí)只用8個(gè)數(shù)據(jù)位,起始位及停止位,如有奇偶校驗(yàn)位也包括奇偶校驗(yàn)位,都不參與CRC計(jì)算。
● CRC碼的計(jì)算方法是:
1.預(yù)置1個(gè)16位的寄存器為十六進(jìn)制FFFF(即全為1);稱此寄存器為CRC寄存器;
2.把第一個(gè)8位二進(jìn)制數(shù)據(jù)(既通訊信息幀的第一個(gè)字節(jié))與16位的CRC寄存器的低8位相異或,把結(jié)果放于CRC寄存器;
3.把CRC寄存器的內(nèi)容右移一位(朝低位)用0填補(bǔ)最高位,并檢查右移后的移出位;
4.如果移出位為0:重復(fù)第3步(再次右移一位);
如果移出位為1:CRC寄存器與多項(xiàng)式A001(1010 0000 0000 0001)進(jìn)行異或;
5.重復(fù)步驟3和4,直到右移8次,這樣整個(gè)8位數(shù)據(jù)全部進(jìn)行了處理;
6.重復(fù)步驟2到步驟5,進(jìn)行通訊信息幀下一個(gè)字節(jié)的處理;
7.將該通訊信息幀所有字節(jié)按上述步驟計(jì)算完成后,得到的16位CRC寄存器的高、低字節(jié)進(jìn)行交換;
8.最后得到的CRC寄存器內(nèi)容即為:CRC碼。
--------------------------------------------------------------------------------------------------------------
五、通訊錯(cuò)誤信息及數(shù)據(jù)的處理
當(dāng)PDM表檢測(cè)到除了CRC碼出錯(cuò)以外的錯(cuò)誤時(shí),必須向主機(jī)回送信息,功能碼的最高位置為1,即從機(jī)返送給主機(jī)的功能碼是在主機(jī)發(fā)送的功能碼的基礎(chǔ)上加128 。以下的這些代碼表明有意外的錯(cuò)誤發(fā)生。PDM從主機(jī)接收到的信息如有CRC錯(cuò)誤,則將被PDM表忽略。
PDM返送的錯(cuò)誤碼的格式如下(CRC碼除外):
地址碼: 1字節(jié)
功能碼: 1字節(jié)(最高位為1)
錯(cuò)誤碼: 1字節(jié)
CRC碼: 2字節(jié)
PDM響應(yīng)回送如下錯(cuò)誤碼:
81.非法的功能碼。
接收到的功能碼PDM表不支持。
82.非法的數(shù)據(jù)位置。
指定的數(shù)據(jù)位置超出PDM表的范圍。
83.非法的數(shù)據(jù)值。
接收到主機(jī)發(fā)送的數(shù)據(jù)值超出PDM相應(yīng)地址的數(shù)據(jù)范圍。
--------------------------------------------------------------------------------------------------------------
Tags:電力儀表,modbus,設(shè)置  
責(zé)任編輯:admin
相關(guān)文章列表
S7-200和組態(tài)王的連接,cpu226 PLC 與組態(tài)王如何連接
smart s7-200與組態(tài)王用以太網(wǎng)怎么連接,組態(tài)王的以太網(wǎng)連接設(shè)置
基于S7-200SMART實(shí)現(xiàn)Modbus TCP通信_(tái)200smart modbus tcp
三菱plc FX3U與三菱E800變頻器專用指令通信應(yīng)用,IVDR指令和 IVCK
三菱PLC的modbus-rtu通訊實(shí)例_三菱小型PLC FX3U系列Modbus 通訊教
西門子200SMART與眾辰變頻器的MODBUS通信實(shí)例40001和十六進(jìn)制的轉(zhuǎn)
西門子S7-200 smart通過modbus rtu 協(xié)議采集K37A數(shù)據(jù)項(xiàng)目案例
昆侖通態(tài)MCGS觸摸屏和西門子V20變頻器之間的MODBUS通訊
Modbus通信協(xié)議介紹以及Modbus Poll、Slave軟件使用介紹_modbus 
【工具教程】Modbus Slave使用教程
干貨 | Modscan32  Modsim32 Modbus協(xié)議調(diào)試分享_modbus調(diào)試
Modscan32軟件的使用 Modsim32
西門子plc控制英威騰變頻器實(shí)例,西門子200SMART的MODBUS通訊!
施耐德PM500電量表通過MODBUS協(xié)議與組態(tài)王通訊
組態(tài)軟件的無線485通訊實(shí)例,組態(tài)王modbus通訊實(shí)例
組態(tài)王和三菱plc 基于數(shù)傳電臺(tái)的組態(tài)王控制實(shí)現(xiàn)遠(yuǎn)程采集控制器PL
KingView組態(tài)王與信捷PLC通訊解決方案 MODBUS通訊設(shè)置
KingView組態(tài)王通過modbus與第三方設(shè)備通訊,如何實(shí)現(xiàn)字節(jié)或字的
組態(tài)王modbus通信用法教程modbus-rtu、modbus-tcp莫迪康通信配置
KingView組態(tài)王如何獲取modbus TCP數(shù)據(jù)?_組態(tài)王數(shù)據(jù)轉(zhuǎn)發(fā)modbust
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
推薦文章
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
主站蜘蛛池模板: 台东市| 兴业县| 横峰县| 赞皇县| 曲周县| 湟中县| 嘉善县| 江西省| 安溪县| 翁源县| 屯昌县| 界首市| 新巴尔虎左旗| 神木县| 上栗县| 玉门市| 华阴市| 分宜县| 台南市| 望奎县| 兴和县| 巴林左旗| 常山县| 伊金霍洛旗| 涟水县| 容城县| 镇远县| 昭通市| 鹿邑县| 子长县| 通河县| 通化市| 佛冈县| 芮城县| 文化| 通化市| 朝阳市| 康平县| 沙田区| 兴隆县| 沁源县|