找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 902|回复: 9

S7-200自由口通讯程序

  [复制链接]
  • 打卡等级:常驻代表
  • 打卡总天数:34
  • 打卡月天数:6
  • 打卡总奖励:9027
  • 最近打卡:2025-12-17 23:15:51

2823

主题

541

回帖

2万

积分

管理员

积分
22569
发表于 2024-11-2 16:21:13 | 显示全部楼层 |阅读模式
S7-200自由口通讯程序
2010-02-08 16:14

MAIN: S7200自由口通讯程序

LD    SM0.1

CALL  SBR_0:SBR0                 //初始化子程序

LD    SM0.7

=     SM30.0

SBR_0: 初始化子程序

LD      SM0.0

MOVW   +2, VW8                   //PLC自由口地址,此处每台机器需设不同的地址

LD   SM0.0

MOVB   9, SMB30                   //通讯参数,波特率9600,自由口通讯

MOVD  &VB100, VD40

MOVW   +10, VW54

MOVB   12, VB150

MOVB   VB9, VB151

MOVD  &VB151, VD60

MOVB   6, SMB34

ATCH  INT_0:INT0, 10

ATCH  INT_1:INT1, 8

ENI

INT_0: 中断程序入口

LD    SM0.0

DTCH  10

MOVD   VD40, VD46

MOVW   +10, VW44

MOVW   +10, VW54

ATCH  INT_2:INT2, 8              //接受中断起用服务程序INT2

INT_1: 延时转向INT0

LD    SM0.0

MOVB   5, SMB34

ATCH  INT_0:INT0, 10

INT_2: 接受地址,并判断

LDB=   SMB2, VB9                   //地址和本机相符

MOVW   VW8, AC0

MOVB   255, SMB34

ATCH  INT_3:INT3, 8              //起用中断服务INT3,接受包

ATCH  INT_5:INT5, 10            //起用延时监控服务INT5

CRETI

LDB=   SMB2, VB9                  //地址和本机不符

NOT

ATCH  INT_0:INT0, 10            //返回中断入口

ATCH  INT_1:INT1, 8

INT_3: 主接受服务程序,同时做异或校验

LD    SM0.0

XORW   SMW1, AC0

MOVB   SMB2, *VD46

INCD  VD46

DECW  VW44

LD    SM1.0                           //完成预定的接受字节数

ATCH  INT_4:INT4, 8             //起用通讯数据处理主程序

INT_4: 通讯数据处理主服务程序

LD    SM0.0

BMB   VB100, VB152, 6            //接受报头拷贝到发送报头

LD    SM0.0

DTCH  8                                  //暂停响应接受中断

INCD  VD46

MOVB   SMB2, *VD46

XORW   SMW1, AC0

ANDW   16#FF, AC0                 //检查异或校验

LDN   SM1.0                            //异或校验错误

MOVB   VB100, AC0

MOVB   16#80, AC1

ORW   AC0, AC1

MOVB   AC1, VB152

MOVB   16#1, VB158

MOVW   +10, VW54

JMP   3                                    //校验错误,向PC返回错误码

LD    SM1.0                           //异或正确

MOVW   +4, VW34

ATCH  INT_8:INT8, 8              //起用服务程序INT8响应接受中断,接受包尾

LD    SM0.0                            //数据处理

LPS

AB=   VB101, 0                      //V寄存器

MOVD  &VB0, VD50

LRD

AB=   VB101, 1                       //Q寄存器

MOVD  &QB0, VD50

LRD

AB=   VB101, 2                       //I寄存器

MOVD  &IB0, VD50

LRD

MOVW   +0, VW56

LRD

MOVW   VW102, VW58

LPP

+D    VD56, VD50

LDB=   VB100, 0                      //PLCPC发送数据

MOVB   VB104, AC0

MOVB   VB105, AC1

MUL   AC1, AC0

BMB   *VD50, VB158, AC0

+I    +8, AC0

MOVW   AC0, VW54

-I    +2, VW54

MOVB   AC0, VB150

LDB=   VB100, 1                      //PLCPC接受数据

BMB   VB106, *VD50, VB105

MOVW   +10, VW54

MOVB   12, VB150

LBL   3

LD    SM0.0

MOVB   50, SMB34

ATCH  INT_6:INT6, 10           //延时起用INT6,置位发送电平

MOVD   VD60, VD66

MOVB   *VD66, AC0

MOVB   0, VB250                   //发送数据异或校验次数监视

LBL   0                                 //发送数据异或校验

LD    SM0.0

INCD  VD66

MOVB   *VD66, AC1

XORW   AC1, AC0

INCB  VB250

LDB=   VB250, 150                //若校验次数超过150次,退出

MOVB   6, SMB34

ATCH  INT_7:INT7, 10

CRETI

LD    SM0.0

DECW  VW54

LDN   SM1.0                       //若发送校验未完成预定的次数,跳转到循环0

JMP   0

LD    SM0.0

INCD  VD66

MOVB   AC0, *VD66

LD    SM0.0

MOVB   VB150, AC0

+I    +4, AC0

MOVB   AC0, VB150

INT_5: 接受时间监控服务程序

LD    SM0.0

MOVD   VD40, VD46

MOVW   +10, VW44

MOVB   5, SMB34

ATCH  INT_1:INT1, 8

ATCH  INT_0:INT0, 10

INT_6:发送数据

LD    SM0.0

MOVB   250, SMB34

ATCH  INT_7:INT7, 10             //起用发送时间监控

ATCH  INT_7:INT7, 9              //发送中断(发送完成时触发)起用服务程序INT7

A     SM4.5

XMT   VB150, 0

INT_7: 结束中断服务程序

LD    SM0.0

DTCH  9                                  //关闭发送中断

MOVB   6, SMB34

ATCH  INT_0:INT0, 10             //返回中断入口

ATCH  INT_1:INT1, 8

INT_8: 接受包尾,正常情况下本中断服务程序连续调用四次,

接受四个0XFF,程序本身不做任何处理

CRETI


工控课堂 www.gkket.com

0

主题

85

回帖

119

积分

新手上路

积分
119
发表于 2025-11-15 04:48:21 | 显示全部楼层
楼主辛苦啦,期待下一篇分享!
工控课堂 www.gkket.com

0

主题

72

回帖

109

积分

新手上路

积分
109
发表于 2025-11-15 05:31:32 | 显示全部楼层
被戳中笑点 / 泪点,太真实了!
工控课堂 www.gkket.com

0

主题

101

回帖

331

积分

注册会员

积分
331
发表于 2025-11-15 06:33:04 | 显示全部楼层
同款经历!我当初也这么过来的😂
工控课堂 www.gkket.com

0

主题

87

回帖

184

积分

新手上路

积分
184
发表于 2025-11-15 06:43:00 | 显示全部楼层
原来还有这种操作,长见识了!
工控课堂 www.gkket.com

0

主题

125

回帖

190

积分

新手上路

积分
190
发表于 2025-11-15 06:54:23 | 显示全部楼层
理性围观,感觉大家说得都有道理
工控课堂 www.gkket.com

0

主题

72

回帖

106

积分

新手上路

积分
106
发表于 2025-11-15 06:58:42 | 显示全部楼层
求个链接 / 教程,楼主好人一生平安~
工控课堂 www.gkket.com

0

主题

82

回帖

124

积分

新手上路

积分
124
发表于 2025-11-15 07:17:05 | 显示全部楼层
路过混个脸熟,顺便为优质内容打 call~
工控课堂 www.gkket.com

0

主题

115

回帖

184

积分

新手上路

积分
184
发表于 2025-11-15 12:22:52 | 显示全部楼层
学到了学到了,这波分享太实用啦!
工控课堂 www.gkket.com

8

主题

454

回帖

2305

积分

高级会员

积分
2305
发表于 2025-11-24 08:24:50 | 显示全部楼层
我先占个楼,等下再慢慢看~
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-23 11:37 , Processed in 0.125995 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表