回复:case函数使用遇到的问题

eagleking68

  • 帖子

    49
  • 精华

    0
  • 被关注

    7

论坛等级:侠客

注册时间:2013-01-19

白金 白金 如何晋级?

发布于 2019-06-26 08:30:59

5楼

附加整个程序,

FOR #i := 1 TO 5 BY 1 DO

    "R_of_trig_enable_1"(CLK := "DB_1".enable_1[#i]);

    IF "R_of_trig_enable_1".Q THEN

        "DB_1".step_2[#i] := 1;

        "DB_1".count_of_R_trig := "DB_1".count_of_R_trig + 1;

        "DB_1".enable_1[#i] := 0;

    END_IF;

    CASE "DB_1".step_2[#i] OF

            0:

                ;

            1:

                "DB_1".timer_1[#i].TON(IN := TRUE,

                                       PT := t#10s);

                IF "DB_1".timer_1[#i].Q THEN

                    "DB_1".out_1[#i] := #i + 10;

                    "DB_1".step_2[#i]:= "DB_1".step_2[#i] + 1;

                    #j := 2;

                END_IF;

            2:

                "DB_1".timer_1[#i].TON(IN := FALSE,

                                       PT := t#10s);

                "DB_1".timer_2[#i].TON(IN := TRUE,

                                       PT := t#10s);

                IF "DB_1".timer_2[#i].Q THEN

                    "DB_1".step_2[#i] := "DB_1".step_2[#i] + 1;

                    #j := 3;

                END_IF;

            3:

                "DB_1".timer_2[#i].TON(IN := FALSE,

                                       PT := t#10s);

                "DB_1".step_2[#i] := 0;

                #j := 0;

        END_CASE;

    (*ELSE

        "DB_1".timer_1[#i].TON(IN := FALSE,

                               PT := t#10s);

        "DB_1".out_1[#i] := 66;

    END_IF;*)

END_FOR;

这是做的类似C语言的,一个相同功能可以做多重的应用。例如有几十个一样的气缸或者油缸或者电机,都可以用这样一个循环函数实现,使程序整体变小,延时时间和运行时间,输入条件和输出条件一样独立。时间数组和条件数组需要在数据块中提前通过数组的形式设置好。IEC的定时器也可以做成数组,西门子的这一点还是真的不错的。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10592条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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