1 / 34
文档名称:

(完整word版)modbus通讯协议.docx

格式:docx   大小:193KB   页数:34页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

(完整word版)modbus通讯协议.docx

上传人:春天的小花 2022/8/6 文件大小:193 KB

下载得到文件列表

(完整word版)modbus通讯协议.docx

相关文档

文档介绍

文档介绍:Modbus通信协议
图片:
图片:
就需要传输’F’’9’的ASCII码0x39和0x46
两个字节,这样它的传输的效率就比较低。所以一般来说,若是所需要传输的数据
量较小能够考虑使用ASCII协议,若是所需传输的数据量比较大,最好能使用RTU协议。
下边对两种协议的校验进行一下介绍。
1、LRC校验
LRC域是一个包含一个8位二进制值的字节。LRC值由传输设备来计算并放
到信息帧中,接收设备在接收信息的过程受骗算LRC,并将它和接收到信息
中LRC域中的值比较,若是两值不等,说明有错误。
LRC校验比较简单,它在ASCII协议中使用,检测了信息域中除开始的冒号
及结束的回车换行号外的内容。它可是是把每一个需要传输的数据按字节叠加
后取反加1即可。下边是它的VC代码:
BYTEGetCheckCode(constchar*pSendBuf,intnEnd)//获取校验码
{
BYTEbyLrc=0;
charpBuf[4];
intnData=0;
for(i=1;i<end;i+=2)//i初始为1,避开“开始标志”冒号
{
每两个需要发送的ASCII码转变为一个十六进制数
pBuf[0]=pSendBuf;
pBuf[1]=pSendBuf[i+1];
pBuf[2]='\0';
sscanf(pBuf,"%x",&nData);
byLrc+=nData;
}
byLrc=~byLrc;
byLrc++;
returnbyLrc;
}
2、CRC校验
CRC域是两个字节,包含一16位的二进制值。它由传输设备计算后加入到
信息中。接收设备重新计算收到信息的CRC,并与接收到的CRC域中的值比较,若是两值不同样,则有误。
CRC是先调入一值是全“1”的16位寄存器,尔后调用一过程将信息中连续
的8位字节各当前寄存器中的值进行办理。仅每个字符中的8Bit数据对CRC有效,初步位和停止位以及奇偶校验位均无效。
CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最
低有效位方向搬动,最高有效位以

0填补。

LSB

被提拿出来检测,若是

LSB
为1,寄存器单独和预置的值或一下,若是

为0,则不进行。整个过程
要重复

8次。在最后一位(第

8位)完成后,下一个

8位字节又单独和寄存
器的当前值相或。最后寄存器中的值,是信息中所有的字节都执行此后的

CRC
值。
CRC

增添到信息中时,低字节先加入,尔后高字节。下边是它的

VC

代码:
WORDGetCheckCode(constchar*pSendBuf,intnEnd)//
{
WORDwCrc=WORD(0xFFFF);
for(inti=0;i<nEnd;i++)
{
wCrc^=WORD(BYTE(pSendBuf));
for(intj=0;j<8;j++