LabVIEW编程LabVIEW开发 CRC16-CCITT- False校验 表例程与相关资料 点击:126 | 回复:0



fjczd

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:552帖 | 36回
  • 年度积分:703
  • 历史总积分:1294
  • 注册:2008年8月14日
发表于:2021-12-03 22:11:36
楼主

LabVIEW编程LabVIEW开发  CRC16-CCITT- False校验  表例程与相关资料

CRC16-CCITT- False校验用的地方不多,一般都是按照modbus crc校验。设计到左移右移的区别。厂家的modbus crc16校验中,LabVIEW用的是右移的方式,这与校验算法相反,但是它后来异或的地方也是取反了,所以虽然表面上和算法不同,其本质是一样的。

Modbus CRC16校验如下所示,用的是右移,并与A001异或。

8005取反就是A001

 image.png

CRC16-CCITT- False校验的LabVIEW程序,则是严格按照定义进行的,左移异或的参数。计算过程如下。

 image.png

一个完整的CRC参数模型应该包含以下信息:WIDTH,POLY,INIT,REFIN,REFOUT,XOROUT。

NAME:参数模型名称。

WIDTH:宽度,即生成的CRC数据位宽,如CRC-8,生成的CRC为8位

POLY:十六进制多项式,省略最高位1,如 x8 + x2 + x + 1,二进制为1 0000 0111,省略最高位1,转换为十六进制为0x07。

INIT:CRC初始值,和WIDTH位宽一致。

REFIN:true或false,在进行计算之前,原始数据是否翻转,如原始数据:0x34 = 0011 0100,如果REFIN为true,进行翻转之后为0010 1100 = 0x2c

REFOUT:true或false,运算完成之后,得到的CRC值是否进行翻转,如计算得到的CRC值:0x97 = 1001 0111,如果REFOUT为true,进行翻转之后为11101001 = 0xE9。

XOROUT:计算结果与此参数进行异或运算后得到最终的CRC值,和WIDTH位宽一致。

通常如果只给了一个多项式,其他的没有说明则:INIT=0x00,REFIN=false,REFOUT=false,XOROUT=0x00。

常用的21个标准CRC参数模型:

 image.png


厂家有提供LabVIEW的例子,但是不好用,只能运行VB的demo,现在将这些资料都放到这里,留个纪念,或者在以后的LabVIEW项目改造升级中会用到。


相关资料说明,如下所示。

LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序

文字内容均在附件Word中,同时上文中提到的例子和资料,均在word中的附件里,可点击下载。登录www.bjcyck.com可以查看更多详细信息。这里只是简略的介绍,有任何关于LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序相关问题,请与我们联系。

链接地址为:http://www.bjcyck.com/nd.jsp?id=305#_np=2_358




楼主最近还看过


热门招聘
相关主题

官方公众号

智造工程师