回复:老外的计时程序

白果

  • 帖子

    698
  • 精华

    12
  • 被关注

    27

论坛等级:奇侠

注册时间:2005-08-25

黄金 黄金 如何晋级?

发布于 2017-04-10 19:55:05

34楼

展开查看
以下是引用alanhu在2017-04-04 21:33:39的发言 >楼主

    老外一般是不用定时器的,如遇到计时,他们是这么写的,先建立个100MS脉冲,程序如下:

  A     "m_pulse_100ms"             //If flag set from last cycle

      R     "m_pulse_100ms"             // -> reset flag


      L     "mw_100ms_pulse"            //Load stored time value

      L     #OB1_PREV_CYCLE             //and add last cycle time

      +I    

      T     "mw_100ms_pulse"

      L     100

     

      JC    l040                        //yes -> go ahead


      -I                                //no -> store difference to 100ms

      T     "mw_100ms_pulse"            //as new initial value


      SET   

      S     "m_pulse_100ms"   

比如要计时3S,先用传送指令 L 30 T MW100,然后每100MS减1,当MW100=0时,计时时间到。

一点疑问和改进,请各位大虾指正:

1、理解:累加时间小于100ms,则不置位“m_pulse_100ms”,大于等于100ms,累加时间减去100ms,且置“m_pulse_100ms”

2、疑问:“-I                                //no -> store difference to 100ms”这句改为赋值 “mw_100ms_pulse = 0”是不是更好?

3、改进:累加值减去100,改为赋值 mw_100ms_pulse = 0

4、理由:比如上一周期累加时间99ms,这个周期累计时间为 102ms,减去100ms,下一周期从 2ms 开始累加似乎没有必要了,应该直接从0ms开始吧?

5、其他:如果是累加计数,保留上“尾数” “2ms”才有意义。

健健康康,快快乐乐;平平凡凡,简简单单;勤勤勉勉,兢兢业业;
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54716条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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