日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

RTU通信协议

發(fā)布時(shí)間:2023/12/14 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RTU通信协议 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

RTU通信協(xié)議
一、通訊模式
1.通訊接口電氣標(biāo)準(zhǔn): 通訊接口符合RS-232 RS–485國(guó)際標(biāo)準(zhǔn)。
2. 通訊協(xié)議: 采用MODBUS通訊協(xié)議RTU模式。
3.通訊格式約定:
(1)通信速率: 300 600 1200 2400 4800 9600可選
(2)RTU數(shù)據(jù)格式。
(3)字符格式為11位:
一個(gè)起始位 八個(gè)數(shù)據(jù)位 一個(gè)奇偶校驗(yàn)位(無(wú)校驗(yàn)則無(wú))
一個(gè)停止位(有校驗(yàn)時(shí)),兩個(gè)停止位(無(wú)校驗(yàn)時(shí))。
每個(gè)字符或字節(jié)以如下方式發(fā)送(從左到右):
最低有效位…最高有效位;
4.RTU幀:
初始結(jié)構(gòu)≥ 4字節(jié)時(shí)間 地址碼 = 1字節(jié) 功能碼 = 1字節(jié)
數(shù)據(jù)區(qū) = n字節(jié) 錯(cuò)誤校驗(yàn)= 16位CRC 碼 結(jié)束結(jié)構(gòu)≥ 4字節(jié)時(shí)間
地址碼:地址碼為通訊傳送的第一個(gè)字節(jié)。在一個(gè)通訊網(wǎng)絡(luò)中每個(gè)從機(jī)對(duì)應(yīng)唯一的地址碼,
可設(shè)置的范圍為0—255(十進(jìn)制),按照MODBUS通信規(guī)約,可能的從設(shè)備地址
范圍為1—247(十進(jìn)制)。主機(jī)發(fā)送的地址碼表明將發(fā)送到的從機(jī)地址,從機(jī)發(fā)送
的地址碼表明回送的從機(jī)地址。
功能瑪:功能碼為通訊傳送的第二個(gè)字節(jié)。MODBUS通訊規(guī)約定義的功能號(hào)為1—127,本
表只利用了其中的一部分功能碼。主機(jī)發(fā)送功能碼是告訴從機(jī)器應(yīng)該執(zhí)行什么操作,
正常情況下,從機(jī)將執(zhí)行該操作并作為響應(yīng)回送該功能碼,如果回送的功能碼最高
位為1,則表明從機(jī)沒有響應(yīng)操作或發(fā)送出錯(cuò)誤。
數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)的組織是根據(jù)不同的功能碼而不同。數(shù)據(jù)區(qū)可以是實(shí)際的數(shù)值,也可以是儀
表寄存器的地址或者狀態(tài)設(shè)置。
錯(cuò)誤校驗(yàn):CRC校驗(yàn)。將整個(gè)RTU幀看作是一個(gè)連續(xù)的二進(jìn)制數(shù)據(jù)串,校驗(yàn)時(shí)只涉及數(shù)據(jù)位,
舍去起始位,停止位和任選的奇偶校驗(yàn)位。
產(chǎn)生CRC碼的步驟如下:
1. 預(yù)置一個(gè)16位的寄存器為全1(即十六進(jìn)制FFFFH),稱此寄存器為CRC寄存器;
2. 把第一個(gè)8位數(shù)據(jù)與CRC寄存器的低8位相異或,結(jié)果放回CRC寄存器;
3. 把16位CRC寄存器右移一位,用0添補(bǔ)最高位,檢測(cè)移出位:
4. 如果移出位為0,則重復(fù)第3步驟(再次移出);如果移出位為1,則CRC寄存器
與多項(xiàng)式A001H相異或,結(jié)果放回CRC寄存器;
5. 重復(fù)第3、4步驟,直至移出8位;
6. 將下一個(gè)8位數(shù)據(jù)與CRC寄存器低8位相異或,結(jié)果放回CRC寄存器,重復(fù)第2、3、4、5步驟;
7. 最后得到的CRC寄存器內(nèi)容即為產(chǎn)生的CRC校驗(yàn)碼。
二、功能說明
1.讀取單個(gè)或多個(gè)儀表寄存器內(nèi)容(功能碼為03):
此功能允許用戶從儀表中讀取測(cè)量值、記錄資料及系統(tǒng)所設(shè)定的參數(shù)。
發(fā)送格式 儀表地址 功能碼 啟始地址高位 啟始地址低位 數(shù)據(jù)個(gè)數(shù)高位 數(shù)據(jù)個(gè)數(shù)低位 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 03H 00H 02H 00H 01H CRC CRC
RP_MJ_WRITE Length: 0008, Data: 04 03 00 60 00 02 C4 40
IRP_MJ_WRITE Length: 0008, Data: 04 03 00 64 00 02 85 81
儀表回傳的數(shù)據(jù)中包含了儀表地址、功能碼、數(shù)據(jù)長(zhǎng)度、和CRC校驗(yàn)碼。
回送格式 儀表地址 功能碼 數(shù)據(jù)字節(jié)長(zhǎng)度 數(shù)據(jù)高位 數(shù)據(jù)低位 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 03H 02H 00H 60H CRC CRC

2.寫單個(gè)數(shù)據(jù)到儀表某一寄存器(功能碼為06):
此功能允許用戶修改儀表中任何許可的單一寄存器內(nèi)容;但其變更的資料必須是在被接收的范圍內(nèi)。
發(fā)送格式 儀表地址 功能碼 寄存器地址高位 寄存器地址低位 寫入數(shù)據(jù)高位 寫入數(shù)據(jù)低位 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 06H 00H 10H 00H 01H CRC CRC
儀表回送信息為:
回送格式 儀表地址 功能碼 返回正確代碼 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 06H 00H CRC CRC
3.寫連續(xù)數(shù)據(jù)到儀表寄存器(功能碼為10H):
此功能允許用戶變更任何許可的連續(xù)寄存器內(nèi)容;但其變更的資料必須是在被接收的范圍內(nèi)。
發(fā)送格式 儀表地址 功能碼 起始地址高位 起始地址低位 寄存?zhèn)€數(shù)高位 寄存?zhèn)€數(shù)低位 數(shù)據(jù)字節(jié)個(gè)數(shù) 數(shù)據(jù)1高位 數(shù)據(jù)1低位 數(shù)據(jù)2高位 數(shù)據(jù)2低位 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 10H 00H 02H 00H 02H 04H 00H 64H 00H 00H CRC CRC
儀表回送信息為:
回送格式 儀表地址 功能碼 返回正確代碼 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 10H 00H CRC CRC
4.錯(cuò)誤產(chǎn)生時(shí)的回應(yīng):
回送
格式 儀表
地址 功能碼 出錯(cuò)
代碼 CRC校驗(yàn)低位 CRC校驗(yàn)高位
舉例 01H 83H 01H CRC CRC
5.代碼響應(yīng):
00H = 正確響應(yīng)主機(jī)操作,同時(shí)回送原功能代碼;
01H = 非法的功能碼,同時(shí)功能碼最高位置1;
02H = 非法的寄存器,同時(shí)功能碼最高位置1;
03H = 非法的數(shù)據(jù),同時(shí)功能碼最高位置1;
04H = CRC校驗(yàn)錯(cuò)誤,同時(shí)功能碼最高位置1。
05H = 奇偶校驗(yàn)錯(cuò)誤,同時(shí)功能碼最高位置1。
三.數(shù)值表示方法:
儀表回送的數(shù)據(jù)為雙字節(jié)整數(shù)表示測(cè)量值或組態(tài)參數(shù)時(shí),該雙字節(jié)整數(shù)所表示的范圍為-23767
–+32767(正數(shù)以原碼表示,負(fù)數(shù)以補(bǔ)碼表示)。當(dāng)所讀取的數(shù)據(jù)本身含有小數(shù)位時(shí),應(yīng)在讀取數(shù)據(jù)
之前或之后,應(yīng)對(duì)照儀表的寄存器參數(shù)表,讀出小數(shù)位參數(shù)x,工程數(shù)據(jù)=該雙字節(jié)整數(shù)/10x ; 與小數(shù)
位無(wú)關(guān)的數(shù)據(jù),則x=0;而小數(shù)位固定數(shù)據(jù),則x=常數(shù)值。向儀表寫入數(shù)據(jù)時(shí),數(shù)據(jù)的組成方式與讀數(shù)
據(jù)時(shí)的解碼方式逆向。
例:讀取的測(cè)量值數(shù)據(jù)=03E8H(雙字節(jié)十六進(jìn)制)=1000(十進(jìn)制)
此時(shí)讀取的儀表小數(shù)位參數(shù)=0001H(雙字節(jié)十六進(jìn)制)=1(十進(jìn)制),即x=1
則測(cè)量值的工程量=1000/101=100.0 其他數(shù)據(jù)同以上計(jì)算方法
四、通訊站址和方式參數(shù)說明
儀表附加通訊功能時(shí),增加兩個(gè)參數(shù):通訊地址參數(shù)為Cd,方式參數(shù)為SCT(WT700系列為bt)。

SCT.0 = 5 、4、3、2、1、0時(shí),波特率為9600、4800、2400、1200、600、300;
SCT.1 = 0、1、2時(shí),為無(wú)校驗(yàn)、奇校驗(yàn)、偶校驗(yàn);
SCT.2 = 0、1時(shí),為2位停止位、1位停止位。

注:SCT.0為顯示值最右側(cè)數(shù)值。 SCT.2、 SCT.1為0時(shí)對(duì)應(yīng)顯示位不亮。
對(duì)應(yīng)儀表的參數(shù)和測(cè)量值地址見“寄存器地址說明”
寄存器地址說明
No. 寄存器地址 寄存器內(nèi)容 狀態(tài) 備 注
1 0000H 1號(hào)報(bào)警器限值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
2 0001H 2號(hào)報(bào)警器限值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
3 0002H 設(shè)定值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
4 0003H 指示燈類型 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 1—3),與小數(shù)位無(wú)關(guān)
5 0004H 保留
6 0005H 1號(hào)報(bào)警器類型 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 00—14),與小數(shù)位無(wú)關(guān)
7 0006H 1號(hào)報(bào)警器回差 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
8 0007H 2號(hào)報(bào)警器類型 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 00—14),與小數(shù)位無(wú)關(guān)
9 0008H 2號(hào)報(bào)警器回差 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
10 0009H 小數(shù)位 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 0—3),與小數(shù)位無(wú)關(guān)
11 000AH 顯示最大值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
12 000BH 顯示最小值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制-999—9999),與小數(shù)位相關(guān)
13 000CH 輸入最大值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 0—100.0)固定小數(shù)位為1
14 000DH 輸入最小值 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 0—100.0)固定小數(shù)位為1
15 000EH 儀表類型 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 001—016),與小數(shù)位無(wú)關(guān)
16 000FH 輸出類型 讀/寫 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 0— 2),與小數(shù)位無(wú)關(guān)
17 0010H 本機(jī)地址 只讀 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 0—255)與小數(shù)位無(wú)關(guān)
18 0011H 通訊設(shè)置 只讀 雙字節(jié)整數(shù)(可設(shè)置范圍:十進(jìn)制 000—025),與小數(shù)位無(wú)關(guān)
19 0060H 儀表測(cè)量值 只讀 雙字節(jié)整數(shù)顯示值+雙字節(jié)整數(shù)小數(shù)位
提示說明:
1. 每次數(shù)據(jù)讀/寫的最大長(zhǎng)度為16字節(jié),即八個(gè)寄存器的數(shù)據(jù)內(nèi)容(一個(gè)寄存器地址對(duì)應(yīng)兩個(gè)字節(jié)數(shù)據(jù));當(dāng)讀/寫的數(shù)據(jù)長(zhǎng)度大于16字節(jié)時(shí),將返回錯(cuò)誤代碼。
2. 數(shù)據(jù)長(zhǎng)度必須和所需讀/寫的寄存器數(shù)量相對(duì)應(yīng),否則將返回錯(cuò)誤代碼。
3. 對(duì)于只讀寄存器不能進(jìn)行寫操作,否則將返回錯(cuò)誤代碼。
4. 在對(duì)接收的數(shù)據(jù)處理過程中,如果奇偶校驗(yàn)與CRC校驗(yàn)同時(shí)發(fā)現(xiàn)錯(cuò)誤,則優(yōu)先返回奇偶校驗(yàn)錯(cuò)誤代碼。
5. 儀表處于參數(shù)設(shè)置狀態(tài)時(shí),將暫不響應(yīng)主機(jī)發(fā)出的命令,只有處于正常測(cè)量狀態(tài)下時(shí),才正確響應(yīng)主機(jī)。
6. 測(cè)量值為故障狀態(tài)時(shí)讀出的數(shù)據(jù)為無(wú)效數(shù)據(jù)4E20H(十進(jìn)制20000,表示輸入信號(hào)過大),D8F0H(十進(jìn)制-10000,表示輸入信號(hào)過小)。

總結(jié)

以上是生活随笔為你收集整理的RTU通信协议的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。