Instructions TIA Portal

Opérations de Déplacement
Transfert & Gestion de Données

Le transfert de données est le système circulatoire de votre programme PLC. Gérez efficacement les copies de variables, la sérialisation de structures et les manipulations de blocs mémoire.

Que sont les opérations de déplacement dans TIA Portal ?

Les opérations de déplacement permettent de copier des données d'un emplacement mémoire à un autre. Elles vont de la simple copie d'une variable (MOVE) à la manipulation complexe de structures entières pour la communication (Serialize/Deserialize) ou la gestion de zones de données contiguës (MOVE_BLK).

TIA Portal offre des instructions modernes pour l'accès symbolique, la gestion dynamique via les types Variant, et des fonctions optimisées pour les Array DB, tout en conservant des instructions Legacy pour la compatibilité avec les anciens systèmes S7-300.

Transfert de Base

Instructions fondamentales de copie et de formatage

MOVE — Copier valeur

MOVE

Ce qu'il fait

Copie le contenu de l'entrée IN vers la sortie OUT. Si le type de données diffère, une conversion implicite peut avoir lieu si elle est sécurisée.

Quand l'utiliser

Initialiser des variables, copier des consignes IHM, ou transférer des résultats de calculs.

Conseils Pro

Vous pouvez ajouter plusieurs sorties (OUT1, OUT2...) pour copier une valeur vers plusieurs destinations simultanément.

En SCL, utilisez simplement l'affectation : destination := source;

Fonctionne avec presque tous les types de données (Bool, Int, Real, Struct, String).

Serialize / Deserialize

SER

Ce qu'ils font

Serialize convertit une structure complexe en un flux d'octets séquentiels (Array of Byte). Deserialize fait l'inverse.

Quand l'utiliser

Préparation de données pour l'envoi via protocoles de communication (TCP/IP, UDP) ou stockage compact.

Conseils Pro

Utilisez le paramètre POS pour suivre l'index de remplissage dans le tampon de destination.

Indispensable pour les échanges avec des systèmes tiers ne comprenant pas les UDT Siemens.

Assurez-vous que la taille du tampon est suffisante pour éviter les erreurs d'exécution.

SWAP — Permuter

SWAP

Ce qu'il fait

Inverse l'ordre des octets (Endianness) dans l'opérande IN.

Quand l'utiliser

Communication avec des périphériques utilisant le format 'Little-Endian' alors que le PLC utilise le 'Big-Endian'.

Conseils Pro

Généralement utilisé sur des types Word ou DWord.

Utile pour le traitement des données provenant de certains capteurs Modbus.

Peut être utilisé pour réorganiser des codes ASCII reçus à l'envers.

Déplacement de Blocs

Manipulation de zones mémoire massives et contiguës

MOVE_BLK / UMOVE_BLK

MOVE_BLK

Ce qu'il fait

Copie un nombre défini d'éléments d'un Array source vers un Array destination. UMOVE_BLK est la version non interruptible (atomique).

Quand l'utiliser

Gestion de buffers, archivage de données historiques, ou duplication de recettes de fabrication.

Conseils Pro

L'index de départ (COUNT) définit le nombre d'éléments à copier.

UMOVE_BLK garantit que les données ne sont pas modifiées par un OB d'alarme pendant la copie.

Les types de données source et destination doivent être identiques.

MOVE_BLK_VARIANT

Ce qu'il fait

Version avancée de MOVE_BLK supportant les types de données Variant pour un adressage flexible.

Quand l'utiliser

Développement de blocs de bibliothèque réutilisables travaillant sur des tableaux de tailles ou de types différents.

Conseils Pro

Permet de copier entre des tableaux dont les types sont déterminés à l'exécution.

Utilisez CountOfElements pour automatiser le paramètre COUNT.

Très puissant en S7-1500 pour la programmation générique.

Remplissage de Zone

Initialisation rapide de plages mémoire

FILL_BLK / UFILL_BLK

FILL

Ce qu'il fait

Remplit une zone mémoire (Array) avec une valeur unique spécifiée à l'entrée IN.

Quand l'utiliser

Réinitialiser un tableau de mesures à zéro, ou initialiser un buffer avec une valeur par défaut.

Conseils Pro

UFILL_BLK est préférable pour les zones critiques partagées avec des interruptions.

Beaucoup plus performant qu'une boucle FOR pour initialiser un grand tableau.

COUNT spécifie le nombre d'éléments à remplir à partir du pointeur spécifié.

Scatter / Gather

Décomposition et composition de bits

SCATTER / GATHER

Ce qu'ils font

SCATTER décompose un mot (Word, DWord...) en bits individuels vers une structure ou un tableau. GATHER fait l'inverse.

Quand l'utiliser

Extraction de bits d'état d'un mot de diagnostic ou composition d'un mot de commande à partir de bits de contrôle.

Conseils Pro

Remplace avantageusement une multitude d'accès aux bits (ex: %X0).

Disponible sur S7-1200 et S7-1500.

Garantit un code plus propre et plus facile à maintenir.

Accès aux Array DB

Lecture et écriture dans des blocs de données de type tableau

ReadFromArrayDB / WriteToArrayDB

Ce qu'ils font

Permettent de lire ou d'écrire un élément spécifique dans un bloc de données configuré comme 'Array DB'.

Quand l'utiliser

Gestion de grandes listes de données où l'indexation doit être dynamique et rapide.

Conseils Pro

Les versions 'L' (ex: ReadFromArrayDBL) accèdent à la mémoire de chargement (Load Memory) pour les données peu fréquentes.

L'utilisation d'Array DB est souvent plus performante que l'accès indexé classique.

Vérifiez que l'index est dans les bornes pour éviter une erreur d'accès.

Manipulation de Variant

Outils pour la programmation dynamique

VariantGet / VariantPut

Ce qu'ils font

VariantGet extrait la valeur d'une variable Variant vers une variable typée. VariantPut écrit une valeur typée dans une variable Variant.

Quand l'utiliser

Traitement de données dont le type exact n'est connu qu'au moment de l'appel du bloc.

Conseils Pro

Utilisez EQ_Type pour vérifier le type avant d'extraire la valeur.

Fondamental pour créer des fonctions de communication génériques.

CountOfElements retourne le nombre d'éléments si le Variant pointe vers un Array.

Bornes de Tableaux

Détermination dynamique des limites

LOWER_BOUND / UPPER_BOUND

Ce qu'il fait

Retourne la borne inférieure (LOWER) ou supérieure (UPPER) d'un tableau passé en paramètre Variant.

Quand l'utiliser

Boucler sur un tableau de taille inconnue (ex: Array[*] of MyUDT).

Conseils Pro

Indispensable pour l'écriture de boucles FOR robustes : FOR i := LOWER_BOUND(...) TO UPPER_BOUND(...) DO

Fonctionne aussi bien sur les tableaux à une qu'à plusieurs dimensions.

Le paramètre DIM spécifie la dimension souhaitée (1 par défaut).

Instructions Legacy

Compatibilité avec les anciens systèmes S7-300/400

Les instructions comme BLKMOV, FILL et FieldRead/FieldWrite sont conservées pour la compatibilité. Pour les nouveaux projets S7-1200/1500, privilégiez MOVE_BLK, FILL_BLK et les accès symboliques directs.

Comparaison des méthodes de copie

Choisir la bonne instruction de transfert

Vous devez...Instruction recommandéeExemple
Copier une variable simpleMOVEConsigne -> Actuel
Copier une zone mémoireMOVE_BLKTampon FIFO
Initialiser un tableauFILL_BLKReset défauts
Préparer un message TCPSerializeStructure -> Flux octets
Éclater un mot en bitsSCATTERDiagnostic mot -> structure
Accès dynamiqueVARIANTBloc bibliothèque universel

Foire Aux Questions

Quelle est la différence entre MOVE et MOVE_BLK ?

MOVE est destiné à copier une seule valeur ou une structure complète d'un coup. MOVE_BLK est optimisé pour copier une partie d'un tableau (un certain nombre d'éléments consécutifs).

Pourquoi utiliser UMOVE_BLK au lieu de MOVE_BLK ?

Le 'U' signifie Uninterruptible. Cette instruction garantit que l'opération de copie ne sera pas interrompue par un cycle d'alarme (OB prioritaires), assurant la cohérence totale des données copiées.

Quand utiliser Serialize et Deserialize ?

Ces instructions sont vitales lorsque vous devez envoyer des données structurées via des protocoles 'bruts' comme TSEND/TRCV ou vers des équipements tiers. Elles gèrent l'alignement des octets de manière standardisée.

MOVE_BLK fonctionne-t-il avec des adresses absolues (P#DB1.DBX0.0...) ?

Oui, mais TIA Portal encourage l'utilisation d'accès symboliques. Pour l'adressage absolu complexe, BLKMOV (Legacy) est encore utilisé, bien que MOVE_BLK_VARIANT soit la solution moderne recommandée.

Automatisez vos transferts de données

Décrivez votre besoin de manipulation de données et T-IA Connect générera les blocs MOVE et Serialize optimisés pour votre application.