modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点
Modbus基于串行通信存在兩種模式:Modbus RTU與Modbus ASCII模式,不管是RTU模式還是ASCII模式,Modbus信息都以幀的方式傳輸,每個(gè)信息幀有確定的起始點(diǎn)和結(jié)束點(diǎn),使接收設(shè)備在信息的起點(diǎn)開始讀地址,并確定要尋址的設(shè)備 (主機(jī)廣播時(shí)對(duì)全部設(shè)備),以及信息傳輸?shù)慕Y(jié)束時(shí)間。并且可檢測(cè)部分信息,錯(cuò)誤可作為一種結(jié)果設(shè)定。RTU模式與ASCII模式之間的區(qū)別就在于:
1.開始和結(jié)束的標(biāo)志不同,RTU模式的開始和結(jié)束的標(biāo)志是傳輸3.5字節(jié)所需要的空閑時(shí)間,假設(shè)串口通信速率為9600bps,傳輸一個(gè)字節(jié)所需的時(shí)間為一個(gè)毫秒左右(8/9600即/1200秒),3.5個(gè)字節(jié)的空閑時(shí)間大概就是3-4個(gè)毫秒,即當(dāng)波特率為9600bps時(shí),RTU傳輸空閑時(shí)間為6-8毫秒(上一個(gè) 信息幀結(jié)束空閑時(shí)間和信息幀開始空閑時(shí)間)即可開始一個(gè)新的信息幀。而ASCII模式則是采用固定的ASCII字符表示開始(:,冒號(hào),十六進(jìn)制為3AH)和結(jié)束的(CRLF,回車-換行鍵,十六進(jìn)制為0D和0AH)。
2.校驗(yàn)?zāi)J讲煌?#xff0c;RTU模式采用CRC校驗(yàn)碼,而ASCII模式則采用LRC校驗(yàn)碼,相對(duì)來說LRC校驗(yàn)碼更加簡(jiǎn)單易懂。LRC校驗(yàn)碼就是將信息幀中除開始結(jié)束符(:和回車換行)之外的所有數(shù)據(jù)按字節(jié)疊加取反加1即可。LRC校驗(yàn)碼代碼如下;
BYTE GetCheckCode(const char*pSendBuf,int nEnd)//獲得LRC校驗(yàn)碼
{
BYTE byLrc=0;char pBuf[4];int nData=0;
for(i=1;i
{
pBuf[0]=pSendBuf[i];
pBuf[1]=pSendBuf[i+1];
pBuf[2]='\0';
ssanf(pBuf"%X",&nData;byLrc+=nData);
}
bLrc=~bLrc;
bLrc++;
}
CRC校驗(yàn)碼則是每個(gè)八位字符都單獨(dú)和寄存器內(nèi)容相或(OR),結(jié)果向最低有效為移動(dòng),最高有效位以0填充,LSB為1,寄存器和預(yù)置的值或一下,LSB為0,則不進(jìn)行,整個(gè)過程重復(fù)8次,最后一位完成后,下一個(gè)8位字節(jié)與寄存器的當(dāng)前值相或,最終寄存器的值就是CRC值(關(guān)于CRC校驗(yàn)碼在本站:
WORD GetCheckCode(const char *pSendBuf,int nEnd)//獲取CRC校驗(yàn)碼
{
WORD wCrc=WORD(0xFFFF);
for(inti=0;i
{
wCrc^=WORD(BYTE(pSendBuf[i]));
for(int j=0;j<8;j++)
{
if(wCrc&1)
{
wCrc>>=1;
wCrc^=0xA001;
}
}
else
{
wCrc>>=1;
}
}
return wCrc;
}
3.RTU模式的傳輸效率高于ASCII模式:ASCII模式不但需要添加開始結(jié)束標(biāo)志,還需要將十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為ASCII碼,比如十六進(jìn)制0x25轉(zhuǎn)換為ASCII字符則為0x32,0x35,ASCII的表述效率只是RTU表述的一半。RTU模式指令轉(zhuǎn)換為ASCII模式指令:1.將CRC校驗(yàn)碼去掉。2.將所有對(duì)應(yīng)的字節(jié)轉(zhuǎn)換為對(duì)應(yīng)的兩個(gè)字節(jié)的ASCII字符。3.加上起始標(biāo)識(shí)和結(jié)束標(biāo)識(shí),并計(jì)算LRC校驗(yàn)碼加上。
總結(jié)
以上是生活随笔為你收集整理的modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 临河天气预报软件测试,临河天气预报15天
- 下一篇: app开发上传文件夹到服务器,uni-a