技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 西门子PLC > 【玩转485】15.crc效验1【连载15】

【玩转485】15.crc效验1【连载15】

林慧玲 发布于2015-02-15 11:33 2226 0 标签:通讯

  写了这么多了终于写到了校验可能大部分人都觉得校验是整个通讯过程中复杂的一个环节。下面我就系统的给大家来介绍一下校验的整个过程。

1 .什么是校验

  要搞懂校验的整个过程我们先来看看到底什么是校验,可能在我之前的文章中大家也发现了我所写过的程序没有一个和校验有关系,站点与站点之间数据的传递都是直接进行收发,而且也没有出现过任何问题,既然不写校验程序也能正常运行,那校验在我们的整个通讯过程中到底起着什么样的作用呢?
  其实这里可能大家忽略了一个问题,我之前文章中所写的程序都是在实验环境中运行的,电脑与PLC之间的距离不超过2米,周围也没有会产生电磁干扰的用电设备,在这样理想的环境中,数据在传输过程中肯定不会发生任何变化,所以写不写校验程序都无所谓,但是在我们的工业现场环境就非常复杂甚至恶劣了,数据在传输过程中很可能由于外部复杂的环境发生变化,甚至是丢失,那么接收到的数据就不是对方发出的数据了,报文的内容就发生了变化,如果变化后的报文没有任何指令含义还好说,一旦变化后的报文的含义发生转变,比如本来主站发出的报文是控制A设备的,但是由于现场的干扰报文变成了控制B设备,那么就会在控制过程中出现误操作,这种情况虽然概率极低但是非常危险。因此我们需要对所有传输的数据进行校验以判断接收到的数据是否和对方发送的数据是一致的。

2. crc校验
  下面我就向大家介绍一种工业控制中非常常用的一种校验算法crc校验,首先我用文字向大家描述一下crc校验算法的整个流程。
1) 向一个16位寄存器A装载16个1也就是16#FFFF
2) 取被校验串的个字节与16位寄存器A的高位字节进行“异或”运算,运算结果存回寄存器A。
3) 把寄存器A内的数据向右移动一位。
4) 若A寄存器中被移出的数是1,则用1010 0000 0000 0001(16#A001)和寄存器A进行”异或运算”,若寄存器中被移出的数是0则返回步骤3)
5) 重复步骤3)和4),直到移出8位数据为止。
6) 取被校验串的下一个字节
7) 重复步骤3)至6)直至被校验串所有字节均与寄存器A进行“异或”运算,并移位8次。
8) 终A寄存器中的数值就是crc校验结果。

3. 程序编写

  此处我先在S7-200PLC中给大家把上面的汉字版校验过程翻译成具体的程序,至于具体在整个通讯的过程中如何使用我们下一篇文章再具体讨论。
  图 3-1主程序
1.png 
3-1
  图 3-2子程序接口与本地数据定义
2.png 
3-2
3.png 
图 3-3

4 程序演示

  这里我们可以将PLC的计算结果,与专门计算crc的软件算出的数值进行比较。

4.png 
4-1
5.png 
4-2
  由图 4-1和图 4-2我们可以看出PLC计算出的结果没有任何错误,当然大家也可以自己去实验更多的数值来对本程序进行验证。

作者:马乐
版权为技成所有,未经同意,盗取必究!

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

通讯

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签