回复:在SCL编程好中if case 等判断语句语句下如何使用定时器计时

已锁定

S_automation

西门子1847工业学习平台

  • 帖子

    1198
  • 精华

    17
  • 被关注

    341

论坛等级:奇侠

注册时间:2013-06-23

钻石 钻石 如何晋级?

发布于 2023-09-06 09:38:47

7楼

展开查看
以下是引用xinchen在2023-09-05 10:31:17的发言 >4楼

没关系的吧,本质上注意 IN 就行,尤其是复位;


// 每个 case 各自使用一个

CASE #s_Step OF

    10:

        #arrTimer[1].IN := FALSE;

        #arrTimer[0].TON(IN := TRUE,

                         PT := T#10S,

                         Q => #tmpBool1);

        IF #tmpBool1 THEN

            #s_Step := 20;

        END_IF;

        

    20:

        #arrTimer[0].IN := FALSE;

        #arrTimer[1].TON(IN := TRUE,

                         PT := T#20S,

                         Q => #tmpBool1);

        IF #tmpBool1 THEN

            #s_Step := 10;

        END_IF;

END_CASE;


// 使用单个定时器,注意输出后 IN 的复位

CASE #s_Step OF

    10:

        #arrTimer[0].TON(IN := TRUE,

                         PT := T#10S,

                         Q => #tmpBool1);

        IF #tmpBool1 THEN

            #s_Step := 20;

            #arrTimer[0].IN := FALSE;

        END_IF;

        

    20:

        #arrTimer[0].TON(IN := TRUE,

                         PT := T#20S,

                         Q => #tmpBool1);

        IF #tmpBool1 THEN

            #s_Step := 10;

            #arrTimer[0].IN := FALSE;

        END_IF;

END_CASE;


   可以,我上次测试估计是仿真时修改程序导致仿真报错后,我关了仿真在启动估计是有问题,仿真不了这个输出结果了。今天再去测试前天的程序是可以计时输出。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11162条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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