P2_Stat

Return to top



(**********************************)
(* First copy Inputs to Outputs  *)
(**********************************)

P1StC:= xP1SC;
P2StC:= xP2SC;
P1SLH:= xP1SH;
P2SLH:= xP2SH;
P1CRT:= xP1CR;
P2CRT:= xP2CR;
P1TRT:= xP1TR;
P2TRT:= xP2TR;
RTCHr:= xRTCHr;
RTCLH:= xRTCLH;

(******************************)
(* Accumulate Pump Starts  *)
(******************************)

(* Pump 1 Starts *)
IF (P1Running AND NOT P1Running_prev) THEN 
    P1StC := xP1SC + 1;
END_IF; 

(* Pump 2 Starts *)
IF (P2Running AND NOT P2Running_prev) THEN 
    P2StC := xP2SC + 1;
END_IF; 

(* Rollover Pump Starts every hour *)
IF xRTCHr <> xRTCLH THEN 
    P1SLH := xP1SC;
    P1StC := 0;
    P2SLH := xP2SC;
    P2StC := 0;
    RTCLH:= xRTCHr;
END_IF; 


(*************************************)
(* Accumulate Runtime Statistics  *)
(*************************************)
IF RTCSecs_prev > RTCSecs THEN
    SecondsPassed := RTCSecs + (60 - RTCSecs_prev);
ELSE    
    SecondsPassed := RTCSecs - RTCSecs_prev;
END_IF;

(* Pump 1 Runtime *)
IF (P1Running) THEN 
    P1CRT := xP1CR + SecondsPassed;
    P1TRT := xP1TR + SecondsPassed;
ELSE 
    P1CRT := 0;
END_IF; 

(* Pump 2 Runtime *)
IF (P2Running) THEN 
    P2CRT := xP2CR + SecondsPassed;
    P2TRT := xP2TR + SecondsPassed;
ELSE 
    P2CRT := 0;
END_IF; 



(********************************************)
(* Update previous values for next scan *)
(********************************************)

P1Running_prev := P1Running;
P2Running_prev := P2Running;
RTCSecs_prev := RTCSecs;

P1StC
xP1SC
P2StC
xP2SC
P1SLH
xP1SH
P2SLH
xP2SH
P1CRT
xP1CR
P2CRT
xP2CR
P1TRT
xP1TR
P2TRT
xP2TR
RTCHr
xRTCHr
RTCLH
xRTCLH
P1Running
P1Running_prev
P2Running
P2Running_prev
RTCSecs_prev
RTCSecs
SecondsPassed

Return to top