恭喜,你发布的帖子
发布于 2021-05-17 22:57:02
3楼
FUNCTION_BLOCK FB10
know_how_protect
(*我想实现设备运行24小时后进行反洗,从而实现累计到24小时后反洗。
思路 最简单一个 ,当启动条件满足,则首先正转启动,当启动时间累积超过24 小时的瞬间,则反转启动,正转停止,当启动时间超过48 结束一个周期*)
CONST
unit:=60; //换算率
END_CONST
VAR
Impls_1Sec_Aux:BOOL; Impls_1Sec:BOOL; pos1,pos2,pos3:BOOL; pos4,pos5:bool;
END_VAR
VAR_INPUT
Input_Condition:BOOL:=false; FP_1Sec:BOOL; reset:BOOL;
END_VAR
VAR_OUTPUT
act_second:INT:=0; act_min:INT:=0; act_hour:INT:=0;forward,reversal:bool; clear:bool;
END_VAR
Impls_1Sec:= FP_1Sec AND (NOT Impls_1Sec_Aux);
Impls_1Sec_Aux:= FP_1Sec;
IF NOT (reset OR clear) THEN
IF Input_Condition AND Impls_1Sec AND NOT pos1 THEN
act_second:= act_second + 1; pos1:=true; ELSE pos1:=false; END_IF;
IF (act_second >= unit) AND NOT pos2 THEN
act_min:= act_min + 1; act_second:=0; pos2:=true; ELSE pos2:=false; END_IF;
IF (act_min >= unit) AND NOT pos3 THEN
act_hour:=act_hour + 1; act_min:=0; pos3:=true; ELSE pos3:=false; END_IF;
ELSE act_second:=0; act_min:=0; act_hour:=0; END_IF;
IF (act_hour < 24) AND NOT pos5 AND NOT forwad THEN
forwad:= true; reversal:= FALSE; pos5:=true; ELSE pos5:=false; END_IF;
IF forwad AND (act_hour >=24) AND NOT pos4 THEN
reversal:= TRUE; forwad:= false; pos4:=true; ELSE pos4:=false; END_IF;
IF NOT Input_Condition THEN
reversal:= FALSE; pos4:=false; forwad:= false; pos5:=false; END_IF;
IF act_hour >=48 THEN clear:=true; ELSE clear:=false; END_IF;
END_FUNCTION_BLOCK
请填写推广理由:
分享
只看
楼主