文档章节

plc crc校验

种地瓜
 种地瓜
发布于 2015/11/16 10:51
字数 468
阅读 346
收藏 1

    在网上流行的CRC码的计算方法如下:

1、 预置1个16位的寄存器为十六进制FFFF(即全为1);称此寄存器为CRC寄存器;

2、 把第一个8位二进制数据(既通讯信息帧的第一个字节)与16位的CRC寄存器的低 8位相异或,把结果放于CRC寄存器;

3、 把CRC寄存器的内容右移一位(朝低位)用0填补最高位,并检查移出位;

4、 如果移出位为0:重复第3步(再次右移一位); 如果移出位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或;

5、 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理;

6、 重复步骤2到步骤5,进行通讯信息帧下一个字节的处理;

7、 将该通讯信息帧所有字节按上述步骤计算完成后,得到的16位CRC寄存器;

8、 最后得到的CRC寄存器的高、低字节进行交换即为:CRC码。


据此,给出一个H05的CRC-16演算过程,
H05的CRC码:
HFFFF:1111 1111 1111 1111
H05  :0000 0000 0000 0101
X0R  :1111 1111 1111 1010
--------------------------
N1-->  0111 1111 1111 1101
--------------------------
N2-->  0011 1111 1111 1110
HA001: 1010 0000 0000 0001
XOR : 1001 1111 1111 1111
--------------------------
N3-->  0100 1111 1111 1111
HA001: 1010 0000 0000 0001
XOR : 1110 1111 1111 1110
--------------------------
N4-->  0111 0111 1111 1111
--------------------------
N5-->  0011 1011 1111 1111
HA001: 1010 0000 0000 0001
XOR : 1001 1011 1111 1110
--------------------------
N6-->  0100 1101 1111 1111
--------------------------
N7-->  0010 0110 1111 1111
HA001: 1010 0000 0000 0001
XOR : 1000 0110 1111 1110
--------------------------
N8-->  0100 0011 0111 1111
||  H  4    3    7    F

大体就是这样进行8次移位,希望您没有晕。

所以最好是通过软件,让程序来做这样的麻烦事。


以三菱为例,你可以这样做:



    在D10~D15输入进行校验的数,在D20就能得到结果。

本文转载自:http://www.ymmfa.com/read.php?tid-69959.html

种地瓜
粉丝 10
博文 177
码字总数 45450
作品 0
深圳
程序员
私信 提问
MODBUS RTU的报文格式

如果是想通过串口调试助手给PLC发命令的话,假设PLC从站地址为1的情况下,比如要对Q0.0进行置位的话,可以发如下命令: 01 0F 00 00 00 08 01 01 3F 55 其中: 01:从站地址,指的就是PLC站地...

wu_pan123
2017/06/30
0
0
常用算法 之五 数据校验(CRC 原理、LRC、奇偶校验、校验和)详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/ZCShouCSDN/article/details/94131769 数据校验   数据在传输的过程...

ZCShouEXP
07/03
0
0
CRC校验码生成与数据校验源码程序(逐位运算法) (包括CRC-4,5,6,7,8,16,32)

Python有个库pycrc ,可以根据配置参数自动生成各种CRC校验的C语言代码,可以去用一下.当然我是在造完轮子之后才发现的。 CRC的 逐位运算法 和 查表法 是两种独立的操作。 查表法是空间换时间,...

Backspace110
2016/10/05
0
0
android apk 防止反编译技术第五篇-完整性校验(转)

一、完整性校验原理 所谓完整性校验就是我们用各种算法来计算一个文件的完整性,防止这个文件被修改。其中常用的方法就是计算一个文件的CRC32的值或者计算一个文件的哈希值。我们在防止apk被...

我是IT码农
2015/05/25
188
0
C++ Exercises(十六)---Ethernet帧包结构解析

复制代码 ///////////////////////////// ///帧信息类 ///////////////////////////// class CFrame { public: CFrame(void); ~CFrame(void); void setSerialNumber(int nSN); void setPreCo......

阿里云_云栖社区
2018/01/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

arduino项目-1. 模拟楼道灯

@toc 1.1 情景说明 说明 漆黑的夜晚,当有人非法进入一所房屋,房屋内的灯在恰当的时间亮起,也许会有效阻止非法活动的继续。 效果展示 1.2 实验器材 器材名称 数量 继电器 1 人体红外感应器...

acktomas
9分钟前
1
0
Nacos 常见问题及解决方法

Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈。在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方...

阿里云官方博客
15分钟前
2
0
pinyin4j 满足中文转拼音的需求

引入依赖 // https://mvnrepository.com/artifact/com.belerweb/pinyin4j //汉字转拼音compile group: 'com.belerweb', name: 'pinyin4j', version: '2.5.1' 写入中文转拼英的工具......

edison_kwok
20分钟前
2
0
IPSE接入Substrate/Polkadot插槽实现互操作性的运行原理

Substrate框架将区块链的众多功能都模块化,对于开发者来说,只是一个选择的问题,同时还保持了众多的可以定制的功能和模块,比如底层通信模块,比如账户体系,比如共识机制等都是可以自己定...

IPSE
26分钟前
153
0
linux配置安装phpMyAdmin的步骤记录

1、首先在phpMyAdmin官方网站 http://www.phpmyadmin.net/downloads下载源码包,或者通过脚本之家进行下载://www.jb51.net/codes/405261.html ,下载后上传到服务器解压即可,或者通过Linux...

蜗牛女孩
27分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部