Compare commits

...
10 Commits
81 changed files with 32955 additions and 370 deletions
@@ -42,40 +42,6 @@ DATA_BLOCK DB2000_ED
"ED"[0].Tiempos_TiempoDes := 0;
{ S7_MLC := "MLC_3vw" }
ED[0] := ();
{ S7_MLC := "MLC_334" }
ED[1] := ();
{ S7_MLC := "MLC_3BG" }
ED[2] := ();
{ S7_MLC := "MLC_3s6" }
ED[3] := ();
{ S7_MLC := "MLC_3W8" }
ED[4] := ();
{ S7_MLC := "MLC_eA" }
ED[5] := ();
{ S7_MLC := "MLC_54t" }
ED[6] := ();
{ S7_MLC := "MLC_4Zq" }
ED[7] := ();
{ S7_MLC := "MLC_mj" }
ED[8] := ();
{ S7_MLC := "MLC_34w" }
ED[9] := ();
{ S7_MLC := "MLC_MZ" }
ED[10] := ();
{ S7_MLC := "MLC_3bd" }
ED[11] := ();
{ S7_MLC := "MLC_3kF" }
ED[12] := ();
{ S7_MLC := "MLC_4GK" }
ED[13] := ();
{ S7_MLC := "MLC_dV" }
ED[14] := ();
{ S7_MLC := "MLC_4qr" }
ED[15] := ();
{ S7_MLC := "MLC_4eS" }
ED[16] := ();
{ S7_MLC := "MLC_56B" }
ED[17] := ();
Agrup[0].AlgunaEnManual := FALSE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,37 +7,3 @@
es-ES: .
- id: MLC_3vw
es-ES: NO SE USA
- id: MLC_334
es-ES: DP-201
- id: MLC_3BG
es-ES: DP-202
- id: MLC_3s6
es-ES: DP-203
- id: MLC_3W8
es-ES: DP-204
- id: MLC_eA
es-ES: DP-205
- id: MLC_54t
es-ES: DP-206
- id: MLC_4Zq
es-ES: DP-207
- id: MLC_mj
es-ES: DP-208
- id: MLC_34w
es-ES: DP-209
- id: MLC_MZ
es-ES: DP-210
- id: MLC_3bd
es-ES: DP-211
- id: MLC_3kF
es-ES: DP-212
- id: MLC_4GK
es-ES: DP-213
- id: MLC_dV
es-ES: DP-214
- id: MLC_4qr
es-ES: DP-215
- id: MLC_4eS
es-ES: LL-201
- id: MLC_56B
es-ES: LL-202
@@ -55,36 +55,6 @@ DATA_BLOCK DB2001_EA
EA[0].Aux_Estado := 0;
{ S7_MLC := "MLC_3VM" }
EA[0] := ();
{ S7_MLC := "MLC_3T7" }
EA[1] := ();
{ S7_MLC := "MLC_4zB" }
EA[2] := ();
{ S7_MLC := "MLC_4ni" }
EA[3] := ();
{ S7_MLC := "MLC_jP" }
EA[4] := ();
{ S7_MLC := "MLC_3ah" }
EA[5] := ();
{ S7_MLC := "MLC_3qt" }
EA[6] := ();
{ S7_MLC := "MLC_4fH" }
EA[7] := ();
{ S7_MLC := "MLC_4Xs" }
EA[8] := ();
{ S7_MLC := "MLC_4hy" }
EA[9] := ();
{ S7_MLC := "MLC_4hs" }
EA[10] := ();
{ S7_MLC := "MLC_4WC" }
EA[11] := ();
{ S7_MLC := "MLC_3xK" }
EA[12] := ();
{ S7_MLC := "MLC_47u" }
EA[13] := ();
{ S7_MLC := "MLC_3S5" }
EA[14] := ();
{ S7_MLC := "MLC_3S7" }
EA[15] := ();
Agrup[0].AlgunaEnManual := FALSE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,33 +7,3 @@
es-ES: .
- id: MLC_3VM
es-ES: NO SE USA
- id: MLC_3T7
es-ES: LT-201
- id: MLC_4zB
es-ES: CT-201
- id: MLC_4ni
es-ES: FT-201
- id: MLC_jP
es-ES: TTI-201
- id: MLC_3ah
es-ES: TTI-202
- id: MLC_3qt
es-ES: TTI-203
- id: MLC_4fH
es-ES: TTI-204
- id: MLC_4Xs
es-ES: TTI-205
- id: MLC_4hy
es-ES: TTI-206
- id: MLC_4hs
es-ES: PTI-201
- id: MLC_4WC
es-ES: PTI-202
- id: MLC_3xK
es-ES: PTI-203
- id: MLC_47u
es-ES: PTI-204
- id: MLC_3S5
es-ES: PTI-205
- id: MLC_3S7
es-ES: PTI-206
@@ -44,8 +44,6 @@ DATA_BLOCK DB2005_SD
SD[0].Tiempos_TiempoDes := 0;
{ S7_MLC := "MLC_5C3" }
SD[0] := ();
{ S7_MLC := "MLC_4Xv" }
SD[1] := ();
Agrup[0].AlgunaEnManual := FALSE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,5 +7,3 @@
es-ES: .
- id: MLC_5C3
es-ES: NO SE USA
- id: MLC_4Xv
es-ES: Alimentacion videoregistrador
@@ -53,12 +53,6 @@ DATA_BLOCK DB2006_SA
SA[0].Aux_Estado := 0;
{ S7_MLC := "MLC_4Nk" }
SA[0] := ();
{ S7_MLC := "MLC_4VS" }
SA[1] := ();
{ S7_MLC := "MLC_Rp" }
SA[2] := ();
{ S7_MLC := "MLC_4DF" }
SA[3] := ();
Agrup[0].AlgunaEnManual := FALSE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,9 +7,3 @@
es-ES: .
- id: MLC_4Nk
es-ES: NO SE USA
- id: MLC_4VS
es-ES: VPCT-201
- id: MLC_Rp
es-ES: VPCT-202
- id: MLC_4DF
es-ES: VPCP-203
@@ -59,24 +59,6 @@ DATA_BLOCK DB2010_V
V[0].Tiempos_Ciclos := 0;
{ S7_MLC := "MLC_k3" }
V[0] := ();
{ S7_MLC := "MLC_4aA" }
V[1] := ();
{ S7_MLC := "MLC_3Rt" }
V[2] := ();
{ S7_MLC := "MLC_3p7" }
V[3] := ();
{ S7_MLC := "MLC_3xp" }
V[4] := ();
{ S7_MLC := "MLC_gX" }
V[5] := ();
{ S7_MLC := "MLC_qs" }
V[6] := ();
{ S7_MLC := "MLC_4VU" }
V[7] := ();
{ S7_MLC := "MLC_4SC" }
V[8] := ();
{ S7_MLC := "MLC_Wt" }
V[9] := ();
Agrup[0].AlgunaEnManual := FALSE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,21 +7,3 @@
es-ES: .
- id: MLC_k3
es-ES: NO SE USA
- id: MLC_4aA
es-ES: VA-401
- id: MLC_3Rt
es-ES: VA-402
- id: MLC_3p7
es-ES: VA3-403
- id: MLC_3xp
es-ES: VA4-404
- id: MLC_gX
es-ES: VA3-405
- id: MLC_qs
es-ES: VA-406
- id: MLC_4VU
es-ES: VD-401
- id: MLC_4SC
es-ES: VD-402
- id: MLC_Wt
es-ES: VCT-401
@@ -67,8 +67,6 @@ DATA_BLOCK DB2016_M_VF
M_VF[0].Tiempos_Mantenimiento := 0.0;
{ S7_MLC := "MLC_4u6" }
M_VF[0] := ();
{ S7_MLC := "MLC_3HZ" }
M_VF[1] := ();
Agrup[0].AlgunaEnManual := FALSE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,5 +7,3 @@
es-ES: .
- id: MLC_4u6
es-ES: NO SE USA
- id: MLC_3HZ
es-ES: B-401
@@ -47,10 +47,6 @@ DATA_BLOCK DB2025_TOT
TOT[0].Aux_TotalizadorMem := 0.0;
{ S7_MLC := "MLC_54a" }
TOT[0] := ();
{ S7_MLC := "MLC_4xm" }
TOT[1] := ();
{ S7_MLC := "MLC_3Fp" }
TOT[2] := ();
TiempoCiclo.Actual := 28.50767;
TiempoCiclo."Min" := 150.0;
TiempoCiclo."Max" := 0.0;
@@ -7,7 +7,3 @@
es-ES: .
- id: MLC_54a
es-ES: NO SE USA
- id: MLC_4xm
es-ES: FT-401
- id: MLC_3Fp
es-ES: FT-402
@@ -57,8 +57,6 @@ DATA_BLOCK DB2035_PID
"PID"[0].Aux_oldTd := 0.0;
{ S7_MLC := "MLC_5CL" }
PID[0] := ();
{ S7_MLC := "MLC_4WT" }
PID[1] := ();
Agrup[0].AlgunaEnManual := TRUE;
Agrup[0].AlgunaAlarma := FALSE;
Agrup[0].NuevaAlarma := FALSE;
@@ -7,5 +7,3 @@
es-ES: .
- id: MLC_5CL
es-ES: NO SE USA
- id: MLC_4WT
es-ES: Calentamiento
@@ -315,7 +315,16 @@ FUNCTION "FC50_MAIN" : Void
// ==========================================================================================================
REGION POST_PROGRAMA
// Alarmas generales
"FC5000_GEST_ALARMAS_GNR"();
// Parametros generales
"FC15_ZC_GEST_PREAL"(PrimerCiclo:="DB1_SYS".ARRANQUE,
FechaHora:="DB1_SYS".FechaHoraActual,
Usuario:="DB1_SYS".Usuario.Actual,
PReal:="DB3000_GNR_PREAL".PReal,
IndexTraza:=1,
ValorAnterior:="DB3000_GNR_PREAL".PReal);
END_REGION POST_PROGRAMA
@@ -324,5 +333,6 @@ FUNCTION "FC50_MAIN" : Void
END_NETWORK
END_FUNCTION
@@ -0,0 +1,192 @@
{
S7_Author := "ABH";
S7_BlockComment := "MLC_Qe";
S7_BlockNumber := "15105";
S7_BlockTitle := "MLC_4rc";
S7_EditorMode := "SCL";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15105_ZC_CALCULO_CURVA"
VAR_INPUT
{ S7_MLC := "MLC_5Bz" }
ValorActual : Real;
{ S7_MLC := "MLC_tn" }
NumeroPuntos : Int := 10;
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_3eH" }
Valor : Real;
END_VAR
VAR
s_ValorActual : Real;
s_Valor : Real;
s_NumeroPuntos : Int;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_4k7" }
s_PuntoX : Array[1..#MAX_PUNTOS] of Real := [
10.0,
20.0,
30.0,
40.0,
50.0,
60.0,
70.0,
80.0,
90.0,
100.0
];
{ S7_MLC := "MLC_4Nw" }
s_PuntoY : Array[1..#MAX_PUNTOS] of Real := [
10.0,
20.0,
30.0,
40.0,
50.0,
60.0,
70.0,
80.0,
90.0,
100.0
];
END_VAR
VAR_TEMP
for_i : Int;
dx : Real;
dy : Real;
END_VAR
VAR CONSTANT
{ S7_MLC := "MLC_WH" }
MAX_PUNTOS : Int := 10;
END_VAR
{ S7_Language := "SCL" }
NETWORK
REGION DESCRIPCION
//=======================================================================
// (C)Copyright ZeusControl 2023 - 2023
//=======================================================================
(*
### Información del Sistema
| Hardware Compatible | Entorno de Ingeniería |
|---------------------|-----------------------|
| PLC serie 1200/1500 | TIA Portal 18 |
---
### Descripción Funcional
El bloque `FB15105_ZC_CALCULO_CURVA` implementa una función de interpolación lineal por tramos sobre una curva configurable de hasta `#MAX_PUNTOS` puntos `(X, Y)`. A partir de un valor de entrada `ValorActual`, devuelve el valor de salida interpolado `Valor`, permitiendo linealizar señales no lineales como sondas de nivel, curvas de bombas o perfiles de consigna.
Funcionalidades principales:
- Validación del número de puntos activos: `#NumeroPuntos` se acota entre 2 (mínimo necesario para definir un segmento) y la constante de dimensionamiento `#MAX_PUNTOS`.
- Relleno automático: los puntos no utilizados por encima de `#s_NumeroPuntos` se rellenan con el último valor válido, manteniendo la coherencia del array para los cálculos posteriores.
- Corrección de monotonía: se fuerza la coordenada `X` a ser monótona creciente o igual hacia adelante, evitando inversiones de tramo que producirían divisiones por `dx` negativas o nulas.
- Saturación de entrada: si `#ValorActual` está por debajo del primer punto, la salida toma directamente el primer `Y`; si está por encima del último, toma el último `Y`, abortando el resto del escaneo para optimizar el tiempo de ciclo.
- Búsqueda del segmento activo: recorre los `#MAX_PUNTOS - 1` segmentos y detecta aquel en el que se encuentra el valor de entrada.
- Interpolación lineal: calcula los deltas `dx` y `dy` del segmento y aplica la ecuación `Y = (X - X1) * (dY / dX) + Y1`. En caso de `dx` nulo (tramo vertical o degenerado) se asigna directamente el `Y` del extremo inferior para evitar división por cero.
- Publicación del resultado en la salida `#Valor` una vez finalizado el cálculo.
> **Restricciones:** Ninguna.
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 02.10.2023 | (ABH) | Primera versión. |
*)
END_REGION DESCRIPCION
// ===============================================================================================================
REGION LIMITES_VALORES
#s_ValorActual := #ValorActual;
#s_NumeroPuntos := #NumeroPuntos;
// Límite en configuración de número de puntos activos
IF #s_NumeroPuntos < 2 THEN
#s_NumeroPuntos := 2; // Una curva necesita mínimo 2 puntos (X1, Y1) a (X2, Y2)
ELSIF #s_NumeroPuntos > #MAX_PUNTOS THEN
#s_NumeroPuntos := #MAX_PUNTOS;
END_IF;
// Relleno automático de los puntos no utilizados con el último valor válido
FOR #for_i := #s_NumeroPuntos TO #MAX_PUNTOS DO
#s_PuntoX[#for_i] := #s_PuntoX[#s_NumeroPuntos];
#s_PuntoY[#for_i] := #s_PuntoY[#s_NumeroPuntos];
END_FOR;
// Corrección de monotonía (Asegurar que X siempre sea creciente o igual)
FOR #for_i := #MAX_PUNTOS TO 2 BY -1 DO
IF #s_PuntoX[#for_i] < #s_PuntoX[#for_i - 1] THEN
#s_PuntoX[#for_i] := #s_PuntoX[#for_i - 1];
END_IF;
END_FOR;
// Saturación del valor de entrada a los extremos de la curva configurada
IF #s_ValorActual <= #s_PuntoX[1] THEN
#s_ValorActual := #s_PuntoX[1];
#s_Valor := #s_PuntoY[1];
#Valor := #s_Valor;
RETURN; // Si está por debajo, asignamos y abortamos scan (Optimización)
ELSIF #s_ValorActual >= #s_PuntoX[#MAX_PUNTOS] THEN
#s_ValorActual := #s_PuntoX[#MAX_PUNTOS];
#s_Valor := #s_PuntoY[#MAX_PUNTOS];
#Valor := #s_Valor;
RETURN; // Si está por encima, asignamos y abortamos scan
END_IF;
END_REGION LIMITES_VALORES
// ===============================================================================================================
REGION CALCULO_SALIDA
// Búsqueda del segmento activo e interpolación lineal
FOR #for_i := 1 TO (#MAX_PUNTOS - 1) DO
IF (#s_ValorActual >= #s_PuntoX[#for_i]) AND (#s_ValorActual <= #s_PuntoX[#for_i + 1]) THEN
// Cálculo de deltas
#dx := #s_PuntoX[#for_i + 1] - #s_PuntoX[#for_i];
#dy := #s_PuntoY[#for_i + 1] - #s_PuntoY[#for_i];
// Proteccion por división por Cero
IF #dx <= 0.0 THEN
#s_Valor := #s_PuntoY[#for_i]; // Tramo vertical o nulo
ELSE
// Ecuación de la recta: Y = (X - X1) * (dY / dX) + Y1
#s_Valor := ((#s_ValorActual - #s_PuntoX[#for_i]) * (#dy / #dx)) + #s_PuntoY[#for_i];
END_IF;
// Segmento encontrado y calculado. Cortamos el bucle inmediatamente.
EXIT;
END_IF;
END_FOR;
END_REGION CALCULO_SALIDA
// ===============================================================================================================
REGION SALIDA
#Valor := #s_Valor;
END_REGION SALIDA
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,17 @@
MultiLingualTexts:
- id: MLC_4rc
es-ES: FB15105_ZC_CALCULO_CURVA
- id: MLC_Qe
es-ES: Bloque de funcion para calculo curva de 10 puntos maximo.
- id: MLC_5Bz
es-ES: Valor actual
- id: MLC_tn
es-ES: Numero de puntos
- id: MLC_3eH
es-ES: Valor resultante curva
- id: MLC_4k7
es-ES: Valor X
- id: MLC_4Nw
es-ES: Valor Y
- id: MLC_WH
es-ES: Numero maximo de puntos
@@ -15,21 +15,4 @@ DATA_BLOCK DB2717_INST_M_SINA : FB2017_ZC_M_SINA
SeguridadesOK := TRUE;
HWIDSTW[0] := 0;
HWIDZSW[0] := 0;
SinaSpeed[0].EnableAxis := FALSE;
SinaSpeed[0].AckError := FALSE;
SinaSpeed[0].SpeedSp := 0.0;
SinaSpeed[0].RefSpeed := 0.0;
SinaSpeed[0].ConfigAxis := 16#003F;
SinaSpeed[0].HWIDSTW := 0;
SinaSpeed[0].HWIDZSW := 0;
SinaSpeed[0].AxisEnabled := FALSE;
SinaSpeed[0].Lockout := FALSE;
SinaSpeed[0].ActVelocity := 0.0;
SinaSpeed[0].Error := FALSE;
SinaSpeed[0].Status := 16#0000;
SinaSpeed[0].DiagId := 16#0000;
SinaSpeed[0].STW1 := 16#0000;
SinaSpeed[0].VelocitySP := 16#0000;
SinaSpeed[0].ZSW1 := 16#0000;
SinaSpeed[0].VelocityAV := 16#0000;
END_DATA_BLOCK
@@ -58,6 +58,7 @@ FUNCTION_BLOCK "FB2017_ZC_M_SINA"
HWIDSTW : Array[0.._.N_MAX_DISP_M_SINA] of HW_IO;
{ S7_MLC := "MLC_53F" }
HWIDZSW : Array[0.._.N_MAX_DISP_M_SINA] of HW_IO;
{ S7_Setpoint := "False" }
SinaSpeed : Array[0.._.N_MAX_DISP_M_SINA] of SinaSpeed;
END_VAR
VAR_TEMP
@@ -77,46 +78,6 @@ FUNCTION_BLOCK "FB2017_ZC_M_SINA"
{ S7_Language := "SCL" }
NETWORK
(*
ZEUS CONTROL, S.A.
(c)Copyright (2025) All Rights Reserved
--------------------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: DISPOSITIVO SINAMICS
Descripcion: Modelo de dispositivo sinamics (comunicado)
Dependencias:
FC: FC8_ZC_TRAZA_REGISTRO
FB: -
DB: DB2017_DISP_M_SINA
DB2018_INST_M_SINA
DB1_SYS
UDT: ZC_DISP_M_SINA
ZC_DISP_MUX_M_SINA
Change log:
Version Fecha Tecnico a cargo Descripcion
01.00.00 27.04.2020 (ABH) Primera version.
01.00.01 26.05.2020 (ABH) Se añade logica como dispositivo motor VF.
01.00.02 22.09.2022 (HCR) Cambio lógica SinaSpeed
Se añade trazabilidad manualizaciones
Se añade trazabilidad de activación manual
01.00.03 08.11.2022 (HCR) Cambio lógica enclavamiento
01.00.04 18.09.2023 (ABH) Cambio en tipo de dato de horas de alarma. Se utiliza el tipo de dato ZC_CONTADOR_TIEMPO y el FC15025_ZC_CONTADOR_TIEMPO
01.00.05 28.02.2024 (ABH) Se añade gestion multiplexado para Scada (no indexado)
01.00.06 26.03.2025 (ABH) Se añade variable grupo de alarma para separar los nuevos avisos por cuadro.
01.00.07 07.10.2025 (ABH) Se modifica la logica del multiplexado, la asignacion de oldindex se cambia de sitio ya que de vez en cuando (dependiendo de cuando el HMI
realiza la comunicacion asincrona con el PLC) no detectaba el cambio y se machacaban valores.
02.00.00 17.12.2025 (ABH) Se eliminan los idiomas. Se utiliza codigos para trazabilidad. Se elimina entrada "Idioma". Se elimina nombre de UDT. Se añade indexHMI para lista de
texto en sistemas de supervision.
//=====================================================================================
*)
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2020 - 2026
@@ -175,6 +136,8 @@ FUNCTION_BLOCK "FB2017_ZC_M_SINA"
END_REGION DESCRIPCION
REGION LOGICA_DEL_DISPOSITIVO
// =============================================================================
@@ -0,0 +1,96 @@
{
S7_Author := "ABH";
S7_BlockComment := "MLC_4f2";
S7_BlockNumber := "15170";
S7_BlockTitle := "MLC_4gk";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15170_ZC_CIP_FASES"
VAR_INPUT
{ S7_MLC := "MLC_4G4" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_3gc" }
Ack : Bool;
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_3ry" }
Receta : _.UDT_ZC_RECETA_CIP;
END_VAR
VAR_OUTPUT
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_3LL";
S7_Visibility := "Hidden := External"
}
Ordenes : _.UDT_ZC_CIP_FASES_ORDENES;
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_3dR";
S7_Visibility := "Hidden := External"
}
Estados : _.UDT_ZC_CIP_FASES_ESTADOS;
END_VAR
VAR_IN_OUT
{ S7_MLC := "MLC_4pN" }
DispTqAguaRecup : _.UDT_ZC_PRO_INTF_CIP_AGUA_RECUP;
{ S7_MLC := "MLC_Yx" }
DispTqSosa : _.UDT_ZC_PRO_INTF_CIP_SOSA;
{ S7_MLC := "MLC_387" }
DispTqAcido : _.UDT_ZC_PRO_INTF_CIP_ACIDO;
{ S7_MLC := "MLC_3Mh" }
DispTqDesinf : _.UDT_ZC_PRO_INTF_CIP_DESINF;
{ S7_MLC := "MLC_3pm" }
DispTqRechazos : _.UDT_ZC_PRO_INTF_CIP_RECHAZOS;
{ S7_MLC := "MLC_4uV" }
DispTqEsterilizacion : _.UDT_ZC_PRO_INTF_CIP_ESTERIL;
{ S7_MLC := "MLC_4PR" }
Linea : _.UDT_ZC_PRO_INTF_CIP_LINEA;
{ S7_MLC := "MLC_si" }
ChequeoRutaActual : _.UDT_ZC_CIP_CHEQUEO_RUTA;
END_VAR
VAR
{ S7_Setpoint := "False" }
LimpiezaSosa : _.FB15160_ZC_CIP_SOSA_LIMP;
{ S7_Setpoint := "False" }
EnjuagueSosa : _.FB15161_ZC_CIP_SOSA_ENJ;
{ S7_Setpoint := "False" }
LimpiezaAcido : _.FB15162_ZC_CIP_ACIDO_LIMP;
{ S7_Setpoint := "False" }
EnjuagueAcido : _.FB15163_ZC_CIP_ACIDO_ENJ;
{ S7_Setpoint := "False" }
SoloEnjuague : _.FB15164_ZC_CIP_SOLO_ENJ;
{ S7_Setpoint := "False" }
LimpiezaDesinfectante : _.FB15165_ZC_CIP_DESINF_LIMP;
{ S7_Setpoint := "False" }
EnjuagueDesinfectante : _.FB15166_ZC_CIP_DESINF_ENJ;
{ S7_Setpoint := "False" }
Esterilizacion : _.FB15167_ZC_CIP_ESTERIL;
{ S7_Setpoint := "False" }
AguaRecuperada : _.FB15168_ZC_CIP_AGUA_RECUP;
{ S7_Setpoint := "False" }
Rechazos : _.FB15169_ZC_CIP_RECUP_RECHAZO;
END_VAR
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_wz"
}
NETWORK
RUNG wire#powerrail
#Rechazos(
Pulso1Seg := #Pulso1Seg,
Ack := #Ack,
EstadoEnMarcha := #EstadoEnMarcha,
ParametrosRechazos := #Receta.Parametros.Rechazos,
ParamComunes := #Receta.Parametros.Comunes,
Linea := #Linea,
ChequeRutaActual := #ChequeoRutaActual,
Orden => #Ordenes.Rechazos,
Estado => #Estados.Rechazos
)
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,33 @@
MultiLingualTexts:
- id: MLC_4gk
es-ES: FB15170_ZC_CIP_FASES
- id: MLC_4f2
es-ES: Bloque de funcion de fases de una CIP
- id: MLC_4G4
es-ES: Pulso de 1 segundo
- id: MLC_3gc
es-ES: Acuse general
- id: MLC_3ry
es-ES: Receta CIP
- id: MLC_3LL
es-ES: Ordenes fases
- id: MLC_3dR
es-ES: Estados fases
- id: MLC_4pN
es-ES: TQ Agua Recuperada
- id: MLC_Yx
es-ES: TQ Sosa
- id: MLC_387
es-ES: TQ Acido
- id: MLC_3Mh
es-ES: TQ Desinfectante
- id: MLC_3pm
es-ES: TQ Rechazos
- id: MLC_4uV
es-ES: TQ Esterilizacion
- id: MLC_4PR
es-ES: Linea
- id: MLC_si
es-ES: Cheque ruta actual
- id: MLC_wz
es-ES: RECUPERACION RECHAZOS - FB Gestion
@@ -0,0 +1,949 @@
{
S7_Author := "HCR";
S7_BlockComment := "MLC_4Xe";
S7_BlockNumber := "15154";
S7_BlockTitle := "MLC_52K";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15154_ZC_DOSIF"
VAR_INPUT
{ S7_MLC := "MLC_4qN" }
Pulso1Seg : Bool := FALSE;
{ S7_MLC := "MLC_5AQ" }
OrdenMarcha : Bool := FALSE;
{ S7_MLC := "MLC_b4" }
OrdenDosifManual : Bool := FALSE;
{ S7_MLC := "MLC_4Zd" }
EstadoMarcha : Bool := FALSE;
{ S7_MLC := "MLC_3tL" }
EtapaSecAuto : Bool := FALSE;
{ S7_MLC := "MLC_4pM" }
EtapaSecMan : Bool := FALSE;
{ S7_MLC := "MLC_53w" }
SiempreDosificar : Bool := TRUE;
END_VAR
VAR_INPUT RETAIN
{ S7_MLC := "MLC_44h" }
NumeroDosifLarga : Int := 0;
{ S7_MLC := "MLC_sC" }
NumeroDosifCorta : Int := 1;
{ S7_MLC := "MLC_3hx" }
SP_TiempoAperturaCamino : Int := 2;
{ S7_MLC := "MLC_Nb" }
SP_TiempoDosifLarga : Int := 10;
{ S7_MLC := "MLC_4pR" }
SP_TiempoDosifCorta : Int := 7;
{ S7_MLC := "MLC_34F" }
SP_TiempoEmpuje : Int := 5;
{ S7_MLC := "MLC_3hW" }
SP_TiempoAclarado : Int := 3;
{ S7_MLC := "MLC_4zh" }
SP_TiempoEntreDosif : Int := 10;
END_VAR
VAR_INPUT
{ S7_MLC := "MLC_ex" }
SP_TiempoDrenajeInicial : Int;
END_VAR
VAR_INPUT RETAIN
{ S7_MLC := "MLC_ME" }
SP_Conductividad : Real := 5.0;
{ S7_MLC := "MLC_fy" }
SP_TiempoRetardoDosifManual : Time := T#90s;
{ S7_MLC := "MLC_VL" }
ConductividadActual : Real := 0.0;
{ S7_MLC := "MLC_3ZJ" }
EstadoBombaDosif : Bool := FALSE;
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_3h9" }
DosifAutoCompletada : Bool;
{ S7_MLC := "MLC_3Qe" }
AperturaCamino : Bool := FALSE;
{ S7_MLC := "MLC_3nw" }
Drenaje : Bool;
{ S7_MLC := "MLC_4cW" }
Dosificacion : Bool := FALSE;
{ S7_MLC := "MLC_cL" }
Empuje : Bool := FALSE;
{ S7_MLC := "MLC_4P8" }
Aclarado : Bool := FALSE;
{ S7_MLC := "MLC_UD" }
PermisoDosifManual : Bool := FALSE;
{ S7_MLC := "MLC_4V5" }
TextoEtapa : String[80] := 'REPOSO';
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_4zE" }
s_EtapaDosificacion : Int := 0;
{ S7_MLC := "MLC_4N9" }
s_TipoDosificacionActual : Int := 0;
{ S7_MLC := "MLC_54Y" }
s_DosifLargasRealizadas : Int := 0;
{ S7_MLC := "MLC_jm" }
s_DosifCortasRealizadas : Int := 0;
{ S7_MLC := "MLC_4aL" }
s_DosifLargaCompletada : Bool := FALSE;
{ S7_MLC := "MLC_58h" }
s_DosifCortaCompletada : Bool := FALSE;
END_VAR
VAR
s_Pulsos : Array[0..7] of Bool;
END_VAR
VAR RETAIN
{ S7_Setpoint := "False" }
s_TiempoEtapa : _.UDT_ZC_PRO_TIEMPO_ETAPA;
END_VAR
VAR
{
S7_MLC := "MLC_3Vn";
S7_Setpoint := "False"
}
s_TON_FiltroCondBaja : _.UDT_ZC_DISP_TON;
{
S7_MLC := "MLC_x3";
S7_Setpoint := "False"
}
s_TON_RetardoDosifManual : _.UDT_ZC_DISP_TON;
END_VAR
VAR_TEMP
{ S7_MLC := "MLC_ff" }
t_TiempoDosificacion : Int;
END_VAR
VAR CONSTANT
ETAPA_REPOSO : Int := 0;
ETAPA_COMPROBACION_LARGA : Int := 5;
ETAPA_COMPROBACION_CORTA : Int := 10;
ETAPA_APERTURA_CAMINO : Int := 105;
ETAPA_DOSIFICACION : Int := 110;
ETAPA_EMPUJE : Int := 115;
ETAPA_ACLARADO : Int := 120;
ETAPA_ESPERA_ENTRE_DOSIF : Int := 125;
ETAPA_ESPERA_RECIR : Int := 500;
ETAPA_ESPERA_DOSIF_MANUAL : Int := 510;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3AM"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2023) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 16
Restricciones: PLC serie 1200/1500
Nombre: FB15154_ZC_DOSIF
Descripcion: Bloque de gestion de dosificacion de detergentes
Dependencias:
FC: FC15001_ZC_INT_TO_STRING
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripcion
01.00.00 09.05.2023 (HCR) Primera version
01.01.01 22.05.2023 (ABH) Cambio en nomenclatura de entradas/salidas del bloque.
Cambio en numero de etapas para estandarizacion.
Se eliminan temporizadores redundantes para optimizacion de bloque.
01.00.02 28.05.2023 (ABH) Se cambia logica de etapas de la dosificacion. Se pasa por Input el numero
de dosificaciones largas y cortas que se quieren realizar, de esta manera el
bloque es mucho mas versatil.
01.00.03 15.12.2023 (ABH) Se cambia tipo de dato s_TiempoEtapa de struct a ZC_TIEMPO_ETAPA
01.00.04 16.10.2025 (ABH) Se añade parametro drenaje inicial y su gestion.
01.00.05 31.10.2025 (ABH) Se cambia los temporizadores IEC por temporizadores ZC_TON.
============================================================================
*)
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4F8"
}
NETWORK
"FC2928_ZC_TON_INDV"(Pulso1seg := #Pulso1Seg,
TON := #s_TON_FiltroCondBaja);
"FC2928_ZC_TON_INDV"(Pulso1seg := #Pulso1Seg,
TON := #s_TON_RetardoDosifManual);
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4MZ"
}
NETWORK
CASE #s_EtapaDosificacion OF
#ETAPA_REPOSO:
#TextoEtapa := 'REPOSO';
#ETAPA_APERTURA_CAMINO:
#TextoEtapa := CONCAT_STRING(IN1 := 'APERTURA CAMINO - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_DOSIFICACION:
CASE #s_TipoDosificacionActual OF
1:
IF NOT #EstadoBombaDosif THEN
#TextoEtapa := 'DOSIFICACION - ESPERA BD';
ELSE
IF #Dosificacion THEN
#TextoEtapa := CONCAT_STRING(IN1 := 'DOSIFICACION LARGA ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_DosifLargasRealizadas + 1),
IN3 := ' - ',
IN4 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN5 := ' s');
ELSE
#TextoEtapa := CONCAT_STRING(IN1 := 'DRENAJE (DOSIFICACION LARGA) ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_DosifLargasRealizadas + 1),
IN3 := ' - ',
IN4 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN5 := ' s');
END_IF;
END_IF;
2:
IF #EtapaSecAuto THEN
IF NOT #EstadoBombaDosif THEN
#TextoEtapa := 'DOSIFICACION - ESPERA BD';
ELSE
IF #Dosificacion THEN
#TextoEtapa := CONCAT_STRING(IN1 := 'DOSIFICACION CORTA ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_DosifCortasRealizadas + 1),
IN3 := ' - ',
IN4 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN5 := ' s');
ELSE
#TextoEtapa := CONCAT_STRING(IN1 := 'DRENAJE (DOSIFICACION CORTA) ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_DosifLargasRealizadas + 1),
IN3 := ' - ',
IN4 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN5 := ' s');
END_IF;
END_IF;
ELSE
IF NOT #EstadoBombaDosif THEN
#TextoEtapa := 'DOSIFICACION - ESPERA BD';
ELSE
#TextoEtapa := CONCAT_STRING(IN1 := 'DOSIFICACION MANUAL - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
END_IF;
END_IF;
ELSE
IF NOT #EstadoBombaDosif THEN
#TextoEtapa := 'DOSIFICACION - ESPERA BD';
ELSE
#TextoEtapa := 'DOSIFICACION';
END_IF;
END_CASE;
#ETAPA_EMPUJE:
#TextoEtapa := CONCAT_STRING(IN1 := 'EMPUJE - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_ACLARADO:
#TextoEtapa := CONCAT_STRING(IN1 := 'ACLARADO - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_ESPERA_ENTRE_DOSIF:
#TextoEtapa := CONCAT_STRING(IN1 := 'ESPERA ENTRE DOSIFICACIONES - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_ESPERA_RECIR:
#TextoEtapa := 'ESPERA PASO RECIRCULACION';
#ETAPA_ESPERA_DOSIF_MANUAL:
IF NOT #s_TON_RetardoDosifManual.Q THEN
#TextoEtapa := 'COMPROBACION DOSIFICACION MANUAL';
ELSE
#TextoEtapa := 'ESPERA DOSIFICACION MANUAL';
END_IF;
ELSE
#TextoEtapa := 'FUERA DE PASO';
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_wA"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #ConductividadActual,
in2 := #SP_Conductividad
)
Move(
in := 2,
out1 => #s_TON_FiltroCondBaja.SP
)
S_Coil( #s_TON_FiltroCondBaja.IN )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Kp"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EtapaSecAuto )
I_Contact( #EtapaSecMan )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_ENTRE_DOSIF
)
wire#w2
Move(
in := #ETAPA_REPOSO,
out1 => #s_EtapaDosificacion
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_RECIR
)
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_DOSIF_MANUAL
)
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIFICACION
)
Move(
in := #ETAPA_EMPUJE,
out1 => #s_EtapaDosificacion
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Pv"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_487"
}
NETWORK
CASE #s_TipoDosificacionActual OF
1: // Dosificacion Larga
#t_TiempoDosificacion := #SP_TiempoDosifLarga;
2: // Dosificacion corta
#t_TiempoDosificacion := #SP_TiempoDosifCorta;
ELSE
#t_TiempoDosificacion := #SP_TiempoDosifCorta;
END_CASE;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_Qu"
}
NETWORK
IF #s_EtapaDosificacion = #ETAPA_REPOSO THEN
// ========================================================================================
// En etapa dosificar automatico
IF #EtapaSecAuto AND #OrdenMarcha THEN
// Si esta configurado dosificar siempre independientemente de la conductividad
IF #SiempreDosificar THEN
#s_EtapaDosificacion := #ETAPA_COMPROBACION_LARGA;
ELSE
// Si no esta configurado dosificar siempre, miramos la conductividad
IF #s_TON_FiltroCondBaja.Q THEN
#s_EtapaDosificacion := #ETAPA_COMPROBACION_LARGA;
ELSE
#s_EtapaDosificacion := #ETAPA_ESPERA_RECIR;
END_IF;
END_IF;
#s_TiempoEtapa.Actual := 0;
END_IF;
// ========================================================================================
// En etapa dosificar manual
IF #EtapaSecMan THEN
#s_EtapaDosificacion := #ETAPA_ESPERA_RECIR;
#s_TiempoEtapa.Actual := 0;
END_IF;
// Reset de marcas de estado de dosificacion
#s_DosifLargasRealizadas := #s_DosifCortasRealizadas := #s_TipoDosificacionActual := 0;
#s_DosifLargaCompletada := #s_DosifCortaCompletada := #DosifAutoCompletada:= FALSE;
END_IF;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_UG"
}
NETWORK
IF #s_EtapaDosificacion = #ETAPA_COMPROBACION_LARGA THEN
// ========================================================================================
// Comprobacion de dosificaciones largas, Ya ha dosificado todas.
IF #s_DosifLargasRealizadas >= #NumeroDosifLarga THEN
#s_EtapaDosificacion := #ETAPA_COMPROBACION_CORTA;
#s_TiempoEtapa.Actual := 0;
#s_DosifLargaCompletada := TRUE;
ELSE
#s_EtapaDosificacion := #ETAPA_APERTURA_CAMINO;
#s_TiempoEtapa.Actual := 0;
END_IF;
#s_TipoDosificacionActual := 1;
END_IF;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_43a"
}
NETWORK
IF #s_EtapaDosificacion = #ETAPA_COMPROBACION_CORTA THEN
// ========================================================================================
// Comprobacion de dosificaciones largas, Ya ha dosificado todas.
IF #s_DosifCortasRealizadas >= #NumeroDosifCorta THEN
#s_EtapaDosificacion := #ETAPA_ESPERA_RECIR;
#s_TiempoEtapa.Actual := 0;
#s_DosifCortaCompletada := TRUE;
ELSE
#s_EtapaDosificacion := #ETAPA_APERTURA_CAMINO;
#s_TiempoEtapa.Actual := 0;
END_IF;
#s_TipoDosificacionActual := 2;
END_IF;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3gn"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_APERTURA_CAMINO
)
wire#w1
Move(
in := #SP_TiempoAperturaCamino,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_DOSIFICACION,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Zb"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIFICACION
)
wire#w1
Move(
in := #t_TiempoDosificacion,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #EstadoBombaDosif )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_EMPUJE,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3W8"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_EMPUJE
)
wire#w1
Move(
in := #SP_TiempoEmpuje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_ACLARADO,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3NN"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACLARADO
)
wire#w1
Move(
in := #SP_TiempoAclarado,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_ESPERA_ENTRE_DOSIF,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4HH"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_ENTRE_DOSIF
)
wire#w1
P_Trig( #s_Pulsos[0] )
wire#w2
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_TipoDosificacionActual,
in2 := 1
)
{ S7_Templates := "DestType := Int" }
Inc( #s_DosifLargasRealizadas )
END_RUNG
RUNG wire#w2
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_TipoDosificacionActual,
in2 := 2
)
{ S7_Templates := "DestType := Int" }
Inc( #s_DosifCortasRealizadas )
END_RUNG
RUNG wire#w1
Move(
in := #SP_TiempoEntreDosif,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
wire#w3
Contact( #s_TON_FiltroCondBaja.Q )
wire#w4
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_TipoDosificacionActual,
in2 := 1
)
wire#w5
I_Contact( #s_DosifLargaCompletada )
Move(
in := #ETAPA_COMPROBACION_LARGA,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w5
Contact( #s_DosifLargaCompletada )
Move(
in := #ETAPA_COMPROBACION_CORTA,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w4
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_TipoDosificacionActual,
in2 := 2
)
wire#w6
I_Contact( #s_DosifCortaCompletada )
Move(
in := #ETAPA_COMPROBACION_CORTA,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w6
Contact( #s_DosifCortaCompletada )
Move(
in := #ETAPA_ESPERA_RECIR,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w3
I_Contact( #s_TON_FiltroCondBaja.Q )
Move(
in := #ETAPA_ESPERA_RECIR,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Contact( #EtapaSecMan )
Move(
in := #ETAPA_ESPERA_RECIR,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_LZ"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_RECIR
)
Contact( #EtapaSecMan )
Move(
in := #ETAPA_ESPERA_DOSIF_MANUAL,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
S_Coil( #DosifAutoCompletada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3kt"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_DOSIF_MANUAL
)
wire#w1
Contact( #OrdenDosifManual )
Move(
in := #ETAPA_APERTURA_CAMINO,
out1 => #s_EtapaDosificacion
)
Move(
in := 2,
out1 => #s_TipoDosificacionActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
I_Contact( #EtapaSecMan )
Move(
in := #ETAPA_REPOSO,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3AP"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3jZ"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.SP,
in2 := 32000
)
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
wire#w2
Contact( #EtapaSecAuto )
wire#w3
Contact( #EstadoMarcha )
wire#w4
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w2
Contact( #EtapaSecMan )
END_RUNG wire#w3
RUNG wire#w2
I_Contact( #EtapaSecAuto )
I_Contact( #EtapaSecMan )
END_RUNG wire#w4
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Coil( #s_TiempoEtapa.Cumplido )
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3fL"
}
NETWORK
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3B6"
}
NETWORK
RUNG wire#powerrail
Contact( #EstadoMarcha )
wire#w1
Contact( #EtapaSecAuto )
wire#w2
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_APERTURA_CAMINO
)
Coil( #AperturaCamino )
END_RUNG
RUNG wire#w1
Contact( #EtapaSecMan )
END_RUNG wire#w2
RUNG wire#powerrail
I_Contact( #EtapaSecAuto )
I_Contact( #EtapaSecMan )
END_RUNG wire#w2
RUNG wire#w2
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIFICACION
)
wire#w3
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #SP_TiempoDrenajeInicial
)
Coil( #Drenaje )
END_RUNG
RUNG wire#w3
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #SP_TiempoDrenajeInicial
)
Coil( #Dosificacion )
END_RUNG
RUNG wire#w2
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_EMPUJE
)
Coil( #Empuje )
END_RUNG
RUNG wire#w2
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACLARADO
)
Coil( #Aclarado )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4HB"
}
NETWORK
RUNG wire#powerrail
Contact( #EtapaSecMan )
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ESPERA_DOSIF_MANUAL
)
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #ConductividadActual,
in2 := #SP_Conductividad
)
wire#w1
Move(
in := #SP_TiempoRetardoDosifManual,
out1 => #s_TON_RetardoDosifManual.SP
)
S_Coil( #s_TON_RetardoDosifManual.IN )
END_RUNG
RUNG wire#w1
Contact( #s_TON_RetardoDosifManual.Q )
Coil( #PermisoDosifManual )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,123 @@
MultiLingualTexts:
- id: MLC_52K
es-ES: FB15154_ZC_DOSIF
- id: MLC_4Xe
es-ES: Bloque de funcion para la dosificacion de detergentes.
- id: MLC_4qN
es-ES: Pulso 1 Segundo
- id: MLC_5AQ
es-ES: Orden Marcha Secuencia
- id: MLC_b4
es-ES: Orden de dosificacion manual
- id: MLC_4Zd
es-ES: Estado marcha proceso principal
- id: MLC_3tL
es-ES: Etapa de dosificación auto
- id: MLC_4pM
es-ES: Etapa de dosificación Manual
- id: MLC_53w
es-ES: Configuracion para dosificacion inicial
- id: MLC_44h
es-ES: Numero de dosificaciones largas
- id: MLC_sC
es-ES: Numero de dosificaciones cortas
- id: MLC_3hx
es-ES: Tiempo apertura de camino
- id: MLC_Nb
es-ES: Tiempo de Dosificacion Larga
- id: MLC_4pR
es-ES: Tiempo de Dosificacion Corta
- id: MLC_34F
es-ES: Tiempo Empuje con agua
- id: MLC_3hW
es-ES: Tiempo aclarado
- id: MLC_4zh
es-ES: Tiempo Entre Dosificaciones
- id: MLC_ex
es-ES: Tiempo de drenaje dosificacion
- id: MLC_ME
es-ES: Consigna de conductividad
- id: MLC_fy
es-ES: Tiempo de retardo Dosificacion Manual
- id: MLC_VL
es-ES: Lectura de Conductividad
- id: MLC_3ZJ
es-ES: Confirmacion de marcha BD
- id: MLC_3h9
es-ES: Dosificacion automatica completada
- id: MLC_3Qe
es-ES: Orden de apertura de camino
- id: MLC_3nw
es-ES: Orden drenaje
- id: MLC_4cW
es-ES: Orden de dosificacion
- id: MLC_cL
es-ES: Orden de empuje
- id: MLC_4P8
es-ES: Orden de aclarado
- id: MLC_UD
es-ES: Permiso de dosificacion manual
- id: MLC_4V5
es-ES: Texto etapa actual
- id: MLC_4zE
es-ES: Etapa de Dosificación
- id: MLC_4N9
es-ES: 1= Larga / 2= Corta
- id: MLC_54Y
es-ES: Numero de dosificaciones largas realizadas
- id: MLC_jm
es-ES: Numero de dosificaciones cortas realizadas
- id: MLC_4aL
es-ES: Dosificacion Larga Completada
- id: MLC_58h
es-ES: Dosificacion Corta Completada
- id: MLC_3Vn
es-ES: Temporizador para filtro de conductividad
- id: MLC_x3
es-ES: Retardo para comprobacion de conductividad para dosificacion manual
- id: MLC_ff
es-ES: Tiempo de dosificacion en base a Corta/Larga
- id: MLC_3AM
es-ES: '@Change log'
- id: MLC_4F8
es-ES: =============== Temporizadores
- id: MLC_4MZ
es-ES: =============== TEXTO ETAPA
- id: MLC_wA
es-ES: =============== RETARDO CONDUCTIVIDAD
- id: MLC_4Kp
es-ES: =============== PARO DE SECUENCIA
- id: MLC_4Pv
es-ES: =============== SECUENCIA
- id: MLC_487
es-ES: Carga datos de tipo de dosificacion
- id: MLC_Qu
es-ES: 'Etapa 0: Espera orden de marcha'
- id: MLC_UG
es-ES: 'Etapa 5: Comprobar dosificacion larga'
- id: MLC_43a
es-ES: 'Etapa 10: Comprobar dosificacion corta'
- id: MLC_3gn
es-ES: 'Etapa 105: Apertura camino'
- id: MLC_4Zb
es-ES: 'Etapa 110: Dosificación'
- id: MLC_3W8
es-ES: 'Etapa 115: Empuje'
- id: MLC_3NN
es-ES: 'Etapa 120: Aclarado'
- id: MLC_4HH
es-ES: 'Etapa 125: Espera entre dosificaciones'
- id: MLC_LZ
es-ES: 'Etapa 500: Espera paso recirculación'
- id: MLC_3kt
es-ES: 'Etapa 510: Espera dosificación manual'
- id: MLC_3AP
es-ES: =============== TIEMPO DE ETAPA
- id: MLC_3jZ
es-ES: Contador tiempo
- id: MLC_3fL
es-ES: =============== SALIDAS
- id: MLC_3B6
es-ES: Orden de activacion
- id: MLC_4HB
es-ES: Permiso dosificacion manual
@@ -0,0 +1,852 @@
{
S7_Author := "AketzaBarragues";
S7_BlockComment := "MLC_3Tz";
S7_BlockNumber := "15155";
S7_BlockTitle := "MLC_iG";
S7_Family := "ZeusControl";
S7_GenerateENOforSCL := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15155_ZC_DOSIF_SI70_GARRAFAS"
VAR_INPUT
{ S7_MLC := "MLC_3iD" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_f8" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_39K" }
EstadoMarcha : Bool;
{ S7_MLC := "MLC_xU" }
EtapaSecAuto : Bool;
{ S7_MLC := "MLC_3bV" }
BotonAceptar : Bool;
{ S7_MLC := "MLC_4XJ" }
NumeroGarrafas : Int := 1;
{ S7_MLC := "MLC_4T5" }
SP_TiempoAperturaCamino : Int := 2;
{ S7_MLC := "MLC_3in" }
SP_TiempoDosifSI70 : Int;
{ S7_MLC := "MLC_4uT" }
SP_TiempoEmpuje : Int;
{ S7_MLC := "MLC_XA" }
SP_TiempoAclarado : Int;
{ S7_MLC := "MLC_3Ce" }
EstadoBombaDosif : Bool;
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_52Y" }
DosifCompletada : Bool;
{ S7_MLC := "MLC_3XE" }
AperturaCamino : Bool := FALSE;
{ S7_MLC := "MLC_3Lg" }
Dosificacion : Bool := FALSE;
{ S7_MLC := "MLC_4JL" }
Empuje : Bool := FALSE;
{ S7_MLC := "MLC_3U8" }
Aclarado : Bool := FALSE;
{ S7_MLC := "MLC_3CA" }
VisibilidadGarrafa1 : Bool := FALSE;
{ S7_MLC := "MLC_Mq" }
VisibilidadGarrafa2 : Bool := FALSE;
{ S7_MLC := "MLC_3Mh" }
TextoEtapa : String[80] := 'REPOSO';
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_3Sq" }
s_EtapaDosificacion : Int;
END_VAR
VAR
s_Pulsos : Array[0..7] of Bool;
END_VAR
VAR RETAIN
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_3ZH" }
Activar : Bool;
{ S7_MLC := "MLC_RG" }
Cumplido : Bool;
{ S7_MLC := "MLC_4Zm" }
Actual : Int;
{ S7_MLC := "MLC_4f5" }
SP : Int;
{ S7_MLC := "MLC_3SQ" }
Restante : Int;
END_STRUCT;
END_VAR
VAR CONSTANT
ETAPA_REPOSO : Int := 0;
ETAPA_ACEPTAR_GARRAFA_1 : Int := 5;
ETAPA_APERTURA_CAMINO_1 : Int := 10;
ETAPA_DOSIF_1 : Int := 15;
ETAPA_EMPUJE_1 : Int := 20;
ETAPA_ACLARADO_1 : Int := 25;
ETAPA_ACEPTAR_GARRAFA_2 : Int := 105;
ETAPA_APERTURA_CAMINO_2 : Int := 110;
ETAPA_DOSIF_2 : Int := 115;
ETAPA_EMPUJE_2 : Int := 120;
ETAPA_ACLARADO_2 : Int := 125;
ETAPA_FIN_DOSIF : Int := 500;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_uC"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2022) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 16
Restricciones: PLC serie 1200/1500
Nombre: ZC_STD_Dosificacion_SI70_Garragas
Descripcion: Bloque de gestion de dosificacion de detergentes SI-70 mediante garrafas
Change log:
Version Fecha Tecnico a cargo
01.00.00 19.05.2023 (ABH) Primera version
01.00.01 23.06.2023 (ABH) Se modifica FB para añadir gestion de garrafas
01.00.02 23.06.2023 (ABH) Se modifica FB para añadir salida apertura camino.
Se añade Texto etapa como output.
01.00.03 29.10.2025 (ABH) Se añade tiempo restante a textos de etapa.
============================================================================
*)
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Ur"
}
NETWORK
CASE #s_EtapaDosificacion OF
#ETAPA_REPOSO:
#TextoEtapa := 'REPOSO';
#ETAPA_ACEPTAR_GARRAFA_1:
#TextoEtapa := 'ESPERA ACEPTAR PRIMERA GARRAFA';
#ETAPA_APERTURA_CAMINO_1:
#TextoEtapa := 'APERTURA CAMINO PRIMERA GARRAFA';
#ETAPA_DOSIF_1:
#TextoEtapa := CONCAT_STRING(IN1 := 'DOSIFICACION SI-70 PRIMERA GARRAFA - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_EMPUJE_1:
#TextoEtapa := CONCAT_STRING(IN1 := 'EMPUJE PRIMERA GARRAFA - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_ACLARADO_1:
#TextoEtapa := CONCAT_STRING(IN1 := 'ACLARADO PRIMERA GARRAFA - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_ACEPTAR_GARRAFA_2:
#TextoEtapa := 'ESPERA ACEPTAR SEGUNDA GARRAFA';
#ETAPA_APERTURA_CAMINO_2:
#TextoEtapa := 'APERTURA CAMINO SEGUNDA GARRAFA';
#ETAPA_DOSIF_2:
#TextoEtapa := CONCAT_STRING(IN1 := 'DOSIFICACION SI-70 SEGUNDA GARRAFA - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_EMPUJE_2:
#TextoEtapa := CONCAT_STRING(IN1 := 'EMPUJE SEGUNDA GARRAFA - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_ACLARADO_2:
#TextoEtapa := CONCAT_STRING(IN1 := 'ACLARADO SEGUNDA GARRAFA - ',
IN2 := "FC15001_ZC_INT_TO_STRING"(#s_TiempoEtapa.Restante),
IN3 := ' s');
#ETAPA_FIN_DOSIF:
#TextoEtapa := 'FIN DOSIFICACION';
ELSE
#TextoEtapa := 'FUERA DE PASO';
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Ue"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EtapaSecAuto )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACEPTAR_GARRAFA_1
)
wire#w2
Move(
in := 0,
out1 => #s_EtapaDosificacion
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACEPTAR_GARRAFA_2
)
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_FIN_DOSIF
)
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIF_1
)
wire#w3
Move(
in := 15,
out1 => #s_EtapaDosificacion
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIF_2
)
END_RUNG wire#w3
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4QU"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_yh"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_REPOSO
)
Contact( #EtapaSecAuto )
Contact( #OrdenMarcha )
wire#w1
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #SP_TiempoDosifSI70,
in2 := 0
)
Move(
in := #ETAPA_ACEPTAR_GARRAFA_1,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #SP_TiempoDosifSI70,
in2 := 0
)
Move(
in := #ETAPA_FIN_DOSIF,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4tt"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACEPTAR_GARRAFA_1
)
wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
Contact( #BotonAceptar )
Move(
in := #ETAPA_APERTURA_CAMINO_1,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4tG"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_APERTURA_CAMINO_1
)
wire#w1
P_Trig( #s_Pulsos[0] )
Move(
in := #SP_TiempoAperturaCamino,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_DOSIF_1,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Nh"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIF_1
)
wire#w1
P_Trig( #s_Pulsos[1] )
Move(
in := #SP_TiempoDosifSI70,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #EstadoBombaDosif )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_EMPUJE_1,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_uy"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_EMPUJE_1
)
wire#w1
P_Trig( #s_Pulsos[2] )
Move(
in := #SP_TiempoEmpuje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_ACLARADO_1,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4sg"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACLARADO_1
)
wire#w1
P_Trig( #s_Pulsos[3] )
Move(
in := #SP_TiempoAclarado,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
wire#w2
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #NumeroGarrafas,
in2 := 1
)
Move(
in := #ETAPA_FIN_DOSIF,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w2
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #NumeroGarrafas,
in2 := 1
)
Move(
in := #ETAPA_ACEPTAR_GARRAFA_2,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4ur"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACEPTAR_GARRAFA_2
)
wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
Contact( #BotonAceptar )
Move(
in := #ETAPA_APERTURA_CAMINO_2,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4yF"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_APERTURA_CAMINO_2
)
wire#w1
P_Trig( #s_Pulsos[4] )
Move(
in := #SP_TiempoAperturaCamino,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_DOSIF_2,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_58j"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIF_2
)
wire#w1
P_Trig( #s_Pulsos[5] )
Move(
in := #SP_TiempoDosifSI70,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #EstadoBombaDosif )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_EMPUJE_2,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4gA"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_EMPUJE_2
)
wire#w1
P_Trig( #s_Pulsos[6] )
Move(
in := #SP_TiempoEmpuje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_ACLARADO_2,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3wf"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACLARADO_2
)
wire#w1
P_Trig( #s_Pulsos[7] )
Move(
in := #SP_TiempoAclarado,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := #ETAPA_FIN_DOSIF,
out1 => #s_EtapaDosificacion
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4se"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := 500
)
Coil( #DosifCompletada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_59G"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4jS"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.SP,
in2 := 32000
)
Contact( #EstadoMarcha )
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Coil( #s_TiempoEtapa.Cumplido )
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Dc"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_54k"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaDosificacion,
in2 := 10
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaDosificacion,
in2 := 15
)
wire#w1
Coil( #Dosificacion )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaDosificacion,
in2 := 110
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaDosificacion,
in2 := 115
)
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4ew"
}
NETWORK
RUNG wire#powerrail
Contact( #EstadoMarcha )
Contact( #EtapaSecAuto )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_APERTURA_CAMINO_1
)
wire#w2
Coil( #AperturaCamino )
END_RUNG
RUNG wire#powerrail
I_Contact( #EstadoMarcha )
I_Contact( #EtapaSecAuto )
END_RUNG wire#w1
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_APERTURA_CAMINO_2
)
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIF_1
)
wire#w3
Coil( #Dosificacion )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_DOSIF_2
)
END_RUNG wire#w3
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_EMPUJE_1
)
wire#w4
Coil( #Empuje )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_EMPUJE_2
)
END_RUNG wire#w4
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACLARADO_1
)
wire#w5
Coil( #Aclarado )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACLARADO_2
)
END_RUNG wire#w5
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3K2"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACEPTAR_GARRAFA_1
)
Coil( #VisibilidadGarrafa1 )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaDosificacion,
in2 := #ETAPA_ACEPTAR_GARRAFA_2
)
Coil( #VisibilidadGarrafa2 )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,99 @@
MultiLingualTexts:
- id: MLC_iG
es-ES: FB15155_ZC_DOSIF_SI70_GARRAFAS
- id: MLC_3Tz
es-ES: Bloque de funcion para la dosificacion de SI-70 mediante garrafas
- id: MLC_3iD
es-ES: Pulso 1 Segundo
- id: MLC_f8
es-ES: Orden Marcha Secuencia
- id: MLC_39K
es-ES: Estado marcha proceso principal
- id: MLC_xU
es-ES: Etapa de dosificación auto
- id: MLC_3bV
es-ES: Boton aceptar garrafa
- id: MLC_4XJ
es-ES: 1 o 2 garrafas
- id: MLC_4T5
es-ES: Tiempo apertura de camino
- id: MLC_3in
es-ES: Tiempo de Dosificacion SI-70
- id: MLC_4uT
es-ES: Tiempo Empuje con agua
- id: MLC_XA
es-ES: Tiempo aclarado
- id: MLC_3Ce
es-ES: Confirmacion de marcha BD
- id: MLC_52Y
es-ES: Dosificacion completada
- id: MLC_3XE
es-ES: Orden de apertura de camino
- id: MLC_3Lg
es-ES: Orden de dosificacion
- id: MLC_4JL
es-ES: Orden de empuje
- id: MLC_3U8
es-ES: Orden de aclarado
- id: MLC_3CA
es-ES: Visibilifad cartel Garrafa 1
- id: MLC_Mq
es-ES: Visibilifad cartel Garrafa 2
- id: MLC_3Mh
es-ES: Texto etapa actual
- id: MLC_3Sq
es-ES: Etapa de Dosificación
- id: MLC_3ZH
es-ES: Activar tiempo
- id: MLC_RG
es-ES: Tiempo de etapa cumplido
- id: MLC_4Zm
es-ES: Tiempo de etapa actual
- id: MLC_4f5
es-ES: Set point tiempo etapa
- id: MLC_3SQ
es-ES: Tiempo de etapa restante
- id: MLC_uC
es-ES: '@Change log'
- id: MLC_4Ur
es-ES: =============== TEXTO ETAPA
- id: MLC_4Ue
es-ES: =============== PARO DE SECUENCIA
- id: MLC_4QU
es-ES: =============== SECUENCIA
- id: MLC_yh
es-ES: 'Etapa 0: Espera orden de marcha'
- id: MLC_4tt
es-ES: 'Etapa 5: Espera Aceptar primera Garrafa'
- id: MLC_4tG
es-ES: 'Etapa 10: Apertura camino'
- id: MLC_4Nh
es-ES: 'Etapa 15: Dosificación primera garrafa'
- id: MLC_uy
es-ES: 'Etapa 20: Empuje'
- id: MLC_4sg
es-ES: 'Etapa 25: Aclarado'
- id: MLC_4ur
es-ES: 'Etapa 105: Espera Aceptar sergunda Garrafa'
- id: MLC_4yF
es-ES: 'Etapa 110: Apertura camino'
- id: MLC_58j
es-ES: 'Etapa 115: Dosificación segunda garrafa'
- id: MLC_4gA
es-ES: 'Etapa 120: Empuje'
- id: MLC_3wf
es-ES: 'Etapa 125: Aclarado'
- id: MLC_4se
es-ES: 'Etapa 500: Fin dosificacion'
- id: MLC_59G
es-ES: =============== TIEMPO DE ETAPA
- id: MLC_4jS
es-ES: Contador tiempo
- id: MLC_4Dc
es-ES: =============== SALIDAS
- id: MLC_54k
es-ES: Orden de activacion
- id: MLC_4ew
es-ES: Orden de apertura de camino
- id: MLC_3K2
es-ES: Visibilidad carteles garrafa
@@ -0,0 +1,317 @@
{
S7_Author := "AketzaBarragues";
S7_BlockComment := "MLC_MJ";
S7_BlockNumber := "15156";
S7_BlockTitle := "MLC_4Wx";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15156_ZC_DOSIF_SI100_CARTEL"
VAR_INPUT
{ S7_MLC := "MLC_4uQ" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_4Jj" }
EtapaRecirculacion : Bool;
{ S7_MLC := "MLC_3H3" }
EstadoMarcha : Bool;
{ S7_MLC := "MLC_457" }
Aceptar : Bool;
{ S7_MLC := "MLC_4m8" }
TiempoEntreVentana : Int := 60;
{ S7_MLC := "MLC_3QM" }
EstadoDetectorBTD : Bool;
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_32f" }
MostrarCartel : Bool;
{ S7_MLC := "MLC_57P" }
Finalizado : Bool;
END_VAR
VAR
{ S7_MLC := "MLC_PR" }
s_Etapa : Int;
END_VAR
VAR RETAIN
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_3WU" }
Activar : Bool;
{ S7_MLC := "MLC_4qd" }
Cumplido : Bool;
{ S7_MLC := "MLC_gG" }
Actual : Int;
{ S7_MLC := "MLC_55e" }
SP : Int;
{ S7_MLC := "MLC_32m" }
Restante : Int;
END_STRUCT;
END_VAR
VAR CONSTANT
ETAPA_REPOSO : Int := 0;
ETAPA_MOSTRAR_VENTANA : Int := 5;
ETAPA_ESPERA_APERTURA : Int := 10;
ETAPA_ESPERA_CIERRE : Int := 15;
ETAPA_FIN : Int := 20;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4F4"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2023) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 16
Restricciones: PLC serie 1200/1500
Nombre: FB15156_DOSIF_SI100_CARTEL
Descripcion: Bloque de funcion para gestion de dosificacion SI-100 manual con cartel para confirmar.
Change log:
Version Fecha Tecnico a cargo
01.00.00 22.11.2022 (ABH) Primera version
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_32z"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EtapaRecirculacion )
Move(
in := #ETAPA_REPOSO,
out1 => #s_Etapa
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Qu"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4KG"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_Etapa,
in2 := #ETAPA_REPOSO
)
Contact( #EtapaRecirculacion )
Move(
in := #ETAPA_MOSTRAR_VENTANA,
out1 => #s_Etapa
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_bg"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_Etapa,
in2 := #ETAPA_MOSTRAR_VENTANA
)
Contact( #EtapaRecirculacion )
wire#w1
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Contact( #Aceptar )
Move(
in := 10,
out1 => #s_Etapa
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3wc"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_Etapa,
in2 := #ETAPA_ESPERA_APERTURA
)
Contact( #EtapaRecirculacion )
wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #TiempoEntreVentana
)
Move(
in := #ETAPA_MOSTRAR_VENTANA,
out1 => #s_Etapa
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
I_Contact( #EstadoDetectorBTD )
Move(
in := #ETAPA_ESPERA_CIERRE,
out1 => #s_Etapa
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_352"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_Etapa,
in2 := #ETAPA_ESPERA_CIERRE
)
Contact( #EtapaRecirculacion )
wire#w1
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Contact( #EstadoDetectorBTD )
Move(
in := #ETAPA_FIN,
out1 => #s_Etapa
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_wb"
}
NETWORK
RUNG wire#powerrail
Contact( #EtapaRecirculacion )
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_Etapa,
in2 := 20
)
wire#w1
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Coil( #Finalizado )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3nj"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4FZ"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.SP,
in2 := 32000
)
Contact( #EstadoMarcha )
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Coil( #s_TiempoEtapa.Cumplido )
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4bQ"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3aK"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_Etapa,
in2 := #ETAPA_MOSTRAR_VENTANA
)
Contact( #EtapaRecirculacion )
Coil( #MostrarCartel )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,57 @@
MultiLingualTexts:
- id: MLC_4Wx
es-ES: FB15156_ZC_DOSIF_SI100_CARTEL
- id: MLC_MJ
es-ES: Bloque de funcion para gestion de dosificacion SI-100 manual con cartel para confirmar.
- id: MLC_4uQ
es-ES: Pulso 1 Segundo
- id: MLC_4Jj
es-ES: Etapa de recirculacion
- id: MLC_3H3
es-ES: EstadoMarcha
- id: MLC_457
es-ES: Boton aceptar
- id: MLC_4m8
es-ES: Tiempo entre ventanas
- id: MLC_3QM
es-ES: Detector BTD
- id: MLC_32f
es-ES: Mostrar cartel dosificacion SI-100
- id: MLC_57P
es-ES: Dosificacion finalizada
- id: MLC_PR
es-ES: Etapa actual
- id: MLC_3WU
es-ES: Activar tiempo
- id: MLC_4qd
es-ES: Tiempo de etapa cumplido
- id: MLC_gG
es-ES: Tiempo de etapa actual
- id: MLC_55e
es-ES: Set point tiempo etapa
- id: MLC_32m
es-ES: Tiempo de etapa restante
- id: MLC_4F4
es-ES: '@Change log'
- id: MLC_32z
es-ES: =============== PARO
- id: MLC_4Qu
es-ES: =============== SECUENCIA
- id: MLC_4KG
es-ES: Etapa 0 - Reposo
- id: MLC_bg
es-ES: Etapa 5 - Mostrar ventana
- id: MLC_3wc
es-ES: Etapa 10 - Esperar a detectar apertura de BTD
- id: MLC_352
es-ES: Etapa 15 - Esperar a detectar cierre de BTD
- id: MLC_wb
es-ES: Etapa 20 - Finalizado
- id: MLC_3nj
es-ES: =============== TIEMPO DE ETAPA
- id: MLC_4FZ
es-ES: Contador tiempo
- id: MLC_4bQ
es-ES: =============== SALIDAS
- id: MLC_3aK
es-ES: Mostrar cartel
@@ -0,0 +1,723 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15159";
S7_BlockTitle := "MLC_ry";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15159_ZC_CIP_DOSIF_PREP"
VAR_INPUT
{ S7_MLC := "MLC_3QY" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_eM" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_4yG" }
ResetNumeroDosificaciones : Bool;
{ S7_MLC := "MLC_34k" }
EtapaDosificaciones : Bool;
{ S7_MLC := "MLC_52N" }
SP_TiempoDosLarga : Int := 180;
{ S7_MLC := "MLC_4pq" }
SP_TiempoDosCorta : Int := 60;
{ S7_MLC := "MLC_tJ" }
SP_Empuje : Int := 10;
{ S7_MLC := "MLC_54W" }
SP_Conductividad : Real;
{ S7_MLC := "MLC_4ik" }
ConductividadActual : Real;
END_VAR
VAR_OUTPUT
Dosificación : Bool;
Empuje : Bool;
FinDosificacion : Bool;
NumeroDosificacionesActuales : Int;
END_VAR
VAR_IN_OUT
{ S7_MLC := "MLC_4gy" }
OrdenDosificarLarga : Bool;
{ S7_MLC := "MLC_59p" }
OrdenDosificarCorta : Bool;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_52J" }
s_EtapaActual : Int;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..50] of Bool;
END_VAR
VAR RETAIN
s_TiempoEtapa : STRUCT
Activar : Bool;
Reset : Bool;
Actual : Int;
SP : Int;
Restante : Int;
END_STRUCT;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_vP"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15159_ZC_CIP_DOSIF_PREP
Descripcion: Bloque de gestión de dosificacion preparacion CIP
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 01.03.2023 (ABH) Primera versión
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4WP"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3jg"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EtapaDosificaciones )
wire#w1
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_EtapaActual,
in2 := 10
)
wire#w2
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 100
)
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 10
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 35
)
Move(
in := 45,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_49W"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_g3"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w1
Contact( #OrdenDosificarLarga )
wire#w2
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #ConductividadActual,
in2 := #SP_Conductividad
)
Move(
in := 5,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
R_Coil( #OrdenDosificarLarga )
END_RUNG
RUNG wire#w2
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #ConductividadActual,
in2 := #SP_Conductividad
)
Move(
in := 100,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
R_Coil( #OrdenDosificarLarga )
END_RUNG
RUNG wire#w1
Contact( #OrdenDosificarCorta )
wire#w3
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #ConductividadActual,
in2 := #SP_Conductividad
)
Move(
in := 35,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
{ S7_Templates := "DestType := Int" }
Inc( #NumeroDosificacionesActuales )
R_Coil( #OrdenDosificarCorta )
END_RUNG
RUNG wire#w3
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #ConductividadActual,
in2 := #SP_Conductividad
)
Move(
in := 100,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
R_Coil( #OrdenDosificarCorta )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_42u"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 5
)
wire#w1
P_Trig( #s_Pulsos[0] )
Move(
in := 2,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 10,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4y7"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 10
)
wire#w1
P_Trig( #s_Pulsos[1] )
Move(
in := #SP_TiempoDosLarga,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 15,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3w4"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 15
)
wire#w1
P_Trig( #s_Pulsos[2] )
Move(
in := #SP_Empuje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 20,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_57f"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
wire#w1
P_Trig( #s_Pulsos[3] )
Move(
in := 0,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 100,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3mQ"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 30
)
wire#w1
P_Trig( #s_Pulsos[5] )
Move(
in := 2,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 35,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3my"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 35
)
wire#w1
P_Trig( #s_Pulsos[6] )
Move(
in := #SP_TiempoDosCorta,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 40,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3qJ"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
wire#w1
P_Trig( #s_Pulsos[7] )
Move(
in := #SP_Empuje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 45,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_My"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 45
)
wire#w1
P_Trig( #s_Pulsos[8] )
Move(
in := 0,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 100,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_Nu"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 100
)
wire#w1
P_Trig( #s_Pulsos[9] )
Move(
in := 1,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EtapaDosificaciones )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3m2"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_49J"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4rn"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_37e"
}
NETWORK
RUNG wire#powerrail
Contact( #ResetNumeroDosificaciones )
Move(
in := 0,
out1 => #NumeroDosificacionesActuales
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4SS"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_48p"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 5
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 10
)
wire#w1
Coil( #Dosificación )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 30
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 35
)
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_VU"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 15
)
wire#w1
Coil( #Empuje )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Yu"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 100
)
Coil( #FinDosificacion )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,71 @@
MultiLingualTexts:
- id: MLC_ry
es-ES: FB15159_ZC_DOSIF_PREP
- id: MLC_3QY
es-ES: Pulso un segundo
- id: MLC_eM
es-ES: Estado proceso principal en marcha
- id: MLC_4yG
es-ES: Reset numero de dosificaciones
- id: MLC_34k
es-ES: Etapa dosificaciones proceso principal
- id: MLC_52N
es-ES: Tiempo de dosificación larga
- id: MLC_4pq
es-ES: Tiempo de dosificación corta
- id: MLC_tJ
es-ES: Empuje con agua
- id: MLC_54W
es-ES: Consigna de conductividad
- id: MLC_4ik
es-ES: Lectura de Conductividad
- id: MLC_4gy
es-ES: Orden dosificacion larga
- id: MLC_59p
es-ES: Orden dosificacion corta
- id: MLC_52J
es-ES: Etapa de dosificación
- id: MLC_vP
es-ES: '@Change log'
- id: MLC_4WP
es-ES: =============== Estado secuencia
- id: MLC_3jg
es-ES: Paro de secuencia
- id: MLC_49W
es-ES: =============== Secuencia
- id: MLC_g3
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_42u
es-ES: Etapa 005 - Dosificacion Larga - Apertura camino
- id: MLC_4y7
es-ES: Etapa 010 - Dosificacion Larga - Dosificacion
- id: MLC_3w4
es-ES: Etapa 015 - Dosificacion Larga - Empuje
- id: MLC_57f
es-ES: Etapa 020 - Dosificacion Larga - Aclarado
- id: MLC_3mQ
es-ES: Etapa 030 - Dosificacion Corta - Apertura camino
- id: MLC_3my
es-ES: Etapa 035 - Dosificacion Corta - Dosificacion
- id: MLC_3qJ
es-ES: Etapa 040 - Dosificacion Corta - Empuje
- id: MLC_My
es-ES: Etapa 045 - Dosificacion Corta - Aclarado
- id: MLC_Nu
es-ES: Etapa 100 - Fin dosificacion
- id: MLC_3m2
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_49J
es-ES: Contador tiempo
- id: MLC_4rn
es-ES: =============== Auxiliares
- id: MLC_37e
es-ES: Reset numero de dosificaciones
- id: MLC_4SS
es-ES: =============== Salidas
- id: MLC_48p
es-ES: Dosificación
- id: MLC_VU
es-ES: Empuje
- id: MLC_4Yu
es-ES: Fin dosificacion
@@ -0,0 +1,203 @@
MultiLingualTexts:
- id: MLC_3Hv
es-ES: FB15160_ZC_CIP_SOSA_LIMP
- id: MLC_4pg
es-ES: Nombre de la secuencia
- id: MLC_4CX
es-ES: Pulso 1 segundo
- id: MLC_4v3
es-ES: Acuse general
- id: MLC_4R3
es-ES: Estado proceso principal en marcha
- id: MLC_4NQ
es-ES: Orden pausa adicional
- id: MLC_577
es-ES: Proceso principal en etapas de limpieza
- id: MLC_X6
es-ES: Orden marcha secuencia
- id: MLC_3Sa
es-ES: Habilitacion recuperacion agua
- id: MLC_4ZP
es-ES: Estado bomba de impulsion linea
- id: MLC_3Sf
es-ES: Estado CON retorno linea
- id: MLC_4rf
es-ES: Estado SIN retorno linea
- id: MLC_Xp
es-ES: Destino vacio
- id: MLC_3KB
es-ES: Orden paro bomba impulsion
- id: MLC_4S3
es-ES: Orden paro tiempo limpieza
- id: MLC_4vY
es-ES: Orden fin limpieza
- id: MLC_Rx
es-ES: Conductividad retorno
- id: MLC_XU
es-ES: Temperatura retorno
- id: MLC_3YG
es-ES: Detector HL Tanque Sosa / Acido
- id: MLC_4zT
es-ES: Parametros
- id: MLC_3Hb
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_3hb
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_UM
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_59f
es-ES: Numero de intentos autocebado
- id: MLC_rg
es-ES: Estado Detector flujo intermedio
- id: MLC_3Ls
es-ES: Estado bomba intermedia
- id: MLC_4A6
es-ES: Orden de marcha bomba impulsion
- id: MLC_3KQ
es-ES: Orden de marcha bomba Recirculacion
- id: MLC_rC
es-ES: Orden de marcha bomba Intermedia
- id: MLC_3YL
es-ES: Orden apertura valvula de salida
- id: MLC_39z
es-ES: Orden apertura valvula de envio
- id: MLC_3Sk
es-ES: Orden apertura valvula de retorno
- id: MLC_3Z3
es-ES: Orden apertura valvula de drenaje linea
- id: MLC_4qk
es-ES: Secuencia iniciada
- id: MLC_nr
es-ES: Secuencia finalizada
- id: MLC_4XN
es-ES: Fallo autocebado bomba intermedia
- id: MLC_3TT
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_4xi
es-ES: Tiempo de limpieza
- id: MLC_3iu
es-ES: Etapa actual
- id: MLC_4Ma
es-ES: Etapa actual
- id: MLC_wr
es-ES: Texto etapa
- id: MLC_3xS
es-ES: P_TRIG Etapa 5
- id: MLC_4Md
es-ES: P_TRIG Etapa 10
- id: MLC_3LS
es-ES: P_TRIG Etapa 20
- id: MLC_3vu
es-ES: P_TRIG Etapa 30
- id: MLC_3em
es-ES: P_TRIG Etapa 40
- id: MLC_y8
es-ES: P_TRIG Etapa 50
- id: MLC_3RU
es-ES: P_TRIG Etapa 60
- id: MLC_3r6
es-ES: P_TRIG Etapa 70
- id: MLC_RV
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_4ji
es-ES: Numero de intentos de autocebado
- id: MLC_3WB
es-ES: Retardo destino vacio
- id: MLC_48N
es-ES: Retardo condiciones limpieza
- id: MLC_4ks
es-ES: Pausa
- id: MLC_pK
es-ES: Continuar
- id: MLC_sA
es-ES: Retardo fin drenaje
- id: MLC_ea
es-ES: Retardo inicio drenaje
- id: MLC_48r
es-ES: Retardo desconexion valvula envio
- id: MLC_3cL
es-ES: Retardo desconexion valvula retorno
- id: MLC_58Z
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_53z
es-ES: Retardo desconexion valvula salida
- id: MLC_4pU
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_4Qt
es-ES: Bomba Intermedia
- id: MLC_3VZ
es-ES: '@Change log'
- id: MLC_4Kr
es-ES: =============== Estado secuencia
- id: MLC_4PW
es-ES: Pausa
- id: MLC_37A
es-ES: Paro de secuencia
- id: MLC_4Az
es-ES: Texto Etapa
- id: MLC_vc
es-ES: =============== Secuencia
- id: MLC_3ap
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3iH
es-ES: Etapa 005 - Paro bomba para apertura de caminos
- id: MLC_3eS
es-ES: Etapa 010 - Envio a destinos
- id: MLC_3t4
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_Wh
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_3s8
es-ES: Etapa 040 - Limpieza
- id: MLC_QZ
es-ES: Etapa 050 - Reserva
- id: MLC_4Uy
es-ES: Etapa 060 - Fin de limpieza
- id: MLC_4by
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_4tc
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_vC
es-ES: Contador tiempo
- id: MLC_5A3
es-ES: Temporizadores
- id: MLC_3eg
es-ES: =============== Auxiliares
- id: MLC_iJ
es-ES: Gestion condiciones drenaje
- id: MLC_3w2
es-ES: =============== Salidas
- id: MLC_425
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_46n
es-ES: Bomba Recirculacion - Orden de marcha
- id: MLC_4Bn
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_3Wm
es-ES: Bomba Intermedia - FF con DF
- id: MLC_568
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_47U
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_3pR
es-ES: Valvula de salida - Orden de activacion
- id: MLC_4re
es-ES: Valvula Drenaje - Orden de activacion
- id: MLC_42i
es-ES: Valvula Salida Tanque - Orden de activacion
- id: MLC_eh
es-ES: Valvula Retorno - Orden de activacion
- id: MLC_36L
es-ES: Secuencia iniciada
- id: MLC_3dp
es-ES: Fin secuencia
- id: MLC_4zZ
es-ES: Tiempo Limpieza
- id: MLC_4RP
es-ES: Condiciones ok
- id: MLC_4MG
es-ES: Etapa actual
- id: MLC_3Cs
es-ES: =============== Alarmas
- id: MLC_4Dh
es-ES: Fallo autocebado
@@ -0,0 +1,215 @@
MultiLingualTexts:
- id: MLC_4uu
es-ES: FB15161_ZC_CIP_SOSA_ENJ
- id: MLC_LU
es-ES: Nombre de la secuencia
- id: MLC_4zZ
es-ES: Pulso 1 segundo
- id: MLC_4k6
es-ES: Acuse general
- id: MLC_QG
es-ES: Estado proceso principal en marcha
- id: MLC_4An
es-ES: Orden pausa adicional
- id: MLC_4et
es-ES: Proceso principal en etapas de enjuague
- id: MLC_3rD
es-ES: Orden marcha secuencia
- id: MLC_4NN
es-ES: Habilitacion recuperacion agua
- id: MLC_3Yh
es-ES: Estado bomba de impulsion linea
- id: MLC_3iQ
es-ES: Estado CON retorno linea
- id: MLC_3Fk
es-ES: Estado SIN retorno linea
- id: MLC_U2
es-ES: Destino vacio
- id: MLC_3Aw
es-ES: Orden paro bomba impulsion
- id: MLC_56T
es-ES: Orden paro tiempo limpieza
- id: MLC_4Ey
es-ES: Orden fin limpieza
- id: MLC_37C
es-ES: Conductividad retorno
- id: MLC_4X8
es-ES: Temperatura retorno
- id: MLC_54s
es-ES: Detector HL Tanque Sosa / Acido
- id: MLC_3zM
es-ES: Detector HL Tanque agua recuperada
- id: MLC_37d
es-ES: Parametros
- id: MLC_TF
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_4nx
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_n7
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_3xJ
es-ES: Numero de intentos autocebado
- id: MLC_3kU
es-ES: Estado Detector flujo intermedio
- id: MLC_4H2
es-ES: Estado bomba intermedia
- id: MLC_nj
es-ES: Orden de marcha bomba impulsion
- id: MLC_54Y
es-ES: MarchaBombaIntermedia
- id: MLC_345
es-ES: Orden apertura valvula de envio Agua
- id: MLC_4g4
es-ES: Orden apertura valvula de retorno a TQ SOSA/ACIDO
- id: MLC_57R
es-ES: Orden apertura valvula de retorno a TQ Agua Recuperada
- id: MLC_4fu
es-ES: Orden apertura valvula de retorno
- id: MLC_3GB
es-ES: Orden apertura valvula envio CIP
- id: MLC_3wJ
es-ES: Orden apertura valvula envio a DQO
- id: MLC_Yu
es-ES: Secuencia iniciada
- id: MLC_4dX
es-ES: Fallo autocebado bomba intermedia
- id: MLC_Xa
es-ES: Secuencia finalizada
- id: MLC_4Jn
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_4s6
es-ES: Etapa actual
- id: MLC_4kw
es-ES: Etapa actual
- id: MLC_4Xr
es-ES: Texto etapa
- id: MLC_4kW
es-ES: P_TRIG Etapa 5
- id: MLC_4Df
es-ES: P_TRIG Etapa 10
- id: MLC_4kt
es-ES: P_TRIG Etapa 20
- id: MLC_3rZ
es-ES: P_TRIG Etapa 30
- id: MLC_3VW
es-ES: P_TRIG Etapa 40
- id: MLC_Ys
es-ES: P_TRIG Etapa 50
- id: MLC_Rc
es-ES: P_TRIG Etapa 60
- id: MLC_3L5
es-ES: P_TRIG Etapa 70
- id: MLC_Xx
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_3t7
es-ES: Tiempo para enjuague ok por conductividad
- id: MLC_3jm
es-ES: Numero de intentos de autocebado
- id: MLC_zw
es-ES: Retardo destino vacio 1
- id: MLC_3vP
es-ES: Retardo destino vacio 2
- id: MLC_4D5
es-ES: Pausa
- id: MLC_42P
es-ES: Continuar
- id: MLC_Lr
es-ES: Retardo fin drenaje
- id: MLC_44T
es-ES: Retardo inicio drenaje
- id: MLC_3JL
es-ES: Retardo desconexion valvula envio
- id: MLC_33c
es-ES: Retardo desconexion valvula retorno tanque sosa/acido
- id: MLC_sc
es-ES: Retardo desconexion valvula retorno tanque agua recup.
- id: MLC_Qs
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_3sa
es-ES: Retardo desconexion valvula salida
- id: MLC_4fq
es-ES: Retardo desconexion valvula DQO
- id: MLC_3vk
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_3PZ
es-ES: Bomba intermedia
- id: MLC_3eE
es-ES: '@Change log'
- id: MLC_3r3
es-ES: =============== Estado secuencia
- id: MLC_45u
es-ES: Pausa
- id: MLC_nq
es-ES: Paro de secuencia
- id: MLC_3j5
es-ES: Texto Etapa
- id: MLC_Wa
es-ES: =============== Secuencia
- id: MLC_34L
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3ZN
es-ES: Etapa 005 - Paro bomba para apertura de camino
- id: MLC_LK
es-ES: Etapa 010 - Envio a destinos
- id: MLC_499
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_52Q
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_PS
es-ES: Etapa 040 - Enjuague
- id: MLC_3WA
es-ES: Etapa 050 - Vaciado de destinos
- id: MLC_cL
es-ES: Etapa 060 - Fin de enjuague
- id: MLC_4YR
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_38D
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_mh
es-ES: Contador tiempo
- id: MLC_NK
es-ES: Temporizadores
- id: MLC_3kz
es-ES: =============== Auxiliares
- id: MLC_4C9
es-ES: Gestion condiciones drenaje
- id: MLC_jK
es-ES: Gestion condiciones agua recuperada
- id: MLC_3Ts
es-ES: Gestion envio a tanque DQO
- id: MLC_kw
es-ES: =============== Salidas
- id: MLC_3pd
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_3Cr
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_3nJ
es-ES: Bomba Intermedia - FF con DF
- id: MLC_3Ec
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_VE
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_3QR
es-ES: Valvula de salida - Orden de activacion
- id: MLC_3zC
es-ES: Valvula de envio agua - Orden de activacion
- id: MLC_48t
es-ES: Valvula Drenaje Linea - Orden de activacion
- id: MLC_4MG
es-ES: Valvula de retorno a TQ SOSA/ACIDO - Orden de activacion
- id: MLC_4SU
es-ES: Valvula de retorno a TQ Agua Recuperada - Orden de activacion
- id: MLC_ns
es-ES: Valvula de envio a DQO - Orden de activacion
- id: MLC_3Rh
es-ES: Secuencia iniciada
- id: MLC_57J
es-ES: Fin secuencia
- id: MLC_4Hb
es-ES: Condiciones ok
- id: MLC_4P8
es-ES: Etapa actual
- id: MLC_3MJ
es-ES: =============== Alarmas
- id: MLC_42x
es-ES: Fallo autocebado
@@ -0,0 +1,197 @@
MultiLingualTexts:
- id: MLC_44R
es-ES: FB15162_ZC_CIP_ACIDO_LIMP
- id: MLC_sx
es-ES: Nombre de la secuencia
- id: MLC_c4
es-ES: Pulso 1 segundo
- id: MLC_4Js
es-ES: Acuse general
- id: MLC_3V5
es-ES: Estado proceso principal en marcha
- id: MLC_3cH
es-ES: Orden pausa adicional
- id: MLC_bk
es-ES: Proceso principal en etapas de limpieza
- id: MLC_3GV
es-ES: Orden marcha secuencia
- id: MLC_4EN
es-ES: Habilitacion recuperacion agua
- id: MLC_42L
es-ES: Estado bomba de impulsion linea
- id: MLC_4XE
es-ES: Estado CON retorno linea
- id: MLC_4J8
es-ES: Estado SIN retorno linea
- id: MLC_3m8
es-ES: Destino vacio
- id: MLC_3tq
es-ES: Conductividad retorno
- id: MLC_4fj
es-ES: Temperatura retorno
- id: MLC_Xw
es-ES: Orden paro bomba impulsion
- id: MLC_Un
es-ES: Detector HL Tanque Sosa / Acido
- id: MLC_59x
es-ES: Orden paro tiempo limpieza
- id: MLC_3c3
es-ES: Orden fin limpieza
- id: MLC_T7
es-ES: Parametros
- id: MLC_39X
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_339
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_4PB
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_z2
es-ES: Numero de intentos autocebado
- id: MLC_4df
es-ES: Estado Detector flujo intermedio
- id: MLC_43B
es-ES: Estado bomba intermedia
- id: MLC_pZ
es-ES: Orden de marcha bomba impulsion
- id: MLC_3Xf
es-ES: Orden de marcha bomba Recirculacion
- id: MLC_L8
es-ES: Orden de marcha bomba Intermedia
- id: MLC_y7
es-ES: Orden apertura valvula de envio
- id: MLC_WD
es-ES: Orden apertura valvula de retorno
- id: MLC_3Px
es-ES: Secuencia iniciada
- id: MLC_a8
es-ES: Secuencia finalizada
- id: MLC_3bA
es-ES: Fallo autocebado bomba intermedia
- id: MLC_4s6
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_4nY
es-ES: Tiempo de limpieza
- id: MLC_Yu
es-ES: Etapa actual
- id: MLC_59L
es-ES: Etapa actual
- id: MLC_4UX
es-ES: Texto etapa
- id: MLC_3wm
es-ES: P_TRIG Etapa 5
- id: MLC_53L
es-ES: P_TRIG Etapa 10
- id: MLC_3FN
es-ES: P_TRIG Etapa 20
- id: MLC_43D
es-ES: P_TRIG Etapa 30
- id: MLC_43M
es-ES: P_TRIG Etapa 40
- id: MLC_4m9
es-ES: P_TRIG Etapa 50
- id: MLC_3QX
es-ES: P_TRIG Etapa 60
- id: MLC_4iy
es-ES: P_TRIG Etapa 70
- id: MLC_3VK
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_4DZ
es-ES: Retardo destino vacio
- id: MLC_4wa
es-ES: Retardo condiciones limpieza
- id: MLC_Ta
es-ES: Pausa
- id: MLC_T8
es-ES: Continuar
- id: MLC_5BN
es-ES: Retardo fin drenaje
- id: MLC_4ME
es-ES: Retardo inicio drenaje
- id: MLC_3Xj
es-ES: Retardo desconexion valvula envio
- id: MLC_58v
es-ES: Retardo desconexion valvula retorno
- id: MLC_4kU
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_4Qq
es-ES: Retardo desconexion valvula salida
- id: MLC_3AZ
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_4pJ
es-ES: Bomba Intermedia
- id: MLC_Sp
es-ES: '@Change log'
- id: MLC_3X7
es-ES: =============== Estado secuencia
- id: MLC_4ph
es-ES: Pausa
- id: MLC_567
es-ES: Paro de secuencia
- id: MLC_ap
es-ES: Texto Etapa
- id: MLC_Vp
es-ES: =============== Secuencia
- id: MLC_4sq
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_4vh
es-ES: Etapa 005 - Paro bomba para apertura de caminos
- id: MLC_fr
es-ES: Etapa 010 - Envio a destinos
- id: MLC_qr
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_XP
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_4FJ
es-ES: Etapa 040 - Limpieza
- id: MLC_4Ev
es-ES: Etapa 050 - Reserva
- id: MLC_4sB
es-ES: Etapa 060 - Fin de limpieza
- id: MLC_gh
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_PY
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4ux
es-ES: Contador tiempo
- id: MLC_3NV
es-ES: Temporizadores
- id: MLC_3Ka
es-ES: =============== Auxiliares
- id: MLC_4xk
es-ES: Gestion condiciones drenaje
- id: MLC_3KV
es-ES: =============== Salidas
- id: MLC_4PJ
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_3CN
es-ES: Bomba Recirculacion - Orden de marcha
- id: MLC_3Tf
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_wL
es-ES: Bomba Intermedia - FF con DF
- id: MLC_5CP
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_42a
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_38t
es-ES: Valvula de salida - Orden de activacion
- id: MLC_XT
es-ES: Valvula Drenaje - Orden de activacion
- id: MLC_4Ap
es-ES: Valvula Salida Tanque - Orden de activacion
- id: MLC_Ks
es-ES: Valvula Retorno - Orden de activacion
- id: MLC_MH
es-ES: Secuencia iniciada
- id: MLC_354
es-ES: Fin secuencia
- id: MLC_3uz
es-ES: Tiempo Limpieza
- id: MLC_4zx
es-ES: Condiciones ok
- id: MLC_3ZF
es-ES: Etapa actual
- id: MLC_4mg
es-ES: =============== Alarmas
- id: MLC_3H2
es-ES: Fallo autocebado
@@ -0,0 +1,215 @@
MultiLingualTexts:
- id: MLC_43v
es-ES: FB15163_ZC_CIP_ACIDO_ENJ
- id: MLC_My
es-ES: Nombre de la secuencia
- id: MLC_sd
es-ES: Pulso 1 segundo
- id: MLC_Vy
es-ES: Acuse general
- id: MLC_58w
es-ES: Estado proceso principal en marcha
- id: MLC_3an
es-ES: Orden pausa adicional
- id: MLC_4WL
es-ES: Proceso principal en etapas de enjuague
- id: MLC_33q
es-ES: Orden marcha secuencia
- id: MLC_4yU
es-ES: Habilitacion recuperacion agua
- id: MLC_4yy
es-ES: Estado bomba de impulsion linea
- id: MLC_57W
es-ES: Estado CON retorno linea
- id: MLC_33g
es-ES: Estado SIN retorno linea
- id: MLC_4fJ
es-ES: Destino vacio
- id: MLC_3Pc
es-ES: Orden paro bomba impulsion
- id: MLC_rh
es-ES: Orden paro tiempo limpieza
- id: MLC_3nF
es-ES: Orden fin limpieza
- id: MLC_3ku
es-ES: Conductividad retorno
- id: MLC_4HB
es-ES: Temperatura retorno
- id: MLC_4i7
es-ES: Detector HL Tanque Sosa / Acido
- id: MLC_45n
es-ES: Detector HL Tanque agua recuperada
- id: MLC_qq
es-ES: Parametros
- id: MLC_dm
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_54k
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_4L2
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_3W7
es-ES: Numero de intentos autocebado
- id: MLC_nR
es-ES: Estado Detector flujo intermedio
- id: MLC_3xp
es-ES: Estado bomba intermedia
- id: MLC_4AE
es-ES: Orden de marcha bomba impulsion
- id: MLC_3ha
es-ES: MarchaBombaIntermedia
- id: MLC_4Td
es-ES: Orden apertura valvula de envio Agua
- id: MLC_3qp
es-ES: Orden apertura valvula de retorno a TQ SOSA/ACIDO
- id: MLC_3fn
es-ES: Orden apertura valvula de retorno a TQ Agua Recuperada
- id: MLC_ay
es-ES: Orden apertura valvula de retorno
- id: MLC_Nb
es-ES: Orden apertura valvula envio CIP
- id: MLC_4f4
es-ES: Orden apertura valvula envio a DQO
- id: MLC_3pf
es-ES: Secuencia iniciada
- id: MLC_4X8
es-ES: Fallo autocebado bomba intermedia
- id: MLC_3G5
es-ES: Secuencia finalizada
- id: MLC_ig
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_55k
es-ES: Etapa actual
- id: MLC_ea
es-ES: Etapa actual
- id: MLC_3fu
es-ES: Texto etapa
- id: MLC_4Qn
es-ES: P_TRIG Etapa 5
- id: MLC_RB
es-ES: P_TRIG Etapa 10
- id: MLC_45k
es-ES: P_TRIG Etapa 20
- id: MLC_3EW
es-ES: P_TRIG Etapa 30
- id: MLC_3Rd
es-ES: P_TRIG Etapa 40
- id: MLC_3zw
es-ES: P_TRIG Etapa 50
- id: MLC_3kn
es-ES: P_TRIG Etapa 60
- id: MLC_3sj
es-ES: P_TRIG Etapa 70
- id: MLC_3zP
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_3zN
es-ES: Tiempo para enjuague ok por conductividad
- id: MLC_3HU
es-ES: Numero de intentos de autocebado
- id: MLC_4Qz
es-ES: Retardo destino vacio 1
- id: MLC_3P7
es-ES: Retardo destino vacio 2
- id: MLC_38N
es-ES: Pausa
- id: MLC_3sa
es-ES: Continuar
- id: MLC_jg
es-ES: Retardo fin drenaje
- id: MLC_3AR
es-ES: Retardo inicio drenaje
- id: MLC_XG
es-ES: Retardo desconexion valvula envio
- id: MLC_47d
es-ES: Retardo desconexion valvula retorno tanque sosa/acido
- id: MLC_R5
es-ES: Retardo desconexion valvula retorno tanque agua recup.
- id: MLC_34i
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_hk
es-ES: Retardo desconexion valvula salida
- id: MLC_3uE
es-ES: Retardo desconexion valvula DQO
- id: MLC_3FG
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_4Cj
es-ES: Bomba intermedia
- id: MLC_4ze
es-ES: '@Change log'
- id: MLC_4wb
es-ES: =============== Estado secuencia
- id: MLC_3Cb
es-ES: Pausa
- id: MLC_4cP
es-ES: Paro de secuencia
- id: MLC_kR
es-ES: Texto Etapa
- id: MLC_TY
es-ES: =============== Secuencia
- id: MLC_3yZ
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3G6
es-ES: Etapa 005 - Paro bomba para apertura de camino
- id: MLC_3d6
es-ES: Etapa 010 - Envio a destinos
- id: MLC_PZ
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_4ki
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_3yb
es-ES: Etapa 040 - Enjuague
- id: MLC_3zE
es-ES: Etapa 050 - Vaciado de destinos
- id: MLC_3Kf
es-ES: Etapa 060 - Fin de enjuague
- id: MLC_4n9
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_4Jv
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4Hr
es-ES: Contador tiempo
- id: MLC_YU
es-ES: Temporizadores
- id: MLC_3Js
es-ES: =============== Auxiliares
- id: MLC_3RM
es-ES: Gestion condiciones drenaje
- id: MLC_4ZL
es-ES: Gestion condiciones agua recuperada
- id: MLC_5AS
es-ES: Gestion envio a tanque DQO
- id: MLC_36C
es-ES: =============== Salidas
- id: MLC_4bH
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_jU
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_yG
es-ES: Bomba Intermedia - FF con DF
- id: MLC_3FB
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_55m
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_56X
es-ES: Valvula de salida - Orden de activacion
- id: MLC_4Yi
es-ES: Valvula de envio agua - Orden de activacion
- id: MLC_34m
es-ES: Valvula Drenaje Linea - Orden de activacion
- id: MLC_44t
es-ES: Valvula de retorno a TQ SOSA/ACIDO - Orden de activacion
- id: MLC_3hP
es-ES: Valvula de retorno a TQ Agua Recuperada - Orden de activacion
- id: MLC_44Y
es-ES: Valvula de envio a DQO - Orden de activacion
- id: MLC_uf
es-ES: Secuencia iniciada
- id: MLC_3VD
es-ES: Fin secuencia
- id: MLC_Ws
es-ES: Condiciones ok
- id: MLC_4rJ
es-ES: Etapa actual
- id: MLC_3w5
es-ES: =============== Alarmas
- id: MLC_4SW
es-ES: Fallo autocebado
@@ -0,0 +1,209 @@
MultiLingualTexts:
- id: MLC_VR
es-ES: FB15164_ZC_CIP_SOLO_ENJ
- id: MLC_gh
es-ES: Nombre de la secuencia
- id: MLC_3h6
es-ES: Pulso 1 segundo
- id: MLC_b5
es-ES: Acuse general
- id: MLC_4Ja
es-ES: Estado proceso principal en marcha
- id: MLC_Ld
es-ES: Orden pausa adicional
- id: MLC_3w3
es-ES: Proceso principal en etapas de enjuague
- id: MLC_45w
es-ES: Orden marcha secuencia
- id: MLC_4Pm
es-ES: Habilitacion recuperacion agua
- id: MLC_3jM
es-ES: Estado bomba de impulsion linea
- id: MLC_4gw
es-ES: Estado CON retorno linea
- id: MLC_4SS
es-ES: Estado SIN retorno linea
- id: MLC_4GJ
es-ES: Destino vacio
- id: MLC_4R9
es-ES: Orden paro bomba impulsion
- id: MLC_3zL
es-ES: Orden paro tiempo limpieza
- id: MLC_3ew
es-ES: Orden fin limpieza
- id: MLC_nj
es-ES: Conductividad retorno
- id: MLC_4px
es-ES: Temperatura retorno
- id: MLC_4Gu
es-ES: Detector HL Tanque agua recuperada
- id: MLC_33g
es-ES: Parametros
- id: MLC_is
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_3cm
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_47v
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_59F
es-ES: Numero de intentos autocebado
- id: MLC_4VS
es-ES: Estado Detector flujo intermedio
- id: MLC_ti
es-ES: Estado bomba intermedia
- id: MLC_53k
es-ES: Orden de marcha bomba impulsion
- id: MLC_4XM
es-ES: MarchaBombaIntermedia
- id: MLC_4Qw
es-ES: Orden apertura valvula de envio Agua
- id: MLC_3N7
es-ES: Orden apertura valvula de retorno a TQ Agua Recuperada
- id: MLC_47M
es-ES: Orden apertura valvula de retorno
- id: MLC_36s
es-ES: Orden apertura valvula envio CIP
- id: MLC_4py
es-ES: Orden apertura valvula envio a DQO
- id: MLC_4CH
es-ES: Secuencia iniciada
- id: MLC_4ZN
es-ES: Fallo autocebado bomba intermedia
- id: MLC_3mt
es-ES: Secuencia finalizada
- id: MLC_35T
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_4VV
es-ES: Etapa actual
- id: MLC_4Ck
es-ES: Etapa actual
- id: MLC_4yi
es-ES: Texto etapa
- id: MLC_3vX
es-ES: P_TRIG Etapa 5
- id: MLC_385
es-ES: P_TRIG Etapa 10
- id: MLC_559
es-ES: P_TRIG Etapa 20
- id: MLC_4hf
es-ES: P_TRIG Etapa 30
- id: MLC_f3
es-ES: P_TRIG Etapa 40
- id: MLC_4Ks
es-ES: P_TRIG Etapa 50
- id: MLC_3cN
es-ES: P_TRIG Etapa 60
- id: MLC_4NJ
es-ES: P_TRIG Etapa 70
- id: MLC_3aj
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_4w8
es-ES: Tiempo para enjuague ok por conductividad
- id: MLC_4BQ
es-ES: Numero de intentos de autocebado
- id: MLC_4ma
es-ES: Retardo destino vacio 1
- id: MLC_4Ze
es-ES: Retardo destino vacio 2
- id: MLC_cZ
es-ES: Pausa
- id: MLC_ig
es-ES: Continuar
- id: MLC_4En
es-ES: Retardo fin drenaje
- id: MLC_4Mm
es-ES: Retardo inicio drenaje
- id: MLC_zr
es-ES: Retardo desconexion valvula envio
- id: MLC_3f4
es-ES: Retardo desconexion valvula retorno tanque sosa/acido
- id: MLC_54M
es-ES: Retardo desconexion valvula retorno tanque agua recup.
- id: MLC_3nu
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_4z9
es-ES: Retardo desconexion valvula salida
- id: MLC_XM
es-ES: Retardo desconexion valvula DQO
- id: MLC_3EW
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_3sa
es-ES: Bomba intermedia
- id: MLC_4tV
es-ES: '@Change log'
- id: MLC_3pu
es-ES: =============== Estado secuencia
- id: MLC_k3
es-ES: Pausa
- id: MLC_a4
es-ES: Paro de secuencia
- id: MLC_4pB
es-ES: Texto Etapa
- id: MLC_3VB
es-ES: =============== Secuencia
- id: MLC_3mw
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_35m
es-ES: Etapa 005 - Paro bomba para apertura de camino
- id: MLC_P2
es-ES: Etapa 010 - Envio a destinos
- id: MLC_3RM
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_4tc
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_4R7
es-ES: Etapa 040 - Enjuague
- id: MLC_34J
es-ES: Etapa 050 - Vaciado de destinos
- id: MLC_3F8
es-ES: Etapa 060 - Fin de enjuague
- id: MLC_4Z8
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_33x
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4rx
es-ES: Contador tiempo
- id: MLC_4Kq
es-ES: Temporizadores
- id: MLC_WF
es-ES: =============== Auxiliares
- id: MLC_3hF
es-ES: Gestion condiciones drenaje
- id: MLC_339
es-ES: Gestion condiciones agua recuperada
- id: MLC_54F
es-ES: Gestion envio a tanque DQO
- id: MLC_3qE
es-ES: =============== Salidas
- id: MLC_Pm
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_3V6
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_XE
es-ES: Bomba Intermedia - FF con DF
- id: MLC_4EP
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_z8
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_ZL
es-ES: Valvula de salida - Orden de activacion
- id: MLC_32h
es-ES: Valvula de envio agua - Orden de activacion
- id: MLC_57X
es-ES: Valvula Drenaje Linea - Orden de activacion
- id: MLC_43c
es-ES: Valvula de retorno a TQ Agua Recuperada - Orden de activacion
- id: MLC_4qs
es-ES: Valvula de envio a DQO - Orden de activacion
- id: MLC_58t
es-ES: Secuencia iniciada
- id: MLC_RW
es-ES: Fin secuencia
- id: MLC_4bA
es-ES: Condiciones ok
- id: MLC_3yy
es-ES: Etapa actual
- id: MLC_pH
es-ES: =============== Alarmas
- id: MLC_4st
es-ES: Fallo autocebado
@@ -0,0 +1,197 @@
MultiLingualTexts:
- id: MLC_kE
es-ES: FB15165_ZC_CIP_PERAC_LIMP
- id: MLC_4TM
es-ES: Nombre de la secuencia
- id: MLC_4Wg
es-ES: Pulso 1 segundo
- id: MLC_3Br
es-ES: Acuse general
- id: MLC_4KE
es-ES: Estado proceso principal en marcha
- id: MLC_4eX
es-ES: Orden pausa adicional
- id: MLC_4SE
es-ES: Proceso principal en etapas de limpieza
- id: MLC_4cp
es-ES: Orden marcha secuencia
- id: MLC_4Pq
es-ES: Habilitacion recuperacion agua
- id: MLC_3dr
es-ES: Estado bomba de impulsion linea
- id: MLC_fV
es-ES: Estado CON retorno linea
- id: MLC_gs
es-ES: Estado SIN retorno linea
- id: MLC_3HF
es-ES: Destino vacio
- id: MLC_4Di
es-ES: Orden paro bomba impulsion
- id: MLC_3nm
es-ES: Orden paro tiempo limpieza
- id: MLC_RX
es-ES: Orden fin limpieza
- id: MLC_3zX
es-ES: Conductividad retorno
- id: MLC_3xa
es-ES: Temperatura retorno
- id: MLC_38f
es-ES: Detector HL Tanque Sosa / Acido
- id: MLC_3WP
es-ES: Parametros
- id: MLC_37y
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_39T
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_5AW
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_4km
es-ES: Numero de intentos autocebado
- id: MLC_4FY
es-ES: Estado Detector flujo intermedio
- id: MLC_4NX
es-ES: Estado bomba intermedia
- id: MLC_4da
es-ES: Orden de marcha bomba impulsion
- id: MLC_qK
es-ES: Orden de marcha bomba Recirculacion
- id: MLC_4Yr
es-ES: Orden de marcha bomba Intermedia
- id: MLC_42e
es-ES: Orden apertura valvula de envio
- id: MLC_3BK
es-ES: Orden apertura valvula de retorno
- id: MLC_53n
es-ES: Secuencia iniciada
- id: MLC_5CE
es-ES: Secuencia finalizada
- id: MLC_4dW
es-ES: Fallo autocebado bomba intermedia
- id: MLC_3ht
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_g8
es-ES: Tiempo de limpieza
- id: MLC_3VS
es-ES: Etapa actual
- id: MLC_4HX
es-ES: Etapa actual
- id: MLC_4bp
es-ES: Texto etapa
- id: MLC_3Tn
es-ES: P_TRIG Etapa 5
- id: MLC_4aa
es-ES: P_TRIG Etapa 10
- id: MLC_3A5
es-ES: P_TRIG Etapa 20
- id: MLC_4HS
es-ES: P_TRIG Etapa 30
- id: MLC_aH
es-ES: P_TRIG Etapa 40
- id: MLC_4bV
es-ES: P_TRIG Etapa 50
- id: MLC_3ci
es-ES: P_TRIG Etapa 60
- id: MLC_3iK
es-ES: P_TRIG Etapa 70
- id: MLC_aw
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_4wa
es-ES: Retardo destino vacio
- id: MLC_4P7
es-ES: Retardo condiciones limpieza
- id: MLC_3uT
es-ES: Pausa
- id: MLC_ha
es-ES: Continuar
- id: MLC_4aZ
es-ES: Retardo fin drenaje
- id: MLC_xX
es-ES: Retardo inicio drenaje
- id: MLC_4Hn
es-ES: Retardo desconexion valvula envio
- id: MLC_45w
es-ES: Retardo desconexion valvula retorno
- id: MLC_3sj
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_c8
es-ES: Retardo desconexion valvula salida
- id: MLC_4Ue
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_3Fh
es-ES: Bomba Intermedia
- id: MLC_3kp
es-ES: '@Change log'
- id: MLC_4pb
es-ES: =============== Estado secuencia
- id: MLC_ri
es-ES: Pausa
- id: MLC_4ib
es-ES: Paro de secuencia
- id: MLC_iu
es-ES: Texto Etapa
- id: MLC_4EG
es-ES: =============== Secuencia
- id: MLC_4pZ
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_4Wd
es-ES: Etapa 005 - Paro bomba para apertura de caminos
- id: MLC_4tZ
es-ES: Etapa 010 - Envio a destinos
- id: MLC_4q8
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_4TQ
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_4e5
es-ES: Etapa 040 - Limpieza
- id: MLC_vX
es-ES: Etapa 050 - Reserva
- id: MLC_4vA
es-ES: Etapa 060 - Fin de limpieza
- id: MLC_5CH
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_uT
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_qQ
es-ES: Contador tiempo
- id: MLC_3YE
es-ES: Temporizadores
- id: MLC_ey
es-ES: =============== Auxiliares
- id: MLC_NS
es-ES: Gestion condiciones drenaje
- id: MLC_3mp
es-ES: =============== Salidas
- id: MLC_3wa
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_437
es-ES: Bomba Recirculacion - Orden de marcha
- id: MLC_t4
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_st
es-ES: Bomba Intermedia - FF con DF
- id: MLC_wf
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_y6
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_4NS
es-ES: Valvula de salida - Orden de activacion
- id: MLC_3kz
es-ES: Valvula Drenaje - Orden de activacion
- id: MLC_z6
es-ES: Valvula Salida Tanque - Orden de activacion
- id: MLC_RY
es-ES: Valvula Retorno - Orden de activacion
- id: MLC_bv
es-ES: Secuencia iniciada
- id: MLC_3eh
es-ES: Fin secuencia
- id: MLC_4PG
es-ES: Tiempo Limpieza
- id: MLC_4ek
es-ES: Condiciones ok
- id: MLC_3Y5
es-ES: Etapa actual
- id: MLC_4Lh
es-ES: =============== Alarmas
- id: MLC_55k
es-ES: Fallo autocebado
@@ -0,0 +1,215 @@
MultiLingualTexts:
- id: MLC_aF
es-ES: FB15166_ZC_CIP_PERAC_ENJ
- id: MLC_4ai
es-ES: Nombre de la secuencia
- id: MLC_49i
es-ES: Pulso 1 segundo
- id: MLC_4N2
es-ES: Acuse general
- id: MLC_4tZ
es-ES: Estado proceso principal en marcha
- id: MLC_3WW
es-ES: Orden pausa adicional
- id: MLC_52a
es-ES: Proceso principal en etapas de enjuague
- id: MLC_38k
es-ES: Orden marcha secuencia
- id: MLC_3zp
es-ES: Habilitacion recuperacion agua
- id: MLC_3u9
es-ES: Estado bomba de impulsion linea
- id: MLC_3ib
es-ES: Estado CON retorno linea
- id: MLC_4vk
es-ES: Estado SIN retorno linea
- id: MLC_uq
es-ES: Destino vacio
- id: MLC_rP
es-ES: Orden paro bomba impulsion
- id: MLC_3xJ
es-ES: Orden paro tiempo limpieza
- id: MLC_4j2
es-ES: Orden fin limpieza
- id: MLC_3DL
es-ES: Conductividad retorno
- id: MLC_aQ
es-ES: Temperatura retorno
- id: MLC_3SS
es-ES: Detector HL Tanque Sosa / Acido
- id: MLC_U5
es-ES: Detector HL Tanque agua recuperada
- id: MLC_4Mh
es-ES: Parametros
- id: MLC_rj
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_rN
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_4WE
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_4TN
es-ES: Numero de intentos autocebado
- id: MLC_3kJ
es-ES: Estado Detector flujo intermedio
- id: MLC_xD
es-ES: Estado bomba intermedia
- id: MLC_4x7
es-ES: Orden de marcha bomba impulsion
- id: MLC_4At
es-ES: MarchaBombaIntermedia
- id: MLC_54a
es-ES: Orden apertura valvula de envio Agua
- id: MLC_3D9
es-ES: Orden apertura valvula de retorno a TQ SOSA/ACIDO
- id: MLC_4BL
es-ES: Orden apertura valvula de retorno a TQ Agua Recuperada
- id: MLC_3bS
es-ES: Orden apertura valvula de retorno
- id: MLC_3D6
es-ES: Orden apertura valvula envio CIP
- id: MLC_3NF
es-ES: Orden apertura valvula envio a DQO
- id: MLC_5BY
es-ES: Secuencia iniciada
- id: MLC_3Hq
es-ES: Fallo autocebado bomba intermedia
- id: MLC_3Ct
es-ES: Secuencia finalizada
- id: MLC_3kz
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_4YC
es-ES: Etapa actual
- id: MLC_43B
es-ES: Etapa actual
- id: MLC_4BQ
es-ES: Texto etapa
- id: MLC_mS
es-ES: P_TRIG Etapa 5
- id: MLC_4QG
es-ES: P_TRIG Etapa 10
- id: MLC_3mj
es-ES: P_TRIG Etapa 20
- id: MLC_4hT
es-ES: P_TRIG Etapa 30
- id: MLC_VA
es-ES: P_TRIG Etapa 40
- id: MLC_M4
es-ES: P_TRIG Etapa 50
- id: MLC_4BN
es-ES: P_TRIG Etapa 60
- id: MLC_jG
es-ES: P_TRIG Etapa 70
- id: MLC_3zW
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_yi
es-ES: Tiempo para enjuague ok por conductividad
- id: MLC_3Gn
es-ES: Numero de intentos de autocebado
- id: MLC_3RH
es-ES: Retardo destino vacio 1
- id: MLC_46n
es-ES: Retardo destino vacio 2
- id: MLC_jv
es-ES: Pausa
- id: MLC_4D6
es-ES: Continuar
- id: MLC_4wr
es-ES: Retardo fin drenaje
- id: MLC_45c
es-ES: Retardo inicio drenaje
- id: MLC_4F7
es-ES: Retardo desconexion valvula envio
- id: MLC_4S3
es-ES: Retardo desconexion valvula retorno tanque sosa/acido
- id: MLC_4dE
es-ES: Retardo desconexion valvula retorno tanque agua recup.
- id: MLC_3C2
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_4yK
es-ES: Retardo desconexion valvula salida
- id: MLC_jQ
es-ES: Retardo desconexion valvula DQO
- id: MLC_53g
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_4M7
es-ES: Bomba intermedia
- id: MLC_Zy
es-ES: '@Change log'
- id: MLC_4V9
es-ES: =============== Estado secuencia
- id: MLC_42A
es-ES: Pausa
- id: MLC_4yQ
es-ES: Paro de secuencia
- id: MLC_3Qb
es-ES: Texto Etapa
- id: MLC_kp
es-ES: =============== Secuencia
- id: MLC_52e
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_4R8
es-ES: Etapa 005 - Reserva
- id: MLC_3Jq
es-ES: Etapa 010 - Envio a destinos
- id: MLC_4Yt
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_4vr
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_33P
es-ES: Etapa 040 - Enjuague
- id: MLC_aH
es-ES: Etapa 050 - Vaciado de destinos
- id: MLC_4P8
es-ES: Etapa 060 - Fin de enjuague
- id: MLC_4Wa
es-ES: Etapa 070 ----- Fin de secuencia
- id: MLC_3qV
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_3zm
es-ES: Contador tiempo
- id: MLC_3e4
es-ES: Temporizadores
- id: MLC_4GC
es-ES: =============== Auxiliares
- id: MLC_4zK
es-ES: Gestion condiciones drenaje
- id: MLC_3az
es-ES: Gestion condiciones agua recuperada
- id: MLC_w2
es-ES: Gestion envio a tanque DQO
- id: MLC_4K2
es-ES: =============== Salidas
- id: MLC_rQ
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_4cK
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_df
es-ES: Bomba Intermedia - FF con DF
- id: MLC_3QJ
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_3YD
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_3KQ
es-ES: Valvula de salida - Orden de activacion
- id: MLC_4XA
es-ES: Valvula de envio agua - Orden de activacion
- id: MLC_3Ch
es-ES: Valvula Drenaje Linea - Orden de activacion
- id: MLC_3Yp
es-ES: Valvula de retorno a TQ SOSA/ACIDO - Orden de activacion
- id: MLC_4Dg
es-ES: Valvula de retorno a TQ Agua Recuperada - Orden de activacion
- id: MLC_43U
es-ES: Valvula de envio a DQO - Orden de activacion
- id: MLC_4iC
es-ES: Secuencia iniciada
- id: MLC_sR
es-ES: Fin secuencia
- id: MLC_43n
es-ES: Condiciones ok
- id: MLC_za
es-ES: Etapa actual
- id: MLC_3KW
es-ES: =============== Alarmas
- id: MLC_3Lm
es-ES: Fallo autocebado
@@ -0,0 +1,163 @@
MultiLingualTexts:
- id: MLC_4tM
es-ES: FB15167_ZC_CIP_ESTERIL
- id: MLC_3Gb
es-ES: Nombre de la secuencia
- id: MLC_4Em
es-ES: Pulso 1 segundo
- id: MLC_564
es-ES: Acuse general
- id: MLC_4p3
es-ES: Estado proceso principal en marcha
- id: MLC_zx
es-ES: Orden pausa adicional
- id: MLC_3Hz
es-ES: Proceso principal en etapas de enjuague
- id: MLC_3Wa
es-ES: Orden marcha secuencia
- id: MLC_Uw
es-ES: Estado bomba de impulsion linea
- id: MLC_3eh
es-ES: Estado CON retorno linea
- id: MLC_Sf
es-ES: Estado SIN retorno linea
- id: MLC_356
es-ES: Destino vacio
- id: MLC_3Cb
es-ES: Orden paro bomba impulsion
- id: MLC_4uk
es-ES: Temperatura retorno
- id: MLC_3nK
es-ES: Parametros
- id: MLC_eG
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_3tn
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_4gY
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_Rp
es-ES: Numero de intentos autocebado
- id: MLC_542
es-ES: Estado Detector flujo intermedio
- id: MLC_3eC
es-ES: Estado bomba intermedia
- id: MLC_49T
es-ES: Orden de marcha bomba impulsion
- id: MLC_4Z6
es-ES: MarchaBombaIntermedia
- id: MLC_3Ub
es-ES: Orden apertura valvula de envio Agua
- id: MLC_36n
es-ES: Orden apertura valvula de recirculacion
- id: MLC_fx
es-ES: Orden apertura valvula de retorno
- id: MLC_wd
es-ES: Secuencia iniciada
- id: MLC_3FD
es-ES: Fallo autocebado bomba intermedia
- id: MLC_35x
es-ES: Secuencia finalizada
- id: MLC_4qW
es-ES: Etapa actual
- id: MLC_Vy
es-ES: Texto etapa
- id: MLC_3Ra
es-ES: Numero de intentos de autocebado
- id: MLC_3yE
es-ES: Retardo destino vacio 1
- id: MLC_3g3
es-ES: Retardo destino vacio 2
- id: MLC_3gu
es-ES: Pausa
- id: MLC_42G
es-ES: Continuar
- id: MLC_3jN
es-ES: Retardo fin drenaje
- id: MLC_4rU
es-ES: Retardo inicio drenaje
- id: MLC_4Ke
es-ES: Retardo agua recuperada
- id: MLC_3y2
es-ES: Retardo desconexion valvula envio
- id: MLC_4zG
es-ES: Retardo desconexion valvula retorno tanque agua recup.
- id: MLC_3L4
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_eP
es-ES: Retardo desconexion valvula salida
- id: MLC_3FG
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_3mw
es-ES: Bomba intermedia
- id: MLC_3UW
es-ES: '@Change log'
- id: MLC_4bu
es-ES: =============== Estado secuencia
- id: MLC_3av
es-ES: Pausa
- id: MLC_3HP
es-ES: Paro de secuencia
- id: MLC_56F
es-ES: Texto Etapa
- id: MLC_gJ
es-ES: =============== Secuencia
- id: MLC_t4
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_dV
es-ES: Etapa 005 - Reserva
- id: MLC_YZ
es-ES: Etapa 010 - Envio a destinos
- id: MLC_3yG
es-ES: Etapa 020 - Vaciado de destino
- id: MLC_3Qu
es-ES: Etapa 030 - Retorno a CIP
- id: MLC_53a
es-ES: Etapa 040 - Esterilizacion
- id: MLC_aR
es-ES: Etapa 050 - Vaciado de destinos
- id: MLC_3Sr
es-ES: Etapa 060 - Fin de enjuague
- id: MLC_4Vb
es-ES: Etapa 070 ----- Fin de secuencia
- id: MLC_4UJ
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4xm
es-ES: Contador tiempo
- id: MLC_q2
es-ES: Temporizadores
- id: MLC_4tG
es-ES: =============== Auxiliares
- id: MLC_dy
es-ES: Gestion condiciones drenaje
- id: MLC_4va
es-ES: Gestion condiciones recirculacion
- id: MLC_4aE
es-ES: =============== Salidas
- id: MLC_3E5
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_qf
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_jY
es-ES: Bomba Intermedia - FF con DF
- id: MLC_3Ga
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_zz
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_3d9
es-ES: Valvula de salida - Orden de activacion
- id: MLC_4EL
es-ES: Valvula de envio - Orden de activacion
- id: MLC_3xh
es-ES: Valvula Drenaje Linea - Orden de activacion
- id: MLC_3di
es-ES: Valvula recircular - Orden de activacion
- id: MLC_3up
es-ES: Valvula agua recuperada - Orden de activacion
- id: MLC_Yq
es-ES: Secuencia iniciada
- id: MLC_W9
es-ES: Fin secuencia
- id: MLC_XP
es-ES: =============== Alarmas
- id: MLC_4HY
es-ES: Fallo autocebado
@@ -0,0 +1,826 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15168";
S7_BlockTitle := "MLC_jC";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15168_ZC_CIP_AGUA_RECUP"
VAR_INPUT
{ S7_MLC := "MLC_mq" }
NombreSecuencia : String := 'AGUA RECUP.';
{ S7_MLC := "MLC_4xn" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_Q9" }
Ack : Bool;
{ S7_MLC := "MLC_3ba" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_4S5" }
OrdenPausa : Bool;
{ S7_MLC := "MLC_32R" }
EtapasAguaRecup : Bool;
{ S7_MLC := "MLC_Rf" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_4TY" }
EstadoBombaImpulsion : Bool;
{ S7_MLC := "MLC_4DT" }
EstadoRetorno : Bool;
{ S7_MLC := "MLC_pF" }
EstadoSinRetorno : Bool;
{ S7_MLC := "MLC_3bY" }
DestinoVacio : Bool;
{ S7_MLC := "MLC_3QT" }
ParoBombaImpulsion : Bool;
{ S7_MLC := "MLC_4pt" }
ParoTiempo : Bool;
{ S7_MLC := "MLC_4d2" }
FinLimpieza : Bool;
{ S7_MLC := "MLC_3FL" }
TiempoAguaRecupADrenaje : Int;
{ S7_MLC := "MLC_4ST" }
TiempoRetardoBomInterm : Int;
{ S7_MLC := "MLC_3bi" }
TiempoAutocBomIntermOn : Int;
{ S7_MLC := "MLC_3mR" }
TiempoAutocBomIntermOff : Int;
{ S7_MLC := "MLC_4ss" }
IntentosAutocBomInterm : Int := 3;
{ S7_MLC := "MLC_eQ" }
EstadoDFInterm : Bool;
{ S7_MLC := "MLC_4ge" }
EstadoBombaInterm : Bool;
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_3dF" }
MarchaBombaImpulsion : Bool;
{ S7_MLC := "MLC_j5" }
MarchaBombaIntermedia : Bool;
{ S7_MLC := "MLC_Xv" }
AperturaValvulaSalidaTanque : Bool;
{ S7_MLC := "MLC_44x" }
AperturaValvulaEnvioCip : Bool;
{ S7_MLC := "MLC_4Vn" }
AperturaValvulaRetornoTanque : Bool;
{ S7_MLC := "MLC_34m" }
AperturaValvulaDrenajeLinea : Bool;
{ S7_MLC := "MLC_3ZY" }
SecuenciaIniciada : Bool;
{ S7_MLC := "MLC_4nb" }
FalloAutocebadoBombaInterm : Bool;
{ S7_MLC := "MLC_sG" }
FinSecuencia : Bool;
{ S7_MLC := "MLC_4F3" }
CondicionesOk : Bool;
{ S7_MLC := "MLC_4UR" }
EtapaActual : Int;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_4NS" }
s_EtapaActual : Int;
{ S7_MLC := "MLC_4YS" }
s_TextoEtapa : String[100];
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..15] of Bool := [
4(()),
{ S7_MLC := "MLC_3x5" }
(),
2(()),
{ S7_MLC := "MLC_3pk" }
(),
2(()),
{ S7_MLC := "MLC_58r" }
()
];
END_VAR
VAR RETAIN
s_TiempoEtapa : STRUCT
Activar : Bool;
Reset : Bool;
Actual : Int;
SP : Int;
Restante : Int;
END_STRUCT;
{ S7_MLC := "MLC_We" }
s_NumeroIntentosAutocActuales : Int;
END_VAR
VAR
{ S7_Setpoint := "False" }
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
2(()),
{ S7_MLC := "MLC_sU" }
(),
{ S7_MLC := "MLC_44u" }
()
];
END_VAR
VAR RETAIN
{ S7_Setpoint := "False" }
s_TOF : Array[1..#NUM_MAX_TOF] of _.UDT_ZC_DISP_TOF := [
{ S7_MLC := "MLC_46q" }
(),
(),
{ S7_MLC := "MLC_3hh" }
(),
{ S7_MLC := "MLC_367" }
(),
{ S7_MLC := "MLC_rg" }
()
];
{ S7_Setpoint := "False" }
s_TONR : Array[1..#NUM_MAX_TONR] of _.UDT_ZC_DISP_TONR := [
{ S7_MLC := "MLC_49W" }
()
];
s_FF : Array[1..#NUM_MAX_FF] of _.UDT_ZC_DISP_FF := [
{ S7_MLC := "MLC_36j" }
()
];
END_VAR
VAR_TEMP
for_i : Int;
t_MarchaBombaInterm : Bool;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 7;
NUM_MAX_TOF : Int := 5;
NUM_MAX_TONR : Int := 1;
NUM_MAX_FF : Int := 1;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_54S"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15168_ZC_CIP_AGUA_RECUP
Descripcion:
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 01.03.2023 (ABH) Primera versión
01.00.01 16.04.2024 (ABH) Se cambian temporizadores por tipos de datos ZC.
Se añade parametro entrada intentos autocebado bomba intermedia.
Se modifica logica de autocebado bomba intermedia.
01.00.02 09.06.2025 (ABH) Se cambia logica reset retardo bomba intermedia, para que se resetee en pasos que no se activa
01.00.03 11.06.2025 (ABH) Se añade bit pausa limpieza para reset de intentos autocebado
bomba intermedia
01.00.04 15.06.2025 (ABH) Se añade orden de paro bomba impulsion.
01.00.05 08.07.2025 (ABH) Se añade condicion de bomba impulsion para contar tiempo en limpieza/enjuague
01.00.06 28.07.2025 (ABH) Se añade salida etapa actual y condiciones limpieza/enjuague Ok
01.00.07 09.09.2025 (ABH) Se añade entradas para orden paro tiempo limpieza y orden fin limpieza (ordenes externas)
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4bq"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3EX"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #OrdenPausa )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[3].SP
)
Coil( #s_TON[3].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[3].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #OrdenPausa )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[4].SP
)
Coil( #s_TON[4].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[4].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3i3"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EtapasAguaRecup )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4su"
}
NETWORK
// ================================================================
// TEXTO ETAPA
CASE #s_EtapaActual OF
0:
#s_TextoEtapa := CONCAT_STRING(IN1:= #NombreSecuencia,IN2:= ' - REPOSO');
40:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - AGUA RECUP. A DRENAJE');
70:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN DE SECUENCIA');
ELSE
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FUERA DE ETAPA');
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3dn"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3d7"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #EtapasAguaRecup )
Contact( #OrdenMarcha )
Move(
in := 40,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_th"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
wire#w1
P_Trig( #s_Pulsos[4] )
Move(
in := #TiempoAguaRecupADrenaje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #EstadoRetorno )
Contact( #EstadoBombaImpulsion )
I_Contact( #ParoTiempo )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
I_Contact( #ParoTiempo )
wire#w2
Move(
in := 70,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Contact( #FinLimpieza )
END_RUNG wire#w2
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4re"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 70
)
wire#w1
P_Trig( #s_Pulsos[7] )
Move(
in := 5,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EtapasAguaRecup )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_58g"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3A9"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3vG"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg:=#Pulso1Seg,
TON:=#s_TON[#for_i]);
END_FOR;
// ============================================================================
// TOF
FOR #for_i := 1 TO #NUM_MAX_TOF DO
"FC2929_ZC_TOF_INDV"(Pulso1seg := #Pulso1Seg,
TOF := #s_TOF[#for_i]);
END_FOR;
// ============================================================================
// TONR
FOR #for_i := 1 TO #NUM_MAX_TONR DO
"FC2930_ZC_TONR_INDV"(Pulso1seg := #Pulso1Seg,
TONR := #s_TONR[#for_i]);
END_FOR;
// ============================================================================
// FLIP FLOP
FOR #for_i := 1 TO #NUM_MAX_FF DO
"FC2926_ZC_FF_INDV"(Pulso1Seg := #Pulso1Seg,
FF := #s_FF[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_5CB"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4bG"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3qp"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
I_Contact( #s_Pausa_M )
I_Contact( #ParoBombaImpulsion )
Coil( #MarchaBombaImpulsion )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_492"
}
NETWORK
RUNG wire#powerrail
Move(
in := #TiempoRetardoBomInterm,
out1 => #s_TONR[1].SP
)
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
I_Contact( #s_Pausa_M )
I_Contact( #DestinoVacio )
Coil( #s_TONR[1].IN )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
wire#w1
Coil( #s_TONR[1].RESET )
END_RUNG
RUNG wire#powerrail
Contact( #DestinoVacio )
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #s_TONR[1].Q )
I_Contact( #s_Pausa_M )
Coil( #t_MarchaBombaInterm )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4hN"
}
NETWORK
RUNG wire#powerrail
Move(
in := #TiempoAutocBomIntermOn,
out1 => #s_FF[1].Config_SetPointTiempoFlop
)
Move(
in := #TiempoAutocBomIntermOff,
out1 => #s_FF[1].Config_SetPointTiempoFlip
)
Contact( #t_MarchaBombaInterm )
I_Contact( #FalloAutocebadoBombaInterm )
I_Contact( #EstadoDFInterm )
Coil( #s_FF[1].Orden_Activar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3DD"
}
NETWORK
RUNG wire#powerrail
Contact( #s_FF[1].Orden_Activar )
Contact( #s_FF[1].Estado_Flip )
Contact( #EstadoEnMarcha )
P_Trig( #s_Pulsos[10] )
{ S7_Templates := "DestType := Int" }
Inc( #s_NumeroIntentosAutocActuales )
END_RUNG
RUNG wire#powerrail
Contact( #Ack )
Contact( #FalloAutocebadoBombaInterm )
wire#w1
Move(
in := 0,
out1 => #s_NumeroIntentosAutocActuales
)
END_RUNG
RUNG wire#powerrail
I_Contact( #EtapasAguaRecup )
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #EstadoBombaInterm )
Contact( #EstadoDFInterm )
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #s_Pausa_V )
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Yy"
}
NETWORK
RUNG wire#powerrail
Contact( #t_MarchaBombaInterm )
wire#w1
Contact( #s_FF[1].Estado_Flop )
wire#w2
I_Contact( #s_Pausa_M )
I_Contact( #FalloAutocebadoBombaInterm )
Coil( #MarchaBombaIntermedia )
END_RUNG
RUNG wire#w1
Contact( #EstadoDFInterm )
END_RUNG wire#w2
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_e5"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
I_Contact( #s_Pausa_V )
Move(
in := 5,
out1 => #s_TOF[4].SP
)
Coil( #s_TOF[4].IN )
END_RUNG
RUNG wire#powerrail
Contact( #s_TOF[4].Q )
Coil( #AperturaValvulaSalidaTanque )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_eD"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
I_Contact( #s_Pausa_V )
Move(
in := 8,
out1 => #s_TOF[3].SP
)
Coil( #s_TOF[3].IN )
END_RUNG
RUNG wire#powerrail
Contact( #s_TOF[3].Q )
Coil( #AperturaValvulaDrenajeLinea )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_dM"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
I_Contact( #s_Pausa_V )
Move(
in := 5,
out1 => #s_TOF[1].SP
)
Coil( #s_TOF[1].IN )
END_RUNG
RUNG wire#powerrail
Contact( #s_TOF[1].Q )
Coil( #AperturaValvulaEnvioCip )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_NV"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4sq"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 70
)
Coil( #FinSecuencia )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_47f"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
wire#w2
Contact( #EstadoRetorno )
S_Coil( #CondicionesOk )
END_RUNG
RUNG wire#w2
I_Contact( #EstadoRetorno )
R_Coil( #CondicionesOk )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
R_Coil( #CondicionesOk )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4ea"
}
NETWORK
RUNG wire#powerrail
Move(
in := #s_EtapaActual,
out1 => #EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_52S"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4ny"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_NumeroIntentosAutocActuales,
in2 := #IntentosAutocBomInterm
)
Coil( #FalloAutocebadoBombaInterm )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,151 @@
MultiLingualTexts:
- id: MLC_jC
es-ES: FB15168_ZC_CIP_AGUA_RECUP
- id: MLC_mq
es-ES: Nombre de la secuencia
- id: MLC_4xn
es-ES: Pulso 1 segundo
- id: MLC_Q9
es-ES: Acuse general
- id: MLC_3ba
es-ES: Estado proceso principal en marcha
- id: MLC_4S5
es-ES: Orden pausa adicional
- id: MLC_32R
es-ES: Proceso principal en etapas de enjuague
- id: MLC_Rf
es-ES: Orden marcha secuencia
- id: MLC_4TY
es-ES: Estado bomba de impulsion linea
- id: MLC_4DT
es-ES: Estado CON retorno linea
- id: MLC_pF
es-ES: Estado SIN retorno linea
- id: MLC_3bY
es-ES: Destino vacio
- id: MLC_3QT
es-ES: Orden paro bomba impulsion
- id: MLC_4pt
es-ES: Orden paro tiempo limpieza
- id: MLC_4d2
es-ES: Orden fin limpieza
- id: MLC_3FL
es-ES: Tiempo de agua recuperada a drenaje
- id: MLC_4ST
es-ES: Tiempo de retardo activacion bomba intermedia
- id: MLC_3bi
es-ES: Tiempo autocebado ON Bomba intermedia
- id: MLC_3mR
es-ES: Tiempo autocebado OFF Bomba intermedia
- id: MLC_4ss
es-ES: Numero de intentos autocebado
- id: MLC_eQ
es-ES: Estado Detector flujo intermedio
- id: MLC_4ge
es-ES: Estado bomba intermedia
- id: MLC_3dF
es-ES: Orden de marcha bomba impulsion
- id: MLC_j5
es-ES: MarchaBombaIntermedia
- id: MLC_Xv
es-ES: Orden apertura valvula de salida
- id: MLC_44x
es-ES: Orden apertura valvula de envio
- id: MLC_4Vn
es-ES: Orden apertura valvula de retorno
- id: MLC_34m
es-ES: Orden apertura valvula de drenaje linea
- id: MLC_3ZY
es-ES: Secuencia iniciada
- id: MLC_4nb
es-ES: Fallo autocebado bomba intermedia
- id: MLC_sG
es-ES: Secuencia finalizada
- id: MLC_4F3
es-ES: Condiciones limpieza/enjuague Ok
- id: MLC_4UR
es-ES: Etapa actual
- id: MLC_4NS
es-ES: Etapa actual
- id: MLC_4YS
es-ES: Texto etapa
- id: MLC_3x5
es-ES: P_TRIG Etapa 40
- id: MLC_3pk
es-ES: P_TRIG Etapa 70
- id: MLC_58r
es-ES: P_TRIG Contador intentos B.Int
- id: MLC_We
es-ES: Numero de intentos de autocebado
- id: MLC_sU
es-ES: Pausa
- id: MLC_44u
es-ES: Continuar
- id: MLC_46q
es-ES: Retardo desconexion valvula envio
- id: MLC_3hh
es-ES: Retardo desconexion valvula retorno tanque agua recup.
- id: MLC_367
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_rg
es-ES: Retardo desconexion valvula salida
- id: MLC_49W
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_36j
es-ES: Bomba intermedia
- id: MLC_54S
es-ES: '@Change log'
- id: MLC_4bq
es-ES: =============== Estado secuencia
- id: MLC_3EX
es-ES: Pausa
- id: MLC_3i3
es-ES: Paro de secuencia
- id: MLC_4su
es-ES: Texto Etapa
- id: MLC_3dn
es-ES: =============== Secuencia
- id: MLC_3d7
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_th
es-ES: Etapa 040 - Agua recuperada a drenaje
- id: MLC_4re
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_58g
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_3A9
es-ES: Contador tiempo
- id: MLC_3vG
es-ES: Temporizadores
- id: MLC_5CB
es-ES: =============== Auxiliares
- id: MLC_4bG
es-ES: =============== Salidas
- id: MLC_3qp
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_492
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_4hN
es-ES: Bomba Intermedia - FF con DF
- id: MLC_3DD
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_3Yy
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_e5
es-ES: Valvula de salida - Orden de activacion
- id: MLC_eD
es-ES: Valvula Drenaje - Orden de activacion
- id: MLC_dM
es-ES: Valvula Salida Tanque - Orden de activacion
- id: MLC_NV
es-ES: Secuencia iniciada
- id: MLC_4sq
es-ES: Fin secuencia
- id: MLC_47f
es-ES: Condiciones ok
- id: MLC_4ea
es-ES: Etapa actual
- id: MLC_52S
es-ES: =============== Alarmas
- id: MLC_4ny
es-ES: Fallo autocebado
@@ -0,0 +1,810 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15169";
S7_BlockTitle := "MLC_Q4";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15169_ZC_CIP_RECUP_RECHAZO"
VAR_INPUT
{ S7_MLC := "MLC_3AR" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_4ke" }
Ack : Bool;
{ S7_MLC := "MLC_3xi" }
EstadoEnMarcha : Bool;
ParametrosRechazos : _.UDT_ZC_RECETA_CIP_RECHAZOS;
ParamComunes : _.UDT_ZC_RECETA_CIP_COMUNES;
END_VAR
VAR_OUTPUT
Orden : _.UDT_ZC_CIP_FASE_ORDEN_RECUP_RECHAZ;
Estado : _.UDT_ZC_CIP_FASE_ESTADO;
END_VAR
VAR_IN_OUT
{ S7_MLC := "MLC_3et" }
Linea : _.UDT_ZC_PRO_INTF_CIP_LINEA;
ChequeRutaActual : _.UDT_ZC_CIP_CHEQUEO_RUTA;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_uw" }
s_EtapaActual : Int;
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..50] of Bool;
END_VAR
VAR RETAIN
s_TiempoEtapa : STRUCT
Activar : Bool;
Reset : Bool;
Actual : Int;
SP : Int;
Restante : Int;
END_STRUCT;
{ S7_MLC := "MLC_3t3" }
s_NumeroIntentosAutocActuales : Int;
END_VAR
VAR
{ S7_Setpoint := "False" }
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
{ S7_MLC := "MLC_3xb" }
(),
{ S7_MLC := "MLC_3VV" }
(),
{ S7_MLC := "MLC_3eK" }
(),
{ S7_MLC := "MLC_4GP" }
()
];
END_VAR
VAR RETAIN
{ S7_Setpoint := "False" }
s_TOF : Array[1..#NUM_MAX_TOF] of _.UDT_ZC_DISP_TOF := [
{ S7_MLC := "MLC_4Ch" }
(),
{ S7_MLC := "MLC_3pS" }
(),
(),
{ S7_MLC := "MLC_3BT" }
()
];
{ S7_Setpoint := "False" }
s_TONR : Array[1..#NUM_MAX_TONR] of _.UDT_ZC_DISP_TONR := [
{ S7_MLC := "MLC_vN" }
()
];
s_FF : Array[1..#NUM_MAX_FF] of _.UDT_ZC_DISP_FF := [
{ S7_MLC := "MLC_3XF" }
()
];
END_VAR
VAR_TEMP
for_i : Int;
t_MarchaBombaInterm : Bool;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 4;
NUM_MAX_TOF : Int := 5;
NUM_MAX_TONR : Int := 1;
NUM_MAX_FF : Int := 1;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Sq"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15169_ZC_CIP_RECUP_RECHAZO
Descripcion:
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 30.05.2024 (ABH) Primera versión
01.00.01 11.06.2025 (ABH) Se añade bit pausa limpieza para reset de intentos autocebado
bomba intermedia
01.00.02 15.06.2025 (ABH) Se añade orden de paro bomba impulsion.
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3vt"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_iV"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #Linea.Orden.PausaRecupRechazos )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[3].SP
)
Coil( #s_TON[3].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[3].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #Linea.Orden.PausaRecupRechazos )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[4].SP
)
Coil( #s_TON[4].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[4].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_L5"
}
NETWORK
RUNG wire#powerrail
I_Contact( #Linea.EnFase.Rechazos )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4nB"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_52L"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #Linea.EnFase.Rechazos )
Contact( #Linea.Orden.MarchaRecupRechazos )
Move(
in := 20,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3dU"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
wire#w1
P_Trig( #s_Pulsos[1] )
Move(
in := #ParametrosRechazos.TiempoMaxDrenaje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #Linea.Comunes.DF_Retorno.Estado )
Contact( #Linea.Comunes.BombaEnvio.Estado )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
I_Contact( #Linea.Comunes.DF_Retorno.Estado )
wire#w2
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
I_Contact( #Linea.Comunes.BombaEnvio.Estado )
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
wire#w3
Move(
in := 40,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Contact( #s_TON[1].Q )
END_RUNG wire#w3
RUNG wire#w1
Contact( #Linea.Comunes.DF_Retorno.Estado )
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #Linea.Comunes.CT_Retorno.ValorActual,
in2 := #ParametrosRechazos.ConductividadDrenaje
)
Move(
in := 3,
out1 => #s_TON[1].SP
)
Coil( #s_TON[1].IN )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3a9"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
wire#w1
P_Trig( #s_Pulsos[1] )
Move(
in := #ParametrosRechazos.TiempoMaxEmpuje,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #Linea.Comunes.DF_Retorno.Estado )
Contact( #Linea.Comunes.BombaEnvio.Estado )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
I_Contact( #Linea.Comunes.DF_Retorno.Estado )
wire#w2
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
I_Contact( #Linea.Comunes.BombaEnvio.Estado )
END_RUNG wire#w2
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
wire#w3
Move(
in := 70,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Contact( #s_TON[2].Q )
END_RUNG wire#w3
RUNG wire#w1
Contact( #Linea.Comunes.DF_Retorno.Estado )
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #Linea.Comunes.CT_Retorno.ValorActual,
in2 := #ParametrosRechazos.ConductividadEmpuje
)
Move(
in := 3,
out1 => #s_TON[2].SP
)
Coil( #s_TON[2].IN )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4QW"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 70
)
wire#w1
P_Trig( #s_Pulsos[2] )
Move(
in := 5,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #Linea.EnFase.Rechazos )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_43H"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_aS"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4u3"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg:=#Pulso1Seg,
TON:=#s_TON[#for_i]);
END_FOR;
// ============================================================================
// TOF
FOR #for_i := 1 TO #NUM_MAX_TOF DO
"FC2929_ZC_TOF_INDV"(Pulso1seg := #Pulso1Seg,
TOF := #s_TOF[#for_i]);
END_FOR;
// ============================================================================
// TONR
FOR #for_i := 1 TO #NUM_MAX_TONR DO
"FC2930_ZC_TONR_INDV"(Pulso1seg := #Pulso1Seg,
TONR := #s_TONR[#for_i]);
END_FOR;
// ============================================================================
// FLIP FLOP
FOR #for_i := 1 TO #NUM_MAX_FF DO
"FC2926_ZC_FF_INDV"(Pulso1Seg := #Pulso1Seg,
FF := #s_FF[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Gt"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_34e"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_44S"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
wire#w1
I_Contact( #s_Pausa_M )
I_Contact( #ChequeRutaActual.ParoBombaImpulsion )
Coil( #Orden.BombaImpulsion )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4DT"
}
NETWORK
RUNG wire#powerrail
Move(
in := #ParamComunes.TiempoRetBombaInter,
out1 => #s_TONR[1].SP
)
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
wire#w1
I_Contact( #s_Pausa_M )
Coil( #s_TONR[1].IN )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
END_RUNG wire#w1
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
Coil( #s_TONR[1].RESET )
END_RUNG
RUNG wire#powerrail
Contact( #s_TONR[1].Q )
I_Contact( #s_Pausa_M )
Coil( #t_MarchaBombaInterm )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_34Z"
}
NETWORK
RUNG wire#powerrail
Move(
in := #ParamComunes.TiempoAutocBomInterON,
out1 => #s_FF[1].Config_SetPointTiempoFlop
)
Move(
in := #ParamComunes.TiempoAutocBomInterOFF,
out1 => #s_FF[1].Config_SetPointTiempoFlip
)
Contact( #t_MarchaBombaInterm )
I_Contact( #Estado.FalloAutocebBombaInterm )
I_Contact( #ChequeRutaActual.DetectorIntermedio )
Coil( #s_FF[1].Orden_Activar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_qx"
}
NETWORK
RUNG wire#powerrail
Contact( #s_FF[1].Orden_Activar )
Contact( #s_FF[1].Estado_Flip )
I_Contact( #EstadoEnMarcha )
P_Trig( #s_Pulsos[3] )
{ S7_Templates := "DestType := Int" }
Inc( #s_NumeroIntentosAutocActuales )
END_RUNG
RUNG wire#powerrail
Contact( #Ack )
Contact( #Estado.FalloAutocebBombaInterm )
wire#w1
Move(
in := 0,
out1 => #s_NumeroIntentosAutocActuales
)
END_RUNG
RUNG wire#powerrail
I_Contact( #Linea.EnFase.Rechazos )
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #ChequeRutaActual.BombaIntermedia )
Contact( #ChequeRutaActual.DetectorIntermedio )
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #s_Pausa_V )
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_f8"
}
NETWORK
RUNG wire#powerrail
Contact( #t_MarchaBombaInterm )
wire#w1
Contact( #s_FF[1].Estado_Flop )
wire#w2
I_Contact( #s_Pausa_M )
I_Contact( #Estado.FalloAutocebBombaInterm )
Coil( #Orden.BombaIntermedia )
END_RUNG
RUNG wire#w1
Contact( #ChequeRutaActual.DetectorIntermedio )
END_RUNG wire#w2
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Mm"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
wire#w1
I_Contact( #s_Pausa_V )
Move(
in := 3,
out1 => #s_TOF[4].SP
)
Coil( #s_TOF[4].IN )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #s_TOF[4].Q )
Coil( #Orden.ValvulaEnvio )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_vH"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
wire#w1
I_Contact( #s_Pausa_V )
Move(
in := 2,
out1 => #s_TOF[1].SP
)
Coil( #s_TOF[1].IN )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 40
)
END_RUNG wire#w1
RUNG wire#powerrail
Contact( #s_TOF[1].Q )
Coil( #Orden.ValvulaEnvioAgua )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Be"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 20
)
I_Contact( #s_Pausa_V )
Move(
in := 2,
out1 => #s_TOF[2].SP
)
Coil( #s_TOF[2].IN )
END_RUNG
RUNG wire#powerrail
Contact( #s_TOF[2].Q )
Coil( #Orden.ValvulaDrenajeLinea )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_RF"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #Estado.SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_pu"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 70
)
Coil( #Estado.FinSecuencia )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_qB"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_56T"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_NumeroIntentosAutocActuales,
in2 := #ParamComunes.IntentosAutocBomInter
)
Coil( #Estado.FalloAutocebBombaInterm )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,85 @@
MultiLingualTexts:
- id: MLC_Q4
es-ES: FB15169_ZC_CIP_RECUP_RECHAZO
- id: MLC_3AR
es-ES: Pulso 1 segundo
- id: MLC_4ke
es-ES: Acuse general
- id: MLC_3xi
es-ES: Estado proceso principal en marcha
- id: MLC_3et
es-ES: Linea
- id: MLC_uw
es-ES: Etapa actual
- id: MLC_3t3
es-ES: Numero de intentos de autocebado
- id: MLC_3xb
es-ES: Retardo conductividad drenaje
- id: MLC_3VV
es-ES: Retardo conductividad empuje
- id: MLC_3eK
es-ES: Pausa
- id: MLC_4GP
es-ES: Continuar
- id: MLC_4Ch
es-ES: Retardo desconexion valvula envio
- id: MLC_3pS
es-ES: Retardo desconexion valvula drenaje linea
- id: MLC_3BT
es-ES: Retardo desconexion valvula envio rechazos
- id: MLC_vN
es-ES: Retardo activacion bomba intermetia etapa 40
- id: MLC_3XF
es-ES: Bomba intermedia
- id: MLC_4Sq
es-ES: '@Change log'
- id: MLC_3vt
es-ES: =============== Estado secuencia
- id: MLC_iV
es-ES: Pausa
- id: MLC_L5
es-ES: Paro de secuencia
- id: MLC_4nB
es-ES: =============== Secuencia
- id: MLC_52L
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3dU
es-ES: Etapa 020 - Drenaje en tanque rechazos
- id: MLC_3a9
es-ES: Etapa 040 - Empuje en tanque rechazos
- id: MLC_4QW
es-ES: Etapa 070 - Fin de secuencia
- id: MLC_43H
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_aS
es-ES: Contador tiempo
- id: MLC_4u3
es-ES: Temporizadores
- id: MLC_4Gt
es-ES: =============== Auxiliares
- id: MLC_34e
es-ES: =============== Salidas
- id: MLC_44S
es-ES: Bomba Impulsion - Orden de marcha
- id: MLC_4DT
es-ES: Bomba Intermedia - Retardo activacion
- id: MLC_34Z
es-ES: Bomba Intermedia - FF con DF
- id: MLC_qx
es-ES: Bomba Intermedia - Contador Numero de intentos con DF
- id: MLC_f8
es-ES: Bomba Intermedia - Orden de marcha
- id: MLC_3Mm
es-ES: Valvula envio rechazos - Orden de activacion
- id: MLC_vH
es-ES: Valvula envio agua - Orden de activacion
- id: MLC_3Be
es-ES: Valvula drenaje linea - Orden de activacion
- id: MLC_RF
es-ES: Secuencia iniciada
- id: MLC_pu
es-ES: Fin secuencia
- id: MLC_qB
es-ES: =============== Alarmas
- id: MLC_56T
es-ES: Fallo autocebado
@@ -0,0 +1,315 @@
MultiLingualTexts:
- id: MLC_4xC
es-ES: FB15175_ZC_COCINA_AD_PROD
- id: MLC_4cR
es-ES: Nombre de la secuencia
- id: MLC_4St
es-ES: Pulso 1 segundo
- id: MLC_4nm
es-ES: Acuse general
- id: MLC_4Pr
es-ES: Orden marcha secuencia
- id: MLC_4Ze
es-ES: Estado proceso principal en marcha
- id: MLC_4h9
es-ES: En etapa
- id: MLC_57C
es-ES: Orden pausa adicional
- id: MLC_3ij
es-ES: Pulsador saltar etapa
- id: MLC_4fE
es-ES: Estado bomba
- id: MLC_37x
es-ES: 0= N.C. / 1= N.O.
- id: MLC_4nd
es-ES: Temperatura linea
- id: MLC_33r
es-ES: Temperatura tanque
- id: MLC_3z7
es-ES: VelocidadBomba
- id: MLC_NM
es-ES: Reserva
- id: MLC_3aY
es-ES: Reserva
- id: MLC_3XH
es-ES: Reserva
- id: MLC_4kx
es-ES: Reserva
- id: MLC_3yt
es-ES: SPTemperatura
- id: MLC_3Up
es-ES: HisteresisTemp
- id: MLC_dL
es-ES: kgProd1
- id: MLC_u5
es-ES: kgProd2
- id: MLC_3Hs
es-ES: kgProd3
- id: MLC_3yh
es-ES: kgProd4
- id: MLC_3an
es-ES: kgProd5
- id: MLC_4wx
es-ES: kgProd6
- id: MLC_3ck
es-ES: kgProd7
- id: MLC_3te
es-ES: kgProd8
- id: MLC_3kb
es-ES: kgProd9
- id: MLC_hN
es-ES: kgProd10
- id: MLC_4BA
es-ES: TiempoHomoProd1
- id: MLC_3dn
es-ES: TiempoHomoProd2
- id: MLC_53u
es-ES: TiempoHomoProd3
- id: MLC_3CU
es-ES: TiempoHomoProd4
- id: MLC_af
es-ES: TiempoHomoProd5
- id: MLC_ya
es-ES: TiempoHomoProd6
- id: MLC_v8
es-ES: TiempoHomoProd7
- id: MLC_Xm
es-ES: TiempoHomoProd8
- id: MLC_vG
es-ES: TiempoHomoProd9
- id: MLC_4AQ
es-ES: TiempoHomoProd10
- id: MLC_4sH
es-ES: TiempoHomoFinal
- id: MLC_3cx
es-ES: Reserva
- id: MLC_NU
es-ES: Reserva
- id: MLC_3aA
es-ES: Reserva
- id: MLC_4fe
es-ES: HabilitarTratTermico
- id: MLC_58T
es-ES: NombreProd1
- id: MLC_4Ay
es-ES: NombreProd2
- id: MLC_4dW
es-ES: NombreProd3
- id: MLC_wu
es-ES: NombreProd4
- id: MLC_3hW
es-ES: NombreProd5
- id: MLC_3Dy
es-ES: NombreProd6
- id: MLC_3zB
es-ES: NombreProd7
- id: MLC_3he
es-ES: NombreProd8
- id: MLC_32Q
es-ES: NombreProd9
- id: MLC_4pf
es-ES: NombreProd10
- id: MLC_3qS
es-ES: SP Litros drenaje inicial
- id: MLC_3BH
es-ES: SP Litros empuje final
- id: MLC_3fQ
es-ES: Totalizador litros drenaje
- id: MLC_3qW
es-ES: Totalizador litros empuje
- id: MLC_3HW
es-ES: Tiempo aclarado
- id: MLC_3Qr
es-ES: Tiempo maximo drenaje
- id: MLC_4qK
es-ES: Tiempo maximo empuje
- id: MLC_Sq
es-ES: Peso inicial del tanque para calculo de dosificaciones
- id: MLC_vP
es-ES: Orden de marcha bomba blender
- id: MLC_Vy
es-ES: Velocidad bomba blender
- id: MLC_3JV
es-ES: Orden de marcha bomba Intermedia
- id: MLC_3wt
es-ES: Orden apertura valvula de salida de tanque
- id: MLC_4WB
es-ES: Orden apertura valvula de drenaje
- id: MLC_58F
es-ES: Orden apertura valvula de entrada tanque
- id: MLC_4sq
es-ES: Orden apertura valvula de empuje
- id: MLC_3sS
es-ES: Orden calentar
- id: MLC_3FG
es-ES: Orden enfriar
- id: MLC_43Z
es-ES: Set point calentamiento/enfriamiento
- id: MLC_4DS
es-ES: Orden totalizador drenaje
- id: MLC_4zV
es-ES: Orden totalizador empuje
- id: MLC_3Q4
es-ES: Reset totalizador drenaje
- id: MLC_3g9
es-ES: Reset totalizador empuje
- id: MLC_3TU
es-ES: Producto actual
- id: MLC_3F4
es-ES: Permiso adicion de producto
- id: MLC_4tu
es-ES: Permiso adicion de producto
- id: MLC_Tn
es-ES: Permiso salto etapa
- id: MLC_Zi
es-ES: Secuencia iniciada
- id: MLC_3fa
es-ES: Secuencia finalizada
- id: MLC_3jq
es-ES: Etapa actual
- id: MLC_4N9
es-ES: Texto etapa
- id: MLC_xU
es-ES: Etapa 100
- id: MLC_52c
es-ES: Etapa 110
- id: MLC_4Jw
es-ES: Etapa 120
- id: MLC_4FW
es-ES: Etapa 130
- id: MLC_4nv
es-ES: Etapa 140
- id: MLC_YC
es-ES: Etapa 150
- id: MLC_3pu
es-ES: Etapa 160
- id: MLC_42g
es-ES: Etapa 170
- id: MLC_395
es-ES: Etapa 180
- id: MLC_ic
es-ES: Etapa 190
- id: MLC_4XA
es-ES: Etapa 999
- id: MLC_3am
es-ES: Tiempo de etapa
- id: MLC_4Jn
es-ES: Activar
- id: MLC_kP
es-ES: Reset
- id: MLC_4iw
es-ES: Actual
- id: MLC_4ZC
es-ES: Set point
- id: MLC_3YF
es-ES: Restante
- id: MLC_4yC
es-ES: Pausa
- id: MLC_4RQ
es-ES: Continuar
- id: MLC_4qm
es-ES: Retardo desconexion valvula salida tanque
- id: MLC_zz
es-ES: Retardo desconexion valvula desvio CIP
- id: MLC_3S4
es-ES: Retardo desconexion valvula drenaje
- id: MLC_zQ
es-ES: Retardo desconexion valvula entrada tanque
- id: MLC_3Za
es-ES: Retardo desconexion valvula empuje
- id: MLC_599
es-ES: Producto actual
- id: MLC_4BM
es-ES: 0= Calentar / 1= Enfriar
- id: MLC_4kJ
es-ES: '@Change log'
- id: MLC_uS
es-ES: =============== Estado secuencia
- id: MLC_4T8
es-ES: Pausa
- id: MLC_55F
es-ES: Paro de secuencia
- id: MLC_3Ue
es-ES: Texto Etapa
- id: MLC_uY
es-ES: Limite producto actual
- id: MLC_3Rh
es-ES: =============== Auxiliares
- id: MLC_4pz
es-ES: Datos ingrediente actual
- id: MLC_3Jc
es-ES: =============== Secuencia
- id: MLC_34b
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3zb
es-ES: Etapa 100 - Apertura de caminos
- id: MLC_3Gb
es-ES: Etapa 110 - Encendido bomba
- id: MLC_3Ax
es-ES: Etapa 120 - Drenaje previo
- id: MLC_3iH
es-ES: Etapa 130 - Adicion de producto
- id: MLC_4aK
es-ES: Etapa 140 - Homogenizacion producto
- id: MLC_zH
es-ES: Etapa 150 - Homogenizacion final
- id: MLC_3KM
es-ES: Etapa 160 - Empuje
- id: MLC_4BZ
es-ES: Etapa 170 - Aclarado
- id: MLC_534
es-ES: Etapa 180 - Apagado bomba
- id: MLC_3p6
es-ES: Etapa 190 - Cierre de camino
- id: MLC_4Cv
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_rS
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4uG
es-ES: Contador tiempo
- id: MLC_4Vb
es-ES: Temporizadores
- id: MLC_3eu
es-ES: =============== Auxiliares
- id: MLC_37q
es-ES: Gestion calentamiento - Calculo histeresis
- id: MLC_4Bn
es-ES: Gestion calentamiento - Activacion Calentar / Enfriar
- id: MLC_3Gc
es-ES: Orden calcular
- id: MLC_Nx
es-ES: Calculo cantidad a dosificar
- id: MLC_4fx
es-ES: =============== Salidas
- id: MLC_Vq
es-ES: Despresurizar
- id: MLC_58g
es-ES: Orden calentar / enfriar
- id: MLC_4MM
es-ES: Orden totalizador drenaje
- id: MLC_3ZM
es-ES: Orden totalizador Empuje
- id: MLC_32v
es-ES: Visibilidad litros restantes
- id: MLC_Q2
es-ES: Bomba blender - Orden de marcha
- id: MLC_3eZ
es-ES: Bomba intermedia - Orden de marcha
- id: MLC_f7
es-ES: Valvula salida tanque - Orden de activacion
- id: MLC_4dA
es-ES: Valvula drenaje - Orden de activacion
- id: MLC_3Zh
es-ES: Valvula entrada tanque - Orden de activacion
- id: MLC_3kS
es-ES: Valvula empuje - Orden de activacion
- id: MLC_3zX
es-ES: Ingrediente actual
- id: MLC_4GR
es-ES: Permiso confirmar productos
- id: MLC_rQ
es-ES: Permiso salto etapa
- id: MLC_zu
es-ES: Secuencia iniciada
- id: MLC_4Bh
es-ES: Fin secuencia
@@ -0,0 +1,311 @@
MultiLingualTexts:
- id: MLC_3Ks
es-ES: FB15176_ZC_COCINA_AD_AGUA
- id: MLC_wb
es-ES: Nombre de la secuencia
- id: MLC_3F6
es-ES: Pulso 1 segundo
- id: MLC_3iC
es-ES: Acuse general
- id: MLC_3vK
es-ES: Orden marcha secuencia
- id: MLC_Uw
es-ES: Estado proceso principal en marcha
- id: MLC_wc
es-ES: En etapa
- id: MLC_4ku
es-ES: Orden pausa adicional
- id: MLC_5A4
es-ES: Estado bomba
- id: MLC_b4
es-ES: 0= N.C. / 1= N.O.
- id: MLC_Rq
es-ES: VelocidadBomba
- id: MLC_4ME
es-ES: Reserva
- id: MLC_jD
es-ES: Reserva
- id: MLC_kz
es-ES: Reserva
- id: MLC_42a
es-ES: SPAgua
- id: MLC_3eN
es-ES: SPTemperatura
- id: MLC_4Ez
es-ES: HisteresisTemp
- id: MLC_ui
es-ES: Reserva
- id: MLC_yb
es-ES: Reserva
- id: MLC_mU
es-ES: Reserva
- id: MLC_ZL
es-ES: Reserva
- id: MLC_4ET
es-ES: Reserva
- id: MLC_WG
es-ES: Reserva
- id: MLC_pw
es-ES: Reserva
- id: MLC_4AK
es-ES: Reserva
- id: MLC_4BQ
es-ES: Reserva
- id: MLC_SC
es-ES: Reserva
- id: MLC_3A6
es-ES: TiempoHomo
- id: MLC_43B
es-ES: Reserva
- id: MLC_nV
es-ES: Reserva
- id: MLC_48n
es-ES: Reserva
- id: MLC_3xi
es-ES: Reserva
- id: MLC_3Jd
es-ES: Reserva
- id: MLC_3LN
es-ES: Reserva
- id: MLC_4Pv
es-ES: Reserva
- id: MLC_4t8
es-ES: Reserva
- id: MLC_4bs
es-ES: Reserva
- id: MLC_3a7
es-ES: Reserva
- id: MLC_34h
es-ES: Reserva
- id: MLC_yN
es-ES: Reserva
- id: MLC_39v
es-ES: Reserva
- id: MLC_eE
es-ES: Reserva
- id: MLC_R3
es-ES: Reserva
- id: MLC_3TR
es-ES: Reserva
- id: MLC_38g
es-ES: Reserva
- id: MLC_3Xd
es-ES: Reserva
- id: MLC_h8
es-ES: Reserva
- id: MLC_NY
es-ES: Reserva
- id: MLC_574
es-ES: Reserva
- id: MLC_3fU
es-ES: Reserva
- id: MLC_4CE
es-ES: Reserva
- id: MLC_39j
es-ES: Reserva
- id: MLC_gE
es-ES: SP Litros drenaje inicial
- id: MLC_3ZP
es-ES: SP Litros empuje final
- id: MLC_4mK
es-ES: Totalizador litros drenaje
- id: MLC_4XR
es-ES: Totalizador litros empuje
- id: MLC_3ym
es-ES: Tiempo aclarado
- id: MLC_sd
es-ES: Tiempo maximo drenaje
- id: MLC_45U
es-ES: Tiempo maximo empuje
- id: MLC_4Bh
es-ES: Peso inicial del tanque para calculo de dosificaciones
- id: MLC_3Z9
es-ES: Orden de marcha bomba blender
- id: MLC_4RC
es-ES: Velocidad bomba blender
- id: MLC_4Eh
es-ES: Orden de marcha bomba Intermedia
- id: MLC_5A5
es-ES: Orden apertura valvula de salida de tanque
- id: MLC_346
es-ES: Orden apertura valvula de drenaje
- id: MLC_3Ci
es-ES: Orden apertura valvula de entrada tanque
- id: MLC_3pD
es-ES: Orden apertura valvula de empuje
- id: MLC_Xi
es-ES: Orden totalizador drenaje
- id: MLC_4FX
es-ES: Orden totalizador empuje
- id: MLC_3hN
es-ES: Reset totalizador drenaje
- id: MLC_4Sx
es-ES: Reset totalizador empuje
- id: MLC_3Rz
es-ES: Visibilidad litros drenaje
- id: MLC_4jR
es-ES: Visibilidad litros empuje
- id: MLC_3VJ
es-ES: Visibilidad litros adicion de agua
- id: MLC_49C
es-ES: Litros calculados a dosificar
- id: MLC_t9
es-ES: Litros dosificados
- id: MLC_57C
es-ES: Secuencia iniciada
- id: MLC_52B
es-ES: Secuencia finalizada
- id: MLC_3tB
es-ES: Etapa actual
- id: MLC_4Ps
es-ES: Texto etapa
- id: MLC_3jB
es-ES: Litros agua a dosificar calculados
- id: MLC_4yw
es-ES: Litros en tanque iniciales
- id: MLC_3cu
es-ES: Litros dosificados
- id: MLC_47p
es-ES: Etapa 10
- id: MLC_4nA
es-ES: Etapa 20
- id: MLC_33D
es-ES: Etapa 30
- id: MLC_4WB
es-ES: Etapa 40
- id: MLC_3ma
es-ES: Etapa 50
- id: MLC_4Nh
es-ES: Etapa 60
- id: MLC_3pY
es-ES: Etapa 100
- id: MLC_4fk
es-ES: Etapa 110
- id: MLC_4yW
es-ES: Etapa 120
- id: MLC_3GZ
es-ES: Etapa 150
- id: MLC_4u3
es-ES: Etapa 160
- id: MLC_m5
es-ES: Etapa 170
- id: MLC_5BL
es-ES: Etapa 180
- id: MLC_48z
es-ES: Etapa 190
- id: MLC_Pk
es-ES: Etapa 140
- id: MLC_3iG
es-ES: Etapa 999
- id: MLC_4XH
es-ES: Tiempo de etapa
- id: MLC_y7
es-ES: Activar
- id: MLC_4iy
es-ES: Reset
- id: MLC_3mC
es-ES: Actual
- id: MLC_NW
es-ES: Set point
- id: MLC_XG
es-ES: Restante
- id: MLC_4GL
es-ES: Pausa
- id: MLC_4qx
es-ES: Continuar
- id: MLC_gf
es-ES: Retardo desconexion valvula salida tanque
- id: MLC_4Pq
es-ES: Retardo desconexion valvula desvio CIP
- id: MLC_3h4
es-ES: Retardo desconexion valvula drenaje
- id: MLC_49U
es-ES: Retardo desconexion valvula entrada tanque
- id: MLC_3bM
es-ES: Retardo desconexion valvula empuje
- id: MLC_jd
es-ES: '@Change log'
- id: MLC_4z8
es-ES: =============== Estado secuencia
- id: MLC_3Va
es-ES: Pausa
- id: MLC_hM
es-ES: Paro de secuencia
- id: MLC_4d8
es-ES: Texto Etapa
- id: MLC_4dB
es-ES: =============== Secuencia
- id: MLC_4pE
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3xp
es-ES: Etapa 010 - Apertura de camino
- id: MLC_4pf
es-ES: Etapa 020 - Encendido bomba
- id: MLC_4XB
es-ES: Etapa 030 - Drenaje previo
- id: MLC_58T
es-ES: Etapa 040 - Adicion de Agua
- id: MLC_4ze
es-ES: Etapa 050 - Apagado bomba
- id: MLC_4bx
es-ES: Etapa 060 - Cierre de camino
- id: MLC_3u7
es-ES: 'ZCSA-ABH 2025/09/15: Se salta la homogeneizacion. Solamente se añade el agua y termina la etapa.'
- id: MLC_R6
es-ES: RESERVA Etapa 100 - Apertura de camino
- id: MLC_4Z6
es-ES: RESERVA Etapa 110 - Encendido bomba
- id: MLC_3MV
es-ES: RESERVA Etapa 120 - Drenaje previo
- id: MLC_3xz
es-ES: RESERVA Etapa 150 - Homogenizacion en linea
- id: MLC_4vd
es-ES: RESERVA Etapa 160 - Empuje
- id: MLC_37Q
es-ES: RESERVA Etapa 170 - Aclarado
- id: MLC_48g
es-ES: RESERVA Etapa 180 - Apagado bomba
- id: MLC_4Ka
es-ES: RESERVA Etapa 190 - Cierre de camino
- id: MLC_599
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_39q
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4KU
es-ES: Contador tiempo
- id: MLC_4mk
es-ES: Temporizadores
- id: MLC_4bX
es-ES: =============== Auxiliares
- id: MLC_3a5
es-ES: Orden calcular
- id: MLC_3Vj
es-ES: Calculo cantidad a dosificar
- id: MLC_43F
es-ES: Kilos dosificados de agua
- id: MLC_4jy
es-ES: =============== Salidas
- id: MLC_43i
es-ES: Orden totalizador drenaje
- id: MLC_ae
es-ES: Orden totalizador Empuje
- id: MLC_579
es-ES: Visibilidad litros restantes
- id: MLC_cU
es-ES: Litros adicion de agua
- id: MLC_5AP
es-ES: Bomba blender - Orden de marcha
- id: MLC_jC
es-ES: Bomba intermedia - Orden de marcha
- id: MLC_36h
es-ES: Valvula salida tanque - Orden de activacion
- id: MLC_473
es-ES: Valvula drenaje - Orden de activacion
- id: MLC_36S
es-ES: Valvula entrada tanque - Orden de activacion
- id: MLC_3bJ
es-ES: Valvula empuje - Orden de activacion
- id: MLC_bE
es-ES: Secuencia iniciada
- id: MLC_4Lr
es-ES: Fin secuencia
@@ -0,0 +1,285 @@
MultiLingualTexts:
- id: MLC_4GL
es-ES: FB15177_ZC_COCINA_CAL_ENF
- id: MLC_mw
es-ES: Nombre de la secuencia
- id: MLC_3Ld
es-ES: Pulso 1 segundo
- id: MLC_zQ
es-ES: Acuse general
- id: MLC_4k6
es-ES: Orden marcha secuencia
- id: MLC_dW
es-ES: Estado proceso principal en marcha
- id: MLC_4uM
es-ES: En etapa
- id: MLC_53x
es-ES: Orden pausa adicional
- id: MLC_4wh
es-ES: Estado bomba
- id: MLC_56f
es-ES: 0= N.C. / 1= N.O.
- id: MLC_3Bf
es-ES: 0= Calor / 1 Frio
- id: MLC_m5
es-ES: Temperatura linea
- id: MLC_4Fc
es-ES: Temperatura tanque
- id: MLC_3rj
es-ES: VelocidadBomba
- id: MLC_Yv
es-ES: Reserva
- id: MLC_bT
es-ES: Reserva
- id: MLC_5Aj
es-ES: Reserva
- id: MLC_32f
es-ES: Reserva
- id: MLC_gC
es-ES: SPTemperatura
- id: MLC_4wt
es-ES: HisteresisTemp
- id: MLC_36L
es-ES: Reserva
- id: MLC_R8
es-ES: Reserva
- id: MLC_pk
es-ES: Reserva
- id: MLC_3Pv
es-ES: Reserva
- id: MLC_YQ
es-ES: Reserva
- id: MLC_4kW
es-ES: Reserva
- id: MLC_3b2
es-ES: Reserva
- id: MLC_3eB
es-ES: Reserva
- id: MLC_3s7
es-ES: Reserva
- id: MLC_ht
es-ES: Reserva
- id: MLC_VN
es-ES: TiempoRecircularCondic
- id: MLC_zr
es-ES: TiempoRecircularMax
- id: MLC_4x5
es-ES: Reserva
- id: MLC_jx
es-ES: Reserva
- id: MLC_55g
es-ES: Reserva
- id: MLC_3cB
es-ES: Reserva
- id: MLC_3nz
es-ES: Reserva
- id: MLC_4tt
es-ES: Reserva
- id: MLC_3eD
es-ES: Reserva
- id: MLC_4VP
es-ES: Reserva
- id: MLC_4Lb
es-ES: Reserva
- id: MLC_3ub
es-ES: Reserva
- id: MLC_4zm
es-ES: Reserva
- id: MLC_4r6
es-ES: Reserva
- id: MLC_3x5
es-ES: Reserva
- id: MLC_3Mi
es-ES: Reserva
- id: MLC_k2
es-ES: Reserva
- id: MLC_4b7
es-ES: Reserva
- id: MLC_XL
es-ES: Reserva
- id: MLC_3dK
es-ES: Reserva
- id: MLC_48q
es-ES: Reserva
- id: MLC_3Yv
es-ES: Reserva
- id: MLC_3RM
es-ES: Reserva
- id: MLC_4tH
es-ES: Reserva
- id: MLC_4AM
es-ES: Reserva
- id: MLC_4zj
es-ES: SP Litros drenaje inicial
- id: MLC_4ji
es-ES: SP Litros empuje final
- id: MLC_3Cf
es-ES: Totalizador litros drenaje
- id: MLC_5BH
es-ES: Totalizador litros empuje
- id: MLC_4WE
es-ES: Tiempo aclarado
- id: MLC_hb
es-ES: Tiempo maximo drenaje
- id: MLC_3dn
es-ES: Tiempo maximo empuje
- id: MLC_3tq
es-ES: Orden calentar
- id: MLC_Ni
es-ES: Orden enfriar
- id: MLC_iz
es-ES: Consigna temperatura
- id: MLC_4kJ
es-ES: Orden de marcha bomba blender
- id: MLC_4pd
es-ES: Velocidad bomba blender
- id: MLC_4Q8
es-ES: Orden de marcha bomba Intermedia
- id: MLC_3pW
es-ES: Orden apertura valvula de salida de tanque
- id: MLC_53c
es-ES: Orden apertura valvula de drenaje
- id: MLC_4yH
es-ES: Orden apertura valvula de entrada tanque
- id: MLC_XY
es-ES: Orden apertura valvula de empuje
- id: MLC_3qv
es-ES: Alarma tiempo maximo recirculacion
- id: MLC_3Mx
es-ES: Orden totalizador drenaje
- id: MLC_579
es-ES: Orden totalizador empuje
- id: MLC_4rh
es-ES: Reset totalizador drenaje
- id: MLC_4ei
es-ES: Reset totalizador empuje
- id: MLC_4ti
es-ES: Secuencia iniciada
- id: MLC_4GP
es-ES: Secuencia finalizada
- id: MLC_QM
es-ES: Etapa actual
- id: MLC_37H
es-ES: Texto etapa
- id: MLC_pm
es-ES: Etapa 100
- id: MLC_gM
es-ES: Etapa 110
- id: MLC_3Hm
es-ES: Etapa 120
- id: MLC_4MB
es-ES: Etapa 130
- id: MLC_3DY
es-ES: Etapa 160
- id: MLC_4B4
es-ES: Etapa 170
- id: MLC_4gf
es-ES: Etapa 180
- id: MLC_3rK
es-ES: Etapa 190
- id: MLC_3vF
es-ES: Etapa 999
- id: MLC_3zW
es-ES: Tiempo de etapa
- id: MLC_4zA
es-ES: Activar
- id: MLC_4bF
es-ES: Reset
- id: MLC_wB
es-ES: Actual
- id: MLC_3DA
es-ES: Set point
- id: MLC_48j
es-ES: Restante
- id: MLC_4qB
es-ES: Pausa
- id: MLC_nw
es-ES: Continuar
- id: MLC_3Z2
es-ES: Retardo desconexion valvula salida tanque
- id: MLC_3RF
es-ES: Retardo desconexion valvula desvio CIP
- id: MLC_3Fq
es-ES: Retardo desconexion valvula drenaje
- id: MLC_4Ht
es-ES: Retardo desconexion valvula entrada tanque
- id: MLC_3bV
es-ES: Retardo desconexion valvula empuje
- id: MLC_sj
es-ES: Tiempo maximo recirculacion
- id: MLC_49z
es-ES: Tiempo maximo recirculacion
- id: MLC_Nr
es-ES: '@Change log'
- id: MLC_52C
es-ES: =============== Calculos
- id: MLC_3vS
es-ES: Histeresis temperaturas
- id: MLC_4Gy
es-ES: =============== Estado secuencia
- id: MLC_cg
es-ES: Pausa
- id: MLC_3v7
es-ES: Paro de secuencia
- id: MLC_45S
es-ES: Texto Etapa
- id: MLC_xw
es-ES: =============== Secuencia
- id: MLC_4vc
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_4Bh
es-ES: Etapa 100 - Apertura de camino
- id: MLC_4uE
es-ES: Etapa 110 - Encendido bomba
- id: MLC_4eZ
es-ES: Etapa 120 - Drenaje previo
- id: MLC_3yb
es-ES: Etapa 130 - Calentar/Enfriar
- id: MLC_49K
es-ES: Etapa 160 - Empuje
- id: MLC_3z3
es-ES: Etapa 170 - Aclarado
- id: MLC_ah
es-ES: Etapa 180 - Apagado bomba
- id: MLC_4Z2
es-ES: Etapa 190 - Cierre de camino
- id: MLC_3PN
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_5CY
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_3wJ
es-ES: Contador tiempo
- id: MLC_3h6
es-ES: Temporizadores
- id: MLC_32X
es-ES: =============== Auxiliares
- id: MLC_3jP
es-ES: Reset Alarma tiempo maximo recirculacion
- id: MLC_3mu
es-ES: =============== Salidas
- id: MLC_3ie
es-ES: Orden calentar/enfriar
- id: MLC_3As
es-ES: Orden totalizador drenaje
- id: MLC_3ed
es-ES: Orden totalizador Empuje
- id: MLC_4H9
es-ES: Visibilidad litros restantes
- id: MLC_3Z7
es-ES: Bomba blender - Orden de marcha
- id: MLC_4dV
es-ES: Bomba intermedia - Orden de marcha
- id: MLC_3ra
es-ES: Valvula salida tanque - Orden de activacion
- id: MLC_35F
es-ES: Valvula drenaje - Orden de activacion
- id: MLC_3FD
es-ES: Valvula entrada tanque - Orden de activacion
- id: MLC_3ZB
es-ES: Valvula empuje - Orden de activacion
- id: MLC_3zM
es-ES: Alarma tiempo maximo recirculacion
- id: MLC_3JK
es-ES: Secuencia iniciada
- id: MLC_4Zm
es-ES: Fin secuencia
@@ -0,0 +1,289 @@
MultiLingualTexts:
- id: MLC_4CY
es-ES: FB15178_ZC_COCINA_HOMO
- id: MLC_3xx
es-ES: Nombre de la secuencia
- id: MLC_3Me
es-ES: Pulso 1 segundo
- id: MLC_4kN
es-ES: Acuse general
- id: MLC_3RM
es-ES: Orden marcha secuencia
- id: MLC_3Gr
es-ES: Estado proceso principal en marcha
- id: MLC_5Bm
es-ES: En etapa
- id: MLC_m8
es-ES: Orden pausa adicional
- id: MLC_4Ux
es-ES: Estado bomba
- id: MLC_4ii
es-ES: 0= N.C. / 1= N.O.
- id: MLC_3T3
es-ES: Temperatura linea
- id: MLC_3Cj
es-ES: Temperatura tanque
- id: MLC_WX
es-ES: Nivel tanque
- id: MLC_5B5
es-ES: LINEA_VelocidadBomba
- id: MLC_3EZ
es-ES: TQ_VelocidadFijaAgitador
- id: MLC_56C
es-ES: Reserva
- id: MLC_3jC
es-ES: Reserva
- id: MLC_464
es-ES: Reserva
- id: MLC_4m9
es-ES: SPTemperatura
- id: MLC_3Jb
es-ES: HisteresisTemp
- id: MLC_4TB
es-ES: TQ_VolumenMinControlAgitador
- id: MLC_4nG
es-ES: TQ_VolumenMaxControlAgitador
- id: MLC_LX
es-ES: TQ_VelocidadMinAgitador
- id: MLC_3wP
es-ES: TQ_VelocidadMaxAgitador
- id: MLC_qV
es-ES: Reserva
- id: MLC_ut
es-ES: Reserva
- id: MLC_33F
es-ES: Reserva
- id: MLC_an
es-ES: Reserva
- id: MLC_3Q4
es-ES: Reserva
- id: MLC_nu
es-ES: Reserva
- id: MLC_yg
es-ES: TiempoHomo
- id: MLC_4tc
es-ES: TipoHomo
- id: MLC_ag
es-ES: TQ_TiempoAgitadorOn
- id: MLC_wJ
es-ES: TQ_TiempoAgitadorOff
- id: MLC_48p
es-ES: TQ_TipoAgitacionVelocidad
- id: MLC_bA
es-ES: TQ_TipoAgitacionTiempo
- id: MLC_3ti
es-ES: TQ_TipoControlTemperatura
- id: MLC_4mX
es-ES: Reserva
- id: MLC_3e4
es-ES: Reserva
- id: MLC_3UC
es-ES: Reserva
- id: MLC_4rC
es-ES: Reserva
- id: MLC_nR
es-ES: Reserva
- id: MLC_3np
es-ES: Reserva
- id: MLC_3PJ
es-ES: Reserva
- id: MLC_4Eg
es-ES: HabilitarTratTermico
- id: MLC_4pY
es-ES: Reserva
- id: MLC_3sB
es-ES: Reserva
- id: MLC_54z
es-ES: Reserva
- id: MLC_3Uk
es-ES: Reserva
- id: MLC_3uC
es-ES: Reserva
- id: MLC_3h2
es-ES: Reserva
- id: MLC_4M4
es-ES: Reserva
- id: MLC_4Qi
es-ES: Reserva
- id: MLC_3VC
es-ES: Reserva
- id: MLC_3VU
es-ES: Reserva
- id: MLC_u2
es-ES: SP Litros drenaje inicial
- id: MLC_5CE
es-ES: SP Litros empuje final
- id: MLC_35G
es-ES: Totalizador litros drenaje
- id: MLC_3vC
es-ES: Totalizador litros empuje
- id: MLC_4PN
es-ES: Tiempo aclarado
- id: MLC_3ae
es-ES: Tiempo maximo drenaje
- id: MLC_TP
es-ES: Tiempo maximo empuje
- id: MLC_4PT
es-ES: Homogenizar en tanque
- id: MLC_b2
es-ES: Orden de marcha bomba blender
- id: MLC_53W
es-ES: Velocidad bomba blender
- id: MLC_me
es-ES: Orden de marcha bomba Intermedia
- id: MLC_3NT
es-ES: Orden apertura valvula de salida de tanque
- id: MLC_3GW
es-ES: Orden apertura valvula de drenaje
- id: MLC_3ir
es-ES: Orden apertura valvula de entrada tanque
- id: MLC_4Yt
es-ES: Orden apertura valvula de empuje
- id: MLC_54t
es-ES: Orden calentar
- id: MLC_4Zg
es-ES: Orden enfriar
- id: MLC_3gB
es-ES: Set point calentamiento/enfriamiento
- id: MLC_4Cr
es-ES: Orden totalizador drenaje
- id: MLC_iZ
es-ES: Orden totalizador empuje
- id: MLC_3Am
es-ES: Reset totalizador drenaje
- id: MLC_43T
es-ES: Reset totalizador empuje
- id: MLC_Q3
es-ES: Secuencia iniciada
- id: MLC_zF
es-ES: Secuencia finalizada
- id: MLC_4FQ
es-ES: Etapa actual
- id: MLC_3th
es-ES: Texto etapa
- id: MLC_58L
es-ES: Etapa 100
- id: MLC_3EY
es-ES: Etapa 110
- id: MLC_3zJ
es-ES: Etapa 120
- id: MLC_4Tw
es-ES: Etapa 140
- id: MLC_k6
es-ES: Etapa 150
- id: MLC_4yw
es-ES: Etapa 160
- id: MLC_4ik
es-ES: Etapa 170
- id: MLC_3NW
es-ES: Etapa 180
- id: MLC_mx
es-ES: Etapa 190
- id: MLC_3mq
es-ES: Etapa 999
- id: MLC_sC
es-ES: Tiempo de etapa
- id: MLC_4eP
es-ES: Activar
- id: MLC_4s3
es-ES: Reset
- id: MLC_if
es-ES: Actual
- id: MLC_3tN
es-ES: Set point
- id: MLC_3gN
es-ES: Restante
- id: MLC_wM
es-ES: Pausa
- id: MLC_362
es-ES: Continuar
- id: MLC_VQ
es-ES: Retardo desconexion valvula salida tanque
- id: MLC_4Aj
es-ES: Retardo desconexion valvula desvio CIP
- id: MLC_3f9
es-ES: Retardo desconexion valvula drenaje
- id: MLC_kS
es-ES: Retardo desconexion valvula entrada tanque
- id: MLC_4j5
es-ES: Retardo desconexion valvula empuje
- id: MLC_3uE
es-ES: 0= Calentar / 1= Enfriar
- id: MLC_mH
es-ES: '@Change log'
- id: MLC_aK
es-ES: =============== Auxiliares
- id: MLC_56c
es-ES: Gestion calentamiento - Calculo histeresis
- id: MLC_Zj
es-ES: Gestion calentamiento - Activacion Calentar / Enfriar
- id: MLC_3L6
es-ES: =============== Estado secuencia
- id: MLC_4Tn
es-ES: Pausa
- id: MLC_bz
es-ES: Paro de secuencia
- id: MLC_4Zq
es-ES: Texto Etapa
- id: MLC_3us
es-ES: =============== Secuencia
- id: MLC_4DA
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3CC
es-ES: Etapa 100 - Apertura de camino
- id: MLC_3N8
es-ES: Etapa 110 - Encendido bomba
- id: MLC_xG
es-ES: Etapa 120 - Drenaje previo
- id: MLC_3WL
es-ES: Etapa 140 - Homogenizacion en tanque
- id: MLC_4AD
es-ES: Etapa 150 - Homogenizacion en linea
- id: MLC_js
es-ES: Etapa 160 - Empuje
- id: MLC_3cn
es-ES: Etapa 170 - Aclarado
- id: MLC_3dx
es-ES: Etapa 180 - Apagado bomba
- id: MLC_3yb
es-ES: Etapa 190 - Cierre de camino
- id: MLC_3KK
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_49m
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4uG
es-ES: Contador tiempo
- id: MLC_3DW
es-ES: Temporizadores
- id: MLC_4FH
es-ES: =============== Salidas
- id: MLC_3An
es-ES: Orden calentar / enfriar
- id: MLC_4Jb
es-ES: Orden totalizador drenaje
- id: MLC_4gQ
es-ES: Orden totalizador Empuje
- id: MLC_4JT
es-ES: Visibilidad litros restantes
- id: MLC_3qC
es-ES: Homogenizacion en tanque
- id: MLC_nk
es-ES: Bomba blender - Orden de marcha
- id: MLC_4J4
es-ES: Bomba intermedia - Orden de marcha
- id: MLC_4dN
es-ES: Valvula salida tanque - Orden de activacion
- id: MLC_3w9
es-ES: Valvula drenaje - Orden de activacion
- id: MLC_52R
es-ES: Valvula entrada tanque - Orden de activacion
- id: MLC_3dG
es-ES: Valvula empuje - Orden de activacion
- id: MLC_4tU
es-ES: Agitador tanque - Orden de marcha
- id: MLC_3QA
es-ES: Agitador tanque - Consigna velocidad
- id: MLC_Ty
es-ES: Secuencia iniciada
- id: MLC_hG
es-ES: Fin secuencia
@@ -0,0 +1,812 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15179";
S7_BlockTitle := "MLC_WJ";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15179_ZC_COCINA_FIN_PREP"
VAR_INPUT
{ S7_MLC := "MLC_42j" }
NombreSecuencia : String := 'FIN PREPARACION';
{ S7_MLC := "MLC_4RX" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_rM" }
Ack : Bool;
{ S7_MLC := "MLC_hi" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_4jM" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_V9" }
EnEtapa : Bool;
{ S7_MLC := "MLC_3v4" }
OrdenPausa : Bool;
EstadoBocaHombre : Bool;
{ S7_MLC := "MLC_3GZ" }
TT_Tanque : Real;
{ S7_MLC := "MLC_429" }
LT_Tanque : Real;
Parametros : _.UDT_ZC_RECETA_BATCH_ETAPA := (
{ S7_MLC := "MLC_349" }
TipoEtapa := (),
{ S7_MLC := "MLC_3nA" }
P_Real_1 := (),
{ S7_MLC := "MLC_46M" }
P_Real_2 := (),
{ S7_MLC := "MLC_4fL" }
P_Real_3 := (),
{ S7_MLC := "MLC_4si" }
P_Real_4 := (),
{ S7_MLC := "MLC_4Sr" }
P_Real_5 := (),
{ S7_MLC := "MLC_xQ" }
P_Real_6 := (),
{ S7_MLC := "MLC_4Lc" }
P_Real_7 := (),
{ S7_MLC := "MLC_3m7" }
P_Real_8 := (),
{ S7_MLC := "MLC_4JY" }
P_Real_9 := (),
{ S7_MLC := "MLC_4jf" }
P_Real_10 := (),
{ S7_MLC := "MLC_57h" }
P_Real_11 := (),
{ S7_MLC := "MLC_4tX" }
P_Real_12 := (),
{ S7_MLC := "MLC_4Sp" }
P_Real_13 := (),
{ S7_MLC := "MLC_58V" }
P_Real_14 := (),
{ S7_MLC := "MLC_4iu" }
P_Real_15 := (),
{ S7_MLC := "MLC_3WE" }
P_Real_16 := (),
{ S7_MLC := "MLC_36W" }
P_Real_17 := (),
{ S7_MLC := "MLC_32N" }
P_Int_1 := (),
{ S7_MLC := "MLC_55g" }
P_Int_2 := (),
{ S7_MLC := "MLC_5BQ" }
P_Int_3 := (),
{ S7_MLC := "MLC_Y5" }
P_Int_4 := (),
{ S7_MLC := "MLC_4ai" }
P_Int_5 := (),
{ S7_MLC := "MLC_4A9" }
P_Int_6 := (),
{ S7_MLC := "MLC_4aL" }
P_Int_7 := (),
{ S7_MLC := "MLC_3ph" }
P_Int_8 := (),
{ S7_MLC := "MLC_555" }
P_Int_9 := (),
{ S7_MLC := "MLC_n6" }
P_Int_10 := (),
{ S7_MLC := "MLC_4ak" }
P_Int_11 := (),
{ S7_MLC := "MLC_4uW" }
P_Int_12 := (),
{ S7_MLC := "MLC_qe" }
P_Int_13 := (),
{ S7_MLC := "MLC_bu" }
P_Int_14 := (),
{ S7_MLC := "MLC_4ZL" }
P_Int_15 := (),
{ S7_MLC := "MLC_4pe" }
P_String_1 := (),
{ S7_MLC := "MLC_476" }
P_String_2 := (),
{ S7_MLC := "MLC_3F9" }
P_String_3 := (),
{ S7_MLC := "MLC_dH" }
P_String_4 := (),
{ S7_MLC := "MLC_4MH" }
P_String_5 := (),
{ S7_MLC := "MLC_3CT" }
P_String_6 := (),
{ S7_MLC := "MLC_4wf" }
P_String_7 := (),
{ S7_MLC := "MLC_tU" }
P_String_8 := (),
{ S7_MLC := "MLC_3M6" }
P_String_9 := (),
{ S7_MLC := "MLC_3uW" }
P_String_10 := ()
);
END_VAR
VAR_OUTPUT
MarchaAgitador : Bool;
VelocidadAgitador : Real;
{ S7_MLC := "MLC_4YG" }
OrdenCalentar : Bool;
{ S7_MLC := "MLC_3Ug" }
OrdenEnfriar : Bool;
{ S7_MLC := "MLC_4TJ" }
SP_CalEnf : Real;
VisibilidadCalEnf : Bool;
{ S7_MLC := "MLC_4ez" }
SecuenciaIniciada : Bool;
{ S7_MLC := "MLC_MQ" }
FinSecuencia : Bool;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_3xD" }
s_EtapaActual : Int;
{ S7_MLC := "MLC_3bi" }
s_TextoEtapa : String[100];
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..15] of Bool := [
{ S7_MLC := "MLC_QX" }
(),
{ S7_MLC := "MLC_3iG" }
(),
{ S7_MLC := "MLC_46h" }
(),
{ S7_MLC := "MLC_39V" }
(),
{ S7_MLC := "MLC_4cY" }
(),
{ S7_MLC := "MLC_39P" }
(),
{ S7_MLC := "MLC_4Cy" }
(),
{ S7_MLC := "MLC_3X3" }
(),
{ S7_MLC := "MLC_55c" }
(),
6(()),
{ S7_MLC := "MLC_bF" }
()
];
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_37m" }
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_53n" }
Activar : Bool;
{ S7_MLC := "MLC_4hS" }
Reset : Bool;
{ S7_MLC := "MLC_4Pm" }
Actual : Int;
{ S7_MLC := "MLC_3q5" }
SP : Int;
{ S7_MLC := "MLC_sc" }
Restante : Int;
END_STRUCT;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Setpoint := "False";
S7_Visibility := "Hidden := External"
}
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
{ S7_MLC := "MLC_V5" }
(),
{ S7_MLC := "MLC_389" }
()
];
s_FF : Array[1..#NUM_MAX_FF] of _.UDT_ZC_DISP_FF;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenCalentar : Bool;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenEnfriar : Bool;
END_VAR
VAR_TEMP
for_i : Int;
t_TempHistSuperior : Real;
t_TempHistInferior : Real;
t_x0 : Real;
t_x1 : Real;
t_x : Real;
t_y0 : Real;
t_y1 : Real;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 2;
NUM_MAX_FF : Int := 1;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_VN"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15179_ZC_COCINA_FIN_PREP
Descripcion: Bloque de gestión de fase fin preparacion
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 18.09.2025 (ABH) Primera versión
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_43H"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4qT"
}
NETWORK
RUNG wire#powerrail
Add(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistSuperior
)
Sub(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistInferior
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3DY"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_56C"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #OrdenPausa )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[1].SP
)
Coil( #s_TON[1].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[1].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #OrdenPausa )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[2].SP
)
Coil( #s_TON[2].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[2].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4ph"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EnEtapa )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Jy"
}
NETWORK
// ================================================================
// TEXTO ETAPA
CASE #s_EtapaActual OF
0:
#s_TextoEtapa := CONCAT_STRING(IN1:= #NombreSecuencia,IN2:= ' - REPOSO');
140:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN PREPARACION');
999:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN DE SECUENCIA');
ELSE
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FUERA DE ETAPA');
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3kn"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4f9"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #EnEtapa )
Contact( #OrdenMarcha )
Move(
in := 140,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Vq"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
wire#w1
P_Trig( #s_Pulsos[3] )
Move(
in := #Parametros.P_Int_1,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #SiempreOFF )
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 999,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_34M"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
wire#w1
P_Trig( #s_Pulsos[15] )
Move(
in := 3,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EnEtapa )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Py"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_58k"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_Qr"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg := #Pulso1Seg,
TON := #s_TON[#for_i]);
END_FOR;
// ============================================================================
// FF
FOR #for_i := 1 TO #NUM_MAX_FF DO
"FC2926_ZC_FF_INDV"(Pulso1Seg := #Pulso1Seg,
FF := #s_FF[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Ns"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4aM"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_15,
in2 := 1
)
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
I_Contact( #s_Pausa_M )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_7,
in2 := 0
)
wire#w2
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w3
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w3
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistSuperior
)
R_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w2
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_7,
in2 := 1
)
wire#w4
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w5
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w5
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistInferior
)
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w4
R_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w1
Coil( #VisibilidadCalEnf )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenCalentar )
Coil( #OrdenCalentar )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenEnfriar )
Coil( #OrdenEnfriar )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
R_Coil( #s_OrdenEnfriar )
R_Coil( #s_OrdenCalentar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_VB"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_2,
in2 := 0
)
I_Contact( #s_Pausa_M )
Contact( #EstadoBocaHombre )
{ S7_Templates := "SrcType := Real" }
GT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_2
)
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_3
)
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_6,
in2 := 0
)
Move(
in := #Parametros.P_Int_4,
out1 => #s_FF[1].Config_SetPointTiempoFlip
)
Move(
in := #Parametros.P_Int_3,
out1 => #s_FF[1].Config_SetPointTiempoFlop
)
Coil( #s_FF[1].Orden_Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_6,
in2 := 1
)
wire#w2
Coil( #MarchaAgitador )
END_RUNG
RUNG wire#w1
Contact( #s_FF[1].Estado_Flip )
END_RUNG wire#w2
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4wQ"
}
NETWORK
IF #Parametros.P_Int_5 = 1 THEN
// =============================================================================
//VELOCIDAD FIJA
#VelocidadAgitador := #Parametros.P_Real_1;
ELSE
// =============================================================================
//VELOCIDAD POR NIVEL
#t_x0 := #Parametros.P_Real_2;
#t_x1 := #Parametros.P_Real_3;
#t_x := #LT_Tanque;
#t_y0 := #Parametros.P_Real_4;
#t_y1 := #Parametros.P_Real_5;
#VelocidadAgitador := #t_y0 + (#t_y1 - #t_y0) * ((#t_x - #t_x0) / (#t_x1 - #t_x0));
IF #VelocidadAgitador > #t_y1 THEN
#VelocidadAgitador := #t_y1;
END_IF;
IF #VelocidadAgitador < #t_y0 THEN
#VelocidadAgitador := #t_y0;
END_IF;
END_IF;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_45A"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3mk"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
Coil( #FinSecuencia )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,197 @@
MultiLingualTexts:
- id: MLC_WJ
es-ES: FB15179_ZC_COCINA_FIN_PREP
- id: MLC_42j
es-ES: Nombre de la secuencia
- id: MLC_4RX
es-ES: Pulso 1 segundo
- id: MLC_rM
es-ES: Acuse general
- id: MLC_hi
es-ES: Orden marcha secuencia
- id: MLC_4jM
es-ES: Estado proceso principal en marcha
- id: MLC_V9
es-ES: En etapa
- id: MLC_3v4
es-ES: Orden pausa adicional
- id: MLC_3GZ
es-ES: Temperatura tanque
- id: MLC_429
es-ES: Nivel tanque
- id: MLC_349
es-ES: .
- id: MLC_3nA
es-ES: AgitadorVelocidadFija
- id: MLC_46M
es-ES: AgitadorVolumenMinControl
- id: MLC_4fL
es-ES: AgitadorVolumenMaxControl
- id: MLC_4si
es-ES: AgitadorVelocidadMin
- id: MLC_4Sr
es-ES: AgitadorVelocidadMax
- id: MLC_xQ
es-ES: SPTemperatura
- id: MLC_4Lc
es-ES: HisteresisTemp
- id: MLC_3m7
es-ES: Reserva
- id: MLC_4JY
es-ES: Reserva
- id: MLC_4jf
es-ES: Reserva
- id: MLC_57h
es-ES: Reserva
- id: MLC_4tX
es-ES: Reserva
- id: MLC_4Sp
es-ES: Reserva
- id: MLC_58V
es-ES: Reserva
- id: MLC_4iu
es-ES: Reserva
- id: MLC_3WE
es-ES: Reserva
- id: MLC_36W
es-ES: Reserva
- id: MLC_32N
es-ES: Reserva
- id: MLC_55g
es-ES: Reserva
- id: MLC_5BQ
es-ES: AgitadorTiempoOFF
- id: MLC_Y5
es-ES: AgitadorTiempoON
- id: MLC_4ai
es-ES: TipoAgitacionVelocidad
- id: MLC_4A9
es-ES: TipoAgitacionTiempo
- id: MLC_4aL
es-ES: TipoControlTemperatura
- id: MLC_3ph
es-ES: Reserva
- id: MLC_555
es-ES: Reserva
- id: MLC_n6
es-ES: Reserva
- id: MLC_4ak
es-ES: Reserva
- id: MLC_4uW
es-ES: Reserva
- id: MLC_qe
es-ES: Reserva
- id: MLC_bu
es-ES: Reserva
- id: MLC_4ZL
es-ES: HabilitarTratTermico
- id: MLC_4pe
es-ES: Reserva
- id: MLC_476
es-ES: Reserva
- id: MLC_3F9
es-ES: Reserva
- id: MLC_dH
es-ES: Reserva
- id: MLC_4MH
es-ES: Reserva
- id: MLC_3CT
es-ES: Reserva
- id: MLC_4wf
es-ES: Reserva
- id: MLC_tU
es-ES: Reserva
- id: MLC_3M6
es-ES: Reserva
- id: MLC_3uW
es-ES: Reserva
- id: MLC_4YG
es-ES: Orden calentar
- id: MLC_3Ug
es-ES: Orden enfriar
- id: MLC_4TJ
es-ES: Set point calentamiento/enfriamiento
- id: MLC_4ez
es-ES: Secuencia iniciada
- id: MLC_MQ
es-ES: Secuencia finalizada
- id: MLC_3xD
es-ES: Etapa actual
- id: MLC_3bi
es-ES: Texto etapa
- id: MLC_QX
es-ES: Etapa 100
- id: MLC_3iG
es-ES: Etapa 110
- id: MLC_46h
es-ES: Etapa 120
- id: MLC_39V
es-ES: Etapa 140
- id: MLC_4cY
es-ES: Etapa 150
- id: MLC_39P
es-ES: Etapa 160
- id: MLC_4Cy
es-ES: Etapa 170
- id: MLC_3X3
es-ES: Etapa 180
- id: MLC_55c
es-ES: Etapa 190
- id: MLC_bF
es-ES: Etapa 999
- id: MLC_37m
es-ES: Tiempo de etapa
- id: MLC_53n
es-ES: Activar
- id: MLC_4hS
es-ES: Reset
- id: MLC_4Pm
es-ES: Actual
- id: MLC_3q5
es-ES: Set point
- id: MLC_sc
es-ES: Restante
- id: MLC_V5
es-ES: Pausa
- id: MLC_389
es-ES: Continuar
- id: MLC_VN
es-ES: '@Change log'
- id: MLC_43H
es-ES: =============== Auxiliares
- id: MLC_4qT
es-ES: Gestion calentamiento - Calculo histeresis
- id: MLC_3DY
es-ES: =============== Estado secuencia
- id: MLC_56C
es-ES: Pausa
- id: MLC_4ph
es-ES: Paro de secuencia
- id: MLC_4Jy
es-ES: Texto Etapa
- id: MLC_3kn
es-ES: =============== Secuencia
- id: MLC_4f9
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3Vq
es-ES: Etapa 140 - Fin preparacion
- id: MLC_34M
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_4Py
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_58k
es-ES: Contador tiempo
- id: MLC_Qr
es-ES: Temporizadores
- id: MLC_3Ns
es-ES: =============== Salidas
- id: MLC_4aM
es-ES: Orden calentar / enfriar
- id: MLC_VB
es-ES: Agitador tanque - Orden de marcha
- id: MLC_4wQ
es-ES: Agitador tanque - Consigna velocidad
- id: MLC_45A
es-ES: Secuencia iniciada
- id: MLC_3mk
es-ES: Fin secuencia
@@ -0,0 +1,227 @@
MultiLingualTexts:
- id: MLC_4Tc
es-ES: FB15175_ZC_COCINA_AD_PROD
- id: MLC_4MW
es-ES: Nombre de la secuencia
- id: MLC_sE
es-ES: Pulso 1 segundo
- id: MLC_56c
es-ES: Acuse general
- id: MLC_3GF
es-ES: Orden marcha secuencia
- id: MLC_4W5
es-ES: Estado proceso principal en marcha
- id: MLC_43f
es-ES: En etapa
- id: MLC_4AC
es-ES: Orden pausa adicional
- id: MLC_56k
es-ES: Pulsador saltar etapa
- id: MLC_YC
es-ES: Confirmacion pulsador iniciar dosificacion
- id: MLC_44R
es-ES: Nivel tanque
- id: MLC_4p9
es-ES: .
- id: MLC_iA
es-ES: AgitadorVelocidadFija
- id: MLC_3bE
es-ES: AgitadorVolumenMinControl
- id: MLC_53v
es-ES: AgitadorVolumenMaxControl
- id: MLC_YF
es-ES: AgitadorVelocidadMin
- id: MLC_3m5
es-ES: AgitadorVelocidadMax
- id: MLC_4pg
es-ES: Reserva
- id: MLC_3xQ
es-ES: Reserva
- id: MLC_4Ui
es-ES: kgProd1
- id: MLC_4Ct
es-ES: kgProd2
- id: MLC_yZ
es-ES: kgProd3
- id: MLC_n5
es-ES: kgProd4
- id: MLC_4Qv
es-ES: kgProd5
- id: MLC_qQ
es-ES: kgProd6
- id: MLC_Uw
es-ES: kgProd7
- id: MLC_4YD
es-ES: kgProd8
- id: MLC_4Qn
es-ES: kgProd9
- id: MLC_3pP
es-ES: kgProd10
- id: MLC_42j
es-ES: AgitadorNumeroCiclos
- id: MLC_3Ca
es-ES: Reserva
- id: MLC_3aT
es-ES: AgitadorTiempoOFF
- id: MLC_4Mj
es-ES: AgitadorTiempoON
- id: MLC_ud
es-ES: TipoAgitacionVelocidad
- id: MLC_Z9
es-ES: Reserva
- id: MLC_3yM
es-ES: Reserva
- id: MLC_PP
es-ES: Reserva
- id: MLC_jn
es-ES: Reserva
- id: MLC_y3
es-ES: Reserva
- id: MLC_3wc
es-ES: Reserva
- id: MLC_4VY
es-ES: Reserva
- id: MLC_VM
es-ES: Reserva
- id: MLC_44G
es-ES: Reserva
- id: MLC_R6
es-ES: Reserva
- id: MLC_QM
es-ES: NombreProd1
- id: MLC_tv
es-ES: NombreProd2
- id: MLC_47k
es-ES: NombreProd3
- id: MLC_sq
es-ES: NombreProd4
- id: MLC_3yk
es-ES: NombreProd5
- id: MLC_g5
es-ES: NombreProd6
- id: MLC_4rN
es-ES: NombreProd7
- id: MLC_4mg
es-ES: NombreProd8
- id: MLC_3MS
es-ES: NombreProd9
- id: MLC_3GJ
es-ES: NombreProd10
- id: MLC_4vf
es-ES: Permiso pulsador iniciar dosificacion
- id: MLC_4J2
es-ES: Marcha agitador
- id: MLC_4AN
es-ES: Velocidad agitador
- id: MLC_4GH
es-ES: Producto actual
- id: MLC_529
es-ES: Permiso adicion de producto
- id: MLC_gC
es-ES: Permiso adicion de producto
- id: MLC_h6
es-ES: Permiso salto etapa
- id: MLC_Pj
es-ES: Secuencia iniciada
- id: MLC_fa
es-ES: Secuencia finalizada
- id: MLC_4DD
es-ES: Etapa actual
- id: MLC_4RU
es-ES: Texto etapa
- id: MLC_3q8
es-ES: Etapa 130
- id: MLC_4h9
es-ES: Etapa 140
- id: MLC_Qe
es-ES: Etapa 150
- id: MLC_3iE
es-ES: Etapa 999
- id: MLC_3X8
es-ES: Incrementar numero de ciclos
- id: MLC_uS
es-ES: Tiempo de etapa
- id: MLC_3Rs
es-ES: Activar
- id: MLC_4Qq
es-ES: Reset
- id: MLC_4yy
es-ES: Actual
- id: MLC_YT
es-ES: Set point
- id: MLC_4m7
es-ES: Restante
- id: MLC_3df
es-ES: Pausa
- id: MLC_3Nb
es-ES: Continuar
- id: MLC_u5
es-ES: Peso inicial del tanque para calculo de dosificaciones
- id: MLC_43i
es-ES: Producto actual
- id: MLC_4Vs
es-ES: Numero de ciclos de agitador
- id: MLC_3st
es-ES: '@Change log'
- id: MLC_3PZ
es-ES: =============== Estado secuencia
- id: MLC_3jX
es-ES: Pausa
- id: MLC_3Wz
es-ES: Paro de secuencia
- id: MLC_525
es-ES: Texto Etapa
- id: MLC_3Mw
es-ES: Limite producto actual
- id: MLC_3PR
es-ES: =============== Auxiliares
- id: MLC_Ui
es-ES: Datos ingrediente actual
- id: MLC_3M9
es-ES: =============== Secuencia
- id: MLC_4BX
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_Le
es-ES: Etapa 120 - Espera inicio dosificacion
- id: MLC_5Bj
es-ES: Etapa 130 - Adicion de producto
- id: MLC_43Q
es-ES: Etapa 140 - Comprobacion ingredientes
- id: MLC_48r
es-ES: Etapa 150 - Homogenizacion
- id: MLC_gr
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_4LS
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_594
es-ES: Contador tiempo
- id: MLC_3Zi
es-ES: Temporizadores
- id: MLC_3zF
es-ES: =============== Auxiliares
- id: MLC_jt
es-ES: Calculo cantidad a dosificar
- id: MLC_3TC
es-ES: Gestion Flip Flop agitador
- id: MLC_4Mw
es-ES: Gestion Numero de cliclos
- id: MLC_3bS
es-ES: =============== Salidas
- id: MLC_Yt
es-ES: Permiso pulsador iniciar dosificacion
- id: MLC_3RK
es-ES: Despresurizar
- id: MLC_LS
es-ES: Orden agitador
- id: MLC_3hH
es-ES: Agitador tanque - Consigna velocidad
- id: MLC_4Mk
es-ES: Ingrediente actual
- id: MLC_365
es-ES: Permiso confirmar productos
- id: MLC_4RE
es-ES: Permiso salto etapa
- id: MLC_3Eu
es-ES: Secuencia iniciada
- id: MLC_4rA
es-ES: Fin secuencia
@@ -0,0 +1,814 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15181";
S7_BlockTitle := "MLC_f4";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15181_ZC_FERM_HOMO"
VAR_INPUT
{ S7_MLC := "MLC_4JF" }
NombreSecuencia : String := 'HOMOGENIZAR';
{ S7_MLC := "MLC_59i" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_4hS" }
Ack : Bool;
{ S7_MLC := "MLC_vC" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_XD" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_3fn" }
EnEtapa : Bool;
{ S7_MLC := "MLC_3q6" }
OrdenPausa : Bool;
EstadoBocaHombre : Bool;
{ S7_MLC := "MLC_g4" }
TT_Tanque : Real;
{ S7_MLC := "MLC_3tc" }
LT_Tanque : Real;
Parametros : _.UDT_ZC_RECETA_BATCH_ETAPA := (
{ S7_MLC := "MLC_3Ma" }
TipoEtapa := (),
{ S7_MLC := "MLC_4qZ" }
P_Real_1 := (),
{ S7_MLC := "MLC_46F" }
P_Real_2 := (),
{ S7_MLC := "MLC_3xT" }
P_Real_3 := (),
{ S7_MLC := "MLC_3fL" }
P_Real_4 := (),
{ S7_MLC := "MLC_nv" }
P_Real_5 := (),
{ S7_MLC := "MLC_tR" }
P_Real_6 := (),
{ S7_MLC := "MLC_4U4" }
P_Real_7 := (),
{ S7_MLC := "MLC_4UM" }
P_Real_8 := (),
{ S7_MLC := "MLC_53G" }
P_Real_9 := (),
{ S7_MLC := "MLC_3Fr" }
P_Real_10 := (),
{ S7_MLC := "MLC_ri" }
P_Real_11 := (),
{ S7_MLC := "MLC_zJ" }
P_Real_12 := (),
{ S7_MLC := "MLC_4Qm" }
P_Real_13 := (),
{ S7_MLC := "MLC_U5" }
P_Real_14 := (),
{ S7_MLC := "MLC_3Tm" }
P_Real_15 := (),
{ S7_MLC := "MLC_3mg" }
P_Real_16 := (),
{ S7_MLC := "MLC_58A" }
P_Real_17 := (),
{ S7_MLC := "MLC_uc" }
P_Int_1 := (),
{ S7_MLC := "MLC_3AT" }
P_Int_2 := (),
{ S7_MLC := "MLC_4je" }
P_Int_3 := (),
{ S7_MLC := "MLC_4YP" }
P_Int_4 := (),
{ S7_MLC := "MLC_49H" }
P_Int_5 := (),
{ S7_MLC := "MLC_3C2" }
P_Int_6 := (),
{ S7_MLC := "MLC_yK" }
P_Int_7 := (),
{ S7_MLC := "MLC_4Rx" }
P_Int_8 := (),
{ S7_MLC := "MLC_eh" }
P_Int_9 := (),
{ S7_MLC := "MLC_4Tm" }
P_Int_10 := (),
{ S7_MLC := "MLC_4VJ" }
P_Int_11 := (),
{ S7_MLC := "MLC_54m" }
P_Int_12 := (),
{ S7_MLC := "MLC_3tX" }
P_Int_13 := (),
{ S7_MLC := "MLC_38Y" }
P_Int_14 := (),
{ S7_MLC := "MLC_4uC" }
P_Int_15 := (),
{ S7_MLC := "MLC_4s6" }
P_String_1 := (),
{ S7_MLC := "MLC_yT" }
P_String_2 := (),
{ S7_MLC := "MLC_3d7" }
P_String_3 := (),
{ S7_MLC := "MLC_5BY" }
P_String_4 := (),
{ S7_MLC := "MLC_3UX" }
P_String_5 := (),
{ S7_MLC := "MLC_36f" }
P_String_6 := (),
{ S7_MLC := "MLC_4sv" }
P_String_7 := (),
{ S7_MLC := "MLC_335" }
P_String_8 := (),
{ S7_MLC := "MLC_4QK" }
P_String_9 := (),
{ S7_MLC := "MLC_3Lq" }
P_String_10 := ()
);
END_VAR
VAR_OUTPUT
MarchaAgitador : Bool;
VelocidadAgitador : Real;
{ S7_MLC := "MLC_48T" }
OrdenCalentar : Bool;
{ S7_MLC := "MLC_3GV" }
OrdenEnfriar : Bool;
{ S7_MLC := "MLC_4bD" }
SP_CalEnf : Real;
VisibilidadCalEnf : Bool;
{ S7_MLC := "MLC_VF" }
SecuenciaIniciada : Bool;
{ S7_MLC := "MLC_4E5" }
FinSecuencia : Bool;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_3rN" }
s_EtapaActual : Int;
{ S7_MLC := "MLC_4ZU" }
s_TextoEtapa : String[100];
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..15] of Bool := [
{ S7_MLC := "MLC_4hV" }
(),
{ S7_MLC := "MLC_4yf" }
(),
{ S7_MLC := "MLC_3WW" }
(),
{ S7_MLC := "MLC_RY" }
(),
{ S7_MLC := "MLC_4zV" }
(),
{ S7_MLC := "MLC_4rE" }
(),
{ S7_MLC := "MLC_VJ" }
(),
{ S7_MLC := "MLC_3ad" }
(),
{ S7_MLC := "MLC_4EE" }
(),
6(()),
{ S7_MLC := "MLC_4HZ" }
()
];
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_w2" }
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_3Le" }
Activar : Bool;
{ S7_MLC := "MLC_3H7" }
Reset : Bool;
{ S7_MLC := "MLC_45E" }
Actual : Int;
{ S7_MLC := "MLC_589" }
SP : Int;
{ S7_MLC := "MLC_4SA" }
Restante : Int;
END_STRUCT;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Setpoint := "False";
S7_Visibility := "Hidden := External"
}
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
{ S7_MLC := "MLC_cd" }
(),
{ S7_MLC := "MLC_3iL" }
()
];
s_FF : Array[1..#NUM_MAX_FF] of _.UDT_ZC_DISP_FF;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenCalentar : Bool;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenEnfriar : Bool;
END_VAR
VAR_TEMP
for_i : Int;
t_TempHistSuperior : Real;
t_TempHistInferior : Real;
t_x0 : Real;
t_x1 : Real;
t_x : Real;
t_y0 : Real;
t_y1 : Real;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 2;
NUM_MAX_FF : Int := 1;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Bd"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15181_ZC_FERM_HOMO
Descripcion: Bloque de gestión de fase homogenizar
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 08.07.2025 (ABH) Primera versión
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4KF"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4JJ"
}
NETWORK
RUNG wire#powerrail
Add(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistSuperior
)
Sub(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistInferior
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_5A4"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3ra"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #OrdenPausa )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[1].SP
)
Coil( #s_TON[1].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[1].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #OrdenPausa )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[2].SP
)
Coil( #s_TON[2].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[2].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3PP"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EnEtapa )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Jc"
}
NETWORK
// ================================================================
// TEXTO ETAPA
CASE #s_EtapaActual OF
0:
#s_TextoEtapa := CONCAT_STRING(IN1:= #NombreSecuencia,IN2:= ' - REPOSO');
140:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - HOMOGENIZACION EN TANQUE');
999:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN DE SECUENCIA');
ELSE
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FUERA DE ETAPA');
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_42S"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Hs"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #EnEtapa )
Contact( #OrdenMarcha )
Move(
in := 140,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3hP"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
wire#w1
P_Trig( #s_Pulsos[3] )
Move(
in := #Parametros.P_Int_1,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 999,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3LE"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
wire#w1
P_Trig( #s_Pulsos[15] )
Move(
in := 3,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EnEtapa )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_33A"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3E6"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3K2"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg := #Pulso1Seg,
TON := #s_TON[#for_i]);
END_FOR;
// ============================================================================
// FF
FOR #for_i := 1 TO #NUM_MAX_FF DO
"FC2926_ZC_FF_INDV"(Pulso1Seg := #Pulso1Seg,
FF := #s_FF[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Rw"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_U6"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_15,
in2 := 1
)
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
I_Contact( #s_Pausa_M )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_7,
in2 := 0
)
wire#w2
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w3
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w3
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistSuperior
)
R_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w2
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_7,
in2 := 1
)
wire#w4
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w5
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w5
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistInferior
)
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w4
R_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w1
Coil( #VisibilidadCalEnf )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenCalentar )
Coil( #OrdenCalentar )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenEnfriar )
Coil( #OrdenEnfriar )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
R_Coil( #s_OrdenEnfriar )
R_Coil( #s_OrdenCalentar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3cC"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_2,
in2 := 0
)
I_Contact( #s_Pausa_M )
Contact( #EstadoBocaHombre )
{ S7_Templates := "SrcType := Real" }
GT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_2
)
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_3
)
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_6,
in2 := 0
)
Move(
in := #Parametros.P_Int_4,
out1 => #s_FF[1].Config_SetPointTiempoFlip
)
Move(
in := #Parametros.P_Int_3,
out1 => #s_FF[1].Config_SetPointTiempoFlop
)
Coil( #s_FF[1].Orden_Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_6,
in2 := 1
)
wire#w2
Coil( #MarchaAgitador )
END_RUNG
RUNG wire#w1
Contact( #s_FF[1].Estado_Flip )
END_RUNG wire#w2
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_5BJ"
}
NETWORK
IF #Parametros.P_Int_5 = 1 THEN
// =============================================================================
//VELOCIDAD FIJA
#VelocidadAgitador := #Parametros.P_Real_1;
ELSE
// =============================================================================
//VELOCIDAD POR NIVEL
#t_x0 := #Parametros.P_Real_2;
#t_x1 := #Parametros.P_Real_3;
#t_x := #LT_Tanque;
#t_y0 := #Parametros.P_Real_4;
#t_y1 := #Parametros.P_Real_5;
#VelocidadAgitador := #t_y0 + (#t_y1 - #t_y0) * ((#t_x - #t_x0) / (#t_x1 - #t_x0));
IF #VelocidadAgitador > #t_y1 THEN
#VelocidadAgitador := #t_y1;
END_IF;
IF #VelocidadAgitador < #t_y0 THEN
#VelocidadAgitador := #t_y0;
END_IF;
END_IF;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4c9"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Tb"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
Coil( #FinSecuencia )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,197 @@
MultiLingualTexts:
- id: MLC_f4
es-ES: FB15181_ZC_FERM_HOMO
- id: MLC_4JF
es-ES: Nombre de la secuencia
- id: MLC_59i
es-ES: Pulso 1 segundo
- id: MLC_4hS
es-ES: Acuse general
- id: MLC_vC
es-ES: Orden marcha secuencia
- id: MLC_XD
es-ES: Estado proceso principal en marcha
- id: MLC_3fn
es-ES: En etapa
- id: MLC_3q6
es-ES: Orden pausa adicional
- id: MLC_g4
es-ES: Temperatura tanque
- id: MLC_3tc
es-ES: Nivel tanque
- id: MLC_3Ma
es-ES: .
- id: MLC_4qZ
es-ES: AgitadorVelocidadFija
- id: MLC_46F
es-ES: AgitadorVolumenMinControl
- id: MLC_3xT
es-ES: AgitadorVolumenMaxControl
- id: MLC_3fL
es-ES: AgitadorVelocidadMin
- id: MLC_nv
es-ES: AgitadorVelocidadMax
- id: MLC_tR
es-ES: SPTemperatura
- id: MLC_4U4
es-ES: HisteresisTemp
- id: MLC_4UM
es-ES: Reserva
- id: MLC_53G
es-ES: Reserva
- id: MLC_3Fr
es-ES: Reserva
- id: MLC_ri
es-ES: Reserva
- id: MLC_zJ
es-ES: Reserva
- id: MLC_4Qm
es-ES: Reserva
- id: MLC_U5
es-ES: Reserva
- id: MLC_3Tm
es-ES: Reserva
- id: MLC_3mg
es-ES: Reserva
- id: MLC_58A
es-ES: Reserva
- id: MLC_uc
es-ES: TiempoHomo
- id: MLC_3AT
es-ES: Reserva
- id: MLC_4je
es-ES: AgitadorTiempoOFF
- id: MLC_4YP
es-ES: AgitadorTiempoON
- id: MLC_49H
es-ES: TipoAgitacionVelocidad
- id: MLC_3C2
es-ES: TipoAgitacionTiempo
- id: MLC_yK
es-ES: TipoControlTemperatura
- id: MLC_4Rx
es-ES: Reserva
- id: MLC_eh
es-ES: Reserva
- id: MLC_4Tm
es-ES: Reserva
- id: MLC_4VJ
es-ES: Reserva
- id: MLC_54m
es-ES: Reserva
- id: MLC_3tX
es-ES: Reserva
- id: MLC_38Y
es-ES: Reserva
- id: MLC_4uC
es-ES: Reserva
- id: MLC_4s6
es-ES: Reserva
- id: MLC_yT
es-ES: Reserva
- id: MLC_3d7
es-ES: Reserva
- id: MLC_5BY
es-ES: Reserva
- id: MLC_3UX
es-ES: Reserva
- id: MLC_36f
es-ES: Reserva
- id: MLC_4sv
es-ES: Reserva
- id: MLC_335
es-ES: Reserva
- id: MLC_4QK
es-ES: Reserva
- id: MLC_3Lq
es-ES: Reserva
- id: MLC_48T
es-ES: Orden calentar
- id: MLC_3GV
es-ES: Orden enfriar
- id: MLC_4bD
es-ES: Set point calentamiento/enfriamiento
- id: MLC_VF
es-ES: Secuencia iniciada
- id: MLC_4E5
es-ES: Secuencia finalizada
- id: MLC_3rN
es-ES: Etapa actual
- id: MLC_4ZU
es-ES: Texto etapa
- id: MLC_4hV
es-ES: Etapa 100
- id: MLC_4yf
es-ES: Etapa 110
- id: MLC_3WW
es-ES: Etapa 120
- id: MLC_RY
es-ES: Etapa 140
- id: MLC_4zV
es-ES: Etapa 150
- id: MLC_4rE
es-ES: Etapa 160
- id: MLC_VJ
es-ES: Etapa 170
- id: MLC_3ad
es-ES: Etapa 180
- id: MLC_4EE
es-ES: Etapa 190
- id: MLC_4HZ
es-ES: Etapa 999
- id: MLC_w2
es-ES: Tiempo de etapa
- id: MLC_3Le
es-ES: Activar
- id: MLC_3H7
es-ES: Reset
- id: MLC_45E
es-ES: Actual
- id: MLC_589
es-ES: Set point
- id: MLC_4SA
es-ES: Restante
- id: MLC_cd
es-ES: Pausa
- id: MLC_3iL
es-ES: Continuar
- id: MLC_4Bd
es-ES: '@Change log'
- id: MLC_4KF
es-ES: =============== Auxiliares
- id: MLC_4JJ
es-ES: Gestion calentamiento - Calculo histeresis
- id: MLC_5A4
es-ES: =============== Estado secuencia
- id: MLC_3ra
es-ES: Pausa
- id: MLC_3PP
es-ES: Paro de secuencia
- id: MLC_4Jc
es-ES: Texto Etapa
- id: MLC_42S
es-ES: =============== Secuencia
- id: MLC_3Hs
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3hP
es-ES: Etapa 140 - Homogenizacion en tanque
- id: MLC_3LE
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_33A
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_3E6
es-ES: Contador tiempo
- id: MLC_3K2
es-ES: Temporizadores
- id: MLC_4Rw
es-ES: =============== Salidas
- id: MLC_U6
es-ES: Orden calentar / enfriar
- id: MLC_3cC
es-ES: Agitador tanque - Orden de marcha
- id: MLC_5BJ
es-ES: Agitador tanque - Consigna velocidad
- id: MLC_4c9
es-ES: Secuencia iniciada
- id: MLC_3Tb
es-ES: Fin secuencia
@@ -0,0 +1,675 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15182";
S7_BlockTitle := "MLC_TA";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15182_ZC_FERM_ESPERA_PH"
VAR_INPUT
{ S7_MLC := "MLC_d3" }
NombreSecuencia : String := 'HOMOGENIZAR';
{ S7_MLC := "MLC_3A6" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_4MM" }
Ack : Bool;
{ S7_MLC := "MLC_3EG" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_TF" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_3zG" }
EnEtapa : Bool;
{ S7_MLC := "MLC_fD" }
OrdenPausa : Bool;
{ S7_MLC := "MLC_an" }
ConfirmacionPulsador : Bool;
Parametros : _.UDT_ZC_RECETA_BATCH_ETAPA := (
{ S7_MLC := "MLC_3Pn" }
TipoEtapa := (),
{ S7_MLC := "MLC_4bS" }
P_Real_1 := (),
{ S7_MLC := "MLC_4RZ" }
P_Real_2 := (),
{ S7_MLC := "MLC_3vG" }
P_Real_3 := (),
{ S7_MLC := "MLC_jt" }
P_Real_4 := (),
{ S7_MLC := "MLC_3EH" }
P_Real_5 := (),
{ S7_MLC := "MLC_3MQ" }
P_Real_6 := (),
{ S7_MLC := "MLC_3KM" }
P_Real_7 := (),
{ S7_MLC := "MLC_rx" }
P_Real_8 := (),
{ S7_MLC := "MLC_3SN" }
P_Real_9 := (),
{ S7_MLC := "MLC_ge" }
P_Real_10 := (),
{ S7_MLC := "MLC_36D" }
P_Real_11 := (),
{ S7_MLC := "MLC_59q" }
P_Real_12 := (),
{ S7_MLC := "MLC_384" }
P_Real_13 := (),
{ S7_MLC := "MLC_3AV" }
P_Real_14 := (),
{ S7_MLC := "MLC_3N4" }
P_Real_15 := (),
{ S7_MLC := "MLC_4zN" }
P_Real_16 := (),
{ S7_MLC := "MLC_mW" }
P_Real_17 := (),
{ S7_MLC := "MLC_3Pe" }
P_Int_1 := (),
{ S7_MLC := "MLC_4WL" }
P_Int_2 := (),
{ S7_MLC := "MLC_4KE" }
P_Int_3 := (),
{ S7_MLC := "MLC_47f" }
P_Int_4 := (),
{ S7_MLC := "MLC_4JS" }
P_Int_5 := (),
{ S7_MLC := "MLC_4Xa" }
P_Int_6 := (),
{ S7_MLC := "MLC_wj" }
P_Int_7 := (),
{ S7_MLC := "MLC_3sg" }
P_Int_8 := (),
{ S7_MLC := "MLC_3M5" }
P_Int_9 := (),
{ S7_MLC := "MLC_4QT" }
P_Int_10 := (),
{ S7_MLC := "MLC_53j" }
P_Int_11 := (),
{ S7_MLC := "MLC_47x" }
P_Int_12 := (),
{ S7_MLC := "MLC_3Ra" }
P_Int_13 := (),
{ S7_MLC := "MLC_4Q2" }
P_Int_14 := (),
{ S7_MLC := "MLC_TW" }
P_Int_15 := (),
{ S7_MLC := "MLC_pu" }
P_String_1 := (),
{ S7_MLC := "MLC_3g8" }
P_String_2 := (),
{ S7_MLC := "MLC_34N" }
P_String_3 := (),
{ S7_MLC := "MLC_3SC" }
P_String_4 := (),
{ S7_MLC := "MLC_4nh" }
P_String_5 := (),
{ S7_MLC := "MLC_52B" }
P_String_6 := (),
{ S7_MLC := "MLC_48Z" }
P_String_7 := (),
{ S7_MLC := "MLC_xg" }
P_String_8 := (),
{ S7_MLC := "MLC_4Km" }
P_String_9 := (),
{ S7_MLC := "MLC_32s" }
P_String_10 := ()
);
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_3Eu" }
PermisoPulsador : Bool;
{ S7_MLC := "MLC_3Kk" }
SecuenciaIniciada : Bool;
{ S7_MLC := "MLC_3kC" }
FinSecuencia : Bool;
VisMinutosRestantes : Bool;
MinutosRestantes : Int;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_43X" }
s_EtapaActual : Int;
{ S7_MLC := "MLC_3Um" }
s_TextoEtapa : String[100];
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..15] of Bool := [
{ S7_MLC := "MLC_3UZ" }
(),
{ S7_MLC := "MLC_4qn" }
(),
{ S7_MLC := "MLC_vn" }
(),
{ S7_MLC := "MLC_4HK" }
(),
{ S7_MLC := "MLC_VN" }
(),
{ S7_MLC := "MLC_3rJ" }
(),
{ S7_MLC := "MLC_4WJ" }
(),
{ S7_MLC := "MLC_xa" }
(),
{ S7_MLC := "MLC_4ig" }
(),
6(()),
{ S7_MLC := "MLC_3wB" }
()
];
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_3XQ" }
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_ZW" }
Activar : Bool;
{ S7_MLC := "MLC_52z" }
Reset : Bool;
{ S7_MLC := "MLC_3zF" }
Actual : Int;
{ S7_MLC := "MLC_SZ" }
SP : Int;
{ S7_MLC := "MLC_3Yy" }
Restante : Int;
END_STRUCT;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Setpoint := "False";
S7_Visibility := "Hidden := External"
}
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
{ S7_MLC := "MLC_4mT" }
(),
{ S7_MLC := "MLC_4Je" }
()
];
END_VAR
VAR RETAIN
s_ContadorTiempo : _.UDT_ZC_CONTADOR_MINUTOS;
END_VAR
VAR_TEMP
for_i : Int;
t_MinutosInt : Int;
t_MinutosRestantes : Int;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 2;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4qC"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15182_ZC_FERM_ESPERA_PH
Descripcion: Bloque de gestión de fase homogenizar
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 08.07.2025 (ABH) Primera versión
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3WU"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_37Y"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_SP"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #OrdenPausa )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[1].SP
)
Coil( #s_TON[1].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[1].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #OrdenPausa )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[2].SP
)
Coil( #s_TON[2].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[2].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_53y"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EnEtapa )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_UA"
}
NETWORK
// ================================================================
// TEXTO ETAPA
CASE #s_EtapaActual OF
0:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - REPOSO');
140:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - ESPERA');
999:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN DE SECUENCIA');
ELSE
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FUERA DE ETAPA');
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3DX"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Bb"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #EnEtapa )
Contact( #OrdenMarcha )
Move(
in := 140,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4ic"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
wire#w1
P_Trig( #s_Pulsos[3] )
Move(
in := 1,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
Contact( #ConfirmacionPulsador )
Move(
in := 999,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_wt"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
wire#w1
P_Trig( #s_Pulsos[15] )
Move(
in := 3,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EnEtapa )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_cr"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_56Y"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3JN"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg := #Pulso1Seg,
TON := #s_TON[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_45j"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_55m"
}
NETWORK
RUNG wire#powerrail
"FC15027_ZC_CONTADOR_MINUTOS"(
Pulso1seg := #Pulso1Seg,
Iniciar := wire#w1,
Reset := wire#w2,
Contador := #s_ContadorTiempo
)
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
END_RUNG wire#w1
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
END_RUNG wire#w2
RUNG wire#powerrail
{
S7_Templates := "[SrcType := UDInt, DestType := Int]"
}
Convert(
in := #s_ContadorTiempo.Minuto,
out => #t_MinutosInt
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_49V"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3UA"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #t_MinutosInt,
in2 := #Parametros.P_Int_1
)
Coil( #PermisoPulsador )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3wZ"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
wire#w1
Sub(
in1 := #Parametros.P_Int_1,
in2 := #t_MinutosInt,
out => #t_MinutosRestantes
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #t_MinutosRestantes,
in2 := 0
)
Move(
in := 0,
out1 => #t_MinutosRestantes
)
END_RUNG
RUNG wire#w1
Move(
in := #t_MinutosRestantes,
out1 => #MinutosRestantes
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #t_MinutosRestantes,
in2 := 0
)
Coil( #VisMinutosRestantes )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_Ld"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3VC"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
Coil( #FinSecuencia )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,191 @@
MultiLingualTexts:
- id: MLC_TA
es-ES: FB15182_ZC_FERM_ESPERA_PH
- id: MLC_d3
es-ES: Nombre de la secuencia
- id: MLC_3A6
es-ES: Pulso 1 segundo
- id: MLC_4MM
es-ES: Acuse general
- id: MLC_3EG
es-ES: Orden marcha secuencia
- id: MLC_TF
es-ES: Estado proceso principal en marcha
- id: MLC_3zG
es-ES: En etapa
- id: MLC_fD
es-ES: Orden pausa adicional
- id: MLC_an
es-ES: Confirmacion pulsador aceptar
- id: MLC_3Pn
es-ES: .
- id: MLC_4bS
es-ES: Reserva
- id: MLC_4RZ
es-ES: Reserva
- id: MLC_3vG
es-ES: Reserva
- id: MLC_jt
es-ES: Reserva
- id: MLC_3EH
es-ES: Reserva
- id: MLC_3MQ
es-ES: Reserva
- id: MLC_3KM
es-ES: Reserva
- id: MLC_rx
es-ES: Reserva
- id: MLC_3SN
es-ES: Reserva
- id: MLC_ge
es-ES: Reserva
- id: MLC_36D
es-ES: Reserva
- id: MLC_59q
es-ES: Reserva
- id: MLC_384
es-ES: Reserva
- id: MLC_3AV
es-ES: Reserva
- id: MLC_3N4
es-ES: Reserva
- id: MLC_4zN
es-ES: Reserva
- id: MLC_mW
es-ES: Reserva
- id: MLC_3Pe
es-ES: TiempoMinimoConfirmacionPH
- id: MLC_4WL
es-ES: Reserva
- id: MLC_4KE
es-ES: Reserva
- id: MLC_47f
es-ES: Reserva
- id: MLC_4JS
es-ES: Reserva
- id: MLC_4Xa
es-ES: Reserva
- id: MLC_wj
es-ES: Reserva
- id: MLC_3sg
es-ES: Reserva
- id: MLC_3M5
es-ES: Reserva
- id: MLC_4QT
es-ES: Reserva
- id: MLC_53j
es-ES: Reserva
- id: MLC_47x
es-ES: Reserva
- id: MLC_3Ra
es-ES: Reserva
- id: MLC_4Q2
es-ES: Reserva
- id: MLC_TW
es-ES: Reserva
- id: MLC_pu
es-ES: Reserva
- id: MLC_3g8
es-ES: Reserva
- id: MLC_34N
es-ES: Reserva
- id: MLC_3SC
es-ES: Reserva
- id: MLC_4nh
es-ES: Reserva
- id: MLC_52B
es-ES: Reserva
- id: MLC_48Z
es-ES: Reserva
- id: MLC_xg
es-ES: Reserva
- id: MLC_4Km
es-ES: Reserva
- id: MLC_32s
es-ES: Reserva
- id: MLC_3Eu
es-ES: Permiso pulsador aceptar
- id: MLC_3Kk
es-ES: Secuencia iniciada
- id: MLC_3kC
es-ES: Secuencia finalizada
- id: MLC_43X
es-ES: Etapa actual
- id: MLC_3Um
es-ES: Texto etapa
- id: MLC_3UZ
es-ES: Etapa 100
- id: MLC_4qn
es-ES: Etapa 110
- id: MLC_vn
es-ES: Etapa 120
- id: MLC_4HK
es-ES: Etapa 140
- id: MLC_VN
es-ES: Etapa 150
- id: MLC_3rJ
es-ES: Etapa 160
- id: MLC_4WJ
es-ES: Etapa 170
- id: MLC_xa
es-ES: Etapa 180
- id: MLC_4ig
es-ES: Etapa 190
- id: MLC_3wB
es-ES: Etapa 999
- id: MLC_3XQ
es-ES: Tiempo de etapa
- id: MLC_ZW
es-ES: Activar
- id: MLC_52z
es-ES: Reset
- id: MLC_3zF
es-ES: Actual
- id: MLC_SZ
es-ES: Set point
- id: MLC_3Yy
es-ES: Restante
- id: MLC_4mT
es-ES: Pausa
- id: MLC_4Je
es-ES: Continuar
- id: MLC_4qC
es-ES: '@Change log'
- id: MLC_3WU
es-ES: =============== Auxiliares
- id: MLC_37Y
es-ES: =============== Estado secuencia
- id: MLC_SP
es-ES: Pausa
- id: MLC_53y
es-ES: Paro de secuencia
- id: MLC_UA
es-ES: Texto Etapa
- id: MLC_3DX
es-ES: =============== Secuencia
- id: MLC_3Bb
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_4ic
es-ES: Etapa 140 - Espera PH
- id: MLC_wt
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_cr
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_56Y
es-ES: Contador tiempo
- id: MLC_3JN
es-ES: Temporizadores
- id: MLC_45j
es-ES: =============== Auxiliares
- id: MLC_55m
es-ES: Contador tiempo espera PH
- id: MLC_49V
es-ES: =============== Salidas
- id: MLC_3UA
es-ES: Permiso pulsador aceptar
- id: MLC_3wZ
es-ES: Minutos Restantes
- id: MLC_Ld
es-ES: Secuencia iniciada
- id: MLC_3VC
es-ES: Fin secuencia
@@ -0,0 +1,772 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15183";
S7_BlockTitle := "MLC_wZ";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_UserDefinedId := "FB15183_ZC_FERM_CORTE";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15183_ZC_FERM_CORTE"
VAR_INPUT
{ S7_MLC := "MLC_xt" }
NombreSecuencia : String := 'ADICION PRODUCTO';
{ S7_MLC := "MLC_4dm" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_4Td" }
Ack : Bool;
{ S7_MLC := "MLC_3sV" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_5C2" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_4UU" }
EnEtapa : Bool;
{ S7_MLC := "MLC_3Qf" }
OrdenPausa : Bool;
{ S7_MLC := "MLC_3GT" }
TT_Tanque : Real;
{ S7_MLC := "MLC_545" }
LT_Tanque : Real;
Parametros : _.UDT_ZC_RECETA_BATCH_ETAPA := (
{ S7_MLC := "MLC_5B4" }
TipoEtapa := (),
{ S7_MLC := "MLC_jP" }
P_Real_1 := (),
{ S7_MLC := "MLC_3YD" }
P_Real_2 := (),
{ S7_MLC := "MLC_3qC" }
P_Real_3 := (),
{ S7_MLC := "MLC_3GH" }
P_Real_4 := (),
{ S7_MLC := "MLC_4FM" }
P_Real_5 := (),
{ S7_MLC := "MLC_42j" }
P_Real_6 := (),
{ S7_MLC := "MLC_3BU" }
P_Real_7 := (),
{ S7_MLC := "MLC_4Gr" }
P_Real_8 := (),
{ S7_MLC := "MLC_3P2" }
P_Real_9 := (),
{ S7_MLC := "MLC_4JA" }
P_Real_10 := (),
{ S7_MLC := "MLC_cD" }
P_Real_11 := (),
{ S7_MLC := "MLC_WG" }
P_Real_12 := (),
{ S7_MLC := "MLC_46Y" }
P_Real_13 := (),
{ S7_MLC := "MLC_zR" }
P_Real_14 := (),
{ S7_MLC := "MLC_WY" }
P_Real_15 := (),
{ S7_MLC := "MLC_4rJ" }
P_Real_16 := (),
{ S7_MLC := "MLC_4gq" }
P_Real_17 := (),
{ S7_MLC := "MLC_3wT" }
P_Int_1 := (),
{ S7_MLC := "MLC_4Ve" }
P_Int_2 := (),
{ S7_MLC := "MLC_4jB" }
P_Int_3 := (),
{ S7_MLC := "MLC_4im" }
P_Int_4 := (),
{ S7_MLC := "MLC_4at" }
P_Int_5 := (),
{ S7_MLC := "MLC_39j" }
P_Int_6 := (),
{ S7_MLC := "MLC_3aY" }
P_Int_7 := (),
{ S7_MLC := "MLC_53F" }
P_Int_8 := (),
{ S7_MLC := "MLC_NV" }
P_Int_9 := (),
{ S7_MLC := "MLC_qa" }
P_Int_10 := (),
{ S7_MLC := "MLC_3jV" }
P_Int_11 := (),
{ S7_MLC := "MLC_4sa" }
P_Int_12 := (),
{ S7_MLC := "MLC_4Fv" }
P_Int_13 := (),
{ S7_MLC := "MLC_5BQ" }
P_Int_14 := (),
{ S7_MLC := "MLC_3ed" }
P_Int_15 := (),
{ S7_MLC := "MLC_3fn" }
P_String_1 := (),
{ S7_MLC := "MLC_3tF" }
P_String_2 := (),
{ S7_MLC := "MLC_4tB" }
P_String_3 := (),
{ S7_MLC := "MLC_3u4" }
P_String_4 := (),
{ S7_MLC := "MLC_3st" }
P_String_5 := (),
{ S7_MLC := "MLC_4uA" }
P_String_6 := (),
{ S7_MLC := "MLC_YA" }
P_String_7 := (),
{ S7_MLC := "MLC_54J" }
P_String_8 := (),
{ S7_MLC := "MLC_4LP" }
P_String_9 := (),
{ S7_MLC := "MLC_4LN" }
P_String_10 := ()
);
END_VAR
VAR_OUTPUT
MarchaAgitador : Bool;
VelocidadAgitador : Real;
{ S7_MLC := "MLC_xE" }
OrdenEnfriar : Bool;
{ S7_MLC := "MLC_4iX" }
SP_CalEnf : Real;
VisibilidadCalEnf : Bool;
{ S7_MLC := "MLC_4cU" }
SecuenciaIniciada : Bool;
{ S7_MLC := "MLC_Rz" }
FinSecuencia : Bool;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_58Q" }
s_EtapaActual : Int;
{ S7_MLC := "MLC_WX" }
s_TextoEtapa : String[100];
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..15] of Bool := [
3(()),
{ S7_MLC := "MLC_3EW" }
(),
{ S7_MLC := "MLC_4GX" }
(),
{ S7_MLC := "MLC_3HH" }
(),
4(()),
{ S7_MLC := "MLC_3WM" }
(),
{ S7_MLC := "MLC_44e" }
()
];
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_4Ge" }
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_4uP" }
Activar : Bool;
{ S7_MLC := "MLC_4F5" }
Reset : Bool;
{ S7_MLC := "MLC_539" }
Actual : Int;
{ S7_MLC := "MLC_3cm" }
SP : Int;
{ S7_MLC := "MLC_4vE" }
Restante : Int;
END_STRUCT;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Setpoint := "False";
S7_Visibility := "Hidden := External"
}
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
{ S7_MLC := "MLC_3Hq" }
(),
{ S7_MLC := "MLC_357" }
()
];
s_FF : Array[1..#NUM_MAX_FF] of _.UDT_ZC_DISP_FF;
{ S7_MLC := "MLC_4c4" }
s_NumeroCiclosAgitador : Int;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenEnfriar : Bool;
END_VAR
VAR_TEMP
for_i : Int;
t_TempHistSuperior : Real;
t_TempHistInferior : Real;
t_x0 : Real;
t_x1 : Real;
t_x : Real;
t_y0 : Real;
t_y1 : Real;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 2;
NUM_MAX_FF : Int := 1;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4bn"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15183_ZC_FERM_CORTE
Descripcion: Bloque de gestión de fase adicion de producto
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 08.07.2025 (ABH) Primera versión
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3m2"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4kS"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #OrdenPausa )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[1].SP
)
Coil( #s_TON[1].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[1].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #OrdenPausa )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[2].SP
)
Coil( #s_TON[2].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[2].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_5BN"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EnEtapa )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3jE"
}
NETWORK
// ================================================================
// TEXTO ETAPA
CASE #s_EtapaActual OF
0:
#s_TextoEtapa := CONCAT_STRING(IN1:= #NombreSecuencia,IN2:= ' - REPOSO');
140:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - CORTE');
999:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN DE SECUENCIA');
ELSE
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FUERA DE ETAPA');
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Wt"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3M4"
}
NETWORK
RUNG wire#powerrail
Add(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistSuperior
)
Sub(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistInferior
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_iK"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_ZW"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #EnEtapa )
Contact( #OrdenMarcha )
Move(
in := 140,
out1 => #s_EtapaActual
)
wire#w1
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
Move(
in := 0,
out1 => #s_NumeroCiclosAgitador
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Rb"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
wire#w1
P_Trig( #s_Pulsos[4] )
Move(
in := 1,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_NumeroCiclosAgitador,
in2 := #Parametros.P_Int_1
)
Move(
in := 999,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Ch"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
wire#w1
P_Trig( #s_Pulsos[10] )
Move(
in := 3,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EnEtapa )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3W3"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4cX"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4ap"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg:=#Pulso1Seg,
TON:=#s_TON[#for_i]);
END_FOR;
// ============================================================================
// FF
FOR #for_i := 1 TO #NUM_MAX_FF DO
"FC2926_ZC_FF_INDV"(Pulso1Seg := #Pulso1Seg,
FF:=#s_FF[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Ke"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4KK"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Move(
in := #Parametros.P_Int_4,
out1 => #s_FF[1].Config_SetPointTiempoFlip
)
Move(
in := #Parametros.P_Int_3,
out1 => #s_FF[1].Config_SetPointTiempoFlop
)
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
I_Contact( #s_Pausa_V )
{ S7_Templates := "SrcType := Real" }
GT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_2
)
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_3
)
Coil( #s_FF[1].Orden_Activar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4A8"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
I_Contact( #s_FF[1].Estado_Flip )
P_Trig( #s_Pulsos[11] )
Contact( #s_FF[1].Orden_Activar )
{ S7_Templates := "DestType := Int" }
Inc( #s_NumeroCiclosAgitador )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_432"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_XA"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
I_Contact( #s_Pausa_M )
wire#w1
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w2
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w2
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistInferior
)
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w1
Coil( #VisibilidadCalEnf )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenEnfriar )
Coil( #OrdenEnfriar )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
R_Coil( #s_OrdenEnfriar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Jp"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
I_Contact( #s_Pausa_M )
Contact( #s_FF[1].Estado_Flip )
Coil( #MarchaAgitador )
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3p4"
}
NETWORK
IF #Parametros.P_Int_5 = 1 THEN
// =============================================================================
//VELOCIDAD FIJA
#VelocidadAgitador := #Parametros.P_Real_1;
ELSE
// =============================================================================
//VELOCIDAD POR NIVEL
#t_x0 := #Parametros.P_Real_2;
#t_x1 := #Parametros.P_Real_3;
#t_x := #LT_Tanque;
#t_y0 := #Parametros.P_Real_4;
#t_y1 := #Parametros.P_Real_11;
#VelocidadAgitador := #t_y0 + (#t_y1 - #t_y0) * ((#t_x - #t_x0) / (#t_x1 - #t_x0));
IF #VelocidadAgitador > #t_y1 THEN
#VelocidadAgitador := #t_y1;
END_IF;
IF #VelocidadAgitador < #t_y0 THEN
#VelocidadAgitador := #t_y0;
END_IF;
END_IF;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3JG"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4zE"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
Coil( #FinSecuencia )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,193 @@
MultiLingualTexts:
- id: MLC_wZ
es-ES: FB15183_ZC_FERM_CORTE
- id: MLC_xt
es-ES: Nombre de la secuencia
- id: MLC_4dm
es-ES: Pulso 1 segundo
- id: MLC_4Td
es-ES: Acuse general
- id: MLC_3sV
es-ES: Orden marcha secuencia
- id: MLC_5C2
es-ES: Estado proceso principal en marcha
- id: MLC_4UU
es-ES: En etapa
- id: MLC_3Qf
es-ES: Orden pausa adicional
- id: MLC_3GT
es-ES: Temperatura tanque
- id: MLC_545
es-ES: Nivel tanque
- id: MLC_5B4
es-ES: .
- id: MLC_jP
es-ES: AgitadorVelocidadFija
- id: MLC_3YD
es-ES: AgitadorVolumenMinControl
- id: MLC_3qC
es-ES: AgitadorVolumenMaxControl
- id: MLC_3GH
es-ES: AgitadorVelocidadMin
- id: MLC_4FM
es-ES: AgitadorVelocidadMax
- id: MLC_42j
es-ES: SPTemperatura
- id: MLC_3BU
es-ES: HisteresisTemp
- id: MLC_4Gr
es-ES: Reserva
- id: MLC_3P2
es-ES: Reserva
- id: MLC_4JA
es-ES: Reserva
- id: MLC_cD
es-ES: Reserva
- id: MLC_WG
es-ES: Reserva
- id: MLC_46Y
es-ES: Reserva
- id: MLC_zR
es-ES: Reserva
- id: MLC_WY
es-ES: Reserva
- id: MLC_4rJ
es-ES: Reserva
- id: MLC_4gq
es-ES: Reserva
- id: MLC_3wT
es-ES: AgitadorNumeroCiclos
- id: MLC_4Ve
es-ES: Reserva
- id: MLC_4jB
es-ES: AgitadorTiempoOFF
- id: MLC_4im
es-ES: AgitadorTiempoON
- id: MLC_4at
es-ES: TipoAgitacionVelocidad
- id: MLC_39j
es-ES: Reserva
- id: MLC_3aY
es-ES: Reserva
- id: MLC_53F
es-ES: Reserva
- id: MLC_NV
es-ES: Reserva
- id: MLC_qa
es-ES: Reserva
- id: MLC_3jV
es-ES: Reserva
- id: MLC_4sa
es-ES: Reserva
- id: MLC_4Fv
es-ES: Reserva
- id: MLC_5BQ
es-ES: Reserva
- id: MLC_3ed
es-ES: Reserva
- id: MLC_3fn
es-ES: Reserva
- id: MLC_3tF
es-ES: Reserva
- id: MLC_4tB
es-ES: Reserva
- id: MLC_3u4
es-ES: Reserva
- id: MLC_3st
es-ES: Reserva
- id: MLC_4uA
es-ES: Reserva
- id: MLC_YA
es-ES: Reserva
- id: MLC_54J
es-ES: Reserva
- id: MLC_4LP
es-ES: Reserva
- id: MLC_4LN
es-ES: Reserva
- id: MLC_xE
es-ES: Orden enfriar
- id: MLC_4iX
es-ES: Set point calentamiento/enfriamiento
- id: MLC_4cU
es-ES: Secuencia iniciada
- id: MLC_Rz
es-ES: Secuencia finalizada
- id: MLC_58Q
es-ES: Etapa actual
- id: MLC_WX
es-ES: Texto etapa
- id: MLC_3EW
es-ES: Etapa 130
- id: MLC_4GX
es-ES: Etapa 140
- id: MLC_3HH
es-ES: Etapa 150
- id: MLC_3WM
es-ES: Etapa 999
- id: MLC_44e
es-ES: Incrementar numero de ciclos
- id: MLC_4Ge
es-ES: Tiempo de etapa
- id: MLC_4uP
es-ES: Activar
- id: MLC_4F5
es-ES: Reset
- id: MLC_539
es-ES: Actual
- id: MLC_3cm
es-ES: Set point
- id: MLC_4vE
es-ES: Restante
- id: MLC_3Hq
es-ES: Pausa
- id: MLC_357
es-ES: Continuar
- id: MLC_4c4
es-ES: Numero de ciclos de agitador
- id: MLC_4bn
es-ES: '@Change log'
- id: MLC_3m2
es-ES: =============== Estado secuencia
- id: MLC_4kS
es-ES: Pausa
- id: MLC_5BN
es-ES: Paro de secuencia
- id: MLC_3jE
es-ES: Texto Etapa
- id: MLC_3Wt
es-ES: =============== Auxiliares
- id: MLC_3M4
es-ES: Gestion calentamiento - Calculo histeresis
- id: MLC_iK
es-ES: =============== Secuencia
- id: MLC_ZW
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3Rb
es-ES: Etapa 140 - Corte
- id: MLC_4Ch
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_3W3
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4cX
es-ES: Contador tiempo
- id: MLC_4ap
es-ES: Temporizadores
- id: MLC_4Ke
es-ES: =============== Auxiliares
- id: MLC_4KK
es-ES: Gestion Flip Flop agitador
- id: MLC_4A8
es-ES: Gestion Numero de cliclos
- id: MLC_432
es-ES: =============== Salidas
- id: MLC_XA
es-ES: Orden calentar / enfriar
- id: MLC_3Jp
es-ES: Orden agitador
- id: MLC_3p4
es-ES: Agitador tanque - Consigna velocidad
- id: MLC_3JG
es-ES: Secuencia iniciada
- id: MLC_4zE
es-ES: Fin secuencia
@@ -0,0 +1,812 @@
{
S7_Author := "ABH";
S7_BlockNumber := "15184";
S7_BlockTitle := "MLC_3iB";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15184_ZC_FERM_FIN_PREP"
VAR_INPUT
{ S7_MLC := "MLC_4B4" }
NombreSecuencia : String := 'HOMOGENIZAR';
{ S7_MLC := "MLC_4du" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_3JS" }
Ack : Bool;
{ S7_MLC := "MLC_4Jb" }
OrdenMarcha : Bool;
{ S7_MLC := "MLC_55u" }
EstadoEnMarcha : Bool;
{ S7_MLC := "MLC_3dF" }
EnEtapa : Bool;
{ S7_MLC := "MLC_4DW" }
OrdenPausa : Bool;
EstadoBocaHombre : Bool;
{ S7_MLC := "MLC_3yL" }
TT_Tanque : Real;
{ S7_MLC := "MLC_3dt" }
LT_Tanque : Real;
Parametros : _.UDT_ZC_RECETA_BATCH_ETAPA := (
{ S7_MLC := "MLC_ZK" }
TipoEtapa := (),
{ S7_MLC := "MLC_3N9" }
P_Real_1 := (),
{ S7_MLC := "MLC_rL" }
P_Real_2 := (),
{ S7_MLC := "MLC_3LR" }
P_Real_3 := (),
{ S7_MLC := "MLC_38U" }
P_Real_4 := (),
{ S7_MLC := "MLC_3nE" }
P_Real_5 := (),
{ S7_MLC := "MLC_4jc" }
P_Real_6 := (),
{ S7_MLC := "MLC_3b2" }
P_Real_7 := (),
{ S7_MLC := "MLC_T2" }
P_Real_8 := (),
{ S7_MLC := "MLC_56f" }
P_Real_9 := (),
{ S7_MLC := "MLC_3cf" }
P_Real_10 := (),
{ S7_MLC := "MLC_is" }
P_Real_11 := (),
{ S7_MLC := "MLC_4L2" }
P_Real_12 := (),
{ S7_MLC := "MLC_3qj" }
P_Real_13 := (),
{ S7_MLC := "MLC_3uM" }
P_Real_14 := (),
{ S7_MLC := "MLC_nA" }
P_Real_15 := (),
{ S7_MLC := "MLC_46R" }
P_Real_16 := (),
{ S7_MLC := "MLC_53V" }
P_Real_17 := (),
{ S7_MLC := "MLC_4dP" }
P_Int_1 := (),
{ S7_MLC := "MLC_dK" }
P_Int_2 := (),
{ S7_MLC := "MLC_4ra" }
P_Int_3 := (),
{ S7_MLC := "MLC_3We" }
P_Int_4 := (),
{ S7_MLC := "MLC_W3" }
P_Int_5 := (),
{ S7_MLC := "MLC_37d" }
P_Int_6 := (),
{ S7_MLC := "MLC_32n" }
P_Int_7 := (),
{ S7_MLC := "MLC_yg" }
P_Int_8 := (),
{ S7_MLC := "MLC_42x" }
P_Int_9 := (),
{ S7_MLC := "MLC_5CD" }
P_Int_10 := (),
{ S7_MLC := "MLC_3h9" }
P_Int_11 := (),
{ S7_MLC := "MLC_3Gn" }
P_Int_12 := (),
{ S7_MLC := "MLC_3ZK" }
P_Int_13 := (),
{ S7_MLC := "MLC_Yn" }
P_Int_14 := (),
{ S7_MLC := "MLC_3J3" }
P_Int_15 := (),
{ S7_MLC := "MLC_49q" }
P_String_1 := (),
{ S7_MLC := "MLC_42y" }
P_String_2 := (),
{ S7_MLC := "MLC_4ZF" }
P_String_3 := (),
{ S7_MLC := "MLC_3AM" }
P_String_4 := (),
{ S7_MLC := "MLC_48a" }
P_String_5 := (),
{ S7_MLC := "MLC_4kJ" }
P_String_6 := (),
{ S7_MLC := "MLC_Pb" }
P_String_7 := (),
{ S7_MLC := "MLC_3wX" }
P_String_8 := (),
{ S7_MLC := "MLC_N6" }
P_String_9 := (),
{ S7_MLC := "MLC_3fH" }
P_String_10 := ()
);
END_VAR
VAR_OUTPUT
MarchaAgitador : Bool;
VelocidadAgitador : Real;
{ S7_MLC := "MLC_3FM" }
OrdenCalentar : Bool;
{ S7_MLC := "MLC_3dP" }
OrdenEnfriar : Bool;
{ S7_MLC := "MLC_4qy" }
SP_CalEnf : Real;
VisibilidadCalEnf : Bool;
{ S7_MLC := "MLC_ie" }
SecuenciaIniciada : Bool;
{ S7_MLC := "MLC_iG" }
FinSecuencia : Bool;
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_4jN" }
s_EtapaActual : Int;
{ S7_MLC := "MLC_3BG" }
s_TextoEtapa : String[100];
s_Pausa_M : Bool;
s_Pausa_V : Bool;
s_Continuar : Bool;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Pulsos : Array[0..15] of Bool := [
{ S7_MLC := "MLC_4uQ" }
(),
{ S7_MLC := "MLC_4w8" }
(),
{ S7_MLC := "MLC_34H" }
(),
{ S7_MLC := "MLC_3Bb" }
(),
{ S7_MLC := "MLC_mm" }
(),
{ S7_MLC := "MLC_MW" }
(),
{ S7_MLC := "MLC_3ry" }
(),
{ S7_MLC := "MLC_3Vb" }
(),
{ S7_MLC := "MLC_35A" }
(),
6(()),
{ S7_MLC := "MLC_3s9" }
()
];
END_VAR
VAR RETAIN
{ S7_MLC := "MLC_ae" }
s_TiempoEtapa : STRUCT
{ S7_MLC := "MLC_nk" }
Activar : Bool;
{ S7_MLC := "MLC_ip" }
Reset : Bool;
{ S7_MLC := "MLC_3fp" }
Actual : Int;
{ S7_MLC := "MLC_599" }
SP : Int;
{ S7_MLC := "MLC_gE" }
Restante : Int;
END_STRUCT;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Setpoint := "False";
S7_Visibility := "Hidden := External"
}
s_TON : Array[1..#NUM_MAX_TON] of _.UDT_ZC_DISP_TON := [
{ S7_MLC := "MLC_3nR" }
(),
{ S7_MLC := "MLC_3Xz" }
()
];
s_FF : Array[1..#NUM_MAX_FF] of _.UDT_ZC_DISP_FF;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenCalentar : Bool;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_OrdenEnfriar : Bool;
END_VAR
VAR_TEMP
for_i : Int;
t_TempHistSuperior : Real;
t_TempHistInferior : Real;
t_x0 : Real;
t_x1 : Real;
t_x : Real;
t_y0 : Real;
t_y1 : Real;
END_VAR
VAR CONSTANT
SiempreON : Bool := TRUE;
SiempreOFF : Bool := FALSE;
NUM_MAX_TON : Int := 2;
NUM_MAX_FF : Int := 1;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4VP"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2024) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 18
Restricciones: PLC serie 1200/1500
Nombre: FB15184_ZC_FERM_FIN_PREP
Descripcion: Bloque de gestión de fase homogenizar
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripción
01.00.00 08.07.2025 (ABH) Primera versión
============================================================================
*)
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_vx"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Q6"
}
NETWORK
RUNG wire#powerrail
Add(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistSuperior
)
Sub(
in1 := #Parametros.P_Real_6,
in2 := #Parametros.P_Real_7,
out => #t_TempHistInferior
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Tp"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_5CB"
}
NETWORK
RUNG wire#powerrail
Contact( #SiempreON )
wire#w1
Contact( #OrdenPausa )
wire#w2
S_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w1
I_Contact( #EstadoEnMarcha )
END_RUNG wire#w2
RUNG wire#w1
Contact( #s_Pausa_M )
wire#w3
Move(
in := 3,
out1 => #s_TON[1].SP
)
Coil( #s_TON[1].IN )
END_RUNG
RUNG wire#w3
Contact( #s_TON[1].Q )
I_Contact( #s_Continuar )
S_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w1
I_Contact( #OrdenPausa )
Contact( #EstadoEnMarcha )
wire#w4
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w4
S_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
Contact( #s_Continuar )
wire#w5
Move(
in := 3,
out1 => #s_TON[2].SP
)
Coil( #s_TON[2].IN )
END_RUNG
RUNG wire#w5
Contact( #s_TON[2].Q )
wire#w6
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w6
R_Coil( #s_Continuar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
wire#w7
R_Coil( #s_Pausa_M )
END_RUNG
RUNG wire#w7
R_Coil( #s_Pausa_V )
END_RUNG
RUNG wire#w7
R_Coil( #s_Continuar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Td"
}
NETWORK
RUNG wire#powerrail
I_Contact( #EnEtapa )
Move(
in := 0,
out1 => #s_EtapaActual
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3ED"
}
NETWORK
// ================================================================
// TEXTO ETAPA
CASE #s_EtapaActual OF
0:
#s_TextoEtapa := CONCAT_STRING(IN1:= #NombreSecuencia,IN2:= ' - REPOSO');
140:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN PREPARACION');
999:
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FIN DE SECUENCIA');
ELSE
#s_TextoEtapa := CONCAT_STRING(IN1 := #NombreSecuencia, IN2 := ' - FUERA DE ETAPA');
END_CASE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_XS"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_vu"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Contact( #EnEtapa )
Contact( #OrdenMarcha )
Move(
in := 140,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3yM"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
wire#w1
P_Trig( #s_Pulsos[3] )
Move(
in := #Parametros.P_Int_1,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
Contact( #SiempreOFF )
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 999,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_mY"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
wire#w1
P_Trig( #s_Pulsos[15] )
Move(
in := 3,
out1 => #s_TiempoEtapa.SP
)
END_RUNG
RUNG wire#w1
I_Contact( #EnEtapa )
S_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
Move(
in := 0,
out1 => #s_EtapaActual
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Bx"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4wF"
}
NETWORK
RUNG wire#powerrail
Contact( #s_TiempoEtapa.Activar )
wire#w1
Contact( #EstadoEnMarcha )
I_Contact( #s_Pausa_M )
Contact( #Pulso1Seg )
{ S7_Templates := "SrcType := Int" }
LT_Contact(
in1 := #s_TiempoEtapa.Actual,
in2 := #s_TiempoEtapa.SP
)
{ S7_Templates := "DestType := Int" }
Inc( #s_TiempoEtapa.Actual )
END_RUNG
RUNG wire#w1
Contact( #s_TiempoEtapa.Reset )
Move(
in := 0,
out1 => #s_TiempoEtapa.Actual
)
END_RUNG
RUNG wire#w1
R_Coil( #s_TiempoEtapa.Activar )
END_RUNG
RUNG wire#powerrail
Sub(
in1 := #s_TiempoEtapa.SP,
in2 := #s_TiempoEtapa.Actual,
out => #s_TiempoEtapa.Restante
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_TiempoEtapa.Restante,
in2 := 0
)
Move(
in := 0,
out1 => #s_TiempoEtapa.Restante
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_dV"
}
NETWORK
// ============================================================================
// TON
FOR #for_i := 1 TO #NUM_MAX_TON DO
"FC2928_ZC_TON_INDV"(Pulso1seg := #Pulso1Seg,
TON := #s_TON[#for_i]);
END_FOR;
// ============================================================================
// FF
FOR #for_i := 1 TO #NUM_MAX_FF DO
"FC2926_ZC_FF_INDV"(Pulso1Seg := #Pulso1Seg,
FF := #s_FF[#for_i]);
END_FOR;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_Td"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4xq"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_15,
in2 := 1
)
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
LE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
I_Contact( #s_Pausa_M )
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_7,
in2 := 0
)
wire#w2
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w3
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w3
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistSuperior
)
R_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w2
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_7,
in2 := 1
)
wire#w4
Move(
in := #Parametros.P_Real_6,
out1 => #SP_CalEnf
)
wire#w5
{ S7_Templates := "SrcType := Real" }
GE_Contact(
in1 := #TT_Tanque,
in2 := #SP_CalEnf
)
S_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w5
{ S7_Templates := "SrcType := Real" }
LE_Contact(
in1 := #TT_Tanque,
in2 := #t_TempHistInferior
)
R_Coil( #s_OrdenEnfriar )
END_RUNG
RUNG wire#w4
R_Coil( #s_OrdenCalentar )
END_RUNG
RUNG wire#w1
Coil( #VisibilidadCalEnf )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenCalentar )
Coil( #OrdenCalentar )
END_RUNG
RUNG wire#w1
Contact( #s_OrdenEnfriar )
Coil( #OrdenEnfriar )
END_RUNG
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
NE_Contact(
in1 := #s_EtapaActual,
in2 := 150
)
R_Coil( #s_OrdenEnfriar )
R_Coil( #s_OrdenCalentar )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4jx"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 140
)
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_2,
in2 := 0
)
I_Contact( #s_Pausa_M )
Contact( #EstadoBocaHombre )
{ S7_Templates := "SrcType := Real" }
GT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_2
)
{ S7_Templates := "SrcType := Real" }
LT_Contact(
in1 := #LT_Tanque,
in2 := #Parametros.P_Real_3
)
wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_6,
in2 := 0
)
Move(
in := #Parametros.P_Int_4,
out1 => #s_FF[1].Config_SetPointTiempoFlip
)
Move(
in := #Parametros.P_Int_3,
out1 => #s_FF[1].Config_SetPointTiempoFlop
)
Coil( #s_FF[1].Orden_Activar )
END_RUNG
RUNG wire#w1
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #Parametros.P_Int_6,
in2 := 1
)
wire#w2
Coil( #MarchaAgitador )
END_RUNG
RUNG wire#w1
Contact( #s_FF[1].Estado_Flip )
END_RUNG wire#w2
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_56S"
}
NETWORK
IF #Parametros.P_Int_5 = 1 THEN
// =============================================================================
//VELOCIDAD FIJA
#VelocidadAgitador := #Parametros.P_Real_1;
ELSE
// =============================================================================
//VELOCIDAD POR NIVEL
#t_x0 := #Parametros.P_Real_2;
#t_x1 := #Parametros.P_Real_3;
#t_x := #LT_Tanque;
#t_y0 := #Parametros.P_Real_4;
#t_y1 := #Parametros.P_Real_5;
#VelocidadAgitador := #t_y0 + (#t_y1 - #t_y0) * ((#t_x - #t_x0) / (#t_x1 - #t_x0));
IF #VelocidadAgitador > #t_y1 THEN
#VelocidadAgitador := #t_y1;
END_IF;
IF #VelocidadAgitador < #t_y0 THEN
#VelocidadAgitador := #t_y0;
END_IF;
END_IF;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Nk"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GT_Contact(
in1 := #s_EtapaActual,
in2 := 0
)
Coil( #SecuenciaIniciada )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3rE"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := #s_EtapaActual,
in2 := 999
)
Coil( #FinSecuencia )
END_RUNG
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,197 @@
MultiLingualTexts:
- id: MLC_3iB
es-ES: FB15184_ZC_FERM_FIN_PREP
- id: MLC_4B4
es-ES: Nombre de la secuencia
- id: MLC_4du
es-ES: Pulso 1 segundo
- id: MLC_3JS
es-ES: Acuse general
- id: MLC_4Jb
es-ES: Orden marcha secuencia
- id: MLC_55u
es-ES: Estado proceso principal en marcha
- id: MLC_3dF
es-ES: En etapa
- id: MLC_4DW
es-ES: Orden pausa adicional
- id: MLC_3yL
es-ES: Temperatura tanque
- id: MLC_3dt
es-ES: Nivel tanque
- id: MLC_ZK
es-ES: .
- id: MLC_3N9
es-ES: AgitadorVelocidadFija
- id: MLC_rL
es-ES: AgitadorVolumenMinControl
- id: MLC_3LR
es-ES: AgitadorVolumenMaxControl
- id: MLC_38U
es-ES: AgitadorVelocidadMin
- id: MLC_3nE
es-ES: AgitadorVelocidadMax
- id: MLC_4jc
es-ES: SPTemperatura
- id: MLC_3b2
es-ES: HisteresisTemp
- id: MLC_T2
es-ES: Reserva
- id: MLC_56f
es-ES: Reserva
- id: MLC_3cf
es-ES: Reserva
- id: MLC_is
es-ES: Reserva
- id: MLC_4L2
es-ES: Reserva
- id: MLC_3qj
es-ES: Reserva
- id: MLC_3uM
es-ES: Reserva
- id: MLC_nA
es-ES: Reserva
- id: MLC_46R
es-ES: Reserva
- id: MLC_53V
es-ES: Reserva
- id: MLC_4dP
es-ES: Reserva
- id: MLC_dK
es-ES: Reserva
- id: MLC_4ra
es-ES: AgitadorTiempoOFF
- id: MLC_3We
es-ES: AgitadorTiempoON
- id: MLC_W3
es-ES: TipoAgitacionVelocidad
- id: MLC_37d
es-ES: TipoAgitacionTiempo
- id: MLC_32n
es-ES: TipoControlTemperatura
- id: MLC_yg
es-ES: Reserva
- id: MLC_42x
es-ES: Reserva
- id: MLC_5CD
es-ES: Reserva
- id: MLC_3h9
es-ES: Reserva
- id: MLC_3Gn
es-ES: Reserva
- id: MLC_3ZK
es-ES: Reserva
- id: MLC_Yn
es-ES: Reserva
- id: MLC_3J3
es-ES: Reserva
- id: MLC_49q
es-ES: Reserva
- id: MLC_42y
es-ES: Reserva
- id: MLC_4ZF
es-ES: Reserva
- id: MLC_3AM
es-ES: Reserva
- id: MLC_48a
es-ES: Reserva
- id: MLC_4kJ
es-ES: Reserva
- id: MLC_Pb
es-ES: Reserva
- id: MLC_3wX
es-ES: Reserva
- id: MLC_N6
es-ES: Reserva
- id: MLC_3fH
es-ES: Reserva
- id: MLC_3FM
es-ES: Orden calentar
- id: MLC_3dP
es-ES: Orden enfriar
- id: MLC_4qy
es-ES: Set point calentamiento/enfriamiento
- id: MLC_ie
es-ES: Secuencia iniciada
- id: MLC_iG
es-ES: Secuencia finalizada
- id: MLC_4jN
es-ES: Etapa actual
- id: MLC_3BG
es-ES: Texto etapa
- id: MLC_4uQ
es-ES: Etapa 100
- id: MLC_4w8
es-ES: Etapa 110
- id: MLC_34H
es-ES: Etapa 120
- id: MLC_3Bb
es-ES: Etapa 140
- id: MLC_mm
es-ES: Etapa 150
- id: MLC_MW
es-ES: Etapa 160
- id: MLC_3ry
es-ES: Etapa 170
- id: MLC_3Vb
es-ES: Etapa 180
- id: MLC_35A
es-ES: Etapa 190
- id: MLC_3s9
es-ES: Etapa 999
- id: MLC_ae
es-ES: Tiempo de etapa
- id: MLC_nk
es-ES: Activar
- id: MLC_ip
es-ES: Reset
- id: MLC_3fp
es-ES: Actual
- id: MLC_599
es-ES: Set point
- id: MLC_gE
es-ES: Restante
- id: MLC_3nR
es-ES: Pausa
- id: MLC_3Xz
es-ES: Continuar
- id: MLC_4VP
es-ES: '@Change log'
- id: MLC_vx
es-ES: =============== Auxiliares
- id: MLC_4Q6
es-ES: Gestion calentamiento - Calculo histeresis
- id: MLC_4Tp
es-ES: =============== Estado secuencia
- id: MLC_5CB
es-ES: Pausa
- id: MLC_3Td
es-ES: Paro de secuencia
- id: MLC_3ED
es-ES: Texto Etapa
- id: MLC_XS
es-ES: =============== Secuencia
- id: MLC_vu
es-ES: Etapa 000 - Espera orden de marcha
- id: MLC_3yM
es-ES: Etapa 140 - Fin preparacion
- id: MLC_mY
es-ES: Etapa 999 - Fin de secuencia
- id: MLC_3Bx
es-ES: =============== Gestion tiempo de etapa y temporizadores
- id: MLC_4wF
es-ES: Contador tiempo
- id: MLC_dV
es-ES: Temporizadores
- id: MLC_Td
es-ES: =============== Salidas
- id: MLC_4xq
es-ES: Orden calentar / enfriar
- id: MLC_4jx
es-ES: Agitador tanque - Orden de marcha
- id: MLC_56S
es-ES: Agitador tanque - Consigna velocidad
- id: MLC_4Nk
es-ES: Secuencia iniciada
- id: MLC_3rE
es-ES: Fin secuencia
@@ -10,28 +10,36 @@
}
FUNCTION "FC17_ZC_GEST_ALM" : Void
VAR_INPUT
{ S7_MLC := "MLC_3JE" }
PrimerCiclo : Bool;
{ S7_MLC := "MLC_497" }
FechaHora : DTL;
{ S7_MLC := "MLC_V8" }
Usuario : String;
{ S7_MLC := "MLC_4YZ" }
PInt : Array[*] of _.UDT_ZC_PINT;
{ S7_MLC := "MLC_3RP" }
IndexTraza : Int;
{ S7_MLC := "MLC_3FJ" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_3Ra" }
Ack : Bool;
{ S7_MLC := "MLC_3bC" }
AutoAck : Bool;
END_VAR
VAR_IN_OUT
{ S7_MLC := "MLC_4tY" }
ValorAnterior : Array[*] of Int;
ALM : Array[*] of _.UDT_ZC_ALARMA;
{ S7_MLC := "MLC_4ej" }
AlarmasHMI : Array[*] of Word;
{ S7_MLC := "MLC_42S" }
NuevaAlarma : Bool;
{ S7_MLC := "MLC_36G" }
AlgunaAlarma : Bool;
END_VAR
VAR_TEMP
{ S7_MLC := "MLC_3pd" }
for_i : DInt;
{ S7_MLC := "MLC_4S8" }
t_IndiceSuperior : DInt;
t_IndiceSuperiorAlarmas : DInt;
{ S7_MLC := "MLC_53S" }
t_IndiceInferior : DInt;
t_IndiceInferiorAlarmas : DInt;
{ S7_MLC := "MLC_3NY" }
t_IndiceSuperiorHmi : DInt;
{ S7_MLC := "MLC_52h" }
t_IndiceInferiorHmi : DInt;
t_IndiceAlarma : Int;
t_ValorAlarma : Bool;
END_VAR
{ S7_Language := "SCL" }
@@ -52,31 +60,30 @@ FUNCTION "FC17_ZC_GEST_ALM" : Void
---
### Descripción Funcional
Función principal para la gestión de trazabilidad de los parámetros **enteros** del proceso.
Función principal para la gestión de alarmas.
Su objetivo principal es detectar cambios de valor en el array de parámetros y lanzar un registro de traza cuando esto sucede.
Su objetivo principal es gestionar y temporizar la activacion de las alarmas.
El bloque opera de la siguiente manera:
1. Calcula dinámicamente los límites superior e inferior del array de entrada.
2. Si es el primer ciclo de ejecución de la CPU, inicializa los valores "anteriores" con los valores "actuales" para evitar falsos registros de traza iniciales.
3. En ciclos normales, compara el valor actual de cada parámetro con su valor guardado en el ciclo anterior.
4. Si detecta una diferencia, llama a la función `FC8_ZC_TRAZA_REGISTRO` para registrar el cambio y actualiza el valor anterior.
2. Comprueba la logica de activacion de las alarmas.
3. Gestiona la conversion de alarmas para HMI.
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | `FC8_ZC_TRAZA_REGISTRO` |
| FC | - |
| FB | - |
| DB | - |
| UDT | `UDT_ZC_PINT` |
| UDT | `UDT_ZC_ALARMA` |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 2026-03-20 | (ABH) | Primera version. |
| 01.00.00 | 21.07.2026 | (ABH) | Primera version. |
*)
END_REGION DESCRIPCION
@@ -84,64 +91,150 @@ FUNCTION "FC17_ZC_GEST_ALM" : Void
// ==========================================================================================================
REGION CALCULO_LIMITES_ARRAY
// Calculo de los limites del array, ya que la entrada del array de parametros es variable.
#t_IndiceInferior := LOWER_BOUND(ARR := #PInt, DIM := 1);
#t_IndiceSuperior := UPPER_BOUND(ARR := #PInt, DIM := 1);
// Calculo de los limites del array
#t_IndiceInferiorAlarmas := LOWER_BOUND(ARR := #ALM, DIM := 1);
#t_IndiceSuperiorAlarmas := UPPER_BOUND(ARR := #ALM, DIM := 1);
#t_IndiceInferiorHmi := LOWER_BOUND(ARR := #AlarmasHMI, DIM := 1);
#t_IndiceSuperiorHmi := UPPER_BOUND(ARR := #AlarmasHMI, DIM := 1);
END_REGION CALCULO_LIMITES_ARRAY
// ==========================================================================================================
REGION PRIMER_ARRANQUE
REGION GESTION_ALARMAS
// En el primer arranque de la CPU, recorremos el array completo y almacenamos los valores actuales como valores anteriores en el arranque de la CPU.
// Esto se realiza ya que los valores anteriores no son remanentes, para optimizar la memoria del PLC.
IF #PrimerCiclo THEN
FOR #for_i := #t_IndiceInferior TO #t_IndiceSuperior DO
#ValorAnterior[#for_i] := #PInt[#for_i].Valor;
END_FOR;
// Salimos inmediatamente de la funcion, para realizar la gestion de los parametros con la CPU arrancada
RETURN;
END_IF;
// Reinicializacion de variables
#AlgunaAlarma := FALSE;
END_REGION PRIMER_ARRANQUE
// ==========================================================================================================
REGION GESTION_PARAMETROS
// Gestion de los cambios de valor de los parametros. Si detecta un cambio, lanza la traza
// y actualiza el valor anterior.
FOR #for_i := #t_IndiceInferior TO #t_IndiceSuperior DO
// Gestion de activacion alarmas
FOR #for_i := #t_IndiceInferiorAlarmas TO #t_IndiceSuperiorAlarmas DO
// En caso de detectar cambio de valor
IF #PInt[#for_i].Valor <> #ValorAnterior[#for_i] THEN
#t_ValorAlarma := FALSE;
// Invertir valor en caso de habilitado
IF #ALM[#for_i].HabilitarInvertir THEN
#t_ValorAlarma := NOT #ALM[#for_i].In;
ELSE
#t_ValorAlarma := #ALM[#for_i].In;
END_IF;
// Reinicializacion de la salida
IF #AutoAck THEN
// Lanzamos la trazabilidad
"FC8_ZC_TRZ_REGISTRO"(FechaHora := #FechaHora,
Registrar := 1,
Categoria := "TRZ_CAT_26_PINT",
User := #Usuario,
CodInt_1 := #IndexTraza + DINT_TO_INT(#for_i - 1),
CodInt_2 := "TRZ_SYS_PAR_VAL_ANT",
CodInt_3 := "TRZ_SYS_PAR_VAL_NUE",
CodInt_4 := 0,
CodInt_5 := 0,
CodReal_1 := #ValorAnterior[#for_i],
CodReal_2 := #PInt[#for_i].Valor);
#ALM[#for_i].Out := FALSE;
// Actualizamos el valor anterior
#ValorAnterior[#for_i] := #PInt[#for_i].Valor;
ELSE
IF (#ALM[#for_i].Out AND #Ack)
OR
#AutoAck
THEN
#ALM[#for_i].Out := FALSE;
END_IF;
END_IF;
#ALM[#for_i].OutInstantanea := FALSE;
// Retardo de la activacion de la alarma
IF #t_ValorAlarma AND #ALM[#for_i].Habilitar THEN
IF #ALM[#for_i].TiempoRetardo <> 0 THEN
IF #ALM[#for_i].auxTiempoAlarma >= #ALM[#for_i].TiempoRetardo THEN
#ALM[#for_i].OutInstantanea := TRUE;
ELSE
IF #Pulso1Seg THEN
#ALM[#for_i].auxTiempoAlarma += 1;
END_IF;
END_IF;
ELSE
#ALM[#for_i].OutInstantanea := TRUE;
END_IF;
ELSE
#ALM[#for_i].auxTiempoAlarma := 0;
END_IF;
IF #ALM[#for_i].OutInstantanea THEN
#ALM[#for_i].Out := TRUE;
END_IF;
// Aalguna alarma
IF #ALM[#for_i].Out THEN
#AlgunaAlarma := TRUE;
END_IF;
// Deteccion de nueva alarma
IF #ALM[#for_i].Out AND NOT #ALM[#for_i].oldAlarma AND #ALM[#for_i].HabilitarSonora THEN
#NuevaAlarma := TRUE;
END_IF;
// Estado anterior de las alarmas
#ALM[#for_i].oldAlarma := #ALM[#for_i].Out;
END_FOR;
END_REGION GESTION_PARAMETROS
END_REGION GESTION_ALARMAS
// ==========================================================================================================
REGION GESTION_ALARMAS_HMI
// Copia de valores de las alarmas a WORD para Scada/HMI
#t_IndiceAlarma := 1;
FOR #for_i := #t_IndiceInferiorHmi TO #t_IndiceSuperiorHmi DO
#AlarmasHMI[#for_i].%X0 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X1 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X2 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X3 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X4 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X5 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X6 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X7 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X8 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X9 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X10 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X11 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X12 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X13 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X14 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
#AlarmasHMI[#for_i].%X15 := #ALM[#t_IndiceAlarma].Out;
#t_IndiceAlarma += 1;
END_FOR;
END_REGION GESTION_ALARMAS_HMI
// ==========================================================================================================
REGION ACUSE_NUEVA_ALARMA
// Acuse de nuevas alarmas
IF #Ack THEN
#NuevaAlarma := FALSE;
END_IF;
END_REGION ACUSE_NUEVA_ALARMA
END_NETWORK
END_FUNCTION
@@ -1,21 +1,27 @@
MultiLingualTexts:
- id: MLC_yr
es-ES: FC17_ZC_GEST_ALM
- id: MLC_3JE
es-ES: Marca de primer ciclo de arranque de la CPU
- id: MLC_497
es-ES: Fecha y hora actual
- id: MLC_V8
es-ES: Usuario actual
- id: MLC_4YZ
es-ES: Array de parametro entero
- id: MLC_3RP
es-ES: Indice de texto parametro para trazabilidad
- id: MLC_3FJ
es-ES: Pulso de 1 segundo
- id: MLC_3Ra
es-ES: Acuse general
- id: MLC_3bC
es-ES: Auto acuse de las alarmas
- id: MLC_4tY
es-ES: Array de valores anteriores
es-ES: Array de alarmas
- id: MLC_4ej
es-ES: Array de alarmas para HMI
- id: MLC_42S
es-ES: Nueva alarma
- id: MLC_36G
es-ES: Alguna alarma activa
- id: MLC_3pd
es-ES: Variable para bucles FOR
- id: MLC_4S8
es-ES: Indice superior del array
es-ES: Indice superior del array de alarmas
- id: MLC_53S
es-ES: Indice inferior del array
es-ES: Indice inferior del array de alarmas
- id: MLC_3NY
es-ES: Indice superior del array de alarmas HMI
- id: MLC_52h
es-ES: Indice inferior del array de alarmas HMI
@@ -0,0 +1,10 @@
{
S7_Author := "ABH";
S7_BlockNumber := "11000";
S7_Family := "ZeusControl";
S7_Optimized := "TRUE";
S7_StandardRetain := "FALSE";
S7_Version := "1.0"
}
DATA_BLOCK DB11000_SEC_S7COM : FB15150_ZC_SEC_S7COM
END_DATA_BLOCK
@@ -0,0 +1,307 @@
{
S7_Author := "ABH";
S7_BlockComment := "MLC_44J";
S7_BlockNumber := "15150";
S7_BlockTitle := "MLC_42L";
S7_EditorMode := "SCL";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_Version := "1.0"
}
FUNCTION_BLOCK "FB15150_ZC_SEC_S7COM"
VAR_INPUT
{ S7_MLC := "MLC_4vr" }
Habilitar : Bool := FALSE;
{ S7_MLC := "MLC_38z" }
Iniciar : Bool;
{ S7_MLC := "MLC_4x4" }
Ack : Bool;
{ S7_MLC := "MLC_4Zq" }
Pulso1Seg : Bool;
{ S7_MLC := "MLC_4vy" }
NumeroBloques : Int := 1;
{ S7_MLC := "MLC_3Tv" }
TiempoEspera : Int := 10;
NDR_DONE : Array[1..#N_MAX] of Bool;
ERROR : Array[1..#N_MAX] of Bool;
END_VAR
VAR_OUTPUT
{ S7_MLC := "MLC_3m5" }
Finalizado : Bool;
{ S7_MLC := "MLC_4P8" }
EnEjecuccion : Bool;
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_4Ba"
}
AlgunError : Bool := FALSE;
EnError : Array[1..#N_MAX] of Bool := [
8(FALSE)
];
REQ : Array[1..#N_MAX] of Bool;
END_VAR
VAR RETAIN
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_4dP";
S7_Visibility := "Hidden := External"
}
s_Etapa : Int := #REPOSO;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_Ph";
S7_Visibility := "Hidden := External"
}
s_IndiceActual : Int;
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_V6";
S7_Visibility := "Hidden := External"
}
s_AlgunError : Bool := FALSE;
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_LF";
S7_Visibility := "Hidden := External"
}
s_NumeroBloques : Int;
END_VAR
VAR RETAIN
{
S7_Access := "ReadOnly := External";
S7_MLC := "MLC_4Vt";
S7_Visibility := "Hidden := External"
}
s_TiempoEsperaActual : Int;
END_VAR
VAR
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_Error : Array[1..#N_MAX] of Bool := [
8(FALSE)
];
END_VAR
VAR RETAIN
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_NumeroError : Array[1..#N_MAX] of UInt;
{
S7_Access := "ReadOnly := External";
S7_Visibility := "Hidden := External"
}
s_NumeroDone : Array[1..#N_MAX] of UInt;
END_VAR
VAR_TEMP
for_i : Int;
END_VAR
VAR CONSTANT
{ S7_MLC := "MLC_4p6" }
REPOSO : Int := 0;
{ S7_MLC := "MLC_4jG" }
PROCESANDO : Int := 10;
{ S7_MLC := "MLC_376" }
N_MAX : Int := 8;
END_VAR
{ S7_Language := "SCL" }
NETWORK
REGION DESCRIPCION
//=======================================================================
// (C)Copyright ZeusControl 2024 - 2026
//=======================================================================
(*
### Información del Sistema
| Hardware Compatible | Entorno de Ingeniería |
|---------------------|-----------------------|
| PLC serie 1200/1500 | TIA Portal 18 |
---
### Descripción Funcional
El bloque `FB15150_ZC_SEC_S7COM` implementa un gestor de comunicaciones secuenciales S7 (PUT/GET) que ejecuta, de forma ordenada y con gestión de errores, una secuencia de peticiones a otros tantos bloques de comunicación. Garantiza que las operaciones se lancen una a una, esperando a la finalización de cada una (correcta o con error) antes de continuar con la siguiente, y permite acotar el tiempo de espera por petición para detectar bloqueos de la comunicación.
Funcionalidades principales:
- Habilitación y Ack: cuando el bloque se deshabilita (`#Habilitar := FALSE`) o se activa la entrada de acuse `#Ack`, se reinicializan todas las variables internas y de salida, se vacían los flags de error, se resetea la etapa a `REPOSO` y se sale del bloque mediante `RETURN`.
- Límite de dimensionamiento: se valida `#NumeroBloques` contra la constante de dimensionamiento `#N_MAX`, acotando el valor entre 1 y `#N_MAX`.
- Arranque ordenado: cuando se recibe la entrada `#Iniciar` estando en `REPOSO`, se inicializa el índice de proceso, se limpian las peticiones y los flags de error, y se transita a la etapa `PROCESANDO`.
- Procesamiento secuencial: para cada bloque actual, se lanza la activación de `#REQ` y se monitorizan las señales de fin `#NDR_DONE` y `#ERROR`. Se avanza al siguiente bloque tanto en caso de éxito como de error.
- Control de tiempo de espera: si la petición actual no finaliza antes de cumplir `#TiempoEspera` (incrementado con `#Pulso1Seg`), se da por fallida y se avanza al siguiente bloque, contabilizándolo como error.
- Salidas de estado: `#EnEjecuccion` indica que la secuencia está en curso (`#s_Etapa <> REPOSO`) y `#Finalizado` indica que la secuencia ha concluido. Por cada bloque se expone `#EnError` y un `#AlgunError` global que se activa si cualquier petición ha fallado.
> **Restricciones:** Ninguna.
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 00.00.01 | 24.05.2023 | (ABH) | Primera versión. |
| 00.00.02 | 21.09.2023 | (ABH) | Cambio a SCL. |
| 00.00.03 | 24.08.2025 | (ABH) | Se añade tiempo de espera para dar como error. |
| 01.00.00 | 02.07.2026 | (ABH) | Refactorización de lógica para estandarización. Se añade constante de dimensionamiento. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION HABILITACION
// En caso de no estar habilitado el bloque o pulsar el boton ACK, reinicializamos valores y salimos inmediatamente
IF NOT #Habilitar OR #Ack THEN
#s_AlgunError := FALSE;
FOR #for_i := 1 TO #N_MAX DO
#REQ[#for_i] := FALSE;
#s_Error[#for_i] := FALSE;
#s_NumeroDone[#for_i] := 0;
#s_NumeroError[#for_i] := 0;
#EnError[#for_i] := FALSE;
END_FOR;
#s_Etapa := #REPOSO;
#s_TiempoEsperaActual := 0;
#s_IndiceActual := 1;
#Finalizado := FALSE;
#EnEjecuccion := FALSE;
#AlgunError := FALSE;
RETURN;
END_IF;
END_REGION HABILITACION
// ==========================================================================================================
REGION LIMITES
// Traspaso de numero de bloques a variable interna
#s_NumeroBloques := #NumeroBloques;
// Limite de bloques
IF #s_NumeroBloques > #N_MAX THEN
#s_NumeroBloques := #N_MAX;
ELSIF #s_NumeroBloques < 1 THEN
#s_NumeroBloques := 1;
END_IF;
END_REGION LIMITES
// ==========================================================================================================
REGION ORDEN_DE_INICIO
IF #Habilitar AND #s_Etapa = #REPOSO AND #Iniciar THEN
#s_AlgunError := FALSE;
#s_Etapa := #PROCESANDO;
#s_IndiceActual := 1; // Apuntamos al primer BLOQUE
// Reinicializamos las variables REQ y ERROR antes de empezar
FOR #for_i := 1 TO #N_MAX DO
#REQ[#for_i] := FALSE;
#s_Error[#for_i] := FALSE;
END_FOR;
#s_TiempoEsperaActual := 0;
END_IF;
END_REGION ORDEN_DE_INICIO
// ==========================================================================================================
REGION SECUENCIA
CASE #s_Etapa OF
#REPOSO:
; // Esperando orden de inicio
#PROCESANDO:
// Verificacion de final de la secuencia
IF #s_IndiceActual > #s_NumeroBloques THEN
// Si hemos procesado todos los bloques, finalizamos la secuencia
#s_Etapa := #REPOSO;
RETURN;
END_IF;
// Procesamos
REGION GESTION_COMUNICACIONES
// Lanzamos orden request para el bloque de comunicaciones
#REQ[#s_IndiceActual] := TRUE;
// Esperamos a que finalice correctamente el bloque de comunicaciones
IF #NDR_DONE[#s_IndiceActual] THEN
#REQ[#s_IndiceActual] := FALSE;
#s_NumeroDone[#s_IndiceActual] += 1;
#s_TiempoEsperaActual := 0;
// Avanzamos al siguiente bloque de comunicaciones
#s_IndiceActual += 1;
// En caso de error o Timeout
ELSIF #ERROR[#s_IndiceActual] OR #s_TiempoEsperaActual >= #TiempoEspera THEN
#s_Error[#s_IndiceActual] := TRUE;
#REQ[#s_IndiceActual] := FALSE;
#s_NumeroError[#s_IndiceActual] += 1;
#s_TiempoEsperaActual := 0;
// Avanzamos al siguiente bloque de comunicaciones
#s_IndiceActual += 1;
END_IF;
// Contador de tiempo de Timeout
IF #Pulso1Seg THEN
#s_TiempoEsperaActual += 1;
END_IF;
END_REGION GESTION_COMUNICACIONES
ELSE
#s_Etapa := #REPOSO;
END_CASE;
END_REGION SECUENCIA
// ==========================================================================================================
REGION SALIDAS
#Finalizado := (#s_Etapa = #REPOSO);
#EnEjecuccion := (#s_Etapa <> #REPOSO);
// Gestion señales de salida de bloque
#s_AlgunError := FALSE;
FOR #for_i := 1 TO #N_MAX DO
#EnError[#for_i] := #s_Error[#for_i];
IF #s_Error[#for_i] THEN
#s_AlgunError := TRUE;
END_IF;
END_FOR;
#AlgunError := #s_AlgunError;
END_REGION SALIDAS
END_NETWORK
END_FUNCTION_BLOCK
@@ -0,0 +1,64 @@
MultiLingualTexts:
- id: MLC_42L
es-ES: FB15150_ZC_SEC_GET
- id: MLC_44J
es-ES: |-
ZEUS CONTROL, S.A.
(c)Copyright (2023) All Rights Reserved
--------------------------------------------------------------------------------------
Software: TIA Portal 16
Restricciones: PLC serie 1200/1500
Nombre: FB15150_ZC_SEC_GET
Descripcion: Bloque de funcion para gestion de comunicaciones secuenciales GET.
Dependencias:
FC: -
FB: -
DB: -
UDT: -
Change log:
Version Fecha Tecnico a cargo Descripcion
01.00.00    24.05.2023  (ABH)   Primera version
01.00.01 21.09.2023 (ABH) Cambio a SCL.
//=====================================================================================
- id: MLC_4vr
es-ES: Habilitacion General
- id: MLC_38z
es-ES: Iniciar secuencia
- id: MLC_4x4
es-ES: Acuse general para resetear la secuencia
- id: MLC_4Zq
es-ES: Pulso 1 segundo
- id: MLC_4vy
es-ES: Numero de bloques de comunicacion en la secuencia
- id: MLC_3Tv
es-ES: Tiempo espera estado bloque comunicacion
- id: MLC_3m5
es-ES: Secuencia finalizada
- id: MLC_4P8
es-ES: Secuencia en ejecucion
- id: MLC_4Ba
es-ES: Algun error
- id: MLC_4dP
es-ES: Etapa actual
- id: MLC_Ph
es-ES: Indice actual del bloque de comunicacion en ejecuccion
- id: MLC_V6
es-ES: Indicador de algun error
- id: MLC_LF
es-ES: Numero de bloques
- id: MLC_4Vt
es-ES: Tiempo de espera actual
- id: MLC_4p6
es-ES: Etapa reposo
- id: MLC_4jG
es-ES: Etapa procesando
- id: MLC_376
es-ES: Numero maximo de bloques de comunicacion
@@ -28,7 +28,7 @@
<SW.Tags.PlcUserConstant ID="4" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_PINT</Name>
<Name>N_MAX_GNR_PINT</Name>
<Value>1</Value>
</AttributeList>
<ObjectList>
@@ -47,7 +47,7 @@
<SW.Tags.PlcUserConstant ID="7" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_PREAL</Name>
<Name>N_MAX_GNR_PREAL</Name>
<Value>1</Value>
</AttributeList>
<ObjectList>
@@ -86,7 +86,7 @@
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_ENTIDAD</Name>
<Value>50</Value>
<Value>5</Value>
</AttributeList>
<ObjectList>
<MultilingualText ID="E" CompositionName="Comment">
@@ -104,7 +104,7 @@
<SW.Tags.PlcUserConstant ID="10" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_ALARMAS</Name>
<Name>N_MAX_GNR_ALARMAS</Name>
<Value>16</Value>
</AttributeList>
<ObjectList>
@@ -123,7 +123,7 @@
<SW.Tags.PlcUserConstant ID="13" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_ALARMAS_HMI</Name>
<Name>N_MAX_GNR_ALARMAS_HMI</Name>
<Value>0</Value>
</AttributeList>
<ObjectList>
@@ -142,32 +142,13 @@
<SW.Tags.PlcUserConstant ID="16" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_ALARMAS_GRUPO</Name>
<Value>1</Value>
<Name>N_MAX_ENTIDAD_DISPOSITIVOS</Name>
<Value>10</Value>
</AttributeList>
<ObjectList>
<MultilingualText ID="17" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="18" CompositionName="Items">
<AttributeList>
<Culture>es-ES</Culture>
<Text>Numero de grupos de alarma (Minimo 1)</Text>
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Tags.PlcUserConstant>
<SW.Tags.PlcUserConstant ID="19" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_ENTIDAD_DISPOSITIVOS</Name>
<Value>10</Value>
</AttributeList>
<ObjectList>
<MultilingualText ID="1A" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="1B" CompositionName="Items">
<AttributeList>
<Culture>es-ES</Culture>
<Text>Numero de dispositivos dentro de las entidades (Minimo 1)</Text>
@@ -177,16 +158,16 @@
</MultilingualText>
</ObjectList>
</SW.Tags.PlcUserConstant>
<SW.Tags.PlcUserConstant ID="1C" CompositionName="UserConstants">
<SW.Tags.PlcUserConstant ID="19" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_INF_BUFFER</Name>
<Value>1</Value>
</AttributeList>
<ObjectList>
<MultilingualText ID="1D" CompositionName="Comment">
<MultilingualText ID="1A" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="1E" CompositionName="Items">
<MultilingualTextItem ID="1B" CompositionName="Items">
<AttributeList>
<Culture>es-ES</Culture>
<Text>Numero max. registros de informe (Minimo 1)</Text>
@@ -196,16 +177,16 @@
</MultilingualText>
</ObjectList>
</SW.Tags.PlcUserConstant>
<SW.Tags.PlcUserConstant ID="1F" CompositionName="UserConstants">
<SW.Tags.PlcUserConstant ID="1C" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_TRAZA_BUFFER</Name>
<Value>30</Value>
</AttributeList>
<ObjectList>
<MultilingualText ID="20" CompositionName="Comment">
<MultilingualText ID="1D" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="21" CompositionName="Items">
<MultilingualTextItem ID="1E" CompositionName="Items">
<AttributeList>
<Culture>es-ES</Culture>
<Text>Numero max. buffer de la trazabilidad (Minimo 1)</Text>
@@ -215,19 +196,19 @@
</MultilingualText>
</ObjectList>
</SW.Tags.PlcUserConstant>
<SW.Tags.PlcUserConstant ID="22" CompositionName="UserConstants">
<SW.Tags.PlcUserConstant ID="1F" CompositionName="UserConstants">
<AttributeList>
<DataTypeName>Int</DataTypeName>
<Name>N_MAX_SCADA</Name>
<Value>0</Value>
<Value>1</Value>
</AttributeList>
<ObjectList>
<MultilingualText ID="23" CompositionName="Comment">
<MultilingualText ID="20" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="24" CompositionName="Items">
<MultilingualTextItem ID="21" CompositionName="Items">
<AttributeList>
<Culture>es-ES</Culture>
<Text>Numero max. de equipos SCADA (Minimo 1)</Text>
<Text>Numero max. de equipos SCADA</Text>
</AttributeList>
</MultilingualTextItem>
</ObjectList>
@@ -3,7 +3,7 @@
<Engineering version="V21" />
<SW.Tags.PlcTagTable ID="0">
<AttributeList>
<Name>000_Productos</Name>
<Name>Productos</Name>
</AttributeList>
<ObjectList>
<SW.Tags.PlcUserConstant ID="1" CompositionName="UserConstants">
@@ -3,7 +3,7 @@
<Engineering version="V21" />
<SW.Tags.PlcTagTable ID="0">
<AttributeList>
<Name>000_Traza_Categorias</Name>
<Name>Traza_Categorias</Name>
</AttributeList>
<ObjectList>
<SW.Tags.PlcUserConstant ID="1" CompositionName="UserConstants">
@@ -3,7 +3,7 @@
<Engineering version="V21" />
<SW.Tags.PlcTagTable ID="0">
<AttributeList>
<Name>000_Traza_Codigos</Name>
<Name>Traza_Codigos</Name>
</AttributeList>
<ObjectList>
<SW.Tags.PlcUserConstant ID="1" CompositionName="UserConstants">
+588 -1
View File
@@ -1,6 +1,584 @@
# ZC_ESTANDAR_ALIMENTACION
---
# Índice del análisis TIA Portal
- [Mapa de dependencias](00_Mapa_Dependencias.md)
- [Reconocimiento](01_Reconocimiento.md)
## Documentación por carpeta
- [`Bloques de programa`](01_Bloques_de_programa.md)
- [`Bloques de programa/11000_Comunicaciones`](02_11000_Comunicaciones.md)
- [`Bloques de programa/2000_Dispositivos`](03_2000_Dispositivos.md)
- [`Bloques de programa/2000_Dispositivos/2800_Multiplexado`](04_2000_Dispositivos_2800_Multiplexado.md)
- [`Bloques de programa/3000_ParametrosGenerales`](05_3000_ParametrosGenerales.md)
- [`Bloques de programa/5000_AlarmasGenerales`](06_5000_AlarmasGenerales.md)
- [`Bloques de programa/60_Balizas`](07_60_Balizas.md)
- [`Bloques de programa/6_Entidades`](08_6_Entidades.md)
- [`Bloques de programa/9_Gestor_Dispositivos`](09_9_Gestor_Dispositivos.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos`](10_000_Sistema_Datos.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware`](11_000_Sistema_DiagnosticoHardware.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Gestor`](12_000_Sistema_Gestor.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos`](13_100_Utilidades_Calculos.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Contadores`](14_100_Utilidades_Contadores.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Conversiones`](15_100_Utilidades_Conversiones.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Pulsadores`](16_100_Utilidades_Pulsadores.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/200_Dispositivos_Estandar`](17_200_Dispositivos_Estandar.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/200_Dispositivos_Individuales`](18_200_Dispositivos_Individuales.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/200_Dispositivos_Multiplexado`](19_200_Dispositivos_Multiplexado.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Controles`](20_300_Procesos_Controles.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Gestor`](21_300_Procesos_Gestor.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Alarmas`](22_500_Datos_Alarmas.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Informes`](23_500_Datos_Informes.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Parametros`](24_500_Datos_Parametros.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Recetas`](25_500_Datos_Recetas.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros`](26_500_Datos_Registros.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Scada`](27_500_Datos_Scada.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Trazabilidad`](28_500_Datos_Trazabilidad.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/600_Comunicaciones`](29_600_Comunicaciones.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/900_FAT_PruebasCuadros`](30_900_FAT_PruebasCuadros.md)
- [`Bloques de programa/ZC_Estandar_Alimentacion/900_FAT_Utilidades`](31_900_FAT_Utilidades.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/100_Utilidades`](32_UDT_100_Utilidades.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/200_Dispositivos_Estandar`](33_UDT_200_Dispositivos_Estandar.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/200_Dispositivos_Interfaz`](34_UDT_200_Dispositivos_Interfaz.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/200_Dispositivos_Multiplexado`](35_UDT_200_Dispositivos_Multiplexado.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/300_Proceso_Gestor`](36_UDT_300_Proceso_Gestor.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/300_Proceso_Interfaces`](37_UDT_300_Proceso_Interfaces.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/400_Secuencias_CIP`](38_UDT_400_Secuencias_CIP.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/500_Datos_Alarmas`](39_UDT_500_Datos_Alarmas.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/500_Datos_Informes`](40_UDT_500_Datos_Informes.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/500_Datos_Parametros`](41_UDT_500_Datos_Parametros.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/500_Datos_Recetas`](42_UDT_500_Datos_Recetas.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/500_Datos_Registros`](43_UDT_500_Datos_Registros.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/500_Datos_Trazabilidad`](44_UDT_500_Datos_Trazabilidad.md)
- [`Tipos de datos PLC/ZC_Estandar_Alimentacion/600_Comunicaciones`](45_UDT_600_Comunicaciones.md)
## Criterio de análisis
Para cada fuente se documentan propósito, interfaz, dependencias y lógica clave. La información funcional embebida por el autor en `### Descripción Funcional` se conserva como fuente primaria; cuando no existe se genera una interpretación explícita basada en tipo, nombre, regiones, comentarios y estructuras de control.
## Limitaciones
Este resultado es análisis estático de una exportación: no sustituye una referencia cruzada compilada de TIA Portal. Las instrucciones de sistema, bloques protegidos/no exportados y llamadas indirectas pueden carecer de implementación local.
---
# Mapa de dependencias
> Relación estática obtenida de llamadas y referencias explícitas en los `.s7dcl`. Una flecha `A → B` significa que A llama o utiliza B. Los accesos dinámicos por dirección, reflexión o librerías no exportadas pueden no quedar resueltos.
## Flujo principal de ejecución
```mermaid
flowchart TD
N_FC11000_GESTOR_COM["FC11000_GESTOR_COM"] --> N_DB11000_SEC_S7COM["DB11000_SEC_S7COM"]
N_FC11000_GESTOR_COM["FC11000_GESTOR_COM"] --> N_DB1_SYS["DB1_SYS"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_DB1_SYS["DB1_SYS"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_DB3_CHECKSUM["DB3_CHECKSUM"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_DB6_ENTIDAD["DB6_ENTIDAD"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_FB3_ZC_CHECKSUM["FB3_ZC_CHECKSUM"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"]
N_FC5000_GNR_ALM["FC5000_GNR_ALM"] --> N_DB1_SYS["DB1_SYS"]
N_FC5000_GNR_ALM["FC5000_GNR_ALM"] --> N_DB5000_GNR_ALM["DB5000_GNR_ALM"]
N_FC5000_GNR_ALM["FC5000_GNR_ALM"] --> N_FC17_ZC_GEST_ALM["FC17_ZC_GEST_ALM"]
N_FC50_MAIN["FC50_MAIN"] --> N_DB1_SYS["DB1_SYS"]
N_FC50_MAIN["FC50_MAIN"] --> N_DB2717_INST_M_SINA["DB2717_INST_M_SINA"]
N_FC50_MAIN["FC50_MAIN"] --> N_DB3000_GNR_PARAM["DB3000_GNR_PARAM"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC11000_GESTOR_COM["FC11000_GESTOR_COM"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC11_ZC_INF_GESTOR["FC11_ZC_INF_GESTOR"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC15_ZC_GEST_PREAL["FC15_ZC_GEST_PREAL"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC16_ZC_GEST_PINT["FC16_ZC_GEST_PINT"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2000_ZC_ED["FC2000_ZC_ED"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2001_ZC_EA["FC2001_ZC_EA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2005_ZC_SD["FC2005_ZC_SD"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2006_ZC_SA["FC2006_ZC_SA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2010_ZC_V["FC2010_ZC_V"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2015_ZC_M["FC2015_ZC_M"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2016_ZC_M_VF["FC2016_ZC_M_VF"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2025_ZC_TOT["FC2025_ZC_TOT"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2026_ZC_FF["FC2026_ZC_FF"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2027_ZC_FF_SEC["FC2027_ZC_FF_SEC"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2028_ZC_TEMP["FC2028_ZC_TEMP"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2037_ZC_MEDIA["FC2037_ZC_MEDIA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2038_ZC_MEDIA_VOL["FC2038_ZC_MEDIA_VOL"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2041_ZC_TQ_AE["FC2041_ZC_TQ_AE"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2800_ZC_ED_MUX["FC2800_ZC_ED_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2801_ZC_EA_MUX["FC2801_ZC_EA_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2805_ZC_SD_MUX["FC2805_ZC_SD_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2806_ZC_SA_MUX["FC2806_ZC_SA_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2810_ZC_V_MUX["FC2810_ZC_V_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2815_ZC_M_MUX["FC2815_ZC_M_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2816_ZC_M_VF_MUX["FC2816_ZC_M_VF_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2817_ZC_M_SINA_MUX["FC2817_ZC_M_SINA_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2825_ZC_TOT_MUX["FC2825_ZC_TOT_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2835_ZC_PID_MUX["FC2835_ZC_PID_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2840_ZC_TQ_MUX["FC2840_ZC_TQ_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2841_ZC_TQ_AE_MUX["FC2841_ZC_TQ_AE_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC5000_GNR_ALM["FC5000_GNR_ALM"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC55_PROGRAMA_USUARIO["FC55_PROGRAMA_USUARIO"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC60_GESTOR_BALIZAS["FC60_GESTOR_BALIZAS"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC7_ZC_TRZ_GESTOR["FC7_ZC_TRZ_GESTOR"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"]
N_FC60_GESTOR_BALIZAS["FC60_GESTOR_BALIZAS"] --> N_DB5000_GNR_ALM["DB5000_GNR_ALM"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB1_SYS["DB1_SYS"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2000_ED["DB2000_ED"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2001_EA["DB2001_EA"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2005_SD["DB2005_SD"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2006_SA["DB2006_SA"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2010_V["DB2010_V"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2015_M["DB2015_M"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2017_M_SINA["DB2017_M_SINA"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2041_TQ_AE["DB2041_TQ_AE"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2800_ED_MUX["DB2800_ED_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2801_EA_MUX["DB2801_EA_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2805_SD_MUX["DB2805_SD_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2806_SA_MUX["DB2806_SA_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2810_V_MUX["DB2810_V_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2815_M_MUX["DB2815_M_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2816_M_VF_MUX["DB2816_M_VF_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2817_M_SINA_MUX["DB2817_M_SINA_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2825_TOT_MUX["DB2825_TOT_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2835_PID_MUX["DB2835_PID_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2840_TQ_MUX["DB2840_TQ_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2841_TQ_AE_MUX["DB2841_TQ_AE_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"]
N_OB1_MAIN["OB1_MAIN"] --> N_FC50_MAIN["FC50_MAIN"]
N_OB30_PID_100MS["OB30_PID_100MS"] --> N_DB2035_PID["DB2035_PID"]
```
## Grafo completo por capas
El grafo completo se divide para mantener Mermaid legible.
### `Bloques de programa`
```mermaid
flowchart LR
N_OB30_PID_100MS["OB30_PID_100MS"] --> N_DB2035_PID["DB2035_PID"]
```
### `Bloques de programa/11000_Comunicaciones`
```mermaid
flowchart LR
N_FC11000_GESTOR_COM["FC11000_GESTOR_COM"] --> N_DB11000_SEC_S7COM["DB11000_SEC_S7COM"]
N_FC11000_GESTOR_COM["FC11000_GESTOR_COM"] --> N_DB1_SYS["DB1_SYS"]
```
### `Bloques de programa/5000_AlarmasGenerales`
```mermaid
flowchart LR
N_FC5000_GNR_ALM["FC5000_GNR_ALM"] --> N_DB1_SYS["DB1_SYS"]
N_FC5000_GNR_ALM["FC5000_GNR_ALM"] --> N_DB5000_GNR_ALM["DB5000_GNR_ALM"]
N_FC5000_GNR_ALM["FC5000_GNR_ALM"] --> N_FC17_ZC_GEST_ALM["FC17_ZC_GEST_ALM"]
```
### `Bloques de programa/60_Balizas`
```mermaid
flowchart LR
N_FC60_GESTOR_BALIZAS["FC60_GESTOR_BALIZAS"] --> N_DB5000_GNR_ALM["DB5000_GNR_ALM"]
```
### `Bloques de programa/9_Gestor_Dispositivos`
```mermaid
flowchart LR
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB1_SYS["DB1_SYS"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2000_ED["DB2000_ED"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2001_EA["DB2001_EA"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2005_SD["DB2005_SD"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2006_SA["DB2006_SA"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2010_V["DB2010_V"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2015_M["DB2015_M"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2017_M_SINA["DB2017_M_SINA"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2041_TQ_AE["DB2041_TQ_AE"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2800_ED_MUX["DB2800_ED_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2801_EA_MUX["DB2801_EA_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2805_SD_MUX["DB2805_SD_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2806_SA_MUX["DB2806_SA_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2810_V_MUX["DB2810_V_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2815_M_MUX["DB2815_M_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2816_M_VF_MUX["DB2816_M_VF_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2817_M_SINA_MUX["DB2817_M_SINA_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2825_TOT_MUX["DB2825_TOT_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2835_PID_MUX["DB2835_PID_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2840_TQ_MUX["DB2840_TQ_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_DB2841_TQ_AE_MUX["DB2841_TQ_AE_MUX"]
N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"] --> N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Datos`
```mermaid
flowchart LR
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_DB1_SYS["DB1_SYS"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_DB3_CHECKSUM["DB3_CHECKSUM"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_DB6_ENTIDAD["DB6_ENTIDAD"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_FB3_ZC_CHECKSUM["FB3_ZC_CHECKSUM"]
N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"] --> N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_DiagnosticoHardware`
```mermaid
flowchart LR
N_OB100_Startup["OB100_Startup"] --> N_DB1_SYS["DB1_SYS"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/000_Sistema_Gestor`
```mermaid
flowchart LR
N_FC50_MAIN["FC50_MAIN"] --> N_DB1_SYS["DB1_SYS"]
N_FC50_MAIN["FC50_MAIN"] --> N_DB2717_INST_M_SINA["DB2717_INST_M_SINA"]
N_FC50_MAIN["FC50_MAIN"] --> N_DB3000_GNR_PARAM["DB3000_GNR_PARAM"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC11000_GESTOR_COM["FC11000_GESTOR_COM"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC11_ZC_INF_GESTOR["FC11_ZC_INF_GESTOR"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC15_ZC_GEST_PREAL["FC15_ZC_GEST_PREAL"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC16_ZC_GEST_PINT["FC16_ZC_GEST_PINT"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC1_ZC_SISTEMA["FC1_ZC_SISTEMA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2000_ZC_ED["FC2000_ZC_ED"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2001_ZC_EA["FC2001_ZC_EA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2005_ZC_SD["FC2005_ZC_SD"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2006_ZC_SA["FC2006_ZC_SA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2010_ZC_V["FC2010_ZC_V"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2015_ZC_M["FC2015_ZC_M"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2016_ZC_M_VF["FC2016_ZC_M_VF"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2025_ZC_TOT["FC2025_ZC_TOT"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2026_ZC_FF["FC2026_ZC_FF"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2027_ZC_FF_SEC["FC2027_ZC_FF_SEC"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2028_ZC_TEMP["FC2028_ZC_TEMP"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2037_ZC_MEDIA["FC2037_ZC_MEDIA"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2038_ZC_MEDIA_VOL["FC2038_ZC_MEDIA_VOL"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2041_ZC_TQ_AE["FC2041_ZC_TQ_AE"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2800_ZC_ED_MUX["FC2800_ZC_ED_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2801_ZC_EA_MUX["FC2801_ZC_EA_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2805_ZC_SD_MUX["FC2805_ZC_SD_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2806_ZC_SA_MUX["FC2806_ZC_SA_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2810_ZC_V_MUX["FC2810_ZC_V_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2815_ZC_M_MUX["FC2815_ZC_M_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2816_ZC_M_VF_MUX["FC2816_ZC_M_VF_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2817_ZC_M_SINA_MUX["FC2817_ZC_M_SINA_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2825_ZC_TOT_MUX["FC2825_ZC_TOT_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2835_ZC_PID_MUX["FC2835_ZC_PID_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2840_ZC_TQ_MUX["FC2840_ZC_TQ_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC2841_ZC_TQ_AE_MUX["FC2841_ZC_TQ_AE_MUX"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC5000_GNR_ALM["FC5000_GNR_ALM"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC55_PROGRAMA_USUARIO["FC55_PROGRAMA_USUARIO"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC60_GESTOR_BALIZAS["FC60_GESTOR_BALIZAS"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC7_ZC_TRZ_GESTOR["FC7_ZC_TRZ_GESTOR"]
N_FC50_MAIN["FC50_MAIN"] --> N_FC9_DISPOSITIVOS["FC9_DISPOSITIVOS"]
N_OB1_MAIN["OB1_MAIN"] --> N_FC50_MAIN["FC50_MAIN"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Calculos`
```mermaid
flowchart LR
N_FB15102_ZC_CALCULO_FCV_UF["FB15102_ZC_CALCULO_FCV_UF"] --> N_FC2928_ZC_TON_INDV["FC2928_ZC_TON_INDV"]
N_FB15102_ZC_CALCULO_FCV_UF["FB15102_ZC_CALCULO_FCV_UF"] --> N_UDT_ZC_DISP_TON["UDT_ZC_DISP_TON"]
N_FB15106_ZC_CALCULO_LIMP_4_MOD["FB15106_ZC_CALCULO_LIMP_4_MOD"] --> N_UDT_ZC_DISP_TON["UDT_ZC_DISP_TON"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Contadores`
```mermaid
flowchart LR
N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FC15027_ZC_CONTADOR_MINUTOS["FC15027_ZC_CONTADOR_MINUTOS"] --> N_UDT_ZC_CONTADOR_MINUTOS["UDT_ZC_CONTADOR_MINUTOS"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Conversiones`
```mermaid
flowchart LR
N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"] --> N_UDT_ZC_FECHA["UDT_ZC_FECHA"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/100_Utilidades_Pulsadores`
```mermaid
flowchart LR
N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"] --> N_UDT_ZC_PULSADOR["UDT_ZC_PULSADOR"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/200_Dispositivos_Estandar`
```mermaid
flowchart LR
N_FB15049_ZC_AIRE_ESTERIL["FB15049_ZC_AIRE_ESTERIL"] --> N_DB1_SYS["DB1_SYS"]
N_FB15049_ZC_AIRE_ESTERIL["FB15049_ZC_AIRE_ESTERIL"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FB15049_ZC_AIRE_ESTERIL["FB15049_ZC_AIRE_ESTERIL"] --> N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"]
N_FB15049_ZC_AIRE_ESTERIL["FB15049_ZC_AIRE_ESTERIL"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FB15049_ZC_AIRE_ESTERIL["FB15049_ZC_AIRE_ESTERIL"] --> N_UDT_ZC_PRO_TIEMPO_ETAPA["UDT_ZC_PRO_TIEMPO_ETAPA"]
N_FB15049_ZC_AIRE_ESTERIL["FB15049_ZC_AIRE_ESTERIL"] --> N_UDT_ZC_PULSADOR["UDT_ZC_PULSADOR"]
N_FB2017_ZC_M_SINA["FB2017_ZC_M_SINA"] --> N_DB2017_M_SINA["DB2017_M_SINA"]
N_FB2017_ZC_M_SINA["FB2017_ZC_M_SINA"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FB2017_ZC_M_SINA["FB2017_ZC_M_SINA"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2000_ZC_ED["FC2000_ZC_ED"] --> N_DB2000_ED["DB2000_ED"]
N_FC2000_ZC_ED["FC2000_ZC_ED"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2001_ZC_EA["FC2001_ZC_EA"] --> N_DB2001_EA["DB2001_EA"]
N_FC2001_ZC_EA["FC2001_ZC_EA"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2005_ZC_SD["FC2005_ZC_SD"] --> N_DB2005_SD["DB2005_SD"]
N_FC2005_ZC_SD["FC2005_ZC_SD"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2006_ZC_SA["FC2006_ZC_SA"] --> N_DB2006_SA["DB2006_SA"]
N_FC2006_ZC_SA["FC2006_ZC_SA"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2010_ZC_V["FC2010_ZC_V"] --> N_DB1_SYS["DB1_SYS"]
N_FC2010_ZC_V["FC2010_ZC_V"] --> N_DB2010_V["DB2010_V"]
N_FC2010_ZC_V["FC2010_ZC_V"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2015_ZC_M["FC2015_ZC_M"] --> N_DB2015_M["DB2015_M"]
N_FC2015_ZC_M["FC2015_ZC_M"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FC2015_ZC_M["FC2015_ZC_M"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2016_ZC_M_VF["FC2016_ZC_M_VF"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FC2016_ZC_M_VF["FC2016_ZC_M_VF"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FC2016_ZC_M_VF["FC2016_ZC_M_VF"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2025_ZC_TOT["FC2025_ZC_TOT"] --> N_DB2025_TOT["DB2025_TOT"]
N_FC2026_ZC_FF["FC2026_ZC_FF"] --> N_DB2026_FF["DB2026_FF"]
N_FC2027_ZC_FF_SEC["FC2027_ZC_FF_SEC"] --> N_DB2027_FF_SEC["DB2027_FF_SEC"]
N_FC2027_ZC_FF_SEC["FC2027_ZC_FF_SEC"] --> N_UDT_ZC_DISP_FF_SEC["UDT_ZC_DISP_FF_SEC"]
N_FC2028_ZC_TEMP["FC2028_ZC_TEMP"] --> N_DB2028_TEMP["DB2028_TEMP"]
N_FC2037_ZC_MEDIA["FC2037_ZC_MEDIA"] --> N_DB2037_MEDIA["DB2037_MEDIA"]
N_FC2038_ZC_MEDIA_VOL["FC2038_ZC_MEDIA_VOL"] --> N_DB2038_MEDIA_VOL["DB2038_MEDIA_VOL"]
N_FC2038_ZC_MEDIA_VOL["FC2038_ZC_MEDIA_VOL"] --> N_UDT_ZC_DISP_MEDIA_VOLUMEN["UDT_ZC_DISP_MEDIA_VOLUMEN"]
N_FC2041_ZC_TQ_AE["FC2041_ZC_TQ_AE"] --> N_DB1_SYS["DB1_SYS"]
N_FC2041_ZC_TQ_AE["FC2041_ZC_TQ_AE"] --> N_DB2041_TQ_AE["DB2041_TQ_AE"]
N_FC2041_ZC_TQ_AE["FC2041_ZC_TQ_AE"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/200_Dispositivos_Individuales`
```mermaid
flowchart LR
N_FC2926_ZC_FF_INDV["FC2926_ZC_FF_INDV"] --> N_UDT_ZC_DISP_FF["UDT_ZC_DISP_FF"]
N_FC2927_ZC_FF_SEC_INDV["FC2927_ZC_FF_SEC_INDV"] --> N_UDT_ZC_DISP_FF_SEC["UDT_ZC_DISP_FF_SEC"]
N_FC2928_ZC_TON_INDV["FC2928_ZC_TON_INDV"] --> N_UDT_ZC_DISP_TON["UDT_ZC_DISP_TON"]
N_FC2929_ZC_TOF_INDV["FC2929_ZC_TOF_INDV"] --> N_UDT_ZC_DISP_TOF["UDT_ZC_DISP_TOF"]
N_FC2930_ZC_TONR_INDV["FC2930_ZC_TONR_INDV"] --> N_UDT_ZC_DISP_TONR["UDT_ZC_DISP_TONR"]
N_FC2931_ZC_TP_INDV["FC2931_ZC_TP_INDV"] --> N_UDT_ZC_DISP_TP["UDT_ZC_DISP_TP"]
N_FC2935_ZC_PID_INDV["FC2935_ZC_PID_INDV"] --> N_DB2035_PID["DB2035_PID"]
N_FC2935_ZC_PID_INDV["FC2935_ZC_PID_INDV"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC2937_ZC_MEDIA_INDV["FC2937_ZC_MEDIA_INDV"] --> N_UDT_ZC_DISP_MEDIA["UDT_ZC_DISP_MEDIA"]
N_FC2938_ZC_MEDIA_VOL_INDV["FC2938_ZC_MEDIA_VOL_INDV"] --> N_UDT_ZC_DISP_MEDIA_VOLUMEN["UDT_ZC_DISP_MEDIA_VOLUMEN"]
N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"] --> N_DB1_SYS["DB1_SYS"]
N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"] --> N_DB2040_TQ["DB2040_TQ"]
N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"] --> N_FC2926_ZC_FF_INDV["FC2926_ZC_FF_INDV"]
N_FC2940_ZC_TQ_INDV["FC2940_ZC_TQ_INDV"] --> N_FC2928_ZC_TON_INDV["FC2928_ZC_TON_INDV"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/200_Dispositivos_Multiplexado`
```mermaid
flowchart LR
N_FC2800_ZC_ED_MUX["FC2800_ZC_ED_MUX"] --> N_DB2000_ED["DB2000_ED"]
N_FC2800_ZC_ED_MUX["FC2800_ZC_ED_MUX"] --> N_DB2800_ED_MUX["DB2800_ED_MUX"]
N_FC2801_ZC_EA_MUX["FC2801_ZC_EA_MUX"] --> N_DB2001_EA["DB2001_EA"]
N_FC2801_ZC_EA_MUX["FC2801_ZC_EA_MUX"] --> N_DB2801_EA_MUX["DB2801_EA_MUX"]
N_FC2805_ZC_SD_MUX["FC2805_ZC_SD_MUX"] --> N_DB2005_SD["DB2005_SD"]
N_FC2805_ZC_SD_MUX["FC2805_ZC_SD_MUX"] --> N_DB2805_SD_MUX["DB2805_SD_MUX"]
N_FC2806_ZC_SA_MUX["FC2806_ZC_SA_MUX"] --> N_DB2006_SA["DB2006_SA"]
N_FC2806_ZC_SA_MUX["FC2806_ZC_SA_MUX"] --> N_DB2806_SA_MUX["DB2806_SA_MUX"]
N_FC2810_ZC_V_MUX["FC2810_ZC_V_MUX"] --> N_DB2010_V["DB2010_V"]
N_FC2810_ZC_V_MUX["FC2810_ZC_V_MUX"] --> N_DB2810_V_MUX["DB2810_V_MUX"]
N_FC2815_ZC_M_MUX["FC2815_ZC_M_MUX"] --> N_DB2015_M["DB2015_M"]
N_FC2815_ZC_M_MUX["FC2815_ZC_M_MUX"] --> N_DB2815_M_MUX["DB2815_M_MUX"]
N_FC2816_ZC_M_VF_MUX["FC2816_ZC_M_VF_MUX"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FC2816_ZC_M_VF_MUX["FC2816_ZC_M_VF_MUX"] --> N_DB2816_M_VF_MUX["DB2816_M_VF_MUX"]
N_FC2817_ZC_M_SINA_MUX["FC2817_ZC_M_SINA_MUX"] --> N_DB2017_M_SINA["DB2017_M_SINA"]
N_FC2817_ZC_M_SINA_MUX["FC2817_ZC_M_SINA_MUX"] --> N_DB2817_M_SINA_MUX["DB2817_M_SINA_MUX"]
N_FC2825_ZC_TOT_MUX["FC2825_ZC_TOT_MUX"] --> N_DB2025_TOT["DB2025_TOT"]
N_FC2825_ZC_TOT_MUX["FC2825_ZC_TOT_MUX"] --> N_DB2825_TOT_MUX["DB2825_TOT_MUX"]
N_FC2835_ZC_PID_MUX["FC2835_ZC_PID_MUX"] --> N_DB2035_PID["DB2035_PID"]
N_FC2835_ZC_PID_MUX["FC2835_ZC_PID_MUX"] --> N_DB2835_PID_MUX["DB2835_PID_MUX"]
N_FC2840_ZC_TQ_MUX["FC2840_ZC_TQ_MUX"] --> N_DB2040_TQ["DB2040_TQ"]
N_FC2840_ZC_TQ_MUX["FC2840_ZC_TQ_MUX"] --> N_DB2840_TQ_MUX["DB2840_TQ_MUX"]
N_FC2841_ZC_TQ_AE_MUX["FC2841_ZC_TQ_AE_MUX"] --> N_DB2041_TQ_AE["DB2041_TQ_AE"]
N_FC2841_ZC_TQ_AE_MUX["FC2841_ZC_TQ_AE_MUX"] --> N_DB2841_TQ_AE_MUX["DB2841_TQ_AE_MUX"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Controles`
```mermaid
flowchart LR
N_FC15151_ZC_MARCHA_PARO_SEC["FC15151_ZC_MARCHA_PARO_SEC"] --> N_UDT_ZC_MARCHA_PARO_SEC["UDT_ZC_MARCHA_PARO_SEC"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/300_Procesos_Gestor`
```mermaid
flowchart LR
N_FC4_ZC_ENT_DISPONIBILIDAD["FC4_ZC_ENT_DISPONIBILIDAD"] --> N_DB6_ENTIDAD["DB6_ENTIDAD"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_DB6_ENTIDAD["DB6_ENTIDAD"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC15001_ZC_INT_TO_STRING["FC15001_ZC_INT_TO_STRING"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC15151_ZC_MARCHA_PARO_SEC["FC15151_ZC_MARCHA_PARO_SEC"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC2928_ZC_TON_INDV["FC2928_ZC_TON_INDV"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC2930_ZC_TONR_INDV["FC2930_ZC_TONR_INDV"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC4_ZC_ENT_DISPONIBILIDAD["FC4_ZC_ENT_DISPONIBILIDAD"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC6_ZC_ENT_ESTADO["FC6_ZC_ENT_ESTADO"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_DISP_TON["UDT_ZC_DISP_TON"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_DISP_TONR["UDT_ZC_DISP_TONR"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_FECHA["UDT_ZC_FECHA"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_MARCHA_PARO_SEC["UDT_ZC_MARCHA_PARO_SEC"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_PRO_LITROS_ETAPA["UDT_ZC_PRO_LITROS_ETAPA"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_PRO_PROCESO["UDT_ZC_PRO_PROCESO"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_PRO_TIEMPO_ETAPA["UDT_ZC_PRO_TIEMPO_ETAPA"]
N_FC5_ZC_PROCESO["FC5_ZC_PROCESO"] --> N_UDT_ZC_PULSADOR["UDT_ZC_PULSADOR"]
N_FC6_ZC_ENT_ESTADO["FC6_ZC_ENT_ESTADO"] --> N_DB2010_V["DB2010_V"]
N_FC6_ZC_ENT_ESTADO["FC6_ZC_ENT_ESTADO"] --> N_DB2015_M["DB2015_M"]
N_FC6_ZC_ENT_ESTADO["FC6_ZC_ENT_ESTADO"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FC6_ZC_ENT_ESTADO["FC6_ZC_ENT_ESTADO"] --> N_DB2017_M_SINA["DB2017_M_SINA"]
N_FC6_ZC_ENT_ESTADO["FC6_ZC_ENT_ESTADO"] --> N_DB6_ENTIDAD["DB6_ENTIDAD"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Alarmas`
```mermaid
flowchart LR
N_FC17_ZC_GEST_ALM["FC17_ZC_GEST_ALM"] --> N_UDT_ZC_ALARMA["UDT_ZC_ALARMA"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Informes`
```mermaid
flowchart LR
N_FB15051_ZC_INF_CPR["FB15051_ZC_INF_CPR"] --> N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"]
N_FB15051_ZC_INF_CPR["FB15051_ZC_INF_CPR"] --> N_UDT_ZC_INF_CPR_PROD["UDT_ZC_INF_CPR_PROD"]
N_FB15051_ZC_INF_CPR["FB15051_ZC_INF_CPR"] --> N_UDT_ZC_MUX["UDT_ZC_MUX"]
N_FB15052_ZC_INF_PROD_MEM["FB15052_ZC_INF_PROD_MEM"] --> N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"]
N_FB15052_ZC_INF_PROD_MEM["FB15052_ZC_INF_PROD_MEM"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FB15052_ZC_INF_PROD_MEM["FB15052_ZC_INF_PROD_MEM"] --> N_UDT_ZC_INF_PROD_MEM["UDT_ZC_INF_PROD_MEM"]
N_FB15053_ZC_INF_LIMP_MAQ["FB15053_ZC_INF_LIMP_MAQ"] --> N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"]
N_FB15053_ZC_INF_LIMP_MAQ["FB15053_ZC_INF_LIMP_MAQ"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FB15053_ZC_INF_LIMP_MAQ["FB15053_ZC_INF_LIMP_MAQ"] --> N_UDT_ZC_INF_LIMP_MAQ["UDT_ZC_INF_LIMP_MAQ"]
N_FC11_ZC_INF_GESTOR["FC11_ZC_INF_GESTOR"] --> N_DB11_INF["DB11_INF"]
N_FC11_ZC_INF_GESTOR["FC11_ZC_INF_GESTOR"] --> N_DB1_SYS["DB1_SYS"]
N_FC11_ZC_INF_GESTOR["FC11_ZC_INF_GESTOR"] --> N_FC15006_ZC_DTL_TO_STRING["FC15006_ZC_DTL_TO_STRING"]
N_FC11_ZC_INF_GESTOR["FC11_ZC_INF_GESTOR"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC12_ZC_INF_REGISTRO["FC12_ZC_INF_REGISTRO"] --> N_DB11_INF["DB11_INF"]
N_FC12_ZC_INF_REGISTRO["FC12_ZC_INF_REGISTRO"] --> N_DB1_SYS["DB1_SYS"]
N_FC12_ZC_INF_REGISTRO["FC12_ZC_INF_REGISTRO"] --> N_FC15006_ZC_DTL_TO_STRING["FC15006_ZC_DTL_TO_STRING"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Parametros`
```mermaid
flowchart LR
N_FC15_ZC_GEST_PREAL["FC15_ZC_GEST_PREAL"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC15_ZC_GEST_PREAL["FC15_ZC_GEST_PREAL"] --> N_UDT_ZC_PREAL["UDT_ZC_PREAL"]
N_FC16_ZC_GEST_PINT["FC16_ZC_GEST_PINT"] --> N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"]
N_FC16_ZC_GEST_PINT["FC16_ZC_GEST_PINT"] --> N_UDT_ZC_PINT["UDT_ZC_PINT"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Registros`
```mermaid
flowchart LR
N_FB15050_ZC_CHEQUEO["FB15050_ZC_CHEQUEO"] --> N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"]
N_FB15050_ZC_CHEQUEO["FB15050_ZC_CHEQUEO"] --> N_UDT_ZC_INF_CHEQUEO["UDT_ZC_INF_CHEQUEO"]
N_FB15055_ZC_HORAS_MAQUINA["FB15055_ZC_HORAS_MAQUINA"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FB15055_ZC_HORAS_MAQUINA["FB15055_ZC_HORAS_MAQUINA"] --> N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"]
N_FB15055_ZC_HORAS_MAQUINA["FB15055_ZC_HORAS_MAQUINA"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FB15055_ZC_HORAS_MAQUINA["FB15055_ZC_HORAS_MAQUINA"] --> N_UDT_ZC_PULSADOR["UDT_ZC_PULSADOR"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_FC15025_ZC_CONTADOR_TIEMPO["FC15025_ZC_CONTADOR_TIEMPO"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_FC15026_ZC_PULSADOR["FC15026_ZC_PULSADOR"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_FC2926_ZC_FF_INDV["FC2926_ZC_FF_INDV"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_UDT_ZC_CONTADOR_TIEMPO["UDT_ZC_CONTADOR_TIEMPO"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_UDT_ZC_DISP_FF["UDT_ZC_DISP_FF"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_UDT_ZC_PULSADOR["UDT_ZC_PULSADOR"]
N_FB15056_ZC_SIVE_MEMBRANA_CARE["FB15056_ZC_SIVE_MEMBRANA_CARE"] --> N_UDT_ZC_SIVE_MEMBRANA_CARE["UDT_ZC_SIVE_MEMBRANA_CARE"]
N_FB15057_ZC_CONT_PROD_MEM["FB15057_ZC_CONT_PROD_MEM"] --> N_FC15005_ZC_DTL_TO_ZC_FECHA["FC15005_ZC_DTL_TO_ZC_FECHA"]
N_FB15057_ZC_CONT_PROD_MEM["FB15057_ZC_CONT_PROD_MEM"] --> N_UDT_ZC_CONT_PROD_MEM["UDT_ZC_CONT_PROD_MEM"]
N_FC15106_ZC_GESTION_LISTA["FC15106_ZC_GESTION_LISTA"] --> N_UDT_ZC_LISTA_ORIG_DEST["UDT_ZC_LISTA_ORIG_DEST"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Scada`
```mermaid
flowchart LR
N_FC20_GESTION_SCADA["FC20_GESTION_SCADA"] --> N_DB1_SYS["DB1_SYS"]
N_FC20_GESTION_SCADA["FC20_GESTION_SCADA"] --> N_FC2928_ZC_TON_INDV["FC2928_ZC_TON_INDV"]
N_FC20_GESTION_SCADA["FC20_GESTION_SCADA"] --> N_FC2929_ZC_TOF_INDV["FC2929_ZC_TOF_INDV"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/500_Datos_Trazabilidad`
```mermaid
flowchart LR
N_FC7_ZC_TRZ_GESTOR["FC7_ZC_TRZ_GESTOR"] --> N_DB7_TRZ["DB7_TRZ"]
N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"] --> N_DB7_TRZ["DB7_TRZ"]
N_FC8_ZC_TRZ_REGISTRO["FC8_ZC_TRZ_REGISTRO"] --> N_FC15006_ZC_DTL_TO_STRING["FC15006_ZC_DTL_TO_STRING"]
```
### `Bloques de programa/ZC_Estandar_Alimentacion/900_FAT_Utilidades`
```mermaid
flowchart LR
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2000_ED["DB2000_ED"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2001_EA["DB2001_EA"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2005_SD["DB2005_SD"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2006_SA["DB2006_SA"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2010_V["DB2010_V"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2015_M["DB2015_M"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2025_TOT["DB2025_TOT"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2800_ED_MUX["DB2800_ED_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2801_EA_MUX["DB2801_EA_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2805_SD_MUX["DB2805_SD_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2806_SA_MUX["DB2806_SA_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2810_V_MUX["DB2810_V_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2815_M_MUX["DB2815_M_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2816_M_VF_MUX["DB2816_M_VF_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2817_M_SINA_MUX["DB2817_M_SINA_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2825_TOT_MUX["DB2825_TOT_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2840_TQ_MUX["DB2840_TQ_MUX"]
N_FB15994_ZC_INICIALIZAR_DISP["FB15994_ZC_INICIALIZAR_DISP"] --> N_DB2841_TQ_AE_MUX["DB2841_TQ_AE_MUX"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2000_ED["DB2000_ED"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2001_EA["DB2001_EA"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2005_SD["DB2005_SD"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2006_SA["DB2006_SA"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2010_V["DB2010_V"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2015_M["DB2015_M"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2016_M_VF["DB2016_M_VF"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_DB2025_TOT["DB2025_TOT"]
N_FB15995_ZC_BUSCAR_DIR["FB15995_ZC_BUSCAR_DIR"] --> N_FC15001_ZC_INT_TO_STRING["FC15001_ZC_INT_TO_STRING"]
```
## Puntos de entrada (OB)
| OB | Dependencias directas detectadas |
|---|---|
| `OB100_Startup` | `DB1_SYS` |
| `OB121_ProgrammingError` | Sin llamadas exportadas |
| `OB122_IO_AccessError` | Sin llamadas exportadas |
| `OB1_MAIN` | `FC50_MAIN` |
| `OB30_PID_100MS` | `DB2035_PID` |
| `OB40_HardwareInterrupt` | Sin llamadas exportadas |
| `OB80_TimeErrorInterrupt` | Sin llamadas exportadas |
| `OB83_PullOrPlugOfModules` | Sin llamadas exportadas |
| `OB86_RackOrStationFailure` | Sin llamadas exportadas |
## Notas de interpretación
- `OB1_MAIN` es la raíz cíclica y delega en `FC50_MAIN`.
- `FC50_MAIN` aplica el patrón de orquestador: sistema y dispositivos antes del programa de usuario; alarmas, parámetros, trazabilidad, informes y comunicaciones después.
- `OB30_PID_100MS` constituye una rama cíclica independiente para regulación PID determinista.
- Los OB de diagnóstico y arranque son raíces asíncronas disparadas por el sistema operativo de la CPU.
- Los DB y UDT aparecen como dependencias de datos; no deben interpretarse como llamadas ejecutables.
---
## Codigos para commits:
- **refactor**: Cambios en el código que no añaden funciones ni arreglan fallos, sino que mejoran su estructura interna.
@@ -19,4 +597,13 @@
- Ej: chore: limpia marcas de memoria sin utilizar en la tabla de variables
- **build**: / ci: Cambios en los archivos de configuración externos o de automatización.
- Ej: ci: modifica el archivo YAML para compilar ejecutables de Python
- Ej: ci: modifica el archivo YAML para compilar ejecutables de Python
El modificador crítico: Las paradas de planta (Breaking Changes)
En automatización industrial, hay modificaciones que son delicadas porque rompen la retrocompatibilidad: cambiar la estructura de un bloque de datos (DB) que obliga a reiniciarlo, alterar los pines de entrada/salida de un FB maestro, o modificar el hardware.
En Conventional Commits, esto se marca añadiendo un signo de exclamación ! justo antes de los dos puntos:
- feat!: modifica el DB de interfaz principal con el SCADA
- refactor!: cambia el tipo de dato de INT a REAL en la entrada del motor