GB/Z 19582.1-2004 Modbus-国家标准-完整版.pdf

三贝计算器
LRC纵向冗余校验码,Modbus通讯ASCII模式LRC校验码在线计算器

Owen_SYC
Modbus协议 报文间隔3.5个字符

三点水兽
MODBUS-RTU通讯协议简介
https://www.cnblogs.com/prayer521/p/5955331.html

明潮
CRC16常见几个标准的算法及C语言实现

MODBUS-RTU功能码
最常用功能码:
下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量”

        01 (0x01)        读线圈 02 (0x02)        读离散量输入03 (0x03)        读保持寄存器04(0x04)         读输入寄存器05 (0x05)        写单个线圈 06 (0x06)        写单个寄存器15 (0x0F)        写多个线圈 16 (0x10)        写多个寄存器

MODBUS RTU CRC 错误检测的方法
MODBUS RTU Registers Address / Register Data 16bits

1.5 错误检测的方法
错误校验(CRC)域占用两个字节,包含了一个16位的二进制值。CRC值由传输设备计算出来,然后附加到数据帧上,接收设备在接收数据时重新计算CRC值,然后与接收到的CRC域中的值进行比较,如果这两个值不相等,就发生了错误。
CRC运算时,首先将一个 16位的寄存器预置为全1,然后连续把数据帧中的每个字节中的8位与该寄存器的当前值进行运算,仅仅每个字节的8个数据位参与生成CRC,起始位和终止位 以及可能使用的奇偶位都不影响CRC。在生成CRC时,每个字节的8位与寄存器中的内容进行异或,然后将结果向低位移位,高位则用“0”补充,最低位 (LSB)移出并检测,如果是1,该寄存器就与一个预设的固定值(0A001H)进行一次异或运算,如果最低位为0,不作任何处理。
上述处理重复进行,直到执行完了8次移位操作,当最后一位(第8位)移完以后,下一个8位字节与寄存器的当前值进行异或运算,同样进行上述的另一个8次移位异或操作,当数据帧中的所有字节都作了处理,生成的最终值就是CRC值。
生成一个CRC的流程为:
1 预置一个16位寄存器为0FFFFH(全1),称之为CRC寄存器。
2 把数据帧中的第一个字节的8位与CRC寄存器中的低字节进行异或运算,结果存回CRC寄存器。
3 将CRC寄存器向右移一位,最高位填以0,最低位移出并检测。
4 如果最低位为0:重复第三步(下一次移位);如果最低位为1:将CRC寄存器与一个预设的固定值(0A001H)进行异或运算。
5 重复第三步和第四步直到8次移位。这样处理完了一个完整的八位。
6 重复第2步到第5步来处理下一个八位,直到所有的字节处理结束。
7 最终CRC寄存器的值就是CRC的值。
此外还有一种利用预设的表格计算CRC的方法,它的主要特点是计算速度快,但是表格需要较大的存储空间,该方法此处不再赘述,请参阅相关资料。

/* Master Command */// addr  func    address     length    crc-low crc-hi//  0x01   0x03    0x0001     0x0001       0xCAD5
unsigned char SN2[] = { 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0xD5, 0xCA };/* Slave Reply data *///addr   func    len    data     crc-low crc-hi0x01   0x03   0x02    0x0017      0x4AF8
unsigned char SN[]  = { 0x01, 0x03, 0x02,   0x00, 0x17, 0xF8, 0x4A };
/* Master Command *///addr  func   hi   low    hi   low  crc-low crc-hi
unsigned char SN1[] = { 0x01, 0x06, 0x00, 0x01, 0x00, 0x17, 0x98, 0x04 };   unsigned int CRC16_MODBUS( unsigned char *pData, unsigned char ucLength)
{unsigned int  crcValue   = 0xFFFF;  code unsigned int  PolyValue  = 0xA001;     unsigned int  i;while( ucLength--){crcValue  ^= *pData++;      for(i=8; i>0; i--){         if( crcValue & 0x0001 ){   crcValue >>= 1;crcValue  ^= PolyValue;}else crcValue >>= 1;}}return crcValue;
}

Modbus Related Information #1
<备份> 收集资料, 仅供参考。
数据剪辑自原厂规格书, 版权归原所有人拥有。
档案取自互联网!如有侵权或不适用情形, 请联系移除!
** 使用有风险, 请详阅原厂使用说明!
** 范例码为自用,请勿引用, Ctrl-C, Ctrl-V结果自行承担!
#Blog转移

Modbus Related Information #1相关推荐

  1. 谢希仁《计算机网络》笔记

    [自用]转自:https://blog.csdn.net/weixin_43093481/article/details/86684274 1.计算机网络在信息时代的作用 互联网基本特点: 连通性:互 ...

  2. 信息检索领域相关资料 (A Guide to Information Retrieval)

    信息检索领域相关资料 (A Guide to Information Retrieval) Organized by Hongfei Yan Last updated on July 27, 2007 ...

  3. 3GPP TS 29244-g30 中英文对照 | 5.26.3 Transfer of 5GS bridge port management information

    学习5G知识,势必要去阅读相关的技术标准,而纯英文的标准协议对于初学者来说是个门槛. 个人在学习5G标准3GPP TS 29244-g30过程中,也发现google的机器翻译实在晦涩难懂,所以个人在借 ...

  4. NVMe End-to-End Protection Information

    NVMe协议里定义SSD控制器可以支持给每个逻辑块(也就是用户数据)增加额外的元数据,主机如何使用元数据区域自定义(如分布式文件系统的元数据),元数据最常见的用途之一是传递PI端到端保护信息(end- ...

  5. TCP/UDP常用端口及对应服务列表

     计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口 ...

  6. BlackArch-Tools

    BlackArch-Tools 简介安装在ArchLinux之上添加存储库从blackarch存储库安装工具替代安装方法BlackArch Linux Complete Tools List 简介 B ...

  7. 我使用Python和Django在自己的网站上建立了一个会员专区。 这是我学到的东西。

    I decided it was time to upgrade my personal website in order to allow visitors to buy and access my ...

  8. 适合初学者的数据结构_数据结构101:数组-初学者的直观介绍

    适合初学者的数据结构 了解您每天使用的数据结构. (Get to know the data structures that you use every day. ) Welcome! Let's S ...

  9. 推荐一款 Spring Boot 的 HTTP 客户端框架

    欢迎关注方志朋的博客,回复"666"获面试宝典 在SpringBoot项目直接使用okhttp.httpClient或者RestTemplate发起HTTP请求,既繁琐又不方便统一 ...

最新文章

  1. python 函数(二)
  2. 图解在emu8086中学习几条汇编语言常用语句
  3. nginx访问本地目录一直不好使_nginx 配置根目录不生效问题
  4. java概念,Java基础概念
  5. 在 WinForm 中使用 Direct2D
  6. 【设计模式】—— 解释器模式Interpret
  7. 疑似BAT的BUG及避错办法
  8. Excel 脚本编写
  9. 复旦新生计算机考试及格率,复旦大学本科新生《计算机办公自动化》课程入学考试考核大.doc...
  10. Win 7扫雷时间基址查找
  11. 手写字体识别用python实现_Python3实现简单可学习的手写体识别
  12. 网络推销经典案例——所有的骗子都应该向他学习
  13. 安装release版本的apk
  14. Codeforces 1010D Mars rover
  15. 如何成为早起者(二)
  16. 记一次笔记本更换固态硬盘事件
  17. 文件流方式导出Excel表格
  18. 最新基于LBS的毕业设计题目
  19. 导盲机器人 英语作文_雷军这回OK了!小米或将推出会说英文的 AI 自平衡车
  20. windows卸载夸克网盘没有卸载干净

热门文章

  1. 华硕主板破Linux密码,6种清除开机密码方法,总有一个适合你
  2. mac meta键是什么
  3. 精华推荐 | 【MySQL技术专题】「主从同步架构」全面详细透析MySQL的三种主从复制(Replication)机制的原理和实战开发(原理+实战)
  4. 大唐移动招聘软件工程师(C/C++)
  5. enqueue_task和dequeue_task源码分析
  6. set的基本知识及案例
  7. 11届蓝桥杯大赛青少年C++高级组模拟题
  8. 计算机网络 核心节点,41核心节点高校名单
  9. obj2gltf格式转换详细过程
  10. Recuva数据恢复无法读取/打不开怎么办?