-
深入理解Modbus的LRC和CRC校验
基于串行链路的 Modbus 通信需要进行差错校验,根据传输模式(ASCII 或 RTU)的不同,差错校验域采用不同的校验方法。 LRC 校验 LRC 校验比较简单,它在 ASCII 协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加(丢弃所有进位),然后对结果进行二进制补码操作。 下面是 LRC 校验的具体代码: 从算法本质来说,LRC 域本身仅占 1 个字节,但在 ASCII 模式传递消息帧时,LRC 值被编码为 2 个字节的 ASC…
-
CRC-16 MODBUS原理简介,代码示例
CRC码由发送端计算,放置于发送信息报文的尾部。接收信息的设备再重新计算接收到信息报文的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错。校验码的计算多项式为(X16 + X15 + X2 + 1)。 具体CRC16码的计算方法是: 1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;2.把第一个8位二进制数据 (既通讯信息帧的第一个字节)与16位的CRC寄存器的低8位相异或,把结果放于CRC寄存器;3.把CRC寄存器的内容右移一 位(朝…