Instructions TIA Portal

Date et Heure
Logique Temporelle

Maîtrisez l'horloge de votre automate. De l'horodatage précis d'événements aux calculs de temps complexes et conversions de formats, contrôlez chaque milliseconde.

Pourquoi gérer le temps dans un automate ?

La gestion du temps est cruciale pour l'automatisation industrielle. Elle permet l'archivage précis des événements de production, le déclenchement de tâches de maintenance planifiées, le calcul des temps de cycle machine et la synchronisation de systèmes distribués via des protocoles NTP.

Les automates Siemens modernes proposent des types de données avancés comme le DTL (Date and Time Long) qui offre un accès direct aux composants individuels (Année, Mois, Jour, Heure) sans manipulation de bits complexe, simplifiant grandement la programmation par rapport aux anciens formats DT.

Lecture

Accès aux horloges système et locale

T_CONV — Extraction Heure Système

T_CONV

Description

Extrait des composants spécifiques d'une valeur date/heure ou convertit entre formats. Essentiel pour obtenir des heures/minutes lisibles à partir d'un horodatage brut.

Usage courant

Lorsque vous devez afficher uniquement l'heure sur un IHM à partir d'une variable Date_And_Time complète.

Conseils d'expert

Utilisez T_CONV pour convertir un TOD (Time_Of_Day) en String pour un journal de bord.

Vérifiez la compatibilité des types d'entrée et de sortie pour éviter les erreurs de débordement.

En SCL, cette instruction est souvent gérée implicitement par de simples affectations.

RD_SYS_T — Lire l'heure système

RD_SYS_T

Description

Lit l'heure système actuelle du CPU (UTC). Contrairement à RD_LOC_T, elle n'inclut pas le passage à l'heure d'été ni les décalages de fuseau horaire.

Usage courant

Idéal pour l'horodatage interne (logging) où une référence temporelle continue et sans saut est requise.

Conseils d'expert

Utilisez toujours l'UTC pour le stockage en base de données pour garantir la cohérence globale.

La sortie RET_VAL donne des informations d'état (ex: si l'horloge est synchronisée).

Combinez avec RD_LOC_T si vous devez afficher à la fois l'heure 'Technique' et 'Humaine'.

Arithmétique

Calculs sur les durées et horodatages

T_ADD — Addition de durées

T_ADD

Description

Ajoute une durée (Time ou LTime) à un point temporel spécifique. Gère correctement les reports de minutes, heures et jours.

Usage courant

Calcul d'une heure d'expiration ou d'un point de redémarrage planifié (ex: heure actuelle + 24h).

Conseils d'expert

Très utile pour implémenter des watchdogs personnalisés avec des durées dynamiques.

Utilisez les types LTime pour une précision à la nanoseconde sur les CPU S7-1500.

Si le résultat dépasse la date maximale (Année 2262), le CPU définit un état d'erreur.

T_DIFF — Différence de temps

T_DIFF

Description

Calcule la différence entre deux horodatages et renvoie le résultat sous forme de durée (Time ou LTime).

Usage courant

Mesure de la durée exacte d'une étape de processus ou calcul du temps de fonctionnement d'une machine.

Conseils d'expert

Parfait pour les calculs de TRS (Taux de Rendement Synthétique).

Soustraire une date plus grande d'une plus petite renvoie une valeur Time négative.

Sur S7-1200/1500, utilisez des variables DTL pour accéder plus facilement aux composants du résultat.

Conversion

Changements de formats et chaînes de caractères

T_CONV — DATE_AND_TIME ↔ DTL

T_CONV

Description

Convertit l'ancien format DATE_AND_TIME (8 octets) vers le format moderne DTL ou inversement.

Usage courant

Lors de l'interfaçage de code hérité ou de blocs de communication avec une nouvelle logique optimisée S7-1500.

Conseils d'expert

Privilégiez le DTL pour tous les nouveaux projets pour éviter la complexité du BCD.

La conversion en DTL vous permet d'écrire 'MaVar.MONTH' directement dans votre code.

Attention à la précision des millisecondes qui peut être tronquée dans certains formats.

DT_TO_STRING — Sérialisation

DT_TO_STR

Description

Convertit une valeur date/heure en une chaîne de caractères lisible. STRING_TO_DT fait l'inverse.

Usage courant

Envoi d'horodatages vers un fichier CSV sur carte mémoire ou communication avec une API web.

Conseils d'expert

La chaîne de sortie suit le format ISO 8601 (AAAA-MM-JJ-HH:MM:SS.ms).

Utilisez STRING_TO_DT pour parser des dates reçues d'une base de données SQL externe.

Notez que les opérations sur les Strings sont gourmandes en CPU ; utilisez-les avec parcimonie.

DATE_AND_TIME vs DTL

Choisir la bonne structure temporelle

CaractéristiqueDATE_AND_TIME (Hérité)DTL (Moderne)
Taille8 Octets12 Octets
EncodageBCD (Difficile à lire)Entiers (Lecture directe)
Accès aux composantsNécessite des masques de bitsStructurel (Var.Mois)
Plage de dates1990 à 20891970 à 2262
Support S7-1200/1500Compatibilité uniquementNatif & Recommandé
Précision10 ms1 Nanoseconde

Questions Fréquentes (FAQ)

Quelle est la différence entre l'heure système et l'heure locale ?

L'heure système (RD_SYS_T) est toujours en UTC, offrant une référence stable. L'heure locale (RD_LOC_T) s'ajuste selon votre fuseau horaire et les règles d'heure d'été (DST) configurées dans le CPU.

Comment synchroniser l'horloge de l'automate avec un serveur ?

Activez le protocole NTP dans la configuration matérielle du CPU. Renseignez l'IP de votre serveur de temps, et l'automate ajustera automatiquement son horloge interne.

Pourquoi mon DATE_AND_TIME affiche des valeurs bizarres en Hexa ?

Le format DT utilise le codage BCD. Une valeur de 25 en Décimal est stockée comme 16#25 en BCD. Utilisez toujours les instructions de conversion ou le DTL pour lire les valeurs correctement.

Puis-je calculer la différence entre deux DTL directement ?

En SCL, vous pouvez simplement utiliser l'opérateur '-' entre deux variables DTL. TIA Portal appellera automatiquement l'instruction T_DIFF en arrière-plan.

Automatisez votre Gestion du Temps

Besoin de rapports de production horodatés ou de synchroniser 50 automates ? T-IA Connect automatise la génération de logique temporelle.