设为首页收藏本站积分获取及使用技巧附件上传须知[求助-西门子PLC300/400]STL编程循环及指针的问题

追梦工控论坛|工控论坛-专业的Intouch论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 7621|回复: 2

[求助-西门子PLC300/400]STL编程循环及指针的问题

[复制链接]

升级  19.5%

该用户从未签到

发表于 2014-3-10 19:51:44 | 显示全部楼层 |阅读模式

上传分享工控资料得追梦点,下载积分获取办法点击进入 ☆追梦点充值入口
发帖回帖赚金币兑换下载积分。上传附件须知点击进入

×

马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
一段STL编辑的程序,只看懂了大概意思是将状态位M赋值给DB块,但为什么要使用SRW 1(却不直接赋值一个合适的数),及循环多少遍不太确定(自己分析为(1023-400)次),请大家帮忙看看.其中(#INO=200,#IN1=35)</P> L #IN1
T #TEMP2
OPN DB [#TEMP2]
L P#0.0
LAR1
L #IN0
SRW 1
L 1023
>I
JC M002
TAK
M001: T #TEMP3
L MW [AR1,P#2.0]
T DBW [AR1,P#2.0]
+AR1 P#2.0
L #TEMP3
LOOP M001
M002: NOP 0

        问题补充:
按楼上的回答,如果循环100次,循环的结果是不是将M102.0-M201.9状态值放到了数据块DB35中,地址为DB35.DB2.0-DB35.DB101.9中
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
7623°C
2
  • uqaqgvc
  • 毕村内富
过: 他们

升级  29%

该用户从未签到

发表于 2014-3-10 20:22:32 | 显示全部楼层
可以看下下面的解释
L     #IN1
      T     #TEMP2
      OPN   DB [#TEMP2]
      L     P#0.0
      LAR1  
      L     #IN0      装载 #IN0 即200至地址累加器1
      SRW   1        右移位相当于把200乘以2即400
      L     1023     装载累加器1的内容至累加器2(即#IN0  ,400)并把1023累加器1
      >I   
      JC    M002    累加器2的内容(即#IN0  ,400)大于累加器1(1023)刚跳转到M002   
      TAK              若  累加器2的内容不大于累加器1则交换累加器1的累加器2的内容
M001: T     #TEMP3      把累加器1的内容传送到 #TEMP3(即循环次数)
      L     MW [AR1,P#2.0]
      T     DBW [AR1,P#2.0]
      +AR1  P#2.0
      L     #TEMP3
      LOOP  M001
M002: NOP   0
从这段程序可以看出#IN0 乘以2的结果大于1023时跳过程序,不循环,若不大于即小于等于时,
则按#IN0 乘以2的次数进行循环.本例为400
                                                                                                                                                                                                                                                              
                                                        

升级  32.5%

该用户从未签到

发表于 2014-3-10 20:46:29 | 显示全部楼层
L     #IN1
      T     #TEMP2
      OPN   DB [#TEMP2]
      L     P#0.0
      LAR1  
      L     #IN0      装载 #IN0 即200至地址累加器1
      SRW   1        右移位相当于把200乘以2即400
      L     1023     装载累加器1的内容至累加器2(即#IN0  ,400)并把1023累加器1
      >I   
      JC    M002    累加器2的内容(即#IN0  ,400)大于累加器1(1023)刚跳转到M002   
      TAK              若  累加器2的内容不大于累加器1则交换累加器1的累加器2的内容
M001: T     #TEMP3      把累加器1的内容传送到 #TEMP3(即循环次数)
      L     MW [AR1,P#2.0]
      T     DBW [AR1,P#2.0]
      +AR1  P#2.0
      L     #TEMP3
      LOOP  M001
M002: NOP   0
从这段程序可以看出#IN0 乘以2的结果大于1023时跳过程序,不循环,若不大于即小于等于时,
则按#IN0 乘以2的次数进行循环.本例为400
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            飞华讲的很好,只是SRW   1是右移1位相当于把200除以2即100,循环次数为100。
这样做的好处是使程序更加灵活,修改时只需改变引脚变量的值即可。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            SRW   1=/2
SLW   1=*2
类推,按8421码来的
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

请珍惜自己的ID,严禁发布垃圾水贴,诸如adsf......顶......纯表情......多次重复回帖刷积分......轻则删帖警告,重则封禁!★请分享资料、经验或者赞助论坛,贡献一份力量★

关闭

最新活动上一条 /1 下一条

小黑屋|手机版|追梦工控论坛|工控论坛-专业的Intouch论坛 ( 皖ICP备10012005号 )|网站地图

GMT+8, 2025-5-6 19:46 , Processed in 0.215744 second(s), 20 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

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