Primera version

This commit is contained in:
2026-07-14 10:21:52 +02:00
parent 273e2be076
commit 430e3b4db0
222 changed files with 176320 additions and 0 deletions
@@ -0,0 +1,63 @@
FUNCTION "FC15000_ZC_INT_TO_TIME" : Time
TITLE = FC15000_ZC_INT_TO_TIME
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : HCR
FAMILY : ZeusControl
VERSION : 1.0
//Funcion para conversion INT a TIME
VAR_INPUT
Valor : Int; // Valor INT
END_VAR
VAR CONSTANT
BASE_TIEMPO : Int := 1000; // Base de tiempo para conversion
END_VAR
BEGIN
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2023 - 2023
---
### 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 convertir tipo de dato INT a TIME.
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 10.05.2023 | (HCR) | Primera version. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION CALCULO
#FC15000_ZC_INT_TO_TIME := DINT_TO_TIME(IN := INT_TO_DINT(IN := #Valor)) * #BASE_TIEMPO;
END_REGION CALCULO
END_FUNCTION
@@ -0,0 +1,60 @@
FUNCTION "FC15001_ZC_INT_TO_STRING" : String
TITLE = FC15001_ZC_INT_TO_STRING
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : ABH
FAMILY : ZeusControl
VERSION : 1.0
//Funcion para convertir INT a STRING
VAR_INPUT
Valor : Int; // Valor INT
END_VAR
BEGIN
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2023 - 2023
---
### 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 convertir tipo de dato INT a STRING.
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 15.03.2023 | (ABH) | Primera version. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION CALCULO
#FC15001_ZC_INT_TO_STRING := DELETE(IN := INT_TO_STRING(#Valor), L := 1, P := 1);
END_REGION CALCULO
END_FUNCTION
@@ -0,0 +1,83 @@
FUNCTION "FC15003_ZC_REAL_TO_STRING" : String
TITLE = FC15003_ZC_REAL_TO_STRING
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : HCR
FAMILY : ZeusControl
VERSION : 1.1
//Funcion para convertir REAL a TRING
VAR_INPUT
Valor : Real; // Valor REAL
END_VAR
VAR_TEMP
t_String : String;
t_Posición : Int;
END_VAR
BEGIN
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2022 - 2023
---
### 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 convertir tipo de dato REAL a STRING.
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 15.10.2022 | (HCR) | Primera version. |
| 01.00.00 | 25.07.2023 | (ABH) | Cambio FC de Void a Funcion. Cambio en nombre de variables para estandarizacion. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION CALCULO
// Conversion de real a string
VAL_STRG(IN := #Valor,
SIZE := 10,
PREC := 1,
FORMAT := 16#0004,
P := 16,
OUT => #t_String);
// Se añade signo en base a valor
IF #Valor >= 0.0 THEN
#t_Posición := FIND(IN1 := #t_String, IN2 := '+');
END_IF;
IF #Valor < 0.0 THEN
#t_Posición := FIND(IN1 := #t_String, IN2 := '-');
END_IF;
// Borrado de caracteres antes del signo
#FC15003_ZC_REAL_TO_STRING := DELETE(IN := #t_String, L := #t_Posición - 1, P := 1);
END_REGION CALCULO
END_FUNCTION
@@ -0,0 +1,66 @@
FUNCTION "FC15005_ZC_DTL_TO_ZC_FECHA" : "UDT_ZC_FECHA"
TITLE = FC15005_ZC_DTL_TO_ZC_FECHA
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : ABH
FAMILY : ZeusControl
VERSION : 1.0
//Funcion para convertir tipo de datos DTL a tipo de datos ZC_FECHA
VAR_INPUT
FechaDTL {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL; // Fecha DTL a convertir
END_VAR
BEGIN
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2023 - 2023
---
### Información del Sistema
| Hardware Compatible | Entorno de Ingeniería |
|---------------------|-----------------------|
| PLC serie 1200/1500 | TIA Portal 18 |
---
> **Restricciones:** Ninguna.
---
### Descripción Funcional
Función para traspaso de datos en DTL a tipo de dato ZC_FECHA
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 03.11.2022 | (ABH) | Primera version. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION CALCULO
#FC15005_ZC_DTL_TO_ZC_FECHA.Ano := #FechaDTL.YEAR;
#FC15005_ZC_DTL_TO_ZC_FECHA.Mes := #FechaDTL.MONTH;
#FC15005_ZC_DTL_TO_ZC_FECHA.Dia := #FechaDTL.DAY;
#FC15005_ZC_DTL_TO_ZC_FECHA.Hora := #FechaDTL.HOUR;
#FC15005_ZC_DTL_TO_ZC_FECHA.Minuto := #FechaDTL.MINUTE;
#FC15005_ZC_DTL_TO_ZC_FECHA.Segundo := #FechaDTL.SECOND;
#FC15005_ZC_DTL_TO_ZC_FECHA.NanoSegundo := #FechaDTL.NANOSECOND;
#FC15005_ZC_DTL_TO_ZC_FECHA.DiaSemana := #FechaDTL.WEEKDAY;
END_REGION CALCULO
END_FUNCTION
@@ -0,0 +1,187 @@
FUNCTION "FC15006_ZC_DTL_TO_STRING" : String
TITLE = FC15006_ZC_DTL_TO_STRING
{ S7_Optimized_Access := 'TRUE' }
AUTHOR : ABH
FAMILY : ZeusControl
VERSION : 1.1
//Funcion para convertir DTL a STRING
VAR_INPUT
FechaDTL {InstructionName := 'DTL'; LibVersion := '1.0'} : DTL;
Formato : USInt; // 0= Fecha y hora / 1= Fecha / 2= hORA
END_VAR
VAR_TEMP
t_Ano : String[5];
t_Mes : String[3];
t_Dia : String[3];
t_Hora : String[3];
t_Minuto : String[3];
t_Segundo : String[3];
t_Nanosegundo : String[50];
END_VAR
BEGIN
REGION DESCRIPCION
(*
###### (C)Copyright ZeusControl 2019 - 2023
---
### 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 convertir tipo de dato DTL a String
---
### Dependencias Requeridas
| Tipo | Elementos |
|------|-----------|
| FC | - |
| FB | - |
| DB | - |
| UDT | - |
---
### Historial de Cambios
| Versión | Fecha | Técnico | Cambios |
|----------|------------|---------|---------|
| 01.00.00 | 10.09.2019 | (ABH) | Primera version. |
| 01.00.00 | 25.07.2023 | (ABH) | Se eliminan las variables temporales STRING, para concatenar directamente en el return de la funcion el texto deseado. |
*)
END_REGION DESCRIPCION
// ==========================================================================================================
REGION CALCULO
REGION GESTION_STRING
// Genero un String por cada elemento
#t_Ano := UINT_TO_STRING(#FechaDTL.YEAR);
#t_Mes := USINT_TO_STRING(#FechaDTL.MONTH);
#t_Dia := USINT_TO_STRING(#FechaDTL.DAY);
#t_Hora := USINT_TO_STRING(#FechaDTL.HOUR);
#t_Minuto := USINT_TO_STRING(#FechaDTL.MINUTE);
#t_Segundo := USINT_TO_STRING(#FechaDTL.SECOND);
#t_Nanosegundo := UDINT_TO_STRING(#FechaDTL.NANOSECOND);
// TRATAMIENTO DE LA FECHA
// Año
#t_Ano := DELETE(IN := #t_Ano, L := 1, P := 1);// Le borro el signo
// Mes
IF #FechaDTL.MONTH < 10 THEN
#t_Mes := DELETE(IN := #t_Mes, L := 1, P := 1);// Le borro el signo
#t_Mes := CONCAT(IN1 := '0', IN2 := #t_Mes);// Le añado un cero
ELSE
#t_Mes := DELETE(IN := #t_Mes, L := 1, P := 1);// Le borro el signo
END_IF;
// Dia
IF #FechaDTL.DAY < 10 THEN
#t_Dia := DELETE(IN := #t_Dia, L := 1, P := 1);// Le borro el signo
#t_Dia := CONCAT(IN1 := '0', IN2 := #t_Dia);// Le añado un cero
ELSE
#t_Dia := DELETE(IN := #t_Dia, L := 1, P := 1);// Le borro el signo
END_IF;
// TRATAMIENTO DE LA HORA
// Horas
IF #FechaDTL.HOUR < 10 THEN
#t_Hora := DELETE(IN := #t_Hora, L := 1, P := 1);// Le borro el signo
#t_Hora := CONCAT(IN1 := '0', IN2 := #t_Hora);// Le añado un cero
ELSE
#t_Hora := DELETE(IN := #t_Hora, L := 1, P := 1);// Le borro el signo
END_IF;
// Minutos
IF #FechaDTL.MINUTE < 10 THEN
#t_Minuto := DELETE(IN := #t_Minuto, L := 1, P := 1);// Le borro el signo
#t_Minuto := CONCAT(IN1 := '0', IN2 := #t_Minuto);// Le añado un cero
ELSE
#t_Minuto := DELETE(IN := #t_Minuto, L := 1, P := 1);// Le borro el signo
END_IF;
// Segundos
IF #FechaDTL.SECOND < 10 THEN
#t_Segundo := DELETE(IN := #t_Segundo, L := 1, P := 1);// Le borro el signo
#t_Segundo := CONCAT(IN1 := '0', IN2 := #t_Segundo);// Le añado un cero
ELSE
#t_Segundo := DELETE(IN := #t_Segundo, L := 1, P := 1);// Le borro el signo
END_IF;
// Nanosegundos
IF #FechaDTL.NANOSECOND < 10 THEN
#t_Nanosegundo := DELETE(IN := #t_Nanosegundo, L := 1, P := 1);// Le borro el signo
#t_Nanosegundo := LEFT(IN := CONCAT(IN1 := '0', IN2 := #t_Nanosegundo), L := 5);// Le añado un cero
ELSE
#t_Nanosegundo := LEFT(IN := DELETE(IN := #t_Nanosegundo, L := 1, P := 1), L := 5);// Le borro el signo
END_IF;
END_REGION GESTION_STRING
REGION SALIDAS
CASE #Formato OF
0: // Fecha y hora
#FC15006_ZC_DTL_TO_STRING := CONCAT(IN1 := #t_Dia,
IN2 := '/',
IN3 := #t_Mes,
IN4 := '/',
IN5 := #t_Ano,
IN6 := ' ',
IN7 := #t_Hora,
IN8 := ':',
IN9 := #t_Minuto,
IN10 := ':',
IN11 := #t_Segundo);
1: // Fecha
#FC15006_ZC_DTL_TO_STRING := CONCAT(IN1 := #t_Dia,
IN2 := '/',
IN3 := #t_Mes,
IN4 := '/',
IN5 := #t_Ano);
2: // Hora
#FC15006_ZC_DTL_TO_STRING := CONCAT(IN1 := #t_Hora,
IN2 := ':',
IN3 := #t_Minuto,
IN4 := ':',
IN5 := #t_Segundo);
3: // Fecha y hora (nanosegundo)
#FC15006_ZC_DTL_TO_STRING := CONCAT(IN1 := #t_Ano,
IN2 := #t_Mes,
IN3 := #t_Dia,
IN4 := #t_Hora,
IN5 := #t_Minuto,
IN6 := #t_Segundo,
IN7 := #t_Nanosegundo);
ELSE
#FC15006_ZC_DTL_TO_STRING := CONCAT(IN1 := #t_Dia,
IN2 := '/',
IN3 := #t_Mes,
IN4 := '/',
IN5 := #t_Ano,
IN6 := ' ',
IN7 := #t_Hora,
IN8 := ':',
IN9 := #t_Minuto,
IN10 := ':',
IN11 := #t_Segundo);
END_CASE;
END_REGION SALIDAS
END_REGION CALCULO
END_FUNCTION