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

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

ruisui881个月前 (03-26)技术分析16

导读:在工作现场,经常会用到通讯与其它设备交互信息,而通讯必然会需要效验。而初学者学习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-0


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


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


图1-1初始化存储器


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


图1-2异或运算


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


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


图1-3执行移位操作


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


图1-4指针加1


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


图1-5高低字节交换


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



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


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



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



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



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


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

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

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

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

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

基于archlinux的发行版有哪些?

Arch Linux 是一个 Linux 发行版,采用滚动更新的模型,这意味着 Arch Linux 不会定期发布新版本,而是持续接收更新和升级,保持系统与最新软件版本的同步。Arch Linux 以其极简主义、简单性和用户定制为中心的特点而闻名,专注于让用户对其系统配置具有完全控制权。然而,它也以...

一次Java内存占用高的排查案例,解释了我对内存问题的所有疑问

问题现象7月25号,我们一服务的内存占用较高,约13G,容器总内存16G,占用约85%,触发了内存报警(阈值85%),而我们是按容器内存60%(9.6G)的比例配置的JVM堆内存。看了下其它服务,同样的堆内存配置,它们内存占用约70%~79%,此服务比其它服务内存占用稍大。那为什么此服务内存占用稍大...

全新斯柯达柯珞克Karoq深度评测:大众替代品

“斯柯达柯珞克是一款出色的全能家庭 SUV,具有许多有用的功能”价格36,605 英镑- 49,190 英镑优点方便的 VarioFlex 后排座椅非常适合家庭入住驾驶乐趣缺点保修期短保守的内饰性格比Yeti少结论——斯柯达柯珞克是一辆好车吗?斯柯达柯珞克是在辉煌的七座 斯柯达柯迪亚克之后推出的,因...

Vue页面传参详解

一、两种方式方法1:name跳转页面this.$router.push({name:'anotherPage',params:{id:1}})另一页面接收参数方式:this.$route.params.id示例:控制台展示:方法2:path跳转页面this.$router.push(...

史上最全 vue-router 讲解 !!!

前端路由 前端路由是后来发展到SPA(单页应用)时才出现的概念。 SPA 就是一个WEB项目只有一个 HTML 页面,一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转。 前端路由在SPA项目中是必不可少的,页面的跳转、刷新都与路由有关,通过不同的url显示相应的页面。 优点:前...

vue开发微信小程序 - 登录组件

移动端登录功能抽象为通用组件,满足:不同移动端应用中一键登录功能复用支持多种登录:微信登录、H5、QQ登录登录组件使用//引用登录组件 import login from "../components/user/login.vue" export default { compone...