15005517昊志DiL500变频器说明书.pdf - 第67页

广州市昊志机 电股分有限公 司 67 CRC CHK低位 有待计算其 CRC CHK值 CRC CHK高位 命令码: 06H、07H,写 一个字(Word) ,0 6H 命令写功能 码后掉电保存 ,07H 命令写功能 码掉电不保存 例如:将 5000( 1388H)写到从机 地址 0 2H 驱动器的 F203H 地址处。 主机命令信息 ADR 02H CMD 06H 资料地址高 位 F2H 资料地址低 位 03H 资料内容高 位 13H…

100%1 / 74
广州市昊志机电股分有限公
66
启始地址低
02H
寄存器个数高位
00H
寄存器个数低位
02H
CRC CHK低位
有待计算其CRC CHK
CRC CHK高位
从机回应信
PnA.06 个位设为 0 时:
ADR
01H
CMD
03H
字节个数高
00H
字节个数低
04H
资料F002H高位
00H
资料F002H低位
00H
资料F003H高位
00H
资料F003H高位
01H
CRC CHK低位
有待计算其CRC CHK值
CRC CHK高位
PnA.06 个位设为 1
ADR
01H
CMD
03H
字节个数
04H
资料F002H高位
00H
资料F002H低位
00H
资料F003H高位
00H
资料F003H低位
01H
广州市昊志机电股分有限公
67
CRC CHK低位
有待计算其CRC CHK值
CRC CHK高位
命令码:06H、07H,写一个字(Word),06H 命令写功能码后掉电保存,07H
命令写功能码掉电不保存
例如:将 5000(1388H)写到从机地址 02H 驱动器的 F203H 地址处。
主机命令信息
ADR
02H
CMD
06H
资料地址高
F2H
资料地址低
03H
资料内容高
13H
资料内容低
88H
CRC CHK低位
有待计算CRC CHK值
CRC CHK 高位
从机回应信息
ADR
02H
CMD
06H
资料地址高
F2H
资料地址低
03H
资料内容高
13H
资料内容低
88H
CRC CHK低位
有待计算CRC CHK值
CRC CHK 高位
广州市昊志机电股分有限公
68
校验方式——CRC 校验方式:CRC(Cyclical Redundancy Check)
使用 RTU 帧格式,消息包括了基于 CRC 方法的错误检测域。CRC 域检测了整
个消息的内容。CRC 域是两个字节,包 16 位的二进制值。它由传输设备计算
后加入到消息中。接收设备重新计算收到消息的 CRC,并与接收到的 CRC 域中的
值比较,如果两个 CRC 值不相等,则说明传输有错误。
CRC 是先存入 0xFFFF,然后调用一个过程将消息中连续 8 位字节与当前寄存
器中的值进行处理。仅每个字符中的 8Bit 数据对 CRC 有效,起始位和停止位以
及奇偶校验位均无效。
CRC 产生过程中,每个 8 位字符都单独和寄存器内容相异或(XOR),结果向
最低有效位方向移动,最高有效位 0 填充LSB 被提取出来检测如果 LSB
1,寄存器单独和预置的值相异或如果 LSB 0,则不进行。整个过程要重复 8
次。在最后一位(第 8 位)完成后,下一个 8 位字节又单独和寄存器的当前值相
异或。最终寄存器中的值,是消息中所有的字节都执行之后的 CRC 值。
CRC 添加到消息中时,低字节先加入,然后高字节。 CRC 简单函数如下:
unsigned int crc_chk_value(unsigned char *data_value,unsigned char
length)
{
unsigned int crc_value=0xFFFF;
int i;
while(length--)
{
crc_value^=*data_value++;
for(i=0;i<8;i++)
{
if(crc_value&0x0001)
{
crc_value=(crc_value>>1)^0xa001;
}
else
{
crc_value=crc_value>>1;
}
}
}
return(crc_value);