网站首页 > 编程文章 正文
关注"PLC发烧友",一起涨知识吧!
导读:在工作现场,经常会用到通讯与其它设备交互信息,而通讯必然会需要校验。而初学者学习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步,处理第二个八位数。
【程序结构描述】
西门子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效验计算小助手计算(与程序中计算相符):
来源:PLC发烧友,作者:技成培训-郭彪。转载请注明出处!评论处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。。。
猜你喜欢
- 2024-10-16 Modbus通讯协议格式简介(modbus通讯协议格式详解过程)
- 2024-10-16 1200PLC Modbus TCP 通讯(1200的modbus tcp)
- 2024-10-16 modbus协议实例讲解(modbus几种协议区别)
- 2024-10-16 FOXBORO fbm230 现场设备系统集成商(FDSI)Modbus 主站驱动程序
- 2024-10-16 虹科干货 | 教您如何解析MODBUS中的浮点型数据
- 2024-10-16 MODBUS通信异常?调试助手来帮忙(modbus调试软件)
- 2024-10-16 全面讲解Modbus RTU通信及指令,初学PLC必看!
- 2024-10-16 力控组态软件modbus-rtu、modbus-tcp的用法
- 2024-10-16 你好,我是Modbus TCP协议(modbus tcp master)
- 2024-10-16 西门子S7-1200 和CB1241 MODBUS RTU 通信
你 发表评论:
欢迎- 06-24一个老爸画了超级有爱的365幅画 | 父亲节献礼
- 06-24产品小白看魏则西事件——用产品思维审视百度推广
- 06-24某教程学习笔记(一):13、脚本木马原理
- 06-24十大常见web漏洞——命令执行漏洞
- 06-24初涉内网,提权那些事(内网渗透提权)
- 06-24黑客命令第16集:47种最常见的**网站方法2/2
- 06-24铭说 | 一句话木马的多种变形方式
- 06-24Java隐藏的10倍效率技巧!90%程序员不知道的魔法方法(附代码)
- 最近发表
- 标签列表
-
- spire.doc (70)
- instanceclient (62)
- solidworks (78)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)