MODBUS通信協(xié)議.doc
《MODBUS通信協(xié)議.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《MODBUS通信協(xié)議.doc(9頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
MODBUS通信協(xié)議 HZR、HZC系列產(chǎn)品采用RS485、RS232、CAN、EtherNet(TCPIP)等通信方式與當(dāng)?shù)乇O(jiān)控系統(tǒng)或上一級(jí)調(diào)度自動(dòng)化系統(tǒng)連接。MODBUS是應(yīng)用層協(xié)議,可基于上述通信媒介進(jìn)行系統(tǒng)互連。MODBUS采用直接內(nèi)存訪問的模式,其基本協(xié)議定義了內(nèi)存訪問的具體細(xì)節(jié),各應(yīng)用程序或系統(tǒng)互連時(shí)只須提供內(nèi)存地址表即可。 一、 HZR、HZC系列產(chǎn)品支持的MODBUS命令 1、 連續(xù)讀n個(gè)字(功能碼03H) 下行: 設(shè)備地址(BYTE):01H~FFH 功 能 碼(BYTE):03H 起始地址(WORD):0000H~FFFFH 讀的字?jǐn)?shù)(WORD):0001H~007DH 校 驗(yàn) 碼(WORD):以上所有字節(jié)的CRC16校驗(yàn)和 上行: 設(shè)備地址(BYTE):01H~FFH 功 能 碼(BYTE):03H 數(shù)據(jù)長(zhǎng)度(BYTE):01H~FAH 數(shù)據(jù)內(nèi)容(BYTE):讀到的具體數(shù)據(jù) 數(shù)據(jù)內(nèi)容(BYTE):讀到的具體數(shù)據(jù) 。。。 數(shù)據(jù)內(nèi)容(BYTE):讀到的具體數(shù)據(jù) 校 驗(yàn) 碼(WORD):以上所有字節(jié)的CRC16校驗(yàn)和 2、 寫1個(gè)字(功能碼06H) 下行: 設(shè)備地址(BYTE):01H~FFH 功 能 碼(BYTE):06H 起始地址(WORD):0000H~FFFFH 寫入數(shù)據(jù)(WORD):0001H~FFFFH 校 驗(yàn) 碼(WORD):以上所有字節(jié)的CRC16校驗(yàn)和 上行: 設(shè)備地址(BYTE):01H~FFH 功 能 碼(BYTE):06H 起始地址(WORD):0000H~FFFFH 寫入數(shù)據(jù)(WORD):0001H~FFFFH 校 驗(yàn) 碼(WORD):以上所有字節(jié)的CRC16校驗(yàn)和 3、 連續(xù)寫n個(gè)字(功能碼10H) 下行: 設(shè)備地址(BYTE):01H~FFH 功 能 碼(BYTE):10H 起始地址(WORD):0000H~FFFFH 寫的字?jǐn)?shù)(WORD):0001H~007DH 數(shù)據(jù)長(zhǎng)度(BYTE):01H~FAH 數(shù)據(jù)內(nèi)容(BYTE):寫入的具體數(shù)據(jù) 數(shù)據(jù)內(nèi)容(BYTE):寫入的具體數(shù)據(jù) 。。。 數(shù)據(jù)內(nèi)容(BYTE):寫入的具體數(shù)據(jù) 校 驗(yàn) 碼(WORD):以上所有字節(jié)的CRC16校驗(yàn)和 上行: 設(shè)備地址(BYTE):01H~FFH 功 能 碼(BYTE):10H 起始地址(WORD):0000H~FFFFH 寫的字?jǐn)?shù)(WORD):0001H~007DH 校 驗(yàn) 碼(WORD):以上所有字節(jié)的CRC16校驗(yàn)和 CRC計(jì)算例程: unsigned short CalculateCRC(unsigned short* pData,unsigned short wLength) { unsigned short wCRC; wCRC = 0xffff; while(wLength--) wCRC = (wCRC>>8)^c_wTableCRC[(wCRC^*pData++)&0x00ff]; return wCRC; } unsigned short c_wTableCRC[256] = { 0x0000,0xc0c1,0xc181,0x0140,0xc301,0x03c0,0x0280,0xc241, 0xc601,0x06c0,0x0780,0xc741,0x0500,0xc5c1,0xc481,0x0440, 0xcc01,0x0cc0,0x0d80,0xcd41,0x0f00,0xcfc1,0xce81,0x0e40, 0x0a00,0xcac1,0xcb81,0x0b40,0xc901,0x09c0,0x0880,0xc841, 0xd801,0x18c0,0x1980,0xd941,0x1b00,0xdbc1,0xda81,0x1a40, 0x1e00,0xdec1,0xdf81,0x1f40,0xdd01,0x1dc0,0x1c80,0xdc41, 0x1400,0xd4c1,0xd581,0x1540,0xd701,0x17c0,0x1680,0xd641, 0xd201,0x12c0,0x1380,0xd341,0x1100,0xd1c1,0xd081,0x1040, 0xf001,0x30c0,0x3180,0xf141,0x3300,0xf3c1,0xf281,0x3240, 0x3600,0xf6c1,0xf781,0x3740,0xf501,0x35c0,0x3480,0xf441, 0x3c00,0xfcc1,0xfd81,0x3d40,0xff01,0x3fc0,0x3e80,0xfe41, 0xfa01,0x3ac0,0x3b80,0xfb41,0x3900,0xf9c1,0xf881,0x3840, 0x2800,0xe8c1,0xe981,0x2940,0xeb01,0x2bc0,0x2a80,0xea41, 0xee01,0x2ec0,0x2f80,0xef41,0x2d00,0xedc1,0xec81,0x2c40, 0xe401,0x24c0,0x2580,0xe541,0x2700,0xe7c1,0xe681,0x2640, 0x2200,0xe2c1,0xe381,0x2340,0xe101,0x21c0,0x2080,0xe041, 0xa001,0x60c0,0x6180,0xa141,0x6300,0xa3c1,0xa281,0x6240, 0x6600,0xa6c1,0xa781,0x6740,0xa501,0x65c0,0x6480,0xa441, 0x6c00,0xacc1,0xad81,0x6d40,0xaf01,0x6fc0,0x6e80,0xae41, 0xaa01,0x6ac0,0x6b80,0xab41,0x6900,0xa9c1,0xa881,0x6840, 0x7800,0xb8c1,0xb981,0x7940,0xbb01,0x7bc0,0x7a80,0xba41, 0xbe01,0x7ec0,0x7f80,0xbf41,0x7d00,0xbdc1,0xbc81,0x7c40, 0xb401,0x74c0,0x7580,0xb541,0x7700,0xb7c1,0xb681,0x7640, 0x7200,0xb2c1,0xb381,0x7340,0xb101,0x71c0,0x7080,0xb041, 0x5000,0x90c1,0x9181,0x5140,0x9301,0x53c0,0x5280,0x9241, 0x9601,0x56c0,0x5780,0x9741,0x5500,0x95c1,0x9481,0x5440, 0x9c01,0x5cc0,0x5d80,0x9d41,0x5f00,0x9fc1,0x9e81,0x5e40, 0x5a00,0x9ac1,0x9b81,0x5b40,0x9901,0x59c0,0x5880,0x9841, 0x8801,0x48c0,0x4980,0x8941,0x4b00,0x8bc1,0x8a81,0x4a40, 0x4e00,0x8ec1,0x8f81,0x4f40,0x8d01,0x4dc0,0x4c80,0x8c41, 0x4400,0x84c1,0x8581,0x4540,0x8701,0x47c0,0x4680,0x8641, 0x8201,0x42c0,0x4380,0x8341,0x4100,0x81c1,0x8081,0x4040 }; 通訊數(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ù)長(zhǎng)度: 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。 一、通訊信息傳輸過程: 當(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位),從1到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)的操作。 表8.1 MODBUS部分功能碼 功能碼 定 義 操 作(二進(jìn)制) 02 讀開關(guān)量輸入 讀取一路或多路開關(guān)量狀態(tài)輸入數(shù)據(jù) 01 讀開關(guān)量輸出 讀取一路或多路開關(guān)量輸出狀態(tài)數(shù)據(jù) 03 讀寄存器數(shù)據(jù) 讀取一個(gè)或多個(gè)寄存器的數(shù)據(jù) 05 寫開關(guān)量輸出 控制一路繼電器“合/分”輸出 06 寫單路寄存器 把一組二進(jìn)制數(shù)據(jù)寫入單個(gè)寄存器 10 寫多路寄存器 把多組二進(jìn)制數(shù)據(jù)寫入多個(gè)寄存器 1.3 數(shù)據(jù)區(qū): 數(shù)據(jù)區(qū)包括需要由從機(jī)返送何種信息或執(zhí)行什么動(dòng)作。這些信息可以是數(shù)據(jù)(如:開關(guān)量輸入/輸出、模擬量輸入/輸出、寄存器等等)、參考地址等。例如,主機(jī)通過功能碼03告訴從機(jī)返回寄存器的值(包含要讀取寄存器的起始地址及讀取寄存器的長(zhǎng)度),則返回的數(shù)據(jù)包括寄存器的數(shù)據(jù)長(zhǎng)度及數(shù)據(jù)內(nèi)容。對(duì)于不同的從機(jī),地址和數(shù)據(jù)信息都不相同(應(yīng)給出通訊信息表)。 二、MODBUS功能碼簡(jiǎn)介 2.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ù)長(zhǎng)度 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ù)長(zhǎng)度 1 01 1個(gè)字節(jié)(8個(gè)BIT位) DI狀態(tài)數(shù)據(jù) 1 0B DI寄存器內(nèi)容 CRC碼 2 E04F 由從機(jī)計(jì)算得到CRC碼 2.2 功能碼“01”:讀1路或多路開關(guān)量輸出狀態(tài) 例如:主機(jī)要讀取地址為01,開關(guān)量DO1,DO2的輸出狀態(tài)。 從機(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ù)長(zhǎng)度 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ù)長(zhǎng)度 1 01 1個(gè)字節(jié)(8個(gè)BIT位) DO狀態(tài)數(shù)據(jù) 1 02 DO寄存器內(nèi)容 CRC碼 2 D049 由從機(jī)計(jì)算得到CRC碼 2.3 功能碼“03”:讀多路寄存器輸入 例如:主機(jī)要讀取地址為01,起始地址為0116的3個(gè)從機(jī)寄存器數(shù)據(jù)。 從機(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ù)長(zhǎng)度 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碼 2.4 功能碼“05”:寫1路開關(guān)量輸出(“遙控”) 例1:開關(guān)量輸出點(diǎn)DO1,其當(dāng)前狀態(tài)為“分”,主機(jī)要控制該路繼電器“合”。 控制命令為: “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)容完全相同。 2.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)容完全相同。 2.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ù)寄存器。 例如:主機(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ù)字長(zhǎng)度 2 0002 保存數(shù)據(jù)的字長(zhǎng)度(共2字) 保存數(shù)據(jù)字節(jié)長(zhǎng) 1 04 保存數(shù)據(jù)的字節(jié)長(zhǎng)度(共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ù)字長(zhǎng)度 2 0002 保存2個(gè)字長(zhǎng)度的數(shù)據(jù) CRC碼 2 8001 由從機(jī)計(jì)算得到的CRC碼 三、錯(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ù)范圍。- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- MODBUS 通信協(xié)議
鏈接地址:http://m.appdesigncorp.com/p-10176203.html