資源描述:
《通訊規(guī)約(modbus&rtu)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、MODBUS&RTU通訊規(guī)約MODBUS&RTU通訊協(xié)議1、協(xié)議概述l數(shù)據(jù)格式:1位起始位8位數(shù)據(jù)位,最小的有效位先發(fā)送1位停止位無校驗(yàn)l波特率:9600l通訊地址:默認(rèn)地址為01lModbus&RTU協(xié)議支持RS485傳輸方式l數(shù)據(jù)包組織說明:⑴.本協(xié)議中涉及到的CRC校驗(yàn)皆是對(duì)本幀中所有數(shù)據(jù)的校驗(yàn),且校驗(yàn)位在傳輸時(shí)低位在前,高位在后。⑵.本協(xié)議中的模擬量均采用Word表示,數(shù)值用補(bǔ)碼表示,所以Word的取值范圍:-32768~+32767,模擬量在傳輸時(shí)高位在前,低位在后。⑶.電壓電流的放大系數(shù)為10。即將實(shí)際的電壓電流量乘以10
2、取整就是數(shù)據(jù)幀中的數(shù)據(jù)。⑷.遙信量按位定義,=1為告警;=0為正常。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)位均無效。CRC產(chǎn)生過程中,每個(gè)8位字符都單獨(dú)和寄存器內(nèi)容相或(OR),結(jié)果向最低有效位方向移動(dòng),最高有效位以0填充。L
3、SB被提取出來檢測(cè),如果LSB為1,寄存器單獨(dú)和預(yù)置的值或一下,如果LSB為0,則不進(jìn)行。整個(gè)過程要重復(fù)8次。在最后一位(第8位)完成后,下一個(gè)8位字節(jié)又單獨(dú)和寄存器的當(dāng)前值相或。最終寄存器中的值,是消息中所有的字節(jié)都執(zhí)行之后的CRC值。CRC添加到消息中時(shí),低字節(jié)先加入,然后高字節(jié)。CRC簡(jiǎn)單函數(shù)如下:unsignedshortCRC16(puchMsg,usDataLen)6MODBUS&RTU通訊規(guī)約unsignedchar*puchMsg;/*要進(jìn)行CRC校驗(yàn)的消息*/unsignedshortusDataLen;/*消息中字
4、節(jié)數(shù)*/{unsignedcharuchCRCHi=0xFF;/*高CRC字節(jié)初始化*/unsignedcharuchCRCLo=0xFF;/*低CRC字節(jié)初始化*/unsigneduIndex;/*CRC循環(huán)中的索引*/while(usDataLen--)/*傳輸消息緩沖區(qū)*/{uIndex=uchCRCHi^*puchMsgg++;/*計(jì)算CRC*/uchCRCHi=uchCRCLo^auchCRCHi[uIndex};uchCRCLo=auchCRCLo[uIndex];}return(uchCRCHi<<8
5、uchCRCLo)
6、;}/*CRC高位字節(jié)值表*/staticunsignedcharauchCRCHi[]={0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01
7、,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81
8、,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01
9、,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81