日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点

發(fā)布時(shí)間:2025/3/20 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Modbus基于串行通信存在兩種模式:Modbus RTU與Modbus ASCII模式,不管是RTU模式還是ASCII模式,Modbus信息都以幀的方式傳輸,每個(gè)信息幀有確定的起始點(diǎn)和結(jié)束點(diǎn),使接收設(shè)備在信息的起點(diǎn)開(kāi)始讀地址,并確定要尋址的設(shè)備 (主機(jī)廣播時(shí)對(duì)全部設(shè)備),以及信息傳輸?shù)慕Y(jié)束時(shí)間。并且可檢測(cè)部分信息,錯(cuò)誤可作為一種結(jié)果設(shè)定。RTU模式與ASCII模式之間的區(qū)別就在于:

1.開(kāi)始和結(jié)束的標(biāo)志不同,RTU模式的開(kāi)始和結(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í)間和信息幀開(kāi)始空閑時(shí)間)即可開(kāi)始一個(gè)新的信息幀。而ASCII模式則是采用固定的ASCII字符表示開(kāi)始(:,冒號(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ì)來(lái)說(shuō)LRC校驗(yàn)碼更加簡(jiǎn)單易懂。LRC校驗(yàn)碼就是將信息幀中除開(kāi)始結(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è)過(guò)程重復(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模式不但需要添加開(kāi)始結(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)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。