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