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

「分享」通讯与设备交互,CRC效验程序如何编写导读 在工作现场 经常会用到通讯与其它设备交互信息 而通讯必然会需要效验 CRC 效验程序相对来说比较繁琐 但是大家可以收藏好这个程序 加以理解 需要的时候调用此程序即可

大家好,欢迎来到IT知识分享网。

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

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

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

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

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

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

图1-1初始化存储器

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

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

图1-2异或运算

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

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

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

图1-3执行移位操作

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

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

图1-4指针加1

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

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

图1-5高低字节交换

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

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

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

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

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

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

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

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

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

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

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

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

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/174320.html

(0)
上一篇 2025-03-23 07:00
下一篇 2025-03-23 07:05

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信