回复:应用探讨——S7-300/400 PLC Modbus通讯应用探讨—发帖整理

总坛主 西门子1847工业学习平台

  • 帖子

    3679
  • 精华

    8
  • 被关注

    366

论坛等级:至圣

注册时间:2003-06-06

普通 普通 如何晋级?

发布于 2011-08-16 15:21:33

5楼

quote:以下是引用火麒麟在2011-08-04 08:45:54的发言:
上面一位老兄的CRC校验程序可以考虑用下循环,少用跳转:
VAR_INPUT
DB_NO : INT ;
DBB_Start : INT ;
DBB_Counts : INT ;
END_VAR
VAR_OUTPUT
CRC_H : BYTE ;
CRC_L : BYTE ;
END_VAR
VAR_TEMP
CRC_REG : WORD ;
DB_NO_TEMP : INT ;
BytesChecked : INT ;
BitsChecked : INT ;
END_VAR
BEGIN
NETWORK
TITLE =

L W#16#FFFF;
T #CRC_REG; //预置CRC寄存器
L #DB_NO;
T #DB_NO_TEMP;
OPN DB [#DB_NO_TEMP];
L #DBB_Start; //读入校验起始字节
SLD 3;
LAR1 ;

L #DBB_Counts; //读入校验字节数量
_A: T #BytesChecked; //字节处理循环
L DBB [AR1,P#0.0];
L LB 1;
XOW ;
T LB 1;

L 8;
_B: T #BitsChecked; //位处理循环
L #CRC_REG;
SRW 1;
T #CRC_REG;
JZ _C; //检验移出位是否为1
L #CRC_REG;
L W#16#A001;
XOW ;
T #CRC_REG;

_C: L #BitsChecked; //校验下个位
LOOP _B;

+AR1 P#1.0; //校验下个字节
L #BytesChecked;
LOOP _A;

L LB 1; //输出校验码
T #CRC_H;
L LB 0;
T #CRC_L;
END_FUNCTION

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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