当前位置:首页 > 技术分析 > 正文内容

「分享」通讯与设备交互,CRC效验程序如何编写

ruisui883个月前 (03-26)技术分析21

导读:在工作现场,经常会用到通讯与其它设备交互信息,而通讯必然会需要效验。而初学者学习MODBUS RTU的时候往往会纠结这个CRC效验程序如何编写?


CRC效验程序相对来说比较繁琐,但是大家可以收藏好这个程序(使用200SMART PLC),加以理解,需要的时候调用此程序即可。

那首先我们来看CRC效验的步骤,严格按照步骤来写程序即可:

1、 设置CRC存储器为16#FFFF。

2、 把第一个参与校验的8位数与CRC的低八位进行异或运算结果仍存与CRC。

3、 把CRC右移一位,最高位补0,检查最低位b0位。

4、 若b0=0,CRC不变,若b0=1, CRC与16#A001进行异或运算,结果仍存与CRC。

5、 重复3、4两步,直到右移8次,这样第一个八位数就进行处理了结果仍然存于CRC。

6、 重复2-5步,处理第二个八位数。


【程序结构描述】

1、西门子S7-200SMART系列PLC的程序结构分为主程序、子程序、中断程序。此程序用“MAIN”程序调用“CRC效验程序”子程序

定义子程序变量表:如图1-0

案例源程序下载,请看文末

(1)“CRC效验程序”子程序,初始化存储器,并把16#FFFF装载到CRC寄存器中(定义AC0为CRC寄存器)。并利用FOR语句循环,循环的次数由LW4决定。程序如图1-1所示

(2)取第一个地址与CRC寄存器做异或运算。并利用FOR语句循环,循环的次数为8,因为一个字节的数据是8个位。程序如图1-2所示

案例源程序下载,请看文末

(3)执行移位操作,并判断移出为的状态,若移出位为1,则在与16#A001做异或运算。程序如图1-3所示

(4)利用指针,指针加1,指向下一个地址,取出下一个地址之后再进行重复以上步骤效验,直到数据都效验完,程序退出FOR循环。程序如图1-4所示

(5)对计算结果进行高低字节交换,把结果输出。程序如图1-5所示

(6)在“MAIN”程序中通过按钮的触发调用“CRC效验程序”子程序。

案例源程序下载,请看文末

验证一:写入数据到VB0至VB5中,CRC效验值存储在VW100中

CRC效验计算小助手(与程序中计算相符):


验证二:写入数据到VB0至VB5中,CRC效验值存储在VW100中

CRC效验计算小助手计算(与程序中计算相符):

(技成培训网原创,作者:郭彪,未经授权不得转载,违者必究)

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3038.html

标签: java crc校验
分享给朋友:

“「分享」通讯与设备交互,CRC效验程序如何编写” 的相关文章

快速上手React

web前端三大主流框架1、Angular大家眼里比较牛的框架,甚至有人说三大框架中只有它能称得上一个完整的框架,因为它包含的东西比较完善,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能。对于刚开始学习使用框架的小伙伴们,可以推荐这个框架,学会之后简直能颠覆之前你对前端开发的认...

jvm疯狂吃内存,到底是谁的锅?

jvm应该是每一个java程序员都需要掌握的内容,但是在没有遇到问题之前,很多都是基于理论的,唯有实战才能增加个人的知识储备。本文是从一个角度来分析是谁在狂吃内存,希望对你有所帮助。本文是易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......ps:本文来源于:http...

内存问题探微

这篇文章是我在公司 TechDay 上分享的内容的文字实录版,本来不想写这么一篇冗长的文章,因为有不少的同学问是否能写一篇相关的文字版,本来没有的也就有了。说起来这是我第二次在 TechDay 上做的分享,四年前第一届 TechDay 不知天高地厚,上去讲了一个《MySQL 最佳实践》,现在想起来那...

雅马哈TMAX 560 TECH MAX 外媒深度测评

应雅马哈(Yamaha)的邀请,在葡萄牙埃斯托里尔对全新的Yamaha TMAX 560 Tech Max踏板车进行了测试,在这里TMAX 560 Tech Max售价为11649英镑。雅马哈TMAX长期以来一直站在踏板车的顶端,就声誉和知名度而言,它是当之无愧的大踏板界NO.1。2020 TMAX...

js中数组filter方法的使用和实现

定义filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。语法var newArray = arr.filter(callback(element[, index[, selfArr]])[, thisArg])参数callback循环数组每个元素时调用的回调函数。回调函...

微信外H5跳转小程序——组件(vue项目)

场景有个H5(vue项目),需要实现点击商品item跳转到小程序,微信内和微信外都要支持,这里我们只介绍一下H5在微信外的跳转。如图所示,红框内是一个商品,就是点击这里,要跳转小程序:配置微信小程序云开发(云函数)1、开通云开发然后选择免费额度2、云开发权限设置找到权限设置,把这里的「未登录用户访问...