恭喜,你发布的帖子
发布于 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的定时器也可以做成数组,西门子的这一点还是真的不错的。
请填写推广理由:
分享
只看
楼主