crc校验码SCL编写.jpg
更新日期:2018-12-01 14:30 浏览次数:1532 下载次数:295

详细介绍
CRC码的计算方法是:
1.预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;
2.把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低
8位相异或,把结果放于CRC寄存器;
3.把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查右移后的移出位;
4.如果移出位为0:重复第3步(再次右移一位);
如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;
5.重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;
6.重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;
7.将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器的高、低
字节进行交换;
8.最后得到的CRC寄存器内容即为:CRC码。
SCL语言
参数如图所示~!
#"CRC-W" :=16#ffff; //CRC-W为CRC寄存器16位
FOR #i := 0 TO #count-1 DO //有多少个数据,因为是0开始的,所以要-1
#"CRC-W" := #"CRC-W" XOR #SJ[#i]; //和数据异或
FOR #index := 0 TO 7 DO //向右移位
#"CRC-W1" := #"CRC-W";
#"CRC-W" := SHR(IN := #"CRC-W", N := 1);
IF (#"CRC-W1" AND 16#1) = 16#1 THEN //当最低位为1时,则和16#a001 异或
#"CRC-W" := #"CRC-W" XOR 16#a001;
END_IF;
END_FOR;
END_FOR;
#CRC_out := SHL(IN:=#"CRC-W", N:=8) OR #"CRC-L"[0]; //高位和低位对调位置,得到CRC校验码
共0条 [查看全部] 相关评论
按分类浏览
本类下载排行
总下载排行
本网站所有文档及文件资料,除特别标明本站原创外,均来自互联网及网友上传,如有涉及版权问题,请联系我们,我们将第一时间处理。
我们保留版权,任何涉嫌侵犯本站版权的行为,本站保留追究其法律责任的权利。