用STL新写了个CRC16的校验FC

已锁定

风中的云雾茶

  • 帖子

    414
  • 精华

    1
  • 被关注

    6

论坛等级:侠客

注册时间:2008-09-27

普通 普通 如何晋级?

用STL新写了个CRC16的校验FC

3591

3

2010-07-31 13:21:03

star star
以前一直用LAD写程序的,两三天前想写个CRC16的FC,发现用LAD不好搞定。查查资料,决定用STL编写。因为以前没用过STL,所以比较费力。现在已经写好了,运算结果与网上下载的CRC16计算器算出的结果一致。各位高手看看那些地方需要改进。如下:

接口:
IN: start_add DInt 起始地址
count Int 校验字节数
DB_No Int 数据块号
OUT: CRC_hi Byte 校验结果高字节
CRC_lo Byte 校验结果低字节
TEMP: TEMP1 Int 0.0 DB块地址寄存器
TEMP2 Int 2.0 校验寄存器
TEMP3 Int 4.0 校验字节数计数
TEMP4 DInt 6.0 地址指针寄存器
TEMP5 Int 10.0 校验位计数

程序代码:
L #DB_No
T #TEMP1
OPN DB [#TEMP1] //打开数据块
L W#16#FFFF
T #TEMP2 //初始化校验寄存器
L #start_add
SLD 3
T #TEMP4 //地址指针寄存器
L #count //装载校验字节数计数初值
lab1: T #TEMP3 //循环1开始
L DBB [#TEMP4]
L LB 3
XOW //低字节异或
T LB 3
L #TEMP4
L P#1.0
+D
T #TEMP4
L 8 //装载校验位计数初值
lab2: T #TEMP5 //循环2开始
L #TEMP2
SRW 1
JP x001 //如果移出位为1跳转x001
JU x002 //否则跳转x002
x001: T #TEMP2
L #TEMP2
L W#16#A001
XOW //字异或
x002: T #TEMP2
L #TEMP5
LOOP lab2 //循环2结束
L #TEMP3
LOOP lab1 //循环1结束
L LB 2
T #CRC_hi //校验结果高字节
L LB 3
T #CRC_lo //校验结果低字节

哈哈,献丑了。
用STL新写了个CRC16的校验FC 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54623条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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