chore: Reorganizacion de carpetas libreria.

This commit is contained in:
2026-07-21 16:55:53 +02:00
parent d551a132c0
commit 39d2a91866
496 changed files with 1268 additions and 32010 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
.vci/
PLC/.vci/
CommitReport/
Binary file not shown.
@@ -42,6 +42,40 @@ 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,3 +7,37 @@
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,6 +55,36 @@ 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,3 +7,33 @@
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,6 +44,8 @@ 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,3 +7,5 @@
es-ES: .
- id: MLC_5C3
es-ES: NO SE USA
- id: MLC_4Xv
es-ES: Alimentacion videoregistrador
@@ -53,6 +53,12 @@ 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,3 +7,9 @@
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,6 +59,24 @@ 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,3 +7,21 @@
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,6 +67,8 @@ 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,3 +7,5 @@
es-ES: .
- id: MLC_4u6
es-ES: NO SE USA
- id: MLC_3HZ
es-ES: B-401
@@ -47,6 +47,10 @@ 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,3 +7,7 @@
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,6 +57,8 @@ 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,3 +7,5 @@
es-ES: .
- id: MLC_5CL
es-ES: NO SE USA
- id: MLC_4WT
es-ES: Calentamiento
@@ -6,7 +6,10 @@
}
DATA_BLOCK DB6_ENTIDAD
VAR RETAIN
{ S7_Setpoint := "False" }
{
S7_MLC := "MLC_4LL";
S7_Setpoint := "False"
}
ENT : Array[0.._.N_MAX_ENTIDAD] of _.UDT_ZC_PRO_ENTIDAD;
END_VAR
@@ -41,6 +44,8 @@ DATA_BLOCK DB6_ENTIDAD
ENT[0].Alarma.R_Bool_8 := FALSE;
ENT[0].Dispositivo[1].Tipo := 0;
ENT[0].Dispositivo[1].Num := 0;
{ S7_MLC := "MLC_3Kt" }
ENT[0] := ();
ENT[1].Habilitar := TRUE;
ENT[1]."ID" := 1;
ENT[1].Asignacion := 0;
@@ -0,0 +1,5 @@
MultiLingualTexts:
- id: MLC_4LL
es-ES: .
- id: MLC_3Kt
es-ES: NO SE USA
@@ -0,0 +1,526 @@
{
S7_BlockNumber := "9";
S7_BlockTitle := "MLC_57G";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "0.1"
}
FUNCTION "FC9_DISPOSITIVOS" : Void
VAR_TEMP
for_i : Int;
t_N_MAX : Int;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3QX"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2020) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 15.1
Restricciones: PLC serie 1500
Nombre: GESTOR DE DISPOSITIVOS
Descripcion: Bloque de gestion de llamadas a las funciones de dispositivos y enclavamientos
Change log:
Version Fecha Tecnico a cargo
01.00.00 15.10.2020 (ABH) Primera version
01.00.01 20.04.2022 (ABH) Se cambian las llamadas a SCL para mejor gestion del tiempo de ciclo.
01.00.01 20.04.2022 (HCR) Se quita enclavamiento.
============================================================================
*)
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_45A"
}
NETWORK
// Traspaso de N_MAX a variable temporal para evitar fallos de compilacion
#t_N_MAX := "N_MAX_SCADA";
// Scada[x] - xxxxxxx
FOR #for_i := 1 TO #t_N_MAX DO
"DB2800_ED_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2801_EA_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2805_SD_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2806_SA_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2810_V_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2815_M_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2816_M_VF_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2817_M_SINA_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2825_TOT_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2835_PID_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2840_TQ_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2841_TQ_AE_MUX".Mux.Scada[#for_i].Habilitar := TRUE;
END_FOR;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4ba"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Yf"
}
NETWORK
// ==========================================================================================================
// Entrada Digital
// Traspaso de valores de entradas a los dispositivos configurados con tipo de acceso directo.
// Ejemplo: "DB2000_ED".ED[TAG].Estado_EntradaCanal := %I100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_V3"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3iH"
}
NETWORK
// ==========================================================================================================
// Entrada Analogica
// Traspaso de valores de entradas a los dispositivos configurados con tipo de acceso directo.
// Ejemplo: "DB2001_EA".EA[TAG].Estado_Lectura := %IW100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4CS"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3ci"
}
NETWORK
// ==========================================================================================================
// Salida Digital
// Traspaso de valores de salida de los dispositivos configurados con tipo de acceso directo.
// Ejemplo: %QW100.0 := "DB2005_SD".SD[TAG].Estado_Salida;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3hM"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_38F"
}
NETWORK
// ==========================================================================================================
// Salida Analogica
// Traspaso de valores de seguridad individual para cada dispositivo.
// Ejemplo: "DB2006_SA"".SA[TAG].Estado_SeguridadOk := NOT %I100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3HP"
}
NETWORK
// ==========================================================================================================
// Salida Analogica
// Traspaso de valores de salida de los dispositivos configurados con tipo de acceso directo.
// Ejemplo: %QW100.0 := "DB2006_SA".SA[TAG].Estado_ValorTarjeta;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_YM"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3Yw"
}
NETWORK
// ==========================================================================================================
// Valvula
// Traspaso de valores de entradas a los dispositivos configurados con tipo de acceso directo.
// Ejemplo: "DB2010_V".V[TAG].Estado_EntradaRetornoReposo := %IW100.0;
// Ejemplo: "DB2010_V".V[TAG].Estado_EntradaRetornoTrabajo := %IW100.1;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_36k"
}
NETWORK
// ==========================================================================================================
// Valvula
// Traspaso de valores de seguridad individual para cada dispositivo.
// Ejemplo: "DB2010_V".V[TAG].Estado_SeguridadOk := NOT %I100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3UP"
}
NETWORK
// ==========================================================================================================
// Valvula
// Traspaso de valores de salida de los dispositivos configurados con tipo de acceso directo.
// Ejemplo: %Q100.0 := "DB2010_V".V[TAG].Estado_Salida;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_xg"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4dQ"
}
NETWORK
// ==========================================================================================================
// Motor
// Traspaso de valores de entradas a los dispositivos configurados con tipo de acceso directo.
// Ejemplo: "DB2015_M".M[TAG].Estado_EntradaConfMarcha := %IW100.0;
// Ejemplo: "DB2015_M".M[TAG].Estado_EntradaTermico := %IW100.1;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_qM"
}
NETWORK
// ==========================================================================================================
// Motor
// Traspaso de valores de seguridad individual para cada dispositivo.
// Ejemplo: "DB2015_M".M[TAG].Estado_SeguridadOk := NOT %I100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_gL"
}
NETWORK
// ==========================================================================================================
// Motor
// Traspaso de valores de salida de los dispositivos configurados con tipo de acceso directo.
// Ejemplo: %Q100.0 := "DB2015_M".M[TAG].Estado_Salida;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_sr"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_Zs"
}
NETWORK
// ==========================================================================================================
// Motor variador
// Traspaso de valores de entradas a los dispositivos configurados con tipo de acceso directo.
// Ejemplo: "DB2016_M_VF".M_VF[TAG].Estado_EntradaRetornoReposo := %IW100.0;
// Ejemplo: "DB2016_M_VF".M_VF[TAG].Estado_EntradaRetornoTrabajo := %IW100.1;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_fF"
}
NETWORK
// ==========================================================================================================
// Motor variador
// Traspaso de valores de seguridad individual para cada dispositivo.
// Ejemplo: "DB2016_M_VF".M_VF[TAG].Estado_SeguridadOk := NOT %I100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4sf"
}
NETWORK
// ==========================================================================================================
// Motor variador
// Traspaso de valores de salida de los dispositivos configurados con tipo de acceso directo.
// Ejemplo: %Q100.0 := "DB2016_M_VF".M_VF[TAG].Estado_Salida;
// Ejemplo: %QW100 := "DB2016_M_VF".M_VF[1].Estado_ValorTarjeta;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3GK"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4cA"
}
NETWORK
// ==========================================================================================================
// Motor sinamics
// Traspaso de valores de entradas a los dispositivos configurados con tipo de acceso directo.
// Ejemplo: "DB2017_M_SINA".M_SINA[TAG].Estado_RetornoTermico := %IW100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_49Q"
}
NETWORK
// ==========================================================================================================
// Motor sinamics
// Traspaso de valores de seguridad individual para cada dispositivo.
// Ejemplo: "DB2017_M_SINA".M_SINA[TAG].Estado_SeguridadOk := NOT %I100.0;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Eg"
}
NETWORK
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3Jk"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_Ms"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4wV"
}
NETWORK
// ==========================================================================================================
// Tanque
// Llamada a bloque de control de tanque individual
// Ejemplo:
// "FC2940_ZC_TQ_INDV"(Pulso1seg:="DB1_SYS".Pulso1seg,
// Arranque:="DB1_SYS".ARRANQUE,
// EstadoBocaHombre:="DB2000_ED".ED[1].Estado_Activado,
// EstadoNivelBajo:="DB2000_ED".ED[1].Estado_Activado,
// EstadoNivelAlto:="DB2000_ED".ED[1].Estado_Activado,
// EstadoComOK:=TRUE,
// ValorNivelPresion:="DB2001_EA".EA[1].Estado_ValorIngenieria,
// ValorTemperatura:="DB2001_EA".EA[1].Estado_ValorIngenieria,
// HisteresisAltoNivelAgitacion:=10.0,
// HisteresisBajoNivelAgitacion:=10.0,
// HisteresisAltoNivelTemp:=10.0,
// HisteresisBajoNivelTemp:=10.0,
// TiempoTanqueVacio:=10,
// TiempoTanqueLLeno:=5,
// HabilitarFrecAgitacion:=TRUE,
// NumeroTanque:=1);
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4vZ"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Tu"
}
NETWORK
// ==========================================================================================================
// Tanque aire esteril
// Traspaso de valores de entradas y configuracion.
// Ejemplo:
// "DB2041_TQ_AE".TQ_AE[TAG].Estado_ValorPresion := "DB2001_EA".EA[TAG].Estado_ValorIngenieria;
// "DB2041_TQ_AE".TQ_AE[TAG].Config_PresionMaxTrabajo := PReal[3].Valor;
// "DB2041_TQ_AE".TQ_AE[TAG].Config_PresionMinTrabajo := PReal[4].Valor;
// "DB2041_TQ_AE".TQ_AE[TAG].Config_PresionMaxAlarma := PReal[5].Valor;
// "DB2041_TQ_AE".TQ_AE[TAG].Config_PresionMinAlarma := PReal[6].Valor;
// "DB2041_TQ_AE".TQ_AE[TAG].Tiempos_SetPointAlarmaMaxPresion := PInt[9].Valor;
// "DB2041_TQ_AE".TQ_AE[TAG].Tiempos_SetPointAlarmaMinPresion := PInt[10].Valor;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4hx"
}
NETWORK
// ==========================================================================================================
// Tanque aire esteril
// Traspaso de valores de salida.
// Ejemplo:
// IF "DB2041_TQ_AE".TQ_AE[TAG].Salida_ValvulaDucha THEN
// "DB2010_V".V[TAG].Orden_ActivarAuto := TRUE;
// END_IF;
// IF "DB2041_TQ_AE".TQ_AE[TAG].Salida_ValvulaEsteril THEN
// "DB2010_V".V[TAG].Orden_ActivarAuto := TRUE;
// END_IF;
// IF "DB2041_TQ_AE".TQ_AE[TAG].Salida_ValvulaVenteo THEN
// "DB2010_V".V[TAG].Orden_ActivarAuto := TRUE;
// END_IF;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_34u"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4GY"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_47v"
}
NETWORK
// ======================================================================================
// PID01 -
END_NETWORK
END_FUNCTION
@@ -0,0 +1,75 @@
MultiLingualTexts:
- id: MLC_57G
es-ES: GESTOR DE DISPOSITIVOS
- id: MLC_3QX
es-ES: DESCRIPCION
- id: MLC_45A
es-ES: Configuracion multiplexado
- id: MLC_4ba
es-ES: =============== ENTRADA DIGITAL
- id: MLC_4Yf
es-ES: Traspaso valores entradas
- id: MLC_V3
es-ES: =============== ENTRADA ANALOGICA
- id: MLC_3iH
es-ES: Traspaso valores entradas
- id: MLC_4CS
es-ES: =============== SALIDA DIGITAL
- id: MLC_3ci
es-ES: Traspaso valores salidas
- id: MLC_3hM
es-ES: =============== SALIDA ANALOGICA
- id: MLC_38F
es-ES: Seguridades
- id: MLC_3HP
es-ES: Traspaso valores salidas
- id: MLC_YM
es-ES: '=============== VALVULA '
- id: MLC_3Yw
es-ES: Traspaso valores entradas
- id: MLC_36k
es-ES: Seguridades
- id: MLC_3UP
es-ES: Traspaso valores salidas
- id: MLC_xg
es-ES: '=============== MOTOR '
- id: MLC_4dQ
es-ES: Traspaso valores entradas
- id: MLC_qM
es-ES: Seguridades
- id: MLC_gL
es-ES: Traspaso valores salidas
- id: MLC_sr
es-ES: =============== MOTOR VARIADOR
- id: MLC_Zs
es-ES: Traspaso valores entradas
- id: MLC_fF
es-ES: Seguridades
- id: MLC_4sf
es-ES: Traspaso valores salidas
- id: MLC_3GK
es-ES: =============== MOTOR SINAMICS
- id: MLC_4cA
es-ES: Traspaso valores entradas
- id: MLC_49Q
es-ES: Seguridades
- id: MLC_4Eg
es-ES: '=============== TQ '
- id: MLC_3Jk
es-ES: Gestion paro control temperatura
- id: MLC_Ms
es-ES: Tiempo maximo en estado limpio
- id: MLC_4wV
es-ES: Llamadas a tanques individuales
- id: MLC_4vZ
es-ES: =============== TQ Aire Esteril
- id: MLC_4Tu
es-ES: Traspaso valores entradas
- id: MLC_4hx
es-ES: Traspaso valores salidas
- id: MLC_34u
es-ES: =============== TOTALIZADOR
- id: MLC_4GY
es-ES: =============== MEDIAS
- id: MLC_47v
es-ES: =============== GESTION PID
@@ -1,564 +0,0 @@
{
S7_BlockNumber := "9";
S7_BlockTitle := "MLC_57G";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "0.1"
}
FUNCTION "FC9_GESTOR_DISPOSITIVOS" : Void
VAR_TEMP
for_i : Int;
t_N_MAX : Int;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3QX"
}
NETWORK
(*
============================================================================
ZEUS CONTROL, S.A.
(c)Copyright (2020) All Rights Reserved
-----------------------------------------------------------------------------
Software: TIA Portal 15.1
Restricciones: PLC serie 1500
Nombre: GESTOR DE DISPOSITIVOS
Descripcion: Bloque de gestion de llamadas a las funciones de dispositivos y enclavamientos
Change log:
Version Fecha Tecnico a cargo
01.00.00 15.10.2020 (ABH) Primera version
01.00.01 20.04.2022 (ABH) Se cambian las llamadas a SCL para mejor gestion del tiempo de ciclo.
01.00.01 20.04.2022 (HCR) Se quita enclavamiento.
============================================================================
*)
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_45A"
}
NETWORK
// Traspaso de N_MAX a variable temporal para evitar fallos de compilacion
#t_N_MAX := "N_MAX_SCADA";
// Scada[1] - xxxxxxx
FOR #for_i := 1 TO #t_N_MAX DO
"DB2800_ED_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2801_EA_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2805_SD_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2806_SA_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2810_V_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2815_M_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2816_M_VF_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2817_M_SINA_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2825_TOT_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2835_PID_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2840_TQ_MUX".Mux.Scada[#for_i].Habilitar :=
"DB2841_TQ_AE_MUX".Mux.Scada[#for_i].Habilitar := TRUE;
END_FOR;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4ba"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION LLAMADA_ED
// ====================================================================
// LLAMADA A MULTIPLEXADO ENTRADA DIGITAL
"FC2800_ZC_ED_MUX"("DB1_SYS".ARRANQUE);
// ====================================================================
// LLAMADA A CONTROL ENTRADA DIGITAL
"FC2000_ZC_ED"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_ED
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_V3"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION
REGION LLAMADA_EA
// ====================================================================
// LLAMADA A MULTIPLEXADO ENTRADA ANALOGICA
"FC2801_ZC_EA_MUX"("DB1_SYS".ARRANQUE);
// ====================================================================
// LLAMADA A CONTROL ENTRADA ANALOGICA
"FC2001_ZC_EA"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_EA
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4CS"
}
NETWORK
REGION LLAMADA_SD
// ====================================================================
// LLAMADA A MULTIPLEXADO SALIDA DIGITAL
"FC2805_ZC_SD_MUX"("DB1_SYS".ARRANQUE);
// ====================================================================
// LLAMADA A CONTROL SALIDA DIGITAL
"FC2005_ZC_SD"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := TRUE,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_SD
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3hM"
}
NETWORK
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION LLAMADA_SA
// ====================================================================
// LLAMADA A MULTIPLEXADO SALIDA ANALOGICA
"FC2806_ZC_SA_MUX"("DB1_SYS".ARRANQUE);
// ====================================================================
// LLAMADA A CONTROL SALIDA ANALOGICA
"FC2006_ZC_SA"(Ack := "DB1_SYS".ACK,
SeguridadesOK := TRUE,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_SA
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_SALIDAS
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_YM"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION LLAMADA_V
// ====================================================================
// LLAMADA A MULTIPLEXADO VALVULA
"FC2810_ZC_V_MUX"(Arranque:="DB1_SYS".ARRANQUE,
SeguridadesOK:=TRUE);
// ====================================================================
// LLAMADA A CONTROL VALVULA
"FC2010_ZC_V"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := TRUE,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_V
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_xg"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION LLAMADA_M
// ====================================================================
// LLAMADA A MULTIPLEXADO MOTOR
"FC2815_ZC_M_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOk := TRUE);
// ====================================================================
// LLAMADA A CONTROL MOTOR
"FC2015_ZC_M"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Ack := "DB1_SYS".ACK,
SeguridadesOK := TRUE,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_M
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_sr"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION LLAMADA_M_VF
// ====================================================================
// LLAMADA A MULTIPLEXADO MOTOR VARIADOR
"FC2816_ZC_M_VF_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOK := TRUE);
// ====================================================================
// LLAMADA A CONTROL MOTOR VARIADOR
"FC2016_ZC_M_VF"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := TRUE,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_M_VF
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3GK"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION SEGURIDADES
// ====================================================================
// SEGURIDADES
END_REGION SEGURIDADES
REGION LLAMADA_M_SINA
// ====================================================================
// LLAMADA A MULTIPLEXADO MOTOR VARIADOR
"FC2817_ZC_M_SINA_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOk := TRUE);
// ====================================================================
// LLAMADA A CONTROL MOTOR VARIADOR
"DB2717_INST_M_SINA"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := TRUE,
UsuarioActual:="DB1_SYS".Usuario.Actual,
FechaHoraActual:="DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_M_SINA
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4Eg"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3qV"
}
NETWORK
// ====================================================================
// LLAMADA A CONTROL TQ
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3TD"
}
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3Ts"
}
NETWORK
// ====================================================================
// TIEMPO MAXIMO ESTADO LIMPIO
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_sQ"
}
NETWORK
(* "FC2039_ZC_TQ"(Pulso1seg := "DB1_SYS".Pulso1seg,
Arranque := "DB1_SYS".ARRANQUE); *)
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4vZ"
}
NETWORK
REGION TRASPASO_VALORES_ENTRADAS
// Traspaso de valores de entradas solo a dispositivos configurados
END_REGION TRASPASO_VALORES_ENTRADAS
REGION LLAMADA_TQ_AE
// ====================================================================
// LLAMADA A MULTIPLEXADO TANQUE AIRE ESTERIL
"FC2841_ZC_TQ_AE_MUX"(Arranque := "DB1_SYS".ARRANQUE);
// ====================================================================
// LLAMADA A CONTROL TANQUE AIRE ESTERIL
"FC2041_ZC_TQ_AE"(Pulso1seg := "DB1_SYS".Pulso1seg,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK);
END_REGION LLAMADA_TQ_AE
REGION TRASPASO_VALORES_SALIDAS
// Traspaso de valores de salidas solo a dispositivos configurados
END_REGION
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_34u"
}
NETWORK
REGION LLAMADA_TOT
// ====================================================================
// LLAMADA A MULTIPLEXADO TANQUE AIRE ESTERIL
"FC2825_ZC_TOT_MUX"(Arranque := "DB1_SYS".ARRANQUE);
// ====================================================================
// LLAMADA A CONTROL TOTALIZADOR
"FC2025_ZC_TOT"(Pulso100ms := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE);
END_REGION LLAMADA_TOT
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3hX"
}
NETWORK
REGION LLAMADA_TEMP_FF
// ====================================================================
// LLAMADA A CONTROL FLIP FLOP
"FC2026_ZC_FF"("DB1_SYS".Pulso1seg);
// ====================================================================
// LLAMADA A CONTROL FLIP FLOP SECUENCIAL
"FC2027_ZC_FF_SEC"("DB1_SYS".Pulso1seg);
// ====================================================================
// LLAMADA A CONTROL TEMPORIZADORES
"FC2028_ZC_TEMP"("DB1_SYS".Pulso1seg);
END_REGION LLAMADA_TEMP_FF
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4GY"
}
NETWORK
REGION LLAMADA_MEDIA
// ====================================================================
// LLAMADA A MEDIA
"FC2037_ZC_MEDIA"(Pulso1seg:="DB1_SYS".Pulso1seg);
// ====================================================================
// LLAMADA A MEDIA VOLUMEN
"FC2038_ZC_MEDIA_VOL"(Pulso1seg := "DB1_SYS".Pulso1seg);
END_REGION LLAMADA_MEDIA
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_47v"
}
NETWORK
// ======================================================================================
// Gestion multiplexado
"FC2835_ZC_PID_MUX"("DB1_SYS".ARRANQUE);
// ======================================================================================
// PID01 -
END_NETWORK
END_FUNCTION
@@ -1,43 +0,0 @@
MultiLingualTexts:
- id: MLC_57G
es-ES: GESTOR DE DISPOSITIVOS
- id: MLC_3QX
es-ES: DESCRIPCION
- id: MLC_45A
es-ES: Configuracion multiplexado
- id: MLC_4ba
es-ES: =============== ENTRADA DIGITAL
- id: MLC_V3
es-ES: =============== ENTRADA ANALOGICA
- id: MLC_4CS
es-ES: =============== SALIDA DIGITAL
- id: MLC_3hM
es-ES: =============== SALIDA ANALOGICA
- id: MLC_YM
es-ES: '=============== VALVULA '
- id: MLC_xg
es-ES: '=============== MOTOR '
- id: MLC_sr
es-ES: =============== MOTOR VARIADOR
- id: MLC_3GK
es-ES: =============== MOTOR SINAMICS
- id: MLC_4Eg
es-ES: '=============== TQ '
- id: MLC_3qV
es-ES: Estado Comunicaciones Ok
- id: MLC_3TD
es-ES: Gestion paro control temperatura en funcion del modo de trabajo del circuito de las camisas
- id: MLC_3Ts
es-ES: Tiempo maximo en estado limpio
- id: MLC_sQ
es-ES: Llamada a bloque de funcion
- id: MLC_4vZ
es-ES: =============== TQ Aire Esteril
- id: MLC_34u
es-ES: =============== TOTALIZADOR
- id: MLC_3hX
es-ES: =============== TEMPORIZADORES Y FLIP FLOP
- id: MLC_4GY
es-ES: =============== MEDIAS
- id: MLC_47v
es-ES: =============== GESTION PID
@@ -0,0 +1,32 @@
{
S7_Author := "ABH";
S7_BlockNumber := "51";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
FUNCTION "FC55_PROGRAMA_USUARIO" : Void
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3ZS"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_zw"
}
NETWORK
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_h6"
}
NETWORK
END_NETWORK
END_FUNCTION
@@ -0,0 +1,7 @@
MultiLingualTexts:
- id: MLC_3ZS
es-ES: DESCRIPCION
- id: MLC_zw
es-ES: LLAMADAS A PROCESOS
- id: MLC_h6
es-ES: OTROS
-420
View File
@@ -1,420 +0,0 @@
{
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB1_MAIN"
VAR_TEMP
t_TiempoSP : Int;
t_LitrosSP : Real;
for_i : Int;
END_VAR
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_X4"
}
NETWORK
IF "_borrar".traza THEN
"FC8_ZC_TRZ_REGISTRO"(FechaHora:="DB1_SYS".FechaHoraActual,
Registrar:=1,
Categoria:="TRZ_CAT_32_USER",
User:="DB1_SYS".Usuario.Actual,
CodInt_1:="_borrar".codigo,
CodInt_2:=0,
CodInt_3:=0,
CodInt_4:=0,
CodInt_5:=0,
CodReal_1:=0.0,
CodReal_2:=0.0);
"_borrar".traza := false;
END_IF;
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3UH"
}
NETWORK
"FC1_ZC_SISTEMA"(CPU_MarcasCiclo := "Clock_Byte",
CPU_MarcasSistema := "System_Byte",
RedProfinet := "Local~PROFINET_IO-System");
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3FX"
}
NETWORK
RUNG wire#powerrail
"FC5_ZC_PROCESO"(
Pulso1Seg := "DB1_SYS".Pulso1seg,
Usuario := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual,
PrimerArranque := "DB1_SYS".ARRANQUE,
SeguridadOk := "_borrar".seguridadesok,
ComunicacionesOk := "_borrar".comunicacionesok,
HabilitacionErrores := TRUE,
HabilitacionErroresEntidades := TRUE,
HabilitacionErroresDispositivos := TRUE,
HabilitacionAbortarErrores := TRUE,
TiempoPulsadores := 2,
PRO := "_borrar".PROCESO
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4zA"
}
NETWORK
RUNG wire#powerrail
"FC9_GESTOR_DISPOSITIVOS"()
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_4W3"
}
NETWORK
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.Finalizado )
I_Contact( "_borrar".PROCESO.Estado.Enclavado )
Contact( "_borrar".seguridadesok )
Coil( "_borrar".PROCESO.Pulsadores.Marcha.Permiso )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_XX"
}
NETWORK
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.EnMarcha )
Coil( "_borrar".PROCESO.Pulsadores.Pausa.Permiso )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_hs"
}
NETWORK
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.Pausado )
Coil( "_borrar".PROCESO.Pulsadores.Reanudar.Permiso )
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4gi"
}
NETWORK
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.Pausado )
wire#w1
Coil( "_borrar".PROCESO.Pulsadores.Paro.Permiso )
END_RUNG
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.EnError )
END_RUNG wire#w1
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4Ge"
}
NETWORK
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.EnError )
Coil( "_borrar".PROCESO.Pulsadores.ResetErrores.Permiso )
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_RP"
}
NETWORK
"_borrar".PROCESO.Enclavamiento.Usuario[1] :=
"_borrar".PROCESO.Enclavamiento.Usuario[2] :=
"_borrar".PROCESO.Enclavamiento.Usuario[3] :=
"_borrar".PROCESO.Enclavamiento.Usuario[4] :=
"_borrar".PROCESO.Enclavamiento.Usuario[5] :=
"_borrar".PROCESO.Enclavamiento.Usuario[6] :=
"_borrar".PROCESO.Enclavamiento.Usuario[7] :=
"_borrar".PROCESO.Enclavamiento.Usuario[8] := FALSE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_rD"
}
NETWORK
RUNG wire#powerrail
Contact( "_borrar".PROCESO.Estado.Finalizado )
I_Contact( "_borrar".Enclavamiento )
S_Coil( "_borrar".PROCESO.Enclavamiento.Usuario[1] )
Move(
in := 20001,
out1 => "_borrar".PROCESO.Enclavamiento.Codigo
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3Fa"
}
NETWORK
"_borrar".PROCESO.Error.Usuario[1] :=
"_borrar".PROCESO.Error.Usuario[2] :=
"_borrar".PROCESO.Error.Usuario[3] :=
"_borrar".PROCESO.Error.Usuario[4] :=
"_borrar".PROCESO.Error.Usuario[5] :=
"_borrar".PROCESO.Error.Usuario[6] :=
"_borrar".PROCESO.Error.Usuario[7] :=
"_borrar".PROCESO.Error.Usuario[8] := FALSE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3tc"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
GE_Contact(
in1 := "_borrar".PROCESO.EtapaActual,
in2 := 5
)
Contact( "_borrar".Error )
S_Coil( "_borrar".PROCESO.Error.Usuario[1] )
Move(
in := 1,
out1 => "_borrar".PROCESO.Error.Codigo
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_3En"
}
NETWORK
"_borrar".PROCESO.Aviso.Usuario[1] :=
"_borrar".PROCESO.Aviso.Usuario[2] :=
"_borrar".PROCESO.Aviso.Usuario[3] :=
"_borrar".PROCESO.Aviso.Usuario[4] :=
"_borrar".PROCESO.Aviso.Usuario[5] :=
"_borrar".PROCESO.Aviso.Usuario[6] :=
"_borrar".PROCESO.Aviso.Usuario[7] :=
"_borrar".PROCESO.Aviso.Usuario[8] := FALSE;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_4GD"
}
NETWORK
RUNG wire#powerrail
Contact( "DB1_SYS"."ON" )
Contact( "_borrar".Aviso )
S_Coil( "_borrar".PROCESO.Aviso.Usuario[1] )
Move(
in := 10001,
out1 => "_borrar".PROCESO.Aviso.Codigo
)
END_RUNG
END_NETWORK
{
S7_Language := "SCL";
S7_NetworkTitle := "MLC_4LT"
}
NETWORK
//=====================================================================================
// Reset ventana de aviso
"_borrar".PROCESO.VentanaAviso.Mostrar := FALSE;
//=====================================================================================
// Nombre Proceso
//=====================================================================================
// ID Proceso
"_borrar".PROCESO.ID := 100;
//=====================================================================================
// Configuración secuencia
CASE "_borrar".PROCESO.EtapaActual OF
"FIN_PROCESO":
#t_TiempoSP := 1;
#t_LitrosSP := 0.0;
0:
#t_TiempoSP := 1;
#t_LitrosSP := 0.0;
1: //
#t_TiempoSP := 0;
#t_LitrosSP := 0.0;
5: //
#t_TiempoSP := 10;
#t_LitrosSP := 0.0;
10: //
#t_TiempoSP := 10;
#t_LitrosSP := 0.0;
ELSE
#t_TiempoSP := 1;
#t_LitrosSP := 0.0;
"_borrar".PROCESO.SaltoEtapa.CambioPosible := FALSE;
END_CASE;
//=====================================================================================
// Tiempo etapa y litros etapa
"_borrar".PROCESO.TiempoEtapa.SP := #t_TiempoSP;
"_borrar".PROCESO.LitrosEtapa.SP := #t_LitrosSP;
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_QE"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := "_borrar".PROCESO.EtapaActual,
in2 := 1
)
Contact( "_borrar".PROCESO.Aux.ErroresComprobados )
Contact( "_borrar".PROCESO.Aux.EntidadesCargadas )
Move(
in := 5,
out1 => "_borrar".PROCESO.EtapaSiguiente
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_3tR"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := "_borrar".PROCESO.EtapaActual,
in2 := 5
)
wire#w1
S_Coil( "_borrar".PROCESO.TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
Contact( "_borrar".PROCESO.TiempoEtapa.Cumplido )
Move(
in := 10,
out1 => "_borrar".PROCESO.EtapaSiguiente
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_Z8"
}
NETWORK
RUNG wire#powerrail
{ S7_Templates := "SrcType := Int" }
EQ_Contact(
in1 := "_borrar".PROCESO.EtapaActual,
in2 := 10
)
wire#w1
S_Coil( "_borrar".PROCESO.TiempoEtapa.Activar )
END_RUNG
RUNG wire#w1
Contact( "_borrar".PROCESO.TiempoEtapa.Cumplido )
Move(
in := "FIN_PROCESO",
out1 => "_borrar".PROCESO.EtapaSiguiente
)
END_RUNG
END_NETWORK
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
"FC15151_ZC_MARCHA_PARO_SEC"(
Pulso1Seg := "DB1_SYS".Pulso1seg,
Seguridad := "_borrar".Seguridad,
Marcha := "_borrar".Marcha,
MP_SEC := "_borrar".MP[0]
)
END_RUNG
RUNG wire#powerrail
"FC15151_ZC_MARCHA_PARO_SEC"(
Pulso1Seg := "DB1_SYS".Pulso1seg,
Seguridad := "_borrar".Seguridad,
Marcha := "_borrar".Marcha,
MP_SEC := "_borrar".MP[1]
)
END_RUNG
END_NETWORK
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
"FC2926_ZC_FF_INDV"(
Pulso1Seg := "DB1_SYS".Pulso1seg,
FF := "_borrar".FF_PARO
)
END_RUNG
END_NETWORK
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
"FC2927_ZC_FF_SEC_INDV"(
Pulso1Seg := "DB1_SYS".Pulso1seg,
FF_SEC := "_borrar".FF_SEC
)
END_RUNG
END_NETWORK
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_Rg"
}
NETWORK
RUNG wire#powerrail
"FC15_ZC_GEST_PREAL"(
PrimerCiclo := "DB1_SYS".ARRANQUE,
FechaHora := "DB1_SYS".FechaHoraActual,
Usuario := "DB1_SYS".Usuario.Actual,
PReal := "_borrar".PReal,
IndexTraza := 0,
ValorAnterior := "_borrar".PReal_ValorAnterior
)
"FC16_ZC_GEST_PINT"(
PrimerCiclo := "DB1_SYS".ARRANQUE,
FechaHora := "DB1_SYS".FechaHoraActual,
Usuario := "DB1_SYS".Usuario.Actual,
PInt := "_borrar".PInt,
IndexTraza := 0,
ValorAnterior := "_borrar".PInt_ValorAnterior
)
END_RUNG
END_NETWORK
{ S7_Language := "SCL" }
NETWORK
"FC7_ZC_TRZ_GESTOR"("DB1_SYS".Pulso1seg);
END_NETWORK
END_ORGANIZATION_BLOCK
-43
View File
@@ -1,43 +0,0 @@
MultiLingualTexts:
- id: MLC_X4
es-ES: Prueba traza usuario
- id: MLC_3UH
es-ES: Sistema
- id: MLC_3FX
es-ES: Llamada a gestor de procesos
- id: MLC_4zA
es-ES: Gesto de dispositivos
- id: MLC_3Bx
es-ES: =============== Permisos
- id: MLC_4W3
es-ES: Permiso Marcha
- id: MLC_XX
es-ES: Permiso Pausa
- id: MLC_hs
es-ES: Permiso Continuar
- id: MLC_4gi
es-ES: Permiso Paro
- id: MLC_4Ge
es-ES: Permiso Reset errores
- id: MLC_RP
es-ES: =============== Enclavamientos proceso
- id: MLC_rD
es-ES: 'Enclavamiento 1 - '
- id: MLC_3Fa
es-ES: =============== Alarmas proceso
- id: MLC_3tc
es-ES: Error 1 - Numero máximo intentos bomba envio
- id: MLC_3En
es-ES: =============== Avisos
- id: MLC_4GD
es-ES: 'Aviso 1 - '
- id: MLC_4LT
es-ES: Configuración secuencia
- id: MLC_QE
es-ES: =============== Etapa 1 - Iniciando
- id: MLC_3tR
es-ES: '=============== Etapa 5 - '
- id: MLC_Z8
es-ES: '=============== Etapa 10 - '
- id: MLC_Rg
es-ES: Parametros
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_Vf
es-ES: OB121_ProgrammingError
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_4gR
es-ES: OB122_IOAccessError
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_eF
es-ES: OB40_HardwareInterrupt
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_4H3
es-ES: OB80_TimeErrorInterrupt
@@ -1,16 +0,0 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_3EY";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
}
ORGANIZATION_BLOCK "OB82_DiagnosticErrorInterrupt"
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
END_ORGANIZATION_BLOCK
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_3EY
es-ES: OB82_DiagnosticErrorInterrupt
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_4gu
es-ES: OB83_PullOrPlugOfModules
@@ -1,3 +0,0 @@
MultiLingualTexts:
- id: MLC_45M
es-ES: OB86_RackOrStationFailure
@@ -1,15 +1,12 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_xQ";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB100_Startup"
VAR_TEMP
t_DummyInt : Int;
t_dummyInt : Int;
END_VAR
{
@@ -20,14 +17,9 @@ ORGANIZATION_BLOCK "OB100_Startup"
RUNG wire#powerrail
{ S7_Templates := "date_type := DTL" }
RD_LOC_T(
RET_VAL => #t_DummyInt,
RET_VAL => #t_dummyInt,
OUT => "DB1_SYS".FechaHoraNuevaManual
)
END_RUNG
END_NETWORK
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
END_RUNG
END_NETWORK
END_ORGANIZATION_BLOCK
@@ -1,5 +1,3 @@
MultiLingualTexts:
- id: MLC_xQ
es-ES: OB100_Startup
- id: MLC_3Ju
es-ES: Al arrancar, actualizamos la fecha y hora nueva para editar desde HMI/SCADA
@@ -1,11 +1,8 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_Vf";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB121_ProgrammingError"
{ S7_Language := "LAD" }
@@ -1,13 +1,10 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_4gR";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB122_IOAccessError"
ORGANIZATION_BLOCK "OB122_IO_AccessError"
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
@@ -1,11 +1,8 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_eF";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB40_HardwareInterrupt"
{ S7_Language := "LAD" }
@@ -1,11 +1,8 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_4H3";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB80_TimeErrorInterrupt"
{ S7_Language := "LAD" }
@@ -1,11 +1,8 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_4gu";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB83_PullOrPlugOfModules"
{ S7_Language := "LAD" }
@@ -1,11 +1,8 @@
{
S7_Author := "ABH";
S7_BlockTitle := "MLC_45M";
S7_Family := "ZeusControl";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "1.0"
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB86_RackOrStationFailure"
{ S7_Language := "LAD" }
@@ -0,0 +1,328 @@
{
S7_BlockNumber := "50";
S7_EditorMode := "SCL";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_Version := "0.1"
}
FUNCTION "FC50_MAIN" : Void
VAR_INPUT
{ S7_MLC := "MLC_3wR" }
CPU_MarcasCiclo : Byte;
{ S7_MLC := "MLC_3Se" }
CPU_MarcasSistema : Byte;
{ S7_MLC := "MLC_4gv" }
RedProfinet : HW_IOSYSTEM;
{ S7_MLC := "MLC_45H" }
SegGeneralDisp : Bool;
END_VAR
{ S7_Language := "SCL" }
NETWORK
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2026 - 2026
---
### Información del Sistema
| Hardware Compatible | Entorno de Ingeniería |
|---------------------|-----------------------|
| PLC serie 1200/1500 | TIA Portal 18 |
---
> **Restricciones:** Ninguna.
---
### Descripción Funcional
Función central para la organizacion de llamadas previas al programa de usuario.
En ella se realizan las siguientes acciones:
- Llamada a FC sistema.
- Llamada a gestor dispositivos
- Llamada a dispositivos
- Llamada a multiplexados
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 21.07.2026 | (ABH) | Primera version. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION PRE_PROGRAMA
// ==========================================================================================================
REGION SISTEMA
"FC1_ZC_SISTEMA"(CPU_MarcasCiclo := "Clock_Byte",
CPU_MarcasSistema := "System_Byte",
RedProfinet := "Local~PROFINET_IO-System");
END_REGION SISTEMA
// ==========================================================================================================
REGION DISPOSITIVOS
// ==========================================================================================================
REGION LLAMADA_GESTOR_DISPOSITIVOS
// Gestor dispositivos
"FC9_DISPOSITIVOS"();
END_REGION LLAMADA_GESTOR_DISPOSITIVOS
// ==========================================================================================================
REGION LLAMADA_ED
// Gestion multiplexado
"FC2800_ZC_ED_MUX"("DB1_SYS".ARRANQUE);
// Gestion dispositivo
"FC2000_ZC_ED"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_ED
// ==========================================================================================================
REGION LLAMADA_EA
// Gestion multiplexado
"FC2801_ZC_EA_MUX"("DB1_SYS".ARRANQUE);
// Gestion dispositivo
"FC2001_ZC_EA"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_EA
// ==========================================================================================================
REGION LLAMADA_SD
// Gestion multiplexado
"FC2805_ZC_SD_MUX"("DB1_SYS".ARRANQUE);
// Gestion dispositivo
"FC2005_ZC_SD"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := #SegGeneralDisp,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_SD
// ==========================================================================================================
REGION LLAMADA_SA
// Gestion multiplexado
"FC2806_ZC_SA_MUX"("DB1_SYS".ARRANQUE);
// Gestion dispositivo
"FC2006_ZC_SA"(Ack := "DB1_SYS".ACK,
SeguridadesOK := #SegGeneralDisp,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_SA
// ==========================================================================================================
REGION LLAMADA_V
// Gestion multiplexado
"FC2810_ZC_V_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOK := TRUE);
// Gestion dispositivo
"FC2010_ZC_V"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := #SegGeneralDisp,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_V
// ==========================================================================================================
REGION LLAMADA_M
// Gestion multiplexado
"FC2815_ZC_M_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOk := TRUE);
// Gestion dispositivo
"FC2015_ZC_M"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Ack := "DB1_SYS".ACK,
SeguridadesOK := #SegGeneralDisp,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_M
// ==========================================================================================================
REGION LLAMADA_M_VF
// Gestion multiplexado
"FC2816_ZC_M_VF_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOK := TRUE);
// Gestion dispositivo
"FC2016_ZC_M_VF"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := #SegGeneralDisp,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_M_VF
// ==========================================================================================================
REGION LLAMADA_M_SINA
// Gestion multiplexado
"FC2817_ZC_M_SINA_MUX"(Arranque := "DB1_SYS".ARRANQUE,
SeguridadesOk := TRUE);
// Gestion dispositivo
"DB2717_INST_M_SINA"(Pulso1seg := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK,
SeguridadesOK := #SegGeneralDisp,
UsuarioActual := "DB1_SYS".Usuario.Actual,
FechaHoraActual := "DB1_SYS".FechaHoraActual);
END_REGION LLAMADA_M_SINA
// ==========================================================================================================
REGION LLAMADA_TQ
// Gestion multiplexado
"FC2840_ZC_TQ_MUX"("DB1_SYS".ARRANQUE);
END_REGION LLAMADA_TQ
// ==========================================================================================================
REGION LLAMADA_TQ_AE
// Gestion multiplexado
"FC2841_ZC_TQ_AE_MUX"(Arranque := "DB1_SYS".ARRANQUE);
// Gestion dispositivo
"FC2041_ZC_TQ_AE"(Pulso1seg := "DB1_SYS".Pulso1seg,
Arranque := "DB1_SYS".ARRANQUE,
Ack := "DB1_SYS".ACK);
END_REGION LLAMADA_TQ_AE
// ==========================================================================================================
REGION LLAMADA_TOT
// Gestion multiplexado
"FC2825_ZC_TOT_MUX"(Arranque := "DB1_SYS".ARRANQUE);
// Gestion dispositivo
"FC2025_ZC_TOT"(Pulso100ms := "DB1_SYS".Pulso1seg,
Simulacion := "DB1_SYS".SIM,
Arranque := "DB1_SYS".ARRANQUE);
END_REGION LLAMADA_TOT
// ==========================================================================================================
REGION LLAMADA_TEMP_FF
// Gestion dispositivo
"FC2026_ZC_FF"("DB1_SYS".Pulso1seg);
// Gestion dispositivo
"FC2027_ZC_FF_SEC"("DB1_SYS".Pulso1seg);
// Gestion dispositivo
"FC2028_ZC_TEMP"("DB1_SYS".Pulso1seg);
END_REGION LLAMADA_TEMP_FF
// ==========================================================================================================
REGION LLAMADA_MEDIAS
// Gestion dispositivo
"FC2037_ZC_MEDIA"(Pulso1seg := "DB1_SYS".Pulso1seg);
// Gestion dispositivo
"FC2038_ZC_MEDIA_VOL"(Pulso1seg := "DB1_SYS".Pulso1seg);
END_REGION LLAMADA_MEDIAS
// ==========================================================================================================
REGION LLAMADA_PID
// Gestion multiplexado
"FC2835_ZC_PID_MUX"("DB1_SYS".ARRANQUE);
END_REGION LLAMADA_PID
END_REGION DISPOSITIVOS
END_REGION PRE_PROGRAMA
// ==========================================================================================================
REGION PROGRAMA_USUARIO
"FC55_PROGRAMA_USUARIO"();
END_REGION PROGRAMA_USUARIO
// ==========================================================================================================
REGION POST_PROGRAMA
END_REGION POST_PROGRAMA
END_NETWORK
END_FUNCTION
@@ -0,0 +1,9 @@
MultiLingualTexts:
- id: MLC_3wR
es-ES: Byte Marca de ciclo CPU
- id: MLC_3Se
es-ES: Byte Marcas de sistema
- id: MLC_4gv
es-ES: ID Profinet IO System
- id: MLC_45H
es-ES: Seguridad general dispositivos
@@ -0,0 +1,27 @@
{
S7_BlockTitle := "MLC_3ck";
S7_IECCheck := "TRUE";
S7_Optimized := "TRUE";
S7_PreferredLanguage := "LAD";
S7_Version := "0.1"
}
ORGANIZATION_BLOCK "OB1_MAIN"
VAR_TEMP
for_i : Int;
END_VAR
{
S7_Language := "LAD";
S7_NetworkTitle := "MLC_hY"
}
NETWORK
RUNG wire#powerrail
"FC50_MAIN"(
CPU_MarcasCiclo := "Clock_Byte",
CPU_MarcasSistema := "System_Byte",
RedProfinet := "Local~PROFINET_IO-System",
SegGeneralDisp := TRUE
)
END_RUNG
END_NETWORK
END_ORGANIZATION_BLOCK
@@ -0,0 +1,5 @@
MultiLingualTexts:
- id: MLC_3ck
es-ES: PRINCIPAL
- id: MLC_hY
es-ES: ===================== MAIN
@@ -1,192 +0,0 @@
{
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
@@ -1,17 +0,0 @@
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

Some files were not shown because too many files have changed in this diff Show More