44 lines
1.7 KiB
Plaintext
44 lines
1.7 KiB
Plaintext
FUNCTION_BLOCK "FB_VarioFingerMonitoring"
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
VAR_INPUT
|
|
stInSenFinger : "UDT_Sensor"; // Das zu überwachende Fingerabfrage-Signal
|
|
xInMotorRun : Bool; // Vario an
|
|
stInSettings : "UDT_SettingsVarioFingerMonitoring"; // Parameter Einstellungen
|
|
END_VAR
|
|
|
|
VAR_OUTPUT
|
|
xOutErrorSignal : Bool; // Fehler Ausgang
|
|
END_VAR
|
|
|
|
VAR
|
|
tOn_SignalHigh {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Einschaltverzögerung High Signal
|
|
tOn_SignalLow {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Einschaltverzögerung Low Signal
|
|
tOnMotorRunningDelay {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Einschaltverzögerung Vario an
|
|
xErrorSignal : Bool; // Fehler
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
REGION Überwachung Raster Sensor
|
|
|
|
#tOnMotorRunningDelay(IN := #xInMotorRun, // CarouselRun muss delayed benutzt werden, wegen Anfahrzeit vom ETF
|
|
PT := #stInSettings.tDelayMotorRun);
|
|
|
|
#tOn_SignalHigh(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND #stInSenFinger.xDirectSensor,
|
|
PT := #stInSettings.tSignalHigh);
|
|
|
|
#tOn_SignalLow(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND NOT #stInSenFinger.xDirectSensor,
|
|
PT := #stInSettings.tSignalLow);
|
|
|
|
#xErrorSignal := #tOn_SignalHigh.Q OR #tOn_SignalLow.Q; // Wenn einer der beiden Timer abläuft, dann Fehler!
|
|
END_REGION
|
|
|
|
REGION Ausgänge
|
|
|
|
#xOutErrorSignal := #xErrorSignal AND #stInSettings.xEnableSupervision; // Fehler ausgeben, wenn Überwachung aktiviert
|
|
|
|
END_REGION
|
|
END_FUNCTION_BLOCK
|
|
|