技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > STL编写的一个程序块(昨天问题的补充)

STL编写的一个程序块(昨天问题的补充)

刘玉蓉 发布于2014-10-24 17:38 71 0 标签:

昨天提问得到了耐心解答。今天继续补充问题!
  A     #ZFRG
      JC    M001
      S     #ZFRG
      R     #ZAGL
      L     0
      T     #ISTH
      T     #ISTM
      T     #SEK
      JC    M002
M001: AN    M     99.7
      BEC   
      L     #SEK
      INC   1
      T     #SEK
      L     60
      <I    
      JC    M002
      L     0
      T     #SEK
      L     #ISTM
      INC   1
      T     #ISTM
      L     60
      <I    
      JC    M002
      L     0
      T     #ISTM
      L     #ISTH
      INC   1
      T     #ISTH
M002: NOP   0
 L     #SOLH
      L     #ISTH
      >I    
      BEC   
      L     #SOLM
      L     #ISTM
      >I    
      BEC   
      S     #ZAGL
      L     0
      T     #ISTH
      T     #ISTM
      T     #SEK

下边一段程序昨天没粘贴上,今天补充,希望解答。
其中#SOLH被外部赋值W#16#0,#SOLM被赋值W#16#99

佳答案

A     #ZFRG
      JC    M001//如果 #ZFRG=1则跳转到M001处;
      S     #ZFRG//置位#ZFRG标志
      R     #ZAGL//复位#ZAGL标志
      L     0
      T     #ISTH//小时单元清0
      T     #ISTM//分钟单元清0
      T     #SEK//秒单元清0
      JC    M002
M001: AN    M     99.7
      BEC   //如M     99.7为0,则条件块结束
      L     #SEK
      INC   1
      T     #SEK//秒单元加1
      L     60
      <I    
      JC    M002//秒单元如小于60,则跳转到M002。
      L     0
      T     #SEK//如大于等于60,秒单元清0.
      L     #ISTM
      INC   1
      T     #ISTM//分钟单元加1
      L     60
      <I    
      JC    M002//分钟单元如小于60,则跳转到M002。
      L     0
      T     #ISTM//如大于等于60,分钟单元清0.
      L     #ISTH
      INC   1
      T     #ISTH//小时钟单元加1
M002: NOP   0//空操作。
 L     #SOLH
      L     #ISTH
      >I    
      BEC   //如果#SOLH(小时设定值)大于#ISTH(小时现行值),则本程序块结束
      L     #SOLM
      L     #ISTM
      >I    
      BEC   //如果#SOLM(分钟设定值)大于#ISTM(分钟现行值),则本程序块结束
      S     #ZAGL//如果上述两个比较均不成立,则#ZAGL置位
      L     0
      T     #ISTH//小时单元清0
      T     #ISTM//分钟单元清0
      T     #SEK///秒单元清0

上述程序包括三部分:
1、初始化,将小时、分钟、秒存储单元清零。
2、时间计时,按秒、分钟、小时的60进制进行计算。
3、如果#SOLH(小时设定值)大于#ISTH(小时现行值),则本程序块结束;
如果#SOLM(分钟设定值)大于#ISTM(分钟现行值),则本程序块结束;
如果上述两个比较均不成立,则#ZAGL置位。

其中#SOLH被外部赋值W#16#0,#SOLM被赋值W#16#99?
为什么要采用这样的数值,在此讲不出道理,这要看你的控制对象的实际要求了,只有自己解读这些数值。不过#SOLM被赋值W#16#99,令人不解,原因时间是60进制,不应出现大于60的数值。可能这里99表示一个两位的BCD码(以二进制表示的十进制数)。

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签