当前位置: 首页 > news >正文

C# 工业级 CRC16 校验完整实现(Modbus RTU 标准版)

C# 工业级 CRC16 校验完整实现(Modbus RTU 标准版)

以下是工控上位机中最常用、最可靠的CRC16-Modbus实现(表驱动法,性能最高),支持 byte[] 和 Span,直接复制即可使用。

1. CRC16 计算工具类(推荐)

publicstaticclassCrc16{privatestaticreadonlyushort[]CrcTable=newushort[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(标准版)/// </summary>publicstaticushortCompute(ReadOnlySpan<byte>data){ushortcrc=0xFFFF;foreach(bytebindata){crc=(ushort)((crc>>8)^CrcTable[(crc^b)&0xFF]);}returncrc;}/// <summary>/// 计算并附加 CRC16(返回完整帧)/// </summary>publicstaticbyte[]AppendCrc(byte[]data){ushortcrc=Compute(data);byte[]result=newbyte[data.Length+2];Array.Copy(data,result,data.Length);result[^2]=(byte)(crc&0xFF);// 低字节在前result[^1]=(byte)(crc>>8);returnresult;}/// <summary>/// 验证接收帧的 CRC 是否正确/// </summary>publicstaticboolVerify(ReadOnlySpan<byte>frame){if(frame.Length<3)returnfalse;ushortcalculated=Compute(frame[..^2]);ushortreceived=(ushort)((frame[^1]<<8)|frame[^2]);returncalculated==received;}}

2. 使用示例(Modbus RTU 发送与验证)

// 示例:读保持寄存器(功能码 03)byte[]request={0x01,0x03,0x00,0x00,0x00,0x02};// 地址 1,读 2 个寄存器byte[]frame=Crc16.AppendCrc(request);// 发送serialPort.Write(frame,0,frame.Length);// 接收后验证byte[]response=newbyte[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 低字节在前(与上面代码一致)
  • 集成方式:建议封装到协议适配器类中,统一调用AppendCrcVerify
  • 测试工具:Modbus Poll / 串口助手 + CRC 计算器验证

这个 CRC16 实现已在多个产线项目中稳定运行,兼容 Modbus RTU、自定义串口协议等场景。

如果需要继续补充以下内容,请告诉我,我直接给出最简代码:

  • CRC16 位运算版(便于理解)
  • 与 S7 协议结合的校验
  • 完整 Modbus RTU 帧收发封装
  • 异步串口 + CRC 验证示例

直接说需求,我马上补充!祝您通信稳定不丢包!

http://www.jsqmd.com/news/419730/

相关文章:

  • C# 上位机 + 下位机协同开发 的完整实战指南,基于真实中小型工业/实验室场景(例如温湿度监控 + 设备控制、零件计数 + 剔除、流水线简单分拣等)
  • 2026年清理化粪池厂家权威推荐榜:北京市清理化粪池、海淀区清理化粪池、通州区清理化粪池、门头沟清理化粪池、房山区清理化粪池选择指南 - 优质品牌商家
  • 2026年评价高的朝阳区清理化粪池公司推荐:海淀区清理化粪池、通州区清理化粪池、门头沟清理化粪池、北京市清理化粪池选择指南 - 优质品牌商家
  • 2026年硫氧镁净化板厂家最新推荐:医疗净化车间工程、医疗器械净化车间工程、十万级净化车间工程、半导体芯片净化车间工程选择指南 - 优质品牌商家
  • 2026年石景山清理化粪池公司权威推荐:通州区清理化粪池、门头沟清理化粪池、东城区清理化粪池、北京市清理化粪池选择指南 - 优质品牌商家
  • 2026年SBC滑轨厂家最新推荐:WON滑轨/WON滚珠花键/多节滑轨/直线滑轨/米思米滑轨/超重型滑轨/钢制滑轨/选择指南 - 优质品牌商家
  • 2026年红糖厂家权威推荐榜:手工黄冰糖、无添加红糖、无添加黄冰糖、正宗红糖、正宗黄冰糖、烘焙专用红糖、甘蔗黄冰糖选择指南 - 优质品牌商家
  • 2026年常州装修设计厂家权威推荐榜:常州装修设计定制、常州装修设计施工、江苏全屋装修设计、江苏别墅装修设计、江苏室内装修设计选择指南 - 优质品牌商家
  • 数学建模算法学习:从问题类型到模型选择的系统思维
  • 2026年电磁流量计厂家权威推荐榜:质量流量计/导波雷达液位计/温度变送器/压力变送器/磁翻板液位计/金属转子流量计/选择指南 - 优质品牌商家
  • 2026年外开下悬窗厂家推荐:107外开窗纱一体系统窗、107外开系统窗、110双内开系统窗、116外开窗纱一体系统窗选择指南 - 优质品牌商家
  • 2026年导波雷达液位计厂家最新推荐:压力变送器、温度变送器、质量流量计、金属转子流量计、导波雷达液位计、电磁流量计选择指南 - 优质品牌商家
  • 2026年密封窗公司权威推荐:折叠窗/电动升降窗/高端门窗/100双内开系统窗/107外开窗纱一体系统窗/107外开系统窗/选择指南 - 优质品牌商家
  • 软件神器 --- win优化工具
  • 2026年126外开窗纱一体系统窗厂家权威推荐榜:107外开系统窗、116外开窗纱一体系统窗、116外开系统窗选择指南 - 优质品牌商家
  • 并发编程-1
  • 解决 Fish Speech 在 PyTorch 2.10.0+cu130 中的 torchaudio.list_audio_backends AttributeError
  • 2026年卫生纸加工设备公司权威推荐:3000型卫生纸加工设备、一套卫生纸加工设备、全自动卫生纸加工设备选择指南 - 优质品牌商家
  • 2026年评价高的水玻璃厂家推荐公司推荐:硅酸钠生产厂家/四川硅酸钠/大型硅酸钠厂家/批发水玻璃/选择指南 - 优质品牌商家
  • 2026年水玻璃厂家厂家最新推荐:硅溶胶厂家哪家实力大/硅溶胶厂家哪家实力强/硅溶胶厂家推荐电话/选择指南 - 优质品牌商家
  • 2026年初湖南废铁回收服务商综合实力与选购指南 - 2026年企业推荐榜
  • 2026年水玻璃厂家厂家权威推荐榜:水玻璃联系方式、水玻璃采购、泡花碱硅酸钠厂家电话、硅酸钠厂家直销选择指南 - 优质品牌商家
  • 2026年宜昌市精品二手车买卖企业综合实力盘点 - 2026年企业推荐榜
  • 2026年市政环卫厂家权威推荐榜:四川环卫资质公司/小区环卫/环卫工程/环卫资质公司/环卫资质哪家好/选择指南 - 优质品牌商家
  • 2026年打印机公司权威推荐:印刷包装打印机/印刷包装打样机/图文数码打印机/小批量包装打印机/烫金增效打印机/选择指南 - 优质品牌商家
  • 2026年乐山特色小吃公司权威推荐:乐山美食夜宵推荐/乐山美食必吃榜/乐山美食攻略/乐山美食旅游攻略/选择指南 - 优质品牌商家
  • 2026年2月湖南全屋定制装修品牌权威评测与选型指南 - 2026年企业推荐榜
  • 2026年乐山特色小吃店公司权威推荐:附近乐山小吃店、附近乐山美食推荐、乐山哪里的小吃好吃、乐山夜宵小吃选择指南 - 优质品牌商家
  • 2026年小区环卫厂家权威推荐榜:云南环卫公司、四川环卫公司、四川环卫资质公司、环卫工程、环卫资质公司选择指南 - 优质品牌商家
  • 2026年优质过碳酸钠供应商综合评估与推荐 - 2026年企业推荐榜