怎么测试rs485通讯口好坏?高级工程师教你如何进行RS485中的crc效验
写了这么多了终于写到了校验可能大部分人都觉得校验是整个通讯过程中最复杂的一个环节。下面我就系统的给大家来介绍一下校验的整个过程。
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主程序
图 3-1
图 3-2子程序接口与本地数据定义
图 3-2
图 3-3
4、程序演示
这里我们可以将PLC的计算结果,与专门计算crc的软件算出的数值进行比较。
图 4-1
图 4-2
由图 4-1和图 4-2我们可以看出PLC计算出的结果没有任何错误,当然大家也可以自己去实验更多的数值来对本程序进行验证。
往期优秀文章回顾:
- 02-19法国对华为最新规定是什么?英国鉴于华为处境困难
- 02-23团队沟通的五种模式 团队管理中的有效沟通
- 11-22五年级上语文第三单元人教版 人教版五年级上册第三单元
- 10-23空调风管橡塑保温棉正规装法 吊顶空调风管的橡塑保温棉符合防火要求吗
- 05-30李白为什么会称之为诗仙?诗仙李白身世之谜竟是外国人
- 03-22春秋航空在济南有哪些航线?春秋航空将在济南开通沈阳
- 01-21考研计算机专业排行:考研最好的七个专业计算机位列榜首
- 06-01vivoz5和红米note哪个值得买?体验完vivo,Z5x和红米Note7
- 04-11羽泉青春的记忆:谁的青春里没有一首羽泉
- 04-26女星惊艳写真大片合集,她是深受喜爱的国民女主持
- 04-30海口最特色的海南菜,海南的,5大怪菜
- 04-10浪琴心月搭配男款什么表?男人该送女人一块什么样的表
- 12-14比喻句写星星的一段话 改写比喻句天上的星星
- 05-11内衣材质对乳腺的重要性,有钢圈和无钢圈内衣有何区别
- 04-15污蔑袁隆平院士 恶意丑化袁隆平的艺术家
- 12-09佛说人生感悟的短句 佛说,人生无非四个字
热门
推荐
- 1山雨教学设计参考范本441
- 2货物购买合同书通用范本102
- 3活动总结幼儿园中秋节范文291
- 4煤矿监控主任述职报告3篇346
- 5小男生写相思日记原文身边最难忘的那个人153
- 6小学一年级学生下册综合评语422
- 72018高考语文作文素材集锦151
- 8军训第四天的日记197