




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CRC 的生成的生成 循环冗余校验 CRC 域为两个字节 包含一个二进制16 位值 附加在报文后 面的CRC 的值由发送设备计算 接收设备在接收报文时重新计算CRC 的值 并将 计算结果于实际接收到的CRC值相比较 如果两个值不相等 则为错误 CRC 的计算 开始对一个16位寄存器预装全1 然后将报文中的连续的8位子节 对其进行后续的计算 只有字符中的8个数据位参与生成CRC 的运算 起始位 停 止位和校验位不参与CRC 计算 CRC 的生成过程中 每个 8 位字符与寄存器中的值异或 然后结果向最低 有效位 LSB 方向移动 Shift 1位 而最高有效位 MSB 位置充零 然后提取并检 查LSB 如果LSB 为1 则寄存器中的值与一个固定的预置值异或 如果LSB 为 0 则不进行异或操作 这个过程将重复直到执行完8 次移位 完成最后一次 第8 次 移位及相关操 作后 下一个8位字节与寄存器的当前值异或 然后又同上面描述过的一样重复8 次 当所有报文中子节都运算之后得到的寄存器中的最终值 就是CRC 生成CRC 的过程为 1 将一个16 位寄存器装入十六进制FFFF 全1 将之称作CRC 寄存器 2 将报文的第一个8位字节与16 位CRC 寄存器的低字节异或 结果置于CRC 寄 存器 3 将CRC 寄存器右移1位 向LSB 方向 MSB 充零 提取并检测LSB 4 如果LSB 为0 重复步骤3 另一次移位 如果LSB 为1 对CRC 寄存器异或多 项式值0 xA001 1010 0000 0000 0001 5 重复步骤3 和 4 直到完成8 次移位 当做完此操作后 将完成对8位字节的完 整操作 6 对报文中的下一个字节重复步骤2 到5 继续此操作直至所有报文被处理完毕 7 CRC 寄存器中的最终内容为CRC 值 8 当放置 CRC 值于报文时 如下面描述的那样 高低字节必须交换 MODBUS 协议的 CRC 校验子程序代码 为方便读者使用MODBUS协议 将VC VB ASM51环境下MODBUS协议的 CRC校验子程序代码一并给出 供读者参考 CRC Calculation for MODBUS Protocol for VC 数组 snd 为地址等传输字节 num 为字节数 发为 6 收为 5 unsigned int mb crc BYTE snd int num int i j unsigned int c crc 0 xFFFF for i 0 i num i c snd i crc c for j 0 j 1 crc 0 xA001 else crc 1 return crc unsigned short int CrcCheck const unsigned char buffer const int buffLen unsigned short int crcValue 0 if buffer buffLen 0 return crcValue int CRCHi 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 0 x1 0 xC0 0 x80 0 x41 0 x1 0 xC0 0 x80 0 x41 0 x0 0 xC1 0 x81 0 x40 int CRCLo 0 x0 0 xC0 0 xC1 0 x1 0 xC3 0 x3 0 x2 0 xC2 0 xC6 0 x6 0 x7 0 xC7 0 x5 0 xC5 0 xC4 0 x4 0 xCC 0 xC 0 xD 0 xCD 0 xF 0 xCF 0 xCE 0 xE 0 xA 0 xCA 0 xCB 0 xB 0 xC9 0 x9 0 x8 0 xC8 0 xD8 0 x18 0 x19 0 xD9 0 x1B 0 xDB 0 xDA 0 x1A 0 x1E 0 xDE 0 xDF 0 x1F 0 xDD 0 x1D 0 x1C 0 xDC 0 x14 0 xD4 0 xD5 0 x15 0 xD7 0 x17 0 x16 0 xD6 0 xD2 0 x12 0 x13 0 xD3 0 x11 0 xD1 0 xD0 0 x10 0 xF0 0 x30 0 x31 0 xF1 0 x33 0 xF3 0 xF2 0 x32 0 x36 0 xF6 0 xF7 0 x37 0 xF5 0 x35 0 x34 0 xF4 0 x3C 0 xFC 0 xFD 0 x3D 0 xFF 0 x3F 0 x3E 0 xFE 0 xFA 0 x3A 0 x3B 0 xFB 0 x39 0 xF9 0 xF8 0 x38 0 x28 0 xE8 0 xE9 0 x29 0 xEB 0 x2B 0 x2A 0 xEA 0 xEE 0 x2E 0 x2F 0 xEF 0 x2D 0 xED 0 xEC 0 x2C 0 xE4 0 x24 0 x25 0 xE5 0 x27 0 xE7 0 xE6 0 x26 0 x22 0 xE2 0 xE3 0 x23 0 xE1 0 x21 0 x20 0 xE0 0 xA0 0 x60 0 x61 0 xA1 0 x63 0 xA3 0 xA2 0 x62 0 x66 0 xA6 0 xA7 0 x67 0 xA5 0 x65 0 x64 0 xA4 0 x6C 0 xAC 0 xAD 0 x6D 0 xAF 0 x6F 0 x6E 0 xAE 0 xAA 0 x6A 0 x6B 0 xAB 0 x69 0 xA9 0 xA8 0 x68 0 x78 0 xB8 0 xB9 0 x79 0 xBB 0 x7B 0 x7A 0 xBA 0 xBE 0 x7E 0 x7F 0 xBF 0 x7D 0 xBD 0 xBC 0 x7C 0 xB4 0 x74 0 x75 0 xB5 0 x77 0 xB7 0 xB6 0 x76 0 x72 0 xB2 0 xB3 0 x73 0 xB1 0 x71 0 x70 0 xB0 0 x50 0 x90 0 x91 0 x51 0 x93 0 x53 0 x52 0 x92 0 x96 0 x56 0 x57 0 x97 0 x55 0 x95 0 x94 0 x54 0 x9C 0 x5C 0 x5D 0 x9D 0 x5F 0 x9F 0 x9E 0 x5E 0 x5A 0 x9A 0 x9B 0 x5B 0 x99 0 x59 0 x58 0 x98 0 x88 0 x48 0 x49 0 x89 0 x4B 0 x8B 0 x8A 0 x4A 0 x4E 0 x8E 0 x8F 0 x4F 0 x8D 0 x4D 0 x4C 0 x8C 0 x44 0 x84 0 x85 0 x45 0 x87 0 x47 0 x46 0 x86 0 x82 0 x42 0 x43 0 x83 0 x41 0 x81 0 x80 0 x40 int i m int dCRCHi 0 xFF int dCRCLo 0 xFF for i 0 i buffLen i m dCRCLo buffer i dCRCLo dCRCHi CRCHi m dCRCHi CRCLo m crcValue dCRCLo dCRCHi 8 return crcValue CRC Calculation for MODBUS Protocol for VB Function mb crc ByRef snd as BYTE num as integer as Long crc l crc h CRC Calculation for MODBUS Protocol for ASM51 R1 为发送 接收 字节的缓存首地址 R2 为发送 接收 字节的字节数 不含 CRC 字节 R3 为 CRC 校验低位字节 R4 为 CRC 校验高位字节 CRC MOV A 0FFH MOV R4 A MOV R3 A CRC1 MOV A R1 XRL A R3 MOV R3 A MOV R2 08H CRC8 CLR C MOV A R4 RRC A MOV R4 A MOV A R3 RRC A MOV R3 A JNC CRC10 MOV A R3 XRL A 01H MOV R3 A MOV A R4 XRL A 0A0H MOV R4 A CRC10 DJNZ R2 CRC8 INC R1 DJNZ CRC1 RET LRC 的生成的生成 纵向冗余校验 LRC 为一个字节 含有8 位二进制值 LRC 由发送设备计算 并附 加LRC 到报文 接收设备在接收文时计算LRC 并将计算的结果与在LRC 接收到 的实际值相比较 如果两个值不相等 则结果为错 LRC 的计算 对报文中的所有的连续8 位字节相加 忽略任何进位 然后求出其 二进制补码 LRC 为一个8 位域 那么每个会导致值大于255新的相加只是简单的将域的值在零 回绕 因为没有第9 位 进位被自动放弃 生成一个LRC 的过程为 1 不包括起始 冒号 和结束CRLF 的报文中的所有字节相加到一个8位域 故此 进位被丢弃 2 从FF 全1 十六进制中减去域的最终值 产生1 的补码 二进制反码 3 加1 产生二进制补码 将 LRC 置于报文当8 位LRC 2 个 ASCII 字符 在报文中传送时 高位字符首先 发送 然后是低位字符 例如 如果LRC 值为十六进制61 0110 0001 例 下面给出了执行生成LRC 的C 语言函数 函数带有两个参数 unsigned char auchMsg 指向含有用于生成LRC 的二进制数据报文缓冲区的指针 unsigned short usDat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 告诫医务工作者要保护病人100
- 函授心理学考试题及答案
- 海上劳工考试题库及答案
- 2025年围棋死活试题及答案
- 清理水仓知识培训内容总结
- 市政管网工地材料管理与消耗控制方案
- 2025年国家基本药物与合理用药培训考试题(附答案)
- 清溪消防知识培训公司课件
- 高三试卷:河南省金太阳高三联考2024-2025学年高三上学期11月期中化学试题
- 水资源综合调度优化方案
- 1200吨黑水虻养殖项目可行性研究报告写作模板-备案审批
- 13《黄鹤楼》公开课课件
- 申办餐饮食品经营许可证:14项管理制度清单
- 为什么篮球可以弹起来
- 第2课 第一框 中国特色社会主义的开创和发展
- 鱼池净化系统施工方案
- 新概念第一册语法汇总
- 第八届全国小动物医师技能大赛考试复习题库(含答案)
- 2输变电工程施工质量验收统一表式(变电工程土建专业)
- 公司职级职务管理办法RL
- 《环境化学》(第二版)全书教学课件
评论
0/150
提交评论