77范文网 - 专业文章范例文档资料分享平台

CRC校验PLC算法

来源:网络收集 时间:2019-03-29 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

CRC校验函数

cBuffer:计算CRC校验码的数组。 iBufLen:该数组的长度。

unsigned int CRC_Verify(unsigned char *cBuffer, unsigned int iBufLen) {

unsigned int i, j; //#define wPolynom 0xA001 unsigned int wCrc = 0xffff;

unsigned int wPolynom = 0xA001;

/*---------------------------------------------------------------------------------*/ for (i = 0; i < iBufLen; i++) {

wCrc ^= cBuffer[i]; for (j = 0; j < 8; j++) {

if (wCrc &0x0001)

{ wCrc = (wCrc >> 1) ^ wPolynom; } else

{ wCrc = wCrc >> 1; } } } return wCrc; }

如何用PLC写上述的CRC校验函数,笔者整理了一个CRC校验计算的子程序。

CRC-16码由两个字节构成,在开始时CRC寄存器的每一位都预置为1(0xffff),然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最高位(MSB)的位置补零,而最低位(LSB),移位后已经被移出CRC寄存器)如果为1,则把寄存器与预定义的多项式码(16#A001)进行 异或,否则如果LSB为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值。

下面为CRC的计算过程:

1. 设置CRC寄存器,并给其赋值FFFF(hex)。

2. 将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入

CRC寄存器。

3. CRC寄存器向右移一位,MSB补零,移出并检查LSB。

4. 如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。 5. 重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。 6. 重复第2至第5步直到所有数据全部处理完成。 7. 最终CRC寄存器的内容即为CRC值。

输入参数:

待校验数据区指针,第一个字节为数据长度

LD0 DataBuff IN DWORD Network 1 LD SM0.0

MOVW 16#FFFF, AC0 //初始化CRC寄存器

BTI *LD0, LW4 //数据缓冲区第一个字节为数据长度 MOVD LD0, LD6

INCD LD6 //指针指向第一个待处理字节 Network 2 LD SM0.0

FOR AC2, +1, LW4 // Network 3 LD SM0.0

XORB *LD6, AC0 // Network 4 LD SM0.0

FOR AC1, +1, +8 // Network 5 LD SM0.0

SRW AC0, 1 //CRC Network 6

LD SM1.1 // XORW 16#A001, AC0 //16#A001异或 Network 7 NEXT

Network 8 LD SM0.0

INCD LD6 // Network 9 NEXT

Network 10 LD SM0.0

SWAP AC0 // MOVW AC0, *LD6 //CRC开始循环处理每一个字节 字节首先与CRC寄存器低位进行异或 移位处理循环,处理一个字节的8位 寄存器右移一位 如果移出位为0,则进入下一次循环 如果移出位为1,CRC寄存器与多项式指针加1指向下一个字节 交换CRC寄存器高低字节 校验值写入数据区结尾

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库CRC校验PLC算法在线全文阅读。

CRC校验PLC算法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/555502.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: