EM730 系列变频器用户手册
表 12- 32RTU 帧长度与功能码对照表
功能码(0x)
03
41(06)
请求
8
8
RTU 帧长度(字节)
正常响应
5+2Nr[4]
8
08
8
8
42(10)
9+2Nw[5]
8
[4]:Nr≤16,表示请求读寄存器的数量;
[5]:Nw≤16,表示请求写寄存器的数量;
[6]:Nw+Nr≤16;
异常响应
5
5
5
5
最大长度
(字节)
37
8
8
41
10.3.6 CRC 校验
CRC 校验低字节在前,高字节在后。
发送设备首先计算 CRC 值,并附在发送信息中。接收设备接收后将重新计算 CRC
值,并且把计算值与接收的 CRC 值做比较。如果两个值不相等,则说明发送过程中
有错误发生。
CRC 校验的计算过程:
(1)定义一个 CRC 寄存器,并赋一个初值,FFFFH。
(2)将发送信息的第一个字节与 CRC 寄存器的值进行异或计算,并将结果放到 CRC
寄存器中。从地址码开始,起始位和停止位不参加计算。
(3)提取和检查 LSB(CRC 寄存器的最低位)。
(4)如果 LSB 是 1,CRC 寄存器的各位向右移动一位,最高位用 0 补充,把 CRC 寄
存器的值与 A001H 进行异或计算,并将结果放到 CRC 寄存器中。
(5)如果 LSB 是 0,CRC 寄存器的各位向右移动一位,最高位用 0 补充。
(6)重复步骤 3、4、5,直到完成 8 次移位。
(7)重复步骤 2、3、4、5、6,处理发送信息的下一个字节。直到处理完发送信息
的所有字节。
(8)计算完毕,CRC 寄存器的内容即为 CRC 校验的值。
(9)在时间资源有限的系统中,建议采用查表法来实现 CRC 校验。
CRC 简单函数如下(用 C 语言编程):
unsigned int CRC_Cal_Value(unsigned char *Data, unsigned char Length)
{
unsigned int crc_value = 0xFFFF;
289
    "