Primera version
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
FUNCTION "FC15026_ZC_PULSADOR" : Void
|
||||
TITLE = FC15026_ZC_PULSADOR
|
||||
{ S7_Optimized_Access := 'TRUE' }
|
||||
AUTHOR : ABH
|
||||
FAMILY : ZeusControl
|
||||
VERSION : 1.0
|
||||
//Funcion para gestion de pulsadores
|
||||
VAR_INPUT
|
||||
Pulso1Seg : Bool; // Pulso 1 segundo
|
||||
SP_Tiempo : Int; // Tiempo retardo pulsador
|
||||
TrazaCategoria : Int; // Categoria de la traza
|
||||
TrazaIdProceso : Int; // ID Proceso para trazabilidad
|
||||
TrazaIdPulsador : Int; // ID Pulsador para trazabilidad
|
||||
Usuario : String; // Usuario actual
|
||||
FechaHoraActual {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Fecha y hora actual
|
||||
END_VAR
|
||||
|
||||
VAR_IN_OUT
|
||||
Pulsador : "UDT_ZC_PULSADOR"; // Pulsador
|
||||
END_VAR
|
||||
|
||||
|
||||
BEGIN
|
||||
REGION DESCRIPCION
|
||||
(*
|
||||
###### (C)Copyright ZeusControl 2025 - 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 encargada de la gestión temporizada de los pulsadores virtuales provenientes del sistema HMI o sistema externo, integrando el registro automático de cada acción en el sistema de trazabilidad.
|
||||
|
||||
En ella se realizan las siguientes acciones:
|
||||
- Evalúa continuamente si existe una orden activa desde el HMI o desde sistema externo y si el pulsador dispone del permiso de ejecución necesario.
|
||||
- Incrementa un temporizador interno auxiliar mediante un pulso de un segundo hasta alcanzar el tiempo de retardo configurado.
|
||||
- Una vez superado el tiempo de retardo:
|
||||
- Registra el evento en el buffer invocando la función FC8_ZC_TRAZA_REGISTRO, asignando la categoría específica de pulsadores, el identificador, el usuario y la marca de tiempo.
|
||||
- Activa la señal de confirmación de orden hacia la lógica del PLC.
|
||||
- Resetea automáticamente la marca de activación del HMI.
|
||||
- Reinicia a cero el tiempo acumulado del pulsador en caso de perder el permiso de ejecución o si la orden del HMI se cancela antes de finalizar el temporizador.
|
||||
|
||||
---
|
||||
### Dependencias Requeridas
|
||||
| Tipo | Elementos |
|
||||
|------|-----------|
|
||||
| FC | `FC8_ZC_TRAZA_REGISTRO` |
|
||||
| FB | - |
|
||||
| DB | - |
|
||||
| UDT | `UDT_ZC_PULSADOR` |
|
||||
|
||||
---
|
||||
### Historial de Cambios
|
||||
| Versión | Fecha | Técnico | Cambios |
|
||||
|----------|------------|---------|---------|
|
||||
| 01.00.00 | 14.03.2025 | (ABH) | Primera version. |
|
||||
| 01.01.00 | 08.07.2026 | (ABH) | Se implementa orden externa. |
|
||||
*)
|
||||
END_REGION DESCRIPCION
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION GESTION_PULSADOR
|
||||
|
||||
// Reset orden PLC
|
||||
#Pulsador.Plc := FALSE;
|
||||
|
||||
// Con permiso y con la orden desde HMI, contamos el tiempo para activar la orden de PLC
|
||||
IF (#Pulsador.Hmi OR #Pulsador.Remoto) AND #Pulsador.Permiso THEN
|
||||
|
||||
IF #Pulso1Seg AND #Pulsador.AuxTiempo < #SP_Tiempo THEN
|
||||
#Pulsador.AuxTiempo += 1;
|
||||
END_IF;
|
||||
|
||||
IF #Pulsador.AuxTiempo >= #SP_Tiempo THEN
|
||||
|
||||
// Registramos la trazabilidad de la pulsacion del boton
|
||||
"FC8_ZC_TRZ_REGISTRO"(FechaHora := #FechaHoraActual,
|
||||
Registrar := 1,
|
||||
Categoria := #TrazaCategoria,
|
||||
User := #Usuario,
|
||||
CodInt_1 := #TrazaIdProceso,
|
||||
CodInt_2 := #TrazaIdPulsador,
|
||||
CodInt_3 := 0,
|
||||
CodInt_4:= 0,
|
||||
CodInt_5:= 0,
|
||||
CodReal_1 := 0.0,
|
||||
CodReal_2 := 0.0);
|
||||
|
||||
// Activacion de orden PLC y reset orden HMI
|
||||
#Pulsador.Plc := TRUE;
|
||||
#Pulsador.Hmi :=
|
||||
#Pulsador.Remoto := FALSE;
|
||||
|
||||
END_IF;
|
||||
|
||||
END_IF;
|
||||
|
||||
END_REGION GESTION_PULSADOR
|
||||
|
||||
|
||||
// ==========================================================================================================
|
||||
REGION RESET_DATOS
|
||||
|
||||
// Sin orden desde HMI o si no tenemos permiso, reseteamos el tiempo del pulsador
|
||||
IF (NOT #Pulsador.Hmi AND NOT #Pulsador.Remoto) OR NOT #Pulsador.Permiso THEN
|
||||
#Pulsador.AuxTiempo := 0;
|
||||
END_IF;
|
||||
|
||||
END_REGION RESET_DATOS
|
||||
|
||||
|
||||
END_FUNCTION
|
||||
|
||||
Reference in New Issue
Block a user