Beijing Gwanglay Electrical Technology Co., Ltd.
北京广来电气技术有限公司
热门搜索关键词: 欧陆  |  奥托尼克斯   |  博世力士乐
您现在的位置:
modbus通讯协议
来源: | 作者:proe73ab7 | 发布时间: 2017-10-11 | 5871 次浏览 | 分享到:

 

1 1 0 0 0 1 0 1

 

整个“1”的数目是 4 个。如果便用了偶校验,帧的奇偶校验位将是 0,便得整个“1”的

 

个数仍是 4 个。如果便用了奇校验,帧的奇偶校验位将是 1,便得整个“1”的个数是 5 个。

 

 

 

如果没有指定奇偶校验位,传输时就没有校验位,也不进行校验检测。代替一附加的停止位填充至要传输的字符帧中。

 

2、LRC 检测

 

 

使用 ASCII 模式,消息包括了一基于 LRC 方法的错误检测域。LRC 域检测了消息域中除开始的冒号及结束的回车换行号外的内容。

 

LRC 域是一个包含一个 8 位二进制值的字节。LRC 值由传输设备来计算并放到消息帧中,接收设备在接收消息的过程中计算 LRC,并将它和接收到消息中 LRC 域中的值比较,如果两值不等,说明有错误。

 

LRC 方法是将消息中的 8Bit 的字节连续累加,丢弃了进位。

 

LRC 简单函数如下:

 

static unsigned char LRC(auchMsg,usDataLen)


 

unsigned char *auchMsg ; /* 要进行计算的消息 */

 

 

 

unsigned short usDataLen ; /* LRC 要处理的字节的数量*/

 

{ unsigned char uchLRC = 0 ; /* LRC 字节初始化 */

 

while (usDataLen--) /* 传送消息 */

 

uchLRC += *auchMsg++ ; /* 累加*/

 

return ((unsigned char)(-((char_uchLRC))) ;

 

}

 

3、CRC 检测

 

使用 RTU 模式,消息包括了一基于 CRC 方法的错误检测域。CRC 域检测了整个消息的内容。

 

 

 

CRC 域是两个字节,包含一 16 位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同,则有误。

 

 

 

CRC 是先调入一值是全“1”的 16 位寄存器,然后调用一过程将消息中连续的 8 位字节各当前寄存器中的值进行处理。仅每个字符中的 8Bit 数据对 CRC 有效,起始位和停止位以及奇偶校验位均无效。

 

CRC 产生过程中,每个 8 位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以 0 填充。LSB 被提取出来检测,如果 LSB 为 1,寄存器单独和预置的值或一下,如果 LSB 为 0,则不进行。整个过程要重复 8 次。在最后一位(第 8 位)完成后,下一个 8 位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执行之后的 CRC 值。

 

CRC 添加到消息中时,低字节先加入,然后高字节。

 

CRC 简单函数如下:

 

unsigned short CRC16(puchMsg, usDataLen)

 

unsigned char *puchMsg ; /* 要进行 CRC 校验的消息 */

 

unsigned short usDataLen ; /* 消息中字节数 */

 

{

 

unsigned char uchCRCHi = 0xFF ; /* 高 CRC 字节初始化 */

 

unsigned char uchCRCLo = 0xFF ; /* 低 CRC 字节初始化 */


 

unsigned uIndex ; /* CRC 循环中的索引 */

 

 

 

while (usDataLen--) /* 传输消息缓冲区 */

 

{

 

uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算 CRC */

 

uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;

 

uchCRCLo = auchCRCLo[uIndex] ;

 

}

 

return (uchCRCHi << 8 | uchCRCLo) ;

 

}

 

/* CRC 高位字节值表 */

 

static unsigned char auchCRCHi[] = {

 

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, 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, 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, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

 

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,

广来电气新闻
Guanglai Electric news
最新产品
  • nanodac™组合数据记录仪和温度控制器

    nanodac™组合数据记录仪和温度控制器

    记录仪

    ¥0.00

    ¥0.00

  • 欧陆无纸图形记录仪6100A 6100XIO 6180A 6180XIO

    欧陆无纸图形记录仪6100A 6100XIO 6180A 6180XIO

    记录仪

    ¥0.00

    ¥0.00

  • 欧陆功率控制器调功器EPOWER系列

    欧陆功率控制器调功器EPOWER系列

    调功器

    ¥0.00

    ¥0.00

  • 欧陆功率控制器EPack系列

    欧陆功率控制器EPack系列

    调功器

    ¥0.00

    ¥0.00

  • 欧陆功率控制器EFIT系列

    欧陆功率控制器EFIT系列

    调功器

    ¥0.00

    ¥0.00