电力CDT_CRC程序请教

已锁定

wangyw

  • 帖子

    124
  • 精华

    0
  • 被关注

    18

论坛等级:侠客

注册时间:2005-03-17

普通 普通 如何晋级?

电力CDT_CRC程序请教

688

1

2013-01-22 16:37:03

首先要感谢论坛各位老师的无私帮助,使我学到了很多知识,这几天在摸索电力系统上用的较多的CDT_CRC的校验的程序编制,在论坛上下了modbus_CRC的例程序,然后依据其校验算法,依样照葫芦,结果倒终于算对了,不过我觉得好象实现起来繁琐了些,特别是需多次将寄存器高低位进行交换,在此向各位老师请教,能否再进行简化或别的方法编制的小巧些,以提高运行速度,本人不是专搞PLC的,所以很多东西学得不是很深入,还请大家帮忙,谢谢!下面是我的程序(依据下的程序更改)

ORGANIZATION_BLOCK MAIN:OB1
// TITLE=子程序注释
//
// // CDT_CRC-8码由两个字节构成,在开始时CRC寄存器的每一位都预置为0,然后把CRC寄存器与8-bit的数据进行异或,之后对CRC寄存器从高到低进行移位,在最低位的位置补零,如果移出位为1,则把寄存器与预定义的多项式码(16#07)进行 异或,否则如果为零,则无需进行异或。重复上述的由高至低的移位8次,第一个8-bit数据处理完毕,用此时CRC寄存器的值与下一个8-bit数据异或并进行如前一个数据似的8次移位。所有的字符处理完成后CRC寄存器内的值即为最终的CRC值,再次与16#FF异或后即为CDT_CRC值。
// // 下面为CRC的计算过程:
// // 1.设置CRC寄存器,并给其赋值0000(hex)。
// // 2.将数据的第一个8-bit字符与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器,高低字节交换。
// // 3.CRC寄存器向左移一位,LSB补零,移出并检查MSB。
// // 4.如果MSB为0,重复第三步;若MSB为1,CRC寄存器与多项式码相异或。
// // 5.重复第3与第4步直到8次移位全部完成。此时一个8-bit数据处理完毕。
// // 6.重复第2至第5步直到所有数据全部处理完成。
// // 7.最终CRC寄存器的内容即为CRC值。
// // 8. 与FF(hex)相异或后得出最终的CDT_CRC;
// //
// // 输入参数:
// // 待校验数据区指针,第一个字节为数据长度
// // LD0 DataBuff IN DWORD Network 1
BEGIN
Network 1
// //定义数据地址
LD SM0.1
MOVD &VB1000, LD0
Network 2 // NETWORK TITLE (single line)
//
// NETWORK COMMENTS
//
LD SM0.0
MOVW 16#0, AC0 //初始化CRC寄存器,全部为0
BTI *LD0, LW4 //数据缓冲区第一个字节为数据长度
MOVD LD0, LD6
INCD LD6 //指针指向第一个待处理字节
Network 3
LD SM0.0
FOR AC2, +1, LW4 //开始循环处理每一个字节
Network 4
LD SM0.0
XORB *LD6, AC0 //字节首先与CRC寄存器低位进行异或
Network 5
LD SM0.0 //将CRC寄存器高低位交换
SWAP AC0
Network 6
LD SM0.0
FOR AC1, +1, +8 //移位处理循环,处理一个字节的8位
Network 7
LD SM0.0
SLW AC0, 1 //CRC寄存器左移一位
Network 8
LD SM0.0 //将CRC寄存器高低位交换
SWAP AC0
Network 9
LD SM1.1 //如果移出位为0,则进入下一次循环
XORW 16#07, AC0 //如果移出位为1,CRC寄存器与多项式16#A001异或
Network 10
LD SM0.0 //将CRC寄存器高低位交换
SWAP AC0
Network 11
NEXT
Network 12
LD SM0.0
INCD LD6 //指针加1指向下一个字节
Network 13
LD SM0.0
SWAP AC0 //将CRC寄存器高低位交换
Network 14
NEXT
Network 15
LD SM0.0
SWAP AC0 //交换CRC寄存器高低字节
MOVW AC0, *LD6 //CRC校验值写入数据区结尾
Network 16
LD SM0.0
XORB 16#FF, VB1006 //将CRC结果与16#FF异或,得最终CDT_CRC值
电力CDT_CRC程序请教 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33259条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。