cc校验详解(cc校验原理和计算方法)
导语:不懂CRC校验的有福了
这边用博图的CRC算法,把下面代码复制进记事本,把后缀名改为.SCL,然后把它导入源文件方式,导入博图,如果还不会导入的会,翻看我前面一遍文章。
下面是代码:
FUNCTION_BLOCK &34;
{ S7_Optimized_Access := &39; }
VERSION : 0.1
VAR
DATA : Array[0..250] of Byte; // 待校验的数据
ByteIndex : Int; // 待校验数据的字节号索引号
CrcBitIndex : Int; // CRC校验表生成中所用的位索引号
CrcVariable : Word; // CRC校验用变量字
CrcByte { ExternalAccessible := &39;; ExternalVisible := &39;; ExternalWritable := &39;} AT CrcVariable : Array[0..1] of Byte; // CRC校验用变量的高低字节
CrcCheckCode : Word; // 最终CRC校验码
CrcTable : Array[0..255] of Word; // CRC校验表
CrcTableIndex : Int; // CRC表的字索引号
END_VAR
BEGIN
//生成CRC校验表
IF &34; = TRUE THEN //第一次扫描时生成CRC表
FOR 0 TO INT1 DO
CrcTableIndex] := INT_TO_WORD(CrcBitIndex := INT7 BY INTCrcTable[1616CrcTable[CrcTable[1);
CrcTableIndex] := CrcTableIndex] XOR WORDA001;
ELSE
CrcTableIndex] := SHR_WORD(IN := CrcTableIndex], N := intCrcVariable := WORDFFFF; //CRC寄存器的初始化
FOR 0 TO INT1 DO //提取待校验的数据
DATA[16CrcByte[1] AND BYTEFF)); //生成CRC校验表字的索引号
CrcVariable, N := INTCrcTable[CrcCheckCode := ROR_WORD(IN := 8); //得到最终CRC校验码
//经测试,在CPU315-2 PN/DP中工作,此查表法仅为同环境下计算法的PLC循环时间的五分之一
//此文本复制到TXT,改扩展名为scl,导入源文件就可以,首次扫描脉冲需要创建一下
END_FUNCTION_BLOCK
-------------------------------------
本文内容由小馨整理编辑!