Fecha y Hora
Lógica Temporal
Domine el reloj de su PLC. Desde el sellado de tiempo preciso de eventos hasta cálculos de tiempo complejos y conversiones de formato, controle cada milisegundo.
¿Por qué gestionar el tiempo en un PLC?
La gestión del tiempo es crucial para la automatización industrial. Permite el registro preciso de eventos de producción, la activación de tareas de mantenimiento programadas, el cálculo de los tiempos de ciclo de las máquinas y la sincronización de sistemas distribuidos a través de protocolos NTP.
Los PLC Siemens modernos ofrecen tipos de datos avanzados como DTL (Date and Time Long), que proporciona acceso directo a los componentes individuales (Año, Mes, Día, Hora) sin manipulación de bits compleja, simplificando enormemente la programación en comparación con los formatos DT heredados.
Lectura de Tiempo
Acceso a los relojes del sistema y local
T_CONV — Extracción de Tiempo del Sistema
T_CONVQué hace
Extrae componentes específicos de un valor de fecha/hora o convierte entre formatos. Es esencial para obtener horas/minutos legibles a partir de un sello de tiempo bruto.
Cuándo usarlo
Cuando necesite mostrar solo la hora en un HMI a partir de una etiqueta Date_And_Time completa.
Consejos Pro
Use T_CONV para convertir un TOD (Time_Of_Day) a un String para facilitar el registro.
Asegúrese de que los tipos de entrada y salida sean compatibles para evitar errores de desbordamiento.
En SCL, esta instrucción a menudo se maneja implícitamente mediante asignaciones simples.
RD_SYS_T — Leer Tiempo del Sistema
RD_SYS_TQué hace
Lee la hora actual del sistema de la CPU (UTC). A diferencia de RD_LOC_T, no incluye el horario de verano ni los desplazamientos de zona horaria.
Cuándo usarlo
Ideal para el registro interno donde se requiere una referencia de tiempo continua y sin saltos (evita problemas durante los cambios de horario de verano).
Consejos Pro
Use siempre UTC para el almacenamiento en bases de datos para garantizar la consistencia global.
La salida RET_VAL proporciona información de estado (por ejemplo, si el reloj está sincronizado).
Combine con RD_LOC_T si necesita mostrar tanto el tiempo 'Técnico' como el 'Humano'.
Aritmética
Cálculos sobre duraciones y sellos de tiempo
T_ADD — Sumar Tiempo
T_ADDQué hace
Suma una duración (Time o LTime) a un punto específico de fecha/hora. Maneja correctamente los desbordamientos de minutos, horas y días.
Cuándo usarlo
Cálculo de un tiempo de expiración o un punto de reinicio programado (por ejemplo, hora actual + 24 horas).
Consejos Pro
Muy útil para implementar watchdogs personalizados con duraciones dinámicas.
Use tipos LTime para precisión de nanosegundos en CPU S7-1500.
Si el resultado excede la fecha máxima (Año 2262), la CPU establece un estado de error.
T_DIFF — Diferencia de Tiempo
T_DIFFQué hace
Calcula la diferencia entre dos sellos de tiempo y devuelve el resultado como una duración (Time o LTime).
Cuándo usarlo
Medición de la duración exacta de un paso de proceso o cálculo del tiempo de actividad de una máquina.
Consejos Pro
Perfecto para cálculos de OEE (Efectividad Global del Equipo).
Restar una fecha mayor a una menor devuelve un valor de Time negativo.
En S7-1200/1500, use etiquetas DTL para acceder más fácilmente a los componentes de la diferencia.
Conversión
Cambios de formato y manejo de String
T_CONV — Conversión de DT a DTL
T_CONVQué hace
Convierte el formato heredado DATE_AND_TIME (8 bytes) al formato moderno DTL o viceversa.
Cuándo usarlo
Al conectar código heredado o bloques de comunicación con la nueva lógica optimizada de S7-1500.
Consejos Pro
Prefiera DTL para todos los proyectos nuevos para evitar la complejidad de BCD (Decimal Codificado en Binario).
La conversión a DTL le permite escribir 'MiTag.MONTH' directamente en su código.
Tenga cuidado con la precisión de milisegundos, que podría truncarse en algunos formatos.
DT_TO_STRING — Serialización de Tiempo
DT_TO_STRQué hace
Convierte un valor de fecha/hora en un formato String legible. STRING_TO_DT realiza la inversa.
Cuándo usarlo
Envío de sellos de tiempo a un archivo CSV en una tarjeta de memoria o comunicación con una web API.
Consejos Pro
La cadena de salida sigue el formato ISO 8601 (YYYY-MM-DD-HH:MM:SS.ms).
Use STRING_TO_DT para analizar fechas recibidas de una base de datos SQL externa.
Tenga en cuenta que las operaciones de String consumen más recursos de la CPU; úselas con moderación en bucles rápidos.
DATE_AND_TIME vs DTL
Elegir la estructura temporal adecuada
| Característica | DATE_AND_TIME (Heredado) | DTL (Moderno) |
|---|---|---|
| Tamaño | 8 Bytes | 12 Bytes |
| Codificación | BCD (Complejo de leer) | Enteros (Directamente legibles) |
| Acceso a Componentes | Requiere enmascaramiento de bits | Estructural (Tag.Month) |
| Rango | 1990 a 2089 | 1970 a 2262 |
| Soporte S7-1200/1500 | Solo compatibilidad | Nativo y Recomendado |
| Precisión | 10 ms | 1 Nanosegundo |
Preguntas Frecuentes
¿Cuál es la diferencia entre el Tiempo del Sistema y el Tiempo Local?
El Tiempo del Sistema (RD_SYS_T) es siempre UTC, lo que proporciona una referencia estable. El Tiempo Local (RD_LOC_T) se ajusta según su zona horaria específica y las reglas del horario de verano (DST) configuradas en las propiedades de la CPU.
¿Cómo sincronizar el reloj del PLC con un servidor?
Habilite NTP (Network Time Protocol) en la Configuración de Hardware de la CPU. Proporcione la IP de su servidor de tiempo y el PLC ajustará automáticamente su reloj interno.
¿Por qué mi DATE_AND_TIME muestra valores extraños en Hex?
El DT heredado utiliza codificación BCD. Un valor de 25 en Decimal se almacena como 16#25 en BCD. Utilice siempre instrucciones de conversión o DTL para leer los valores correctamente.
¿Puedo calcular la diferencia entre dos etiquetas DTL directamente?
En SCL, simplemente puede usar el operador '-' entre dos etiquetas DTL. TIA Portal llamará automáticamente a la instrucción T_DIFF por usted.