資源描述:
《MODBUS串口通訊協(xié)議》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、MODBUS串口通訊協(xié)議1、協(xié)議概述?數(shù)據(jù)格式:1位起始位8位數(shù)據(jù)位,最小的有效位先發(fā)送1位停止位偶校驗(yàn)一一》溫濕度、直流屏只能是無校驗(yàn),?波特率:4800BPS、9600BPS、19200BPS、38400BPS可供選擇?通訊地址:01?247,默認(rèn)地址為01》地址可設(shè)?Modbus協(xié)議支持RS232、RS485傳輸方式,默認(rèn)為RS232傳輸形式,若用RS485傳輸方式,需要加232<->485轉(zhuǎn)換器。?數(shù)據(jù)包組織說明:(1).木協(xié)議中涉及到的CRC校驗(yàn)皆是對(duì)木幀中所有數(shù)據(jù)的校驗(yàn),且校驗(yàn)位在傳輸時(shí)低位在前,高位在后。(2).木協(xié)議屮的模擬量均
2、采用%M表示,數(shù)值用補(bǔ)碼表示,所以必皿的取值范圍:一32768?+32767,模擬量在傳輸時(shí)高位在前,低位在后。(3).電壓電流的放大系數(shù)為10。即將實(shí)際的電壓電流量乘以10取整就是數(shù)據(jù)幀中的數(shù)據(jù)。2、CRC校驗(yàn)CRC域是兩個(gè)字節(jié),包含一16位的二進(jìn)制值。它由傳輸設(shè)備計(jì)算后加入到消息中。接收設(shè)備重新計(jì)算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤。CRC是先調(diào)入一值是全“1”的16位寄存器,然后調(diào)用一過程將消息屮連續(xù)的8位字節(jié)各當(dāng)前寄存器屮的值進(jìn)行處理。僅每個(gè)字符屮的8Bit數(shù)據(jù)對(duì)CRC有效,起始位和停止位以及奇偶校驗(yàn)
3、位均無效。CRC產(chǎn)生過程中,每個(gè)8位字符都單獨(dú)和寄存器內(nèi)容相或(0R),結(jié)果向最低有效位方向移動(dòng),最高有效位以0填充。LSB被提取出來檢測,如果LSB為1,寄存器單獨(dú)和預(yù)置的值或一下,如果LSB為0,則不進(jìn)行。整個(gè)過程要重復(fù)8次。在最后一位(第8位)完成后,下一個(gè)8位字節(jié)乂單獨(dú)和寄存器的當(dāng)前值相或。最終寄存器屮的值,是消息屮所有的字節(jié)都執(zhí)行Z后的CRC值。CRC添加到消息中吋,低字節(jié)先加入,然后高字節(jié)。CRC簡單函數(shù)如下:unsignodshortCRC16(puchMsg,usDataLcn)unsignedcharpuchMsg;/要進(jìn)行C
4、RC校驗(yàn)的消息/unsignedshortusDataLen;/消息中字節(jié)數(shù)/unsignedcharuchCRCHi=OxFF;/高CRC字節(jié)初始化/unsignedcharuchCRCLo=OxFF;/低CRC字節(jié)初始化/unsigneduIndex;/CRC循環(huán)中的索弓I/whi1e(usDataken—)/傳輸消息緩沖區(qū)/{ulndcx=uchCRCHi'puchMsgg++;/計(jì)算CRC/uchCRCHi=uchCRCLo"auchCRCHi[uIndex};uchCRCLo=auchCRCLotulndex];}return(uch
5、CRCHi<<8uchCRCLo);)/CRC高位字節(jié)值表/staticunsignedcharauchCRCHi[]={0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81
6、,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,0x01,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl
7、,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41,0x01
8、,OxCO,0x80,0x41,0x00,OxCl,0x81,0x40,0x00,OxCl,0x81,0x40,0x01,OxCO,0x80,0x41