crc校验码SCL编写.jpg

更新日期:2018-12-01 14:30   浏览次数:1532   下载次数:295
  • 文件类型:压缩文件 | 文件大小:0.12M | 加入收藏
  • 下载
  • 详细介绍

    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条 [查看全部]  相关评论
    按分类浏览
    本类下载排行
    总下载排行
     

    本网站所有文档及文件资料,除特别标明本站原创外,均来自互联网及网友上传,如有涉及版权问题,请联系我们,我们将第一时间处理。
    我们保留版权,任何涉嫌侵犯本站版权的行为,本站保留追究其法律责任的权利。