Description Les blocs "message" par défaut dans STEP 7/PCS7 (ALARM_S, ALARM_8P, ...) ne permettent pas de connexion de type de données "STRING" sur les paramètres in-out "SD.." pour les valeurs de message. Cet article montre néanmoins deux méthodes de transfert de chaîne de caractères (String) comme valeur de message. Une application peut par exemple transférer un message avec le code barre, le nom du matériel ou le nom de lot (SIMATIC BATCH) qui sont au format STRING. Dans l'exemple, les blocs sont créés en SCL.
Méthode 1 Cette section vous montre comment convertir une chaîne de caractères String en "ARRAY of CHAR" en utilisant la conversion de type implicite du pointeur ANY. L'avantage par rapport à la méthode conventionnelle utilisant "BLKMOV" (Methode 2) est la vitesse de traitement beaucoup plus élevée et la flexibilité de l'entrée ANY. Ceci signifie que des valeurs REAL, par exemple, peuvent encore être connectées en tant que valeurs de message.
Note
Les textes avec plus de 32 caractères ne sont pas transférables avec cette méthode.
Importer la source SCL fournie "FlexString.SCL" dans votre projet.
Dans SIMATIC Manager, ouvrir le dossier "Sources" du programme S7 ou celui de la librairie principale.
Sélectionner la fonction du menu "Importer > Source Externe ..." et sélectionner la source "FlexString.SCL" précédemment dézippée.
Assigner un numéro de FB libre pour le programme SCL directement dans le source ou utiliser la table des mnémoniques.
Sauvegarder et compiler la source.
2
Description du programme SCL Les fonctions suivantes sont implémentées dans le programme SCL :
Déclaration d'une entrée de type ANY qui est transférée au bloc Alarm_8P. Dans l'exemple ce sont les entrées "SD_Flex_01" et "SD_Flex_02". Vous pouvez définir des entrées supplémentaires pour les paramètres SD restants.
Déclaration de la structure pour la manipulation du pointeur ANY.
Fig 01: Déclaration de l'entrée et de la structure du pointeur
Si le type de donnée du pointeur est de type "STRING", celui-ci est modifié en "CHAR".
Le numéro de DB et l'octet d'adresse courante sont déterminés.
La longueur courante de la chaine (deuxième octet de l'en-tête de la chaine) est relue et est assignée au pointeur ANY comme facteur de répétition.
L'octet d'adresse courante du pointeur ANY est incrémenté de 2 octets afin de tronquer l'en-tête de la chaine. Les trois bits de poids faible décrivent l'adresse de bit, ils doivent de ce fait être pris en compte lors de l'addition.
Fig 02: Conversion du type de donnée "STRING" vers "CHAR"
Le pointeur ANY est transféré au paramètre des valeurs de message du bloc "Alarm_8P".
Fig 03: Transfert des valeurs de message
Note
Vous trouverez davantage d'informations sur les structures de donnée et le type de donnée des pointeurs ANY dans l'aide en ligne sous "Format des paramètres de type ANY".
3
Paramétrage des messages
Dans le menu contextuel du bloc, ouvrir "Propriété spécifique de l'objet > Messages ...".
Saisir le texte de message souhaité dans le champ "Texte du message". Insérer l'instruction au format "@1%s@" dans le texte du message afin d'avoir la valeur associée affichée dans le message.
Note
L'instruction au format "@1%s@" indique que la première valeur associée (1 = SD_1) de Type String (s = STRING) doit être affichée. Toutes les valeurs associées (SD1 à SD10) seront toujours transférées avec chaque message du bloc (SIG_1 à SIG_8).
Méthode 2
Cette section montre comment écrire une chaine de caractères String dans un "ARRAY of CHAR" en utilisant le bloc "BLKMOV" pour transférer le bloc message. L'avantage par rapport à la méthode 1 (1.Methode) est la mise en œuvre plus facile et la possibilité de transférer plus de 32 caractères.