Untitled

 avatar
unknown
plain_text
a year ago
755 B
2
Indexable
FUNCTION_BLOCK PumpControl
VAR_INPUT
			PStart:BOOL;
			PStop: BOOL;
			PFail:BOOL;
END_VAR

VAR_OUTPUT
			PRun:BOOL;
			PTrip:BOOL;
			ThisObject: POINTER TO PumpControl;
END_VAR

VAR 
	prevPStart:BOOL;
	prevPStop:BOOL;
	prevPtrip: BOOL;
	ready:BOOL;
END_VAR

ThisObject:=THIS;

IF prevPtrip THEN 
    PTrip := FALSE;
END_IF

IF ThisObject^.PStart AND NOT prevPStart AND NOT ThisObject^.PFail THEN
    StartPump();
ELSIF ThisObject^.PFail THEN
    PTrip := TRUE;
END_IF

IF ThisObject^.PStop AND NOT prevPStop THEN
    StopPump();
END_IF

prevPStart := ThisObject^.PStart;
prevPStop := ThisObject^.PStop;
prevPtrip := ThisObject^.PTrip;

#StartPump
ThisObject^.PRun:=TRUE;

#StopPump
ThisObject^.PRun:=FALSE;
Leave a Comment