1. 首页
  2. 考试认证
  3. 其它
  4. CRC的概述-can_fd_specifiaction

CRC的概述-can_fd_specifiaction

上传者: 2024-07-19 19:28:27上传 PDF文件 31.92MB 热度 6次

第13章 RS485通信

13-22 Modbus RTU通信

13 7. CRC-16

(1) CRC的概述

CRC (Cyclic Redundancy Check)是一种用于校验通信数据是否有误的系统。CRC计算通过生成多项式除以多项式化的数据,余下的就是CRC数据。在Modbus RTU上,使用作为生成多项式的X16 + X15 + X2 + 1计算CRC-16。如果你想了解更多关于Modbus协议中的CRC校验,请访问MODBUS协议CRC校验

(2) CRC-16算法

对于[局号区域~信息区域]的数据(N字节),计算CRC-16的方法如下:

  1. 初始设定:CRC = FFFFh,POLY = A001h,dtn = 0。

  2. 将CRC与DT [dtn]做异或运算。

  3. 将CRC向右移动1 bit。

  4. 若有移动进位,则CRC与POLY做异或运算。

  5. sft = sft + 1,若sft < 8,则返回步骤3,否则dtn = dtn + 1。

  6. 若dtn < N,则返回步骤2,否则结束。

更详细的算法和代码示例可以参阅modbus CRC校验工具

(3) CRC-16计算示例

在读取参数PA1_41~47(7个)的查询中,若按算法计算CRC-16,则如表13-5所示。按下位、上位的顺序将最后的数据(No.52 : C651h)附加在画面最后。详细的步骤和计算可以在Modbus的CRC校验工具中找到。

局号 FC 地址 记录数 CRC校验

01h 03h 40h 28h 00h 0Eh 51h C6h

CRC … CRC-16计算值

POLY …生成多项式

dtn …数据数计数器

sft …移动数计数器

DT [dtn] …第dtn号数据(1byte)

N …数据字节数

XOR … exclusive OR

DT [0]是局号,DT [1]是FC,DT [2]~DT [N-1]是信息区域的数据。

更多关于CRC校验的原理和实现方法,请查看MODBUS通信协议的CRC16校验LabVIEW Modbus通信协议CRC校验实现方法

START

初始设定CRC = FFFFh

POLY = A001h

dtn = 0

有移动进位?

No

Yes

No

CRC = CRC XOR DT [dtn]

将CRC向右移动1bit

CRC = CRC XOR POLY

Yes

sft = sft + 1

sft = 0

sft < 8

dtn < N ?

dtn = dtn + 1

Yes

No

END

如果你还在为Modbus通信中的CRC校验而苦恼,不妨尝试使用modbus通信rtu的crc校验工具,它能帮助你快速、准确地进行CRC校验。试试看,或许会有惊喜哦!

下载地址
用户评论