日本 欧美 制服 中文 国产丨18进禁男女爱免费视频丨亚洲性夜夜摸人人天天丨精品免费人成视频网丨日韩欧美黄色一区二区三区

歡迎進(jìn)入廣州光橋通信官網(wǎng),我們的產(chǎn)品有:光纖收發(fā)器,工業(yè)交換機(jī),電話光端機(jī),工業(yè)4G路由器.

他們都在找: 工業(yè)PoE交換機(jī)光纖收發(fā)器視頻光端機(jī)電話光端機(jī)工業(yè)以太網(wǎng)交換機(jī)

當(dāng)前位置首頁 » 技術(shù)支持 » ModBus功能碼定義

ModBus功能碼定義

返回列表 來源:光橋 查看手機(jī)網(wǎng)址
掃一掃!ModBus功能碼定義掃一掃!
瀏覽:- 發(fā)布日期:2020-08-25 09:12:31【

ModBus功能碼定義

Modbus通訊協(xié)議功能碼一覽
Modbus網(wǎng)絡(luò)是一個(gè)工業(yè)通信系統(tǒng),由帶智能終端的可編程序控制器和計(jì)算機(jī)通過公用線路或局部專用線路連接而成。其系統(tǒng)結(jié)構(gòu)既包括硬件、亦包 括軟件。它可應(yīng)用于各種數(shù)據(jù)采集和過程監(jiān)控。
ModBus功能碼
功能碼       名稱       作用
01    讀取線圈狀態(tài)    取得一組邏輯線圈的當(dāng)前狀態(tài)(ON/OFF) 
02     讀取輸入狀態(tài)     取得一組開關(guān)輸入的當(dāng)前狀態(tài)(ON/OFF) 
03     讀取保持寄存器     在一個(gè)或多個(gè)保持寄存器中取得當(dāng)前的二進(jìn)制值 
04     讀取輸入寄存器     在一個(gè)或多個(gè)輸入寄存器中取得當(dāng)前的二進(jìn)制值 
05     強(qiáng)置單線圈     強(qiáng)置一個(gè)邏輯線圈的通斷狀態(tài) 
06     預(yù)置單寄存器     把具體二進(jìn)值裝入一個(gè)保持寄存器 
07     讀取異常狀態(tài)     取得8個(gè)內(nèi)部線圈的通斷狀態(tài),這8個(gè)線圈的地址由控制器決定,用戶邏輯可以將這些線圈定義,以說明從機(jī)狀態(tài),短 報(bào)文適宜于迅速讀取狀態(tài) 
08  回送診斷校驗(yàn)  把診斷校驗(yàn)報(bào)文送從機(jī),以對(duì)通信處理進(jìn)行評(píng)鑒 
09  編程(只用于484)  使主機(jī)模擬編程器作用,修改PC從機(jī)邏輯 
10  控詢(只用于484)  可使主機(jī)與一臺(tái)正在執(zhí)行長(zhǎng)程序任務(wù)從機(jī)通信,探詢?cè)搹臋C(jī)是否已完成其操作任務(wù),僅在含有功能碼9的報(bào)文發(fā)送后,本功能碼才發(fā)送 
11  讀取事件計(jì)數(shù)  可使主機(jī)發(fā)出單詢問,并隨即判定操作是否成功,尤其是該命令或其他應(yīng)答產(chǎn)生通信錯(cuò)誤時(shí) 
12  讀取通信事件記錄  可是主機(jī)檢索每臺(tái)從機(jī)的ModBus事務(wù)處理通信事件記錄。如果某項(xiàng)事務(wù)處理完成,記錄會(huì)給出有關(guān)錯(cuò)誤 
13  編程(184/384 484 584)  可使主機(jī)模擬編程器功能修改PC從機(jī)邏輯 
14  探詢(184/384 484 584)  可使主機(jī)與正在執(zhí)行任務(wù)的從機(jī)通信,定期控詢?cè)搹臋C(jī)是否已完成其程序操作,僅在含有功能13的報(bào)文發(fā)送后,本功能碼才得發(fā)送 
15  強(qiáng)置多線圈  強(qiáng)置一串連續(xù)邏輯線圈的通斷 
16  預(yù)置多寄存器  把具體的二進(jìn)制值裝入一串連續(xù)的保持寄存器 
17  報(bào)告從機(jī)標(biāo)識(shí)  可使主機(jī)判斷編址從機(jī)的類型及該從機(jī)運(yùn)行指示燈的狀態(tài) 
18  (884和MICRO 84)  可使主機(jī)模擬編程功能,修改PC狀態(tài)邏輯 
19  重置通信鏈路  發(fā)生非可修改錯(cuò)誤后,是從機(jī)復(fù)位于已知狀態(tài),可重置順序字節(jié) 
20  讀取通用參數(shù)(584L)  顯示擴(kuò)展存儲(chǔ)器文件中的數(shù)據(jù)信息 
21  寫入通用參數(shù)(584L)  把通用參數(shù)寫入擴(kuò)展存儲(chǔ)文件,或修改之 
22~64  保留作擴(kuò)展功能備用  
65~72  保留以備用戶功能所用  留作用戶功能的擴(kuò)展編碼 
73~119  非法功能  
120~127  保留  留作內(nèi)部作用 
128~255  保留  用于異常應(yīng)答 
 
 
      Modbus網(wǎng)絡(luò)只是一個(gè)主機(jī),所有通信都由他發(fā)出。網(wǎng)絡(luò)可支持247個(gè)之多的遠(yuǎn)程從屬控制器,但實(shí)際所支持的從機(jī)數(shù)要由所用通信設(shè)備決定。采用這個(gè)系 統(tǒng),各PC可以和中心主機(jī)交換信息而不影響各PC執(zhí)行本身的控制任務(wù)。表2是ModBus各功能碼對(duì)應(yīng)的數(shù)據(jù)類型。 
表2 ModBus功能碼與數(shù)據(jù)類型對(duì)應(yīng)表 
代碼 功能 數(shù)據(jù)類型 
01 讀 位 
02 讀 位 
03 讀 整型、字符型、狀態(tài)字、浮點(diǎn)型 
04 讀 整型、狀態(tài)字、浮點(diǎn)型 
05 寫 位 
06 寫 整型、字符型、狀態(tài)字、浮點(diǎn)型 
08 N/A 重復(fù)“回路反饋”信息 
15 寫 位 
16 寫 整型、字符型、狀態(tài)字、浮點(diǎn)型 
17 讀 字符型 

(1)ModBus的傳輸方式 
 在ModBus系統(tǒng)中有2種傳輸模式可選擇。這2種傳輸模式與從機(jī)PC通信的能力是同等的。選擇時(shí)應(yīng)視所用ModBus主機(jī)而定, 每個(gè)ModBus系統(tǒng)只能使用一種模式,不允許2種模式混用。一種模式是ASCII(美國信息交換碼),另一種模式是RTU(遠(yuǎn)程終端設(shè)備)這兩種模式的定義: 
 
ASCII和RTU傳輸模式的特性 
特性  ASCII(7位) RTU(8位) 
編碼系統(tǒng)  十六進(jìn)制(使用ASCII可打印字符:0~9,A~F)  二進(jìn)制 
每一個(gè)字符的位數(shù)  開始位  1位  1位 
 數(shù)據(jù)位(最低有效位第一位)  7位  8位 
 奇偶校驗(yàn)(任選)  1位(此位用于奇偶校驗(yàn),無校應(yīng)則無該位)  1位(此位用于奇偶校驗(yàn),無校應(yīng)則無該位) 
 停止位  1或2位  1或2位 
 錯(cuò)誤校驗(yàn)  LRC(即縱向冗余校驗(yàn))  CRC(即循環(huán)冗余校驗(yàn)) 
      ASCII可打印字符便于故障檢測(cè),而且對(duì)于用高級(jí)語言(如Fortan)編程的主計(jì)算機(jī)及主PC很適宜。RTU則適用于機(jī)器語言編程的計(jì)算機(jī)和PC主機(jī)。 
      用RTU模式傳輸?shù)臄?shù)據(jù)是8位二進(jìn)制字符。如欲轉(zhuǎn)換為ASCII模式,則每個(gè)RTU字符首先應(yīng)分為高位和低位兩部分,這兩部分各含4位,然后轉(zhuǎn)換成十六進(jìn) 制等量值。用以構(gòu)成報(bào)文的ASCII字符都是十六進(jìn)制字符。ASCII模式使用的字符雖是RTU模式的兩倍,但ASCII數(shù)據(jù)的譯瑪和處理更為容易一些, 此外,用RTU模式時(shí)報(bào)文字符必須以連續(xù)數(shù)據(jù)流的形式傳送,用ASCII模式,字符之間可產(chǎn)生長(zhǎng)達(dá)1s的間隔,以適應(yīng)速度較快的機(jī)器。表4給出了以RTU 方式讀取整數(shù)據(jù)的例子 
以RTU方式讀取整數(shù)據(jù)的例子 
主機(jī)請(qǐng)求 
地址  功能碼  第一個(gè)寄存器的高位地址  第一個(gè)寄存器的低位地址  寄存器的數(shù)量的高位  寄存器的數(shù)量的底位  錯(cuò)誤校驗(yàn) 
01  03  00  38  00  01  XX 
從機(jī)應(yīng)答 
地址  功能碼  字節(jié)數(shù)  數(shù)據(jù)高字節(jié)  數(shù)據(jù)低字節(jié)  錯(cuò)誤校驗(yàn) 
01  03  2  41  24  XX 
十六進(jìn)制數(shù)4124表示的十進(jìn)制整數(shù)為16676,錯(cuò)誤校驗(yàn)值要根據(jù)傳輸方式而定。 
(2)Modbus的數(shù)據(jù)校驗(yàn)方式 
CRC-16(循環(huán)冗余錯(cuò)誤校驗(yàn)) 
      CRC-16錯(cuò)誤校驗(yàn)程序如下:報(bào)文(此處只涉及數(shù)據(jù)位,不指起始位、停止位和任選的奇偶校驗(yàn)位)被看作是一個(gè)連續(xù)的二進(jìn)制,其最高有效位(MSB)首選 發(fā)送。報(bào)文先與X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進(jìn)制數(shù) 11000000000000101。整數(shù)商位忽略不記,16位余數(shù)加入該報(bào)文(MSB先發(fā)送),成為2個(gè)CRC校驗(yàn)字節(jié)。余數(shù)中的1全部初始化,以免所 有的零成為一條報(bào)文被接收。經(jīng)上述處理而含有CRC字節(jié)的報(bào)文,若無錯(cuò)誤,到接收設(shè)備后再被同一多項(xiàng)式(X↑16+X↑15+X↑2+1)除,會(huì)得到一個(gè) 零余數(shù)(接收設(shè)備核驗(yàn)這個(gè)CRC字節(jié),并將其與被傳送的CRC比較)。全部運(yùn)算以2為模(無進(jìn)位)。 
      習(xí)慣于成串發(fā)送數(shù)據(jù)的設(shè)備會(huì)首選送出字符的最右位(LSB-最低有效位)。而在生成CRC情況下,發(fā)送首位應(yīng)是被除數(shù)的最高有效位MSB。由于在運(yùn)算中不 用進(jìn)位,為便于操作起見,計(jì)算CRC時(shí)設(shè)MSB在最右位。生成多項(xiàng)式的位序也必須反過來,以保持一致。多項(xiàng)式的MSB略去不記,因其只對(duì)商有影響而不影響 余數(shù)。 
生成CRC-16校驗(yàn)字節(jié)的步驟如下: 
①裝如一個(gè)16位寄存器,所有數(shù)位均為1。 
②該16位寄存器的高位字節(jié)與開始8位字節(jié)進(jìn)行“異或”運(yùn)算。運(yùn)算結(jié)果放入這個(gè)16位寄存器。 
③把這個(gè)16寄存器向右移一位。 
④若向右(標(biāo)記位)移出的數(shù)位是1,則生成多項(xiàng)式1010000000000001和這個(gè)寄存器進(jìn)行“異或”運(yùn)算;若向右移出的數(shù)位是0,則返 回③。 
⑤重復(fù)③和④,直至移出8位。 
⑥另外8位與該十六位寄存器進(jìn)行“異或”運(yùn)算。 
⑦重復(fù)③~⑥,直至該報(bào)文所有字節(jié)均與16位寄存器進(jìn)行“異或”運(yùn)算,并移位8次。 
⑧這個(gè)16位寄存器的內(nèi)容即2字節(jié)CRC錯(cuò)誤校驗(yàn),被加到報(bào)文的最高有效位。 
      另外,在某些非ModBus通信協(xié)議中也經(jīng)常使用CRC16作為校驗(yàn)手段,而且產(chǎn)生了一些CRC16的變種,他們是使用CRC16多項(xiàng)式X↑16+ X↑15+X↑2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次裝入寄存器值為0000或 FFFFH。 
LRC(縱向冗余錯(cuò)誤校驗(yàn)) 
      LRC錯(cuò)誤校驗(yàn)用于ASCII模式。這個(gè)錯(cuò)誤校驗(yàn)是一個(gè)8位二進(jìn)制數(shù),可作為2個(gè)ASCII十六進(jìn)制字節(jié)傳送。把十六進(jìn)制字符轉(zhuǎn)換成二進(jìn)制,加上無循環(huán)進(jìn) 位的二進(jìn)制字符和二進(jìn)制補(bǔ)碼結(jié)果生成LRC錯(cuò)誤校驗(yàn)(參見下)。這個(gè)LRC在接收設(shè)備進(jìn)行核驗(yàn),并與被傳送的LRC進(jìn)行比較,冒號(hào)(:)、回車符號(hào) (CR)、換行字符(LF)和置入的其他任何非ASCII十六進(jìn)制字符在運(yùn)算時(shí)忽略不計(jì)。 
LRC生成范例--讀取02號(hào)從機(jī)的前8個(gè)線圈 
 十六進(jìn)制     二進(jìn)制

地址  0  2   0000  0010 
功能碼  0  1   0000  0001 
起始地址高位  0  0   0000  0000 
起始地址低位  0  0   0000  0000 
單元數(shù)量  0  0   0000  0000 
 0  8  +  0000  1000 
   0000  1011 
  變成補(bǔ)碼  1111  0101 
錯(cuò)誤校驗(yàn)  F  5   F  5 
接受PC把所有收到的數(shù)據(jù)字節(jié)(包括最后的LRC)加在一起,8位應(yīng)全部為0(注意:和可能超過8位,應(yīng)略去最低位)     
    0000  0010 
    0000  0001 
    0000  0000 
    0000  0000 
    0000  0000 
    0000  1000 
  錯(cuò)誤校驗(yàn)  1111  0101 
   和  0000  0000


光纖收發(fā)器|工業(yè)交換機(jī)|PCM復(fù)用設(shè)備|串口光端機(jī)|串口服務(wù)器

    【本文標(biāo)簽】:光纖交換機(jī) 工業(yè)交換機(jī) 以太網(wǎng)交換機(jī) 光纖收發(fā)器 電話光端機(jī) 光電轉(zhuǎn)換器 光端機(jī)
    【責(zé)任編輯】:光橋版權(quán)所有:轉(zhuǎn)載請(qǐng)注明出處
    主站蜘蛛池模板: 荃湾区| 若尔盖县| 永和县| 达拉特旗| 乳山市| 滁州市| 石台县| 洞口县| 通渭县| 兴宁市| 陇川县| 咸阳市| 敦煌市| 株洲县| 江永县| 稻城县| 巫溪县| 台中县| 溧阳市| 从化市| 东港市| 比如县| 南城县| 西丰县| 浑源县| 吴川市| 拜城县| 璧山县| 观塘区| 金湖县| 滁州市| 漳浦县| 桃江县| 郧西县| 汝南县| 嘉鱼县| 威宁| 沂源县| 开原市| 马关县| 吴江市|