Cambio de formato de exportacion a S7dcl.
This commit is contained in:
-204
@@ -1,204 +0,0 @@
|
||||
DATA_BLOCK "DB1_SYS"
|
||||
TITLE = Datos de sistema
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
AUTHOR : ABH
|
||||
VERSION : 0.1
|
||||
NON_RETAIN
|
||||
VAR
|
||||
ON : Bool; // Siempre a 1
|
||||
OFF : Bool; // Siempre a 0
|
||||
SIM : Bool; // Sistema en simulacion
|
||||
ACK : Bool; // Acuse general de errores
|
||||
ARRANQUE : Bool; // Marca de primer arranque del sistema
|
||||
Pulso100ms : Bool; // Pulso 100 ms
|
||||
Pulso1seg : Bool; // Pulso 1 segundo
|
||||
Pulso2seg : Bool; // Pulso 2 segundo
|
||||
Pulso5seg : Bool; // Pulso 5 segundos
|
||||
Pulso1min : Bool; // Pulso 1 minuto
|
||||
Pulso1h : Bool; // Pulso 1 hora
|
||||
FlipFlop1seg : Bool; // Flip flop 1 seg ON - 1 seg OFF
|
||||
FlipFlop2seg : Bool; // Flip flop 2 seg ON - 2 seg OFF
|
||||
FlipFlop5seg : Bool; // Flip flop 5 seg ON - 5 seg OFF
|
||||
ResetEntidades { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool; // Reset todas las entidades
|
||||
SincronizarFecha : Bool; // Orden sincronizacion fecha desde sistema superior
|
||||
WatchDog : Int; // Watchdog para comunicaciones
|
||||
Pulsador : Struct
|
||||
EscribirFechaHora { S7_SetPoint := 'False'} : "UDT_ZC_PULSADOR"; // Pulsador cambio de fecha y hora desde hmi
|
||||
Ack { S7_SetPoint := 'False'} : Array[0..9] of "UDT_ZC_PULSADOR"; // Pulsador acuse general de errores
|
||||
END_STRUCT;
|
||||
FechaHoraActual {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Fecha y hora actual del sistema
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
FechaHoraNuevaManual {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Fecha y hora nueva escrita manualmente desde HMI
|
||||
FechaHoraNuevaAuto {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Fecha y hora nueva escrita automaticamente
|
||||
END_VAR
|
||||
VAR
|
||||
TiempoCiclo : Real; // Tiempo de ciclo del PLC
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
Usuario : Struct
|
||||
Seleccion : Array[0..9] of Struct
|
||||
Orden : Bool;
|
||||
Usuario : String[25];
|
||||
END_STRUCT;
|
||||
Actual : String[25]; // Usuario actual
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
VAR
|
||||
RedProfinet : Array[0..1023] of Bool;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
Aux : Struct
|
||||
P_Trig_Pulso100ms : Bool; // P_TRIG Pulso 100 ms
|
||||
P_Trig_Pulso1Seg : Bool; // P_TRIG Pulso 1 segundo
|
||||
Contador2seg : USInt; // Aux. Contador 2 segundos
|
||||
Contador5seg : USInt; // Aux. Contador 5 segundos
|
||||
Contador1min : USInt; // Aux. Contador 1 minuto
|
||||
Contador1h : UInt; // Aux. Contador 1 hora
|
||||
auxRuntime : LReal; // Aux. Runtime
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
ON := TRUE;
|
||||
OFF := FALSE;
|
||||
SIM := FALSE;
|
||||
ACK := FALSE;
|
||||
ARRANQUE := FALSE;
|
||||
Pulso100ms := FALSE;
|
||||
Pulso1seg := FALSE;
|
||||
Pulso2seg := FALSE;
|
||||
Pulso5seg := FALSE;
|
||||
Pulso1min := FALSE;
|
||||
Pulso1h := FALSE;
|
||||
FlipFlop1seg := TRUE;
|
||||
FlipFlop2seg := TRUE;
|
||||
FlipFlop5seg := TRUE;
|
||||
ResetEntidades := FALSE;
|
||||
SincronizarFecha := FALSE;
|
||||
Pulsador.EscribirFechaHora.Hmi := FALSE;
|
||||
Pulsador.EscribirFechaHora.Plc := FALSE;
|
||||
Pulsador.EscribirFechaHora.Permiso := TRUE;
|
||||
Pulsador.EscribirFechaHora.Visibilidad := TRUE;
|
||||
Pulsador.EscribirFechaHora.AuxPulso := FALSE;
|
||||
Pulsador.EscribirFechaHora.AuxTiempo := 0;
|
||||
Pulsador.Ack[0].Hmi := FALSE;
|
||||
Pulsador.Ack[0].Plc := FALSE;
|
||||
Pulsador.Ack[0].Permiso := TRUE;
|
||||
Pulsador.Ack[0].Visibilidad := FALSE;
|
||||
Pulsador.Ack[0].AuxPulso := FALSE;
|
||||
Pulsador.Ack[0].AuxTiempo := 0;
|
||||
Pulsador.Ack[1].Hmi := FALSE;
|
||||
Pulsador.Ack[1].Plc := FALSE;
|
||||
Pulsador.Ack[1].Permiso := TRUE;
|
||||
Pulsador.Ack[1].Visibilidad := FALSE;
|
||||
Pulsador.Ack[1].AuxPulso := FALSE;
|
||||
Pulsador.Ack[1].AuxTiempo := 0;
|
||||
Pulsador.Ack[2].Hmi := FALSE;
|
||||
Pulsador.Ack[2].Plc := FALSE;
|
||||
Pulsador.Ack[2].Permiso := TRUE;
|
||||
Pulsador.Ack[2].Visibilidad := FALSE;
|
||||
Pulsador.Ack[2].AuxPulso := FALSE;
|
||||
Pulsador.Ack[2].AuxTiempo := 0;
|
||||
Pulsador.Ack[3].Hmi := FALSE;
|
||||
Pulsador.Ack[3].Plc := FALSE;
|
||||
Pulsador.Ack[3].Permiso := TRUE;
|
||||
Pulsador.Ack[3].Visibilidad := FALSE;
|
||||
Pulsador.Ack[3].AuxPulso := FALSE;
|
||||
Pulsador.Ack[3].AuxTiempo := 0;
|
||||
Pulsador.Ack[4].Hmi := FALSE;
|
||||
Pulsador.Ack[4].Plc := FALSE;
|
||||
Pulsador.Ack[4].Permiso := TRUE;
|
||||
Pulsador.Ack[4].Visibilidad := FALSE;
|
||||
Pulsador.Ack[4].AuxPulso := FALSE;
|
||||
Pulsador.Ack[4].AuxTiempo := 0;
|
||||
Pulsador.Ack[5].Hmi := FALSE;
|
||||
Pulsador.Ack[5].Plc := FALSE;
|
||||
Pulsador.Ack[5].Permiso := TRUE;
|
||||
Pulsador.Ack[5].Visibilidad := FALSE;
|
||||
Pulsador.Ack[5].AuxPulso := FALSE;
|
||||
Pulsador.Ack[5].AuxTiempo := 0;
|
||||
Pulsador.Ack[6].Hmi := FALSE;
|
||||
Pulsador.Ack[6].Plc := FALSE;
|
||||
Pulsador.Ack[6].Permiso := TRUE;
|
||||
Pulsador.Ack[6].Visibilidad := FALSE;
|
||||
Pulsador.Ack[6].AuxPulso := FALSE;
|
||||
Pulsador.Ack[6].AuxTiempo := 0;
|
||||
Pulsador.Ack[7].Hmi := FALSE;
|
||||
Pulsador.Ack[7].Plc := FALSE;
|
||||
Pulsador.Ack[7].Permiso := TRUE;
|
||||
Pulsador.Ack[7].Visibilidad := FALSE;
|
||||
Pulsador.Ack[7].AuxPulso := FALSE;
|
||||
Pulsador.Ack[7].AuxTiempo := 0;
|
||||
Pulsador.Ack[8].Hmi := FALSE;
|
||||
Pulsador.Ack[8].Plc := FALSE;
|
||||
Pulsador.Ack[8].Permiso := TRUE;
|
||||
Pulsador.Ack[8].Visibilidad := FALSE;
|
||||
Pulsador.Ack[8].AuxPulso := FALSE;
|
||||
Pulsador.Ack[8].AuxTiempo := 0;
|
||||
Pulsador.Ack[9].Hmi := FALSE;
|
||||
Pulsador.Ack[9].Plc := FALSE;
|
||||
Pulsador.Ack[9].Permiso := TRUE;
|
||||
Pulsador.Ack[9].Visibilidad := FALSE;
|
||||
Pulsador.Ack[9].AuxPulso := FALSE;
|
||||
Pulsador.Ack[9].AuxTiempo := 0;
|
||||
FechaHoraActual.YEAR := 2025;
|
||||
FechaHoraActual.MONTH := 9;
|
||||
FechaHoraActual.DAY := 18;
|
||||
FechaHoraActual.WEEKDAY := 5;
|
||||
FechaHoraActual.HOUR := 19;
|
||||
FechaHoraActual.MINUTE := 1;
|
||||
FechaHoraActual.SECOND := 56;
|
||||
FechaHoraActual.NANOSECOND := 550304800;
|
||||
FechaHoraActual := DTL#2025-09-18-19:01:56.550304800;
|
||||
FechaHoraNuevaManual.YEAR := 2026;
|
||||
FechaHoraNuevaManual.MONTH := 3;
|
||||
FechaHoraNuevaManual.DAY := 26;
|
||||
FechaHoraNuevaManual.WEEKDAY := 5;
|
||||
FechaHoraNuevaManual.HOUR := 11;
|
||||
FechaHoraNuevaManual.MINUTE := 31;
|
||||
FechaHoraNuevaManual.SECOND := 44;
|
||||
FechaHoraNuevaManual.NANOSECOND := 10900982;
|
||||
FechaHoraNuevaManual := DTL#2026-03-26-11:31:44.010900982;
|
||||
FechaHoraNuevaAuto.YEAR := 2026;
|
||||
FechaHoraNuevaAuto.MONTH := 3;
|
||||
FechaHoraNuevaAuto.DAY := 26;
|
||||
FechaHoraNuevaAuto.WEEKDAY := 5;
|
||||
FechaHoraNuevaAuto.HOUR := 11;
|
||||
FechaHoraNuevaAuto.MINUTE := 31;
|
||||
FechaHoraNuevaAuto.SECOND := 44;
|
||||
FechaHoraNuevaAuto.NANOSECOND := 10900982;
|
||||
FechaHoraNuevaAuto := DTL#2026-03-26-11:31:44.010900982;
|
||||
TiempoCiclo := 28.34702;
|
||||
Usuario.Seleccion[0].Orden := FALSE;
|
||||
Usuario.Seleccion[0].Usuario := 'sive';
|
||||
Usuario.Seleccion[1].Orden := FALSE;
|
||||
Usuario.Seleccion[1].Usuario := '';
|
||||
Usuario.Seleccion[2].Orden := FALSE;
|
||||
Usuario.Seleccion[2].Usuario := '';
|
||||
Usuario.Seleccion[3].Orden := FALSE;
|
||||
Usuario.Seleccion[3].Usuario := '';
|
||||
Usuario.Seleccion[4].Orden := FALSE;
|
||||
Usuario.Seleccion[4].Usuario := '';
|
||||
Usuario.Seleccion[5].Orden := FALSE;
|
||||
Usuario.Seleccion[5].Usuario := 's';
|
||||
Usuario.Seleccion[6].Orden := FALSE;
|
||||
Usuario.Seleccion[6].Usuario := '';
|
||||
Usuario.Seleccion[7].Orden := FALSE;
|
||||
Usuario.Seleccion[7].Usuario := '';
|
||||
Usuario.Seleccion[8].Orden := FALSE;
|
||||
Usuario.Seleccion[8].Usuario := '';
|
||||
Usuario.Seleccion[9].Orden := FALSE;
|
||||
Usuario.Seleccion[9].Usuario := '';
|
||||
Usuario.Actual := 's';
|
||||
Aux.P_Trig_Pulso100ms := TRUE;
|
||||
Aux.P_Trig_Pulso1Seg := TRUE;
|
||||
Aux.Contador2seg := 0;
|
||||
Aux.Contador5seg := 0;
|
||||
Aux.Contador1min := 33;
|
||||
Aux.Contador1h := 573;
|
||||
Aux.auxRuntime := 3.12728340475131E-308;
|
||||
|
||||
END_DATA_BLOCK
|
||||
|
||||
+266
@@ -0,0 +1,266 @@
|
||||
{
|
||||
S7_Author := "ABH";
|
||||
S7_BlockNumber := "1";
|
||||
S7_BlockTitle := "MLC_4UZ";
|
||||
S7_Optimized := "TRUE";
|
||||
S7_StandardRetain := "FALSE";
|
||||
S7_Version := "0.1"
|
||||
}
|
||||
DATA_BLOCK DB1_SYS
|
||||
VAR
|
||||
{ S7_MLC := "MLC_Q5" }
|
||||
"ON" : Bool;
|
||||
{ S7_MLC := "MLC_4iT" }
|
||||
OFF : Bool;
|
||||
{ S7_MLC := "MLC_55m" }
|
||||
SIM : Bool;
|
||||
{ S7_MLC := "MLC_5Af" }
|
||||
ACK : Bool;
|
||||
{ S7_MLC := "MLC_52i" }
|
||||
ARRANQUE : Bool;
|
||||
{ S7_MLC := "MLC_3vb" }
|
||||
Pulso100ms : Bool;
|
||||
{ S7_MLC := "MLC_4uy" }
|
||||
Pulso1seg : Bool;
|
||||
{ S7_MLC := "MLC_3Sv" }
|
||||
Pulso2seg : Bool;
|
||||
{ S7_MLC := "MLC_ep" }
|
||||
Pulso5seg : Bool;
|
||||
{ S7_MLC := "MLC_526" }
|
||||
Pulso1min : Bool;
|
||||
{ S7_MLC := "MLC_dF" }
|
||||
Pulso1h : Bool;
|
||||
{ S7_MLC := "MLC_WT" }
|
||||
FlipFlop1seg : Bool;
|
||||
{ S7_MLC := "MLC_Ny" }
|
||||
FlipFlop2seg : Bool;
|
||||
{ S7_MLC := "MLC_55w" }
|
||||
FlipFlop5seg : Bool;
|
||||
{
|
||||
S7_Access := "ReadOnly := External";
|
||||
S7_MLC := "MLC_3dU";
|
||||
S7_Visibility := "Hidden := External"
|
||||
}
|
||||
ResetEntidades : Bool;
|
||||
{ S7_MLC := "MLC_3pE" }
|
||||
SincronizarFecha : Bool;
|
||||
{ S7_MLC := "MLC_3v5" }
|
||||
WatchDog : Int;
|
||||
Pulsador : STRUCT
|
||||
{
|
||||
S7_MLC := "MLC_3ER";
|
||||
S7_Setpoint := "False"
|
||||
}
|
||||
EscribirFechaHora : _.UDT_ZC_PULSADOR;
|
||||
{
|
||||
S7_MLC := "MLC_4K9";
|
||||
S7_Setpoint := "False"
|
||||
}
|
||||
Ack : Array[0..9] of _.UDT_ZC_PULSADOR;
|
||||
END_STRUCT;
|
||||
{ S7_MLC := "MLC_4Fe" }
|
||||
FechaHoraActual : DTL;
|
||||
END_VAR
|
||||
|
||||
VAR RETAIN
|
||||
{ S7_MLC := "MLC_4QZ" }
|
||||
FechaHoraNuevaManual : DTL;
|
||||
{ S7_MLC := "MLC_gz" }
|
||||
FechaHoraNuevaAuto : DTL;
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
{ S7_MLC := "MLC_4Bs" }
|
||||
TiempoCiclo : Real;
|
||||
END_VAR
|
||||
|
||||
VAR RETAIN
|
||||
Usuario : STRUCT
|
||||
Seleccion : Array[0..9] of STRUCT
|
||||
Orden : Bool;
|
||||
Usuario : String[25];
|
||||
END_STRUCT;
|
||||
{ S7_MLC := "MLC_3JT" }
|
||||
Actual : String[25];
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
RedProfinet : Array[0..1023] of Bool;
|
||||
END_VAR
|
||||
|
||||
VAR RETAIN
|
||||
Aux : STRUCT
|
||||
{ S7_MLC := "MLC_45G" }
|
||||
P_Trig_Pulso100ms : Bool;
|
||||
{ S7_MLC := "MLC_3zd" }
|
||||
P_Trig_Pulso1Seg : Bool;
|
||||
{ S7_MLC := "MLC_4V6" }
|
||||
Contador2seg : USInt;
|
||||
{ S7_MLC := "MLC_4r4" }
|
||||
Contador5seg : USInt;
|
||||
{ S7_MLC := "MLC_Yr" }
|
||||
Contador1min : USInt;
|
||||
{ S7_MLC := "MLC_3XQ" }
|
||||
Contador1h : UInt;
|
||||
{ S7_MLC := "MLC_5C3" }
|
||||
auxRuntime : LReal;
|
||||
END_STRUCT;
|
||||
END_VAR
|
||||
|
||||
"ON" := TRUE;
|
||||
OFF := FALSE;
|
||||
SIM := FALSE;
|
||||
ACK := FALSE;
|
||||
ARRANQUE := FALSE;
|
||||
Pulso100ms := FALSE;
|
||||
Pulso1seg := FALSE;
|
||||
Pulso2seg := FALSE;
|
||||
Pulso5seg := FALSE;
|
||||
Pulso1min := FALSE;
|
||||
Pulso1h := FALSE;
|
||||
FlipFlop1seg := TRUE;
|
||||
FlipFlop2seg := TRUE;
|
||||
FlipFlop5seg := TRUE;
|
||||
ResetEntidades := FALSE;
|
||||
SincronizarFecha := FALSE;
|
||||
Pulsador.EscribirFechaHora.Hmi := FALSE;
|
||||
Pulsador.EscribirFechaHora.Plc := FALSE;
|
||||
Pulsador.EscribirFechaHora.Permiso := TRUE;
|
||||
Pulsador.EscribirFechaHora.Visibilidad := TRUE;
|
||||
Pulsador.EscribirFechaHora.AuxPulso := FALSE;
|
||||
Pulsador.EscribirFechaHora.AuxTiempo := 0;
|
||||
Pulsador.Ack[0].Hmi := FALSE;
|
||||
Pulsador.Ack[0].Plc := FALSE;
|
||||
Pulsador.Ack[0].Permiso := TRUE;
|
||||
Pulsador.Ack[0].Visibilidad := FALSE;
|
||||
Pulsador.Ack[0].AuxPulso := FALSE;
|
||||
Pulsador.Ack[0].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_3Yi" }
|
||||
Pulsador.Ack[0] := ();
|
||||
Pulsador.Ack[1].Hmi := FALSE;
|
||||
Pulsador.Ack[1].Plc := FALSE;
|
||||
Pulsador.Ack[1].Permiso := TRUE;
|
||||
Pulsador.Ack[1].Visibilidad := FALSE;
|
||||
Pulsador.Ack[1].AuxPulso := FALSE;
|
||||
Pulsador.Ack[1].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_44F" }
|
||||
Pulsador.Ack[1] := ();
|
||||
Pulsador.Ack[2].Hmi := FALSE;
|
||||
Pulsador.Ack[2].Plc := FALSE;
|
||||
Pulsador.Ack[2].Permiso := TRUE;
|
||||
Pulsador.Ack[2].Visibilidad := FALSE;
|
||||
Pulsador.Ack[2].AuxPulso := FALSE;
|
||||
Pulsador.Ack[2].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_4tj" }
|
||||
Pulsador.Ack[2] := ();
|
||||
Pulsador.Ack[3].Hmi := FALSE;
|
||||
Pulsador.Ack[3].Plc := FALSE;
|
||||
Pulsador.Ack[3].Permiso := TRUE;
|
||||
Pulsador.Ack[3].Visibilidad := FALSE;
|
||||
Pulsador.Ack[3].AuxPulso := FALSE;
|
||||
Pulsador.Ack[3].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_4s8" }
|
||||
Pulsador.Ack[3] := ();
|
||||
Pulsador.Ack[4].Hmi := FALSE;
|
||||
Pulsador.Ack[4].Plc := FALSE;
|
||||
Pulsador.Ack[4].Permiso := TRUE;
|
||||
Pulsador.Ack[4].Visibilidad := FALSE;
|
||||
Pulsador.Ack[4].AuxPulso := FALSE;
|
||||
Pulsador.Ack[4].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_N4" }
|
||||
Pulsador.Ack[4] := ();
|
||||
Pulsador.Ack[5].Hmi := FALSE;
|
||||
Pulsador.Ack[5].Plc := FALSE;
|
||||
Pulsador.Ack[5].Permiso := TRUE;
|
||||
Pulsador.Ack[5].Visibilidad := FALSE;
|
||||
Pulsador.Ack[5].AuxPulso := FALSE;
|
||||
Pulsador.Ack[5].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_3Nv" }
|
||||
Pulsador.Ack[5] := ();
|
||||
Pulsador.Ack[6].Hmi := FALSE;
|
||||
Pulsador.Ack[6].Plc := FALSE;
|
||||
Pulsador.Ack[6].Permiso := TRUE;
|
||||
Pulsador.Ack[6].Visibilidad := FALSE;
|
||||
Pulsador.Ack[6].AuxPulso := FALSE;
|
||||
Pulsador.Ack[6].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_575" }
|
||||
Pulsador.Ack[6] := ();
|
||||
Pulsador.Ack[7].Hmi := FALSE;
|
||||
Pulsador.Ack[7].Plc := FALSE;
|
||||
Pulsador.Ack[7].Permiso := TRUE;
|
||||
Pulsador.Ack[7].Visibilidad := FALSE;
|
||||
Pulsador.Ack[7].AuxPulso := FALSE;
|
||||
Pulsador.Ack[7].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_es" }
|
||||
Pulsador.Ack[7] := ();
|
||||
Pulsador.Ack[8].Hmi := FALSE;
|
||||
Pulsador.Ack[8].Plc := FALSE;
|
||||
Pulsador.Ack[8].Permiso := TRUE;
|
||||
Pulsador.Ack[8].Visibilidad := FALSE;
|
||||
Pulsador.Ack[8].AuxPulso := FALSE;
|
||||
Pulsador.Ack[8].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_4N5" }
|
||||
Pulsador.Ack[8] := ();
|
||||
Pulsador.Ack[9].Hmi := FALSE;
|
||||
Pulsador.Ack[9].Plc := FALSE;
|
||||
Pulsador.Ack[9].Permiso := TRUE;
|
||||
Pulsador.Ack[9].Visibilidad := FALSE;
|
||||
Pulsador.Ack[9].AuxPulso := FALSE;
|
||||
Pulsador.Ack[9].AuxTiempo := 0;
|
||||
{ S7_MLC := "MLC_3jD" }
|
||||
Pulsador.Ack[9] := ();
|
||||
FechaHoraActual := DTL#2025-09-18-19:01:56.550304800;
|
||||
FechaHoraNuevaManual := DTL#2026-03-26-11:31:44.010900982;
|
||||
FechaHoraNuevaAuto := DTL#2026-03-26-11:31:44.010900982;
|
||||
TiempoCiclo := 28.34702;
|
||||
Usuario.Seleccion[0].Orden := FALSE;
|
||||
Usuario.Seleccion[0].Usuario := 'sive';
|
||||
{ S7_MLC := "MLC_37Y" }
|
||||
Usuario.Seleccion[0] := ();
|
||||
Usuario.Seleccion[1].Orden := FALSE;
|
||||
Usuario.Seleccion[1].Usuario := '';
|
||||
{ S7_MLC := "MLC_58D" }
|
||||
Usuario.Seleccion[1] := ();
|
||||
Usuario.Seleccion[2].Orden := FALSE;
|
||||
Usuario.Seleccion[2].Usuario := '';
|
||||
{ S7_MLC := "MLC_RC" }
|
||||
Usuario.Seleccion[2] := ();
|
||||
Usuario.Seleccion[3].Orden := FALSE;
|
||||
Usuario.Seleccion[3].Usuario := '';
|
||||
{ S7_MLC := "MLC_jP" }
|
||||
Usuario.Seleccion[3] := ();
|
||||
Usuario.Seleccion[4].Orden := FALSE;
|
||||
Usuario.Seleccion[4].Usuario := '';
|
||||
{ S7_MLC := "MLC_3Xk" }
|
||||
Usuario.Seleccion[4] := ();
|
||||
Usuario.Seleccion[5].Orden := FALSE;
|
||||
Usuario.Seleccion[5].Usuario := 's';
|
||||
{ S7_MLC := "MLC_3hH" }
|
||||
Usuario.Seleccion[5] := ();
|
||||
Usuario.Seleccion[6].Orden := FALSE;
|
||||
Usuario.Seleccion[6].Usuario := '';
|
||||
{ S7_MLC := "MLC_uK" }
|
||||
Usuario.Seleccion[6] := ();
|
||||
Usuario.Seleccion[7].Orden := FALSE;
|
||||
Usuario.Seleccion[7].Usuario := '';
|
||||
{ S7_MLC := "MLC_56U" }
|
||||
Usuario.Seleccion[7] := ();
|
||||
Usuario.Seleccion[8].Orden := FALSE;
|
||||
Usuario.Seleccion[8].Usuario := '';
|
||||
{ S7_MLC := "MLC_48z" }
|
||||
Usuario.Seleccion[8] := ();
|
||||
Usuario.Seleccion[9].Orden := FALSE;
|
||||
Usuario.Seleccion[9].Usuario := '';
|
||||
{ S7_MLC := "MLC_X5" }
|
||||
Usuario.Seleccion[9] := ();
|
||||
Usuario.Actual := 's';
|
||||
Aux.P_Trig_Pulso100ms := TRUE;
|
||||
Aux.P_Trig_Pulso1Seg := TRUE;
|
||||
Aux.Contador2seg := 0;
|
||||
Aux.Contador5seg := 0;
|
||||
Aux.Contador1min := 33;
|
||||
Aux.Contador1h := 573;
|
||||
Aux.auxRuntime := 3.12728340475131E-308;
|
||||
|
||||
END_DATA_BLOCK
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
MultiLingualTexts:
|
||||
- id: MLC_4UZ
|
||||
es-ES: Datos de sistema
|
||||
- id: MLC_Q5
|
||||
es-ES: Siempre a 1
|
||||
- id: MLC_4iT
|
||||
es-ES: Siempre a 0
|
||||
- id: MLC_55m
|
||||
es-ES: Sistema en simulacion
|
||||
- id: MLC_5Af
|
||||
es-ES: Acuse general de errores
|
||||
- id: MLC_52i
|
||||
es-ES: Marca de primer arranque del sistema
|
||||
- id: MLC_3vb
|
||||
es-ES: Pulso 100 ms
|
||||
- id: MLC_4uy
|
||||
es-ES: Pulso 1 segundo
|
||||
- id: MLC_3Sv
|
||||
es-ES: Pulso 2 segundo
|
||||
- id: MLC_ep
|
||||
es-ES: Pulso 5 segundos
|
||||
- id: MLC_526
|
||||
es-ES: Pulso 1 minuto
|
||||
- id: MLC_dF
|
||||
es-ES: Pulso 1 hora
|
||||
- id: MLC_WT
|
||||
es-ES: Flip flop 1 seg ON - 1 seg OFF
|
||||
- id: MLC_Ny
|
||||
es-ES: Flip flop 2 seg ON - 2 seg OFF
|
||||
- id: MLC_55w
|
||||
es-ES: Flip flop 5 seg ON - 5 seg OFF
|
||||
- id: MLC_3dU
|
||||
es-ES: Reset todas las entidades
|
||||
- id: MLC_3pE
|
||||
es-ES: Orden sincronizacion fecha desde sistema superior
|
||||
- id: MLC_3v5
|
||||
es-ES: Watchdog para comunicaciones
|
||||
- id: MLC_3ER
|
||||
es-ES: Pulsador cambio de fecha y hora desde hmi
|
||||
- id: MLC_4K9
|
||||
es-ES: Pulsador acuse general de errores
|
||||
- id: MLC_3Yi
|
||||
es-ES: Scada 01
|
||||
- id: MLC_44F
|
||||
es-ES: Scada 02
|
||||
- id: MLC_4tj
|
||||
es-ES: Hmi zona 2 Pasto
|
||||
- id: MLC_4s8
|
||||
es-ES: Hmi zona 1 recepcion
|
||||
- id: MLC_N4
|
||||
es-ES: Hmi zona 3 Fermentacion
|
||||
- id: MLC_3Nv
|
||||
es-ES: Hmi zona 4 CIP 1
|
||||
- id: MLC_575
|
||||
es-ES: Hmi zona 5 CIP 2
|
||||
- id: MLC_es
|
||||
es-ES: '-'
|
||||
- id: MLC_4N5
|
||||
es-ES: '-'
|
||||
- id: MLC_3jD
|
||||
es-ES: '-'
|
||||
- id: MLC_4Fe
|
||||
es-ES: Fecha y hora actual del sistema
|
||||
- id: MLC_4QZ
|
||||
es-ES: Fecha y hora nueva escrita manualmente desde HMI
|
||||
- id: MLC_gz
|
||||
es-ES: Fecha y hora nueva escrita automaticamente
|
||||
- id: MLC_4Bs
|
||||
es-ES: Tiempo de ciclo del PLC
|
||||
- id: MLC_37Y
|
||||
es-ES: Scada 01
|
||||
- id: MLC_58D
|
||||
es-ES: Scada 02
|
||||
- id: MLC_RC
|
||||
es-ES: Hmi zona 2 Pasto
|
||||
- id: MLC_jP
|
||||
es-ES: Hmi zona 1 recepcion
|
||||
- id: MLC_3Xk
|
||||
es-ES: Hmi zona 3 Fermentacion
|
||||
- id: MLC_3hH
|
||||
es-ES: Hmi zona 4 CIP 1
|
||||
- id: MLC_uK
|
||||
es-ES: Hmi zona 5 CIP 2
|
||||
- id: MLC_56U
|
||||
es-ES: '-'
|
||||
- id: MLC_48z
|
||||
es-ES: '-'
|
||||
- id: MLC_X5
|
||||
es-ES: '-'
|
||||
- id: MLC_3JT
|
||||
es-ES: Usuario actual
|
||||
- id: MLC_45G
|
||||
es-ES: P_TRIG Pulso 100 ms
|
||||
- id: MLC_3zd
|
||||
es-ES: P_TRIG Pulso 1 segundo
|
||||
- id: MLC_4V6
|
||||
es-ES: Aux. Contador 2 segundos
|
||||
- id: MLC_4r4
|
||||
es-ES: Aux. Contador 5 segundos
|
||||
- id: MLC_Yr
|
||||
es-ES: Aux. Contador 1 minuto
|
||||
- id: MLC_3XQ
|
||||
es-ES: Aux. Contador 1 hora
|
||||
- id: MLC_5C3
|
||||
es-ES: Aux. Runtime
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
DATA_BLOCK "DB3_CHECKSUM"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
NON_RETAIN
|
||||
"FB3_ZC_CHECKSUM"
|
||||
|
||||
BEGIN
|
||||
|
||||
END_DATA_BLOCK
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
{
|
||||
S7_BlockNumber := "3";
|
||||
S7_Optimized := "TRUE";
|
||||
S7_StandardRetain := "FALSE";
|
||||
S7_Version := "0.1"
|
||||
}
|
||||
DATA_BLOCK DB3_CHECKSUM : FB3_ZC_CHECKSUM
|
||||
END_DATA_BLOCK
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
{
|
||||
S7_BlockNumber := "3";
|
||||
S7_EditorMode := "SCL";
|
||||
S7_IECCheck := "TRUE";
|
||||
S7_Optimized := "TRUE";
|
||||
S7_Version := "0.1"
|
||||
}
|
||||
FUNCTION_BLOCK "FB3_ZC_CHECKSUM"
|
||||
VAR_INPUT
|
||||
Comprobar : Bool;
|
||||
Copiar : Bool;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
CheckSumOK : Bool;
|
||||
END_VAR
|
||||
VAR
|
||||
{
|
||||
S7_Access := "ReadOnly := External";
|
||||
S7_Setpoint := "False";
|
||||
S7_Visibility := "Hidden := External"
|
||||
}
|
||||
s_GetCheckSum : GetChecksum;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
{
|
||||
S7_Access := "ReadOnly := External";
|
||||
S7_Visibility := "Hidden := External"
|
||||
}
|
||||
s_EstadoCheckSum : Array[0..7] of Byte;
|
||||
{
|
||||
S7_Access := "ReadOnly := External";
|
||||
S7_Visibility := "Hidden := External"
|
||||
}
|
||||
s_CheckSumFabrica : Array[0..7] of Byte;
|
||||
END_VAR
|
||||
VAR
|
||||
{
|
||||
S7_Access := "ReadOnly := External";
|
||||
S7_Visibility := "Hidden := External"
|
||||
}
|
||||
s_Comprobar : Bool;
|
||||
{
|
||||
S7_Access := "ReadOnly := External";
|
||||
S7_Visibility := "Hidden := External"
|
||||
}
|
||||
s_OldComprobar : Bool;
|
||||
END_VAR
|
||||
|
||||
{ S7_Language := "SCL" }
|
||||
NETWORK
|
||||
REGION DESCRIPCION
|
||||
//=======================================================================
|
||||
// (C)Copyright ZeusControl 2020 - 2026
|
||||
//=======================================================================
|
||||
(*
|
||||
### Información del Sistema
|
||||
| Hardware Compatible | Entorno de Ingeniería |
|
||||
|---------------------|-----------------------|
|
||||
| PLC serie 1200/1500 | TIA Portal 18 |
|
||||
|
||||
---
|
||||
### Descripción Funcional
|
||||
El bloque `FB3_CHECKSUM` implementa la lectura del checksum del programa actual del PLC y su comparación con el checksum de fábrica, permitiendo detectar modificaciones no autorizadas en el proyecto.
|
||||
|
||||
Funcionalidades principales:
|
||||
- Detección de flanco ascendente en la entrada `#Comprobar` para ejecutar la comprobación bajo demanda (modo "pulso"), mediante la variable interna `#s_OldComprobar`.
|
||||
- Lectura del checksum del bloque `Scope:=1` (objeto PLC) con `Range:=0` y `Subrange:=0` (rango completo), invocando la función de sistema `GetChecksum` a través del FB `GetChecksum` y depositando el resultado en `#s_EstadoCheckSum`.
|
||||
- Captura del checksum de fábrica: cuando se activa la entrada `#Copiar`, se copia el checksum actual al valor de referencia `#s_CheckSumFabrica`, operación que se realiza una sola vez durante la puesta en marcha para fijar la línea base.
|
||||
- Comparación continua entre el checksum actual y el de fábrica, exponiendo el resultado en la salida `#CheckSumOK` (TRUE cuando coinciden).
|
||||
|
||||
> **Restricciones:** Ninguna.
|
||||
|
||||
---
|
||||
### Dependencias Requeridas
|
||||
| Tipo | Elementos |
|
||||
|------|-----------|
|
||||
| FC | - |
|
||||
| FB | `GetChecksum` |
|
||||
| DB | - |
|
||||
| UDT | - |
|
||||
|
||||
---
|
||||
### Historial de Cambios
|
||||
| Versión | Fecha | Técnico | Cambios |
|
||||
|----------|------------|---------|---------|
|
||||
| 01.00.00 | 28.09.2020 | (ABH) | Primera versión. |
|
||||
| 01.00.01 | 02.07.2026 | (ABH) | Cambio a SCL. |
|
||||
*)
|
||||
END_REGION DESCRIPCION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION ORDEN_COMPROBACION
|
||||
|
||||
// Comprobacion mediante un pulso
|
||||
#s_Comprobar := #Comprobar AND NOT #s_OldComprobar;
|
||||
|
||||
// Estado anterior
|
||||
#s_OldComprobar := #Comprobar;
|
||||
|
||||
END_REGION ORDEN_COMPROBACION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION LECTURA_CHECKSUM
|
||||
|
||||
// Comprobacion mediante un pulso
|
||||
#s_GetCheckSum(Scope:=1,
|
||||
Range:=0,
|
||||
Subrange:=0,
|
||||
Checksum:=#s_EstadoCheckSum);
|
||||
|
||||
// Copia de checksum a valor de fabrica
|
||||
IF #Copiar THEN
|
||||
#s_CheckSumFabrica := #s_EstadoCheckSum;
|
||||
END_IF;
|
||||
|
||||
END_REGION LECTURA_CHECKSUM
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION SALIDAS
|
||||
|
||||
// Checksum OK
|
||||
#CheckSumOK := #s_EstadoCheckSum = #s_CheckSumFabrica;
|
||||
|
||||
END_REGION SALIDAS
|
||||
|
||||
END_NETWORK
|
||||
END_FUNCTION_BLOCK
|
||||
-106
@@ -1,106 +0,0 @@
|
||||
FUNCTION_BLOCK "FB3_ZC_CHECKSUM"
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
VERSION : 0.1
|
||||
VAR_INPUT
|
||||
Comprobar : Bool;
|
||||
Copiar : Bool;
|
||||
END_VAR
|
||||
|
||||
VAR_OUTPUT
|
||||
CheckSumOK : Bool;
|
||||
END_VAR
|
||||
|
||||
VAR
|
||||
s_GetCheckSum {InstructionName := 'GetChecksum'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : GetChecksum;
|
||||
END_VAR
|
||||
VAR RETAIN
|
||||
s_EstadoCheckSum { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..7] of Byte;
|
||||
s_CheckSumFabrica { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..7] of Byte;
|
||||
END_VAR
|
||||
VAR
|
||||
s_Comprobar { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
|
||||
s_OldComprobar { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
REGION DESCRIPCION
|
||||
//=======================================================================
|
||||
// (C)Copyright ZeusControl 2020 - 2026
|
||||
//=======================================================================
|
||||
(*
|
||||
### Información del Sistema
|
||||
| Hardware Compatible | Entorno de Ingeniería |
|
||||
|---------------------|-----------------------|
|
||||
| PLC serie 1200/1500 | TIA Portal 18 |
|
||||
|
||||
---
|
||||
### Descripción Funcional
|
||||
El bloque `FB3_CHECKSUM` implementa la lectura del checksum del programa actual del PLC y su comparación con el checksum de fábrica, permitiendo detectar modificaciones no autorizadas en el proyecto.
|
||||
|
||||
Funcionalidades principales:
|
||||
- Detección de flanco ascendente en la entrada `#Comprobar` para ejecutar la comprobación bajo demanda (modo "pulso"), mediante la variable interna `#s_OldComprobar`.
|
||||
- Lectura del checksum del bloque `Scope:=1` (objeto PLC) con `Range:=0` y `Subrange:=0` (rango completo), invocando la función de sistema `GetChecksum` a través del FB `GetChecksum` y depositando el resultado en `#s_EstadoCheckSum`.
|
||||
- Captura del checksum de fábrica: cuando se activa la entrada `#Copiar`, se copia el checksum actual al valor de referencia `#s_CheckSumFabrica`, operación que se realiza una sola vez durante la puesta en marcha para fijar la línea base.
|
||||
- Comparación continua entre el checksum actual y el de fábrica, exponiendo el resultado en la salida `#CheckSumOK` (TRUE cuando coinciden).
|
||||
|
||||
> **Restricciones:** Ninguna.
|
||||
|
||||
---
|
||||
### Dependencias Requeridas
|
||||
| Tipo | Elementos |
|
||||
|------|-----------|
|
||||
| FC | - |
|
||||
| FB | `GetChecksum` |
|
||||
| DB | - |
|
||||
| UDT | - |
|
||||
|
||||
---
|
||||
### Historial de Cambios
|
||||
| Versión | Fecha | Técnico | Cambios |
|
||||
|----------|------------|---------|---------|
|
||||
| 01.00.00 | 28.09.2020 | (ABH) | Primera versión. |
|
||||
| 01.00.01 | 02.07.2026 | (ABH) | Cambio a SCL. |
|
||||
*)
|
||||
END_REGION DESCRIPCION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION ORDEN_COMPROBACION
|
||||
|
||||
// Comprobacion mediante un pulso
|
||||
#s_Comprobar := #Comprobar AND NOT #s_OldComprobar;
|
||||
|
||||
// Estado anterior
|
||||
#s_OldComprobar := #Comprobar;
|
||||
|
||||
END_REGION ORDEN_COMPROBACION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION LECTURA_CHECKSUM
|
||||
|
||||
// Comprobacion mediante un pulso
|
||||
#s_GetCheckSum(Scope:=1,
|
||||
Range:=0,
|
||||
Subrange:=0,
|
||||
Checksum:=#s_EstadoCheckSum);
|
||||
|
||||
// Copia de checksum a valor de fabrica
|
||||
IF #Copiar THEN
|
||||
#s_CheckSumFabrica := #s_EstadoCheckSum;
|
||||
END_IF;
|
||||
|
||||
END_REGION LECTURA_CHECKSUM
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION SALIDAS
|
||||
|
||||
// Checksum OK
|
||||
#CheckSumOK := #s_EstadoCheckSum = #s_CheckSumFabrica;
|
||||
|
||||
END_REGION SALIDAS
|
||||
|
||||
END_FUNCTION_BLOCK
|
||||
|
||||
+418
@@ -0,0 +1,418 @@
|
||||
{
|
||||
S7_Author := "HCR";
|
||||
S7_BlockComment := "MLC_3dQ";
|
||||
S7_BlockTitle := "MLC_42k";
|
||||
S7_EditorMode := "SCL";
|
||||
S7_Family := "ZeusControl";
|
||||
S7_IECCheck := "TRUE";
|
||||
S7_Optimized := "TRUE";
|
||||
S7_Version := "2.0"
|
||||
}
|
||||
FUNCTION "FC1_ZC_SISTEMA" : Void
|
||||
VAR_INPUT
|
||||
{ S7_MLC := "MLC_576" }
|
||||
CPU_MarcasCiclo : Byte;
|
||||
{ S7_MLC := "MLC_4Mc" }
|
||||
CPU_MarcasSistema : Byte;
|
||||
{ S7_MLC := "MLC_3B7" }
|
||||
RedProfinet : HW_IOSYSTEM;
|
||||
END_VAR
|
||||
VAR_TEMP
|
||||
{ S7_MLC := "MLC_3bT" }
|
||||
for_i : Int;
|
||||
{ S7_MLC := "MLC_4GP" }
|
||||
t_RetVal : Int;
|
||||
END_VAR
|
||||
|
||||
{ S7_Language := "SCL" }
|
||||
NETWORK
|
||||
REGION DESCRIPCION
|
||||
(*
|
||||
###### (C)Copyright ZeusControl 2020 - 2026
|
||||
|
||||
---
|
||||
### Información del Sistema
|
||||
| Hardware Compatible | Entorno de Ingeniería |
|
||||
|---------------------|-----------------------|
|
||||
| PLC serie 1200/1500 | TIA Portal 18 |
|
||||
|
||||
---
|
||||
> **Restricciones:** Ninguna.
|
||||
|
||||
---
|
||||
### Descripción Funcional
|
||||
|
||||
Función central para la gestión de marcas de sistema, temporizaciones generales, usuarios y resets del sistema.
|
||||
|
||||
En ella se realizan las siguientes acciones:
|
||||
|
||||
- Cálculo dinámico del tiempo de ciclo del OB1 (en milisegundos) evaluando la variable auxiliar con la instrucción RUNTIME.
|
||||
- Tratamiento y registro de trazabilidad de los 10 pulsadores de acuse de alarmas y del pulsador de modificación de fecha/hora mediante la función FC15026_ZC_PULSADOR.
|
||||
- Consolidación del acuse general (ACK), agrupando las activaciones del PLC de todos los pulsadores de reconocimiento en una única marca.
|
||||
- Generación de marcas estáticas (ON fijo y OFF fijo) y captura del primer ciclo de escáner tras el arranque.
|
||||
- Creación de pulsos temporizados (100 ms, 1 s, 2 s, 5 s, 1 min, 1 h) y señales Flip-Flop a partir de las marcas de ciclo del hardware de la CPU.
|
||||
- Lectura constante de la fecha y hora local (RD_LOC_T) y ejecución de la escritura en el sistema (WR_SYS_T) ante una orden del HMI.
|
||||
- Escaneo continuo de las órdenes de selección para determinar y fijar el usuario actualmente activo en el sistema.
|
||||
- Ejecución bajo demanda del reset general del array de entidades (solo aplicable con procesos parados), reinicializando sus variables a estados de disponibilidad, limpieza y vacío.
|
||||
- Llamada a la rutina DB3_CHECKSUM para la validación y gestión de la suma de comprobación del programa.
|
||||
|
||||
---
|
||||
### Dependencias Requeridas
|
||||
| Tipo | Elementos |
|
||||
|------|-----------|
|
||||
| FC | `FC15026_ZC_PULSADOR` |
|
||||
| FB | `FB3_ZC_CHECKSUM` |
|
||||
| DB | `DB1_SYS`, `DB3_CHECKSUM`, `DB6_ENTIDAD` |
|
||||
| UDT | - |
|
||||
|
||||
---
|
||||
### Historial de Cambios
|
||||
| Versión | Fecha | Técnico | Cambios |
|
||||
|----------|------------|---------|---------|
|
||||
| 01.00.00 | 03.11.2022 | (HCR) | Primera version. |
|
||||
| 01.00.01 | 02.06.2023 | (ABH) | Optimizacion de bloque para integrar en libreria. Se eliminan marcas no utilizadas. Se reorganizan las variables y se ponen bien los comentarios. |
|
||||
| 01.00.02 | 24.04.2025 | (HCR) | Se añade gestion de idioma. |
|
||||
| 01.00.03 | 11.09.2025 | (ABH) | Se eliminan las constantes de idioma dentro del FC. Se utilizan constantes globales para facilitar su traduccion. |
|
||||
| 02.00.00 | 25.03.2026 | (ABH) | Se cambia lenguaje a SCL. Se eliminan idiomas. Se añade watchdog para comunicaciones. Se integra estado red profinet. |
|
||||
*)
|
||||
END_REGION DESCRIPCION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION TIEMPO_DE_CICLO
|
||||
|
||||
// Se almacena el tiempo de ciclo del OB1
|
||||
"DB1_SYS".TiempoCiclo := LREAL_TO_REAL(RUNTIME("DB1_SYS".Aux.auxRuntime));
|
||||
"DB1_SYS".TiempoCiclo := ("DB1_SYS".TiempoCiclo * 1000.0);
|
||||
|
||||
END_REGION TIEMPO_DE_CICLO
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_PULSADORES
|
||||
|
||||
// Gestion pulsadores de ack
|
||||
"DB1_SYS".Pulsador.Ack[0].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_01",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[0]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[1].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_02",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[1]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[2].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_03",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[2]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[3].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_04",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[3]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[4].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_05",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[4]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[5].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_06",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[5]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[6].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_07",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[6]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[7].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_08",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[7]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[8].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_09",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[8]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[9].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_10",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[9]);
|
||||
|
||||
// Gestion pulsador cambio de fecha y hora
|
||||
"DB1_SYS".Pulsador.EscribirFechaHora.Permiso := TRUE;
|
||||
"DB1_SYS".Pulsador.EscribirFechaHora.Visibilidad := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_FECHA",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.EscribirFechaHora);
|
||||
|
||||
END_REGION GESTION_PULSADORES
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_ACUSE_GENERAL
|
||||
|
||||
// Activacion de marca de acuse general
|
||||
"DB1_SYS".ACK :=
|
||||
"DB1_SYS".Pulsador.Ack[0].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[1].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[2].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[3].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[4].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[5].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[6].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[7].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[8].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[9].Plc;
|
||||
|
||||
END_REGION GESTION_ACUSE_GENERAL
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_MARCAS_GENERALES_Y_FLANCOS
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
// Marca siempre a ON
|
||||
"DB1_SYS".OFF := FALSE;
|
||||
|
||||
// Marca siempre a OFF
|
||||
"DB1_SYS".ON := TRUE;
|
||||
|
||||
// Marca primer arranque
|
||||
"DB1_SYS".ARRANQUE := #CPU_MarcasSistema.%X0;
|
||||
|
||||
// ==========================================================================================================
|
||||
// Pulso por 100 ms
|
||||
"DB1_SYS".Pulso100ms := #CPU_MarcasCiclo.%X0 AND NOT "DB1_SYS".Aux.P_Trig_Pulso100ms;
|
||||
|
||||
// Pulso por 1 segundo
|
||||
"DB1_SYS".Pulso1seg := #CPU_MarcasCiclo.%X5 AND NOT "DB1_SYS".Aux.P_Trig_Pulso1Seg;
|
||||
|
||||
// Pulso por 2 segundos
|
||||
"DB1_SYS".Pulso2seg := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador2seg += 1;
|
||||
IF "DB1_SYS".Aux.Contador2seg >= 2 THEN
|
||||
"DB1_SYS".Pulso2seg := TRUE;
|
||||
"DB1_SYS".Aux.Contador2seg := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// Pulso por 5 segundos
|
||||
"DB1_SYS".Pulso5seg := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador5seg += 1;
|
||||
IF "DB1_SYS".Aux.Contador5seg >= 5 THEN
|
||||
"DB1_SYS".Pulso5seg := TRUE;
|
||||
"DB1_SYS".Aux.Contador5seg := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// Pulso por 1 minuto
|
||||
"DB1_SYS".Pulso1min := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador1min += 1;
|
||||
IF "DB1_SYS".Aux.Contador1min >= 60 THEN
|
||||
"DB1_SYS".Pulso1min := TRUE;
|
||||
"DB1_SYS".Aux.Contador1min := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// Pulso por 1 hora
|
||||
"DB1_SYS".Pulso1h := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador1h += 1;
|
||||
IF "DB1_SYS".Aux.Contador1h >= 3600 THEN
|
||||
"DB1_SYS".Pulso1h := TRUE;
|
||||
"DB1_SYS".Aux.Contador1h := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// ==========================================================================================================
|
||||
// Flip Flop 1 segundo
|
||||
IF "DB1_SYS".Pulso1seg AND NOT "DB1_SYS".FlipFlop1seg THEN
|
||||
"DB1_SYS".FlipFlop1seg := TRUE;
|
||||
ELSIF "DB1_SYS".Pulso1seg AND "DB1_SYS".FlipFlop1seg THEN
|
||||
"DB1_SYS".FlipFlop1seg := FALSE;
|
||||
END_IF;
|
||||
|
||||
// Flip Flop 2 segundos
|
||||
IF "DB1_SYS".Pulso2seg AND NOT "DB1_SYS".FlipFlop2seg THEN
|
||||
"DB1_SYS".FlipFlop2seg := TRUE;
|
||||
ELSIF "DB1_SYS".Pulso2seg AND "DB1_SYS".FlipFlop2seg THEN
|
||||
"DB1_SYS".FlipFlop2seg := FALSE;
|
||||
END_IF;
|
||||
|
||||
// Flip Flop 5 segundos
|
||||
IF "DB1_SYS".Pulso5seg AND NOT "DB1_SYS".FlipFlop5seg THEN
|
||||
"DB1_SYS".FlipFlop5seg := TRUE;
|
||||
ELSIF "DB1_SYS".Pulso5seg AND "DB1_SYS".FlipFlop5seg THEN
|
||||
"DB1_SYS".FlipFlop5seg := FALSE;
|
||||
END_IF;
|
||||
|
||||
// ==========================================================================================================
|
||||
// Watchdog
|
||||
IF "DB1_SYS".Pulso100ms THEN
|
||||
"DB1_SYS".WatchDog += 1;
|
||||
IF "DB1_SYS".WatchDog > 20000 THEN
|
||||
"DB1_SYS".WatchDog := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
// Estados anteriores
|
||||
"DB1_SYS".Aux.P_Trig_Pulso100ms := #CPU_MarcasCiclo.%X0;
|
||||
"DB1_SYS".Aux.P_Trig_Pulso1Seg := #CPU_MarcasCiclo.%X5;
|
||||
|
||||
END_REGION GESTION_MARCAS_GENERALES_Y_FLANCOS
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION FECHA_Y_HORA
|
||||
|
||||
// Lectura de fecha y hora actual
|
||||
#t_RetVal := RD_LOC_T("DB1_SYS".FechaHoraActual);
|
||||
|
||||
// Escritura de fecha y hora nueva escrita manualmente desde HMI
|
||||
IF "DB1_SYS".Pulsador.EscribirFechaHora.Plc THEN
|
||||
#t_RetVal := WR_SYS_T("DB1_SYS".FechaHoraNuevaManual);
|
||||
END_IF;
|
||||
|
||||
// Escritura de fecha y hora nueva escrita autoamticamente desde Script, Scada, etc...
|
||||
IF "DB1_SYS".SincronizarFecha THEN
|
||||
#t_RetVal := WR_SYS_T("DB1_SYS".FechaHoraNuevaAuto);
|
||||
END_IF;
|
||||
|
||||
END_REGION FECHA_Y_HORA
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION USUARIOS
|
||||
|
||||
// Gestion de usuario actual para trazas
|
||||
FOR #for_i := 0 TO 9 DO
|
||||
IF "DB1_SYS".Usuario.Seleccion[#for_i].Orden THEN
|
||||
"DB1_SYS".Usuario.Actual := "DB1_SYS".Usuario.Seleccion[#for_i].Usuario;
|
||||
"DB1_SYS".Usuario.Seleccion[#for_i].Orden := FALSE;
|
||||
EXIT;
|
||||
END_IF;
|
||||
END_FOR;
|
||||
|
||||
END_REGION USUARIOS
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION RESET_ENTIDADES
|
||||
|
||||
// Reset todas las entidades
|
||||
// CUIDADO!!!!!!!!
|
||||
// TIENEN QUE ESTAR TODOS LOS PROCESOS PARADOS!!!!!!
|
||||
IF "DB1_SYS".ResetEntidades THEN
|
||||
FOR #for_i := 1 TO "N_MAX_ENTIDAD" DO
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.EnProduccion :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.EnCIP :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.EnSIP :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.ConProducto :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.ConAgua :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Vacia :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Sucia := FALSE;
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].Habilitar :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Disponible :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Limpia := TRUE;
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.CodEstado := 0;
|
||||
"DB6_ENTIDAD".ENT[#for_i].Asignacion := 0;
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].ID := #for_i;
|
||||
|
||||
END_FOR;
|
||||
|
||||
"DB1_SYS".ResetEntidades := FALSE;
|
||||
END_IF;
|
||||
|
||||
END_REGION RESET_ENTIDADES
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION CHECKSUM
|
||||
|
||||
// Gestion de checksum del programa
|
||||
"DB3_CHECKSUM"();
|
||||
|
||||
END_REGION CHECKSUM
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION RED_PROFINET
|
||||
|
||||
// Comprobacion de red profinet
|
||||
#t_RetVal := DeviceStates(LADDR := #RedProfinet, MODE := 4, STATE := "DB1_SYS".RedProfinet);
|
||||
|
||||
END_REGION RED_PROFINET
|
||||
|
||||
|
||||
|
||||
END_NETWORK
|
||||
END_FUNCTION
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
MultiLingualTexts:
|
||||
- id: MLC_42k
|
||||
es-ES: FC1_ZC_SISTEMA
|
||||
- id: MLC_3dQ
|
||||
es-ES: Funcion para gestion de marcas de sistema
|
||||
- id: MLC_576
|
||||
es-ES: Byte Marca de ciclo CPU
|
||||
- id: MLC_4Mc
|
||||
es-ES: Byte Marcas de sistema
|
||||
- id: MLC_3B7
|
||||
es-ES: ID Profinet IO System
|
||||
- id: MLC_3bT
|
||||
es-ES: Variable para bucles FOR
|
||||
- id: MLC_4GP
|
||||
es-ES: Variable temporal para su uso en programa
|
||||
-410
@@ -1,410 +0,0 @@
|
||||
FUNCTION "FC1_ZC_SISTEMA" : Void
|
||||
TITLE = FC1_ZC_SISTEMA
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
AUTHOR : HCR
|
||||
FAMILY : ZeusControl
|
||||
VERSION : 2.0
|
||||
//Funcion para gestion de marcas de sistema
|
||||
VAR_INPUT
|
||||
CPU_MarcasCiclo : Byte; // Byte Marca de ciclo CPU
|
||||
CPU_MarcasSistema : Byte; // Byte Marcas de sistema
|
||||
RedProfinet : HW_IOSYSTEM; // ID Profinet IO System
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
for_i : Int; // Variable para bucles FOR
|
||||
t_RetVal : Int; // Variable temporal para su uso en programa
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
REGION DESCRIPCION
|
||||
(*
|
||||
###### (C)Copyright ZeusControl 2020 - 2026
|
||||
|
||||
---
|
||||
### Información del Sistema
|
||||
| Hardware Compatible | Entorno de Ingeniería |
|
||||
|---------------------|-----------------------|
|
||||
| PLC serie 1200/1500 | TIA Portal 18 |
|
||||
|
||||
---
|
||||
> **Restricciones:** Ninguna.
|
||||
|
||||
---
|
||||
### Descripción Funcional
|
||||
|
||||
Función central para la gestión de marcas de sistema, temporizaciones generales, usuarios y resets del sistema.
|
||||
|
||||
En ella se realizan las siguientes acciones:
|
||||
|
||||
- Cálculo dinámico del tiempo de ciclo del OB1 (en milisegundos) evaluando la variable auxiliar con la instrucción RUNTIME.
|
||||
- Tratamiento y registro de trazabilidad de los 10 pulsadores de acuse de alarmas y del pulsador de modificación de fecha/hora mediante la función FC15026_ZC_PULSADOR.
|
||||
- Consolidación del acuse general (ACK), agrupando las activaciones del PLC de todos los pulsadores de reconocimiento en una única marca.
|
||||
- Generación de marcas estáticas (ON fijo y OFF fijo) y captura del primer ciclo de escáner tras el arranque.
|
||||
- Creación de pulsos temporizados (100 ms, 1 s, 2 s, 5 s, 1 min, 1 h) y señales Flip-Flop a partir de las marcas de ciclo del hardware de la CPU.
|
||||
- Lectura constante de la fecha y hora local (RD_LOC_T) y ejecución de la escritura en el sistema (WR_SYS_T) ante una orden del HMI.
|
||||
- Escaneo continuo de las órdenes de selección para determinar y fijar el usuario actualmente activo en el sistema.
|
||||
- Ejecución bajo demanda del reset general del array de entidades (solo aplicable con procesos parados), reinicializando sus variables a estados de disponibilidad, limpieza y vacío.
|
||||
- Llamada a la rutina DB3_CHECKSUM para la validación y gestión de la suma de comprobación del programa.
|
||||
|
||||
---
|
||||
### Dependencias Requeridas
|
||||
| Tipo | Elementos |
|
||||
|------|-----------|
|
||||
| FC | `FC15026_ZC_PULSADOR` |
|
||||
| FB | `FB3_ZC_CHECKSUM` |
|
||||
| DB | `DB1_SYS`, `DB3_CHECKSUM`, `DB6_ENTIDAD` |
|
||||
| UDT | - |
|
||||
|
||||
---
|
||||
### Historial de Cambios
|
||||
| Versión | Fecha | Técnico | Cambios |
|
||||
|----------|------------|---------|---------|
|
||||
| 01.00.00 | 03.11.2022 | (HCR) | Primera version. |
|
||||
| 01.00.01 | 02.06.2023 | (ABH) | Optimizacion de bloque para integrar en libreria. Se eliminan marcas no utilizadas. Se reorganizan las variables y se ponen bien los comentarios. |
|
||||
| 01.00.02 | 24.04.2025 | (HCR) | Se añade gestion de idioma. |
|
||||
| 01.00.03 | 11.09.2025 | (ABH) | Se eliminan las constantes de idioma dentro del FC. Se utilizan constantes globales para facilitar su traduccion. |
|
||||
| 02.00.00 | 25.03.2026 | (ABH) | Se cambia lenguaje a SCL. Se eliminan idiomas. Se añade watchdog para comunicaciones. Se integra estado red profinet. |
|
||||
*)
|
||||
END_REGION DESCRIPCION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION TIEMPO_DE_CICLO
|
||||
|
||||
// Se almacena el tiempo de ciclo del OB1
|
||||
"DB1_SYS".TiempoCiclo := LREAL_TO_REAL(RUNTIME("DB1_SYS".Aux.auxRuntime));
|
||||
"DB1_SYS".TiempoCiclo := ("DB1_SYS".TiempoCiclo * 1000.0);
|
||||
|
||||
END_REGION TIEMPO_DE_CICLO
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_PULSADORES
|
||||
|
||||
// Gestion pulsadores de ack
|
||||
"DB1_SYS".Pulsador.Ack[0].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_01",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[0]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[1].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_02",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[1]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[2].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_03",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[2]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[3].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_04",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[3]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[4].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_05",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[4]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[5].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_06",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[5]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[6].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_07",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[6]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[7].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_08",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[7]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[8].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_09",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[8]);
|
||||
|
||||
"DB1_SYS".Pulsador.Ack[9].Permiso := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_ACK_10",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.Ack[9]);
|
||||
|
||||
// Gestion pulsador cambio de fecha y hora
|
||||
"DB1_SYS".Pulsador.EscribirFechaHora.Permiso := TRUE;
|
||||
"DB1_SYS".Pulsador.EscribirFechaHora.Visibilidad := TRUE;
|
||||
"FC15026_ZC_PULSADOR"(Pulso1Seg := "DB1_SYS".Pulso1seg,
|
||||
SP_Tiempo := 0,
|
||||
TrazaCategoria := "TRZ_CAT_1_SYS",
|
||||
TrazaIdProceso := 0,
|
||||
TrazaIdPulsador := "TRZ_SYS_PUL_FECHA",
|
||||
Usuario := "DB1_SYS".Usuario.Actual,
|
||||
FechaHoraActual := "DB1_SYS".FechaHoraActual,
|
||||
Pulsador := "DB1_SYS".Pulsador.EscribirFechaHora);
|
||||
|
||||
END_REGION GESTION_PULSADORES
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_ACUSE_GENERAL
|
||||
|
||||
// Activacion de marca de acuse general
|
||||
"DB1_SYS".ACK :=
|
||||
"DB1_SYS".Pulsador.Ack[0].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[1].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[2].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[3].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[4].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[5].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[6].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[7].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[8].Plc OR
|
||||
"DB1_SYS".Pulsador.Ack[9].Plc;
|
||||
|
||||
END_REGION GESTION_ACUSE_GENERAL
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_MARCAS_GENERALES_Y_FLANCOS
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
// Marca siempre a ON
|
||||
"DB1_SYS".OFF := FALSE;
|
||||
|
||||
// Marca siempre a OFF
|
||||
"DB1_SYS".ON := TRUE;
|
||||
|
||||
// Marca primer arranque
|
||||
"DB1_SYS".ARRANQUE := #CPU_MarcasSistema.%X0;
|
||||
|
||||
// ==========================================================================================================
|
||||
// Pulso por 100 ms
|
||||
"DB1_SYS".Pulso100ms := #CPU_MarcasCiclo.%X0 AND NOT "DB1_SYS".Aux.P_Trig_Pulso100ms;
|
||||
|
||||
// Pulso por 1 segundo
|
||||
"DB1_SYS".Pulso1seg := #CPU_MarcasCiclo.%X5 AND NOT "DB1_SYS".Aux.P_Trig_Pulso1Seg;
|
||||
|
||||
// Pulso por 2 segundos
|
||||
"DB1_SYS".Pulso2seg := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador2seg += 1;
|
||||
IF "DB1_SYS".Aux.Contador2seg >= 2 THEN
|
||||
"DB1_SYS".Pulso2seg := TRUE;
|
||||
"DB1_SYS".Aux.Contador2seg := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// Pulso por 5 segundos
|
||||
"DB1_SYS".Pulso5seg := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador5seg += 1;
|
||||
IF "DB1_SYS".Aux.Contador5seg >= 5 THEN
|
||||
"DB1_SYS".Pulso5seg := TRUE;
|
||||
"DB1_SYS".Aux.Contador5seg := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// Pulso por 1 minuto
|
||||
"DB1_SYS".Pulso1min := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador1min += 1;
|
||||
IF "DB1_SYS".Aux.Contador1min >= 60 THEN
|
||||
"DB1_SYS".Pulso1min := TRUE;
|
||||
"DB1_SYS".Aux.Contador1min := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// Pulso por 1 hora
|
||||
"DB1_SYS".Pulso1h := FALSE;
|
||||
IF "DB1_SYS".Pulso1seg THEN
|
||||
"DB1_SYS".Aux.Contador1h += 1;
|
||||
IF "DB1_SYS".Aux.Contador1h >= 3600 THEN
|
||||
"DB1_SYS".Pulso1h := TRUE;
|
||||
"DB1_SYS".Aux.Contador1h := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
// ==========================================================================================================
|
||||
// Flip Flop 1 segundo
|
||||
IF "DB1_SYS".Pulso1seg AND NOT "DB1_SYS".FlipFlop1seg THEN
|
||||
"DB1_SYS".FlipFlop1seg := TRUE;
|
||||
ELSIF "DB1_SYS".Pulso1seg AND "DB1_SYS".FlipFlop1seg THEN
|
||||
"DB1_SYS".FlipFlop1seg := FALSE;
|
||||
END_IF;
|
||||
|
||||
// Flip Flop 2 segundos
|
||||
IF "DB1_SYS".Pulso2seg AND NOT "DB1_SYS".FlipFlop2seg THEN
|
||||
"DB1_SYS".FlipFlop2seg := TRUE;
|
||||
ELSIF "DB1_SYS".Pulso2seg AND "DB1_SYS".FlipFlop2seg THEN
|
||||
"DB1_SYS".FlipFlop2seg := FALSE;
|
||||
END_IF;
|
||||
|
||||
// Flip Flop 5 segundos
|
||||
IF "DB1_SYS".Pulso5seg AND NOT "DB1_SYS".FlipFlop5seg THEN
|
||||
"DB1_SYS".FlipFlop5seg := TRUE;
|
||||
ELSIF "DB1_SYS".Pulso5seg AND "DB1_SYS".FlipFlop5seg THEN
|
||||
"DB1_SYS".FlipFlop5seg := FALSE;
|
||||
END_IF;
|
||||
|
||||
// ==========================================================================================================
|
||||
// Watchdog
|
||||
IF "DB1_SYS".Pulso100ms THEN
|
||||
"DB1_SYS".WatchDog += 1;
|
||||
IF "DB1_SYS".WatchDog > 20000 THEN
|
||||
"DB1_SYS".WatchDog := 0;
|
||||
END_IF;
|
||||
END_IF;
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
// Estados anteriores
|
||||
"DB1_SYS".Aux.P_Trig_Pulso100ms := #CPU_MarcasCiclo.%X0;
|
||||
"DB1_SYS".Aux.P_Trig_Pulso1Seg := #CPU_MarcasCiclo.%X5;
|
||||
|
||||
END_REGION GESTION_MARCAS_GENERALES_Y_FLANCOS
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION FECHA_Y_HORA
|
||||
|
||||
// Lectura de fecha y hora actual
|
||||
#t_RetVal := RD_LOC_T("DB1_SYS".FechaHoraActual);
|
||||
|
||||
// Escritura de fecha y hora nueva escrita manualmente desde HMI
|
||||
IF "DB1_SYS".Pulsador.EscribirFechaHora.Plc THEN
|
||||
#t_RetVal := WR_SYS_T("DB1_SYS".FechaHoraNuevaManual);
|
||||
END_IF;
|
||||
|
||||
// Escritura de fecha y hora nueva escrita autoamticamente desde Script, Scada, etc...
|
||||
IF "DB1_SYS".SincronizarFecha THEN
|
||||
#t_RetVal := WR_SYS_T("DB1_SYS".FechaHoraNuevaAuto);
|
||||
END_IF;
|
||||
|
||||
END_REGION FECHA_Y_HORA
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION USUARIOS
|
||||
|
||||
// Gestion de usuario actual para trazas
|
||||
FOR #for_i := 0 TO 9 DO
|
||||
IF "DB1_SYS".Usuario.Seleccion[#for_i].Orden THEN
|
||||
"DB1_SYS".Usuario.Actual := "DB1_SYS".Usuario.Seleccion[#for_i].Usuario;
|
||||
"DB1_SYS".Usuario.Seleccion[#for_i].Orden := FALSE;
|
||||
EXIT;
|
||||
END_IF;
|
||||
END_FOR;
|
||||
|
||||
END_REGION USUARIOS
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION RESET_ENTIDADES
|
||||
|
||||
// Reset todas las entidades
|
||||
// CUIDADO!!!!!!!!
|
||||
// TIENEN QUE ESTAR TODOS LOS PROCESOS PARADOS!!!!!!
|
||||
IF "DB1_SYS".ResetEntidades THEN
|
||||
FOR #for_i := 1 TO "N_MAX_ENTIDAD" DO
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.EnProduccion :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.EnCIP :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.EnSIP :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.ConProducto :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.ConAgua :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Vacia :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Sucia := FALSE;
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].Habilitar :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Disponible :=
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.Limpia := TRUE;
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].Estado.CodEstado := 0;
|
||||
"DB6_ENTIDAD".ENT[#for_i].Asignacion := 0;
|
||||
|
||||
"DB6_ENTIDAD".ENT[#for_i].ID := #for_i;
|
||||
|
||||
END_FOR;
|
||||
|
||||
"DB1_SYS".ResetEntidades := FALSE;
|
||||
END_IF;
|
||||
|
||||
END_REGION RESET_ENTIDADES
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION CHECKSUM
|
||||
|
||||
// Gestion de checksum del programa
|
||||
"DB3_CHECKSUM"();
|
||||
|
||||
END_REGION CHECKSUM
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION RED_PROFINET
|
||||
|
||||
// Comprobacion de red profinet
|
||||
#t_RetVal := DeviceStates(LADDR := #RedProfinet, MODE := 4, STATE := "DB1_SYS".RedProfinet);
|
||||
|
||||
END_REGION RED_PROFINET
|
||||
|
||||
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user