75 lines
3.1 KiB
Plaintext
75 lines
3.1 KiB
Plaintext
FUNCTION_BLOCK "FB_SupervisionRasterSensor"
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
VAR_INPUT
|
|
stInSenRaster : "UDT_Sensor"; // Das Signal das überwacht wird
|
|
xInMotorRun : Bool; // Motor dreht sich
|
|
stInSettings : Struct // Einstellungen
|
|
xInEnableSupervision : Bool := false; // Überwachung aktiviert
|
|
tInDelayMotorRun : Time := T#200ms; // Motor Delay
|
|
tInRasterHigh : Time := T#100ms; // High Signal
|
|
tInRasterLow : Time := T#100ms; // Low Signal
|
|
sInConveyorName : String;
|
|
wInTextListFunctionId : Word;
|
|
wInTextListMessageId : Word;
|
|
END_STRUCT;
|
|
xInErrorQuit : Bool; // Quittieren z.B. Button Reset
|
|
END_VAR
|
|
|
|
VAR_OUTPUT
|
|
xOutErrorRasterSensor : Bool; // Fehler ausgeben
|
|
END_VAR
|
|
|
|
VAR
|
|
tOn_RasterHigh {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit High-Signal
|
|
tOn_RasterLow {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit Low-Signal
|
|
tOnMotorRunningDelay {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Motor Delay Timer
|
|
xErrorRasterSensor : Bool; // Fehler
|
|
END_VAR
|
|
|
|
|
|
BEGIN
|
|
REGION Überwachung Raster Sensor
|
|
|
|
#tOnMotorRunningDelay(IN := #xInMotorRun, // CarouselRun muss delayed benutzt werden, wegen Anfahrzeit vom ETF
|
|
PT := #stInSettings.tInDelayMotorRun);
|
|
|
|
#tOn_RasterHigh(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND #stInSenRaster.xDirectSensor,
|
|
PT := #stInSettings.tInRasterHigh);
|
|
|
|
#tOn_RasterLow(IN := #xInMotorRun AND #tOnMotorRunningDelay.Q AND NOT #stInSenRaster.xDirectSensor,
|
|
PT := #stInSettings.tInRasterLow);
|
|
|
|
IF #tOn_RasterHigh.Q OR #tOn_RasterLow.Q THEN // Wenn einer der beiden Timer abläuft, dann Fehler!
|
|
#xErrorRasterSensor := TRUE;
|
|
END_IF;
|
|
END_REGION
|
|
|
|
REGION Quittieren
|
|
IF #xErrorRasterSensor AND #stInSettings.xInEnableSupervision AND #xInErrorQuit THEN
|
|
#xErrorRasterSensor := FALSE;
|
|
END_IF;
|
|
END_REGION
|
|
|
|
REGION Ausgänge
|
|
#xOutErrorRasterSensor := #xErrorRasterSensor AND #stInSettings.xInEnableSupervision; // Fehler ausgeben, wenn Überwachung aktiviert
|
|
END_REGION
|
|
|
|
(* REGION Monitoring
|
|
#fbMonitoring.stSettings.nErrorType := 1;
|
|
#fbMonitoring.stSettings.xErrLedIfMachineIsOff := TRUE;
|
|
#fbMonitoring.stSettings.xSelfQuit := TRUE;
|
|
#fbMonitoring.stSettings.tDelay := T#1s;
|
|
#fbMonitoring(sInFctnName := 'Rastersensorueberwachung',
|
|
sInPrefix := #stInSettings.sInConveyorName,
|
|
wInTextListId_Function := #stInSettings.wInTextListFunctionId,
|
|
wInTextListId_Message := #stInSettings.wInTextListMessageId,
|
|
sInSuffix := #stInSenRaster.sName,
|
|
InOutMachineState := "DB_MachineGlobal".stStateMain,
|
|
xInQuitError := "DB_MachineGlobal".stStateMain.xQuitError,
|
|
xInSignal := NOT #xErrorRasterSensor,
|
|
sInAlarmMessage := 'Rastersensorueberwachung ausgeloest');
|
|
END_REGION *)
|
|
END_FUNCTION_BLOCK
|
|
|