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