研选课堂
HOME
研选课堂
正文内容
plc crc编程 西门子200SMART PLC CRC校验程序的编写
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 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大神是怎么编CRC校验程序的

【程序结构描述】

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

循环冗余校验码(CRC),简称循环码,是一种常用的、具有检错、纠错能力的校验码,在早期的通信中运用广泛。循环冗余校验码常用于外存储器和计算机同步通信的数据校验。奇偶校验码和海明校验码都是采用奇偶检测为手段检错和纠错的(奇偶校验码不具有纠错能力),而循环冗余校验则是通过某种数学运算来建立数据位和校验位的约定关系的。

循环冗余校验码(cyclic redundancy check)简称CRC(循环码),是一种能力相当强的检错、纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位传送)的辅助存储器与主机的数据通信和计算机网络中。

循环码是指通过某种数学运算实现有效信息与校验位之间的循环校验(而海明码是一种多重校验)。

这种编码基本思想是将要传送的信息M(X)表示为一个多项式L,用L除以一个预先确定的多项式G(X),得到的余式就是所需的循环冗余校验码。

这种校验又称多项式校验。

理论上可以证明循环冗余校验码的检错能力有以下特点:①可检测出所有奇数位错;②可检测出所有双比特的错;③可检测出所有小于、等于校验位长度的突发错。

相关问答

plc在进行rs485通讯时不用crc校验可以不?

CRC校验是看协议的,如果协议是你自己编写的,可以不用CRC。但如果是访问其他设备,使用其他设备的协议,那没办法了。比如Modbus-RTU模式,CRC协议是绕不开的...

如何用labview用一个串口同时监视多台plc?

1.学会基本的LABVIEW编程2.了解PLC的编程3.掌握PLC通讯协议MODBUS4.掌握CRCLRC校验码算法5.掌握通过MODBUS组合命令串6.掌握用LBVIEW串口通讯原理通过...

你好,请问信捷xp2-18rt连接成功,但…crc校验错误是什么原因?提示读取的字节数超出最大缓冲区?

你检查一下你的通讯电缆还有就是转串,应该不是PLC的问题,下载程序也是在通讯不断的发数据包和校验码如果硬件有问题有可能会出现这个提示还有就是你把PLC刷机...

plc通讯模块灯闪怎么解决?

PLC损坏(或是输出端有损坏),你可以写一个简单的自锁程序来进行端口好坏的验证。2、误判,对于PLC,输出方式有两种,一种是继电器输出,一种是晶体管输出,前...1...

三菱plc与变频器通讯中的和校验?

在三菱PLC与变频器通讯中,和校验是一种常用的错误检测方法。它通过对数据进行异或运算,生成一个校验码。发送方将数据和校验码一起发送给接收方,接收方再对接...

三菱PLCFX3GA和威纶通6071IE不能通讯需要怎么设置?

PLC与上位连接一般都是ModbusRS485通讯,所以需要设置串口,波特率,奇偶校验,末位校验等。具体步骤如下:1:打开上位软件,设置参数为:com1,9600,8,N,设...PLC与...

ab1400plc怎么改ip地址?

1.打开STEP7-Micro/WIN,新建项目2.工具--->以太网向导--->下一步3.读取CP243-1模块位置,也可手动输入--->下一步4.分配模块地址--->...

西门子200plc怎么做以太网?

通过添加智能模块CP243-1将200PLC连接至以太网中。在编程软件里工具里找到以太网向导按照槽位添加扩展模块位置,第一个为0,依次下排,也可以直接读取为模块...

为什么modbus中crc16的多项式是0xA001?

[回答]modbus线圈储存值和输入状态值都是奇数位数值.串行卡处理数值类型和数据映射.modbus指的是MODICON公司为该公司生产的PLC设计的一种通信协议,从其...

qj71c24n-r2干什么用的?

QJ71C24N-R2是三菱电机生产的一款通讯模块,主要用于与PLC(可编程逻辑控制器)进行通信。这款模块可以通过MELSECNET/H网络接口与PLC进行通信,其主要特点包括:...

 刘品言个人资料  女子游塞尔维亚失联 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

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

热线

188-0000-0000
专属服务热线

微信

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