VAR_INPUT
Start: BOOL; //Start simulation command
RlsFwd: BOOL; //Release forward
RlsBwd: BOOL; //Release backward
Speed: REAL; //Speed Bridle [m/min]
Stretch: REAL; //Stretching [%]
EncIncMm: REAL; //Encoder incremente per mm
EncBits: INT; //Encoder bits (24 for TR format)
END_VAR
VAR_OUTPUT
SpeedOut: REAL; //Speed Bridle included stretching [m/min]
END_VAR
VAR_IN_OUT
EncValue: DINT; //Speed Bridle included stretching [m/min]
END_VAR
VAR_TEMP
tStart: BOOL;
i: INT;
incMax: DINT;
END_VAR
VAR
LAST_TIME : REAL;
ACTUAL_TIME : REAL;
n : INT;
CycleTime: REAL; //Last PLC cycle time
END_VAR
BEGIN
tStart:= Start AND ((RlsFwd AND Speed > 0) OR (RlsBwd AND Speed < 0));
IF tStart THEN
SpeedOut:= Speed *1.1
ELSE
SpeedOut:= 0.0;
END_IF;
IF tStart = FALSE THEN
n := 0;
ELSE
//First Integral Cyclus / Erster Integral-Zyklus
IF n = 0 THEN
ACTUAL_TIME := TIME_TO_DINT(TIME_TCK());
LAST_TIME := ACTUAL_TIME;
n:=1;
ELSE
ACTUAL_TIME := TIME_TO_DINT(TIME_TCK());
IF ACTUAL_TIME < LAST_TIME THEN
CycleTime := ACTUAL_TIME - LAST_TIME + 2147483647(加上该数值的原因?);
ELSE
CycleTime := ACTUAL_TIME - LAST_TIME;
END_IF;
LAST_TIME := ACTUAL_TIME;
END_IF;
END_IF;