国产精品视频一区二区三区四,亚洲av美洲av综合av,99国内精品久久久久久久,欧美电影一区二区三区电影

產(chǎn)品推薦:氣相|液相|光譜|質(zhì)譜|電化學(xué)|元素分析|水分測定儀|樣品前處理|試驗(yàn)機(jī)|培養(yǎng)箱


化工儀器網(wǎng)>技術(shù)中心>技術(shù)參數(shù)>正文

歡迎聯(lián)系我

有什么可以幫您? 在線咨詢

ModBus通信系統(tǒng)協(xié)議

來源:湖南嶸晟時代自動化科技有限公司   2021年04月29日 14:11  

          ModBus通信系統(tǒng)協(xié)議

ModBus網(wǎng)絡(luò)是一個工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計算機(jī)通過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。下表1是ModBus的功能碼定義。

表1 ModBus功能碼

 
 
功能碼名稱作用
01

讀取線圈狀態(tài)

取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF)

02讀取輸入狀態(tài)取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF)
03讀取保持寄存器在一個或多個保持寄存器中取得當(dāng)前的二進(jìn)制值
04讀取輸入寄存器在一個或多個輸入寄存器中取得當(dāng)前的二進(jìn)制值
05強(qiáng)置單線圈強(qiáng)置一個邏輯線圈的通斷狀態(tài)
06預(yù)置單寄存器把具體二進(jìn)值裝入一個保持寄存器
07讀取異常狀態(tài)

取得8個內(nèi)部線圈的通斷狀態(tài),這8個線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機(jī)狀態(tài),短報文適宜于迅速讀取狀態(tài)

08回送診斷校驗(yàn)把診斷校驗(yàn)報文送從機(jī),以對通信處理進(jìn)行評鑒
09編程(只用于484)使主機(jī)模擬編程器作用,修改PC從機(jī)邏輯
10控詢(只用于484)可使主機(jī)與一臺正在執(zhí)行長程序任務(wù)從機(jī)通信,探詢該從機(jī)是否已完成其操作任務(wù),僅在含有功能碼9的報文發(fā)送后,本功能碼才發(fā)送
11讀取事件計數(shù)可使主機(jī)發(fā)出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯誤時
12讀取通信事件記錄可是主機(jī)檢索每臺從機(jī)的ModBus事務(wù)處理通信事件記錄。如果某項事務(wù)處理完成,記錄會給出有關(guān)錯誤
13編程(184/384 484 584)可使主機(jī)模擬編程器功能修改PC從機(jī)邏輯
14探詢(184/384 484 584)可使主機(jī)與正在執(zhí)行任務(wù)的從機(jī)通信,定期控詢該從機(jī)是否已完成其程序操作,僅在含有功能13的報文發(fā)送后,本功能碼才得發(fā)送
15強(qiáng)置多線圈強(qiáng)置一串連續(xù)邏輯線圈的通斷
16預(yù)置多寄存器把具體的二進(jìn)制值裝入一串連續(xù)的保持寄存器
17報告從機(jī)標(biāo)識可使主機(jī)判斷編址從機(jī)的類型及該從機(jī)運(yùn)行指示燈的狀態(tài)
18(884和MICRO 84)可使主機(jī)模擬編程功能,修改PC狀態(tài)邏輯
19重置通信鏈路發(fā)生非可修改錯誤后,是從機(jī)復(fù)位于已知狀態(tài),可重置順序字節(jié)
20讀取通用參數(shù)(584L)顯示擴(kuò)展存儲器文件中的數(shù)據(jù)信息
21寫入通用參數(shù)(584L)把通用參數(shù)寫入擴(kuò)展存儲文件,或修改之
22~64保留作擴(kuò)展功能備用 
65~72保留以備用戶功能所用留作用戶功能的擴(kuò)展編碼
73~119非法功能 
120~127保留留作內(nèi)部作用
128~255保留用于異常應(yīng)答

ModBus網(wǎng)絡(luò)只是一個主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個之多的遠(yuǎn)程從屬控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個系統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。表2是ModBus各功能碼對應(yīng)的數(shù)據(jù)類型。

表2 ModBus功能碼與數(shù)據(jù)類型對應(yīng)表

代碼功能數(shù)據(jù)類型
01
02
03整型、字符型、狀態(tài)字、浮點(diǎn)型
04整型、狀態(tài)字、浮點(diǎn)型
05
06整型、字符型、狀態(tài)字、浮點(diǎn)型
08N/A重復(fù)“回路反饋”信息
15
16整型、字符型、狀態(tài)字、浮點(diǎn)型
17字符型

(1)ModBus的傳輸方式

 在ModBus系統(tǒng)中有2種傳輸模式可選擇。這2種傳輸模式與從機(jī)PC通信的能力是同等的。選擇時應(yīng)視所用ModBus主機(jī)而定,每個ModBus系統(tǒng)只能使用一種模式,不允許2種模式混用。一種模式是ASCII(美國信息交換碼),另一種模式是RTU(遠(yuǎn)程終端設(shè)備)這兩種模式的定義見表3

表3 ASCII和RTU傳輸模式的特性

特性

 

ASCII(7位)

RTU(8位)

編碼系統(tǒng)

 十六進(jìn)制(使用ASCII可打印字符:0~9,A~F)二進(jìn)制
每一個字符的位數(shù)開始位1位1位
數(shù)據(jù)位(有效位*)7位8位
奇偶校驗(yàn)(任選)1位(此位用于奇偶校驗(yàn),無校應(yīng)則無該位)1位(此位用于奇偶校驗(yàn),無校應(yīng)則無該位)
停止位1或2位1或2位
錯誤校驗(yàn)LRC(即縱向冗余校驗(yàn))CRC(即循環(huán)冗余校驗(yàn))

ASCII可打印字符便于故障檢測,而且對于用高級語言(如Fortan)編程的主計算機(jī)及主PC很適宜。RTU則適用于機(jī)器語言編程的計算機(jī)和PC主機(jī)。

用RTU模式傳輸?shù)臄?shù)據(jù)是8位二進(jìn)制字符。如欲轉(zhuǎn)換為ASCII模式,則每個RTU字符首先應(yīng)分為高位和低位兩部分,這兩部分各含4位,然后轉(zhuǎn)換成十六進(jìn)制等量值。用以構(gòu)成報文的ASCII字符都是十六進(jìn)制字符。ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數(shù)據(jù)的譯瑪和處理更為容易一些,此外,用RTU模式時報文字符必須以連續(xù)數(shù)據(jù)流的形式傳送,用ASCII模式,字符之間可產(chǎn)生長達(dá)1s的間隔,以適應(yīng)速度較快的機(jī)器。

表4給出了以RTU方式讀取整數(shù)據(jù)的例子

以RTU方式讀取整數(shù)據(jù)的例子

主機(jī)請求
地址功能碼第一個寄存器的高位地址第一個寄存器的低位地址寄存器的數(shù)量的高位寄存器的數(shù)量的底位錯誤校驗(yàn)
010300380001XX
從機(jī)應(yīng)答
地址功能碼字節(jié)數(shù)數(shù)據(jù)高字節(jié)數(shù)據(jù)低字節(jié)錯誤校驗(yàn)
010324124XX
十六進(jìn)制數(shù)4124表示的十進(jìn)制整數(shù)為16676,錯誤校驗(yàn)值要根據(jù)傳輸方式而定。

(2)ModBus的數(shù)據(jù)校驗(yàn)方式

CRC-16(循環(huán)冗余錯誤校驗(yàn))

CRC-16錯誤校驗(yàn)程序如下:報文(此處只涉及數(shù)據(jù)位,不指起始位、停止位和任選的奇偶校驗(yàn)位)被看作是一個連續(xù)的二進(jìn)制,其最高有效位(MSB)發(fā)送。報文先與X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進(jìn)制數(shù)11000000000000101。整數(shù)商位忽略不記,16位余數(shù)加入該報文(MSB先發(fā)送),成為2個CRC校驗(yàn)字節(jié)。余數(shù)中的1全部初始化,以免所有的零成為一條報文被接收。經(jīng)上述處理而含有CRC字節(jié)的報文,若無錯誤,到接收設(shè)備后再被同一多項式(X↑16+X↑15+X↑2+1)除,會得到一個零余數(shù)(接收設(shè)備核驗(yàn)這個CRC字節(jié),并將其與被傳送的CRC比較)。全部運(yùn)算以2為模(無進(jìn)位)。

習(xí)慣于成串發(fā)送數(shù)據(jù)的設(shè)備會送出字符的最右位(LSB有效位)。而在生成CRC情況下,發(fā)送應(yīng)是被除數(shù)的最高有效位MSB。由于在運(yùn)算中不用進(jìn)位,為便于操作起見,計算CRC時設(shè)MSB在最右位。生成多項式的位序也必須反過來,以保持一致。多項式的MSB略去不記,因其只對商有影響而不影響余數(shù)。

生成CRC-16校驗(yàn)字節(jié)的步驟如下:

①裝如一個16位寄存器,所有數(shù)位均為1。

②該16位寄存器的高位字節(jié)與開始8位字節(jié)進(jìn)行“異或”運(yùn)算。運(yùn)算結(jié)果放入這個16位寄存器。

③把這個16寄存器向右移一位。

④若向右(標(biāo)記位)移出的數(shù)位是1,則生成多項式1010000000000001和這個寄存器進(jìn)行“異或”運(yùn)算;若向右移出的數(shù)位是0,則返回③。

⑤重復(fù)③和④,直至移出8位。

⑥另外8位與該十六位寄存器進(jìn)行“異或”運(yùn)算。

⑦重復(fù)③~⑥,直至該報文所有字節(jié)均與16位寄存器進(jìn)行“異或”運(yùn)算,并移位8次。

⑧這個16位寄存器的內(nèi)容即2字節(jié)CRC錯誤校驗(yàn),被加到報文的最高有效位。

另外,在某些非ModBus通信協(xié)議中也經(jīng)常使用CRC16作為校驗(yàn)手段,而且產(chǎn)生了一些CRC16的變種,他們是使用CRC16多項式X↑16+X↑15+X↑2+1,單裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,裝入寄存器值為0000或FFFFH。

LRC(縱向冗余錯誤校驗(yàn))

LRC錯誤校驗(yàn)用于ASCII模式。這個錯誤校驗(yàn)是一個8位二進(jìn)制數(shù),可作為2個ASCII十六進(jìn)制字節(jié)傳送。把十六進(jìn)制字符轉(zhuǎn)換成二進(jìn)制,加上無循環(huán)進(jìn)位的二進(jìn)制字符和二進(jìn)制補(bǔ)碼結(jié)果生成LRC錯誤校驗(yàn)(參見圖)。這個LRC在接收設(shè)備進(jìn)行核驗(yàn),并與被傳送的LRC進(jìn)行比較,冒號(:)、回車符號(CR)、換行字符(LF)和置入的其他任何非ASCII十六進(jìn)制字符在運(yùn)算時忽略不計。

表5 LRC生成范例--讀取02號從機(jī)的前8個線圈

 

十六進(jìn)制

 

二進(jìn)制

 
 
 
 
 
地址02 00000010
功能碼01 00000001
起始地址高位00 00000000
起始地址低位00 00000000
單元數(shù)量00 00000000
 08

+

00001000
  

 

00001011
  

變成補(bǔ)碼

11110101
錯誤校驗(yàn)F5 F5
接受PC把所有收到的數(shù)據(jù)字節(jié)(包括最后的LRC)加在一起,8位應(yīng)全部為0(注意:和可能超過8位,應(yīng)略去位)   00000010
   00000001
   00000000
   00000000
   00000000
   00001000
 

錯誤校驗(yàn)

11110101
   

00000000

 

免責(zé)聲明

  • 凡本網(wǎng)注明“來源:化工儀器網(wǎng)”的所有作品,均為浙江興旺寶明通網(wǎng)絡(luò)有限公司-化工儀器網(wǎng)合法擁有版權(quán)或有權(quán)使用的作品,未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用上述作品。已經(jīng)本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使用,并注明“來源:化工儀器網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)法律責(zé)任。
  • 本網(wǎng)轉(zhuǎn)載并注明自其他來源(非化工儀器網(wǎng))的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé),不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品第一來源,并自負(fù)版權(quán)等法律責(zé)任。
  • 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
企業(yè)未開通此功能
詳詢客服 : 0571-87858618
明水县| 通榆县| 五家渠市| 白银市| 屏边| 德昌县| 景德镇市| 肇州县| 姚安县| 阜新市| 囊谦县| 安丘市| 镇巴县| 东乡| 穆棱市| 双牌县| 绿春县| 吴桥县| 襄樊市| 拜城县| 清徐县| 多伦县| 泰州市| 夏津县| 方城县| 望奎县| 余干县| 建德市| 尚志市| 兴和县| 深水埗区| 巴东县| 海盐县| 谢通门县| 宜章县| 区。| 泗阳县| 鄯善县| 海林市| 聂荣县| 宁河县|