C# 工业级 CRC16 校验完整实现(Modbus RTU 标准版)
C# 工业级 CRC16 校验完整实现Modbus RTU 标准版以下是工控上位机中最常用、最可靠的CRC16-Modbus实现表驱动法性能最高支持 byte[] 和 Span直接复制即可使用。1. CRC16 计算工具类推荐publicstaticclassCrc16{privatestaticreadonlyushort[]CrcTablenewushort[256]{0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,0x0A00,0xCAC1,0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81,0x1A40,0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,0x1680,0xD641,0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,0xFA01,0x3AC0,0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,0xE401,0x24C0,0x2580,0xE541,0x2700,0xE7C1,0xE681,0x2640,0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,0xA441,0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,0xAA01,0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,0xBE01,0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1,0xB681,0x7640,0x7200,0xB2C1,0xB381,0x7340,0xB101,0x71C0,0x7080,0xB041,0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,0x5280,0x9241,0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440,0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,0x4E00,0x8EC1,0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680,0x8641,0x8201,0x42C0,0x4380,0x8341,0x4100,0x81C1,0x8081,0x4040};/// summary/// 计算 CRC16-Modbus标准版/// /summarypublicstaticushortCompute(ReadOnlySpanbytedata){ushortcrc0xFFFF;foreach(bytebindata){crc(ushort)((crc8)^CrcTable[(crc^b)0xFF]);}returncrc;}/// summary/// 计算并附加 CRC16返回完整帧/// /summarypublicstaticbyte[]AppendCrc(byte[]data){ushortcrcCompute(data);byte[]resultnewbyte[data.Length2];Array.Copy(data,result,data.Length);result[^2](byte)(crc0xFF);// 低字节在前result[^1](byte)(crc8);returnresult;}/// summary/// 验证接收帧的 CRC 是否正确/// /summarypublicstaticboolVerify(ReadOnlySpanbyteframe){if(frame.Length3)returnfalse;ushortcalculatedCompute(frame[..^2]);ushortreceived(ushort)((frame[^1]8)|frame[^2]);returncalculatedreceived;}}2. 使用示例Modbus RTU 发送与验证// 示例读保持寄存器功能码 03byte[]request{0x01,0x03,0x00,0x00,0x00,0x02};// 地址 1读 2 个寄存器byte[]frameCrc16.AppendCrc(request);// 发送serialPort.Write(frame,0,frame.Length);// 接收后验证byte[]responsenewbyte[9];// 假设返回 9 字节serialPort.Read(response,0,9);if(Crc16.Verify(response)){// CRC 正确继续解析数据ushortvalue(ushort)((response[3]8)|response[4]);}else{// CRC 错误丢弃或重发Console.WriteLine(CRC 校验失败);}3. 工业级使用建议性能表驱动法比位运算快 5–10 倍适合高频采集字节序Modbus CRC 低字节在前与上面代码一致集成方式建议封装到协议适配器类中统一调用AppendCrc和Verify测试工具Modbus Poll / 串口助手 CRC 计算器验证这个 CRC16 实现已在多个产线项目中稳定运行兼容 Modbus RTU、自定义串口协议等场景。如果需要继续补充以下内容请告诉我我直接给出最简代码CRC16 位运算版便于理解与 S7 协议结合的校验完整 Modbus RTU 帧收发封装异步串口 CRC 验证示例直接说需求我马上补充祝您通信稳定不丢包

相关新闻

前后端分离个性化电影推荐系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

前后端分离个性化电影推荐系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

系统架构设计### 摘要 随着互联网技术的快速发展,个性化推荐系统在影视娱乐领域的应用日益广泛。传统的电影推荐系统通常采用单一的内容推荐或协同过滤算法,难以满足用户多样化的需求。同时,前后端耦合的开发模式导致系统扩展性差、维护成本高…

2026/7/4 12:48:35 阅读更多 →
高校学生饮食推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

高校学生饮食推荐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

系统架构设计### 摘要 随着高校学生规模的不断扩大,学生饮食健康问题日益受到关注。传统的高校食堂管理模式存在信息不对称、推荐不精准等问题,难以满足学生多样化的饮食需求。为优化学生饮食体验,提升食堂管理效率,开发一套基于智…

2026/7/3 22:30:56 阅读更多 →
面向太空应用的钙钛矿电池稳定性评估:从低地球轨道热环境到高空气球验证

面向太空应用的钙钛矿电池稳定性评估:从低地球轨道热环境到高空气球验证

钙钛矿太阳能电池因其高效率、轻量化以及出色的辐射耐受性,成为空间光伏领域备受关注的技术方向。然而,低地球轨道中的卫星每天经历约15次从极寒(-90C)到高温(80C)的剧烈热冲击,其温度变化速率(最高6.77C/分钟)远超地面IEC 61215标准(1.67C/分…

2026/5/17 7:10:22 阅读更多 →

最新新闻

WSaiOS:一种基于确定性-概率混合架构的AI语义能力模拟系统

WSaiOS:一种基于确定性-概率混合架构的AI语义能力模拟系统

WSaiOS:一种基于确定性-概率混合架构的AI语义能力模拟系统作者:东塬一老翁发表时间:2026年7月4日版本:1.0---摘要随着大语言模型(LLM)在自然语言处理领域的广泛应用,其高昂的计算成本、低可解释…

2026/7/4 13:45:30 阅读更多 →
PHP源码保护实战:从混淆加密到授权系统的2024一体化方案

PHP源码保护实战:从混淆加密到授权系统的2024一体化方案

1. 项目概述与核心需求解析 “2024 首发 PHP加密系统php源码”这个标题,乍一看像是某个资源分享站点的标题,但背后折射出的,其实是PHP开发者、项目管理者以及商业软件供应商们一个持续了二十多年的核心痛点: 如何保护自己的PHP源…

2026/7/4 13:45:30 阅读更多 →
15A无刷电机FOC控制:硬件选型与算法优化实践

15A无刷电机FOC控制:硬件选型与算法优化实践

1. 项目背景与核心挑战在工业自动化、无人机和电动汽车等领域,无刷直流电机(BLDC)因其高效率、长寿命和低维护需求而广受欢迎。然而,实现高性能的BLDC控制并非易事,尤其是当电流需求高达15A时,工程师们面临…

2026/7/4 13:39:25 阅读更多 →
三维机动目标跟踪:IMM+UKF算法实战解析

三维机动目标跟踪:IMM+UKF算法实战解析

1. 三维机动目标跟踪的挑战与IMMUKF方案 在目标跟踪领域,三维机动目标的跟踪一直是个棘手问题。我做了八年多的目标跟踪算法开发,最深的体会就是:目标一动不如一静,特别是当目标突然改变运动状态时,传统单模型滤波器的…

2026/7/4 13:37:25 阅读更多 →
基于计算机视觉的视线检测:从MediaPipe实现到自动化触发

基于计算机视觉的视线检测:从MediaPipe实现到自动化触发

1. 先搞清楚“当你突然看我的时候”到底在解决什么问题“当你突然看我的时候”这个标题,乍一看不像一个技术项目,更像一句文艺的句子。但如果你在技术社区、开源平台或者开发者论坛里看到它,它大概率指向一个特定的、需要技术手段来解决的场景…

2026/7/4 13:37:24 阅读更多 →
基于YOLO与SpringBoot的葡萄叶片病害智能检测系统开发

基于YOLO与SpringBoot的葡萄叶片病害智能检测系统开发

1. 项目概述:葡萄叶片病害智能检测系统 去年夏天,我在宁夏某葡萄种植基地亲眼目睹了黑腐病爆发带来的惨重损失——短短两周内,30亩优质葡萄园减产近半。这让我深刻意识到,传统依赖人工经验的病害识别方式已经无法满足现代农业的需…

2026/7/4 13:33:18 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻