From aa62159f2a405ddf7811f3ab8edcb3138d8d8e3d Mon Sep 17 00:00:00 2001 From: aketza Date: Fri, 24 Jul 2026 09:14:08 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20Se=20a=C3=B1ade=20marca=20modo=20FAT?= =?UTF-8?q?=20en=20el=20DB1.=20Se=20modifica=20FC50=5FMAIN=20para=20poder?= =?UTF-8?q?=20gestionar=20la=20marca=20FAT.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../000_Sistema_Datos/DB1_SYS.s7dcl | 3 + .../000_Sistema_Datos/DB1_SYS.s7res | 2 + .../000_Sistema_Datos/FC1_ZC_SISTEMA.s7dcl | 217 ++++++++++-------- .../OB100_Startup.s7dcl | 17 -- .../OB100_Startup.s7res | 3 - .../000_Sistema_Gestor/FC50_MAIN.s7dcl | 29 ++- .../Documentacion.s7dcl | 5 +- 7 files changed, 147 insertions(+), 129 deletions(-) delete mode 100644 PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7res diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7dcl b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7dcl index db2a593..c935023 100644 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7dcl +++ b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7dcl @@ -44,6 +44,8 @@ DATA_BLOCK DB1_SYS ResetEntidades : Bool; { S7_MLC := "MLC_3pE" } SincronizarFecha : Bool; + { S7_MLC := "MLC_dm" } + FAT : Bool; { S7_MLC := "MLC_3v5" } WatchDog : Int; Pulsador : STRUCT @@ -124,6 +126,7 @@ DATA_BLOCK DB1_SYS FlipFlop5seg := TRUE; ResetEntidades := FALSE; SincronizarFecha := FALSE; + FAT := FALSE; Pulsador.EscribirFechaHora.Hmi := FALSE; Pulsador.EscribirFechaHora.Plc := FALSE; Pulsador.EscribirFechaHora.Permiso := TRUE; diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7res b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7res index ec5fc80..e5f9fe0 100644 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7res +++ b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/DB1_SYS.s7res @@ -33,6 +33,8 @@ es-ES: Reset todas las entidades - id: MLC_3pE es-ES: Orden sincronizacion fecha desde sistema superior + - id: MLC_dm + es-ES: Activar modo FAT para prueba de cuadros - id: MLC_3v5 es-ES: Watchdog para comunicaciones - id: MLC_3ER diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/FC1_ZC_SISTEMA.s7dcl b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/FC1_ZC_SISTEMA.s7dcl index 1707477..19d6ae6 100644 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/FC1_ZC_SISTEMA.s7dcl +++ b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos/FC1_ZC_SISTEMA.s7dcl @@ -88,6 +88,122 @@ FUNCTION "FC1_ZC_SISTEMA" : Void END_REGION TIEMPO_DE_CICLO + // ========================================================================================================== + 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 ARRANQUE + + IF "DB1_SYS".ARRANQUE THEN + + // Actualizamos la fecha y hora nueva para editar desde HMI/SCADA + #t_RetVal := RD_LOC_T("DB1_SYS".FechaHoraNuevaManual); + + // Reseteamos marcas de simulacion y FAT + "DB1_SYS".SIM := FALSE; + "DB1_SYS".FAT := FALSE; + + END_IF; + + END_REGION ARRANQUE + + // ========================================================================================================== REGION GESTION_PULSADORES @@ -226,107 +342,6 @@ FUNCTION "FC1_ZC_SISTEMA" : Void 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 diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7dcl b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7dcl index e637f12..f9ef9b9 100644 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7dcl +++ b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7dcl @@ -5,21 +5,4 @@ S7_Version := "0.1" } ORGANIZATION_BLOCK "OB100_Startup" - VAR_TEMP - t_dummyInt : Int; - END_VAR - - { - S7_Language := "LAD"; - S7_NetworkTitle := "MLC_3Ju" - } - NETWORK - RUNG wire#powerrail - { S7_Templates := "date_type := DTL" } - RD_LOC_T( - RET_VAL => #t_dummyInt, - OUT => "DB1_SYS".FechaHoraNuevaManual - ) - END_RUNG - END_NETWORK END_ORGANIZATION_BLOCK diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7res b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7res deleted file mode 100644 index eacebc2..0000000 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware/OB100_Startup.s7res +++ /dev/null @@ -1,3 +0,0 @@ -MultiLingualTexts: - - id: MLC_3Ju - es-ES: Al arrancar, actualizamos la fecha y hora nueva para editar desde HMI/SCADA diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Gestor/FC50_MAIN.s7dcl b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Gestor/FC50_MAIN.s7dcl index e2ac4b7..361e02d 100644 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Gestor/FC50_MAIN.s7dcl +++ b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Gestor/FC50_MAIN.s7dcl @@ -68,13 +68,37 @@ FUNCTION "FC50_MAIN" : Void // ========================================================================================================== REGION SISTEMA + // Llamada a marcas de sistema "FC1_ZC_SISTEMA"(CPU_MarcasCiclo := "Clock_Byte", CPU_MarcasSistema := "System_Byte", RedProfinet := "Local~PROFINET_IO-System"); + // Llamada a utilizades + "DB15994_ZC_INICIALIZAR_DISP"(); + "DB15995_ZC_BUSCAR_DIR"(); + END_REGION SISTEMA + // ========================================================================================================== + REGION FAT + + // Llamada a bloques FAT + // Si tenemos la marca activada, salimos del bloque sin ejecutar nada mas para poder realizar + // las pruebas de señales de los cuadros. + IF "DB1_SYS".FAT THEN + + "DB15990_FAT_DI"(); + "DB15991_FAT_DO"(); + "DB15992_FAT_AI"(); + "DB15993_FAT_AO"(); + + RETURN; + END_IF; + + END_REGION FAT + + // ========================================================================================================== REGION DISPOSITIVOS @@ -379,10 +403,5 @@ FUNCTION "FC50_MAIN" : Void END_REGION POST_PROGRAMA - - - - - END_NETWORK END_FUNCTION diff --git a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/Documentacion.s7dcl b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/Documentacion.s7dcl index 09defbc..58fdeda 100644 --- a/PLC/Bloques de programa/ZC_Estandar_Alimentacion/Documentacion.s7dcl +++ b/PLC/Bloques de programa/ZC_Estandar_Alimentacion/Documentacion.s7dcl @@ -8,7 +8,6 @@ FUNCTION "Documentacion" : Void { S7_Language := "SCL" } NETWORK - REGION DESCRIPCION (* ###### (C)Copyright ZeusControl 2020 - 2026 @@ -20,7 +19,7 @@ FUNCTION "Documentacion" : Void | PLC serie 1200/1500 | TIA Portal 18 |ASasASadsadsasd --- - > **Restricciones:** [!!! INDICA AQUÍ LIMITACIONES (O ESCRIBE "Ninguna") !!!] + > **Restricciones:** [!!! INDICA AQUÍ LIMITACIONES (O ESCRIBE "Ninguna.") !!!] --- ### Descripción Funcional @@ -51,6 +50,6 @@ FUNCTION "Documentacion" : Void *) END_REGION DESCRIPCION - // borrar + END_NETWORK END_FUNCTION