Primera version
This commit is contained in:
@@ -0,0 +1,135 @@
|
||||
FUNCTION "FC17_ZC_GEST_ALM" : Void
|
||||
TITLE = FC17_ZC_GEST_ALM
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
AUTHOR : ABH
|
||||
FAMILY : ZeusControl
|
||||
VERSION : 1.0
|
||||
VAR_INPUT
|
||||
PrimerCiclo : Bool; // Marca de primer ciclo de arranque de la CPU
|
||||
FechaHora {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Fecha y hora actual
|
||||
Usuario : String; // Usuario actual
|
||||
PInt : Array[*] of "UDT_ZC_PINT"; // Array de parametro entero
|
||||
IndexTraza : Int; // Indice de texto parametro para trazabilidad
|
||||
END_VAR
|
||||
|
||||
VAR_IN_OUT
|
||||
ValorAnterior : Array[*] of Int; // Array de valores anteriores
|
||||
END_VAR
|
||||
|
||||
VAR_TEMP
|
||||
for_i : DInt; // Variable para bucles FOR
|
||||
t_IndiceSuperior : DInt; // Indice superior del array
|
||||
t_IndiceInferior : DInt; // Indice inferior del array
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
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:** DB Optimizado.
|
||||
|
||||
---
|
||||
### Descripción Funcional
|
||||
|
||||
Función principal para la gestión de trazabilidad de los parámetros **enteros** del proceso.
|
||||
|
||||
Su objetivo principal es detectar cambios de valor en el array de parámetros y lanzar un registro de traza cuando esto sucede.
|
||||
|
||||
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.
|
||||
|
||||
---
|
||||
### Dependencias Requeridas
|
||||
| Tipo | Elementos |
|
||||
|------|-----------|
|
||||
| FC | `FC8_ZC_TRAZA_REGISTRO` |
|
||||
| FB | - |
|
||||
| DB | - |
|
||||
| UDT | `UDT_ZC_PINT` |
|
||||
|
||||
---
|
||||
### Historial de Cambios
|
||||
| Versión | Fecha | Técnico | Cambios |
|
||||
|----------|------------|---------|---------|
|
||||
| 01.00.00 | 2026-03-20 | (ABH) | Primera version. |
|
||||
*)
|
||||
END_REGION DESCRIPCION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
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);
|
||||
|
||||
END_REGION CALCULO_LIMITES_ARRAY
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION PRIMER_ARRANQUE
|
||||
|
||||
// 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;
|
||||
|
||||
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
|
||||
|
||||
// En caso de detectar cambio de valor
|
||||
IF #PInt[#for_i].Valor <> #ValorAnterior[#for_i] 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);
|
||||
|
||||
// Actualizamos el valor anterior
|
||||
#ValorAnterior[#for_i] := #PInt[#for_i].Valor;
|
||||
|
||||
END_IF;
|
||||
|
||||
END_FOR;
|
||||
|
||||
END_REGION GESTION_PARAMETROS
|
||||
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user