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

