feat: Se crea gestor alarmas. Se actualiza FC50_MAIN.
This commit is contained in:
@@ -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
|
||||
|
||||
-17
@@ -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
|
||||
|
||||
+3
-40
@@ -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
|
||||
|
||||
// =============================================================================
|
||||
|
||||
+10
@@ -52,15 +52,25 @@ FUNCTION_BLOCK "FB15170_ZC_CIP_FASES"
|
||||
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
|
||||
|
||||
|
||||
+156
-63
@@ -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
|
||||
|
||||
+19
-13
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user