课程中心
HOME
课程中心
正文内容
异或检验plc编程 西门子200SMART PLC CRC校验程序的编写
发布时间 : 2024-10-15
作者 : 小编
访问数量 : 23
扫码分享至微信

西门子200SMART PLC CRC校验程序的编写

关注"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-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效验计算小助手计算(与程序中计算相符):

来源:PLC发烧友,作者:技成培训-郭彪。转载请注明出处!评论处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。。。

三菱PLC的MODBUS RTU的CRC计算程序编写,通讯必须掌握

上一章我们介绍了MODBUS协议中的RTU数据模式中的CRC校验码的计算原理,为了方便在PLC中完成通讯控制,今天我们说下PLC中CRC校验码程序的编写。

首先,原理在上一章讲到了,我们利用三菱PLC梯形图进行编写,先看下流程图:

CRC计算流程图

从上图中发现,有两个循环过程,即单个数据的CRC的计算,主要是对首个数据的CRC暂存器进行8次移位运算,另一个大循环是所有数据的运算(先运算完一个8位数据的CRC,下一个数据与这个CRC进行运算),这样把所有数据都计算完成后即可得到CRC校验码。

按照流程图步骤进行编写:

1、初始CRC值:FFFFH,为了方便移位,我们采用位组成的方式来表示CRC暂存器: K4M0,

采用变址寄存器V对数据进行依次运算,大的循环次数要根据传输数据的个数来决定,小的循环(单个数据的CRC)移位8次就循环8次,将数据初始化。

基本框架如下:

数据初始化

程序整体框架

2、小循环单个数据的CRC

小循环单个数据的CRC计算

首先将M100复位是为了后面的高位补零用,SFTR指令是位右移指令,表示对M0为起始位置的16数据右移1位置,高位用M100填补即高位补零,低位M0为移除的溢出数据即LSB。如果LSB=1,则需要把移位后的数据与A001H进行异或计算,结果保存到CRC暂存器K4M0中,此时将覆盖原来的K4M0中的数据,在这里需要跳转指令CJ跳过LSB=0的情况。。如果LSB=0,只要把移位后的数据放入CRC暂存器中即可。

这样首个数据就运算完成,进行下一个数据的运算(大循环)。

3、CRC校验码

全部数据运算完成后,我们要对暂存器进行高低8位调换,将CRC校验码的高位存放到D100,低位存放发到D102中。至此CRC校验码计算完成。

如果觉得麻烦,在FX3U中有现成的CRC计算指令CRC S D n,S代表要计算的数据的起始编号,D为CRC校验码保存的数据寄存器,n表示数据个数。

CRC指令

下面看下仿真结果:

我们用CRC在线计算器看下结果与PLC程序结果进行对比:

CRC计算器结果

PLC计算结果

PLC计算结果

PLC计算结果

不清楚的留言或私信。

相关问答

plc如何检测程序运行?

把PLC连接电源后,看看PLC电源指示灯是否亮,亮则正常,否则损坏。2,连接输入信号,PLC输出指示灯亮,则正常。3,使用电脑和通信线(保证电脑和通信线没有问...把...

plc控制器报错怎么看?

当plc控制器报错时,可以按照以下步骤来进行观察和分析:1.开始环境观察:首先检查plc控制器周围的环境情况。确保电源供应正常,没有杂物或堵塞物造成的过热等...

程序输入plc后在电脑上怎么检测?

将PLC连接到计算机:使用PLC的通信接口(通常为以太网、串口或USB)将PLC与计算机连接起来。确保连接稳定且驱动程序已正确...要检测PLC程序,可以采取以下步骤:1...

PLC是怎么检测到电动机故障的?该注意哪些问题?

PLC只是一个微型控制器,从这个角度来看,它侧重点在于处理简单的数据和判断状态,而电动机故障难点在于测量,因为需要不同的传感器才可以判断一个电机是否相对...P...

三菱plc灯闪3次怎么编程?

三菱PLC灯闪3次通常表示出现了错误,需要进行故障排除。具体的排查方法和处理方式可能因不同型号的PLC而异。以下是一些常见的处理方法:1.检查程序:首先,需...

怎么验证PLCDI模块信号?

验证PLCDI模块信号的过程可以分为以下几个步骤:硬件连接:将PLC的DI模块与被控设备或传感器连接起来,确保线路连接正确且牢固。信号输入:通过手动控制或外...

plc300故障诊断步骤?

2.检查PLC的CPU模块是否正确安装,且与其他模块连接正常。3.检查PLC的输入输出模块是否正确安装,并确保它们连接到正确的设备和信号线路上。4.确认PLC的程...

PLC控制设备运行,怎么查故障啊?有什么步骤吗?

1、检查PLC控制回路中是否有元器件损坏故障,如果有元器件损坏故障,PLC控制系统就会立即自动停止工作。2、检查PLC中外接继电器、接触器、电磁阀等元器件质量...

plc报警程序怎么写?

PLC报警程序的编写主要分为三步:1.在PLC系统中定义报警信号,并将其连接到PLC的I/O端口。2.设置一个报警的阈值,并根据阈值来设置当检测到超出阈值时的报警动...

科威PLC编程通讯问题:试图在FXGPWIN编程软件中读出PLC的程序时,报错---“通讯错误”什么原因?

按提示去检查,应该就是通信方面的问题,如通信端口错误,设置错误等等通常,电脑上一个的软件打开了一个端口,就独占了这个端口!用另个软件是不能再...

 靓蕾  钼网 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部