找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
开启左侧

CRC校验原理以及西门子1200PLC梯形图的实现

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
CRC校验原理以及西门子1200PLC梯形图的实现
计算法:
CRC校验生成步骤:
1、预置一个16位CRC寄存器为16进制FFFF,即所有数均为1.
2、该16位寄存器的低8位字节与信息帧的第一位字节的8位进行异或运算,运算结果放入16位寄存器。
3、把这个16位寄存器向右移一位,用0补充高位。
4、若向右移出的是1,则生成多项式A001和这个寄存器进行异或运算若移出数为0则返回第三步。
5、重复3和4 直至移出8位。
6、重复2步到第5步进行下一个8位数据的处理。
7、最后得到的CRC寄存器即为CRC码。
梯形图实现CRC校验:
  由上述步骤可知要实现CRC校验要用到双重循环,而在西门子S7-1200中没有像S7-300中那样的loop虚幻指令,所以我们只能用普通指令进行编写循环。
首先,建立第五步的内部循环,首先建立函数块命名为“校验”,在“校验”函数块中定义
输出参数:准备惊醒校验的“校验数”、校验时要移动的位数“校验次数”
首次惊醒异或的“校验值_1”
输出参数:校验后的结果“校验值”
1.png 2.png


然后,建立第6步的函数块,命名“为CRC校验块”在函数块中定义输入输出参数。
输入参数:要校验的数组“数组”、开始校验的位置“起始下标”、校验的数“元素值”、要校验的个数“字节数”
输出参数:校验完成后的地校验值“校验结果”
在函数中会用到调用上一步中所建立的函数块“校验”
3.png 4.png
最后在函数中调用“CRC校验块”即可实现CRC校验,用此校验方法在校验中犹豫用到的校验方法为一位法,所以在循环时所需的时间比较长。可以采用查表的方法来降低计算所需要的时间。

楼主热帖
江西工控论坛http://www.jx-auto.cn/现已开启工控币兑换通道,大家可以踊跃发帖赚取工控币啦