新闻中心

EEPW首页 > 消费电子 > 设计应用 > 工业通信中的检错码技术

工业通信中的检错码技术

作者:时间:2018-08-20来源:网络收藏

0 引言

本文引用地址:http://www.eepw.com.cn/article/201808/387286.htm

等工业现场,在传输数据的过程中,往往由于噪声或瞬时中断等干扰,使接收到的信息出现错误。如果信息传输出现错误而不被发现,会引起灾难性的后果,可以采取检错码的办法来发现这一错误。常用的检错码有两类:奇偶校验码与循环冗余校验码(CRC,cyclic redundancy code)。奇偶校验方法简单,感兴趣的读者可以查阅相关资料,本文要讨论的是CRC检错码。

1 CRC检错码简要介绍

检错码方法是将要发送的数据比特序列当作一个多项式f(x)的系数,再用收发双方预先约定的生成多项式G(x)去除,求得一个余数多项式,将余数多项式加到数据多项式之后发送到接收端。接收端用同样的生成多项式G(x)去除接收数据多项式f '(x),得到计算余数多项式。如果计算余数多项式与接收余数多项式相同,则表示传输无差错;反之,表示传输有差错,请发送方重发数据,直到正确为止。其工作原理如图1 所示。

CRC生成多项式G(x)由协议规定,目前已有多种生成多项式列入国际标准中。在我国及美国,工业通讯中常使用CRC-16。

实际CRC校验生成采用减法不借位,加法不进位的算法,在计算时采用异或操作。

2 CRC 检错码的算法设计

计算CRC 检错码时常采用按位计算CRC 码或按字节计算CRC 码。按位计算法算法简单,速度慢;按字节计算时须先计算CRC 码表,并将此表存入存储器中,计算CRC 码时通过查表法逐步计算,此法具有算法复杂,计算速度快,占用存储器资源的特点。

2.1 按位计算CRC

2.2 按字节计算CRC码

生成多项式,所得余式即为所求CRC 码。通过观察式(10)可知,求本字节后的CRC 码等于上一字节的余式CRC 码左移8 位再加上本字节所求得CRC 码。如果把8 位二进制序列数据的全部CRC码计算出来,预先放在一个表里,然后通过查表计算CRC码,就可以大大提高计算速度。

2.3 编程实现

对于CRC 校验程序,没有一个统一的标准,也很难说谁好谁坏。工程师可以根据实际情况决定是按位计算还是按字节计算CRC 码,及采用何种编程语言编写CRC校验程序。本文仅给出按字节计算时用C 语言编写的程序。另需说明的是,在

下面的程序中采用查表法计算CRC 码,没有给出CRC 码表,感兴趣的读者可以查阅相关资料。

3 结语

CRC检错码的检错能力很强,它除了能检查出离散错误外,还能检查出突发错;能以

的概率检查出(k+1)位的突发错,即能以99.997%的概率检查出17 位的突发错,漏检概率为0.003%。因此,它是目前工业现场总线通讯中常用

的一种检错码方法。



关键词: 变频器 通信

评论


相关推荐

技术专区

关闭