0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用SMART编写CRC校验算法程序

1bGT_GKYXT1508 来源:未知 作者:胡薇 2018-11-26 09:50 次阅读

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

在Modbus RTU通讯中数据报文中有一帧是CRC校验码,用来进行错误检测。其原理是由发送设备将数据帧进行一定的运算得出一个检验码,然后加在数据帧后一起发送过去,接收设备接收到数据后重新运算,再讲运算出来的校验码与发送过去的校验码进行比较,如果一致则说明数据无错误,如果不一致则说明数据传输错误。

CRC运算过程如下:

CRC是先存入0 XFFFF到CRC寄存器,然后调用一个过程将消息中连续的8Bit字节与当前寄存器中的值进行处理。仅每个字符中的8Bⅰt数据对CRC有效,起始位和停止位以及奇偶校验位均无效。CRC产生过程中:每个8位字符都单独和CRC寄存器内容相异或(X0R),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测,如果LSB为1,CRC寄存器单独和预置的值相异或,如果LSB为0,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和CRC寄存器的当前值相异或。最终CRC寄存器中的值,是消息中所有的字节都执行之后的CRC值。

下面为产生GRG的计算过程

1.将一个16位寄存器的值设置为FFFF(hex),称之为CRC寄存器。

2.将数据的第一个8Bit字符与16位CRC寄存器的低8位进行异或计算,并把结果存入CRC寄存器。

3.CRC寄存器向右移一位(向着最低位LSB),最高位MSB补零,移出并检查LSB。

4.如果LSB为0:重复第三步(另一个移位)如果LSB为1:CRC寄存器与预置值:A001H(1010000000000001B)进行异或操作。

5.重复第3与第4步直到8次移位全部完成,此时一个8Bit数据处理完毕。

6.重复第2与第5步直到所有数据全部处理完成。

7.最终CRC寄存的内容即为CRC值。

注意:CRC校验码使用时低字节在前,高字节在后。

用S7-200 SMART编写运算程序如下:

将CRC算法创建成库,在主程序中调用即可算出CRC结果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29195
  • SMART
    +关注

    关注

    3

    文章

    219

    浏览量

    44404

原文标题:SMART如何编写CRC校验算法程序

文章出处:【微信号:GKYXT1508,微信公众号:工控云学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于C8051F的CRC校验算法的实现

    基于C8051F的CRC校验算法的实现 
    发表于 03-14 17:14

    Labview编写CRC8校验程序

    用Labview编写CRC8校验程序,输入码字序列后生成校验码,通过阅读此程序,用户可采用类似
    发表于 10-22 21:13

    常用的校验算法有哪些?

    常用的校验算法有哪些,是不是和通信规约有关。比如MODBUS一般都用CRC16(不确定是不是叫这个)。这些校验算法是之前积累下来的吗。自己也可以定义一个校验算法吧,只要发送端和接收端用
    发表于 11-03 06:50

    基于C8051F的CRC校验算法的实现

    介绍了CRC(循环冗余码校验)原理及集成混合信号片上系统单片机C8051F的新特性,推导获得以字节为单位的数据序列CRC码递推算法,利用C8051F单片机的自带CAN2.0B总线接口控
    发表于 03-14 08:39 46次下载

    8位CRC校验码表格生成及高速校验程序

    8位CRC校验码表格生成及高速校验程序
    发表于 05-16 13:49 108次下载

    基于iSCSI协议校验算法的改进

    CRC 校验作为iSCSI 协议中使用最频繁的一种检错机制,其算法的优劣会直接影响协议的执行效率。文章在分析传统CRC算法低效率的基础上,引
    发表于 11-08 16:45 12次下载

    IP协议校验算法程序

     IP 协议采用统一的校验算法,其计算比较简单:设校验和初值为0,然后对数据每16位求异或,结果取反,便得校验和。校验时将数据(含校验和)按
    发表于 08-13 10:55 909次阅读

    LTE系统的CRC校验算法及DSP实现

    通过对两种常用CRC校验算法的研究分析,为TD-LTE测试仪表系统选择了一种最优的CRC校验算法,并在TMS320C64xDSP中实现。将CRC
    发表于 02-23 14:58 30次下载

    16位CRC校验原理与算法分析

    16位CRC校验原理与算法分析,感兴趣的小伙伴们可以看看。
    发表于 10-10 14:55 10次下载

    一种基于矩阵的并行CRC校验算法

    针对高速网络通信中高位宽并行数据的实时校验需求,提出了一种可单周期实现的、面向128位并行数据的循环冗余校验算法(Cyclic Redundancy Check,CRC )。该算法首先
    发表于 10-30 16:39 3次下载
    一种基于矩阵的并行<b class='flag-5'>CRC</b><b class='flag-5'>校验算法</b>

    如何使用SMART编写CRC校验算法程序

    本文档的主要内容详细介绍的是如何使用SMART编写CRC校验算法程序
    发表于 10-24 08:00 4次下载
    如何使用<b class='flag-5'>SMART</b><b class='flag-5'>编写</b><b class='flag-5'>CRC</b>的<b class='flag-5'>校验算法</b><b class='flag-5'>程序</b>

    CRC校验算法原理及c语言实现

    CRC校验算法原理及c语言实现
    发表于 11-30 10:04 9次下载

    西门子200SMART PLC CRC校验程序编写

    CRC校验程序”子程序,初始化存储器,并把16#FFFF装载到CRC寄存器中(定义AC0为CRC
    的头像 发表于 07-10 15:45 2152次阅读
    西门子200<b class='flag-5'>SMART</b> PLC <b class='flag-5'>CRC</b><b class='flag-5'>校验</b><b class='flag-5'>程序</b>的<b class='flag-5'>编写</b>

    TSMaster中如何自定义CRC校验算法

    在通讯过程中,用户需要利用CheckSum信号对传输数据用自己规定的算法逻辑进行校验,来看数据在传输过程中是否被更改或传输错误。本文主要介绍TSMaster如何设置自己的CRC算法信号
    的头像 发表于 09-09 08:23 997次阅读
    TSMaster中如何自定义<b class='flag-5'>CRC</b><b class='flag-5'>校验算法</b>

    虹科技术|保障数据传输稳定性:BabyLIN产品的CRC算法实现

    文章将以CRC8校验为例,介绍在BabyLIN产品中如何使用CRC校验算法CRC校验原理 在
    的头像 发表于 01-02 10:45 198次阅读
    虹科技术|保障数据传输稳定性:BabyLIN产品的<b class='flag-5'>CRC</b><b class='flag-5'>算法</b>实现