搜索
写经验 领红包
 > 房产

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

-------------------------------------

本文内容由小馨整理编辑!