http://blog.csdn.net/gybckbin/article/details/6905745

最近在了解modbus 的相关协议,刚开始触碰,也就先调试第一步对于CRC 校验的认识和程序编写。

基本在网上对于MODBUS 的CRC校验程序都能找到两个版本,一个是直接运算的,一个是查表法的。首先来看一下直接运算的算法

运算步骤如下:

步驟 1:令16-bit 寄存器 (CRC 暫存器) = FFFFH.

步驟2:Exclusive OR 第一個8-bit byte 的訊息指令與低位元16-bit CRC 寄存器, 做Exclusive OR ,將結果存入CRC 寄存器內。

步驟 3:又移一位CRC 寄存器,將0 填入高位處。

步驟 4:檢查右移的值,如果是0, 將步驟3 的新值存入CRC 寄存器內, 否則 ExclusiveOR A001H 與CRC 寄存器,將結果存入CRC 寄存器內。

步驟 5:重複步驟3~步驟4,將8-bit 全部運算完成。

步驟 6:重複步驟2~步驟5,取下一個8-bit 的訊息指令,直到所有訊息指令運算完成。

最後,得到的 CRC 寄存器的值,即是CRC 的檢查碼。值得注意的是CRC 的檢查碼必須交換放置於訊息指令的檢查碼中

意思就是高字节地位输出,低字节高位输出。翻阅GOOGLE、百度,发现什么样式的都有,直接高字节高位输出的有,高字节低位输出的也有。究竟哪个才是对的呢,经翻阅

《GBT19582.1-2008基于Modbus协议的工业自动化网络规范 第二部》 中规范中crc 占2个字节,低字节在数据流的倒数第二个字节,而高字节在数据流最末端,即应正了高字节低位输出的做法

crc16 modbus php代码,crc16 - 产生Modbus RTU格式的CRC码相关推荐

  1. Modbus通信协议之CRC16冗余循环校验函数

    Modbus 通信协议详解:https://www.cnblogs.com/txwtech/p/11104428.html Modbus 通信协议详解 下面是在QT5 C++控制台测试程序. #inc ...

  2. CCITT标准CRC16(1021) Java代码

    背景: 与GPS运营商做数据对接,图片.GPS.轨迹所有数据数据包中都有CRC校验值,需要对数据包进行校验. JAVA代码: package com.jst.util;/*** CRC-CCITT 算 ...

  3. CRC-16/CRC-32 程序代码

    CRC-16/CRC-32 程序代码 不久前写一程序时要用到 CRC-16 ,但找来找去只在 UDDF 里找到一个 Delphi 的 CRC-32 程序代码,而且是用查表法,虽然说查表法速度快,但 2 ...

  4. 三菱FX3G/FX3S+485bd扩展,采用modbus rtu协议,crc校验,通讯控制四台E700变频器,可以实现正反转

    三菱FX3G/FX3S 485协议通讯四台三菱E700变频器程序资料 三菱FX3G/FX3S+485bd扩展,采用modbus rtu协议,crc校验,通讯控制四台E700变频器,可以实现正反转,停止 ...

  5. CRC-16校验C#代码

    [csharp] view plaincopyprint? using System; using System.Collections.Generic; using System.Text; usi ...

  6. modbus的c语言程序,电力-RTU终端MODBUS规约(C程序)

    目录: 一.Modbus slave和Modbus poll使用说明 二.Modbus协议C程序样例 ------------------------------------------------- ...

  7. crc16 ibm c语言,CRC16常见几个标准的算法及C语言实现

    CRC码由发送端计算,放置于发送信息报文的尾部.接收信息的设备再重新计算接收到信息报文的CRC,比较计算得到的CRC是否与接收到的相符,如果两者不相符,则表明出错. 校验码的计算多项式为(X16 + ...

  8. 【Qt Modbus通信】libmodbus实现modbus的主机功能/从机功能 源码分享

    前言 modbus在上下位机数据交互时被广泛使用,因此写了这篇笔记和大家一起学习. 参考文献 Libmodbus源码分析(二)-常用接口函数分析 Libmodbus源码分析(四)-RTU相关函数分析 ...

  9. linux modbus工具,基于ARM-Linux的Modbus串口服务器设计

    随着互联网的迅猛发展,在使用计算机进行网络互联的同时,各种家电设备.仪器仪表以及工业生产中的数据采集和控制设备也在逐步地走向网络化,以便共享网络资源.所以,在电子设备日趋网络化的今天,利用串口服务器来 ...

最新文章

  1. 数学图形(1.40)T_parameter
  2. 《python 与数据挖掘 》一 1.2 工具简介
  3. ModuleNotFoundError: No module named 'sklearn.cross_validation'
  4. 无法访问此网站刷新又好了_一键突破或加速网站访问
  5. SpringBootApplication注解
  6. leetcode 720. Longest Word in Dictionary | 720. 词典中最长的单词(Trie前缀树)
  7. node-red教程2 第一条数据流
  8. KVM的内存气球技术(balloon)
  9. CRectTracker类的使用方法及其静态库下CRectTracker无法显示鼠标光标解决方案
  10. php修改linux文件权限设置,linux怎么给文件设置权限
  11. mysql 5.6参数_初识 MySQL 5.6 新功能、参数
  12. 朝鲜黑客伪装成三星招聘人员诱骗安全研究员,或发动供应链攻击
  13. python画柱状图-Python 使用 matplotlib 画柱状图教程
  14. 使用javascript实现在页面打印的效果的三种方式
  15. oracle instant client 配置,oracle instantclient配置
  16. js 微信聊天框的时间显示规则,以及输出的时间格式(已优化)
  17. java中412是什么错_HTTP 412 错误 – 先决条件失败 (Precondition
  18. 硒化钼纳米颗粒/MoSe2 Nanoparticles的介绍 提供氨基/NH2/羧基COOH/PEG/蛋白Protein/抗体antibody功能化修饰的硒化钼纳米颗粒/MoSe2 Nanoparti
  19. 离别的感受(转小百合)
  20. k8s笔记3--Kubernetes IDE Lens

热门文章

  1. maven 打包jar_Maven一定要会的这几个知识!
  2. 计算机不会输入函数怎么办,函数不正确_电脑上文件打不开,显示函数不正确怎么解决?...
  3. 主成分分析法怎么提取图片中的字_在主成分分析里,如何提取主成分
  4. php博客添加live2d,在博客中增加自己的live2d纸片人模型方法
  5. initrd.img解压和压缩
  6. fasttext简单理解及应用
  7. 将Python源码编译成pyc和pyo文件
  8. es like模糊匹配_es 基于match_phrase/fuzzy的模糊匹配原理及使用
  9. mongodb连接失败_MongoDB 基础入门
  10. 蓝牙耳机和蓝牙鼠标相互干扰_TWS蓝牙耳机哪个牌子好?主流无线蓝牙耳机推荐...