恭喜,你发布的帖子
发布于 2020-09-15 19:31:03
3楼
这是一个 顺序控制逻辑中的一部分,原程序是STEP1 STEP2 STEP3 等把每步的控制写在一起,层次感比较清晰,本意是在刚进入步后的一个周期做初始化操作,在该步后面还有许多东西处理,这些逻辑要满足一定的条件才会转向下一步。调试时出现问题,单独按照原程序结构测试沿指令
源程序如下:
#R_TRIG_开始称重(CLK := #step[3] AND #放料阀关闭到位,
Q => #flag[8]);
#R_TRIG_平台到顶是上升沿(CLK := #上升到位 AND #吹气 = FALSE,
Q => #flag[9]);
IF #step[3] THEN
#放料阀打开 := FALSE;
#放料阀关闭 := TRUE;
//放料阀关闭到位后把称重插板全部打开
IF ( #flag[9] OR #flag[18] ) AND #放料阀关闭到位 THEN
#大插板打开 := TRUE;
#大插板关闭 := FALSE;
#中插板打开 := TRUE;
#中插板关闭 := FALSE;
#小插板打开 := TRUE;
#小插板关闭 := FALSE;
#flag[18] := FALSE;
END_IF;
//第一分支 差料特别多的情况下。
IF #flag[5] THEN
IF #当前重量 > #大插板关闭值 THEN
#大插板打开 := FALSE;
#大插板关闭 := TRUE;
#flag[5] := FALSE;
#flag[10] := TRUE;
END_IF;
END_IF;
IF #flag[10] THEN
IF #当前重量 > #中插板关闭值 THEN
#中插板打开 := FALSE;
#中插板关闭 := TRUE;
#flag[10] := FALSE;
#flag[11] := TRUE;
END_IF;
END_IF;
IF #flag[11] THEN
IF #当前重量 > #小插板关闭值 THEN
#小插板打开 := FALSE;
#小插板关闭 := TRUE;
#flag[11] := FALSE;
#step[4] := TRUE;
#step[3] := FALSE;
END_IF;
END_IF;
//第二分支 差料一包多的情况下。
IF #flag[6] THEN
IF #当前重量 > #大插板关闭值 THEN
#大插板打开 := FALSE;
#大插板关闭 := TRUE;
#flag[6] := FALSE;
#flag[12] := TRUE;
END_IF;
END_IF;
IF #flag[12] THEN
IF #当前重量 > #中插板关闭值 THEN
#中插板打开 := FALSE;
#中插板关闭 := TRUE;
#flag[12] := FALSE;
#flag[13] := TRUE;
END_IF;
END_IF;
IF #flag[13] THEN
IF #当前重量 > #小插板关闭值 THEN
#小插板打开 := FALSE;
#小插板关闭 := TRUE;
#flag[13] := FALSE;
#step[4] := TRUE;
#step[3] := FALSE;
END_IF;
END_IF;
//第三分支 差料特别少的情况下。
IF #flag[7] THEN
IF #当前重量 > #大插板关闭值 THEN
#大插板打开 := FALSE;
#大插板关闭 := TRUE;
#flag[7] := FALSE;
#flag[14] := TRUE;
END_IF;
END_IF;
IF #flag[14] THEN
IF #当前重量 > #中插板关闭值 THEN
#中插板打开 := FALSE;
#中插板关闭 := TRUE;
#flag[14] := FALSE;
#flag[15] := TRUE;
END_IF;
END_IF;
IF #flag[15] THEN
IF #当前重量 > #小插板关闭值 THEN
#小插板打开 := FALSE;
#小插板关闭 := TRUE;
#flag[15] := FALSE;
#step[4] := TRUE;
#step[3] := FALSE;
END_IF;
END_IF;
END_IF;
请填写推广理由:
分享
只看
楼主