//====================================================================
//==== GEORG Automation ==============================================
//====================================================================
//
// FUNKTION: Retrieve speed from position change of an unit
//--------------------------------------------------------------------
//
// Autor: H.S. Datum: 19.10.2005 Version: 1.0
//--------------------------------------------------------------------
// Updates:
// Datum ! Autor ! Grund
//
//====================================================================
FUNCTION SpeedFrEnc : VOID
TITLE = 'Calculation of device speed from position speed'
VAR_INPUT
Init : BOOL; // Initialize
ActPos : REAL; // [mm][癩 actual position value
PT1 : REAL; // [ms] low pass time
Cycle : INT; // [ms] CPU cycle time
END_VAR
VAR_IN_OUT
OldPos : REAL; // [mm][癩 last value
v : REAL; // [m/s][?s] Speed
END_VAR
VAR_OUTPUT
VOut : REAL; // [mm/s][?s] Speed
END_VAR
VAR_TEMP
v_p : REAL;
v_raw : REAL;
END_VAR
BEGIN
IF Init THEN
OldPos := ActPos;
v := 0.0;
END_IF;
v_p := ActPos - OldPos;//这句话什么意思?
OldPos := ActPos; //这句话什么意思?
// mm/ms deg/ms
v_raw := v_p / Cycle; //这句话什么意思?
// lowpass
v := v + Cycle/PT1 * (v_raw - v );//这句话什么意思?
// only 2 digits
VOut := DINT_TO_REAL (REAL_TO_DINT(v * 100000.0)) / 100.0;//这句话什么意思?
END_FUNCTION