▼
Scroll to page 2
of
344
SoMachine Basic EIO0000001475 12/2017 SoMachine Basic Guide de la bibliothèque des fonctions génériques EIO0000001475.08 12/2017 www.schneider-electric.com Le présent document comprend des descriptions générales et/ou des caractéristiques techniques des produits mentionnés. Il ne peut pas être utilisé pour définir ou déterminer l'adéquation ou la fiabilité de ces produits pour des applications utilisateur spécifiques. Il incombe à chaque utilisateur ou intégrateur de réaliser l'analyse de risques complète et appropriée, l'évaluation et le test des produits pour ce qui est de l'application à utiliser et de l'exécution de cette application. Ni la société Schneider Electric ni aucune de ses sociétés affiliées ou filiales ne peuvent être tenues pour responsables de la mauvaise utilisation des informations contenues dans le présent document. Si vous avez des suggestions, des améliorations ou des corrections à apporter à cette publication, veuillez nous en informer. Vous acceptez de ne pas reproduire, excepté pour votre propre usage à titre non commercial, tout ou partie de ce document et sur quelque support que ce soit sans l'accord écrit de Schneider Electric. Vous acceptez également de ne pas créer de liens hypertextes vers ce document ou son contenu. Schneider Electric ne concède aucun droit ni licence pour l'utilisation personnelle et non commerciale du document ou de son contenu, sinon une licence non exclusive pour une consultation « en l'état », à vos propres risques. Tous les autres droits sont réservés. Toutes les réglementations locales, régionales et nationales pertinentes doivent être respectées lors de l'installation et de l'utilisation de ce produit. Pour des raisons de sécurité et afin de garantir la conformité aux données système documentées, seul le fabricant est habilité à effectuer des réparations sur les composants. Lorsque des équipements sont utilisés pour des applications présentant des exigences techniques de sécurité, suivez les instructions appropriées. La non-utilisation du logiciel Schneider Electric ou d'un logiciel approuvé avec nos produits matériels peut entraîner des blessures, des dommages ou un fonctionnement incorrect. Le non-respect de cette consigne peut entraîner des lésions corporelles ou des dommages matériels. © 2017 Schneider Electric. Tous droits réservés. 2 EIO0000001475 12/2017 Table des matières Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation d'exemples de code source . . . . . . . . . . . . . . . . . . . . . . . . Blocs opération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Blocs comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 2 Objets langage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets bit mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets d'E/S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets mot double et flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets structurés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets indexés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets de bloc fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 3 Procédure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Traitement booléen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions booléennes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opérateurs de chargement (LD, LDN, LDR, LDF) . . . . . . . . . . . . . Opérateurs d'affectation (ST, STN, R, S) . . . . . . . . . . . . . . . . . . . . Opérateurs AND logiques (AND, ANDN, ANDR, ANDF) . . . . . . . . . . Opérateurs OR logiques (OR, ORN, ORR, ORF) . . . . . . . . . . . . . . . Opérateurs OR exclusifs (XOR, XORN, XORR, XORF). . . . . . . . . . . Opérateur NOT (N) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions montantes et descendantes (RISING, FALLING) . . . . . . . Instructions de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Traitement numérique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduction aux instructions numériques . . . . . . . . . . . . . . . . . . . . . . Instructions d'affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Affectation de chaînes de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Affectation de mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opérateurs arithmétiques sur des entrées . . . . . . . . . . . . . . . . . . . . . EIO0000001475 12/2017 9 13 19 20 23 27 29 30 31 33 36 41 46 50 53 55 56 57 60 62 64 66 68 71 72 74 76 77 78 79 81 83 3 3.3 3.4 3.5 3.6 3.7 4 Instructions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de décalage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruction de conversion BCD/binaire. . . . . . . . . . . . . . . . . . . . . . . . . Instructions de conversion de mot simple/double . . . . . . . . . . . . . . . . Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions NOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de saut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eléments conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eléments de boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de sous-programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Virgule flottante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions arithmétiques sur les objets à virgule flottante . . . . . . . . . Instructions trigonométriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de conversion d'angle . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de conversion d'entiers/nombres à virgule flottante . . . . . ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions ROUND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de conversion ASCII/entier . . . . . . . . . . . . . . . . . . . . . . . . Instructions de conversion entier/ASCII . . . . . . . . . . . . . . . . . . . . . . . . Instruction de conversion ASCII/valeur flottante . . . . . . . . . . . . . . . . . Instructions de conversion valeur flottante/ASCII . . . . . . . . . . . . . . . . Instructions de conversion ASCII/mot double . . . . . . . . . . . . . . . . . . . Instructions de conversion mot double/ASCII . . . . . . . . . . . . . . . . . . . Opérateurs de pile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instructions de pile (MPS, MRD, MPP) . . . . . . . . . . . . . . . . . . . . . . . . Instructions sur les tables d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . Affectation de tables de mots, mots doubles et valeurs flottantes . . . . Fonctions de sommation de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonction de comparaison de tables . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions de recherche dans une table . . . . . . . . . . . . . . . . . . . . . . . Fonctions de recherche de valeurs maximum et minimum dans des tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Nombre d'occurrences d'une valeur dans une table . . . . . . . . . . . . . . Fonctions de décalage circulaire dans une table . . . . . . . . . . . . . . . . . Fonctions de tri de table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions LKUP (interpolation de table à virgule flottante) . . . . . . . . . Fonctions MEAN des valeurs d'une table de valeurs flottantes . . . . . 87 89 91 93 94 95 97 98 100 102 104 106 107 110 112 113 115 116 118 120 122 124 126 128 130 130 132 133 135 137 139 141 143 144 146 147 152 EIO0000001475 12/2017 3.8 Instructions sur les objets d'E/S. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lecture immédiate d'entrée numérique intégrée (READ_IMM_IN) . . . Ecriture immédiate de sortie intégrée numérique (WRITE_IMM_OUT) Instruction de lecture immédiate de paramètre de bloc fonction (READ_IMM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instruction d'écriture immédiate de paramètre de bloc fonction (WRITE_IMM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 4 Objets d'E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Bloc fonction Fast Counter (%FC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fast Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Bloc fonction High Speed Counter (%HSC) . . . . . . . . . . . . . . . . . . . . High Speed Counter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Bloc fonction Pulse (%PLS). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pulse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Bloc fonction Pulse Width Modulation (%PWM) . . . . . . . . . . . . . . . . . Pulse Width Modulation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 5 Objets de réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets de réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 6 Objets logiciels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.1 Utilisation des blocs fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Principes de programmation des blocs fonction . . . . . . . . . . . . . . . . . Ajout d'un bloc fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration d'un bloc fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Timer (%TM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TON : Timer On-Delay. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TOF : Timer Off-Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TP : Pulse Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3 Counter (%C). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EIO0000001475 12/2017 153 154 156 158 159 161 162 162 163 163 164 164 165 165 167 167 169 170 171 174 176 177 178 179 181 183 185 186 187 188 190 193 5 6.4 Message (%MSG) et échange (EXCH) . . . . . . . . . . . . . . . . . . . . . . . . Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemples ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Requêtes et exemples Modbus standard. . . . . . . . . . . . . . . . . . . . . . . 6.5 LIFO/FIFO Register (%R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonction du registre LIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctionnement du registre FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.6 Drums (%DR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.7 Shift Bit Register (%SBR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.8 Step Counter (%SC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.9 Blocs horodateurs (%SCH) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmation et configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.10 Horloge (%RTC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.11 PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonction PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.12 Journalisation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Journalisation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.13 Etapes Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Etapes Grafcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 195 196 198 202 207 209 211 221 222 224 226 227 228 230 231 232 235 238 239 240 242 243 244 245 246 248 249 252 254 255 259 260 260 261 261 264 264 EIO0000001475 12/2017 Chapitre 7 Objets PTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1 Motion Task Table (%MT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Motion Task Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Bloc fonction Pulse Train Output (%PTO) . . . . . . . . . . . . . . . . . . . . . . Sortie à train d'impulsions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 8 Objets de variateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Objets de variateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 9 Objets de communication . . . . . . . . . . . . . . . . . . . . . . . . 9.1 Lecture de données depuis un équipement distant (%READ_VAR) . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Ecrire des données sur un équipement Modbus (%WRITE_VAR) . . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3 Lecture et écriture de données sur un équipement Modbus (%WRITE_READ_VAR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.4 Communication sur une liaison ASCII (%SEND_RECV_MSG). . . . . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 Send Receive SMS (%SEND_RECV_SMS) . . . . . . . . . . . . . . . . . . . . Description. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Configuration des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6 Chronogrammes des blocs fonction d'objet de communication. . . . . . Exemples de chronogrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 10 Fonctions définies par l'utilisateur. . . . . . . . . . . . . . . . . . Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 11 Blocs fonction définis par l'utilisateur . . . . . . . . . . . . . . . Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EIO0000001475 12/2017 265 266 266 267 267 269 269 271 272 273 277 280 281 282 284 288 289 290 293 296 297 298 301 304 305 306 314 320 320 323 323 325 325 7 Chapitre 12 Fonctions d'horloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions d'horloge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Horodatage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Réglage de la date et de l'heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 327 328 329 331 335 339 EIO0000001475 12/2017 Consignes de sécurité Informations importantes AVIS Lisez attentivement ces instructions et examinez le matériel pour vous familiariser avec l'appareil avant de tenter de l'installer, de le faire fonctionner, de le réparer ou d'assurer sa maintenance. Les messages spéciaux suivants que vous trouverez dans cette documentation ou sur l'appareil ont pour but de vous mettre en garde contre des risques potentiels ou d'attirer votre attention sur des informations qui clarifient ou simplifient une procédure. EIO0000001475 12/2017 9 REMARQUE IMPORTANTE L'installation, l'utilisation, la réparation et la maintenance des équipements électriques doivent être assurées par du personnel qualifié uniquement. Schneider Electric décline toute responsabilité quant aux conséquences de l'utilisation de ce matériel. Une personne qualifiée est une personne disposant de compétences et de connaissances dans le domaine de la construction, du fonctionnement et de l'installation des équipements électriques, et ayant suivi une formation en sécurité leur permettant d'identifier et d'éviter les risques encourus. AVANT DE COMMENCER N'utilisez pas ce produit sur les machines non pourvues de protection efficace du point de fonctionnement. L'absence de ce type de protection sur une machine présente un risque de blessures graves pour l'opérateur. AVERTISSEMENT EQUIPEMENT NON PROTEGE N'utilisez pas ce logiciel ni les automatismes associés sur des appareils non équipés de protection du point de fonctionnement. N'accédez pas aux machines pendant leur fonctionnement. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Cet automatisme et le logiciel associé permettent de commander des processus industriels divers. Le type ou le modèle d'automatisme approprié pour chaque application dépendra de facteurs tels que la fonction de commande requise, le degré de protection exigé, les méthodes de production, des conditions inhabituelles, la législation, etc. Dans certaines applications, plusieurs processeurs seront nécessaires, notamment lorsque la redondance de sauvegarde est requise. Vous seul, en tant que constructeur de machine ou intégrateur de système, pouvez connaître toutes les conditions et facteurs présents lors de la configuration, de l'exploitation et de la maintenance de la machine, et êtes donc en mesure de déterminer les équipements automatisés, ainsi que les sécurités et verrouillages associés qui peuvent être utilisés correctement. Lors du choix de l'automatisme et du système de commande, ainsi que du logiciel associé pour une application particulière, vous devez respecter les normes et réglementations locales et nationales en vigueur. Le document National Safety Council's Accident Prevention Manual (reconnu aux Etats-Unis) fournit également de nombreuses informations utiles. Dans certaines applications, telles que les machines d'emballage, une protection supplémentaire, comme celle du point de fonctionnement, doit être fournie pour l'opérateur. Elle est nécessaire si les mains ou d'autres parties du corps de l'opérateur peuvent entrer dans la zone de point de pincement ou d'autres zones dangereuses, risquant ainsi de provoquer des blessures graves. Les produits logiciels seuls, ne peuvent en aucun cas protéger les opérateurs contre d'éventuelles blessures. C'est pourquoi le logiciel ne doit pas remplacer la protection de point de fonctionnement ou s'y substituer. 10 EIO0000001475 12/2017 Avant de mettre l'équipement en service, assurez-vous que les dispositifs de sécurité et de verrouillage mécaniques et/ou électriques appropriés liés à la protection du point de fonctionnement ont été installés et sont opérationnels. Tous les dispositifs de sécurité et de verrouillage liés à la protection du point de fonctionnement doivent être coordonnés avec la programmation des équipements et logiciels d'automatisation associés. NOTE : La coordination des dispositifs de sécurité et de verrouillage mécaniques/électriques du point de fonctionnement n'entre pas dans le cadre de cette bibliothèque de blocs fonction, du Guide utilisateur système ou de toute autre mise en œuvre référencée dans la documentation. DEMARRAGE ET TEST Avant toute utilisation de l'équipement de commande électrique et des automatismes en vue d'un fonctionnement normal après installation, un technicien qualifié doit procéder à un test de démarrage afin de vérifier que l'équipement fonctionne correctement. Il est essentiel de planifier une telle vérification et d'accorder suffisamment de temps pour la réalisation de ce test dans sa totalité. AVERTISSEMENT RISQUES INHERENTS AU FONCTIONNEMENT DE L'EQUIPEMENT Assurez-vous que toutes les procédures d'installation et de configuration ont été respectées. Avant de réaliser les tests de fonctionnement, retirez tous les blocs ou autres cales temporaires utilisés pour le transport de tous les dispositifs composant le système. Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Effectuez tous les tests de démarrage recommandés dans la documentation de l'équipement. Conservez toute la documentation de l'équipement pour référence ultérieure. Les tests logiciels doivent être réalisés à la fois en environnement simulé et réel. Vérifiez que le système entier est exempt de tout court-circuit et mise à la terre temporaire non installée conformément aux réglementations locales (conformément au National Electrical Code des Etats-Unis, par exemple). Si des tests diélectriques sont nécessaires, suivez les recommandations figurant dans la documentation de l'équipement afin d'éviter de l'endommager accidentellement. Avant de mettre l'équipement sous tension : Enlevez les outils, les instruments de mesure et les débris éventuels présents sur l'équipement. Fermez le capot du boîtier de l'équipement. Retirez toutes les mises à la terre temporaires des câbles d'alimentation entrants. Effectuez tous les tests de démarrage recommandés par le fabricant. EIO0000001475 12/2017 11 FONCTIONNEMENT ET REGLAGES Les précautions suivantes sont extraites du document NEMA Standards Publication ICS 7.1-1995 (la version anglaise prévaut) : Malgré le soin apporté à la conception et à la fabrication de l'équipement ou au choix et à l'évaluation des composants, des risques subsistent en cas d'utilisation inappropriée de l'équipement. Il arrive parfois que l'équipement soit déréglé accidentellement, entraînant ainsi un fonctionnement non satisfaisant ou non sécurisé. Respectez toujours les instructions du fabricant pour effectuer les réglages fonctionnels. Les personnes ayant accès à ces réglages doivent connaître les instructions du fabricant de l'équipement et les machines utilisées avec l'équipement électrique. Seuls ces réglages fonctionnels, requis par l'opérateur, doivent lui être accessibles. L'accès aux autres commandes doit être limité afin d'empêcher les changements non autorisés des caractéristiques de fonctionnement. 12 EIO0000001475 12/2017 A propos de ce manuel Présentation Objectif du document Ce guide explique comment utiliser les blocs fonction et les instructions dans les programmes que vous créez avec le logiciel SoMachine Basic. Ces descriptions s'appliquent à tous les Logic Controller pris en charge par SoMachine Basic. Champ d'application Les informations présentées dans ce manuel ne concernent que les produits compatibles avec SoMachine Basic. Ce document a été actualisé pour le lancement de SoMachine Basic V1.6. Les caractéristiques techniques des équipements décrits dans ce document sont également fournies en ligne. Pour accéder à ces informations en ligne : Etape Action 1 Accédez à la page d'accueil de Schneider Electric www.schneider-electric.com. 2 Dans la zone Search, saisissez la référence d'un produit ou le nom d'une gamme de produits. N'insérez pas d'espaces dans la référence ou la gamme de produits. Pour obtenir des informations sur un ensemble de modules similaires, utilisez des astérisques (*). 3 Si vous avez saisi une référence, accédez aux résultats de recherche Product Datasheets et cliquez sur la référence qui vous intéresse. Si vous avez saisi une gamme de produits, accédez aux résultats de recherche Product Ranges et cliquez sur la gamme de produits qui vous intéresse. 4 Si plusieurs références s'affichent dans les résultats de recherche Products, cliquez sur la référence qui vous intéresse. 5 Selon la taille de l'écran, vous serez peut-être amené à faire défiler la page pour consulter la fiche technique. 6 Pour enregistrer ou imprimer une fiche technique au format .pdf, cliquez sur Download XXX product datasheet. Les caractéristiques présentées dans ce manuel devraient être identiques à celles fournies en ligne. Toutefois, en application de notre politique d'amélioration continue, nous pouvons être amenés à réviser le contenu du document afin de le rendre plus clair et plus précis. Si vous constatez une différence entre le manuel et les informations fournies en ligne, utilisez ces dernières en priorité. EIO0000001475 12/2017 13 Document(s) à consulter Titre de documentation Référence SoMachine Basic - Guide d'utilisation EIO0000001354 (ENG) EIO0000001355 (FRA) EIO0000001356 (GER) EIO0000001357 (SPA) EIO0000001358 (ITA) EIO0000001359 (CHS) EIO0000001366 (POR) EIO0000001367 (TUR) Modicon M221 Logic Controller - Guide de la bibliothèque des fonctions avancées EIO0000002007 (ENG) EIO0000002008 (FRE) EIO0000002009 (GER) EIO0000002010 (SPA) EIO0000002011 (ITA) EIO0000002012 (CHS) EIO0000002013 (POR) EIO0000002014 (TUR) Modicon M221 Logic Controller - Guide de programmation EIO0000001360 (ENG) EIO0000001361 (FRE) EIO0000001362 (GER) EIO0000001363 (SPA) EIO0000001364 (ITA) EIO0000001365 (CHS) EIO0000001369 (TUR) EIO0000001368 (POR) Modicon M221 Logic Controller - Guide de référence du matériel EIO0000001384 (ENG) EIO0000001385 (FRA) EIO0000001386 (GER) EIO0000001387 (SPA) EIO0000001388 (ITA) EIO0000001389 (CHS) EIO0000001370 (POR) EIO0000001371 (TUR) Vous pouvez télécharger ces publications et autres informations techniques depuis notre site web à l'adresse : http://www.schneider-electric.com/en/download 14 EIO0000001475 12/2017 Information spécifique au produit AVERTISSEMENT PERTE DE CONTROLE Le concepteur d'un système de commande doit envisager les modes de défaillance possibles des chemins de commande et, pour certaines fonctions de commande critiques, prévoir un moyen d'atteindre un état sécurisé en cas de défaillance d'un chemin, et après cette défaillance. Par exemple, l'arrêt d'urgence, l'arrêt en cas de surcourse, la coupure de courant et le redémarrage sont des fonctions de commande cruciales. Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de commande critiques. Les chemins de commande système peuvent inclure les liaisons de communication. Soyez particulièrement attentif aux implications des retards de transmission imprévus ou des pannes de liaison. Respectez toutes les réglementations de prévention des accidents ainsi que les consignes de sécurité locales.1 Chaque implémentation de cet équipement doit être testée individuellement et entièrement pour s'assurer du fonctionnement correct avant la mise en service. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 1 Pour plus d'informations, consultez le document NEMA ICS 1.1 (dernière édition), « Safety Guidelines for the Application, Installation, and Maintenance of Solid State Control » (Directives de sécurité pour l'application, l'installation et la maintenance de commande statique) et le document NEMA ICS 7.1 (dernière édition), « Safety Standards for Construction and Guide for Selection, Installation, and Operation of Adjustable-Speed Drive Systems » (Normes de sécurité relatives à la construction et manuel de sélection, installation et opération de variateurs de vitesse) ou son équivalent en vigueur dans votre pays. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT N'utilisez que le logiciel approuvé par Schneider Electric pour faire fonctionner cet équipement. Mettez à jour votre programme d'application chaque fois que vous modifiez la configuration matérielle physique. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. EIO0000001475 12/2017 15 Terminologie utilisée dans les normes Les termes techniques, la terminologie, les symboles et les descriptions correspondantes employés dans ce manuel ou figurant dans ou sur les produits proviennent généralement des normes internationales. Dans les domaines des systèmes de sécurité fonctionnelle, des variateurs et de l'automatisme en général, les termes employés sont sécurité, fonction de sécurité, état sécurisé, défaut, réinitialisation du défaut, dysfonctionnement, panne, erreur, message d'erreur, dangereux, etc. Entre autres, les normes concernées sont les suivantes : 16 Norme Description EN 61131-2:2007 Automates programmables - Partie 2 : exigences et essais des équipements ISO 13849-1:2008 Sécurité des machines - Parties des systèmes de commande relatives à la sécurité Principes généraux de conception EN 61496-1:2013 Sécurité des machines - Équipements de protection électro-sensibles Partie 1 : prescriptions générales et essais ISO 12100:2010 Sécurité des machines - Principes généraux de conception - Appréciation du risque et réduction du risque EN 60204-1:2006 Sécurité des machines - Équipement électrique des machines - Partie 1 : règles générales EN 1088:2008 ISO 14119:2013 Sécurité des machines - Dispositifs de verrouillage associés à des protecteurs Principes de conception et de choix ISO 13850:2006 Sécurité des machines - Fonction d'arrêt d'urgence - Principes de conception EN/IEC 62061:2005 Sécurité des machines - Sécurité fonctionnelle des systèmes de commande électrique, électronique et électronique programmable relatifs à la sécurité IEC 61508-1:2010 Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité - Exigences générales IEC 61508-2:2010 Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité - Exigences pour les systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité IEC 61508-3:2010 Sécurité fonctionnelle des systèmes électriques/électroniques/électroniques programmables relatifs à la sécurité - Exigences concernant les logiciels IEC 61784-3:2008 Communications numériques pour les systèmes de mesure et de commande - Bus de terrain de sécurité fonctionnelle 2006/42/EC Directive Machines 2014/30/EU Directive sur la compatibilité électromagnétique 2014/35/EU Directive sur les basses tensions EIO0000001475 12/2017 De plus, des termes peuvent être utilisés dans le présent document car ils proviennent d'autres normes telles que : Norme Description Série IEC 60034 Machines électriques rotatives Série IEC 61800 Entraînements électriques de puissance à vitesse variable Série IEC 61158 Communications numériques pour les systèmes de mesure et de commande Bus de terrain utilisés dans les systèmes de commande industriels Enfin, le terme zone de fonctionnement utilisé dans le contexte de la description de dangers spécifiques a la même signification que les termes zone dangereuse ou zone de danger employés dans la directive Machines (2006/42/EC) et la norme ISO 12100:2010. NOTE : Les normes susmentionnées peuvent s'appliquer ou pas aux produits cités dans la présente documentation. Pour plus d'informations sur chacune des normes applicables aux produits décrits dans le présent document, consultez les tableaux de caractéristiques de ces références de produit. EIO0000001475 12/2017 17 18 EIO0000001475 12/2017 SoMachine Basic Introduction EIO0000001475 12/2017 Chapitre 1 Introduction Introduction Présentation Ce chapitre explique comment utiliser les exemples de code source et les blocs requis pour exécuter de multiples exemples d'opérations et instructions d'affectation fournies dans ce document. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page Utilisation d'exemples de code source 20 Blocs opération 23 Blocs comparaison 27 EIO0000001475 12/2017 19 Introduction Utilisation d'exemples de code source Présentation Sauf mention contraire, les exemples de code source contenus dans ce manuel sont valides pour les deux langages de programmation LD (schéma à contacts) et IL (liste d'instructions). Un exemple complet peut néanmoins nécessiter plus d'un réseau. Procédure de réversibilité Pour obtenir le code LD équivalent, procédez comme suit : Etape 1 Action Sélectionnez et copiez (Ctrl+C) le code source du premier réseau de l'exemple de programme indiqué dans ce manuel. 2 Dans SoMachine Basic, créez un nouveau réseau en cliquant sur d'outils. dans la barre 3 Dans ce réseau, cliquez sur le bouton LD > IL pour afficher le code source IL. 4 Sélectionnez le numéro de ligne 0000, puis cliquez avec le bouton droit et sélectionnez Coller instructions pour coller le code source dans le réseau : NOTE : n'oubliez pas de supprimer l'instruction LD de la dernière ligne du réseau, si vous avez collé les instructions en insérant la ou les lignes avant l'opérateur LD par défaut. 20 5 Cliquez sur le bouton IL > LD pour afficher le code source LD. 6 Répétez les étapes précédentes pour les autres réseaux de l'exemple de programme. EIO0000001475 12/2017 Introduction Exemple Programme en langage IL : Réseau Code source 0 BLK %R0 LD %M1 I LD %I0.3 ANDN %R2.E O END_BLK 1 LD %I0.3 [%MW20:=%R2.O] 2 LD %I0.2 ANDN %R2.F [%R2.I:=%MW34] ST %M1 EIO0000001475 12/2017 21 Introduction Schéma à contacts (LD) correspondant : 22 EIO0000001475 12/2017 Introduction Blocs opération Insertion d'opérations et d'instructions d'affectation en langage Liste d'instructions dans des schémas à contacts Utilisez le symbole graphique Bloc opération pour insérer des opérations et instructions d'affectation en langage Liste d'instructions dans des réseaux en langage Schéma à contacts. Bloc opération à la fin d'un réseau. Bloc opération à un emplacement quelconque dans un réseau. Le symbole graphique Bloc opération peut être inséré en toute position d'un réseau Schéma à contacts, à l'exception de la première colonne, car cette dernière ne peut pas être utilisée comme premier contact d'un réseau. Si plusieurs symboles graphiques Bloc opération sont utilisés dans un réseau Schéma à contacts, ils doivent être placés en série. Les instructions Bloc opération ne peuvent pas être utilisées en parallèle. NOTE : Si l'application est configurée avec un niveau fonctionnel d'au moins Niveau 5.0 : Vous pouvez utiliser jusqu'à cinq opérandes et trois niveaux de parenthèses dans un bloc opération. Les types d'objet des opérandes doivent être identiques : mots avec mots, flottant avec flottant, etc. Au moins 20 mots mémoire (%MW) doivent être disponibles pour pouvoir utiliser plusieurs opérandes dans la tâche maître. Si vous utilisez également plusieurs opérandes dans une tâche périodique, 20 mots mémoire supplémentaires doivent être disponibles. Pour insérer un symbole graphique de bloc opération dans un réseau Schéma à contacts, effectuez les étapes suivantes : Etape Action 1 Cliquez sur le bouton Bloc opération 2 dans la barre d'outils. Cliquez n'importe où dans le réseau pour insérer le Bloc opération. 3 Cliquez sur le bouton Mode de sélection 4 dans la barre d'outils. Double-cliquez sur la ligne expression d'opération. apparaît à la fin de la ligne. Le bouton Modification de code intelligente (voir page 24) Cliquez sur ce bouton pour sélectionner une fonction en respectant la syntaxe de l'instruction. EIO0000001475 12/2017 23 Introduction Etape 5 Action Saisissez une opération IL ou une instruction d'affectation valide, puis appuyez sur ENTREE. Par exemple : %MF10 := ((SIN( %MF12 + 60.0 ) + COS( %MF13 )) + %MF10 ) + 1.2 Vous pouvez modifier l'expression en mode en ligne. Consultez la section Modifications en ligne. NOTE : Les expressions à plusieurs opérandes ne peuvent pas être utilisées dans les tâches d'événement. Syntaxe de l'instruction OPER L'instruction OPER correspond à un bloc opération placé à un emplacement quelconque dans un réseau. L'instruction OPER équivalente peut être utilisée directement dans des réseaux Liste d'instructions. OPER [ expression ], expression représentant toute expression valide, contenant jusqu'à cinq opérandes et trois niveaux de parenthèses. Par exemple : OPER [ %MF10 := ((SIN( %MF12 + 60.0 ) + COS( %MF13 )) + %MF10 ) + 1.2] Bulles d'aide Modification de code intelligente dans les schémas à contacts Pour vous aider à sélectionner des fonctions, SoMachine Basic affiche des bulles d'aide lorsque vous entrez des noms de fonction dans les blocs opération. Deux types de bulles d'aide sont proposés : Une liste de noms de fonction, mise à jour dynamiquement en fonction des noms commençant par les caractères saisis. Par exemple, la saisie de « AS » affiche ASCII_TO_FLOAT, ASCII_TO_INT et ASIN. Aide concernant la syntaxe d'une fonction, qui s'affiche lorsque vous tapez une parenthèse ouvrante. Par exemple, la saisie de « ABS( » affiche : 24 EIO0000001475 12/2017 Introduction Utilisation de l'Assistant Modification de code intelligente L'Assistant Modification de code intelligente s'affiche lorsque vous cliquez sur le bouton Modification de code intelligente dans la ligne d'expression de l'opérateur : Procédez comme suit : Etape Action 1 Eventuellement, filtrez la liste par catégorie de fonction : Tous les types ASCII Virgule flottante Objets d'E/S Virgule flottante Traitement numérique Table PID Fonction définie par l'utilisateur 2 Sélectionnez la fonction à ajouter à l'expression. 3 Cliquez sur Insérer la fonction. EIO0000001475 12/2017 25 Introduction Obtention d'aide sur la syntaxe Si la syntaxe de l'opération ou de l'instruction d'affectation en langage Liste d'instructions est incorrecte, la bordure du champ expression d'opération devient rouge. Pour obtenir de l'aide, procédez au choix comme suit : Placez le curseur de la souris sur la ligne expression d'opération. ou Sélectionnez Outils → Messages de programme. 26 EIO0000001475 12/2017 Introduction Blocs comparaison Insertion d'expressions de comparaison en langage Liste d'instructions dans des schémas à contacts Utilisez le symbole graphique Bloc comparaison pour insérer des expressions de comparaison en langage Liste d'instructions dans les réseaux en langage Schéma à contacts. Les types d'objet des opérandes doivent être identiques : mots avec mots, flottant avec flottant, etc. Procédez comme suit : Etape Action 1 Cliquez sur le bouton Bloc opération dans la barre d'outils. 2 Cliquez n'importe où dans le réseau pour insérer le Bloc comparaison. 3 Double-cliquez sur la ligne Expression de comparaison. 4 Saisissez une opération de comparaison IL valide et appuyez sur ENTREE. Vous pouvez modifier l'expression en mode en ligne. Consultez la section Modifications en ligne (voir SoMachine Basic, Guide d'utilisation). NOTE : Si l'application est configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) d'au moins Niveau 6.0 : Vous pouvez utiliser jusqu'à cinq opérandes et trois niveaux de parenthèses dans un bloc de comparaison. Au moins 20 mots mémoire (%MW) doivent être disponibles pour pouvoir utiliser plusieurs opérandes dans la tâche maître. Si vous utilisez également plusieurs opérandes dans une tâche périodique, 20 mots mémoire supplémentaires doivent être disponibles. NOTE : Les expressions à plusieurs opérandes ne peuvent pas être utilisées dans les tâches d'événement. Obtention d'aide sur la syntaxe Si la syntaxe de l'opération de comparaison en langage Liste d'instructions est incorrecte, la bordure du champ Expression de comparaison devient rouge. Pour obtenir de l'aide, procédez au choix comme suit : Placez le curseur de la souris sur la ligne Expression de comparaison. ou Sélectionnez Outils → Messages de programme. EIO0000001475 12/2017 27 Introduction 28 EIO0000001475 12/2017 SoMachine Basic Objets langage EIO0000001475 12/2017 Chapitre 2 Objets langage Objets langage Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page Objets 30 Objets bit mémoire 31 Objets d'E/S 33 Objets mot 36 Objets mot double et flottants 41 Objets structurés 46 Objets indexés 50 Objets de bloc fonction 53 EIO0000001475 12/2017 29 Objets langage Objets Présentation Dans SoMachine Basic, le terme objet représente une zone mémoire d'un Logic Controller réservée à l'usage d'une application. Exemples d'objets : Variables logicielles simples (bits et mots mémoire par exemple) Adresses d'entrées et de sorties numériques ou analogiques Variables internes du contrôleur (mots et bits système par exemple) Fonctions système ou blocs fonction prédéfinis (temporisateurs ou compteurs par exemple) La mémoire du contrôleur est soit pré-allouée à certains types d'objets, soit allouée automatiquement lorsqu'une application est téléchargée dans le Logic Controller. Les objets ne peuvent être adressés dans un programme qu'après allocation de mémoire. L'adressage des objets utilise le préfixe %. Par exemple, %MW12 est l'adresse d'un mot mémoire, %Q0.3 est l'adresse d'une sortie numérique intégrée et %TM0 est l'adresse d'un bloc fonction Timer. 30 EIO0000001475 12/2017 Objets langage Objets bit mémoire Introduction Les objets bit mémoire sont des variables logicielles binaires, qui peuvent être utilisées comme des opérandes et testées par des instructions booléennes. Exemples d'objets bit : Bits de mémoire Bits système Bits étape Bits extraits de mots Les objets valides sont compris entre 0 et la référence maximum utilisée dans votre application (consultez le guide de programmation de votre Logic Controller). Syntaxe Respectez la syntaxe suivante pour adresser des objets bit mémoire, système et d'étape : Le tableau suivant décrit les éléments de la syntaxe d'adressage : Groupe Elément Description Symbole % Une variable logicielle doit toujours débuter par un symbole de pourcentage (%). Type d'objet M Les bits mémoire stockent des valeurs intermédiaires pendant l'exécution d'un programme. S Les bits système donnent des informations d'état et de régulation concernant le contrôleur. X Les bits d'étape indiquent l'état des activités des étapes Grafcet. i L'identificateur de l'objet représentant leur instance séquentielle en mémoire. Le nombre maximum d'objets dépend du nombre d'objets configurés aux limites de la mémoire disponible. Pour connaître la quantité maximale de mémoire disponible, consultez le guide de programmation de votre Logic Controller. Identificateur d'instance d'objet Pour plus d'informations sur l'adressage des bits d'E/S, consultez la section Objets d'E/S (voir page 33). Pour plus d'informations sur l'adressage d'un bit extrait d'un mot, consultez la section Extraction d'un bit d'un objet mot (voir page 40). EIO0000001475 12/2017 31 Objets langage Description Ce tableau répertorie et décrit les bits mémoire, système et d'étape utilisés comme opérandes dans les instructions booléennes : Type Description Adresse ou valeur Accès en 0 ou 1 – écriture(1) Valeurs immédiates 0 ou 1 (False ou True) Mémoire %Mi Les bits mémoire sont des zones mémoire interne qui stockent des valeurs binaires. Remarque : les objets d'E/S inutilisés ne peuvent pas être utilisés comme des bits mémoire. Oui Système Les bits système %S0 à %S127 vous permettent de surveiller le bon fonctionnement du contrôleur ainsi que l'exécution correcte du programme de l'application, et de contrôler certaines fonctionnalités du système. %Si Dépend de i. %Xi Oui Etapes Grafcet Les bits %X1 à %Xi sont associés aux étapes Grafcet. Le bit d'étape Xi est à 1 lorsque l'étape correspondante est active et à l'état 0 lorsqu'elle est désactivée. (1) Ecrit par le programme ou à l'aide d'une table d'animation. Exemple Ce tableau présente quelques exemples d'adressage d'objets bit : 32 Objet bit Description %M25 Bit mémoire numéro 25 %S20 Bit système numéro 20 %X4 Etape Grafcet numéro 4 EIO0000001475 12/2017 Objets langage Objets d'E/S Introduction Les objets d'E/S contiennent des bits et des mots. Chaque entrée et sortie physique est mappée à ces objets dans la mémoire interne. Les objets bit d'E/S peuvent être utilisés comme des opérandes et testés à l'aide d'instructions booléennes. Les objets mot d'E/S sont utilisables dans la plupart des instructions non booléennes, comme les fonctions et les instructions contenant des opérateurs arithmétiques. Exemples d'objets d'E/S : Entrées numériques Sorties analogiques Entrées analogiques Sorties analogiques Entrées et sorties de communication La plage d'objets autorisés va de 0 à la valeur maximale configurée et prise en charge par votre contrôleur (consultez le guide de référence du matériel et le guide de programmation de votre Logic controller). Syntaxe Cette figure illustre le format d'adresse des entrées/sorties : Le tableau suivant décrit les composants du format d'adressage : Composant Elément Valeur Description Symbole % – Une adresse interne doit toujours débuter par le symbole de pourcentage (%). Type d'objet I – Entrée numérique (objet bit) Q – Sortie numérique (objet bit) IW – Valeur d'entrée analogique (objet mot) QW – Valeur de sortie analogique (objet mot) IWS – Etat de voie d'entrée analogique (objet mot) QWS – Etat de voie de sortie analogique (objet mot) (1) m est le nombre de modules locaux configurés (7 au maximum). (2) n est le nombre de modules distants configurés (n+7 au maximum). La position maximale a le numéro 14. (3) p correspond au numéro de la cartouche dans le contrôleur. q correspond au numéro de la voie sur la cartouche. EIO0000001475 12/2017 33 Objets langage Composant Elément Valeur Description Numéro de module y 0 Voie d'E/S intégrée sur le contrôleur logique, ou sur une cartouche insérée dans le contrôleur. 1 à m(1) Voie d'E/S sur un module d'extension connecté directement au contrôleur. m+1...n(2) Voie d'E/S sur un module d'extension connecté à l'aide de modules émetteur/récepteur TM3. 0 à 31 Numéro de la voie d'E/S sur le Logic Controller ou le module d'extension. Nombre de voies disponibles variable selon le modèle de Logic Controller ou le type du module d'extension. p0q(3) Voie d'E/S sur une cartouche insérée dans le contrôleur logique. Le nombre de voies disponibles dépend du type de cartouche. Numéro de voie z (1) m est le nombre de modules locaux configurés (7 au maximum). (2) n est le nombre de modules distants configurés (n+7 au maximum). La position maximale a le numéro 14. (3) p correspond au numéro de la cartouche dans le contrôleur. q correspond au numéro de la voie sur la cartouche. Description Ce tableau répertorie et décrit tous les objets d'E/S utilisés comme opérandes dans des instructions : Type Adresse ou valeur Accès en Bits d'entrée %Iy.z(2) Non(3) Bits de sortie %Qy.z(2) Oui Mot d'entrée %IWy.z(2) Non Mot de sortie %QWy.z(2) Oui Etat du mot d'entrée %IWSy.z(2) Non Etat du mot de sortie %QWSy.z(2) Non Description écriture(1) Ces bits sont des images logiques des états électriques des E/S numériques physiques. Ils sont stockés dans la mémoire des données et mis à jour entre chaque scrutation de la logique du programme. Ces objets mot contiennent la valeur analogique de la voie correspondante. Ces objets mot contiennent l'état de la voie analogique correspondante. (1) Ecrit par le programme ou à l'aide d'une table d'animation. (2) y est le numéro du module et z celui de la voie. Pour une description de y et z, reportez-vous à la syntaxe d'adressage des E/S (voir page 33). (3) Vous ne pouvez pas écrire de données dans les bits d'entrée, mais vous pouvez les forcer. 34 EIO0000001475 12/2017 Objets langage Exemples Ce tableau présente quelques exemples d'adressage des E/S : Objet d'E/S Description %I0.5 Voie d'entrée numérique 5 sur le contrôleur (E/S intégrées correspondant au module 0). %Q3.4 Voie de sortie numérique 4 sur le module d'extension à l'adresse 3 (E/S du module d'extension). %IW0.1 Entrée analogique 1 sur le contrôleur (E/S intégrée). %QW2.1 Sortie analogique 1 sur le module d'extension à l'adresse 2 (E/S du module d'extension). %IWS0.101 Etat de la voie d'entrée analogique 1 sur la première cartouche du contrôleur logique. %QWS1.1 Etat de la voie de sortie analogique 1 sur le module d'extension à l'adresse 1 (E/S du module d'extension). EIO0000001475 12/2017 35 Objets langage Objets mot Introduction Les objets mot adressés sous la forme de mots de 16 bits sont stockés dans la mémoire de données et peuvent contenir un entier compris entre -32 768 et 32 767 (sauf pour le bloc fonction Compteur rapide qui est compris entre 0 et 65 535). Exemples d'objets mot : Valeurs immédiates Mots mémoire (%MWi) Mots constants (%KWi) Mots d'échange E/S (%IWi, %QWi, %IWSi, %QWSi) Mots système (%SWi) Blocs fonction (données de configuration et/ou d'exécution) Les objets valides sont compris entre 0 et la référence maximum utilisée dans votre application (consultez le Guide de programmation de votre Logic Controller). Par exemple, si la référence maximale de votre application pour les mots mémoire est %MW9, l'espace alloué va de %MW0 à %MW9. Dans cet exemple, %MW10 n'est pas valide, et n'est pas accessible ni en interne ni en externe. Syntaxe Respectez la syntaxe suivante pour adresser des mots mémoire, constants et système : Le tableau suivant décrit les éléments de la syntaxe d'adressage : Groupe Elément Description Symbole % Une adresse interne doit toujours débuter par le symbole de pourcentage (%). Type d'objet M Les mots mémoire stockent des valeurs pendant l'exécution d'un programme. K Les mots constants permettent de stocker des valeurs constantes ou des messages alphanumériques. Leur contenu ne peut être écrit ou modifié qu'en utilisant SoMachine Basic. S Les mots système fournissent des informations d'état et de régulation concernant le contrôleur. W Mot de 16 bits. Format 36 EIO0000001475 12/2017 Objets langage Groupe Elément Description Identificateur d'instance d'objet i L'identificateur de l'objet représentant leur instance séquentielle en mémoire. Le nombre maximum d'objets dépend du nombre d'objets configurés aux limites de la mémoire disponible. Pour connaître la quantité maximale de mémoire disponible, consultez le guide de programmation de votre Logic Controller. Format Le contenu des mots ou des valeurs est stocké dans la mémoire utilisateur sous la forme d'un code binaire à 16 bits (complément de deux) selon la convention suivante : Pour les notations binaires signées, le bit 15 est attribué, par convention, au signe de la valeur codée : Le bit 15 est mis à 0 : le contenu du mot est une valeur positive. Le bit 15 est mis à 1 : le contenu du mot est une valeur négative (les valeurs négatives sont exprimées en logique de complément de deux). Les mots et les valeurs immédiates (consultez la section Liste des exceptions (voir page 38) pour les entiers non signés) peuvent être saisis ou récupérés au format suivant : Décimal Min. : -32 768, Max. : 32 767 (1579, par exemple) Hexadécimal Min. : 16#0000, Max. : 16#FFFF (par exemple, 16#A536) Autre syntaxe : #A536 Les règles du format ASCII sont les suivantes : La fonction lit toujours l'octet de poids fort en premier. Tout caractère ASCII en dehors de l'intervalle [0 - 9] ([16#30 - 16#39]) est considéré comme un caractère de fin, à l'exception du signe moins '-' (16#2D) lorsqu'il est placé comme premier caractère. En cas de débordement (> 32 767 ou < -32 768), le bit système %S18 (erreur détectée ou débordement arithmétique) est mis à 1 et la valeur 32 767 ou -32 768 est renvoyée. Si le premier caractère de l'opérande est un caractère de « fin », la valeur 0 est renvoyée et le bit %S18 est mis à 1. Par exemple, "HELLO" : %MW0:="HE" %MW1:="LL" %MW2:="O" EIO0000001475 12/2017 37 Objets langage Liste des exceptions Ce tableau répertorie les valeurs des objets qui sont des entiers non signés : Objet Valeur %SW 0 à 65 535 %FC.V et %FC.P 0 à 65 535 %FC.VD et %FC.PD 0 à 4 294 967 295 %HSC.V, %HSC.P, %HSC.S0, %HSC.S1 et %HSC.C 0 à 65 535 %HSC.DV, %HSC.PD, %HSC.S0D, %HSC.S1D et %HSC.CD 0 à 4 294 967 295 %HSC.T 100 à 1 000 %PWM.P 0 à 32 767 %PWM.R 0 à 100 %PLS.P 0 à 32 767 %PLS.N 0 à 32 767 %PLS.ND 0 à 2 147 483 647 Les objets ne figurant pas dans cette liste des exceptions ont les plages de valeurs suivantes : Mots : -32 768 à 32 767 Mots doubles : -2 147 483 648 à 2 147 483 647 Description Le tableau suivant décrit les objets mot : Mots Description Valeurs immédiates Il s'agit d'entiers dont le format est identique à celui des mots de 16 bits. Cela permet de leur attribuer des valeurs. Mémoire Adresse ou valeur Base 10 (décimal) -32 768 à 32 767 Base 16 (hexadécimal) 16#0000 à 16#FFFF Mots utilisés pour stocker des valeurs dans %MWi la mémoire de données au cours du fonctionnement. Accès en écriture(1) Non Oui (1) Ecrit par le programme ou à l'aide d'une table d'animation. 38 EIO0000001475 12/2017 Objets langage Mots Description Adresse ou valeur Constantes Stockent des constantes ou des messages %KWi alphanumériques. Leur contenu peut être écrit ou modifié avec SoMachine Basic en cours de configuration et en mode en ligne (voir SoMachine Basic, Guide d'utilisation). Oui, en cours de configuration et en mode en ligne, à partir des propriétés de mot constant Système Ces mots de 16 bits comportent plusieurs %SWi fonctions : Ils permettent l'accès aux données provenant directement du contrôleur par lecture des mots %SWi. Ils effectuent des opérations sur l'application (ajustement des blocs horodateur, par exemple). Dépend de i. Blocs fonction Ces mots correspondent aux paramètres ou aux valeurs courantes des blocs fonction. Oui %TM2.P, %Ci.P, etc. Accès en écriture(1) (voir SoMachine Basic, Guide d'utilisation). (1) Ecrit par le programme ou à l'aide d'une table d'animation. Le nombre maximum d'objets disponibles est déterminé par le Logic Controller. Pour plus d'informations sur le nombre maximum d'objets, consultez le guide de programmation de votre Logic Controller. Exemple Ce tableau présente quelques exemples d'adressage d'objets mot : Objet mot Description %MW15 Mot mémoire numéro 15 %KW26 Mot constant numéro 26 %SW30 Mot système numéro 30 EIO0000001475 12/2017 39 Objets langage Extraction des bits des objets mot Ce tableau indique comment extraire l'un des 16 bits des objets mot suivants : Objet mot Adresse ou valeur Accès en écriture(1) Mémoire %MWi:Xk Oui Système %SWi:Xk Dépend de i. Constant %KWi:Xk Non Valeur d'entrée %IWy.z:Xk(2) Non Valeur de la sortie %QWy.z:Xk(2) Oui Etat de l'entrée %IWSy.z:Xk(2) Non Etat de la sortie %QWSy.z:Xk(2) Oui (1) Ecrit par le programme ou à l'aide d'une table d'animation. (2) Pour plus d'informations sur les objets mot d'E/S, consultez la section Adressage d'objets d'E/S (voir page 33). Xk Indique le numéro du bit à extraire de l'objet mot. Par exemple, %MW0.X3 (le bit extrait est le bit stocké à la troisième position séquentielle du mot mémoire %MW0). 40 EIO0000001475 12/2017 Objets langage Objets mot double et flottants Introduction Un objet flottant est un nombre réel, c'est-à-dire un nombre avec une partie fractionnelle (par exemple : 3,4E+38, 2,3 ou 1,0). Un mot double est constitué de 4 octets stockés dans la mémoire des données et dont la valeur (complément de deux) est comprise entre -2 147 483 648 et +2 147 483 647. Tous les contrôleurs logiques ne prennent pas en charge les opérations sur les objets flottants et les objets mot double. Pour plus d'informations sur la compatibilité, consultez le guide de programmation de votre contrôleur logique. Format et valeur du mot flottant Le format flottant utilisé est celui de la norme IEEE 734-1985 (équivalente à la norme CEI 559). La longueur des mots est de 32 bits, ce qui correspond à des nombres à virgule flottante à une décimale. Le tableau ci-dessous décrit le format d'une valeur flottante : Bit 31 Bits {30 à 23} Bits {22 à 0} Signe de l'exposant Exposant Mantisse La précision de représentation est comprise entre 2 et 24 pour les nombres à virgule flottante. Il est inutile d'afficher plus de 6 chiffres après la virgule. NOTE : La valeur "1285" est interprétée comme une valeur entière. Pour qu'elle soit prise en compte comme une valeur à virgule flottante, elle doit être écrite comme suit : 1285,0. EIO0000001475 12/2017 41 Objets langage Plage limite des fonctions arithmétiques sur des objets flottants Le tableau suivant décrit la plage limite des fonctions arithmétiques sur des objets flottants : Fonction arithmétique Plage limite et opérations invalides Type Syntaxe NaN (Not a Number) Infinité Racine carrée d'un opérande SQRT(x) x<0 x> SQRT(3.402824E+38) est le nombre maximum pouvant être obtenu Puissance d'un entier par EXPT(y, x) un réel (où : EXPT(%MF,%MW) x^y = %MW^%MF) x < 0 et y = nombre fractionnaire X ^ Y > 3,402824E+38 Logarithme en base 10 LOG(x) x<0 Calcul possible jusqu'à l'obtension de la valeur maximale de x (3,402824E+38) Logarithme népérien LN(x) x<0 Aucune valeur maximale de x. LN(3.402824E+38) est le nombre maximum pouvant être obtenu Exponentiel naturel EXP(x) Pas de limite dans la plage réelle x > 88,72283 Si x < -103,973 le résultat est égal à 0 Contrôle de validité Le bit système %S18% est mis à 1 lorsque le résultat est hors de la plage valide. Le mot d'état %SW17% indique la cause d'une erreur détectée dans une opération flottante. Différents bits du mot %SW17 : %SW17:X0 Opération incorrecte, le résultat n'est pas un nombre (NAN). %SW17:X1 Réservé %SW17:X2 Division par 0, le résultat est incorrect (-Infinité ou +Infinité) %SW17:X3 Résultat supérieur en valeur absolue à +3,402824e+38 : le résultat est incorrect (-Infinité ou +Infinité) %SW17:X4 to X15 Réservé Ce mot est remis à 0 par le système après un démarrage à froid et par le programme à des fins de réutilisation. 42 EIO0000001475 12/2017 Objets langage Syntaxe L'adressage des objets flottants mémoire et constants doit respecter la syntaxe suivante : L'adressage des objets mot double mémoire et constant doit respecter la syntaxe suivante : Le tableau suivant décrit les éléments de la syntaxe d'adressage : Groupe Elément Description Symbole % Une adresse interne doit toujours débuter par le symbole de pourcentage (%). Type d'objet M Les objets mémoire permettent de stocker des valeurs intermédiaires pendant l'exécution d'un programme. K Les mots constants permettent de stocker des valeurs constantes ou des messages alphanumériques (uniquement pour les mots doubles). F Objet flottant 32 bits. D Objet mot double mot 32 bits. i L'identificateur représentant l'instance (position séquentielle) d'un objet en mémoire. Pour plus d'informations sur le nombre maximum d'objets, consultez le guide de programmation de votre contrôleur logique. Format Identificateur d'instance d'objet EIO0000001475 12/2017 43 Objets langage Description des objets flottants et mots doubles Le tableau suivant décrit les objets flottants et mot double : Type d'objet Description Adresse Accès en écriture Valeurs immédiates Entiers (mot double) ou décimaux (virgule flottante) dont le format est identique aux objets 32 bits. - Aucune Flottant mémoire Objets utilisés pour stocker des valeurs %MFi dans la mémoire des données lorsque le %MDi système est en cours d'exécution. Mot double mémoire Valeur constante flottante Permet de stocker les constantes. %KFi Oui Oui Oui, en cours de configuration et en mode en ligne, à partir des propriétés de mot constant (voir SoMachine Basic, Guide d'utilisation). Constante double %KDi Oui, en cours de configuration et en mode en ligne, à partir des propriétés de mot constant (voir SoMachine Basic, Guide d'utilisation). NOTE : Le contrôleur logique détermine le nombre maximum d'objets. Pour plus d'informations, consultez le guide de programmation de votre plate-forme matérielle. Exemple Le tableau suivant montre des exemples d'adressage d'objets flottants et mot double : 44 Objet Description %MF15 Objet flottant mémoire numéro 15 %KF26 Objet flottant constant numéro 26 %MD15 Mot double mémoire numéro 15 %KD26 Mot double constant numéro 26 EIO0000001475 12/2017 Objets langage Possibilité de recouvrement entre des objets Les mots de longueur simple, de longueur double et flottants sont stockés dans une zone mémoire de l'espace des données. Ainsi, le mot flottant %MFi et le mot double %MDi correspondent aux mots de longueur simple %MWi et %MWi+1 (le mot %MWi contenant les bits de poids faible et le mot %MWi+1 les bits de poids fort du mot %MFi). Ce tableau illustre le recouvrement des mots mémoire flottants et doubles : Objets flottants et doubles Adresse impaire Mots mémoire %MF1 / %MD1 %MW1 %MF3 / %MD3 %MW3 %MF0 / %MD0 %MW0 %MF2 / %MD2 %MW2 %MF4 / %MD4 %MW4 ... %MW5 %MFi / %MDi %MWi … ... %MFi+1 / %MDi+1 %MWi+1 Le tableau suivant illustre le recouvrement des objets constants flottants et doubles : Objets flottants et doubles Adresse impaire %KF0 / %KD0 %KF1 / %KD1 %KF2 / %KD2 %KW1 %KW2 %KF3 / %KD3 %KF4 / %KD4 %KW3 %KW4 ... … %KW5 ... %KFi / %KDi %KFi+1 / %KDi+1 Mots mémoire %KW0 %KWi %KWi+1 Exemple : %MF0 correspond à %MW0 et à %MW1. %KF43 correspond à %KW43 et à %KW44. EIO0000001475 12/2017 45 Objets langage Objets structurés Introduction Les objets structurés sont des ensembles formés par des objets adjacents. SoMachine Basic prend en charge les types d'objet structuré suivants : Chaînes de bits Tables de mots Tables de mots doubles Tables de mots flottants Chaînes de bits Les chaînes de bits sont composées d'une série de bits d'objets adjacents, de même type et de longueur (L) définie. Elles sont référencées par les limites des octets. Exemple : chaîne de bits %M8:6 NOTE : %M8:6 est valide (car 8 est un multiple de 8), alors que %M10:16 ne l'est pas (10 n'est pas un multiple de 8). Les chaînes de bits peuvent être utilisées avec l'instruction d'affectation (voir page 62). 46 EIO0000001475 12/2017 Objets langage Types de bit disponibles Types de bit disponibles pour les chaînes de bits : Type Adresse Accès en écriture Bits d'entrée numérique %I0.0:L ou %I1.0:L (1) Non Bits de sortie numérique %Q0.0:L ou %Q1.0:L (1) Oui Bits système %Si:L "i" étant un multiple de 8 En fonction de i Bits d'étape Grafcet %Xi:L "i" étant un multiple de 8 Oui (via le programme) Bits mémoire %Mi:L "i" étant un multiple de 8 Oui (1) Seuls les bits d'E/S de 0 à 16 peuvent être lus dans une chaîne de bits. Pour les Logic Controller avec 24 ou 32 voies d'E/S, les bits supérieurs à 16 sont illisibles dans une chaîne de bits. L Représente la longueur des objets structurés (chaînes de bits, table de mots, table de mots doubles et table de mots flottants). Le nombre de bits est déterminé par le Logic Controller. Pour plus d'informations, consultez le Guide de programmation de votre plate-forme matérielle. Tables de mots Les tables de mots sont composées d'une série de mots adjacents de même type et de longueur (L) définie (255 au maximum). Exemple : table de mots %KW10:7 Les tables de mots peuvent être utilisées avec l'instruction d'affectation (voir page 62). EIO0000001475 12/2017 47 Objets langage Types de mot disponibles Types de mot disponibles pour les tables de mots : Type Adresse Accès en écriture Mots mémoire %MWi:L Oui Mots constants %KWi:L Non Mots système %SWi:L En fonction de i Le nombre de mots est déterminé par le Logic Controller. Pour plus d'informations, consultez le Guide de programmation de votre plate-forme matérielle. Tables de mots doubles Les tables de mots doubles sont composées d'une série de mots adjacents de même type et de longueur (L) définie (255 au maximum). Exemple : table de mots doubles %KD10:7 Les tables de mots doubles peuvent être utilisées avec l'instruction d'affectation (voir page 62). Types de mot double disponibles Types de mot disponibles pour les tables de mots doubles : 48 Type Adresse Accès en écriture Mots mémoire %MDi:L Oui Mots constants %KDi:L Non EIO0000001475 12/2017 Objets langage Tables de mots flottants Les tables de mots flottants sont composées d'une série de mots adjacents de même type et de longueur (L) définie (255 au maximum). Exemple : table de mots flottants %KF10:7 Les tables de mots flottants peuvent être utilisées avec l'instruction d'affectation (voir page 62). Types de mot flottant disponibles Types de mot disponibles pour les tables de mots flottants : Type Adresse Accès en écriture Mots mémoire %MFi:L Oui Mots constants %KFi:L Non EIO0000001475 12/2017 49 Objets langage Objets indexés Introduction Un objet indexé est un mot simple, un mot double ou un objet à virgule flottante, dont l'adresse est indexée. Il existe deux types d'adressage d'objet : Adressage direct Adressage indexé Adressage direct L'adresse directe d'un objet est définie lors de l'écriture du programme. Exemple : %M26 est un bit mémoire dont l'adresse directe est 26. Adressage indexé L'adresse indexée d'un objet permet de modifier l'adresse de cet objet en lui ajoutant un index. Le contenu de l'index est ajouté à l'adresse directe de l'objet. Cet index est défini par un mot mémoire %MWi. Exemple : %MW108[%MW2] est un mot dont l'adresse est composée de l'adresse directe 108 et du contenu du mot %MW2. Si la valeur du mot %MW2 est 12, écrire des données dans %MW108[%MW2] équivaut à écrire dans %MW120 (108 + 12). 50 EIO0000001475 12/2017 Objets langage Objets disponibles pour l'adressage indexé Ce tableau décrit les types d'objets disponibles pour l'adressage indexé : Type Adresse Accès en écriture Mots mémoire %MWi[MWj] Oui Mots constants %KWi[%MWj] Non Mots mémoire doubles %MDi[MWj] Oui Mots doubles constants %KDi[%MWj] Non Mots mémoire flottants %MFi[MWj] Oui Mots flottants constants %KFi[%MWj] Non i j Identificateur représentant l'instance (position séquentielle) d'un objet dans la mémoire. Pour plus d'informations sur le nombre maximum d'objets, consultez le guide de programmation de votre Logic Controller. Identificateur de l'objet d'index dont le contenu doit être ajouté à l'adresse directe d'un autre objet. Les objets indexés sont utilisables avec l'instruction d'affectation (voir page 78) et dans les instructions de comparaison (voir page 74). Ce type d'adressage permet de scruter un ensemble d'objets de même type (tels que des mots mémoire ou constants) successivement, en modifiant le contenu de l'objet indexé dans le programme. EIO0000001475 12/2017 51 Objets langage Bit système de débordement d'index %S20 Un débordement d'index se produit lorsque l'adresse d'un objet indexé dépasse les limites de la zone mémoire contenant ce même type d'objet. Pour résumer : L'adresse de l'objet plus le contenu de l'index est inférieur à 0. L'adresse de l'objet plus le contenu de l'index est supérieur au plus grand mot directement référencé dans l'application. En cas de débordement d'index, le bit système %S20 est mis à 1 et l'objet reçoit une valeur d'index égale à 0. NOTE : La surveillance des débordements vous incombe. Votre programme doit lire %S20 pour identifier le traitement possible. Vous devez ensuite confirmer qu'il est remis à 0. %S20 (état initial = 0) : En cas de débordement de l'index : mise à 1 par le contrôleur. Acquittement de débordement : mise manuelle à 0 dans le programme après modification de l'index. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT Ecrivez des instructions de programmation pour tester la validité des opérandes destinés à être utilisés dans des opérations mathématiques. Evitez d'utiliser des opérandes de différents types de données dans des opérations mathématiques. Surveillez systématiquement les bits système affectés, à la recherche de résultats mathématiques incorrects. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 52 EIO0000001475 12/2017 Objets langage Objets de bloc fonction Introduction Un bloc fonction est un objet réutilisable qui accepte une ou plusieurs valeurs d'entrée et renvoie une ou plusieurs valeurs de sortie. Il est toujours appelé par une instance (une copie d'un bloc fonction ayant son propre nom et ses propres variables). Chaque instance conserve son état (sorties et variables internes) entre deux appels. NOTE : les blocs fonction (%FC, %HSC, %PLS et %PWM) et l'alarme d'état pilotent leurs entrées et sorties (%I0.x et %Q0.x affectés dans la configuration) directement et indépendamment du cycle du contrôleur. Les bits d'image (%I0.x et %Q0.x) ne sont pas mis à jour par le contrôleur. Donc, ces entrées et sorties ne sont pas exploitables directement dans le programme utilisateur, et une table d'animation utilisant ces E/S ne peut pas indiquer leur état. Exemple Cette figure montre un bloc fonction StepCounter : Objets bit Les objets bit correspondent aux sorties des blocs fonction. Les instructions booléennes de test peuvent accéder à ces bits : directement (par exemple, LD E) s'ils sont câblés au bloc en programmation (voir page 171) réversible ; en spécifiant le type de bloc (LD %Ci.E, par exemple). Les entrées sont accessibles sous la forme d'instructions. EIO0000001475 12/2017 53 Objets langage Objets mot Les objets mot correspondent à des paramètres et des valeurs : Paramètres de configuration de bloc : le programme peut accéder à certains paramètres (paramètres de présélection, par exemple), mais pas à d'autres (base de temps, par exemple). Valeurs courantes : par exemple, %Ci.V, la valeur de comptage actuelle. Objets mot double Les objets mot double augmentent la capacité de calcul de votre Logic Controller lors de l'exécution de fonctions système, telles que les compteurs %FC et %HSC, ainsi que les générateurs d'impulsions (%PLS, %PWM). Pour adresser les objets mot double 32 bits utilisés avec les blocs fonction, il suffit d'ajouter le caractère D à la syntaxe d'origine des objets mot standard. L'exemple suivant indique comment adresser la valeur courante d'un compteur rapide au format standard et au format mot double : %FCi.V est la valeur courante du compteur rapide au format standard. %FCi.VD est la valeur courante du compteur rapide au format mot double. 54 EIO0000001475 12/2017 SoMachine Basic Procédure EIO0000001475 12/2017 Chapitre 3 Procédure Procédure Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre Sujet Page 3.1 Traitement booléen 56 3.2 Traitement numérique 76 3.3 Programme 3.4 Virgule flottante 106 3.5 ASCII 115 3.6 Opérateurs de pile 130 3.7 Instructions sur les tables d'objets 132 3.8 Instructions sur les objets d'E/S 153 EIO0000001475 12/2017 94 55 Procédure Sous-chapitre 3.1 Traitement booléen Traitement booléen Objet de cette section Cette section présente les instructions de traitement booléen. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 56 Page Instructions booléennes 57 Opérateurs de chargement (LD, LDN, LDR, LDF) 60 Opérateurs d'affectation (ST, STN, R, S) 62 Opérateurs AND logiques (AND, ANDN, ANDR, ANDF) 64 Opérateurs OR logiques (OR, ORN, ORR, ORF) 66 Opérateurs OR exclusifs (XOR, XORN, XORR, XORF) 68 Opérateur NOT (N) 71 Fonctions montantes et descendantes (RISING, FALLING) 72 Instructions de comparaison 74 EIO0000001475 12/2017 Procédure Instructions booléennes Introduction Les instructions booléennes s'apparentent aux éléments du langage Schéma à contacts. Elles sont résumées dans le tableau suivant : Elément Opérateur Exemple d'instruction Description Eléments de test L'instruction Load (LD) équivaut LD au premier contact ouvert connecté à un rail d'alimentation d'un schéma à contacts. Les instructions AND et OR logiques équivalent à des contacts ouverts après le premier contact connecté au rail d'alimentation d'un schéma à contacts. %I0.0 Le contact est fermé lorsque le bit %I0.0 est à l'état 1. Eléments d'action L'instruction Store (ST) équivaut ST à une bobine. %Q0.0 L'objet bit associé prend la valeur logique de l'accumulateur du bit (résultat de la logique précédente). Le résultat booléen des éléments de test est appliqué aux éléments d'action, comme le montrent les instructions suivantes : Réseau Instruction 0 LD AND ST %I0.0 %I0.1 %Q0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Test des entrées du contrôleur Des instructions de test booléennes peuvent être utilisées pour détecter des fronts montants ou descendants sur les entrées du contrôleur. Un front est détecté lorsque l'état d'une entrée est passé de la valeur "scrutation n-1" à la valeur "scrutation n". La détection de ce front reste effective pendant la scrutation courante. EIO0000001475 12/2017 57 Procédure Détection de fronts Le tableau suivant résume les instructions et les chronogrammes de détection de fronts montants et descendants : Front Instruction IL Contact de front montant LDR %M0 Contact de front descendant LDF %M0 Schéma à contacts Chronogramme Les objets sont mis à jour seulement au début du cycle de tâche maître suivant la détection d'un front. Le changement d'état d'un bit mémoire (%M0, par exemple) est signalé avec une scrutation de retard. NOTE : Les contacts de front montant et de front descendant ne peuvent être utilisés que sur des objets de bits d'entrée (%I) et de bits mémoire (%M). La détection de front peut également être effectuée à l'aide des fonctions (voir page 72) RISING et FALLING . Pour les utiliser, l'application doit être configurée avec un niveau fonctionnel correspondant au moins à Niveau 6.0. L'une des différences entre les contacts de front montant/descendant et les fonctions RISING/FALLING est la scrutation appliquée sur le programme : Les instructions LDR/LDF indiquent les fronts montants/descendants avec un délai d'une scrutation. Les fonctions RISING/FALLING indiquent les fronts montants/descendants dans le cycle au cours duquel ils se produisent. 58 EIO0000001475 12/2017 Procédure Détection de front montant L'instruction Load Rising Edge (LDR) équivaut à un contact de détection de front montant. Le front montant détecte le passage de l'entrée de 0 à 1. Un contact de détection de transition positive permet de détecter un front montant, comme dans l'exemple suivant : Réseau Instruction 0 LDR %I0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Détection de front descendant L'instruction Load Falling Edge (LDF) équivaut à un contact de détection de front descendant. Le front descendant détecte le passage de l'entrée de régulation de 1 à 0. Un contact de détection de transition négative permet de détecter un front descendant, comme dans l'exemple suivant : Réseau Instruction 0 LDF %I0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 59 Procédure Opérateurs de chargement (LD, LDN, LDR, LDF) Introduction Les opérateurs de chargement LD, LDN, LDR et LDF correspondent respectivement à des contacts d'ouverture, de fermeture, de front montant et de front descendant. Les instructions LDR et LDF ne sont utilisées qu'avec les entrées et les mots internes du contrôleur logique. Syntaxe Ce tableau répertorie les types d'opérateur de chargement avec leurs équivalents en langage Schéma à contacts et les opérateurs autorisés : Opérateurs Equivalent en langage Schéma Opérandes autorisés à contacts LDN 0/1 %I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk LDR %I, %M LD LDF Exemples de codage Exemples d'instructions de chargement : Réseau Instruction 0 LD ST %I0.1 %Q0.3 1 LDN ST %M0 %Q0.2 2 LDR ST %I0.1 %Q0.4 3 LDF ST %I0.3 %Q0.5 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 60 EIO0000001475 12/2017 Procédure Chronogramme Le schéma suivant montre le chonogramme, ainsi que l'effet sur la sortie, du code d'un ou des exemples fournis : NOTE : La détection du front du bit mémoire (%M) s'effectue entre les scrutations de la tâche maître. EIO0000001475 12/2017 61 Procédure Opérateurs d'affectation (ST, STN, R, S) Introduction Les opérateurs d'affectation ST, STN, S et R correspondent respectivement aux bobines directe, inverse, d'enclenchement et de déclenchement. Syntaxe Ce tableau répertorie les types d'opérateur d'affectation avec leurs équivalents en langage Schéma à contacts et les opérateurs autorisés : Opérateurs Equivalent en langage Schéma à contacts ST Opérandes autorisés %Q, %M, %BLK.x %QW:Xk, %MW:Xk, %S(1), %SW:Xk(1) STN S %Q, %M, %S, %X, %BLK.x %QW:Xk, %MW:Xk, %SW:Xk(1) R (1) %S ou %SW:Xk est activé sur les mots système qui ne sont pas en lecture seule. Exemples de codage Exemples d'instructions d'affectation : Réseau Instruction 0 LD ST STN S %I0.1 %Q0.3 %Q0.2 %Q0.4 1 LD R %I0.2 %Q0.4 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 62 EIO0000001475 12/2017 Procédure Chronogramme Le schéma suivant montre le chonogramme, ainsi que l'effet sur la sortie, du code d'un ou des exemples fournis : EIO0000001475 12/2017 63 Procédure Opérateurs AND logiques (AND, ANDN, ANDR, ANDF) Introduction Les opérateurs AND effectuent une opération AND logique entre l'opérande (ou son inverse, son front montant ou son front descendant) et le résultat booléen de l'instruction précédente. Syntaxe Ce tableau répertorie les types d'opérateur AND, leur équivalent en langage Schéma à contacts et les opérandes autorisés : Opérateurs Equivalent en langage Schéma à contacts Opérandes autorisés 0/1 %I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk AND ANDN ANDR %I, %M ANDF Exemples de codage Exemples d'instructions AND logiques : Réseau Instruction 0 LD AND ST %I0.1 %M1 %Q0.3 1 LD ANDN ST %M0 %I0.0 %Q0.2 2 LD ANDR S %I0.3 %I0.4 %Q0.4 3 LD ANDF S %M3 %I0.5 %Q0.5 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 64 EIO0000001475 12/2017 Procédure Chronogramme Le schéma suivant montre le chonogramme, ainsi que l'effet sur la sortie, du code d'un ou des exemples fournis : EIO0000001475 12/2017 65 Procédure Opérateurs OR logiques (OR, ORN, ORR, ORF) Introduction Les opérateurs OR effectuent une opération OR logique entre l'opérande (ou son inverse, son front montant ou son front descendant) et le résultat booléen de l'instruction précédente. Syntaxe Ce tableau répertorie les types d'opérateur OR, leur équivalent en langage Schéma à contacts et les opérandes autorisés : Opérateurs OR Equivalent en langage Schéma à contacts Opérandes autorisés 0/1 %I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk ORN ORR %I, %M ORF 66 EIO0000001475 12/2017 Procédure Exemples de codage Exemples d'instructions OR logiques : Réseau Instruction 0 LD OR ST %I0.1 %M1 %Q0.0 1 LD ORN ST %I0.2 %M2 %Q0.1 2 LD ORR S %M0 %I0.3 %Q0.5 3 LDF ORF S %I0.5 %I0.6 %Q0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Le schéma suivant montre le chonogramme, ainsi que l'effet sur la sortie, du code d'un ou des exemples fournis : EIO0000001475 12/2017 67 Procédure Opérateurs OR exclusifs (XOR, XORN, XORR, XORF) Introduction L'opérateur XOR exécute une opération OR exclusif entre l'opérande et le résultat booléen de l'instruction précédente. L'opérateur XORN exécute une opération OR exclusif entre l'inverse de l'opérande et le résultat booléen de l'instruction précédente. L'opérateur XORR exécute une opération OR exclusif entre le front montant de l'opérande et le résultat booléen de l'instruction précédente. L'opérateur XORF exécute une opération OR exclusif entre le front descendant de l'opérande et le résultat booléen de l'instruction précédente. Syntaxe Ce tableau répertorie les types d'opérateur XOR et les opérandes autorisés : Opérateurs XOR Equivalent en langage Schéma Opérandes autorisés à contacts %I, %Q, %M, %S, %X, %BLK.x %IW:Xk, %QW:Xk, %IWS:Xk, %QWS:Xk, %MW:Xk, %SW:Xk, %KW:Xk XORN XORR %I, %M XORF 68 EIO0000001475 12/2017 Procédure Exemples de codage Utilisation de l'instruction XOR : Réseau Instruction 0 LD XOR ST %I0.1 %M1 %Q0.3 Instructions logiques équivalentes de l'opérateur XOR : Réseau Instruction 0 LD ANDN OR( ANDN ) ST %I0.1 %M1 %M1 %I0.1 %Q0.3 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Le schéma suivant montre le chonogramme, ainsi que l'effet sur la sortie, du code d'un ou des exemples fournis : EIO0000001475 12/2017 69 Procédure Cas particuliers N'insérez pas de : contacts XOR dans la première position d'un réseau ; contacts XOR en parallèle avec d'autres éléments en langage Schéma à contacts (comme dans l'exemple suivant). Comme l'illustre l'exemple suivant, l'insertion d'un élément en parallèle avec un contact XOR génère une erreur détectée de validation : 70 EIO0000001475 12/2017 Procédure Opérateur NOT (N) Introduction L'opérateur NOT (N) a un opérande implicite (le résultat stocké dans l'accumulateur booléen). NOT rend négative la valeur de l'accumulateur. Syntaxe Ce tableau montre l'opérateur N : Opérateur Equivalent en langage Schéma Opérandes autorisés à contacts Sans objet. N Exemples de codage Exemple d'instruction NOT : Réseau Instruction 0 LD N ST %I0.1 %Q0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Le schéma suivant montre le chonogramme, ainsi que l'effet sur la sortie, du code d'un ou des exemples fournis : EIO0000001475 12/2017 71 Procédure Fonctions montantes et descendantes (RISING, FALLING) Introduction Les fonctions RISING et FALLING évaluent respectivement un front montant et un front descendant de l'expression qui la précède immédiatement. Ces fonctions possèdent un opérande implicite, à savoir, le résultat de l'expression précédente, qui est stocké dans l'accumulateur booléen. Vous ne pouvez pas placer ces fonctions dans la première colonne d'un réseau ou d'un branchement de langage Schéma à contacts et elles ne peuvent pas constituer la première instruction d'un réseau IL. NOTE : Pour utiliser les fonctions RISING et FALLING, l'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) correspondant au moins à Niveau 6.0. Syntaxe Fonction Equivalent en langage Schéma à contacts Opérandes autorisés RISINGn (1) Sans objet. FALLINGn (1) Sans objet. (1)n est un entier incrémenté chaque fois qu'un front montant ou descendant est inséré. Cet entier est calculé automatiquement si vous : Ne définissez pas d'index. Entrez un index incorrect. Supprimez l'index. Modifiez l'index. 72 EIO0000001475 12/2017 Procédure Exemples de codage Fonction Réseau Instruction RISING 0 LD %M0 RISING0 ST %Q0.0 FALLING 1 LD %I0.1 FALLING0 ST %Q0.7 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Vous pouvez insérer jusqu'à 32 instructions de chaque type. Vous ne pouvez pas utiliser les fonctions RISING et FALLING immédiatement après l'une des instructions suivantes : AND ANDN OR ORN Chronogramme Le diagramme suivant illustre la chronologie de l'exemple ci-dessus pour la période de scrutation d'une tâche maître : EIO0000001475 12/2017 73 Procédure Instructions de comparaison Introduction Les opérateurs de comparaison sont utilisés pour comparer jusqu'à cinq opérandes avec trois niveaux de parenthèses. Ce tableau répertorie les différents types d'opérateurs de comparaison : Opérateur Fonction > Teste si Op1 est supérieur à Op2. >= Teste si Op1 est supérieur ou égal à Op2. < Teste si Op1 est inférieur à Op2. <= Teste si Op1 est inférieur ou égal à Op2. = Teste si Op1 est égal à Op2. <> Teste si Op1 est différent de Op2. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des expressions de comparaison en langage Liste d'instructions (voir page 27) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc comparaison. Syntaxe des instructions de comparaison : Opérateur Syntaxe >, >=, <, <=, =, <> LD [Op1 opérateur Op2] AND [Op1 opérateur Op2] OR [Op1 opérateur Op2] Le tableau suivant détaille les opérandes : Type Op1 Op2 Mots %MWi, %KWi, %IW, %QWi, %SWi, %BLK.x Valeur immédiate, %MWi, %KWi, %IW, %QW, %IWSi, %QWSi, %SWi, %BLK.x, %MWi[%MWi], %KWi[%MWi] Mots doubles %MDi, %KDi Valeur immédiate, %MDi, %KDi, %MDi[%MWi], %KD[%MWi] Mots à virgule flottante %MFi, %KFi Valeur immédiate à virgule flottante, %MFi, %KFi, %MFi[%MWi], %KFi[%MWi] NOTE : Les instructions de comparaison peuvent être indiquées entre parenthèses. 74 EIO0000001475 12/2017 Procédure Exemples de codage La comparaison est exécutée entre les crochets qui suivent les instructions LD, AND et OR. Le résultat est 1 lorsque la comparaison demandée est vraie. Exemples d'instructions de comparaison : Réseau Instruction 0 LD AND ST %I0.2 [%MW10>100] %Q0.3 1 LD AND ST %M0 [%MW20<%KW35] %Q0.4 2 LD OR ST %I0.2 [%MF30>=%MF40] %Q0.5 Exemple d'utilisation d'une instruction de comparaison entre parenthèses : Réseau Instruction 0 LD AND( OR ) ST %M0 [%MF20>10.0] %I0.0 %Q0.1 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 75 Procédure Sous-chapitre 3.2 Traitement numérique Traitement numérique Objet de cette section Cette section présente les instructions de traitement numérique. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 76 Page Introduction aux instructions numériques 77 Instructions d'affectation 78 Affectation de chaînes de bits 79 Affectation de mots 81 Opérateurs arithmétiques sur des entrées 83 Instructions logiques 87 Instructions de décalage 89 Instruction de conversion BCD/binaire 91 Instructions de conversion de mot simple/double 93 EIO0000001475 12/2017 Procédure Introduction aux instructions numériques Présentation En général, les instructions numériques s'appliquent aux mots de 16 bits et aux mots doubles de 32 bits. Elles apparaissent entre crochets. Si le résultat de l'opération logique précédente est vrai (accumulateur booléen = 1), l'instruction numérique est exécutée. S'il est faux (accumulateur booléen = 0), l'instruction numérique n'est pas exécutée et l'opérande reste inchangé. EIO0000001475 12/2017 77 Procédure Instructions d'affectation Introduction Les instructions d'affectation permettent de charger l'opérande 2 (Op2) dans l'opérande 1 (Op1). Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions d'affectation : Opérateur Syntaxe := [Op1: = Op2] Op1 prend la valeur de Op2. Les opérations d'affectation peuvent être exécutées sur les éléments suivants : Chaînes de bits Mots Mots doubles Mot flottant Tables de mots Tables de mots doubles Tables de mots flottants Objets de sortie à train d'impulsions 78 EIO0000001475 12/2017 Procédure Affectation de chaînes de bits Introduction Les opérations sont autorisées sur les chaînes de bits suivantes : Chaîne de bits à chaîne de bits (exemple 1) Chaîne de bits à mot (exemple 2) ou mot double (indexé) Mot ou mot double (indexé) à chaîne de bits (exemple 3) Valeur immédiate à chaîne de bits Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des affectations de chaînes de bits : Opérateur Syntaxe := [Op1: = Op2] Op1 prend la valeur de Op2. Le tableau suivant détaille les opérandes : Type Op1 Mot, mot double %MWi,%QWi, %SWi %MWi[%MWi], %MDi, %MDi[%MWi] %Mi:L, %Qi:L, %Si:L, %Xi:L %TMi.P, %Ci.P, %Ri.I, %Ri.O, %FCi.P, %PLSi.P, %PWMi.P %Ci.PD, %FCi.PD Op2 Valeur immédiate, %MWi, %KWi, %IW, %QWi, %IWSi, %QWSi, %SWi,%BLK.x, %MWi[%MWi], %KWi[%MWi], %MDi[%MWi], %KDi[%MWi], %Mi:L,%Qi:L, %Si:L, %Xi:L, %Ii:L %TMi.P, %Ci.P, %Ri.I, %Ri.O, %FCi.P, %PLSi.P, %PWMi.P %Ci.PD, %FCi.PD NOTE : L'abréviation %BLK.x (%C0.P, par exemple) est utilisée pour désigner n'importe quel mot de bloc fonction. EIO0000001475 12/2017 79 Procédure Structure Exemples d'affectations de chaînes de bits : Réseau Instruction 0 LD 1 [%Q0.0:8:=%M64:8] 1 LD %I0.2 [%MW100:=%M0:16] 2 LDR %I0.3 [%MW104:16:=%KW0] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Règles d'utilisation : Affectation d'une chaîne de bits à un mot : les bits de la chaîne sont transférés au mot en commençant par la droite (premier bit de la chaîne vers le bit 0 du mot). Les bits de mot non concernés par le transfert (longueur ≤ 16) sont mis à 0. Affectation d'un mot à une chaîne de bits : les bits du mot sont transférés en partant de la droite (du bit 0 du mot vers le premier bit de la chaîne). 80 EIO0000001475 12/2017 Procédure Affectation de mots Introduction Les opérations d'affectation peuvent être exécutées sur les mots et mots doubles suivants : Mot (indexé) à mot (exemple 2) (indexé ou non) Mot double (indexé) à mot double (indexé ou non) Valeur entière immédiate à mot (exemple 3) ou mot double (indexé ou non) Chaîne de bits à mot ou mot double Valeur flottante (indexée ou non) à valeur flottante (indexée ou non) Mot ou mot double à chaîne de bits Valeur flottante immédiate à valeur flottante (indexée ou non) Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des affectations de mots : Opérateur Syntaxe := [Op1: = Op2] Op1 prend la valeur de Op2. Le tableau suivant détaille les opérandes : Type Op1 Op2 Mot, mot double, chaîne de bits %BLK.x, %MWi, %QWi, %SWi %MWi[MWi], %MDi, %MDi[%MWj], %Mi:L, %Qi:L, %Si:L, %Xi:L Valeur immédiate, %MWi, %KWi, %IW, %QWi, %IWSi, QWSi, %SWi, %MWi[MWi], %KWi[MWi], %MDi, %MDi[%MWj], %KDi, %KDi[MWj], %Mi:L, %Qi:L, %Si:L, %Xi:L, %Ii:L Valeur flottante %MFi, %MFi[%MWj] Valeur flottante immédiate, %MFi, %MFi[%MWj], %KFi, %KFi[%MWj] NOTE : L'abréviation %BLK.x (R3.I, par exemple) permet de désigner n'importe quel mot de bloc fonction. Pour les chaînes de bits %Mi:L, %Si:L et %Xi:L, l'adresse de base du premier bit de la chaîne doit être un multiple de 8 (0, 8, 16, ..., 96, etc.). EIO0000001475 12/2017 81 Procédure Structure Exemples d'affectations de mots : Réseau Instruction 0 LD 1 [%SW112:=%MW100] 1 LD %I0.2 [%MW0[%MW10]:=%KW0[%MW20]] 2 LD %I0.3 [%MW10:=100] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 82 EIO0000001475 12/2017 Procédure Opérateurs arithmétiques sur des entrées Introduction Les opérateurs arithmétiques permettent d'effectuer des opérations arithmétiques entre deux opérandes d'entiers ou sur un opérande d'entier. Ce tableau répertorie les différents types d'opérateurs arithmétiques : Opérateur Fonction + Addition de 2 opérandes - Soustraction de 2 opérandes * Multiplication de 2 opérandes / Division de 2 opérandes REM Reste de la division de 2 opérandes SQRT Racine carrée d'un opérande INC Incrémentation d'un opérande DEC Décrémentation d'un opérande ABS Valeur absolue d'un opérande Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions arithmétiques : Opérateur Syntaxe +,-,*,/,REM [Op1: = Op2 opérateur Op3] INC, DEC [opérateur Op1] SQRT (1) [Op1: = SQRT(Op2)] ABS (1) [Op1: = ABS(Op2)] EIO0000001475 12/2017 83 Procédure Le tableau suivant détaille les opérandes : Type Op1 Op2 et Op3(1) Mots %MWi, %QWi, %SWi, %BLK.x(2) Valeur immédiate, %MWi, %KWi, %IWi, %MDi, %BLK.x Immediate value, %MDi, %KDi, Mots doubles %QWi, %IWSi, %QWSi, %SWi, %BLK.x(2) %BLK.x(2) (1) Avec cet opérateur, Op2 ne peut pas être une valeur immédiate. La fonction ABS n'est utilisable qu'avec des mots doubles (%MD et %KD) et flottants (%MF et %KF). Par conséquent, Op1 et Op2 doivent être des mots doubles ou flottants. (2) %BLK.x représente tous les objets de bloc. Structure Exemples d'instructions arithmétiques : Réseau Instruction 0 LD %M0 [%MW0:=%MW10+10] 1 LD %I0.2 [%MW0:=SQRT(%MW10)] 2 LDR %I0.3 [%MW10:=32767] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Cas particuliers Addition Débordement pendant l'opération sur mots Si le résultat dépasse la capacité du mot de résultat, le bit %S18 (débordement) est mis à 1 et le résultat n'est pas significatif (voir le réseau 1 de l'exemple d'application (voir page 86)). Le programme utilisateur gère le bit %S18. NOTE : Pour les mots doubles, les limites sont -2 147 483 648 et 2 147 483 647. Multiplication Débordement pendant l'opération Si le résultat dépasse la capacité du mot de résultat, le bit %S18 (débordement) est mis à 1 et le résultat n'est pas significatif. 84 EIO0000001475 12/2017 Procédure Division / reste Division par 0 Si le diviseur est 0, la division est impossible et le bit système %S18 est mis à 1. Le résultat est alors incorrect. Débordement pendant l'opération Si le quotient de la division dépasse la capacité du mot de résultat, le bit système %S18 est mis à 1. Calcul de la racine carrée Débordement pendant l'opération Le calcul de la racine carrée est uniquement effectué sur les valeurs positives. Le résultat est, par conséquent, toujours positif. Si l'opérande de racine carrée est négatif, le bit système %S18 est mis à 1 et le résultat est incorrect. Certaines erreurs mathématiques parmi celles qui sont détectées peuvent avoir un impact non négligeable sur l'exécution de votre application. Il vous incombe de rechercher ces erreurs potentielles et de programmer des instructions permettant de maîtriser l'exécution de votre application si une ou plusieurs erreurs de ce type survenaient. L'impact de ces erreurs détectées dépend de la configuration, de l'équipement utilisé et des instructions de programme exécutées avant et après la détection d'erreurs potentielles ou réelles. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT Ecrivez des instructions de programmation pour tester la validité des opérandes destinés à être utilisés dans des opérations mathématiques. Evitez d'utiliser des opérandes de différents types de données dans des opérations mathématiques. Surveillez systématiquement les bits système affectés, à la recherche de résultats mathématiques incorrects. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. NOTE : Le programme utilisateur gère les bits système %S17 et %S18. Le contrôleur les met à 1. Ils doivent être remis à 0 par le programme pour être réutilisés (voir l'exemple, page précédente). EIO0000001475 12/2017 85 Procédure Exemple d'application Débordement pendant l'addition : Réseau Instruction 0 LD %M0 [%MW0:=%MW1+%MW2] 1 LDN %S18 [%MW10:=%MW0] 2 LD %S18 [%MW10 :=32767] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Si %MW1 = 23 241 et %MW2 = 21 853, le résultat (45 094) ne peut pas être exprimé dans un mot de 16 bits signé. Par conséquent, le bit %S18 est mis à 1 et la valeur de %MW0 (-20 442) est incorrecte. Dans cet exemple, la valeur de ce mot est fixée à 32 767 lorsque le résultat est supérieur à cette valeur. 86 EIO0000001475 12/2017 Procédure Instructions logiques Introduction Les opérateurs logiques permettent d'effectuer une opération logique entre deux opérandes de mot ou, dans le cas d'un opérateur NOT logique, sur un opérande de mot. Le tableau suivant répertorie les différents types d'instructions logiques : Instruction Fonction AND AND (bit à bit) entre deux opérandes OR OR logique (bit à bit) entre deux opérandes XOR OR exclusif (bit à bit) entre deux opérandes NOT Complément logique (bit à bit) d'un opérande Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions logiques : Opérateur Syntaxe Op1 Op2 et Op3 AND, OR, XOR [Op1: = Op2 opérateur Op3] NOT [Op1:=NOT(Op2)] %MWi, %QWi, %SWi, %BLK.x Valeur immédiate (1), %MWi, %KWi, %IWi, %QWi, %IWSi, %QWSi, %SWi, %BLK.x (1) Avec NOT, Op2 ne peut pas être une valeur immédiate. Structure Exemples d'instructions logiques : Réseau Instruction 0 LD %M0 [%MW0:=%MW10 AND 16#00FF] 1 LD 1 [%MW0:=%KW5 OR %MW10] 2 LD %I0.3 [%MW102:=NOT(%MW100)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 87 Procédure Exemple d'application Instruction AND logique : [%MW15:=%MW32 AND %MW12] Lorsque %MW32 = 0001 1011 (binaire) (27 (décimal)) et %MW12 = 0011 0110 (binaire) (54 (décimal)), le résultat est %MW15 = 0001 0010 (binaire) (18 (décimal)). 88 EIO0000001475 12/2017 Procédure Instructions de décalage Introduction Les instructions de décalage déplacent les bits d'un opérande d'un nombre spécifié de positions vers la droite ou vers la gauche. Le tableau suivant répertorie les différents types d'instructions de décalage : Instruction Fonction Décalage logique SHL(op2,n) Décalage logique de n positions vers la gauche. SHR(op2,n) Décalage logique de n positions vers la droite. Décalage circulaire ROL(op2,n) Décalage circulaire de n positions vers la gauche. ROR(op2,n) Décalage circulaire de n positions vers la droite. n Valeur immédiate entière de : mot : 1 à 16 compris, mot double : 1 à 32 compris. NOTE : le bit système %S17 indique la valeur du dernier bit éjecté. EIO0000001475 12/2017 89 Procédure Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions de décalage : Opérateur Syntaxe SHL, SHR [Op1: = opérateur (Op2,n)] ROL, ROR n Valeur immédiate entière de : mot : 1 à 16 compris, mot double : 1 à 32 compris. Le tableau suivant détaille les opérandes : Types Op1 Op2 Mots %MWi, %QWi, %SWi %BLK.x %MWi, %KWi, %IWi, %QWi, %IWSi, %QWSi, %SWi, %BLK.x Mots doubles %MDi %BLK.x %MDi, %KDi %BLK.x Structure Exemples d'instructions de décalage : Réseau Instruction 0 LDR %I0.1 [%MW0:=SHL(%MW10,5)] 1 LDR %I0.2 [%MW10:=ROR(%KW9,8)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 90 EIO0000001475 12/2017 Procédure Instruction de conversion BCD/binaire Introduction Les instructions de conversion permettent d'effectuer la conversion entre les différentes représentations numériques. Ce tableau répertorie les différents types d'instruction de conversion BCD/binaire : Instruction Fonction BTI Conversion BCD/binaire ITB Conversion binaire/BCD Analyse du code BCD Le codage BCD (Binary Coded Decimal - décimal codé binaire) représente les décimaux (entre 0 et 9) par un code à quatre bits binaires. Un objet mot de 16 bits peut ainsi contenir un nombre à quatre chiffres (0000 à 9999) ; et un objet mot double de 32 bits, un nombre à huit chiffres. Lors d'une conversion, le bit système %S18 est mis à 1 si la valeur n'est pas BCD. Ce bit doit être testé et remis à 0 par le programme. Représentation BCD des décimaux : Décimal 0 1 2 3 4 5 6 7 8 9 BCD 0001 0010 0011 0100 0101 0110 0111 1000 1001 0000 Exemples : Le mot %MW5 exprime la valeur BCD "2450" qui correspond à la valeur binaire 0010 0100 0101 0000. Le mot %MW12 exprime la valeur décimale "2450" qui correspond à la valeur binaire 0000 1001 1001 0010. Le mot %MW5 est converti en mot %MW12 à l'aide de l'instruction BTI. Le mot %MW12 est converti en mot %MW5 à l'aide de l'instruction ITB. EIO0000001475 12/2017 91 Procédure Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions de conversion BCD/binaire : Opérateur Syntaxe BTI, ITB [Op1: = opérateur (Op2)] Le tableau suivant détaille les opérandes : Types Op1 Op2 Mots %MWi, %QWi, %SWi %BLK.x %MWi, %KWi, %IWi, %QWi, %IWSi, %QWSi, %SWi, %BLK.x Mot double %MDi %BLK.x %MDi, %KDi %BLK.x Structure Exemples d'instructions de conversion BCD/binaire : Réseau Instruction 0 LD %M0 [%MW0:=BTI(%MW10)] 1 LD %I0.2 [%MW10:=ITB(%KW9)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Exemple d'application L'instruction BTI permet de traiter une valeur de consigne dans les entrées du contrôleur via des roues codeuses en BCD. L'instruction ITB permet d'afficher des valeurs numériques (résultat d'un calcul, valeur courante d'un bloc fonction, par exemple) sur des afficheurs codés en BCD. 92 EIO0000001475 12/2017 Procédure Instructions de conversion de mot simple/double Introduction Le tableau suivant décrit les instructions de conversion entre des mots simples et doubles : Instruction Fonction LW Extrait l'octet de poids faible d'un mot double vers un mot. HW Extrait l'octet de poids fort d'un mot double vers un mot. CONCATW Concatène deux mots pour créer un mot double. DWORD Convertit un mot de 16 bits en un mot double de 32 bits. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions de conversion de mots simples/doubles : Opérateur Syntaxe Op1 Op2 Op3 LW, HW Op1 = opérateur (Op2) %MWi %MDi, %KDi, %BLK.x [-] CONCATW Op1 = opérateur (Op2, Op3)) %MDi, %BLK.x Valeur %MWi, %KWi, immédiate Valeur %MWi, %KWi, immédiate DWORD Op1 = opérateur (Op2) %MDi, %BLK.x %MWi, %KWi [-] Structure Exemples d'instructions de conversion de mots simples/doubles : Réseau Instruction 0 LD %M0 [%MW0:=HW(%MD10)] 1 LD %I0.2 [%MD10:=DWORD(%KW9)] 2 LD %I0.3 [%MD11:=CONCATW(%MW10,%MW5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 93 Procédure Sous-chapitre 3.3 Programme Programme Objet de cette section Cette section présente les instructions de programme. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Instructions END 95 Instructions NOP 97 Instructions de saut 94 Page 98 Eléments conditionnels 100 Eléments de boucle 102 Instructions de sous-programme 104 EIO0000001475 12/2017 Procédure Instructions END Introduction Les instructions END définissent la fin de l'exécution de la scrutation d'un programme. END, ENDC et ENDCN Quatre instructions END différentes sont disponibles : END : fin de programme inconditionnelle. ENDC : fin de programme si le résultat booléen de l'instruction de test précédente est 1. ENDCN : fin de programme si le résultat booléen de l'instruction de test précédente est 0. ENDT : fin de réseau de transitions dans un programme Grafcet (SFC) (valable dans un réseau de transitions exclusivement). Par défaut (en mode Normal), les sorties sont mises à jour et la scrutation suivante débute dès la fin du programme. Si la scrutation est périodique, les sorties sont mises à jour et la scrutation suivante débute dès que la période écoulée. L'instruction END termine le niveau actuel : Si elle est activée dans une sous-routine, une fonction définie par l'utilisateur ou un bloc fonction défini par l'utilisateur, elle y met fin et retourne au programme appelant. Si elle est activée dans une tâche maître, périodique ou d'événement, elle met fin à la tâche présente. EIO0000001475 12/2017 95 Procédure Exemples Exemple d'instruction END : Réseau Instruction 0 LD %M1 ST %Q0.1 1 LD %M2 ST %Q0.2 2 END Exemple d'instruction END : Réseau Instruction 0 LD %I0.0 ST %Q0.0 1 LD %I0.1 ST %Q0.1 2 LD %I0.2 ENDC 3 LD %I0.3 ST %Q0.2 4 END NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 96 EIO0000001475 12/2017 Procédure Instructions NOP Introduction Les instructions NOP n'effectuent aucune opération. Utilisez-les pour "réserver" des lignes d'un programme afin d'insérer ultérieurement des instructions, sans modifier les numéros de ligne. EIO0000001475 12/2017 97 Procédure Instructions de saut Introduction Les instructions de saut interrompent immédiatement l'exécution d'un programme et la reprennent à partir de la ligne de programme contenant l'étiquette %Li (i = numéro de module maximum). JMP, JMPC et JMPCN Trois instructions de saut sont disponibles : JMP : saut de programme inconditionnel ; JMPC : saut de programme si le résultat booléen de la logique précédente est 1 ; JMPCN : saut de programme si le résultat booléen de la logique précédente est 0. Exemples Exemples d'instructions de saut : Réseau Instruction 0 LD JMPC %M15 %L8 1 LD ST JMPC [%MW24<%MW12] %Q0.3 %L12 2 %L8: LD AND ST JMPC %M12 %M13 %M12 %L12 3 LD S %M11 %Q0.0 4 %L12: LD %I0.0 ST %Q0.4 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 98 EIO0000001475 12/2017 Procédure Instructions Les instructions de saut sont interdites entre parenthèses et ne doivent pas être placées entre les instructions AND, OR et une parenthèse fermante ")". L'étiquette ne peut être placée que devant une instruction LD, LDN, LDR, LDF ou BLK. Le numéro de l'étiquette %Li doit être défini une seule fois dans un programme. Le saut de programme est effectué vers une ligne de programmation en amont ou en aval. Lorsque le saut est en amont, le temps de scrutation doit être contrôlé. Un temps de scrutation trop long peut provoquer le déclenchement du chien de garde. EIO0000001475 12/2017 99 Procédure Eléments conditionnels Description Les éléments conditionnels vous permettent de coder des conditions dans votre programme. Les éléments ne peuvent être programmés qu'en mode hors ligne. Cette fonction contient les trois éléments suivants : IF ELSE ENDIF Vous pouvez insérer un élément par réseau. NOTE : L'application doit être configurée avec un niveau fonctionnel d'au moins Niveau 6.0. Nombre maximum de d'éléments Le nombre maximum d'éléments est de 128 moins le nombre de %L déclarés dans votre application. Description de l'élément Elément Instruction IL IF IF0...THEN0 Doit se trouver au début d'un réseau. L'élément THEN est ajouté automatiquement. Vous ne pouvez pas modifier cet élément. ELSE ELSE0 Uniquement si un élément IF est défini dans un réseau précédent. Doit se trouver au début d'un réseau. ENDIF ENDIF0 Doit se trouver à la fin d'un réseau. Vous ne pouvez pas insérer d'autres éléments SoMachine Basic dans le même réseau. 100 Schéma à contacts Description EIO0000001475 12/2017 Procédure Configuration d'une instruction de condition Etape Action 1 Dans un réseau vide, insérez l'élément IF en cliquant sur → →IF. 2 Vous pouvez éventuellement modifier l'index. Si vous modifiez l'index d'un élément, vous devez affecter le même index aux autres éléments. Les éléments de même index doivent se trouver dans le même POU. 3 Configurez votre programme. 4 Insérez éventuellement l'élément ELSE en cliquant sur → →ELSE. 5 Dans le dernier réseau, insérez l'élément ENDIF en cliquant sur EIO0000001475 12/2017 → →ENDIF. 101 Procédure Eléments de boucle Description Les éléments de boucle vous permettent de coder une séquence d'instructions dans votre programme. Les éléments ne peuvent être programmés qu'en mode hors ligne. Cette fonction contient les deux éléments suivants : FOR ENDFOR Vous pouvez insérer un élément par réseau. NOTE : L'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) d'au moins Niveau 6.0. Nombre maximum de d'éléments Le nombre maximum d'éléments est de 128 moins le nombre de %L déclarés dans votre application. Description de l'élément Elément Instruction IL FOR FOR0 Schéma à contacts Description Doit se trouver au début d'un réseau. Cliquez sur ENDFOR ENDFOR0 pour le configurer. Doit se trouver à la fin d'un réseau. Vous ne pouvez pas insérer d'autres éléments SoMachine Basic dans le même réseau. Configuration d'une boucle Etape Action 1 Dans un réseau vide, insérez l'élément FOR en cliquant sur 2 → →FOR. Vous pouvez éventuellement modifier l'index. Si vous modifiez l'index d'un élément, vous devez affecter le même index à l'autre élément. Les éléments de même index doivent se trouver dans le même POU. 3 Cliquez sur pour configurer l'élément FOR. Résultat : la fenêtre Assistant FOR s'affiche. 4 Dans le dernier réseau, insérez l'élément ENDFOR en cliquant sur ENDFOR. 102 → → EIO0000001475 12/2017 Procédure Configuration de l'élément FOR Libellé Description Compteur de boucles Saisissez une variable %MWx. Valeur initiale Saisissez une variable %MWx ou une valeur comprise entre -32768 et 32767. Signe < <= = >= > <> Valeur de fin Saisissez une variable %MWx ou une valeur comprise entre -32768 et 32767. Etape d'incrémentation Saisissez une variable %MWx ou une valeur comprise entre -32768 et 32767. EIO0000001475 12/2017 103 Procédure Instructions de sous-programme Introduction Les instructions de sous-programme obligent un programme à exécuter un sous-programme puis à revenir au programme principal, au point d'appel du sous-programme. Procédure Un sous-programme est créé dans un POU libre. Pour plus d'informations sur la création d'un POU libre et la définition du numéro du sous-programme, consultez la section POU libres (voir SoMachine Basic, Guide d'utilisation). Pour plus d'informations sur la gestion des POU avec une tâche et des réseaux, consultez la section Gestion des POU (voir SoMachine Basic, Guide d'utilisation). Appel d'un sous-programme en trois étapes : 1 L'instruction SRn appelle le sous-programme référencé par un POU libre SRn, si le résultat de l'instruction booléenne précédente est 1. 2 Le sous-programme est référencé par un POU libre SRn, où n est le nombre de sousprogrammes. 3 L'instruction de sous-programme doit être écrite dans un POU libre indépendant du programme principal. Pour plus d'informations sur les sous-programmes, consultez la section Création d'une tâche périodique (voir SoMachine Basic, Guide d'utilisation). 104 EIO0000001475 12/2017 Procédure Exemples Exemple d'instructions contenant un sous-programme : Réseau Instruction 0 LD AND ST %M15 %M5 %Q0.0 1 LD SR1 [%MW24>%MW12] 2 LD AND ST END %I0.4 %M13 %Q0.1 Exemple d'instruction de sous-programme (SR1) : Réseau Instruction 0 (SR1) LD ST %I0.0 %Q0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Consignes Un sous-programme ne peut pas appeler un autre sous-programme. Toute tentative d'appeler un sous-programme dans un POU libre génère une erreur détectée de compilation. Les instructions de sous-programme sont interdites entre parenthèses et ne doivent pas être placées entre les instructions AND, OR et une parenthèse fermante « ) ». Soyez prudent lorsqu'une instruction d'affectation est suivie d'un appel de sous-programme en langage IL. En effet, le sous-programme risque de modifier le contenu de l'accumulateur booléen. Au retour, sa valeur risque donc d'être différente de celle qu'il avait avant l'appel. EIO0000001475 12/2017 105 Procédure Sous-chapitre 3.4 Virgule flottante Virgule flottante Objet de cette section Cette section décrit les instructions avancées à virgule flottante. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 106 Page Instructions arithmétiques sur les objets à virgule flottante 107 Instructions trigonométriques 110 Instructions de conversion d'angle 112 Instructions de conversion d'entiers/nombres à virgule flottante 113 EIO0000001475 12/2017 Procédure Instructions arithmétiques sur les objets à virgule flottante Introduction Ces instructions permettent d'effectuer une opération arithmétique entre deux opérandes à virgule flottante ou sur un opérande à virgule flottante : Instruction Objectif + Addition de 2 opérandes - Soustraction de 2 opérandes * Multiplication de 2 opérandes / Division de 2 opérandes LOG Logarithme en base 10 LN Logarithme népérien SQRT Racine carrée d'un opérande ABS Valeur absolue d'un opérande TRUNC Partie entière d'une valeur à virgule flottante EXP Exponentiel naturel EXPT Puissance d'un entier par un réel Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Opérateurs et syntaxe des instructions arithmétiques sur une valeur à virgule flottante : Opérateurs Syntaxe +, - *, / Op1:= Op2 opérateur Op3 SQRT, ABS, TRUNC, LOG, EXP, LN Op1:= opérateur (Op2) EXPT Op1:= opérateur (Op2,Op3) EIO0000001475 12/2017 107 Procédure Opérandes des instructions arithmétiques sur des nombres à virgule flottante : Opérateurs Op1 Op2 Op3 +, - *, / %MFi %MFi, %KFi, valeur immédiate %MFi, %KFi, valeur immédiate SQRT, ABS, LOG, EXP, LN %MFi %MFi, %KFi [-] TRUNC %MFi, %MDi %MFi, %KFi [-] EXPT %MFi %MFi, %KFi %MWi, %KWi, valeur immédiate Remarque : SoMachine Basic empêche l'utilisation de la fonction avec %MWi comme Op1. Structure Exemple d'instruction arithmétique : Réseau Instruction 0 LD %M0 [%MF0:=%MF10+129.7] 1 LD %I0.2 [%MF1:=SQRT(%MF10)] 2 LDR %I0.3 [%MF2:=ABS(%MF20)] 3 LDR %I0.4 [%MF3:=TRUNC(%MF2)] 4 LD %M1 [%MF4:=LOG(%MF10)] 5 LD %I0.5 [%MF5:=LN(%MF20)] 6 LD %I0.0 [%MF6:=EXP(%MF30)] 7 LD %I0.1 [%MF7:=EXPT(%MF40,%MW52)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 108 EIO0000001475 12/2017 Procédure Règles d'utilisation Les opérations sur les valeurs à virgule flottante et les entiers ne peuvent pas être mélangées directement. Les opérations de conversion (voir page 112) assurent la conversion dans l'un ou l'autre de ces formats. Le bit système %S18 est géré de la même façon que les opérations sur des entiers (voir page 112). Le mot %SW17 indique la cause de l'erreur détectée. Lorsque l'opérande de la fonction est un nombre incorrect (par exemple, le logarithme d'un nombre négatif), il produit un résultat indéterminé ou infini et met le bit %S18 à 1. Le mot %SW17 indique la cause de l'erreur détectée. NOTE : Pour l'instruction TRUNC, le bit système %S17 n'est pas affecté. Exemples d'application de l'instruction TRUNC avec %MDi Le tableau ci-dessous fournit des exemples d'instruction TRUNC lorsque %MDi sert à stocker le résultat : Exemple Résultat TRUNC(3.5) 3 TRUNC(324.18765) 324 TRUNC(927.8904) 927 TRUNC(-7.7) -7 TRUNC(45.678E+20) 2 147 483 647 (mot double signé maximum) (1) %S18 est mis à 1. TRUNC(-94.56E+13) - 2 147 483 648 (mot double signé minimum) (1) %S18 est mis à 1. (1) Cet exemple s'applique à l'instruction TRUNC lorsqu'elle est utilisée avec %MDi. Lorsqu'elle est utilisée avec %MFi, l'instruction TRUNC n'a pas de dépassement et n'a donc pas de limite maximum/minimum. EIO0000001475 12/2017 109 Procédure Instructions trigonométriques Introduction Ces instructions permettent de réaliser des opérations trigonométriques : SIN Sinus d'un angle exprimé en radians ASIN COS Cosinus d'un angle exprimé en radians ACOS TAN Tangente d'un angle exprimée en radians ATAN Arc sinus (résultat entre et Arc cosinus (résultat entre 0 et Arc tangente (résultat entre ) ) et ) Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Opérateurs, opérandes et syntaxe des instructions pour des opérations trigonométriques Opérateurs Syntaxe Op1 Op2 SIN, COS, TAN, ASIN, ACOS, ATAN Op1:= opérateur (Op2) %MFi %MFi, %KFi Structure Exemple d'instructions trigonométriques (Trigonometric) : Réseau Instruction 0 LD %M0 [%MF0:=SIN(%MF10)] 1 LD %I0.0 [%MF1:=TAN(%MF20)] 2 LD %I0.3 [%MF2:=ATAN(%MF30)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 110 EIO0000001475 12/2017 Procédure Règles d'utilisation Lorsque l'opérande de la fonction est un nombre incorrect (par exemple, l'arc cosinus d'un nombre supérieur à 1), il produit un résultat indéterminé ou infini et met le bit %S18 à 1. Le mot %SW17 indique la cause de l'erreur détectée. Les fonctions SIN/COS/TAN admettent en paramètre un angle entre et leur précision décroît progressivement pour les angles en dehors de l'intervalle entre en raison de l'imprécision apportée par le modulo toute opération. EIO0000001475 12/2017 , mais et effectué sur le paramètre avant 111 Procédure Instructions de conversion d'angle Introduction Ces instructions permettent de réaliser des opérations de conversion : DEG_TO_RAD Conversion de degrés en radians. Le résultat est la valeur de l'angle compris entre 0 et . RAD_TO_DEG Conversion d'un angle exprimé en radians. Le résultat est la valeur de l'angle compris entre 0 et 360 degrés. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Opérateurs, opérandes et syntaxe des instructions de conversion : Opérateurs Syntaxe Op1 Op2 DEG_TO_RAD RAD_TO_DEG Op1:= opérateur (Op2) %MFi %MFi, %KFi Structure Exemple d'instructions de conversion : Réseau Instruction 0 LD %M0 [%MF0:=DEG_TO_RAD(%MF10)] 1 LD %M2 [%MF2:=RAD_TO_DEG(%MF20)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Règles d'utilisation L'angle à convertir doit être compris entre -737 280,0 et +737 280,0 (pour une conversion DEG_TO_RAD) ou entre et (pour une conversion RAD_TO_DEG). Pour les valeurs situées hors de ces plages, le résultat affiché sera +1.#QNAN, les bits %S18 et %SW17:X0 étant mis à 1. 112 EIO0000001475 12/2017 Procédure Instructions de conversion d'entiers/nombres à virgule flottante Introduction Quatre instructions de conversion sont proposées : INT_TO_REAL Conversion d'un mot entier en valeur flottante DINT_TO_REAL Conversion d'un mot double (entier) en valeur flottante REAL_TO_INT Conversion d'une valeur flottante en mot entier (le résultat étant la valeur algébrique la plus proche) REAL_TO_DINT Conversion d'une valeur flottante en mot double entier (le résultat étant la valeur algébrique la plus proche) Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Opérateurs et syntaxe (conversion d'un mot entier en valeur flottante) : Opérateurs Syntaxe INT_TO_REAL Op1=INT_TO_REAL(Op2) Opérandes (conversion d'un mot entier en valeur flottante) : Op1 Op2 %MFi %MWi,%KWi Exemple : conversion d'un mot entier en valeur flottante : 147 en 1,47e+02. Opérateurs et syntaxe (conversion d'un mot double entier en valeur flottante) : Opérateurs Syntaxe DINT_TO_REAL Op1=DINT_TO_REAL(Op2) Opérandes (conversion d'un mot double entier en valeur flottante) : Op1 Op2 %MFi %MDi,%KDi Exemple : conversion d'un mot entier en valeur flottante : 68 905 000 en 6,8905e+07. EIO0000001475 12/2017 113 Procédure Opérateurs et syntaxe (conversion d'une valeur flottante en mot entier ou double entier) : Opérateurs Syntaxe REAL_TO_INT Op1=operator(Op2) REAL_TO_DINT Opérateurs (conversion d'une valeur flottante en mot entier ou double entier) : Type Op1 Op2 Mots %MWi %MFi, %KFi Mots doubles %MDi %MFi, %KFi Exemple : Conversion d'une valeur flottante en mot entier : 5978,6 en 5979 Conversion d'une valeur flottante en mot double entier : 1 235 978,6 en 1 235 979 NOTE : Si, lors d'une conversion réel vers entier (ou réel vers entier mot double), la valeur flottante est en dehors des limites du mot (ou du mot double), le bit %S18 est défini sur 1. Structure Exemple d'instruction de conversion d'entier/valeur flottante : Réseau Instruction 0 LD 1 [%MF0:=INT_TO_REAL(%MW10)] 1 LD %I0.8 [%MD2:=REAL_TO_DINT(%MF9)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Précision d'arrondi La norme IEEE 754 définit 4 modes d'arrondi pour les opérations sur les valeurs flottantes. Le mode utilisé par les instructions ci-dessus est le mode "arrondi au plus près" : "si les valeurs représentables les plus proches sont à égale distance du résultat théorique, la valeur fournie sera celle dont le bit de poids faible est égal à 0". En fait, la valeur va être arrondie au nombre supérieur ou inférieur, mais pas au nombre pair. Par exemple : Arrondi de la valeur 10,5 à 10. Arrondi de la valeur 11,5 à 12. 114 EIO0000001475 12/2017 Procédure Sous-chapitre 3.5 ASCII ASCII Objet de cette section Cette section décrit les instructions avancées d'ASCII. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Instructions ROUND 116 Instructions de conversion ASCII/entier 118 Instructions de conversion entier/ASCII 120 Instruction de conversion ASCII/valeur flottante 122 Instructions de conversion valeur flottante/ASCII 124 Instructions de conversion ASCII/mot double 126 Instructions de conversion mot double/ASCII 128 EIO0000001475 12/2017 115 Procédure Instructions ROUND Introduction L'instruction ROUND arrondit une représentation flottante stockée dans une chaîne ASCII. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour l'instruction ROUND, utilisez la syntaxe : Op1 := ROUND( Op2,Op3 ). Par exemple : [%MW0:7:=ROUND(%MW8,4)] Paramètres Le tableau ci-dessous décrit les paramètres de la fonction ROUND : Paramètres Description Op1 %MW qui stocke le résultat. Op2 %MW qui contient la valeur flottante à arrondir. Op3 Nombre de chiffres significatifs requis pour arrondir. Entier de 1 à 8 Règles d'utilisation Les règles de l'instruction ROUND sont les suivantes : L'opérande est toujours arrondi à la valeur inférieure. Le caractère de fin de la chaîne de l'opérande est utilisé comme caractère de fin de la chaîne de résultat. Il peut s'agir de tout caractère ASCII non compris dans l'intervalle [0 - 9] ([16#30 - 16#39]), à l'exception des caractères suivants : le point (.) (16#2E) ; le signe moins '-' (16#2D) ; le signe plus '+' (16#2B) ; l'exposant 'e' ou 'E' (16#65 ou 16#45). 116 Le résultat et l'opérande ne doivent pas compter plus de 13 octets : la taille maximum d'une chaîne ASCII est de 13 octets. La notation scientifique n'est pas autorisée. EIO0000001475 12/2017 Procédure Cas particuliers Le logiciel vérifie la syntaxe. Les exemples suivants risquent d'entraîner des erreurs de syntaxe : Syntaxe incorrecte Syntaxe correcte %MW10:= ROUND(%MW1,4) ":7" manquant dans le résultat %MW10:7 := ROUND(%MW1,4) %MW10:13:= ROUND(%MW1,4) %MW10 : n où n ≠ 7 est incorrect %MW10:7 := ROUND(%MW1,4) Exemple d'application Ce tableau montre des exemples de l'instruction ROUND : Exemple Résultat ROUND("987654321", 5) "987650000" ROUND("-11.1", 8) "-11.1" ROUND("NAN") "NAN" EIO0000001475 12/2017 117 Procédure Instructions de conversion ASCII/entier Introduction L'instruction de conversion ASCII/entier convertit une chaîne ASCII en une valeur entière. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour les instructions de conversion ASCII/entier, respectez la syntaxe suivante : Op1 := ASCII_TO_INT( Op2 ) Par exemple : [%MW0:=ASCII_TO_INT(%MW8)] L'instruction lit jusqu'à quatre objets de mot d'Op2, les convertit au format d'entier et stocke le résultat dans Op1. Paramètres Le tableau suivant décrit les paramètres de la fonction de conversion ASCII/entier : Paramètres Description Op1 %MW qui stocke le résultat Op2 %MW ou %KW Règles d'utilisation Les règles de conversion ASCII/entier sont les suivantes : Op2 doit être compris entre -32 768 et 32 767. La fonction lit toujours l'octet de poids fort en premier. Les espaces de début sont ignorés. Un caractère ASCII non compris dans l'intervalle [0 - 9] ([16#30 - 16#39]) est considéré comme un caractère de fin, à l'exception du signe moins '-' (16#2D) lorsqu'il est placé comme premier caractère. En cas de débordement (> 32 767 ou < -32 768), le bit système %S18 (erreur détectée ou débordement arithmétique) est mis à 1 et la valeur 32 767 ou -32 768 est renvoyée. Si le premier caractère de l'opérande est un caractère de « séparateur », la valeur 0 est renvoyée et le bit %S18 est mis à 1. NOTE : Les caractères de séparateur sont les suivants : '+' et '-', la lettre 'e' ou 'E', ou '.' (séparateur décimal). 118 La notation scientifique n'est pas valide. EIO0000001475 12/2017 Procédure Exemple d'application Considérons que les données ASCII suivantes ont été stockées dans les mots %MW10 à %MW13 : Paramètre Valeur hexadécimale Représentation ASCII %MW10 16#3932 9, 2 %MW11 16#3133 1, 3 %MW12 16#2038 ‘ ’, 8 %MW13 16#387A 8, ‘z’ Le tableau ci-dessous fournit des exemples de conversion ASCII/entier : Exemple Résultat %MW20 := ASCII_TO_INT(%MW10) %MW20 = 29318 %MW20 := ASCII_TO_INT(%MW12) %MW20 = 8 %MW20 := ASCII_TO_INT(%MW13) %MW20 = 0 et %S18 est réglé sur 1. EIO0000001475 12/2017 119 Procédure Instructions de conversion entier/ASCII Introduction Les instructions de conversion entier/ASCII convertissent un entier en chaîne ASCII. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour les instructions de conversion entier/ASCII, respectez la syntaxe : Op1 := INT_TO_ASCII( Op2 ) Par exemple : [%MW0:4:=INT_TO_ASCII(%MW8)] Paramètres Le tableau suivant décrit les paramètres de la fonction de conversion entier/ASCII : Paramètres Description Op1 %MW qui stocke le résultat Op2 %MW, %KW, %SW, %IW, %QW ou tout MOT (Les valeurs immédiates ne sont pas acceptées.) Règles d'utilisation Les règles de conversion entier/ASCII sont les suivantes : Op2 doit être compris entre -32 768 et 32 767. La fonction écrit toujours l'octet de poids fort en premier. Le caractère de fin est "Entrée" (ASCII 13). La fonction détermine automatiquement le nombre de variables %MW devant contenir des valeurs ASCII (de 1 à 4). Erreurs de syntaxe Le logiciel vérifie la syntaxe. Les exemples suivants risquent d'entraîner des erreurs de syntaxe : 120 Syntaxe incorrecte Syntaxe correcte %MW10 := INT_TO_ASCII(%MW1) ":4" manquant dans le résultat %MW10:4 := INT_TO_ASCII(%MW1) %MW10:n := INT_TO_ASCII(%MW1) %MW10:n où n ≠ 4 est incorrect %MW10:4 := INT_TO_ASCII(%MW1) EIO0000001475 12/2017 Procédure Exemple d'application Pour l'instruction MW10:4 := INT_TO_ASCII(%MW1) : Si... Valeur entière %MW1 = 123 %MW1 = 45 %MW1 = 7 %MW1 = -12369 EIO0000001475 12/2017 Alors… Valeur hexadécimale Représentation ASCII %MW10 = 16#3231 2, 1 %MW11 = 16#0D33 'Entrée', 3 %MW10 = 16#3534 5, 4 %MW11 = 16#000D 'Entrée', %MW10 = 16#0D37 'Entrée', 7 %MW10 = 16#3145 1, ‘-’ %MW11 = 16#3332 3, 2 %MW10 = 16#3936 9, 6 %MW11 = 16#000D 'Entrée', 121 Procédure Instruction de conversion ASCII/valeur flottante Introduction L'instruction de conversion ASCII/valeur flottante convertit une chaîne ASCII en valeur flottante. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour les instructions de conversion ASCII/valeur flottante, respectez la syntaxe suivante : Op1 := ASCII_TO_FLOAT( Op2 ). Par exemple : [%MF0:=ASCII_TO_FLOAT(%MW8)] Paramètres Le tableau suivant décrit les paramètres de la fonction de conversion ASCII/valeur flottante : Paramètres Description Op1 %MF Op2 %MW or %KW Règles d'utilisation Les règles de conversion d'une chaîne ASCII en valeur flottante sont les suivantes : La fonction lit toujours l'octet de poids fort en premier. Tout caractère ASCII non compris dans l'intervalle [0 - 9] ([16#30 - 16#39]) est considéré comme un caractère de "fin", sauf les caractères suivants : le point (.) (16#2E) ; le signe moins '-' (16#2D) ; le signe plus '+' (16#2B) ; l'exposant 'e' ou 'E' (16#65 ou 16#45). 122 Le format de la chaîne ASCII peut être une notation scientifique (par ex., "-2.34567e+13") ou décimale (par ex., "9826.3457"). En cas de débordement (résultat du calcul > 3.402824E+38 ou < -3.402824E+38) : le bit système %S18 (erreur détectée ou débordement arithmétique) est mis à 1 ; %SW17<Check Alignment of PHs>%:X3 est mis à 1; la valeur +/- 1.#INF (valeur infinie + ou -) est renvoyée. EIO0000001475 12/2017 Procédure Si le résultat du calcul est compris entre -1,175494E-38 et 1,175494E-38, il est arrondi à 0,0. Si l'opérande n'est pas un nombre : La valeur 1.#QNAN est renvoyée ; le bit %SW17:X0 est mis à 1. Exemple d'application Considérons que les données ASCII suivantes ont été stockées dans les mots %MW10 à %MW14 : Paramètre Valeur hexadécimale Représentation ASCII %MW10 16#382D 8, ‘-’ %MW11 16#322E 2, ‘.’ %MW12 16#3536 5, 6 %MW13 16#2B65 ‘+’, ‘e’ %MW14 16#2032 ‘ ’, 2 Le tableau ci-dessous fournit des exemples de conversion ASCII/valeur flottante : Exemple Résultat %MF20 := ASCII_TO_FLOAT(%MW10) %MF20 = -826.5 %MF20 := ASCII_TO_FLOAT(%MW11) %MF20 = 1.#QNAN %MF20 := ASCII_TO_FLOAT(%MW12) %MF20 = 6500.0 %MF20 := ASCII_TO_FLOAT(%MW13) %MF20 = 1.#QNAN %MF20 := ASCII_TO_FLOAT(%MW14) %MF20 = 2.0 EIO0000001475 12/2017 123 Procédure Instructions de conversion valeur flottante/ASCII Introduction L'instruction de conversion valeur flottante/ASCII convertit une valeur flottante en chaîne ASCII. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour les instructions de conversion valeur flottante/ASCII, respectez la syntaxe : Op1 := FLOAT_TO_ASCII(Op2). Par exemple : [%MW0:7:=FLOAT_TO_ASCII(%MF8)] Paramètres Le tableau suivant décrit les paramètres de la fonction de conversion valeur flottante/ASCII : Paramètre Description Op1 %MW Op2 %MF or %KF Règles d'utilisation Les règles de conversion d'une valeur flottante en valeur ASCII sont les suivantes : La fonction écrit toujours l'octet de poids fort en premier. La représentation s'effectue à l'aide d'une notation scientifique conventionnelle. Le résultat « Infini » ou « Pas un nombre » renvoie la chaîne « NAN ». Le caractère de fin est "Entrée" (ASCII 13). La fonction détermine automatiquement le nombre de variables %MW devant contenir des valeurs ASCII. La précision de conversion est de 6 chiffres. Erreurs de syntaxe Le logiciel vérifie la syntaxe. Les exemples suivants risquent d'entraîner des erreurs de syntaxe : 124 Syntaxe incorrecte Syntaxe correcte %MW10 := FLOAT_TO_ASCII(%MF1) ":7" manquant dans le résultat %MW10:7 := FLOAT_TO_ASCII(%MF1) %MW10:n := FLOAT_TO_ASCII(%MF1) %MW10:n où n ≠ 7 est incorrect %MW10:7 := FLOAT_TO_ASCII(%MF1) EIO0000001475 12/2017 Procédure Exemple d'application Pour l'instruction %MW10:7 := FLOAT_TO_ASCII(%MF1) : Nombre à convertir Résultat 1234567800 1.23456e+09 0.000000921 9.21e-07 9.87654321 9.87654 1234 1.234e+03 EIO0000001475 12/2017 125 Procédure Instructions de conversion ASCII/mot double Introduction L'instruction de conversion ASCII/mot double convertit une chaîne ASCII en une valeur de mot double. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour l'instruction de conversion ASCII/mot double, respectez la syntaxe suivante : Op1 := ASCII_TO_DINT( Op2 ) Par exemple : [%MD4 := ASCII_TO_DINT(%MW5)] Paramètres Le tableau suivant décrit les paramètres de l'instruction de conversion ASCII/mot double : Paramètres Description Op1 %MDx Op2 %MWy ou %KWy NOTE : Il n'est pas nécessaire de définir Op1 et Op2 dans une table d'animation. Règles d'utilisation Les règles de conversion ASCII/entier sont les suivantes : Op2 doit être compris entre -2147483648 et 2147483647. La fonction lit toujours l'octet de poids fort en premier. Les espaces de début sont ignorés. Un caractère ASCII non compris dans l'intervalle [0 - 9] ([16#30 - 16#39]) est considéré comme un caractère de fin, à l'exception du signe moins '-' (16#2D) lorsqu'il est placé comme premier caractère. En cas de débordement (> 2147483647 ou < -2147483648), le bit système %S18 (erreur détectée ou débordement arithmétique) est mis à 1 et la valeur 2147483647 ou -2147483648 est renvoyée. Si le premier caractère de l'opérande est un caractère de « séparateur », la valeur 0 est renvoyée et le bit %S18 est mis à 1. NOTE : Les caractères de séparateur sont les suivants : '+' et '-', la lettre 'e' ou 'E', ou '.' (séparateur décimal). 126 La notation scientifique n'est pas valide. EIO0000001475 12/2017 Procédure Exemple d'application Considérons que les données ASCII suivantes ont été stockées dans les mots %MW11 à %MW13 : Paramètre Valeur hexadécimale Représentation ASCII %MW8 16#3431 4, 1 %MW9 16#3532 5, 2 %MW10 16#3239 2, 9 %MW11 16#3133 1, 3 %MW12 16#2038 ‘ ‘, 8 %MW13 16#387A 8, ‘z’ Le tableau ci-dessous fournit des exemples de conversion ASCII/mot double : Exemple Résultat %MD10 := ASCII_TO_DINT(%MW8) %MD10 = 142592318 %MD10 := ASCII_TO_DINT(%MW12) %MD10 = 8 %MD10 := ASCII_TO_DINT(%MW13) %MD10 = 0 et %S18 est réglé sur 1. EIO0000001475 12/2017 127 Procédure Instructions de conversion mot double/ASCII Introduction L'instruction de conversion mot double/ASCII convertit une valeur de mot double en chaîne ASCII. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour les instructions de conversion mot double/ASCII, respectez la syntaxe : Op1 := DINT_TO_ASCII( Op2 ). Par exemple : [%MW4:6 := DINT_TO_ASCII(%MD5)] Paramètres Le tableau suivant décrit les paramètres de la fonction de conversion mot double/ASCII : Paramètres Description Op1 %MWx:6 Op2 %MD ou %KD NOTE : Il n'est pas nécessaire de définir Op1 et Op2 dans une table d'animation. Règles d'utilisation Les règles de conversion entier/ASCII sont les suivantes : Op2 doit être compris entre -2147483648 et 2147483647. La fonction écrit toujours l'octet de poids fort en premier. Le caractère de fin est "Entrée" (ASCII 13). La fonction détermine automatiquement le nombre de variables %MW devant contenir des valeurs ASCII (de 1 à 6). Erreurs de syntaxe Le logiciel vérifie la syntaxe. Les exemples suivants risquent d'entraîner des erreurs de syntaxe : 128 Syntaxe incorrecte Syntaxe correcte %MW2 := DINT_TO_ASCII (%MD1) “:6” manquant dans le résultat %MW2:6 := DINT_TO_ASCII (%MW1) %MW2:n := DINT_TO_ASCII (%KD7) %MW2:n où n ≠ 6 est incorrect %MW2:6 := DINT_TO_ASCII (%KD7) EIO0000001475 12/2017 Procédure Exemple d'application Pour l'instruction %MW0:6 := DINT_TO_ASCII(%MD10) Si... Alors… Valeur entière Valeur hexadécimale Représentation ASCII %MD10 = 1236589 %MW0 = 16#3231 2, 1 %MW1 = 16#3633 6, 3 %MW2 = 16#3835 8, 5 %MW3 = 16#0D37 ‘Entrée’, 9 %MW0 = 16#3534 5, 4 %MD10 = 45 %MD10 = -1236945 EIO0000001475 12/2017 %MW1 = 16#000D 'Entrée', %MW0 = 16#3145 1, ‘-‘ %MW1 = 16#3332 3, 2 %MW2 = 16#3936 9, 6 %MW3 = 16#3534 5, 4 %MW4 = 16#000D 'Entrée', 129 Procédure Sous-chapitre 3.6 Opérateurs de pile Opérateurs de pile Instructions de pile (MPS, MRD, MPP) Introduction Les instructions de pile gèrent le routage vers les bobines. Les instructions MPS, MRD et MPP utilisent une zone de stockage temporaire (appelée pile), qui peut mémoriser jusqu'à 32 expressions booléennes. NOTE : Elles ne peuvent pas être utilisées dans une expression comprise entre parenthèses. Syntaxe Le tableau suivant décrit les trois instructions de pile : Instruction Description Fonction MPS Mise en mémoire dans la pile (Memory Push onto Stack) Stocke le résultat de la dernière instruction logique (contenu de l'accumulateur) en haut de la pile. Cela décale les autres valeurs de la pile vers le bas. MRD Lecture mémoire depuis la pile (Memory Read from stack) Lit la valeur stockée en haut de la pile et la transmet à l'accumulateur. MPP Extraction mémoire depuis la pile (Memory Pop from Stack) Lit la valeur située dans le haut de la pile, la transmet à l’accumulateur et décale les autres valeurs de la pile vers le haut. NOTE : Pour chaque instruction MPS (mise en mémoire), il est recommandé d'afficher une instruction MPP (extraction) correspondante dans le même réseau. 130 EIO0000001475 12/2017 Procédure Fonctionnement Ce schéma explique comment les instructions de pile fonctionnent : Exemple d'application Exemple d'utilisation des instructions de pile : Réseau Instruction 0 LD AND MPS AND ST MRD AND ST MRD AND ST MPP AND ST %I0.0 %M1 %I0.1 %Q0.0 %I0.2 %Q0.1 %I0.3 %Q0.2 %I0.4 %Q0.3 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 131 Procédure Sous-chapitre 3.7 Instructions sur les tables d'objets Instructions sur les tables d'objets Objectif de cette section Cette section décrit les instructions permettant de gérer les tables d'objets de : Mots doubles Objets à virgule flottante Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 132 Page Affectation de tables de mots, mots doubles et valeurs flottantes 133 Fonctions de sommation de table 135 Fonction de comparaison de tables 137 Fonctions de recherche dans une table 139 Fonctions de recherche de valeurs maximum et minimum dans des tables 141 Nombre d'occurrences d'une valeur dans une table 143 Fonctions de décalage circulaire dans une table 144 Fonctions de tri de table 146 Fonctions LKUP (interpolation de table à virgule flottante) 147 Fonctions MEAN des valeurs d'une table de valeurs flottantes 152 EIO0000001475 12/2017 Procédure Affectation de tables de mots, mots doubles et valeurs flottantes Introduction Les instructions d'affectation peuvent s'exécuter sur les tables d'objets suivants : Valeur immédiate à table de mots (voir le réseau 0 de l'exemple de structure (voir page 134)) ou table de mots doubles Mot à table de mots (voir le réseau 1 de l'exemple de structure (voir page 134)) Table de mots à table de mots (voir le réseau 2 de l'exemple de structure (voir page 134)) La longueur (L) doit être la même pour les deux tables. Mot double à table de mots doubles Table de mots doubles à table de mots doubles La longueur (L) doit être la même pour les deux tables. Valeur flottante immédiate à table de valeurs flottantes Valeur flottante à table de valeurs flottantes Table de valeurs flottantes à table de valeurs flottantes La longueur (L) doit être la même pour les deux tables. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des affectations de tables de mots, mots doubles et valeurs flottantes : Opérateur Syntaxe := [Op1: = Op2] Op1 prend la valeur de Op2. Le tableau suivant détaille les opérandes : Type Op1 Op2 Table de mots %MWi:L, %SWi:L %MWi:L, %SWi:L, valeur entière immédiate, %MWi, %KWi, %IW, %QW, %SWi, %BLK.x Tables de mots doubles %MDi:L Valeur entière immédiate, %MDi, %KDi,%MDi:L, %KDi:L Tables de mots flottants %MFi:L Valeur immédiate à virgule flottante, %MFi, %KFi, %MFi:L, %KFi:L L Longueur de la table (255 au maximum). NOTE : L'abréviation %BLK.x (par exemple R3.I) permet de décrire tout mot de bloc fonction. EIO0000001475 12/2017 133 Procédure Structure Exemples d'affectations de tables de mots Réseau Instruction 0 LD 1 [%MW0:10:=100] 1 LD %I0.0 [%MW0:10:=%MW11] 2 LDR %I0.3 [%MW10:20:=%KW20:20] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 134 EIO0000001475 12/2017 Procédure Fonctions de sommation de table Introduction La fonction SUM_ARR effectue la somme de tous les éléments d'un tableau d'objet : Si la table est constituée de mots doubles, le résultat est donné sous la forme d'un mot double. Si la table est constituée de mots flottants, le résultat est donné sous la forme d'un mot flottant. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Format de l'instruction de sommation de table : Res:=SUM_ARR(Tab) Paramètres de l'instruction de sommation de table : Type Résultat (Res) Table (Tab) des tables de mots doubles ; %MDi %MDi:L,%KDi:L des tables de mots flottants. %MFi %MFi:L,%KFi:L L Longueur de la table (255 au maximum). NOTE : Le bit %S18 est mis à 1 lorsque le résultat n'est pas dans les limites du format double mot correspondant à l'opérande de la table. Structure Exemple de fonction de sommation : Réseau Instruction 0 LD %I0.2 [%MD5:=SUM_ARR(%MD3:1)] 1 LD 1 [%MD5:=SUM_ARR(%KD5:2)] 2 LD 1 [%MF2:=SUM_ARR(%MF8:5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 135 Procédure Exemple d'application %MD4:=SUM_ARR(%MD30:4) Où %MD30 = 10, %MD32 = 20, %MD34 = 30, %MD36 = 40 Donc %MD4 = 10+20+30+40 136 EIO0000001475 12/2017 Procédure Fonction de comparaison de tables Introduction La fonction EQUAL_ARR compare deux tables, élément par élément. Si une différence apparaît, le rang des premiers éléments dissemblables est retourné sous la forme d'un mot, sinon la valeur renvoyée est égale à -1. La comparaison porte sur la totalité de la table. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Format de l'instruction de comparaison de tables : Res:=EQUAL_ARR(Tab1,Tab2) Paramètres des instructions de comparaison de tables : Type Résultat (Res) Tables (Tab1 et Tab2) Tables de mots doubles %MWi %MDi:L,%KDi:L Tables de mots flottants %MWi %MFi:L,%KFi:L L Longueur de la table (255 au maximum). NOTE : Les tables doivent être obligatoirement de même longueur et de même type. Structure Exemple de fonction de comparaison de tables : Réseau Instruction 0 LD %I0.2 [%MW5:=EQUAL_ARR(%MD20:7,%KD0:7)] 1 LD 1 [%MW0:=EQUAL_ARR(%MD20:7,%KD0:7)] 2 LD 1 [%MF2:=SUM_ARR(%MF8:5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 137 Procédure Exemple d'application %MW5:=EQUAL_ARR(%MD30:4,%KD0:4) Comparaison des deux tables : Rang Table de Mots Tables de mots constants Différence 0 %MD30=10 %KD0=10 = 1 %MD32=20 %KD2=20 = 2 %MD34=30 %KD4=60 Différent 3 %MD36=40 %KD6=40 = La valeur du mot %MW5 est 2 (premier rang différent). 138 EIO0000001475 12/2017 Procédure Fonctions de recherche dans une table Introduction Trois fonctions de recherche sont proposées : FIND_EQR : recherche, dans une table de mots doubles ou flottants, de la position du premier élément égal à une valeur donnée. FIND_GTR : recherche, dans une table de mots doubles ou flottants, de la position du premier élément supérieur à une valeur donnée. FIND_LTR : recherche, dans une table de mots doubles ou flottants, de la position du premier élément inférieur à une valeur donnée. Le résultat de ces instructions est égal au rang du premier élément trouvé ou à -1 si la recherche est infructueuse. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Format des instructions de recherche dans une table : Fonction Syntaxe FIND_EQR Res:=Fonction(Tab,Val) FIND_GTR FIND_LTR Paramètres des instructions de recherche dans des tables de mots doubles et flottants : Type Résultat (Res) Table (Tab) Valeur (Val) Tables de mots flottants %MWi %MFi:L,%KFi:L %MFi,%KFi Tables de mots doubles %MWi %MDi:L,%KDi:L %MDi,%KDi L Longueur de la table (255 au maximum). EIO0000001475 12/2017 139 Procédure Structure Exemple de fonction de recherche dans une table : Réseau Instruction 0 LD %I0.2 [%MW5:=FIND_EQR(%MD20:7,%KD0)] 1 LD %I0.3 [%MW6:=FIND_GTR(%MD20:7,%KD0)] 2 LD 1 [%MW7:=FIND_LTR(%MF40:5,%KF4)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Exemple d'application %MW5:=FIND_EQR(%MD30:4,%KD0) Recherche de la position du premier mot double = %KD0=30 dans la table : Rang 140 Table de Mots Résultat 0 %MD30=10 - 1 %MD32=20 - 2 %MD34=30 Valeur (Val), rang 3 %MD36=40 - EIO0000001475 12/2017 Procédure Fonctions de recherche de valeurs maximum et minimum dans des tables Introduction Deux fonctions de recherche sont proposées : MAX_ARR : recherche de la valeur maximum dans une table de mots doubles et flottants. MIN_ARR : recherche de la valeur minimum dans une table de mots doubles et flottants. Le résultat de ces instructions est égal à la valeur maximum (ou minimum) trouvée dans la table. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions de recherche des valeurs maximum et minimum dans des tables : Fonction Syntaxe MAX_ARR Résultat:=Fonction(Onglet) MIN_ARR Paramètres des instructions de recherche des valeurs maximum et minimum dans des tables : Type Résultat (Res) Table (Tab) Tables de mots doubles %MDi %MDn:L,%KDn:L Tables de mots flottants %MFi %MFn:L,%KFn:L i Identificateur d'instance d'objet pour la variable mémoire. n Index mémoire de la table, indiquant l'adresse de base de la recherche. L Nombre de positions à prendre en compte lors d'une recherche, notamment l'index de l'adresse de base (valeur maximum de L : 255). NOTE : L ne compte que les adresses qui ne se recouvrent pas pendant la recherche. Pour plus d'informations, consultez la section Possibilité de recouvrement entre des objets (voir page 45). EIO0000001475 12/2017 141 Procédure Structure Exemple de fonction de recherche dans une table : Réseau Instruction 0 LD %I0.2 [%MD0:=MIN_ARR(%MD20:7)] 1 LD 1 [%MF8:=MIN_ARR(%MF40:5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 142 EIO0000001475 12/2017 Procédure Nombre d'occurrences d'une valeur dans une table Introduction La fonction OCCUR_ARR recherche dans une table de mots doubles ou flottants le nombre d'éléments égaux à une valeur donnée. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions de recherche de valeurs maximum et minimum dans une table : Fonction Syntaxe OCCUR_ARR Res:=Fonction(Tab,Val) Paramètres des instructions de recherche de valeurs maximum et minimum dans une table : Type Résultat (Res) Table (Tab) Valeur (Val) Tables de mots doubles %MWi %MDi:L,%KDi:L %MDi,%KDi Tables de mots flottants %MFi %MFi:L,%KFi:L %MFi,%KFi L Longueur de la table (255 au maximum). Structure Exemple de nombre d'occurrences : Réseau Instruction 0 LD %I0.3 [%MW5:=OCCUR_ARR(%MF20:7,%KF0)] 1 LD %I0.2 [%MW5:=OCCUR_ARR(%MD20:7,%MD1)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 143 Procédure Fonctions de décalage circulaire dans une table Introduction Deux fonctions de décalage sont proposées : ROL_ARR : réalise le décalage circulaire de n positions des éléments du haut vers le bas dans une table de mots flottants. Illustration des fonctions ROL_ARR ROR_ARR : réalise le décalage circulaire de n positions des éléments du bas vers le haut dans une table de mots flottants. Illustration des fonctions ROR_ARR 144 EIO0000001475 12/2017 Procédure Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe des instructions de décalage circulaire dans des tables de doubles mots ou flottants ROL_ARR et ROR_ARR Fonction Syntaxe ROL_ARR Fonction(n,Tab) ROR_ARR Paramètres des instructions de décalage circulaire pour les tables de mots flottants : ROL_ARR et ROR_ARR : Type Nombre de positions (n) Table (Tab) Tables de mots flottants %MWi, immediate value %MFi:L Tables de mots doubles %MWi, immediate value %MDi:L L Longueur de la table (255 au maximum). NOTE : Si la valeur de n est négative ou nulle, aucun décalage n'est effectué. Structure Exemple de fonction de décalage circulaire : Réseau Instruction 0 LD %I0.2 [ROL_ARR(%KW0,%MD20:7)] 1 LD %I0.3 [ROR_ARR(2,%MD20:7)] 2 LD %I0.4 [ROR_ARR(2,%MF40:5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 145 Procédure Fonctions de tri de table Introduction La fonction SORT_ARR trie par ordre croissant ou décroissant les éléments d'une table de mots doubles ou flottants, et stocke le résultat dans cette même table. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Format des fonctions de tri de table : Fonction Syntaxe SORT_ARR Fonction(sens,Tab) Le paramètre "sens" indique l'ordre de tri : Sens > 0 : le tri est croissant. Sens < 0 : le tri est décroissant. Sens = 0 : aucun tri n'est effectué. Le résultat (tableau trié) est renvoyé dans le paramètre Tab (table à trier). Paramètres des fonctions de tri de table : Type Sens du tri Table (Tab) Tables de mots doubles %MWi, immediate value %MDi:L Tables de mots flottants %MWi, immediate value %MFi:L L Longueur de la table (255 au maximum). Structure Exemple de fonction de tri de table : Réseau Instruction 0 LD %I0.1 [SORT_ARR(%MW20,%MF0:6)] 1 LD %I0.2 [SORT_ARR(%MW20,%MF0:6)] 2 LD %I0.3 [SORT_ARR(0,%MF40:8)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 146 EIO0000001475 12/2017 Procédure Fonctions LKUP (interpolation de table à virgule flottante) Introduction La fonction LKUP sert à interpoler un ensemble de données flottantes X par rapport à Y pour une valeur X donnée. Description de l'interpolation linéaire La fonction LKUP suit la règle d'interpolation linéaire, définie dans l'équation suivante : (Equation 1) pour , où ; en supposant que les valeurs sont classées par ordre croissant : . NOTE : Si les deux valeurs Xi consécutives sont égales (Xi=Xi+1=X), l'équation (1) fournit une exception non valide. Dans ce cas, l'algorithme suivant est utilisé à la place de l'équation (1) : (Equation 2) pour EIO0000001475 12/2017 , où . 147 Procédure Représentation graphique Le graphique suivant illustre la règle d'interpolation linéaire décrite ci-dessus : Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. La fonction LKUP utilise trois opérandes, dont deux sont des attributs de fonction, comme indiqué dans le tableau suivant : 148 Syntaxe Op1 Op2 Variable de sortie Valeur (X) définie par l'utilisateur défini par l'utilisateur [Op1: = LKUP(Op2,Op3)] %MWi Valeur entière, %MWi,or %KWi %MF0 Op3 Tableau de variables (Xi,Yi) EIO0000001475 12/2017 Procédure Définition de Op1 Op1 est le mot mémoire qui contient la variable de sortie de la fonction d'interpolation. Selon la valeur de Op1, l'utilisateur peut savoir si l'interpolation a été correctement effectuée, et connaître les causes d'un échec, comme indiqué dans le tableau suivant : Op1 (%MWi) Description 0 Interpolation réussie 1 Erreur d'interpolation détectée : tableau incorrect, Xm < Xm-1 2 Erreur d'interpolation détectée : Op2 hors limites, X < X1 4 Erreur d'interpolation détectée : Op2 hors limites, X > Xm 8 Taille incorrecte du tableau de données : Op3 est défini comme un nombre impair ou Op3 < 6. NOTE : Op1 ne contient pas la valeur d'interpolation calculée (Y). Pour une valeur (X) donnée, le résultat de l'interpolation (Y) est contenu dans %MF2 du tableau Op3 (voir page 149). Définition de Op2 Op2 est la variable flottante (%MF0 du tableau flottant Op3) qui contient la valeur (X) définie par l'utilisateur pour laquelle la valeur (Y) interpolée est calculée : Plage valide de Op2 : . Définition de Op3 Op3 définit la taille (Op3 / 2) du tableau de valeurs flottantes, où les paires de données (Xi, Yi) sont stockées. Les données Xi et Yi sont stockées dans des objets flottants avec des index pairs, à partir de %MF4 (notez que les objets flottants %MF0 et %MF2 sont réservés respectivement à la consigne utilisateur X et à la valeur Y interpolée). Avec un tableau de (m) paires de données (Xi,Yi), l'index supérieur (u) du tableau flottant (%MFu) est défini à l'aide des relations suivantes : EIO0000001475 12/2017 (Equation 3) (Equation 4) 149 Procédure La structure du tableau flottant Op3 (%MFi) est similaire à celle de l'exemple suivant (où Op3=8) : (X) (X1) %MF0 (X2) %MF4 (X3) %MF8 %MF12 %MF2 %MF6 %MF10 %MF14 (O) (Y1) (Y2) (Y3) (Op3 = 8) NOTE : En raison de la structure du tableau de valeurs flottantes ci-dessus, Op3 doit respecter les exigences suivantes, sinon une erreur sera générée dans la fonction LKUP : Op3 est un chiffre pair et Op3 ≥ 6 (au moins deux points de données doivent être disponibles pour permettre l'interpolation linéaire). Structure Les opérations d'interpolation sont effectuées de la façon suivante : Réseau Instruction 0 LD %I0.2 [%MW20:=LKUP(%MF0,%KW1)] 1 LD %I0.3 [%MW22:=LKUP(%MF0,10)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 150 EIO0000001475 12/2017 Procédure Exemple d'application Utilisation d'une fonction d'interpolation LKUP : [%MW20:=LKUP(%MF0,10)] Dans cet exemple : %MW20 est Op1 (la variable de sortie). %MF0 est la valeur (X) définie par l'utilisateur, dont la valeur (Y) correspondante doit être calculée par interpolation linéaire. %MF2 enregistre la valeur calculée (Y) générée par l'interpolation linéaire. 10 est Op3 (comme indiqué par l'équation 3 ci-dessus). Il définit la taille du tableau flottant. Elément de classement le plus élevé %MFu, où u=18 est fourni par l'équation 4 ci-dessus. Quatre paires de points de données sont stockées dans le tableau Op3 [%MF4,...%MF18] : %MF4 contient X1, %MF6 contient Y1. %MF8 contient X2, %MF10 contient Y2. %MF12 contient X3, %MF14 contient Y3. %MF16 contient X4, %MF18 contient Y4. EIO0000001475 12/2017 151 Procédure Fonctions MEAN des valeurs d'une table de valeurs flottantes Introduction La fonction MEAN permet de calculer la moyenne d'un nombre donné de valeurs dans une table de valeurs flottantes. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Syntaxe de la fonction de calcul de la moyenne d'une table de valeurs flottantes : Fonction Syntaxe MEAN Résultat=Fonction(Op1) Paramètres de la fonction de calcul d'un nombre donné L (255 au maximum) de valeurs dans un tableau de nombres à virgule flottante : Op1 Résultat (Res) %MFi:L, %KFi:L %MFi Structure Exemple de fonction de calcul de moyenne : Réseau Instruction 0 LD %I3.2 [%MF0:=MEAN(%MF10:5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 152 EIO0000001475 12/2017 Procédure Sous-chapitre 3.8 Instructions sur les objets d'E/S Instructions sur les objets d'E/S Objectif de cette section Cette section décrit les instructions exécutées sur les objets d'E/S. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Lecture immédiate d'entrée numérique intégrée (READ_IMM_IN) 154 Ecriture immédiate de sortie intégrée numérique (WRITE_IMM_OUT) 156 Instruction de lecture immédiate de paramètre de bloc fonction (READ_IMM) 158 Instruction d'écriture immédiate de paramètre de bloc fonction (WRITE_IMM) 159 EIO0000001475 12/2017 153 Procédure Lecture immédiate d'entrée numérique intégrée (READ_IMM_IN) Introduction L'instruction READ_IMM_IN lit une entrée numérique intégrée (entrée intégrée dans le contrôleur logique) lors de l'exécution d'une tâche et met immédiatement à jour l'image de l'entrée. Ainsi la mise à jour de l'image de l'entrée est effectuée sans attendre le cycle de tâches suivant. NOTE : Cette instruction n'est valide que pour les entrées numériques intégrées. NOTE : Si vous utilisez cette instruction, évaluez les performances relatives (activez et désactivez les délais) des entrées standard et des entrées rapides. Consultez la rubrique Entrées numériques. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour l'instruction READ_IMM_IN, utilisez la syntaxe suivante : Op1 := READ_IMM_IN(Op2) Où : Opérande Type Description Op1 %MWi Stocke le code de retour de la fonction (voir le tableau cidessous). Op2 Valeur immédiate (entier) %MWi %KWi Définit l'index de l'entrée (%I0.x). i Identificateur d'instance d'objet pour la variable mémoire. Code de retour de la fonction Ce tableau décrit les codes de retour de la fonction : 154 Code Description 0 Aucune erreur détectée. 1 L'entrée déclarée est supérieure à l'entrée maximale autorisée. 2 L'entrée déclarée est forcée. EIO0000001475 12/2017 Procédure Exemple %MW0 := READ_IMM_IN(2) Après l'exécution de ce bloc opération, la valeur actuelle de l'entrée %I0.2 est lue et l'image de l'entrée est immédiatement mise à jour. Le code de retour de la fonction est stocké dans le mot mémoire %MW0. Structure Exemple d'instruction READ_IMM_IN : Réseau Instruction 0 LD %M0 [%MW0:=READ_IMM_IN(%MW5)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 155 Procédure Ecriture immédiate de sortie intégrée numérique (WRITE_IMM_OUT) Introduction L'instruction WRITE_IMM_OUT écrit physiquement sur une sortie numérique intégrée (sortie intégrée dans le contrôleur logique) immédiatement ; la valeur est lue à partir de l'image de la sortie. Ainsi l'écriture dans la sortie intégrée est effectuée sans attendre le cycle de tâches suivant. NOTE : Cette fonction n'est valide que pour les sorties numériques intégrées. NOTE : Si vous utilisez cette instruction, évaluez les performances relatives (activez et désactivez les délais) des entrées standard et des entrées rapides. Consultez la rubrique Entrées numériques. Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour l'instruction WRITE_IMM_OUT, utilisez la syntaxe suivante : Op1 := WRITE_IMM_OUT(Op2) Où : Opérande Type Description Op1 %MWi Stocke le code de retour de la fonction (voir le tableau ci-dessous). Op2 Valeur immédiate (entier) %MWi %KWi Définit l'index de la sortie (%Q0.x). i Identificateur d'instance d'objet pour la variable mémoire. Code de retour de la fonction Ce tableau décrit les codes de retour de la fonction : 156 Code Description 0 Aucune erreur détectée. 3 La sortie déclarée est supérieure à la sortie maximale autorisée. 4 La sortie déclarée est forcée. 5 La sortie déclarée est utilisée comme sortie matérielle dédiée. 6 La sortie déclarée est utilisée comme sortie d'alarme. EIO0000001475 12/2017 Procédure Exemple %MW0 := WRITE_IMM_OUT(%MW5) (avec %MW5 = 2) Après l'exécution de ce bloc opération, l'image de la sortie %Q0.2 est physiquement écrite dans la sortie numérique intégrée. Le code de retour de la fonction est stocké dans le mot mémoire %MW0. Structure Exemple d'instruction WRITE_IMM_OUT : Réseau Instruction 0 LD %M0 [%MW0:= WRITE_IMM_OUT(%MW4)] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 157 Procédure Instruction de lecture immédiate de paramètre de bloc fonction (READ_IMM) Introduction L'instruction READ_IMM lit un paramètre de bloc fonction durant l'exécution d'une tâche et met à jour l'image d'entrée pendant le même cycle. Cette fonction est disponible uniquement pour certains paramètres de bloc fonction. L'instruction READ_IMM lit directement les données des registres HSC.V et HSC.P dans les blocs fonction de Compteur rapide (%HSC). Pour plus de détails, consultez Compteurs rapides (%HSC). Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour l'instruction READ_IMM, utilisez la syntaxe suivante : READ_IMM(Op1) Où : Opérande Type Description Op1 %HSCx.P, %HSCx.PD, %HSCx.V, %HSCx.VD Cette instruction lit un paramètre de bloc fonction fourni dans Op1, puis met à jour la valeur dans l'image d'E/S et le registre correspondant. x Identificateur d'instance d'objet pour le bloc fonction. Exemple Voici un exemple d'utilisation de l'instruction READ_IMM : Réseau Instruction 0 LD %M0 [READ_IMM(%HSC0.P)] NOTE : Pour obtenir le schéma à contacts équivalent, consultez la procédure de réversibilité (voir page 20). NOTE : Pour utiliser l'instruction READ_IMM, vous devez configurer l'application avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) d'au moins Niveau 3.3. 158 EIO0000001475 12/2017 Procédure Instruction d'écriture immédiate de paramètre de bloc fonction (WRITE_IMM) Introduction L'instruction WRITE_IMM écrit un paramètre de bloc fonction durant l'exécution d'une tâche et met à jour l'image de sortie pendant le même cycle. Cette fonction est disponible uniquement pour certains paramètres de bloc fonction. L'instruction WRITE_IMM écrit directement les données dans les registres HSC.V et HSC.P dans les blocs fonction de Compteur rapide (%HSC). Pour plus de détails, consultez Compteurs rapides (%HSC). Syntaxe La syntaxe en langage Liste d'instructions est décrite ci-après. Vous pouvez insérer des opérations et des instructions d'affectation en langage Liste d'instructions (voir page 23) dans des réseaux en langage Schéma à contacts, à l'aide d'un élément graphique Bloc opération. Pour l'instruction WRITE_IMM, utilisez la syntaxe suivante : WRITE_IMM(Op1) Où : Opérande Type Description Op1 %HSCx.P, %HSCx.PD, %HSCx.V, %HSCx.VD Cette instruction écrit un paramètre de bloc fonction fourni dans Op1, puis met à jour la valeur dans l'image d'E/S. x Identificateur d'instance d'objet pour le bloc fonction. Exemple Voici un exemple d'utilisation de l'instruction WRITE_IMM : Réseau Instruction 0 LD %M1 [WRITE_IMM(%HSC0.V)] NOTE : Pour obtenir le schéma à contacts équivalent, consultez la procédure de réversibilité (voir page 20). NOTE : Pour utiliser l'instruction WRITE_IMM, vous devez configurer l'application avec un niveau fonctionnel d'au moins Niveau 3.3. EIO0000001475 12/2017 159 Procédure 160 EIO0000001475 12/2017 SoMachine Basic Objets d'E/S EIO0000001475 12/2017 Chapitre 4 Objets d'E/S Objets d'E/S Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre Sujet Page 4.1 Bloc fonction Fast Counter (%FC) 162 4.2 Bloc fonction High Speed Counter (%HSC) 163 4.3 Bloc fonction Pulse (%PLS) 164 4.4 Bloc fonction Pulse Width Modulation (%PWM) 165 EIO0000001475 12/2017 161 Objets d'E/S Sous-chapitre 4.1 Bloc fonction Fast Counter (%FC) Bloc fonction Fast Counter (%FC) Fast Counter Présentation Consultez le Guide de la bibliothèque des fonctions avancées de votre contrôleur. 162 EIO0000001475 12/2017 Objets d'E/S Sous-chapitre 4.2 Bloc fonction High Speed Counter (%HSC) Bloc fonction High Speed Counter (%HSC) High Speed Counter Présentation Consultez le Guide de la bibliothèque des fonctions avancées de votre contrôleur. EIO0000001475 12/2017 163 Objets d'E/S Sous-chapitre 4.3 Bloc fonction Pulse (%PLS) Bloc fonction Pulse (%PLS) Pulse Présentation Consultez le Guide de la bibliothèque des fonctions avancées de votre contrôleur. 164 EIO0000001475 12/2017 Objets d'E/S Sous-chapitre 4.4 Bloc fonction Pulse Width Modulation (%PWM) Bloc fonction Pulse Width Modulation (%PWM) Pulse Width Modulation Présentation Consultez le Guide de la bibliothèque des fonctions avancées de votre contrôleur. EIO0000001475 12/2017 165 Objets d'E/S 166 EIO0000001475 12/2017 SoMachine Basic Objets de réseau EIO0000001475 12/2017 Chapitre 5 Objets de réseau Objets de réseau Objets de réseau Présentation Les objets de réseau permettent de communiquer via EtherNet/IP, Modbus TCP ou Scrutateur d'E/S Modbus série. Il existe deux types d'objet réseau pour les communications EtherNet/IP : %QWE : Input Assembly %IWE : Output Assembly Il existe deux types d'objet réseau pour les communications Modbus TCP : %QWM : registres d'entrée %IWM : registres de sortie Les types suivants d'objets de réseau sont utilisés pour le Scrutateur d'E/S Modbus série : %IN : entrées numériques (IOScanner) %QN : sorties numériques (IOScanner) %IWN : registres d'entrée (IOScanner) %QWN : registres de sortie (IOScanner) %IWNS : codes de diagnostic réseau du scrutateur d'E/S NOTE : les références à l'entrée et à la sortie s'entendent du point de vue du maître EtherNet/IP ou du client Modbus TCP. Pour plus d'informations sur la configuration des objets réseau, reportez-vous au Guide de programmation de votre contrôleur logique. EIO0000001475 12/2017 167 Objets de réseau 168 EIO0000001475 12/2017 SoMachine Basic Objets logiciels EIO0000001475 12/2017 Chapitre 6 Objets logiciels Objets logiciels Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre Sujet Page 6.1 Utilisation des blocs fonction 170 6.2 Timer (%TM) 177 6.3 Counter (%C) 187 6.4 Message (%MSG) et échange (EXCH) 195 6.5 LIFO/FIFO Register (%R) 221 6.6 Drums (%DR) 230 6.7 Shift Bit Register (%SBR) 238 6.8 Step Counter (%SC) 243 Blocs horodateurs (%SCH) 248 6.10 6.9 Horloge (%RTC) 254 6.11 PID 260 6.12 Journalisation des données 261 6.13 Etapes Grafcet 264 EIO0000001475 12/2017 169 Objets logiciels Sous-chapitre 6.1 Utilisation des blocs fonction Utilisation des blocs fonction Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 170 Page Principes de programmation des blocs fonction 171 Ajout d'un bloc fonction 174 Configuration d'un bloc fonction 176 EIO0000001475 12/2017 Objets logiciels Principes de programmation des blocs fonction Présentation Un bloc fonction est un objet réutilisable qui accepte une ou plusieurs valeurs d'entrée et renvoie une ou plusieurs valeurs de sortie. Vous pouvez insérer jusqu'à cinq blocs fonction en série dans chaque réseau Schéma à contacts. Vous ne pouvez pas insérer de blocs fonction en parallèle. Les paramètres du bloc fonction ne sont pas disponibles si : votre contrôleur ne prend pas en charge le bloc fonction ; le bloc fonction n'est pas configuré. Programmes en langage Schéma à contacts Pour utiliser un bloc fonction dans un réseau Schéma à contacts, procédez comme suit : Etape Action 1 Insérez (voir page 174) le bloc fonction dans un réseau. 2 Câblez les entrées et les sorties, si nécessaire. 3 Configurez (voir page 176) le bloc fonction en définissant les valeurs de ses paramètres. Programmes en langage Liste d'instructions Pour ajouter un bloc fonction dans un programme en langage Liste d'instructions, procédez au choix comme suit : Instructions de bloc fonction (par exemple, BLK %TM2) : cette méthode de programmation réversible permet d'effectuer des opérations sur le bloc en un emplacement du programme. Instructions spécifiques (par exemple, CU %Ci) : cette méthode non réversible permet d'effectuer des opérations sur les entrées du bloc fonction dans plusieurs endroits du programme. Par exemple : Ligne Instruction 1000 CU %C1 1074 CD %C1 1209 R %C1 EIO0000001475 12/2017 171 Objets logiciels Utilisez les instructions BLK, OUT_BLK, et END_BLK pour une programmation réversible des blocs fonction : BLK: Indique le début du bloc. OUT_BLK: Permet de câbler directement les sorties du bloc. END_BLK: Indique la fin du bloc. NOTE : Seules les instructions de test et d'entrée sur le bloc correspondant peuvent être placées entre les instructions BLK et OUT_BLK (ou entre BLK et END_BLK lorsque OUT_BLK n'est pas programmé). Exemple avec des sorties câblées Cet exemple montre un bloc fonction Counter dans un programme avec des sorties câblées : Réseau Instruction 0 BLK %C8 LDF %I0.1 R LD %I0.1 AND %M0 CU OUT_BLK LD D AND %M1 ST %Q0.0 END_BLK NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 172 EIO0000001475 12/2017 Objets logiciels Exemple sans aucune sortie câblée Cet exemple montre la programmation réversible d'un bloc fonction Counter sans aucune sortie câblée : Réseau Instruction 0 BLK %C8 LDF %I0.1 R LD %I0.2 AND %M0 CU END_BLK 1 LD AND ST %C8.D %M1 %Q0.4 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 173 Objets logiciels Ajout d'un bloc fonction Insertion d'un bloc fonction dans un programme en langage Schéma à contacts Procédez comme suit : Etape Action 1 Créez un réseau en langage Schéma à contacts dans l'espace de travail de programmation de SoMachine Basic. Pour plus d'informations, consultez le document SoMachine Basic Guide d'utilisation. 2 Cliquez sur le bouton Fonction dans la barre d'outils graphique située en haut de l'espace de travail de programmation. Résultat : la liste des objets de bloc fonction disponibles s'affiche (reportez-vous au tableau ci-dessous). 3 Sélectionnez le bloc fonction. 4 Déplacez-le vers la position souhaitée dans le réseau, puis cliquez sur le bouton gauche de la souris pour l'insérer. Vous pouvez insérer jusqu'à cinq blocs fonction en série dans chaque réseau. Objets de bloc fonction disponibles Ce tableau répertorie les objets de bloc fonction disponibles : Objet de bloc fonction Description Temporisateur Registre LIFO/FIFO Registre de bits à décalage Fonction pas à pas Compteur Compteur rapide (FC) Compteur rapide (HSC) 174 EIO0000001475 12/2017 Objets logiciels Objet de bloc fonction Description Drum RTC (Real-Time Clock) Impulsion Modulation de la largeur d'impulsion Message Journalisation des données Sortie à train d'impulsions NOTE : Pour obtenir la liste complète des objets PTO, consultez la section Blocs fonction PTO dans le document - Guide de la bibliothèque des fonctions avancée. Objets Drive NOTE : Pour obtenir la liste complète des objets Drive, consultez la section Blocs fonction Drive du document - Guide de la bibliothèque des fonctions avancée. Blocs fonction de communication NOTE : pour obtenir la liste complète des blocs fonction de communication, consultez Objets de communication (voir page 271). Bloc fonction défini par l'utilisateur EIO0000001475 12/2017 175 Objets logiciels Configuration d'un bloc fonction Configuration d'un bloc fonction dans un programme en langage Schéma à contacts Procédez comme suit : Etape Action 1 Cliquez éventuellement sur Adresse dans le bloc fonction. Une adresse par défaut s'affiche dans la zone de texte, par exemple "%TM0" pour un bloc fonction Timer. Pour modifier l'adresse par défaut, supprimez son dernier chiffre (identificateur de l'instance). La liste des adresses disponibles s'affiche. Sélectionnez l'adresse à utiliser pour identifier cette instance du bloc fonction. Les propriétés du bloc fonction s'affichent au centre de l'objet bloc fonction et dans le tableau Propriétés dans la moitié inférieure de l'espace de travail de programmation. A tout moment, double-cliquez dans le bloc fonction pour afficher ses propriétés. 2 Cliquez éventuellement sur Commentaire dans le bloc fonction, puis saisissez une brève description du bloc fonction. Par exemple, Temporisateur d'impulsion. 3 Cliquez éventuellement sur Symbole dans le bloc fonction et saisissez le nom du symbole à associer à ce bloc fonction. La liste des symboles existants, avec des noms commençant par le ou les caractères saisis, s'affiche. Cliquez sur celui que vous souhaitez utiliser. Pour créer un symbole de ce bloc fonction, saisissez le nom du symbole à créer, puis sélectionnez l'objet à associer au symbole. Pour plus d'informations sur l'utilisation des symboles, consultez le document SoMachine Basic - Guide d'utilisation (voir SoMachine Basic, Guide d'utilisation). 4 Cliquez sur le bloc fonction. Résultat : l'info-bulle Configuration apparaît. 5 Configurez les paramètres disponibles de chaque bloc fonction, comme indiqué dans la section "Paramètres" de la description d'un bloc fonction. Vous pouvez modifier les valeurs des objets en mode en ligne. Consultez la section Modifications en ligne (voir SoMachine Basic, Guide d'utilisation). NOTE : Vous pouvez également afficher le tableau Propriétés en double-cliquant sur le bloc fonction dans un réseau. 176 EIO0000001475 12/2017 Objets logiciels Sous-chapitre 6.2 Timer (%TM) Timer (%TM) Utilisation des blocs fonction Timer Cette section fournit des descriptions et des conseils de programmation pour utiliser les blocs fonction Timer. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 178 Configuration 179 TON : Timer On-Delay 181 TOF : Timer Off-Delay 183 TP : Pulse Timer 185 Exemple de programmation 186 EIO0000001475 12/2017 177 Objets logiciels Description Introduction Le bloc fonction Timer permet de définir le délai d'exécution d'une opération (par exemple, le déclenchement d'un événement). Illustration Cette illustration représente le bloc fonction Timer. Entrées Le bloc fonction Timer comporte l'entrée suivante : Libellé Description Valeur IN Adresse de l'entrée (ou instruction) Démarre le bloc fonction Timer lors de la détection d'un front montant (type TON ou TP) ou descendant (type TOF). Sorties Le bloc fonction Timer comporte la sortie suivante : 178 Libellé Description Valeur Q Adresse de sortie (%TMi.Q) Le bit associé %TMi.Q est défini sur 1 (en fonction du type Timer) à l'expiration du Timer. EIO0000001475 12/2017 Objets logiciels Configuration Paramètres Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. Le bloc fonction Timer a les paramètres suivants : Paramètre Description Valeur Modifiable en mode en ligne Utilisée Adresse utilisée Si ce paramètre est sélectionné, l'adresse en question est actuellement utilisée dans le programme. Non Adresse Adresse de l'objet Timer (%TMi) Un programme ne peut contenir qu'un nombre limité Non d'objets Timer. Consultez le Guide de programmation de la plate-forme concernée pour connaître le nombre maximum d'objets Timer. Symbole Symbole Type Type Timer Persistant True/False Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Non Une des valeurs suivantes : (voir page 181) : Timer on-Delay (par défaut) TOF (voir page 183) : Timer off-Delay TP (voir page 185) : Pulse timer (monostable) Oui1 TON Si l'option Persistant n'est pas cochée (option par Oui1 défaut), la valeur est réinitialisée lors de la détection d'un front descendant du paramètre IN. Le comptage redémarre à partir de 0. Si l'option Persistant est cochée, le temporisateur conserve la valeur si un front descendant du paramètre IN est détecté avant que la valeur Préréglage soit atteinte. Le comptage redémarre à partir de cette valeur. NOTE : pour utiliser le paramètre Persistant, l'application doit être configurée sur le niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) 3.3 au moins. 1 Le temporisateur est immédiatement remis à 0 après une modification de la valeur d'un paramètre en mode en ligne. EIO0000001475 12/2017 179 Objets logiciels Paramètre Description Valeur Base Base de temps Base de temps du temporisateur. Plus la base de Oui1 temps du bloc fonction Timer est petite, plus ce dernier est précis : 1 ms (pris en charge dans %TM0...%TM5) 10 ms 100 ms 1s 1 min (par défaut) Présélection Valeur de présélection 0...9999. La valeur par défaut est 9999. Oui1 Période du temporisateur = Présélection x Base de temps Délai du temporisateur = Présélection x Base de temps Cette valeur de présélection configurée peut être lue, testée et modifiée en utilisant l'objet associé %TMi.P. Commentaire Commentaire Un commentaire peut être associé à cet objet. 1 Modifiable en mode en ligne Non Le temporisateur est immédiatement remis à 0 après une modification de la valeur d'un paramètre en mode en ligne. Objets Le bloc fonction Timer comporte les objets suivants : 180 Objet Description Valeur %TMi.P Valeur de présélection Consultez la description dans le tableau Paramètres ci-dessus. %TMi.V Valeur en cours Mot qui s'incrémente de 0 à la valeur de présélection (%TMi.P) lorsque le temporisateur est en cours d'exécution. Le programme peut lire et tester cette valeur, mais pas l'écrire. Cette valeur peut être modifiée dans une table d'animation. %TMi.Q Sortie Timer Consultez la description dans le tableau Sorties ci-dessus. EIO0000001475 12/2017 Objets logiciels TON : Timer On-Delay Introduction Le temporisateur de type TON (On-Delay Timer) permet de contrôler les actions avec délai d'activation. Le logiciel permet de programmer ce délai. Cas particuliers Le tableau suivant présente une liste des cas spécifiques de programmation du bloc fonction temporisateur. Cas spécifique Description Effet d'un redémarrage à froid (%S0=1) Force la valeur à 0. Règle la sortie %TMi.Q sur 0. La valeur de présélection est réinitialisée sur la valeur définie lors de la configuration. Effet d'un redémarrage à chaud (%S1=1) Aucun effet sur la valeur de temporisation et la valeur de présélection du temporisateur. La valeur de temporisation n'est pas modifiée lors d'une coupure d'alimentation secteur. Effet d'un arrêt du contrôleur L'arrêt du contrôleur ne provoque pas le gel de la valeur. Effet d'un saut de programme Le saut d'un bloc temporisateur ne provoque pas le gel du temporisateur. L'incrémentation du temporisateur se poursuit jusqu'à ce que la valeur de présélection (%TMi.P) soit atteinte. A ce stade, l'état du bit Done (%TMi.Q) affecté à la sortie Q du bloc temporisateur est modifié. Cependant, la sortie associée, liée directement à la sortie du bloc, n'est ni activée, ni scrutée par le contrôleur. Test par bit %TMi.Q (bit Done) Ne testez le bit %TMi.Q qu'une fois dans le programme. Effet de la modification de la valeur de présélection %TMi.P La modification de la valeur de présélection à l'aide d'une instruction ou d'un réglage dans SoMachine Basic ne prend effet qu'à la prochaine activation du temporisateur. EIO0000001475 12/2017 181 Objets logiciels Chronogramme Ce schéma illustre le fonctionnement du bloc fonction Timer. (1) Le temporisateur (Timer) démarre sur le front montant de l'entrée IN. (2) La valeur %TMi.V augmente de 0 à %TMi.P par incréments d'une unité à chaque impulsion de la base de temps TB (3) Le bit de sortie %TMi.Q est réglé sur 1 lorsque la valeur atteint la valeur de présélection %TMi.P (4) Le bit de sortie %TMi.Q reste à 1 tant que la valeur de l'entrée IN est égale à 1. (5) Lorsqu'un front descendant est détecté sur l'entrée IN, le Timer est arrêté, même si la valeur de Timer n'a pas atteint %TMi.P. %TMi.V est défini à 0. Chronogramme avec option « Persistant » cochée Ce diagramme représente le fonctionnement du Timer de type TON lorsque l'option Persistant est sélectionnée. (1) Le temporisateur (Timer) démarre sur le front montant de l'entrée IN. (2) La valeur %TMi.V augmente de 0 à %TMi.P par incréments d'une unité à chaque impulsion de la base de temps TB (3) Sur le front descendant de l'entrée IN, le Timer est arrêté et reste en attente du front montant suivant de l'entrée IN (4) Sur le front montant de l'entrée IN, le Timer redémarre à partir de la valeur à laquelle il s'est arrêté (5) Le bit de sortie %TMi.Q est défini sur 1 lorsque la valeur atteint la valeur de présélection %TMi.P (6) Lorsqu'un front descendant est détecté à l'entrée IN, si le Timer a atteint la valeur de présélection %TMi.P, la valeur %TMi.V est définie sur 0 182 EIO0000001475 12/2017 Objets logiciels TOF : Timer Off-Delay Introduction Utilisez le type TOF (Off-Delay Timer) du temporisateur (Timer) pour contrôler les actions avec délai de désactivation. Le logiciel permet de programmer ce délai. Chronogramme Ce schéma illustre le fonctionnement du bloc fonction Timer. (1) Lors d'un front montant de l'entrée entrée IN, %TMi.Q est défini sur 1 (2) Le temporisateur (Timer) démarre sur le front descendant de l'entrée IN (3) La valeur %TMi.V augmente jusqu'à la valeur de présélection %TMi.P par incréments d'une unité, à chaque impulsion du paramètre de base de temps (TB). (4) Le bit de sortie %TMi.Q est réinitialisé sur 0 lorsque la valeur atteint la valeur de présélection %TMi.P. (5) Lors d'un front montant de l'entrée IN, %TMi.V est mis à 0. (6) Lors d'un front montant de l'entrée IN, %TMi.V est mis à 0 même si la valeur de présélection n'est pas atteinte. EIO0000001475 12/2017 183 Objets logiciels Chronogramme avec option « Persistant » cochée Ce diagramme représente le fonctionnement du Timer de type TOF lorsque l'option Persistant est sélectionnée. (1) Lors d'un front montant de l'entrée entrée IN, %TMi.Q est défini sur 1 (2) Le temporisateur (Timer) démarre sur le front descendant de l'entrée IN (3) La valeur %TMi.V augmente jusqu'à la valeur de présélection %TMi.P par incréments d'une unité à chaque impulsion du paramètre de base de temps TB (4) Sur le front montant de l'entrée IN, le temporisateur (Timer) est arrêté et reste en attente du front montant suivant de l'entrée IN. (5) Le bit de sortie %TMi.Q est réinitialisé sur 0 lorsque la valeur atteint la valeur de présélection %TMi.P. (6) Lors d'un front montant de l'entrée IN, %TMi.V est défini sur 0 et %TMi.Q est défini sur 1. 184 EIO0000001475 12/2017 Objets logiciels TP : Pulse Timer Introduction Le bloc fonction Timer de type TP (Pulse Timer) permet de créer des impulsions d'une durée précise. Le logiciel permet de programmer ce délai. Chronogramme Ce schéma illustre le fonctionnement du Timer de type TP. (1) Le Timer débute sur le front montant de l'entrée IN. La valeur actuelle %TMi.V est mise à 0 si le Timer n'a pas encore démarré, et %TMi.Q est mis à 1 lorsque le Timer démarre. (2) La valeur actuelle %TMi.V du bloc fonction Timer passe de 0 à la valeur de présélection %TMi.P, par incrément d'une unité à chaque impulsion du paramètre de base de temps (TB). (3) Le bit de sortie %TMi.Q est réglé sur 0 lorsque la valeur actuelle atteint la valeur de présélection %TMi.P. (4) La valeur actuelle %TMi.V est mise à 0 lorsque %TMi.V égale %TMi.P et que l’entrée IN revient à 0. (5) Ce type de bloc fonction Timer ne peut pas être remis à 0. (6) Lorsque %TMi.V est égal à %TMi.P et que l'entrée IN a pour valeur 0, %TMi.Q est mis à 0. EIO0000001475 12/2017 185 Objets logiciels Exemple de programmation Introduction Les blocs fonction Timer ont les modes de fonctionnement suivants : TON (Timer On-Delay) (voir page 181) : permet de spécifier un délai entre l'activation d'une entrée et la commutation d'un capteur de sortie. TOF (Timer Off-Delay) (voir page 183) : permet de spécifier un délai entre une sortie associée à un capteur qui n'est plus détecté et la commutation de la sortie correspondante. TP (Timer - Pulse) (voir page 185) : permet de créer une impulsion d'une durée précise. Les retards ou périodes d'impulsion des blocs fonction Timers sont programmables et configurables dans le logiciel Programmation Voici un exemple de bloc fonction Timer avec des instructions réversibles : Réseau Instruction réversible 0 BLK %TM0 LD %M0 IN OUT_BLK LD Q ST %Q0.0 END_BLK 1 LD ST [%TM0.V<400] %Q0.1 2 LD ST [%TM0.V>=400] %Q0.2 Voici un exemple du même bloc fonction Timer avec des instructions non réversibles : Réseau Instruction non réversible 0 LD IN %M0 %TM0 1 LD ST %TM0.Q %Q0.0 2 LD ST [%TM0.V<400] %Q0.1 3 LD ST [%TM0.V>=400] %Q0.2 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 186 EIO0000001475 12/2017 Objets logiciels Sous-chapitre 6.3 Counter (%C) Counter (%C) Utilisation des blocs fonction Counter Cette section fournit des descriptions et des conseils de programmation pour utiliser les blocs fonction Counter. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 188 Configuration 190 Exemple de programmation 193 EIO0000001475 12/2017 187 Objets logiciels Description Introduction Le bloc fonction Counter permet de compter ou de décompter des événements. Ces deux opérations peuvent être réalisées simultanément. Illustration Cette illustration représente le bloc fonction Counter. Entrées Le bloc fonction Counter a les entrées suivantes : 188 Libellé Description Valeur R Entrée (ou instruction) de réinitialisation (Reset) Le compteur (%Ci.V) est remis à 0 lorsque l'entrée de réinitialisation (R) est définie sur 1. S Entrée (ou instruction) de configuration (Set) Le compteur (%Ci.V) est défini sur la valeur de présélection (%Ci.P) lorsque l'entrée de configuration (S) est définie sur 1. CU Comptage croissant Incrémente la valeur du compteur (%Ci.V) de 1 lors d'un front montant sur l'entrée de comptage croissant (CU). CD Comptage décroissant Décrémente la valeur du compteur (%Ci.V) de 1 lors d'un front montant sur l'entrée de comptage décroissant (CD). EIO0000001475 12/2017 Objets logiciels Sorties Le bloc fonction Counter a les sorties suivantes : Libellé Description E Dépassement du Le bit associé %Ci.E (compteur vide) est mis à 1 lorsque le compteur comptage décroissant atteint la valeur 0. En cas de décrémentation, la valeur du compteur passe à 9999. D Sortie prédéfinie atteinte Le bit associé %Ci.D (comptage terminé) est mis à 1 lorsque %Ci.V = %Ci.P. F Dépassement du comptage croissant Le bit associé %Ci.F=1 (compteur saturé), lorsque la valeur de %Ci.V passe de 9999 à 0 (défini sur 1 lorsque %Ci.V atteint 0 et remis à 0 si le comptage croissant de Counter continue). EIO0000001475 12/2017 Valeur 189 Objets logiciels Configuration Paramètres Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. Le bloc fonction Counter a les paramètres suivants : Paramètre Description Valeur Modifiable en mode en ligne ? Utilisée Adresse utilisée Si ce paramètre est sélectionné, cette adresse est utilisée dans un programme. Non Adresse Adresse de l'objet Un programme ne peut contenir qu'un nombre limité Counter d'objets Counter. Pour connaître le nombre maximum de compteurs, consultez le Guide de programmation de votre contrôleur. Non Symbole Symbole Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Non Présélection Valeur de présélection Valeurs acceptées par la valeur de présélection [0 à 9999]. Oui La valeur par défaut est 9999. Cette valeur configurée peut être lue, testée et modifiée à l'aide de l'objet associé %Ci.P. Commentaire Commentaire Un commentaire peut être associé à cet objet. Non Objets Le bloc fonction Counter comporte les objets suivants : 190 Objet Description Valeur %Ci.V Valeur courante du bloc Counter Ce mot est incrémenté ou décrémenté en fonction des entrées (ou des instructions) CU et CD (voir le tableau Entrées (voir page 188)). Ne peut être que lu. Peut être modifié dans une table d'animation. %Ci.P Valeur de présélection Consultez le tableau Paramètres (voir page 190). Peut être modifié dans une table d'animation. %Ci.E Vide Consultez le tableau Sorties (voir page 189). Peut être modifié dans une table d'animation. %Ci.D Terminé Consultez le tableau Sorties (voir page 189). Peut être modifié dans une table d'animation. %Ci.F Complet Consultez le tableau Sorties (voir page 189). Peut être modifié dans une table d'animation. EIO0000001475 12/2017 Objets logiciels Opérations Ce tableau décrit les principales étapes des opérations du bloc fonction Counter : Opération Action Réinitialisation L'entrée R est mise à 1 (ou l'instruction La valeur courante de %Ci.V est forcée à 0. R est activée). Les sorties %Ci.E, %Ci.D et %Ci.F sont à 0. L'entrée de réinitialisation est prioritaire. Définition Si l'entrée S est mise à 1 (ou si l'instruction S est activée) et que l'entrée de réinitialisation est à l'état 0 (ou que l'instruction R est inactive). La valeur courante de %Ci.V prend la valeur de %Ci.P et la sortie %Ci.D est mise à 1. Comptage croissant Un front montant apparaît sur l'entrée de comptage croissant CU (ou instruction CU activée). La valeur courante de %Ci.V est augmentée d'une unité. La valeur courante de %Ci.V est égale à la valeur de présélection de %Ci.P. Résultat Le bit de sortie "valeur prédéfinie atteinte" %Ci.D passe à 1. La valeur courante de %Ci.V passe de Le bit de sortie %Ci.F (débordement de 9999 à 0. comptage croissant) passe à 1. Comptage décroissant EIO0000001475 12/2017 Si le bloc fonction Counter continue son comptage croissant. Le bit de sortie %Ci.F (débordement de comptage croissant) est remis à zéro. Un front montant apparaît sur l'entrée de comptage décroissant CD (ou instruction CD activée). La valeur courante de %Ci.V est décrémentée de 1 unité. La valeur courante de %Ci.V passe de 0 à 9999. Le bit de sortie %Ci.E (débordement de comptage décroissant) passe à 1. Si le bloc fonction Counter continue son comptage décroissant. Le bit de sortie %Ci.F (débordement de comptage décroissant) est remis à 0. 191 Objets logiciels Cas particuliers Le tableau suivant présente une liste de cas particuliers d'utilisation et de configuration du Counter : Cas particulier Description Effet d'un redémarrage à froid (%S0=1) ou INIT La valeur courante de %Ci.V est mise à 0. Les bits de sortie %Ci.E, %Ci.D, et %Ci.F sont mis à 0. La valeur de présélection est initialisée sur la valeur définie lors de la configuration. Effet d'un redémarrage à chaud (%S1=1) ou d'un arrêt du contrôleur Aucun effet sur la valeur courante du bloc Counter (%Ci.V). Effet de la modification de la valeur de présélection %Ci.P La modification de la valeur de présélection à l'aide d'une instruction ou d'un réglage ne prend effet qu'au moment du traitement du bloc par l'application (activation de l'une des entrées). NOTE : l'effet de INIT est identique à celui de %S0=1. 192 EIO0000001475 12/2017 Objets logiciels Exemple de programmation Introduction L'exemple suivant illustre un bloc fonction Counter permettant de compter jusqu'à 5000 articles. Chaque impulsion sur l'entrée %I0.2 (lorsque le bit interne %M0 est mis à 1) incrémente la valeur du bloc fonction Counter %C8 d'une unité, jusqu'à sa valeur de présélection finale (bit %C8.D=1). Le compteur est remis à zéro par l'entrée %I0.1. Programmation Voici un exemple de Counter avec des instructions réversibles : Réseau Instruction réversible 0 BLK %C8 LD %I0.1 R LD %I0.2 AND %M0 CU END_BLK 1 LD ST %C8.D %Q0.0 Voici un exemple du même bloc fonction Counter avec des instructions non réversibles : Réseau Instruction non réversible 0 LD R 1 LD %I0.2 AND %M0 CU %C8 2 LD ST %I0.1 %C8 %C8.D %Q0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Configuration Les paramètres suivants doivent être saisis lors de la configuration : Valeur Présélection (%Ci.P) : 5000 dans cet exemple. EIO0000001475 12/2017 193 Objets logiciels Exemple de compteur croissant/décroissant Cette illustration montre un bloc fonction Counter. Dans cet exemple, %M0 donne l'ordre d'incrémentation (%M0 = False) et de décrémentation (%M0 = True). Le compteur compte le front montant de %I0.0. Si %M0 a pour valeur False, lors de chaque front sur %I0.0, %C1.V est incrémenté jusqu'à atteindre la valeur de présélection %C1.P, et l'indicateur Done %C1.D passe à TRUE. La sortie %C1.D configure %M0 et bascule l'instruction vers l'ordre de décrémentation. Ensuite, à chaque front sur %I0.0, %C1.V est décrémenté jusqu'à atteindre 0. L'indicateur Empty (%C1.E) est activé et réinitialise %M0 (ordre d'incrémentation). 194 EIO0000001475 12/2017 Objets logiciels Sous-chapitre 6.4 Message (%MSG) et échange (EXCH) Message (%MSG) et échange (EXCH) Utilisation des blocs fonction Message Cette section fournit des descriptions et des conseils de programmation pour utiliser les blocs fonction Message. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Présentation 196 Description 198 Configuration 202 Exemple de programmation 207 Exemples ASCII 209 Requêtes et exemples Modbus standard 211 EIO0000001475 12/2017 195 Objets logiciels Présentation Introduction Il est possible de configurer un Logic Controller pour qu'il communique avec le protocole Modbus ou qu'il puisse envoyer et/ou recevoir des messages en mode caractères (ASCII). SoMachine Basic propose les fonctions suivantes pour ces communications : Instruction Exchange (EXCH pour émettre/recevoir des messages. Bloc fonction Message (%MSG) pour contrôler les échanges de données. Le Logic Controller utilise le protocole configuré pour le port spécifié, lors du traitement d'une instruction Exchange. Il est possible d'affecter un protocole différent à chaque port de communication. Pour accéder aux ports de communication, il suffit d'ajouter leur numéro à la fin de l'instruction Exchange (EXCH1, EXCH2) ou du bloc fonction Message (%MSG1, %MSG2). Les Logic Controller mettent en œuvre la messagerie Modbus TCP sur le réseau Ethernet grâce à l'instruction EXCH3 et au bloc fonction %MSG3. Ce tableau montre l'instruction Exchange et le bloc fonction Message utilisés pour accéder aux ports de communication du contrôleur : Port de communication Instruction d'échange Bloc fonction Message 2 lignes série EXCH1 %MSG1 EXCH2 %MSG2 EXCH1 %MSG1 EXCH3 %MSG3 1 ligne série et 1 Ethernet Instruction d'échange L'instruction Exchange permet à un Logic Controller d'envoyer des informations à des équipements ASCII ou Modbus, et/ou d'en recevoir. Vous définissez une table de mots (%MWi:L) contenant les informations de contrôle ainsi que les données à envoyer et/ou recevoir. Consultez la section Configuration de la table d'émission (voir page 204). Un échange de message s'effectue à l'aide de l'instruction Exchange. Syntaxe La syntaxe à utiliser pour l'instruction Exchange est la suivante : [EXCHx %MWi:L] Où x = numéro de port et L = nombre total de mots dans la table de mots. Le Logic Controller doit terminer l'échange ordonné par la première instruction Exchange pour qu'une nouvelle instruction Exchange puisse démarrer. Le bloc fonction Message doit être utilisé pour envoyer plusieurs messages. 196 EIO0000001475 12/2017 Objets logiciels Protocole ASCII Le protocole ASCII offre aux Logic Controller un protocole en mode caractères simple, permettant d'émettre et/ou de recevoir des données à l'aide d'un seul équipement. Ce protocole est pris en charge par l'instruction Exchange et contrôlé par le bloc fonction Message. Le protocole ASCII autorise trois types de communication : Emission seule Emission/réception Réception seule Protocole Modbus Dans le cas d'une liaison série, le protocole Modbus est un protocole maître-esclave qui permet à un seul maître de demander des réponses à des esclaves ou d'agir en fonction de la requête. Sur Ethernet, plusieurs maîtres (clients) peuvent échanger avec un esclave (serveur). Une adresse unique est affectée à chaque esclave. Le maître peut s'adresser à plusieurs esclaves individuellement ou envoyer un message général à tous les esclaves. Les esclaves renvoient un message (réponse) aux requêtes qui leur sont adressées individuellement. Les réponses aux requêtes de diffusion générale du maître ne sont pas renvoyées. Le mode Modbus maître permet au contrôleur d'envoyer une requête Modbus à un esclave et d'attendre la réponse. Le mode maître Modbus n'est pris en charge que par l'instruction Exchange. Les modes Modbus ASCII et RTU sont tous les deux pris en charge en mode maître Modbus. Le mode esclave Modbus permet au contrôleur de répondre à des requêtes Modbus standard provenant d'un maître Modbus. Pour plus d'informations sur le protocole Modbus, consultez le document Protocole d'application Modbus disponible à l'adresse http://www.modbus.org. Esclave Modbus Le protocole Modbus prend en charge deux formats de couche de liaison de données du Modèle OSI : ASCII et RTU. Chaque format est défini par l'implémentation de la couche physique. Le format ASCII utilise sept bits de données, tandis que le format RTU en utilise huit. En mode Modbus ASCII, chaque octet d'un message est envoyé sous la forme de deux caractères ASCII. La trame Modbus ASCII commence par un caractère de début (':') et se termine par deux caractères de fin (CR et LF). Par défaut, le caractère de fin de trame est 0x0A (LF). La valeur de contrôle de la trame Modbus ASCII correspond à un simple complément de deux de la trame (caractères de début et de fin non compris). Le mode Modbus RTU ne reformate pas le message avant de l'émettre. Mais, il utilise un mode de calcul de somme de contrôle différent, baptisé CRC. Les limitations de la couche de liaison de données Modbus sont les suivantes : Adresse 1 à 247 Bits : 128 bits sur demande Mots : 125 mots de 16 bits sur demande EIO0000001475 12/2017 197 Objets logiciels Description Introduction Le bloc fonction Message assure la gestion des échanges de données. Il a trois fonctions : Vérification des erreurs de communication Cette fonction vérifie la taille de chaque table d'échange, ainsi que la validité de l'échange par rapport à la configuration. Coordination de plusieurs messages : Pour garantir la coordination en cas d'envoi de plusieurs messages, le bloc fonction Message fournit les informations permettant de déterminer quand le message précédent est terminé. Emission de messages prioritaires : Le bloc fonction Message permet d'interrompre l'émission du message en cours afin de permettre l'envoi d'un message plus urgent. La programmation du bloc fonction Message est facultative. Lorsque des erreurs sont détectées, les codes sont écrits dans les mots système %SW63, %SW64 et %SW65 des blocs d'échange EXCH1, EXCH2 et EXCH3 respectivement. Pour plus d'informations, consultez le Guide de programmation de votre contrôleur. Illustration L'illustration suivante représente le bloc fonction Message : 198 EIO0000001475 12/2017 Objets logiciels Entrées Le bloc fonction Message comporte l'entrée suivante : Libellé Description Valeur R Entrée de réinitialisation (%MSGx.R) Réglé sur 1 pour réinitialiser la communication : La sortie de communication terminée (%MSGx.D) est mise à 1. La sortie d'erreur de communication détectée (%MSG.E) est mise à 0. Une erreur est définie sur un bloc fonction de communication actif (%READ_VAR, %WRITE_VAR, etc.).. Les connexions TCP actives à d'autres contrôleurs Modicon M221 Logic Controller sont fermées. NOTE : seul un bloc fonction Message, une instruction EXCH ou un bloc fonction de communication peut être actif à la fois sur un port de communication pendant un cycle de tâche maître. Si vous tentez d'utiliser plusieurs blocs fonction de communication, ou bien plusieurs instructions MSG ou EXCH simultanément sur le même port de communication, les blocs fonction renvoient un code d'erreur. Par conséquent, vérifiez qu'aucun échange actif (%MSGx.D réglé sur TRUE) n'est en cours sur un port de communication avant de démarrer un bloc fonction de communication, un bloc fonction Message ou une instruction EXCH. Vérifiez également que le scrutateur d'E/S n'est pas actif sur le port de communication. NOTE : le scrutateur d'E/S ne met pas à jour les sorties du bloc fonction %MSG. Par conséquent, le bit %MSG.D ne permet pas de déterminer la fonction du scrutateur d'E/S. EIO0000001475 12/2017 199 Objets logiciels Sorties Le bloc fonction Message a les sorties suivantes : Libellé Description D Communication Etat 1 : terminée (%MSGx.D) Fin d'émission (si émission) Fin de réception (caractère de fin reçu) Erreur Réinitialisation du bloc Valeur Etat 0 : requête en cours. E Etat 1 : Erreur de communication Commande non définie détectée (%MSGx.E) Configuration incorrecte de la table Réception d'un caractère incorrect (vitesse, parité, etc.) Table de réception pleine (non mise à jour) Etat 0 : message de longueur correcte, liaison établie. Pour connaître les codes écrits dans les mots système en cas d'erreur de communication détectée, consultez le tableau ci-dessous. Codes des erreurs de communication Ce tableau décrit les codes d'erreur écrits dans les mots système lorsqu'une erreur de communication est détectée : 200 Mot système Fonction Description %SW63 Code d'erreur Code d'erreur EXCH1 : 0 - opération réussie du bloc 1 - dépassement du nombre maximal d'octets à émettre (> 255) EXCH1 2 - table d'émission trop petite 3 - table de mots trop petite 4 - débordement de la table de réception 5 - timeout écoulé 6 - émission 7 - commande incorrecte dans la table 8 - port sélectionné non configuré/disponible 9 - erreur de réception: ce code d'erreur indique une trame de réception incorrecte ou endommagée. Cela peut être dû à une configuration incorrecte des paramètres physiques (parité, bits de données, débit en bauds, etc.) ou à une connexion physique non fiable entraînant une dégradation du signal. 10 - impossible d'utiliser %KW en cas de réception 11 - décalage d'émission plus important que la table d'émission 12 - décalage de réception plus important que la table de réception 13 - interruption du traitement EXCH par le contrôleur EIO0000001475 12/2017 Objets logiciels Mot système Fonction %SW64 Code d'erreur Code d'erreur EXCH2 : voir %SW63. de bloc EXCH2 %SW65 Code d'erreur 1-4, 6-13 : voir %SW63. (Remarque : le code d'erreur 5 est incorrect. Il est de bloc remplacé par les codes d'erreur 109 et 122 spécifiques à Ethernet qui sont EXCH3 décrits ci-dessous.) Les codes d'erreur suivants sont spécifiques à Ethernet ; 101 - adresse IP incorrecte 102 - absence de connexion TCP 103 - aucun socket disponible (toutes les voies de connexion sont occupées) 104 - réseau non opérationnel 105 - réseau inaccessible 106 - connexion interrompue par le réseau lors de la réinitialisation 107 - connexion abandonnée par équipement homologue 108 - connexion réinitialisée par équipement homologue 109 - timeout écoulé pour la connexion 110 - rejet de la tentative de connexion 111 - hôte non opérationnel 120 - index incorrect (l'équipement distant n'est pas indexé dans le tableau de configuration) 121 - erreur système (MAC, puce, adresse IP en double) 122 - timeout du processus de réception après l'envoi des données 123 - initialisation d'Ethernet en cours EIO0000001475 12/2017 Description 201 Objets logiciels Configuration Erreur détectée Si une erreur est détectée lors de l'utilisation d'une instruction Exchange, les bits %MSGx.D et %MSGx.E sont définis sur 1, le mot système %SW63 contient le code d'erreur du port 1 et %SW64 le code d'erreur du port 2. Consultez le chapitre Mots système du Guide de programmation du contrôleur logique. Opérations Ce tableau décrit les principales étapes des opérations du bloc fonction Message : Opération Action Réinitialisation L'entrée R est mise à 1 (ou l'instruction L'émission de tous les messages est interrompue. R est activée). La sortie d'erreur de communication est remise à 0. Le bit Done est mis à 1. Résultat Un nouveau message peut être envoyé. 202 Communication terminée La sortie D est mise à l'état 1. Le contrôleur logique est prêt à envoyer un autre message. Utilisez le bit %MSGx.D pour éviter de perdre des messages lors de l'envoi de plusieurs messages. Erreur de communication détectée La sortie d'erreur de communication est mise à 1 : En cas d'erreur de programmation des communications ou d'erreur de transmission du message. Si le nombre d'octets définis dans le bloc de données associé à l'instruction Exchange (mot 1, octet de poids faible) est supérieur à 128 (+80 en hexadécimal par FA). S'il existe un problème d'envoi d'un message Modbus à un équipement Modbus. Dans ce cas, vérifiez le câblage et assurez-vous que l'équipement de destination prend en charge la communication Modbus. EIO0000001475 12/2017 Objets logiciels Cas particuliers Ce tableau contient une liste de cas particuliers du Message : Cas particulier Description Effet d'un redémarrage à froid (%S0=1) ou INIT Force la réinitialisation de la communication. Effet d'un redémarrage à chaud (%S1=1) Aucun effet Effet d'un arrêt du contrôleur Si un message est en cours d'émission, le contrôleur interrompt le transfert et réinitialise les sorties %MSGx.D et %MSGx.E. NOTE : L'effet de INIT est identique à celui de %S0=1. Limitations Prenez note des limitations suivantes : La disponibilité du port 2 (pour le protocole ASCII) et son type (voir %SW7) ne sont vérifiés qu'à la mise sous tension ou à la réinitialisation. La présence du port 2 (pour le protocole Modbus) et sa configuration (RS-485) sont vérifiées lors de la mise sous tension ou de la réinitialisation. Tout message en cours de traitement sur le port 1 est abandonné lorsque SoMachine Basic est connecté. Les instructions Exchange abandonnent le traitement des esclaves Modbus actifs. Le traitement des instructions Exchange ne reprend pas en cas d'erreur détectée. Il est possible d'utiliser l'entrée RAZ pour annuler le traitement de la réception d'une instruction Exchange. Les instructions Exchange sont configurées avec un timeout si le protocole Modbus est utilisé. Les messages multiples sont contrôlés via %MSGx.D EIO0000001475 12/2017 203 Objets logiciels Configuration de la table d'émission/réception La taille maximale des trames émises et/ou reçues est de : 250 octets pour le protocole Modbus ; 256 octets pour le protocole ASCII. En outre, la table de mots associée à l'instruction Exchange comprend les tables de contrôle, d'émission et de réception : Octet de poids fort Modbus Table de contrôle Commande Décalage réception Table d'émission Octet de poids faible ASCII Octet 1 émis ... Modbus ASCII Longueur (émission/réception) Réservé (0) Décalage émission Réservé (0) Octet 2 émis ... Octet n émis Octet n+1 émis Table de réception Octet 1 reçu ... Octet 2 reçu ... Octet p reçu Octet p+1 reçu NOTE : Le contrôleur maître Modbus peut envoyer des requêtes à des esclaves individuellement, mais aussi une diffusion générale à tous les esclaves. En cas de diffusion générale, l'octet Commande doit être mis à 00, et l'adresse de l'esclave à 0. Table de contrôle du protocole ASCII L'octet Longueur contient la longueur de la table d'émission (250 octets max.), qui est remplacée par le nombre de caractères reçus à la fin de la réception, si la réception est demandée. L'octet Commande doit contenir l'une des valeurs suivantes : 0 : émission seule 1 : émission/réception 2 : réception seule 204 EIO0000001475 12/2017 Objets logiciels Table de contrôle du protocole Modbus L'octet Longueur contient la longueur de la table d'émission (250 octets max.), qui est remplacée par le nombre de caractères reçus à la fin de la réception, si la réception est demandée. Ce paramètre correspond à la longueur en octets de la table d'émission. Si le paramètre Décalage émission est égal à 0, ce paramètre sera égal à la longueur de la trame d'émission. Si le paramètre Décalage émission est différent de 0, un octet de la table d'émission (indiqué par la valeur de décalage) ne sera pas émis et ce paramètre sera égal à la longueur de la trame plus 1. En cas de requête Modbus RTU (sauf pour une diffusion générale), l'octet Commande doit toujours être égal à 1 (Tx et Rx). Pour une diffusion générale, il doit être égal à 0. L'octet Décalage émission contient le rang (1 pour le premier octet, 2 pour le deuxième octet, etc.) dans la table d'émission de l'octet à ignorer, lors de l'émission des octets. Il permet de gérer les problèmes liés aux valeurs d'octet/de mot dans le protocole Modbus. Par exemple, si cet octet est égal à 3, le troisième octet est ignoré, ce qui fait du quatrième octet de la table le troisième octet à émettre. L'octet Décalage réception contient le rang (1 pour le premier octet, 2 pour le deuxième octet, etc.) dans la table de réception à ajouter, lors de l'émission des octets. Il permet de gérer les problèmes liés aux valeurs d'octet/de mot dans le protocole Modbus. Par exemple, si cet octet contenait 3, le troisième octet de la table prendrait la valeur 0 et le troisième octet reçu serait stocké dans le quatrième emplacement de la table. Tables d'émission/réception du protocole ASCII En mode émission seule, les tables de contrôle et d'émission de type %MW sont remplies avant l'exécution de l'instruction Exchange (EXCH). Aucun espace n'est requis pour la réception de caractères en mode émission seule. Une fois tous les octets émis, %MSGx.D est mis à 1 et une nouvelle instruction Exchange (EXCH) peut être exécutée. En mode émission/réception, les tables de contrôle et d'émission sont remplies avant l'exécution de l'instruction Exchange. Elles doivent être de type %MW. Un espace pouvant accueillir jusqu'à 256 octets de réception est requis à la fin de la table d'émission. Une fois tous les octets émis, le contrôleur logique passe en mode réception et est prêt à recevoir des octets. En mode réception seule, la table de contrôle est remplie avant l'exécution de l'instruction Exchange. Elle doit être de type %MW. Un espace pouvant accueillir jusqu'à 256 octets de réception est requis à la fin de la table de contrôle. Le contrôleur logique passe immédiatement en mode réception et est prêt à recevoir des octets. La réception est terminée une fois que les octets de fin de trame utilisés ont été reçus ou lorsque la table de réception est pleine. Dans ce cas, un code d'erreur détectée (table de réception saturée) s'affiche dans les mots système %SW63 et %SW64. Si un timeout non nul est configuré, la réception se termine à l'expiration du timeout. Si vous sélectionnez une valeur de timeout nulle, il n'existe aucun timeout de réception. Par conséquent, pour arrêter la réception, vous devez activer l'entrée %MSGx.R. EIO0000001475 12/2017 205 Objets logiciels Table d'émission/réception du protocole Modbus Dans l'un ou l'autre mode (Modbus ASCII ou Modbus RTU), le contenu de la requête est stocké dans la table d'émission, avant l'exécution de l'instruction Exchange (EXCH). Lors de l'exécution, le contrôleur logique identifie la couche de liaison de données et effectue toutes les conversions nécessaires pour traiter l'émission et la réponse. Les caractères de début, de fin et de contrôle ne sont pas stockés dans les tables d'émission/réception. Une fois tous les octets émis, le contrôleur logique passe en mode réception et est prêt à recevoir des octets. La réception se termine de l'une des manières suivantes : un timeout est détecté sur un caractère ou une trame ; des caractères de fin de trame sont reçus en mode ASCII ; la table de réception est saturée. Les x entrées Octet émis contiennent les données Modbus (codage RTU) à émettre. Si le port de communication est configuré en Modbus ASCII, les caractères de trame corrects sont ajoutés à l'émission. Le premier octet contient l'adresse de l'équipement (spécifique ou diffusion générale), le deuxième octet contient le code de fonction, et le reste contient les informations associées à ce code de fonction. NOTE : Il s'agit d'une application type, mais toutes les possibilités ne sont pas définies. Aucune validation des données en cours d'émission n'est effectuée. Les x entrées Octets reçus contiennent les données Modbus (codage RTU) à recevoir. Si le port de communication est configuré en Modbus ASCII, les caractères de trame corrects sont supprimés de la réponse. Le premier octet contient l'adresse de l'équipement, le deuxième octet contient le code de fonction (ou code de réponse), et le reste contient les informations associées à ce code de fonction. NOTE : Il s'agit d'une application type, mais toutes les possibilités ne sont pas définies. Aucune validation des données en cours de réception n'est effectuée, à l'exception de la vérification de la somme de contrôle. 206 EIO0000001475 12/2017 Objets logiciels Exemple de programmation Introduction Les exemples ci-dessous illustrent la programmation d'un bloc fonction Message. Programmation de l'émission de plusieurs messages successifs L'exécution de l'instruction Exchange active un bloc fonction Message dans le programme d'application. Le message est transmis si le bloc fonction Message n'est pas déjà actif (%MSGx.D = 1). Si plusieurs messages sont envoyés au cours du même cycle, seul le premier est émis à l'aide du même port. Exemple d'émission de deux messages successifs sur le port 1 : Réseau Instruction réversible Commentaire 0 LD %M142 [%MW2:=16#0106] [%MW3:=0] [%MW4:=16#0106] [%MW5:=4] [%MW6:=7] Ecriture sur un esclave, à l'adresse 1 : valeur 7 sur le registre 4. [%MW2:=16#0106] : code de commande : 01 hex, longueur d'émission : 06 hex [%MW3:=0] : aucun décalage de réception ou d'émission [%MW4:=16#0106] adresse esclave : 01 hex, code de fonction : 06 hex (Écriture d'un registre) [%MW5:=4] : adresse du registre [%MW6:=7] : valeur à écrire 1 LD AND [EXCH1 R %MSG1.D %M0 %MW2:8] %M0 %MSG2.D : détecte si le port est occupé ou non, et gère la coordination de plusieurs messages. 2 LDR AND [EXCH1 S %I0.0 %MSG1.D %MW2:8] %M0 – NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 207 Objets logiciels Programmation d'un échange de réinitialisation Pour annuler un échange, activez l'entrée (ou l'instruction) R. Cette entrée initialise la communication et remet la sortie %MSGx.E à 0 et la sortie %MSGx.D à 1. Il est possible de réinitialiser un échange si une erreur est détectée. Exemple de réinitialisation d'un échange : Réseau Instruction réversible Commentaire 0 BLK %MSG1 LD %M0 R END_BLK – NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 208 EIO0000001475 12/2017 Objets logiciels Exemples ASCII Ecriture d'application Exemple d'application ASCII : Réseau Instruction Commentaire 0 LD 1 [%MW10:=16#0104] [%MW11:=16#0000] [%MW12:=16#4F4B] [%MW10:=16#0104] : code de commande : 01 hex, longueur d'émission : 04 hex [%MW11:=16#0000] : 0000 : null [%MW12:=16#4F4B] : OK 1 LD 1 AND %MSG2.D [EXCH2 %MW10:8] NOTE : cette table comporte huit éléments : 2 LD ST END %MSG2.E %Q0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Utilisez SoMachine Basic pour créer un programme contenant trois réseaux : Tout d'abord, initialisez les tables de contrôle et d'émission à utiliser pour l'instruction Exchange Dans cet exemple, une commande est configurée pour envoyer et recevoir des données. Le volume de données à envoyer est de 4 octets (comme défini dans l'application), suivis par le caractère de fin de trame spécifié dans la configuration. Les caractères de début et de fin ne sont pas affichés dans la table d'animation, où seuls les caractères de données apparaissent. Quoi qu'il en soit, ces caractères sont automatiquement émis ou vérifiés lors de la réception (par %SW63 et %SW64), lorsqu'ils sont utilisés. NOTE : Les caractères de fin définis dans la configuration sont envoyés automatiquement dans la fin de la trame. Par exemple, si vous avez configuré 10 comme premier caractère de fin de trame et 13 comme deuxième caractère de fin de trame, 16#0A0D (codes ASCII, 0A = LF et 0D = CR) est envoyé dans la fin de la trame. Vérifiez ensuite le bit d'état associé à %MSG2 et exécutez l'instruction EXCH2 uniquement si le port est prêt. Une valeur de 8 mots est spécifiée pour l'instruction EXCH2. Il existe deux mots de contrôle (%MW10 et %MW11), deux mots à utiliser pour émettre des informations (%MW12 et %MW13) et quatre mots pour recevoir des données (%MW14 à %MW17). Enfin, l'état d'erreur de %MSG2 est détecté et stocké dans le premier bit de sortie des E/S locales du contrôleur de base. Pour accroître la précision, il est possible d'effectuer un traitement supplémentaire à l'aide de %SW64. EIO0000001475 12/2017 209 Objets logiciels Initialisation de la table d'animation Exemple d'initialisation d'une table d'animation en mode en ligne : Adresse Valeur Format %MW10 0104 Hexadécimal %MW11 0000 Hexadécimal %MW12 4F4B Hexadécimal %MW13 0A0D Hexadécimal %MW14 AL ASCII %MW15 OH ASCII %MW16 A ASCII Pour afficher les formats possibles, cliquez avec le bouton droit de la souris sur le champ Valeurs dans une table d'animation. L'étape finale consiste à charger cette application sur le contrôleur et à l'exécuter. Initialisez une table d'animation pour animer et afficher les mots %MW10 à %MW16. Ces informations sont échangées avec un Logic Controller et affichées dans une table d'animation. 210 EIO0000001475 12/2017 Objets logiciels Requêtes et exemples Modbus standard Maître Modbus : lecture de N bits Cette table représente les requêtes 01 et 02 (01 pour le bit mémoire ou de sortie, 02 pour le bit d'entrée) : Table de contrôle Table d'émission Table de réception (après réponse) Table Index Octet de poids fort Octet de poids faible 0 01 (Emission/Réception) 06 (longueur d'émission)(1) 1 03 (Décalage réception) 00 (Décalage émission) 2 Slave@(1 à 247) 01 ou 02 (Code de requête) 3 Adresse du premier bit à lire dans l'esclave 4 N1 = Nombre de bits à lire 5 Slave@(1 à 247) 01 ou 02 (Code de réponse) 6 00 (octet ajouté par l'action de décalage de Rx) N2 = Nombre d'octets de données à lire = [1+(N1-1)/8], où le résultat est la partie entière de la division. 7 Valeur du premier bit (valeur 00 ou 01) convertie en un octet Valeur du deuxième bit (si N2 > 1) convertie en un octet 8 Valeur du troisième bit (si N1 > 1) convertie en un octet – ... … ... (N2/2) + 6 (si N2 est pair) (N2/2 + 1) + 6 (si N2 est impair) ème bit Valeur du N2 (si N1 > 1) convertie en un octet – (1) Cet octet reçoit également la longueur de la chaîne émise après réponse.. EIO0000001475 12/2017 211 Objets logiciels Maître Modbus : lecture de N mots Cette table représente les requêtes 03 et 04 (03 pour le mot mémoire ou de sortie, 04 pour le mot d'entrée) : Table de contrôle Table d'émission Table de réception (après réponse) Table Index Octet de poids fort Octet de poids faible 0 01 (Emission/Réception) 06 (longueur d'émission)(1) 1 03 (Décalage réception) 00 (Décalage émission) 2 Slave@(1 à 247) 03 ou 04 (Code de requête) 3 Adresse du premier mot à lire 4 N = Nombre de mots à lire 5 Slave@(1 à 247) 03 ou 04 (Code de réponse) 6 00 (octet ajouté par l'action de décalage de Rx) 2*N (nombre d'octets lus) 7 Premier mot lu 8 Deuxième mot lu (si N>1) ... ... N+6 Nième mot lu (si N>2) (1) Cet octet reçoit également la longueur de la chaîne émise après réponse.. NOTE : Le décalage de 3 de la réception ajoute un octet (valeur = 0) à la troisième position de la table de réception. Ce qui assure un bon positionnement dans la table, du nombre d'octets lus et des valeurs des mots lus. 212 EIO0000001475 12/2017 Objets logiciels Maître Modbus : écriture de bit Cette table représente la requête 05 (écriture d'un bit : sortie ou mémoire) : Table de contrôle Table d'émission Table Index Octet de poids fort Octet de poids faible 0 01 (Emission/Réception) 06 (longueur d'émission)(1) 1 00 (Décalage réception) 00 (Décalage émission) 2 Slave@(1 à 247) ou 0 en cas de diffusion 05 (Code de requête) 3 Valeur pour écrire l'octet de poids fort du mot d'index 4 ; 0xFF ou 0x00(2). 4 Valeur du bit à écrire dans l'esclave (16#0000 = False et 16#FF00 = True) Table de réception 5 (après réponse) 6 7 Slave@(1 à 247) 05 (Code de réponse) Adresse du bit écrit Valeur écrite (1) Cet octet reçoit également la longueur de la chaîne émise après réponse.. (2) Pour affecter la valeur 1 à un bit, le mot associé dans la table d'émission doit contenir la valeur FF00H, et 0 pour affecter la valeur 0 à un bit. NOTE : Il n'est pas nécessaire d'utiliser le décalage pour cette requête. La trame de la réponse est identique à celle de la requête (normalement). EIO0000001475 12/2017 213 Objets logiciels Maître Modbus : écriture de mot Cette table représente la requête 06 (écriture d'un mot : sortie ou mémoire) : Table de contrôle Table d'émission Table de réception (après réponse) Table Index Octet de poids fort Octet de poids faible 0 01 (Emission/Réception) 06 (longueur d'émission)(1) 1 00 (Décalage réception) 00 (Décalage émission) 2 Slave@(1 à 247) ou 0 en cas de 06 (Code de requête) diffusion 3 Adresse du mot à écrire 4 Valeur du mot à écrire 5 Slave@(1 à 247) 6 Adresse du mot écrit 7 Valeur écrite 06 (Code de réponse) (1) Cet octet reçoit également la longueur de la chaîne émise après réponse.. NOTE : Il n'est pas nécessaire d'utiliser le décalage pour cette requête. La trame de la réponse est identique à celle de la requête (normalement). 214 EIO0000001475 12/2017 Objets logiciels Maître Modbus : écriture de N bits Cette table représente la requête 15 (écriture de N bits : sortie ou mémoire) : Table Index Octet de poids fort Octet de poids faible Table de contrôle 0 01 (Emission/Réception) 8 + nombre d'octets (émission) 1 00 (Décalage réception) Table d'émission 2 Slave@(1 à 247) ou 0 en 15 (Code de requête) cas de diffusion 07 (Décalage émission) 3 Adresse du premier bit à écrire 4 N1 = Nombre de bits à écrire 5 00 (octet non envoyé, effet de décalage) N2 = Nombre d'octets de données à écrire = [1+(N1-1)/8], où le résultat est la partie entière de la division. 6 Valeur du premier octet Valeur du deuxième octet 7 Valeur du troisième octet Valeur du quatrième octet ... … ... (N2/2) + 5 (si N2 est pair) Valeur du N2ème octet (N2/2 + 1) + 5 (si N2 est impair) Table de réception (après réponse) – Slave@(1 à 247) 15 (Code de réponse) – Adresse du premier bit écrit – Nombre de bits écrits (= N1) NOTE : Le décalage d'émission de 7 supprime le septième octet de la trame envoyée. Ceci permet également d'assurer une bonne correspondance avec les valeurs des mots dans la table d'émission. EIO0000001475 12/2017 215 Objets logiciels Maître Modbus : écriture de N mots La table suivante représente la requête 16 : Table Index Table de contrôle Table d'émission Table de réception (après réponse) Octet de poids fort Octet de poids faible 0 01 (Emission/Réception) 8 + (2*N) (Longueur émission) 1 00 (Décalage réception) 07 (Décalage émission) 2 Slave@(1 à 247) ou 0 en cas de 16 (Code de requête) diffusion 3 Adresse du premier mot à écrire 4 N = Nombre de mots à écrire 5 00 (octet non envoyé, effet de décalage) 6 Première valeur de mot à écrire 7 Deuxième valeur à écrire ... ... N+5 N valeurs à écrire N+6 Slave@(1 à 247) N+7 Adresse du premier mot écrit N+8 Nombre de mots écrits (= N) 2*N = Nombre d'octets à écrire 16 (Code de réponse) NOTE : Le décalage d'émission de 7 supprime le septième octet de la trame envoyée. Ceci permet également d'assurer une bonne correspondance avec les valeurs des mots dans la table d'émission. Requête Modbus : lire l'identification des équipements Cette table représente la requête 43 (lire l'identification des équipements) : 216 Réseau Instruction Commentaire 0 LD 1 [%MW800:=16#0105] [%MW801:=16#0000] [%MW802:=16#032B] [%MW803:=16#0E01] [%MW804:=16#0000] [%MW800:=16#0105] : en-tête Modbus standard [%MW801:=16#0000] : aucun décalage d'émission et de réception [%MW802:=16#032B] : adresse de l'esclave, code fonction [%MW803:=16#0E01] : type MEI, lecture du code d'identification des équipements [%MW804:=16#0000] : ID d'objet, inutilisé EIO0000001475 12/2017 Objets logiciels Requête Modbus : diagnostic Cette table représente la requête 8 (diagnostic) : Réseau Instruction Commentaire 0 LD 1 [%MW1000:=16#0106] [%MW1001:=16#0000] [%MW1002:=16#0308] [%MW1003:=16#0000] [%MW1004:=16#1234] [%MW1000:=16#0106] : en-tête Modbus standard [%MW1001:=16#0000] : aucun décalage d'émission et de réception [%MW1002:=16#0308] : adresse de l'esclave, code fonction [%MW1003:=16#0000] : code de sous-fonction [%MW1004:=16#1234] : toute donnée L'esclave répond en envoyant une copie de la requête. Ce mode est appelé Echo ou Miroir. Exemple 1 : écriture d'application Modbus Programme du maître : Réseau Instruction Commentaire 0 LD 1 [%MW0:=16#0106] [%MW1:=16#0300] [%MW2:=16#0203] [%MW3:=16#0000] [%MW4:=16#0004] [%MW0:=16#0106] : longueur d'émission = 6 [%MW1:=16#0300][ : décalage de réception = 3, décalage d'émission = 0 %MW2 à %MW4 : émission [%MW2:=16#0203] : esclave 2, fonction 3 (lecture de plusieurs mots) [%MW3:=16#0000] : adresse du premier mot à lire dans l'esclave : jusqu'à l'adresse 0 [%MW4:=16#0004] : nombre de mots à lire : 4 (%MW0 à %MW3) 1 LD 1 AND %MSG2.D [EXCH2 %MW0:11] – 2 LD ST END – EIO0000001475 12/2017 %MSG2.E %Q0.0 217 Objets logiciels Programme de l'esclave : Réseau Instruction Commentaire 0 LD 1 [%MW0:=16#6566] [%MW1:=16#6768] [%MW2:=16#6970] [%MW3:=16#7172] END – NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). A l'aide de SoMachine Basic, créez un programme d'application pour le maître et l'esclave. Pour l'esclave, écrivez des mots mémoire et attribuez-leur des valeurs connues. Dans le maître, la table de mots de l'instruction Exchange est initialisée pour lire quatre mots sur l'esclave à l'adresse Modbus 2, à partir de l'emplacement %MW0. NOTE : Remarquez l'utilisation du décalage de réception défini dans le mot %MW1 du maître Modbus. Ce décalage de trois ajoute un octet (valeur = 0) à la troisième position de la zone de réception de la table. Il permet d'aligner les mots dans le maître de façon à ce qu'ils correspondent exactement aux limites de mot. Sans ce décalage, chaque mot de données serait fractionné en deux dans le bloc Exchange. Ce décalage est utilisé pour des raisons de commodité. Avant d'exécuter l'instruction EXCH, l'application vérifie le bit de communication associé à %MSG2. Enfin, l'état d'erreur de %MSG2 est détecté et stocké dans le premier bit de sortie des E/S locales du contrôleur de base. Pour accroître la précision, il est possible d'effectuer un contrôle d'erreur supplémentaire à l'aide de %SW64. Table d'animation s'initialisant en mode en ligne et correspondant à la partie de la table de réception : Adresse Valeur Format %MW5 0203 Hexadécimal %MW6 0008 Hexadécimal %MW7 6566 Hexadécimal %MW8 6768 Hexadécimal %MW9 6970 Hexadécimal %MW10 7172 Hexadécimal Après le chargement et la configuration de chaque Logic Controller à exécuter, ouvrez une table d'animation sur le maître. Dans la section réponse de la table, vérifiez que le code de réponse est 3 et que le nombre d'octets lus est correct. Notez également, dans cet exemple, que les mots lus sur l'esclave (à partir de %MW7) correspondent aux limites de mot dans le maître. 218 EIO0000001475 12/2017 Objets logiciels Exemple 2 : écriture d'application Modbus Programme du maître : Réseau Instruction Commentaire 0 LD 1 [%MW0:=16#010C] [%MW1:=16#0007] [%MW2:=16#0210] [%MW3:=16#0010] [%MW4:=16#0002] [%MW5:=16#0004] [%MW6:=16#6566] [%MW7:=16#6768] [%MW0:=16#010C] : longueur de la table d'émission : 0C hex = 12 dec, de %MW2 à %MW7 [%MW1:=16#0007] [%MW2:=16#0210] : adresse de l'esclave 2, code fonction 10h déclenchant l'écriture de mots [%MW3:=16#0010] : à partir de l'adresse 16 dans l'esclave [%MW4:=16#0002] : écriture de 2 mots [%MW5:=16#0004] : nombre d'octets à écrire [%MW6:=16#6566] : valeur du premier mot [%MW7:=16#6768] : valeur du second mot 1 LD 1 AND %MSG2.D [EXCH2 %MW0:12] – 2 LD ST END – %MSG2.E %Q0.0 Programme de l'esclave : Réseau Instruction Commentaire 0 LD 1 [%MW18:=16#FFFF] END – NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). A l'aide de SoMachine Basic, créez un programme d'application pour le maître et l'esclave. Pour l'esclave, écrivez un mot mémoire unique %MW18. Cela allouera sur l'esclave l'espace nécessaire aux adresses mémoire de %MW0 à %MW18. Sans cet espace, la requête Modbus tenterait d'écrire dans des emplacements qui n'existent pas sur l'esclave. Dans le maître, la table de mots de l'instruction EXCH2 est initialisée pour lire 4 octets sur l'esclave à l'adresse Modbus 2 et à l'adresse %MW16 (10 en hexadécimal). NOTE : Remarquez l'utilisation du décalage d'émission défini dans le mot %MW1 de l'application maître Modbus. Ce décalage de sept supprime l'octet de poids fort dans le sixième mot (valeur 00 hexadécimale dans %MW5). Cette action permet d'aligner les valeurs de données dans la table d'émission de la table de mots, de façon à ce qu'elles respectent les limites de mot. EIO0000001475 12/2017 219 Objets logiciels Avant d'exécuter l'instruction EXCH2, l'application vérifie le bit de communication associé à %MSG2. Enfin, l'état d'erreur de %MSG2 est détecté et stocké dans le premier bit de sortie des E/S locales du contrôleur de base. Pour accroître la précision, il est possible d'effectuer un contrôle supplémentaire d'erreur détectée à l'aide de %SW64. Initialisation d'une table d'animation sur le maître : Adresse Valeur Format %MW0 010C Hexadécimal %MW1 0007 Hexadécimal %MW2 0210 Hexadécimal %MW3 0010 Hexadécimal %MW4 0002 Hexadécimal %MW5 0004 Hexadécimal %MW6 6566 Hexadécimal %MW7 6768 Hexadécimal %MW8 0210 Hexadécimal %MW9 0010 Hexadécimal %MW10 0004 Hexadécimal Initialisation d'une table d'animation sur l'esclave : Adresse Valeur Format %MW16 6566 Hexadécimal %MW17 6768 Hexadécimal Après le chargement et la configuration de chaque Logic Controller à exécuter, ouvrez une table d'animation sur le contrôleur esclave. Les deux valeurs de %MW16 et %MW17 sont écrites sur l'esclave. Dans le maître, il est possible d'utiliser la table d'animation pour examiner la partie table de réception des données d'échange. Ces données affichent l'adresse de l'esclave, le code de réponse, le premier mot écrit et le nombre de mots écrits à partir de %MW8 dans l'exemple cidessus. 220 EIO0000001475 12/2017 Objets logiciels Sous-chapitre 6.5 LIFO/FIFO Register (%R) LIFO/FIFO Register (%R) Utilisation des blocs fonction LIFO/FIFO Register Cette section fournit des descriptions et des conseils de programmation pour utiliser les blocs fonction LIFO/FIFO Register. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 222 Configuration 224 Fonction du registre LIFO 226 Fonctionnement du registre FIFO 227 Exemple de programmation 228 EIO0000001475 12/2017 221 Objets logiciels Description Introduction Le bloc fonction LIFO/FIFO Register est un bloc mémoire capable de stocker jusqu'à 16 mots de 16 bits de deux manières différentes : dans une file d'attente, appelée "FIFO" (First In, First Out – Premier entré, Premier sorti) ; dans une pile, appelée "LIFO" (Last In, First Out – Dernier entré, Premier sorti). Illustration Cette illustration décrit le bloc fonction LIFO/FIFO Register. Entrées Le bloc fonction LIFO/FIFO Register a les entrées suivantes : 222 Libellé Description Valeur R Entrée (ou instruction) de RAZ A l'état 1, initialise le bloc fonction LIFO/FIFO Register. I Entrée (ou instruction) de stockage En cas de front montant, stocke le contenu du mot associé %Ri.I dans le bloc fonction LIFO/FIFO Register. O Entrée (ou instruction) de récupération En cas de front montant, charge un mot de données du bloc fonction LIFO/FIFO Register dans le mot associé %Ri.O. EIO0000001475 12/2017 Objets logiciels Sorties Le bloc fonction LIFO/FIFO Register a les sorties suivantes : Libellé Description E Sortie vide (%Ri.E) Le bit associé %Ri.E indique que le bloc fonction LIFO/FIFO Register est vide. La valeur de %Ri.E peut être testée, par exemple dans une table d'animation ou avec une instruction. F Sortie pleine (%Ri.F) EIO0000001475 12/2017 Valeur Le bit associé %Ri.F indique que le bloc fonction LIFO/FIFO Register est saturé. La valeur de %Ri.F peut être testée, par exemple dans une table d'animation ou avec une instruction. 223 Objets logiciels Configuration Paramètres Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. Le bloc fonction LIFO/FIFO Register a les paramètres suivants : Paramètre Description Valeur Modifiable en mode en ligne ? Utilisée Adresse utilisée Si ce paramètre est sélectionné, cette adresse est utilisée Non dans un programme. Adresse Adresse de l'objet LIFO/FIFO Register Un programme ne peut contenir qu'un nombre limité d'objets LIFO/FIFO Register. Consultez le Guide de programmation de la plate-forme matérielle pour connaître le nombre maximum de registres. Non Symbole Symbole Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Non Type Type LIFO/FIFO Register FIFO (first in, first out) ou LIFO (last in, first out). Oui Commentaire Commentaire Un commentaire peut être associé à cet objet. Non Objets Le bloc fonction LIFO/FIFO Register comporte les objets suivants : 224 Objet Description Valeur %Ri.I Mot d'entrée du bloc LIFO/FIFO Register Peut être lu, testé et écrit. Peut être modifié dans une table d'animation. %Ri.O Mot de sortie du bloc LIFO/FIFO Register Peut être lu, testé et écrit. Peut être modifié dans une table d'animation. %Ri.E Sortie vide Consultez le tableau Sorties ci-dessus. %Ri.F Sortie pleine Consultez le tableau Sorties ci-dessus. EIO0000001475 12/2017 Objets logiciels Cas particuliers Ce tableau contient une liste de cas particuliers de programmation du LIFO/FIFO Register : Cas particulier Description Effet d'un redémarrage à froid (%S0=1) ou INIT Initialise le contenu du bloc LIFO/FIFO Register. Le bit de sortie %Ri.E associé à la sortie E est mis à 1. Effet d'un redémarrage à chaud (%S1=1) ou d'un arrêt du contrôleur Aucun effet sur la valeur courante du bloc LIFO/FIFO Register ou sur l'état de ses bits de sortie. Front montant détecté sur %Ri.O et %Ri.I Si un front montant sur %Ri.O et %Ri.I est détecté dans le même appel de bloc fonction LIFO/FIFO Register, les valeurs ne sont ni stockées, ni extraites votre programme doit gérer le stockage ou l'extraction des valeurs. NOTE : L'effet de INIT est identique à celui de %S0=1. EIO0000001475 12/2017 225 Objets logiciels Fonction du registre LIFO Introduction En fonctionnement LIFO (Last In, First Out), la dernière information entrée est la première à être récupérée. Fonctionnement Ce tableau décrit le fonctionnement LIFO : Etape 226 Description Exemple 1 Stockage : Lorsqu'une demande de stockage est reçue (front montant sur l'entrée I ou activation de l'instruction I), le contenu du mot d'entrée %Ri.I est stocké en haut de la pile (fig. a). Lorsque la pile est pleine (sortie F=1), aucun autre stockage n'est possible. 2 Récupération : Lors de la réception d'une demande de récupération (front montant sur l'entrée O ou activation de l'instruction O), le mot de données le plus haut (dernier mot entré) est chargé dans le mot %Ri.O (fig. b). Lorsque le bloc fonction LIFO/FIFO Register est vide (sortie E=1), aucune autre récupération n'est possible. Le mot de sortie %Ri.O n'est pas modifié et conserve sa valeur. 3 Réinitialisation : – La pile peut être réinitialisée à tout moment (état 1 sur l'entrée R ou activation de l'instruction R). La pile est vide après une réinitialisation (%Ri.E =1). EIO0000001475 12/2017 Objets logiciels Fonctionnement du registre FIFO Introduction En fonctionnement FIFO (First In, First Out), la première information entrée est la première à être récupérée. Fonctionnement Ce tableau décrit le fonctionnement FIFO : Etape Description 1 Stockage : Lorsqu'une demande de stockage est reçue (front montant sur l'entrée I ou activation de l'instruction I), le contenu du mot d'entrée %Ri.I est stocké en haut de la file d'attente (fig. a). Lorsque la file d'attente est pleine (sortie F=1), aucun autre stockage n'est possible. 2 Récupération : Lors de la réception d'une demande de récupération (front montant sur l'entrée O ou activation de l'instruction O), le mot de données le plus bas dans la file d'attente est chargé dans le mot de sortie %Ri.O et le contenu du bloc fonction LIFO/FIFO Register est décalé d'une place vers le bas dans la file d'attente (fig. b). Lorsque le bloc fonction LIFO/FIFO Register est vide (sortie E=1), aucune autre récupération n'est possible. Le mot de sortie %Ri.O n'est pas modifié et conserve sa valeur. 3 Réinitialisation : La file d'attente peut être réinitialisée à tout moment (état 1 sur l'entrée R ou activation de l'instruction R). La file d'attente est vide après une réinitialisation (%Ri.E =1). EIO0000001475 12/2017 Exemple – 227 Objets logiciels Exemple de programmation Introduction L'exemple de programmation suivant montre le contenu d'un mot mémoire (%MW34) chargé dans un bloc fonction LIFO/FIFO Register (%R2.I) en cas de réception d'une requête de stockage (%I0.2) si le bloc fonction LIFO/FIFO Register %R2 n'est pas saturé (%R2.F = 0). La requête de stockage dans le LIFO/FIFO Register est émise par %M1. La demande de récupération est confirmée par l'entrée %I0.3, et %R2.O est chargé dans %MW20 si le registre n'est pas vide (%R2.E = 0). Programmation Voici un exemple de LIFO/FIFO Register avec des instructions réversibles : 228 Réseau Instruction réversible 0 BLK %R2 LD %M1 I LD %I0.3 ANDN %R2.E O END_BLK 1 LD %I0.3 [%MW20:=%R2.O] 2 LD %I0.2 ANDN %R2.F [%R2.I:=%MW34] ST %M1 EIO0000001475 12/2017 Objets logiciels Voici un exemple du même bloc fonction LIFO/FIFO Register avec des instructions non réversibles : Réseau Instruction non réversible 0 LD I 1 LD %I0.3 ANDN %R2.E O %R2 2 LD %I0.3 [%MW20:=%R2.O] 3 LD %I0.2 ANDN %R2.F [%R2.I:=%MW34] ST %M1 %M1 %R2 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 229 Objets logiciels Sous-chapitre 6.6 Drums (%DR) Drums (%DR) Utilisation des blocs fonction Drum Cette section décrit l'utilisation des blocs fonction Drum et fournit des conseils de programmation. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 230 Page Description 231 Configuration 232 Exemple de programmation 235 EIO0000001475 12/2017 Objets logiciels Description Introduction Le bloc fonction Drum fonctionne selon un principe semblable à celui des contrôleurs de type programmateurs cycliques (drums) électromécaniques qui permettent de modifier le pas en fonction d'événements externes. A chaque étape, le point haut d'une came donne une commande exécutée ensuite par le contrôleur. Dans le cas d'un bloc fonction Drum, ces points hauts sont symbolisés par l'état 1 à chaque étape et sont affectés à des bits de sortie %Qi.j ou des bits mémoire %Mi. Illustration L'illustration suivante représente le bloc fonction Drum en mode hors ligne. Etapes Affiche le nombre total d'étapes configurées dans l'Assistant Drum. Etape S'affiche en mode hors ligne lors de la création d'un bloc. En mode en ligne, affiche le numéro de l'étape courante. Entrées Le bloc fonction Drum a les entrées suivantes : Libellé Description Valeur R Retour à l'étape (ou à l'instruction) 0 A l'état 1, règle le bloc fonction Drum sur l'étape 0. U Entrée (ou instruction) d'avancement En cas de front montant, provoque le passage du bloc fonction Drum à l'étape suivante et met à jour les bits de contrôle. Sorties Le bloc fonction Drum comporte la sortie suivante : Libellé Description Valeur F Sortie (%DRi.F) Indique que l'étape courante est égale à la dernière étape définie. Le bit associé %DRi.F peut être testé. EIO0000001475 12/2017 231 Objets logiciels Configuration Paramètres Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. Le bloc fonction Drum a les paramètres suivants : Paramètre Description Valeur Modifiable en mode en ligne ? Utilisée Adresse utilisée Si ce paramètre est sélectionné, cette adresse est utilisée dans un programme. Non Adresse Adresse de l'objet Drum Un programme ne peut contenir qu'un Non nombre limité d'objets Drum. Pour connaître le nombre maximum d'objets Drum, consultez le Guide de programmation de votre contrôleur. Symbole Symbole Symbole associé à cet objet. Pour plus Non d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Configuration Assistant Drum Permet d'afficher l'Assistant Drum (voir page 233). Commentaire Commentaire Un commentaire peut être associé à cet objet. Non Oui (tous les paramètres de la fenêtre Assistant Drum) Objets Le bloc fonction Drum comporte les objets suivants : 232 Objet Description Valeur %DRi.S Numéro de l'étape courante 0<=%DRi.S<=7. Mot pouvant être lu et écrit. La valeur écrite doit être une valeur décimale immédiate. Une fois écrite, la valeur sera prise en compte à la prochaine exécution du bloc fonction. Peut être modifié dans une table d'animation ou en mode en ligne. %DRi.F Complet Consultez le tableau Sorties (voir page 231). EIO0000001475 12/2017 Objets logiciels Fonctionnement Le bloc fonction Drum est composé : d'une matrice de données constantes (les cames) organisées en huit étapes (0 à 7) et 16 bits de données (état de l'étape) disposés en colonnes numérotées de 0 à 15 ; d'une liste de bits de contrôle associée à une sortie configurée (%Qi.j) ou à un mot mémoire (%Mi). Pendant l'étape en cours, les bits de contrôle prennent les états binaires définis pour cette étape. Assistant Drum L'Assistant Drum permet de configurer le bloc fonction Drum. Configurez le nombre d'étapes (1 à 8) et les sorties ou bits mémoire associés à chacune (Bit0 à Bit15), puis cliquez sur OK. NOTE : la configuration est également possible à l'aide des bits mémoire (%Mi). EIO0000001475 12/2017 233 Objets logiciels Cas particuliers Ce tableau contient une liste de cas particuliers de Drum : Cas particulier Description Effets d'un redémarrage à froid Réinitialise le bloc fonction Drum sur l'étape 0 (mise à jour des bits de (%S0=1) contrôle). Effet d'un redémarrage à chaud (%S1=1) Met à jour les bits de contrôle après l'étape courante. Effet d'un saut de programme L'arrêt de la scrutation du bloc fonction Drum implique que les bits de contrôle conservent leur dernier état. Mise à jour des bits de contrôle Survient uniquement en cas de changement d'étape ou lors d'un démarrage à froid ou à chaud. 234 EIO0000001475 12/2017 Objets logiciels Exemple de programmation Introduction Voici un exemple de programmation d'un bloc fonction Drum configuré de telle sorte qu'aucune des commandes ne soit définie à l'étape 0, mais qu'elles le soient pour les étapes 1 à 6 sur les sorties %Q0.0 à %Q0.5 respectivement (consultez la section Configuration (voir page 237)). Les 6 premières sorties %Q0.0 à %Q0.5 sont activées successivement chaque fois que l'entrée %I0.1 est mise à 1. A l'état 1, l'entrée %I0.0 remet les éléments suivants à 0 : Sortie de drum F (%DRi.F = 0) Numéro de l'étape courante (%DRi.S = 0) Programmation Voici un exemple de programme de bloc fonction Drum : Réseau Instruction 0 BLK %DR1 LD %I0.0 R LD %I0.1 U OUT_BLK LD F ST %Q0.7 END_BLK NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). EIO0000001475 12/2017 235 Objets logiciels Chronogramme Ce schéma illustre le fonctionnement du bloc fonction Drum : (1) (2) (3) (4) (5) (6) (7) 236 Lors d'un front montant sur l'entrée U, l'étape courante est incrémentée. Lorsque l'étape courante est mise à jour, les sorties le sont également. Lorsque la dernière étape est atteinte, la sortie F est mis à 1. Un front montant sur l'entrée U, lorsque la dernière étape est active, remet l'étape courante à 0. %DR0.R = 1 (front montant), la valeur courante est mise à 0. L'utilisateur écrit le numéro de l'étape : %DR0.S = 4. La valeur écrite par l'utilisateur est mise à jour lors de la prochaine exécution. EIO0000001475 12/2017 Objets logiciels Configuration Les informations suivantes sont définies au moment de la configuration : Nombre d'étapes : 6 Etats de sortie (bits de contrôle) pour chaque étape du bloc fonction Drum : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Etape 0 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Etape 1 : 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Etape 2 : 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 Etape 3 : 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 Etape 4 : 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 Etape 5 : 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 Affectation des bits de contrôle : Ce tableau présente les sorties associées aux bits de contrôle : Bit Sortie associée 0 Sortie non associée 1 %Q0.1 2 %Q0.2 3 %Q0.3 4 %Q0.4 5 %Q0.5 EIO0000001475 12/2017 237 Objets logiciels Sous-chapitre 6.7 Shift Bit Register (%SBR) Shift Bit Register (%SBR) Utilisation de blocs fonction Shift Bit Register Cette section fournit des descriptions et des conseils de programmation pour utiliser les blocs fonction Shift Bit Register. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 238 Page Description 239 Configuration 240 Exemple de programmation 242 EIO0000001475 12/2017 Objets logiciels Description Introduction Le bloc fonction Shift Bit Register la gauche ou vers la droite. décale les bits de données binaires (0 ou 1) vers Illustration Cette illustration décrit le bloc fonction Shift Bit Register : La valeur courante du bloc fonction Shift Bit Register s'affiche au centre de ce dernier : Valeur décimale (par exemple, 7) Valeur binaire (par exemple, 111) Valeur hexadécimale (par exemple, 16#7) Entrées Le bloc fonction Shift Bit Register a les entrées suivantes : Libellé Description Valeur R Entrée (ou instruction) de RAZ Lorsque le paramètre de fonction R est à 1, les bits 0 à 15 du registre %SBRi.j sont réglés sur 0. CU Entrée (ou instruction) de décalage à gauche En cas de front montant, décale un bit du registre vers la gauche. CD Entrée (ou instruction) de décalage à droite En cas de front montant, décale un bit du registre vers la droite. EIO0000001475 12/2017 239 Objets logiciels Configuration Paramètres Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. Le bloc fonction Shift Bit Register a les paramètres suivants : Paramètre Description Valeur Utilisée Adresse utilisée Si ce paramètre est sélectionné, cette adresse est utilisée dans un programme. Adresse Adresse de l'objet Shift Bit Register Un programme ne peut contenir qu'un nombre limité d'objets Shift Bit Register. Consultez le Guide de programmation de la plate-forme matérielle pour connaître le nombre maximum de registres. Symbole Symbole Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Commentaire Commentaire Un commentaire peut être associé à cet objet. Objets Le bloc fonction Shift Bit Register a les objets suivants : 240 Objet Description Valeur %SBRi Numéro de registre 0à7 Peut être modifié dans une table d'animation. %SBRi.j Bit de registre Les bits 0 à 15 (j = 0 à 15) du registre à décalage peuvent être testés par une instruction de test et écrit à l'aide d'une instruction d'affectation. EIO0000001475 12/2017 Objets logiciels Fonctionnement L'illustration suivante présente une configuration de bits avant et après une opération de décalage : Ceci vaut également pour une requête de décalage d'un bit vers la droite (bit 15 à bit 0) à l'aide de l'instruction CD. Le bit 0 est perdu. Si un registre de 16 bits n'est pas adapté, il est possible d'utiliser le programme pour utiliser plusieurs registres en cascade. Cas particuliers Ce tableau contient une liste de cas particuliers de programmation du bloc fonction Shift Bit Register : Cas particulier Description Effet d'un redémarrage à froid (%S0=1) Règle tous les bits du mot de registre sur 0. Effet d'un redémarrage à chaud (%S1=1) N'a aucun effet sur les bits du mot de registre. EIO0000001475 12/2017 241 Objets logiciels Exemple de programmation Introduction Le bloc fonction Shift Bit Register décale les bits de données binaires (0 ou 1) vers la gauche ou vers la droite. Programmation Dans l'exemple suivant, un bit est décalé vers la gauche à chaque seconde et le bit 0 prend l'état du bit 15. Dans les instructions réversibles : Réseau Instruction réversible 0 BLK %SBR0 LD %S6 CU END_BLK 1 LD ST %SBR0.15 %SBR0.0 Dans les instructions non réversibles : Réseau Instruction non réversible 0 LD CU 1 LD ST %S6 %SBR0 %SBR0.15 %SBR0.0 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 242 EIO0000001475 12/2017 Objets logiciels Sous-chapitre 6.8 Step Counter (%SC) Step Counter (%SC) Utilisation des blocs fonction Step Counter Cette section fournit des descriptions et des conseils de programmation pour utiliser les blocs fonction Step Counter. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 244 Configuration 245 Exemple de programmation 246 EIO0000001475 12/2017 243 Objets logiciels Description Introduction Un bloc fonction Step Counter fournit une série d'étapes auxquelles des actions peuvent être affectées. Le passage d'une étape à l'autre dépend d'événements internes ou externes. Chaque fois qu'une étape est active, le bit associé (bit %SCi.j de Step Counter) est mis à 1. Une seule étape d'un bloc fonction Step Counter peut être active à la fois. Illustration Cette illustration décrit le bloc fonction Step Counter : Entrées Le bloc fonction Step Counter a les entrées suivantes : 244 Libellé Description Valeur R Entrée (ou instruction) de RAZ Lorsque le paramètre de fonction R est à 1, le bloc fonction Step Counter est réinitialisé. CU Entrée (ou instruction) d'incrémentation En cas de front montant, elle incrémente le bloc fonction Step Counter d'une étape. CD Entrée (ou instruction) de décrémentation En cas de front montant, elle décrémente le bloc fonction Step Counter d'une étape. EIO0000001475 12/2017 Objets logiciels Configuration Paramètres Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. Le bloc fonction Step Counter a les paramètres suivants : Paramètre Description Valeur Utilisée Adresse utilisée Si ce paramètre est sélectionné, cette adresse est utilisée dans un programme. Adresse Adresse de l'objet Step Counter Un programme ne peut contenir qu'un nombre limité d'objets Step Counter. Consultez le Guide de programmation de la plate-forme matérielle pour connaître le nombre maximum de blocs fonction Step Counter. Symbole Symbole Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles dans le document SoMachine Basic - Guide d'utilisation. Commentaire Commentaire Un commentaire peut être associé à cet objet. Objets Le bloc fonction Step Counter a l'objet suivant : Objet Description Valeur %SCi.j Bit du bloc fonction Step Counter Les bits de bloc fonction Step Counter 0 à 255 (j = 0 à 255) peuvent être testés par une instruction logique de chargement et écrits à l'aide d'une instruction d'affectation. Peut être modifié dans une table d'animation. Cas particulier Ce tableau contient une liste de cas particuliers d'utilisation du bloc fonction Step Counter : Cas particulier Description Effet d'un redémarrage à froid (%S0=1) Initialise le bloc fonction Step Counter. Effet d'un redémarrage à chaud (%S1=1) N'a aucun effet sur le bloc fonction Step Counter. EIO0000001475 12/2017 245 Objets logiciels Exemple de programmation Introduction Voici un exemple de bloc fonction Step Counter. Le bloc Step Counter 0 est décrémenté par l'entrée %I0.1. Le bloc Step Counter 0 est incrémenté par l'entrée %I0.2. Le bloc Step Counter 0 est remis à 0 par l'entrée %I0.3 ou lorsqu'il arrive à l'étape 3. L'étape 0 commande la sortie %Q0.1, l'étape 1 commande la sortie %Q0.2 et l'étape 2 commande la sortie %Q0.3. Programmation Voici un exemple de bloc fonction Step Counter avec des instructions réversibles : Réseau Instruction réversible 0 BLK %SC0 LD %SC0.3 OR %I0.3 R LD %I0.2 CU LD %I0.1 CD END_BLK 1 LD ST %SC0.0 %Q0.1 2 LD ST %SC0.1 %Q0.2 3 LD ST %SC0.2 %Q0.3 Voici un exemple de bloc fonction Step Counter avec des instructions non réversibles : 246 Réseau Instruction non réversible 0 LD OR R %SC0.3 %I0.3 %SC0 1 LD CU %I0.2 %SC0 2 LD CD %I0.1 %SC0 3 LD ST %SC0.0 %Q0.1 EIO0000001475 12/2017 Objets logiciels Réseau Instruction non réversible 4 LD ST %SC0.1 %Q0.2 5 LD ST %SC0.2 %Q0.3 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Ce schéma illustre le fonctionnement du bloc fonction Step Counter : (1) (2) (3) (4) (5) L'étape 0 étant active, %SC0.0 est mis à 1. Lors du front montant de l'entrée CU, l'étape est incrémentée et les sorties sont mises à jour. L'étape est incrémentée et les sorties sont mises à jour. L'étape 3 étant active, l'entrée Reset est active après un cycle d'UC. Lorsque Reset est active, l'étape courante est mise à 0 et l'entrée de réinitialisation est mise à 0 après un cycle d'UC. (6) L'étape courante est incrémentée lors du front montant de l'entrée CU. (7) Lors du front montant de l'entrée CD, l'étape est décrémentée et les sorties sont mises à jour. EIO0000001475 12/2017 247 Objets logiciels Sous-chapitre 6.9 Blocs horodateurs (%SCH) Blocs horodateurs (%SCH) Utilisation des blocs horodateurs Cette section fournit des descriptions et des conseils de programmation pour utiliser les Schedule blocks. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 248 Page Description 249 Programmation et configuration 252 EIO0000001475 12/2017 Objets logiciels Description Introduction Les blocs horodateurs sont utilisés pour contrôler les actions pour un mois, un jour et une heure prédéfinis. Les blocs horodateurs ne sont configurés qu'en SoMachine Basic ; ils ne peuvent pas être insérés dans un réseau de programme de la même manière que les autres blocs fonction. NOTE : Vérifiez le bit système %S51 et le mot système %SW118 pour vous assurer que l'option RTC (Real-Time Clock) est installée. Cette option est requise pour utiliser les Schedule blocks. Les blocs horodateurs peuvent être configurés : dans la fenêtre des propriétés des blocs horodateurs (Onglet Outils → Blocs horodateurs) ; à l'aide d'objets %SCHi.xxx (voir page 250) dédiés. Configuration des propriétés des blocs horodateurs Pour configurer un bloc horodateur, lisez la description des Modes d'allocation de mémoire (voir SoMachine Basic, Guide d'utilisation). Les Schedule blocks possèdent les paramètres suivants : Paramètre Description Valeur Utilisée Adresse utilisée Si ce paramètre est sélectionné, cette adresse est utilisée dans un programme. Adresse Adresse de l'objet Schedule blocks Un programme ne peut contenir qu'un nombre limité d'objets Schedule blocks. Consultez le Guide de programmation de la plate-forme matérielle pour connaître le nombre maximum d'objets Schedule blocks. Configured Indique si le numéro d'objet Schedule Si la case est cochée, il est configuré pour être blocks sélectionné est configuré pour utilisé. Sinon, il n'est pas utilisé. être utilisé. Bit de sortie Bit de sortie L'affectation de sortie est activée par l'objet Schedule blocks : %Mi ou %Qj.k. Cette sortie est mise à 1 lorsque les paramètres de date et d'heure courants sont compris entre les paramètres de début et de fin de la période active. Jour de début Jour auquel débute l'objet Schedule blocks. 1 à 31 Mois de début Mois auquel débute l'objet Schedule blocks. Schedule blocks. EIO0000001475 12/2017 249 Objets logiciels Paramètre Description Valeur Jour de fin Jour auquel s'arrête l'objet Schedule blocks. 1 à 31 Mois de fin Mois auquel s'arrête l'objet Schedule blocks. janvier à décembre Heure de début Heure du jour (avec les minutes) à laquelle débute l'objet Schedule blocks. Heure : 0 à 23 Minute : 0 à 59 Heure de fin Heure du jour (avec les minutes) à laquelle s'arrête l'objet Schedule blocks. Heure : 0 à 23 Minute : 0 à 59 Lundi Cases à cocher identifiant le ou les jours au cours desquels sera activé l'objet Schedule blocks. Si la case est cochée, il est configuré pour être utilisé. Sinon, il n'est pas utilisé. Commentaire Un commentaire peut être associé à cet objet. Mardi Mercredi Jeudi Vendredi Samedi Dimanche Commentaire Objets Ces objets ne sont disponibles que si le bloc est configuré comme expliqué ci-dessus. L'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) d'au moins Niveau 6.0. Les objets des blocs horodateurs sont les suivants : 250 Objets Description %SCHi.STARTDAY Jour auquel débute l'objet Schedule blocks. %SCHi.STARTMONTH Mois auquel débute l'objet Schedule blocks. %SCHi.STARTHOUR Heure à laquelle débute l'objet Schedule blocks. %SCHi.STARTMIN Minutes auxquelles débute l'objet Schedule blocks. %SCHi.ENDDAY Jour auquel s'arrête l'objet Schedule blocks. %SCHi.ENDMONTH Mois auquel s'arrête l'objet Schedule blocks. %SCHi.ENDHOUR Heure à laquelle s'arrête l'objet Schedule blocks. EIO0000001475 12/2017 Objets logiciels Objets Description %SCHi.ENDMIN Minutes auxquelles s'arrête l'objet Schedule blocks. %SCHi.DOW Jour de la semaine d'activation de l'objet Schedule blocks. La modification de ces valeurs d'objet dans le programme permet de modifier de manière dynamique la configuration des blocs horodateurs. La modification est prise en compte lors de la prochaine scrutation MAST. Après un redémarrage à froid (%S0=1), les valeurs d'objet sont remises à la valeur définie lors de la configuration. Configuration des blocs horodateurs à l'aide de mots système ou de mots mémoire Vous pouvez également configurer les Blocs horodateurs à l'aide de mots système ou de mots mémoire. Activation d'objets Schedule Blocks Les bits du mot système %SW114 activent (lorsqu'ils sont mis à 1) ou désactivent (lorsqu'ils sont mis à 0) le fonctionnement des 16 objets Schedule blocks. Affectation d'objets Schedule blocks dans %SW114 : Par défaut (ou après un redémarrage à froid), tous les bits de ce mot système sont mis à 1 (activés). L'utilisation de ces bits par le programme est facultative. Sortie des objets Schedule Blocks Si plusieurs blocs horodateurs affectent la même sortie (%Mi ou %Qj.k), c'est l'opérateur OR des résultats de chacun des blocs qui est finalement affecté à cet objet. Notez que la même sortie peut avoir plusieurs objets Schedule blocks. Par exemple, les objets %SCH0 et %SCH1 sont tous deux affectés à la sortie %Q0.0. %SCH0 modifie la sortie de 12h00 à 13h00 le lundi, et %SCH1 la sortie de 12h00 à 13h00 le mardi. Le résultat est que la sortie passe de 12h00 à 13h00 le lundi et le mardi. EIO0000001475 12/2017 251 Objets logiciels Programmation et configuration Introduction Les Schedule blocks permettent de contrôler des actions selon un calendrier précis (mois, jour et heure). Exemple de programmation Le tableau suivant présente les paramètres d'un programme d'arrosage pendant les mois d'été : Paramètre Valeur Description Modifiable en mode en ligne ? Adresse Real-Time Clock 6 Schedule blocks numéro 6 Non Configured Case cochée Case cochée pour configurer le Schedule blocks numéro 6. Non Bit de sortie %Q0.2 Activer la sortie %Q0.2 Oui Jour de début 21 Débuter l'activité le 21 juin Oui Mois de début Juin Débuter l'activité en juin Oui Heure de début 21 Débuter l'activité à 21:00 Oui Jour de fin 21 Arrêter l'activité le 21 septembre Oui Mois de fin Septembre Arrêter l'activité en septembre Oui Heure de fin 22 Arrêter l'activité à 22:00 Oui Lundi Case cochée Exécuter l'activité le lundi Oui Mardi Case non cochée Aucune activité Oui Mercredi Case cochée Exécuter l'activité le mercredi Oui Jeudi Case non cochée Aucune activité Oui Vendredi Case cochée Exécuter l'activité le vendredi Oui Samedi Case non cochée Aucune activité Oui Dimanche Case non cochée Aucune activité Oui Le programme suivant permet de désactiver les Schedule blocks grâce à un commutateur ou un détecteur d'humidité relié à l'entrée %I0.1 : Réseau Instruction Commentaire 0 LD ST Dans cet exemple, %SCH6 est validé. %I0.1 %SW114:X6 NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 252 EIO0000001475 12/2017 Objets logiciels Le tableau suivant présente un exemple de programme : Réseau Instruction 0 LD %M4 [ %M0:4 := 7 ] 1 LD %M0 RISING1 OPER [ %SCH0.STARTDAY := %MW0] OPER [ %SCH0.STARTMONTH := %MW1] OPER [ %SCH0.STARTHOUR := %MW2] OPER [ %SCH0.STARTMIN := %MW3] R %M0 2 LD %M1 RISING0 OPER [ %SCH0.ENDDAY := %MW4 OPER [ %SCH0.ENDMONTH := %MW5] OPER [ %SCH0.ENDHOUR := %MW6] OPER [ %SCH0.ENDMIN := %MW7] R %M1 3 LD %M2 RISING2 [%SCH0.DOW := %MW8] Chronogramme Le chronogramme suivant illustre l'activation de la sortie %Q0.2 : EIO0000001475 12/2017 253 Objets logiciels Sous-chapitre 6.10 Horloge (%RTC) Horloge (%RTC) Utilisation des blocs fonction RTC Cette section décrit l'utilisation des blocs fonction RTC et fournit des conseils de programmation. NOTE : l'application doit être configurée sur le niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) 5.0 au moins pour utiliser les blocs fonctions RTC. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 254 Page Description 255 Configuration 259 EIO0000001475 12/2017 Objets logiciels Description Introduction Le bloc fonction RTC Controller. vous permet de lire et d'écrire l'horloge temps réel (RTC) du M221 Logic Illustration Cette illustration affiche le bloc fonction RTC. EIO0000001475 12/2017 255 Objets logiciels Entrées Le bloc fonction RTC a les entrées suivantes : 256 Libellé Objet Valeur Enable - Active le bloc fonction lorsqu'un front montant de cette entrée est détecté. A l'état 1, les valeurs d'entrée RD et WR sont lues en continu pour déterminer l'action à effectuer. A l'état 0, le bloc fonction est désactivé et les sorties sont réinitialisées. La combinaison des valeurs des deux entrées détermine l'action à effectuer : RD = 0 et WR = 0. Aucune action. Les sorties Done et Error sont mises à 0. RD = 1 et WR = 0. Lit la valeur RTC. En cas de réussite, la sortie Done est mise à 1 et la sortie Error est mise à 0. Les objets d'entrée sont mis à jour en continu avec les valeurs lues dans le RTC. Utilisez une table d'animation (voir SoMachine Basic, Guide d'utilisation) pour afficher les valeurs d'objet. RD = 0 et WR = 1. Lorsque le front montant de WR est détecté, mettez à jour le RTC à l'aide des valeurs d'objet spécifiées dans les paramètres RTC associés à ce bloc fonction (voir ci-dessous). Si la mise à jour aboutit, la sortie Done est mise à 1 et la sortie Error est mise à 0. Le RTC est mis à jour. Si la mise à jour n'aboutit pas, la sortie Done est mise à 0 et la sortie Error est mise à 1. RD = 1 et WR = 1. Non pris en charge. La sortie Done est mise à 0, la sortie Error est mise à 1 et la sortie ErrorId (voir page 258) est mise à 256 (lecture et écriture simultanées). RD - WR - Day %RTCi.DAY Jour Valeur par défaut : 12 -32767 à 32768 Month %RTCi.MONTH Mois Valeur par défaut : 6 -32767 à 32768 Year %RTCi.YEAR Année Valeur par défaut : 2017 -32767 à 32768 Hours %RTCi.HOURS Heures Valeur par défaut : 0 -32767 à 32768 EIO0000001475 12/2017 Objets logiciels Libellé Objet Valeur Minutes %RTCi.MINUTES Minutes Valeur par défaut : 0 -32767 à 32768 Seconds %RTCi.SECONDS Secondes Valeur par défaut : 0 -32767 à 32768 Sorties Le bloc fonction RTC a les sorties suivantes : Libellé Objet Valeur Done %RTCi.Done Mis à 1 lorsque le RTC est lu ou écrit. Mis à 0 lorsque l'opération de lecture ou d'écriture n'a pas abouti. Error %RTCi.Error Mis à 1 si une erreur survient pendant l'exécution. L'exécution du bloc fonction est terminée. L'objet de sortie ErrorId indique la cause de l'erreur. DayOfWeek %RTCi.DayOfWeek Renvoie le jour de la semaine, calculé à partir de la valeur de la semaine courante. Plage : 0 à 7 0 : bloc fonction non encore exécuté 1 à 7 : jour de la semaine. ErrorId %RTCi.ErrorId Identificateur du code d'erreur. Consultez les Codes d'erreur (voir page 258) ci-dessous. EIO0000001475 12/2017 257 Objets logiciels Codes d'erreur Les codes d'erreur suivants sont renvoyés dans l'objet %RTCi.ErrorId lorsque la sortie Error est mise à 1. Code d'erreur 258 Description 0 Aucune erreur 1 Erreur d'année 2 Erreur de mois 3 Erreur de jour 4 Erreur de semaine 5 Erreur d'heure 6 Erreur de minute 7 Erreur de secondes 8 Erreur de combinaison 9 Erreur interne de RTC 256 Lecture et écriture simultanées 257 Mise à jour du RTC déjà en cours (bit système %S50 = 1) EIO0000001475 12/2017 Objets logiciels Configuration Présentation Configurez les propriétés du bloc fonction RTC avec les valeurs à utiliser pour mettre à jour le RTC dans le contrôleur logique. Pour afficher la page Propriétés RTC, procédez au choix comme suit : Double-cliquez sur un bloc fonction RTC. Dans l'onglet Programmation, sélectionnez Outils → Objets logiciels → RTC. Propriétés de RTC Pour configurer les paramètres, suivez la procédure Configuration d'un bloc fonction (voir page 176) et lisez la description des Modes d'allocation de mémoire dans le document SoMachine Basic - Guide d'utilisation. La page Propriétés de RTC affiche les propriétés suivantes : Propriété Description Valeur Modifiable en mode en ligne ? Utilisé Adresse d'objet déjà utilisée Si ce paramètre est sélectionné, cette adresse est utilisée dans un programme. Non Adresse Adresse de l'objet RTC %RTCi, où i est le numéro de l'objet. Non Un programme ne peut contenir qu'un nombre limité d'objets RTC. Pour connaître le nombre maximum d'objets RTC, consultez le Guide de programmation de votre contrôleur. Symbole Symbole Oui Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Jour Jour du mois 1 à 31 Oui Mois Mois de l'année 1 à 12 Oui Année Année Supérieure ou égale à 2000 Oui Heures Heure du jour 0 à 23 Oui Minutes Minutes de l'heure 0 à 59 Oui Secondes Secondes de la minute 0 à 59 Oui Commentaire Commentaire EIO0000001475 12/2017 Un commentaire peut être associé à cet objet. Oui 259 Objets logiciels Sous-chapitre 6.11 PID PID Fonction PID Introduction La fonction PID permet de contrôler un processus dynamique de manière continue. Le but du contrôle PID est de maintenir un processus en cours d'exécution aussi proche que possible de la consigne souhaitée. Pour plus d'informations sur le comportement de PID, les fonctionnalités et la mise en œuvre de la fonction PID, consultez le Guide de la bibliothèque des fonctions avancées : Modes de fonctionnement de la fonction PID Configuration d'Auto-Tuning de la fonction PID Configuration standard de la fonction PID Assistant PID Programmation de la fonction PID Paramètre de la fonction PID Rôle et influence des paramètres de la fonction PID Méthode de réglage des paramètres de la fonction PID 260 EIO0000001475 12/2017 Objets logiciels Sous-chapitre 6.12 Journalisation des données Journalisation des données Journalisation des données Description du bloc fonction La fonction de journalisation des données vous permet de stocker de manière sûre les données des objets ou des chaînes dans le fichier /user/DATALOGx.csv, x représentant l'entier correspondant au numéro d'instance de journalisation des données. Ce fichier est stocké sur la carte SD. Le nom de la carte SD doit être DATA. NOTE : L'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) correspondant au moins à Niveau 6.0 et une version de chargeur de démarrage 50 ou ultérieure. Reportez-vous au mot système (voir Modicon M221, Contrôleur logique, Guide de programmation) %SW13 . Représentation graphique EIO0000001475 12/2017 261 Objets logiciels Configuration de la journalisation des données Etape 1 2 Action Dans la fenêtre Programmation, cliquez sur Outils → Objets logiciels → Journalisation des données. Dans la colonne Configuration, cliquez sur Résultat : l'assistant DATALOG apparaît. . 3 Saisissez la taille maximale du fichier. La taille maximale du fichier peut être comprise entre1 et 500. La valeur par défaut est 100. 4 Sélectionnez Données historiques ou Journal des événements. La fonction Données historiques vous permet de stocker plusieurs données des objets. Seuls les objets SoMachine Basic sont autorisés. Vous pouvez stocker jusqu'à 32 objets. La fonction Journal des événements vous permet de stocker une chaîne (voir SoMachine Basic, Guide d'utilisation) unique. 5 Cochez ou décochez la case Ajouter un horodatage. Cette fonction ajoute l'heure de l'événement dans le fichier CSV. 6 Saisissez l'objet dans la colonne Adresse. Si vous avez sélectionné Journal des événements, saisissez le premier %MW de la chaîne. Si vous avez affecté un symbole à l'objet, il est affiché dans la colonne Symbole.Vous ne pouvez pas modifier le symbole ici. 7 Cliquez sur Appliquer. 8 Pour insérer le bloc fonction dans l'éditeur Schéma à contacts, utilisez l'une des méthodes suivantes : Cliquez sur , puis sur . Copiez par glisser-déposer des propriétés de journalisation des données. Entrée Le tableau suivant décrit l'entrée du bloc fonction : Libellé Type Description EXECUTE BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. 262 EIO0000001475 12/2017 Objets logiciels Sorties Le tableau suivant décrit les sorties du bloc fonction : Libellé Type Description DONE BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. Si un deuxième front montant est détecté durant l'exécution du bloc fonction, il est ignoré et la commande en cours n'est pas affectée. BUSY BOOL La valeur TRUE indique que l'exécution du bloc fonction est en cours. ERROR BOOL La valeur TRUE indique qu'une erreur a été détectée. L'exécution du bloc fonction est interrompue. La sortie Errorld indique le code d'erreur. BAK BOOL Si la valeur est TRUE, le fichier BAK est créé. Codes d'erreur Code d'erreur Description 0 Aucune erreur. 1 Opération en cours. 2 Erreur lors du stockage des données dans le fichier CSV. 3 Erreur lors de la création du fichier BAK. 4 Instance de journal des données déjà utilisée. 10 Délai de restauration dépassé. Ejectez la carte SD. 11 Carte SD non détectée. 12 Carte SD protégée en écriture. 50 Erreur du système de fichiers. 51 Erreur lors de l'ouverture du fichier CSV. EIO0000001475 12/2017 263 Objets logiciels Sous-chapitre 6.13 Etapes Grafcet Etapes Grafcet Etapes Grafcet Présentation Les objets d'étape Grafcet (%Xi) indiquent l'état de l'étape Grafcet i correspondante dans un programme. Paramètres La fenêtre des propriétés des étapes Grafcet contient les propriétés suivantes : 264 Paramètre Description Valeur Utilisée Adresse utilisée Si ce paramètre est sélectionné, l'adresse en question est actuellement utilisée dans un programme. Adresse Adresse de l'objet d'étape Grafcet. Un programme peut contenir jusqu'à 96 objets d'étape Grafcet. Symbole Symbole Symbole associé à cet objet. Pour plus d'informations, consultez la section Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation) dans le document SoMachine Basic - Guide d'utilisation. Commentaire Commentaire Commentaire associé à cet objet. EIO0000001475 12/2017 SoMachine Basic Objets PTO EIO0000001475 12/2017 Chapitre 7 Objets PTO Objets PTO Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre Sujet Page 7.1 Motion Task Table (%MT) 266 7.2 Bloc fonction Pulse Train Output (%PTO) 267 EIO0000001475 12/2017 265 Objets PTO Sous-chapitre 7.1 Motion Task Table (%MT) Motion Task Table (%MT) Motion Task Table Présentation Consultez le Guide de la bibliothèque des fonctions avancées de votre contrôleur. 266 EIO0000001475 12/2017 Objets PTO Sous-chapitre 7.2 Bloc fonction Pulse Train Output (%PTO) Bloc fonction Pulse Train Output (%PTO) Sortie à train d'impulsions Présentation Consultez le Guide de la bibliothèque des fonctions avancées de votre contrôleur. EIO0000001475 12/2017 267 Objets PTO 268 EIO0000001475 12/2017 SoMachine Basic Objets de variateur EIO0000001475 12/2017 Chapitre 8 Objets de variateur Objets de variateur Objets de variateur Présentation Les objets de variateur contrôlent les variateurs ATV et d'autres équipements configurés sur le Scrutateur d'E/S Modbus série ou Modbus TCP IOScanner. Consultez le document Fonctions avancées - Guide de la bibliothèque de votre contrôleur logique. EIO0000001475 12/2017 269 Objets de variateur 270 EIO0000001475 12/2017 SoMachine Basic Objets de communication EIO0000001475 12/2017 Chapitre 9 Objets de communication Objets de communication Introduction Les blocs fonction de communication permettent la communication avec les équipements Modbus ainsi que l'envoi et la réception de messages en mode caractères (ASCII). NOTE : un seul bloc fonction de communication peut être actif à la fois sur un port de communication durant un cycle de tâche maître. Si vous utilisez plusieurs blocs fonction de communication ou instructions EXCH simultanément sur le même port de communication, les blocs fonction renvoient un code d'erreur. Il faut donc vérifier l'absence d'échange actif (%MSGx.D = TRUE) en cours sur un port de communication avant de démarrer un bloc fonction de communication ou une instruction EXCH. Contenu de ce chapitre Ce chapitre contient les sous-chapitres suivants : Sous-chapitre 9.1 Sujet Page Lecture de données depuis un équipement distant (%READ_VAR) 272 9.2 Ecrire des données sur un équipement Modbus (%WRITE_VAR) 281 9.3 Lecture et écriture de données sur un équipement Modbus (%WRITE_READ_VAR) 289 9.4 Communication sur une liaison ASCII (%SEND_RECV_MSG) 297 9.5 Send Receive SMS (%SEND_RECV_SMS) 305 9.6 Chronogrammes des blocs fonction d'objet de communication. 320 EIO0000001475 12/2017 271 Objets de communication Sous-chapitre 9.1 Lecture de données depuis un équipement distant (%READ_VAR) Lecture de données depuis un équipement distant (%READ_VAR) Utilisation des blocs fonction %READ_VAR Cette section décrit l'utilisation des blocs fonction %READ_VAR et fournit des conseils de programmation. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet 272 Page Description 273 Configuration de fonctions 277 Exemple de programmation 280 EIO0000001475 12/2017 Objets de communication Description Introduction Le bloc fonction %READ_VAR permet de lire des données d'un équipement distant sur Modbus SL ou Modbus TCP. Illustration L'illustration suivante présente le bloc fonction %READ_VAR : Entrées Le bloc fonction %READ_VAR a les entrées suivantes : Libellé Type Valeur Exécuter BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. Si un deuxième front montant est détecté durant l'exécution du bloc fonction, il est ignoré et la commande en cours n'est pas affectée. Abandonner BOOL Arrête l'exécution du bloc fonction lors de la détection d'un front montant. La sortie Annulé est définie sur 1 et l'objet %READ_VARi.CommError contient le code 02 hex (échange interrompu à la demande de l'utilisateur). NOTE : Le réglage de l'entrée Exécuter ou Abandonner sur TRUE au premier cycle de tâches en mode RUN n'est pas détecté en tant que front montant. Le bloc fonction doit d'abord visualiser l'entrée avec la valeur FALSE pour pouvoir détecter le front montant suivant. EIO0000001475 12/2017 273 Objets de communication Sorties Le bloc fonction %READ_VAR a les sorties suivantes : Libellé Type Valeur Terminé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été effectuée sans erreur. Occupé BOOL La valeur TRUE indique que l'exécution du bloc fonction est en cours. Annulé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été annulée avec l'entrée Abandonner. Erreur BOOL La valeur TRUE indique qu'une erreur a été détectée. L'exécution du bloc fonction est interrompue. Pour plus d'informations sur CommError et OperError, consultez les tableaux Codes des erreurs de communication (voir page 274) et Codes des erreurs d'opération (voir page 275) . Ce tableau décrit les objets de sortie du bloc fonction : Objet de sortie Type Description CommError BYTE Pour plus d'informations sur %READ_VARi.CommError, consultez le tableau Codes des erreurs de communication (voir page 274). OperError DWORD Pour plus d'informations sur %READ_VARi.OperError, consultez le tableau Codes des erreurs d'opération (voir page 275). Codes des erreurs de communication Ce tableau décrit les codes d'erreur écrits dans l'objet de mot %READ_VARi.CommError : 274 Nom Code de l'erreur détectée Description CommunicationOK 0 (00 hex) L'échange est correct. TimedOut 1 (01 hex) L'échange a été interrompu suite à l'expiration du délai. Abort 2 (02 hex) L'échange a été interrompu à la demande de l'utilisateur (entrée Abandon). BadAddress 3 (03 hex) Format d'adresse incorrect. BadRemoteAddr 4 (04 hex) Adresse distante incorrecte. BadMgtTable 5 (05 hex) Format de la table de gestion incorrect. BadParameters 6 (06 hex) Paramètres spécifiques incorrects. ProblemSendingRq 7 (07 hex) Echec d'envoi de requête à la destination. RecvBufferNotAlloc 9 (09 hex) La taille de la mémoire tampon de réception est insuffisante. EIO0000001475 12/2017 Objets de communication Nom Code de l'erreur détectée Description SendBufferNotAlloc 10 (0A hex) La taille de la mémoire tampon de transmission est insuffisante. SystemResourceMissing 11 (0B hex) Ressource système non disponible. BadLength 14 (0E hex) Longueur incorrecte. ProtocolSpecificError 254 (FE hex) Indique une erreur de protocole Modbus. Pour plus de détails, consultez Codes des erreurs d'opération. Refused 255 (FF hex) Message refusé. Pour plus de détails, consultez Codes des erreurs d'opération. (voir page 275) (voir page 275) Codes des erreurs d'opération Ce code de retour est pertinent si le code d'erreur de communication (objet CommError) a la valeur suivante : 0 (00 hex) (correct) 254 (FE hex) (code d'exception Modbus) 255 (FF hex) (refusé) Ce tableau décrit les codes d'erreur écrits dans l'objet de mot double %READ_VARi.OperError : CommError Nom Code de l'erreur détectée Description 0 (00 hex) (correct) OperationOK 0 (00000000 hex) L'échange est correct. NotProcessed 1 (00000001 hex) La requête n'a pas été traitée. BadResponse 2 (00000002 hex) La réponse reçue est incorrecte. EIO0000001475 12/2017 275 Objets de communication CommError Nom Code de l'erreur détectée Description 254 (FE hex) (code d'exception Modbus) IllegalFunction 1 (00000001 hex) Le code fonction reçu dans la requête ne correspond pas à une action autorisée pour l'esclave. L'état de l'esclave est peut être inapproprié pour traiter une requête spécifique. IllegalDataAddress 2 (00000002 hex) L'adresse de données reçue par l'esclave n'est pas une adresse autorisée pour l'esclave. IllegalDataValue 3 (00000003 hex) La valeur dans le champ de données de la requête n'est pas autorisée pour l'esclave. SlaveDeviceFailure 4 (00000004 hex) L'esclave ne peut pas exécuter une action demandée à cause d'une erreur majeure. Acknowledge 5 (00000005 hex) L'esclave a acquitté la requête mais le délai de communication a expiré avant que l'esclave traite la requête. SlaveDeviceBusy 6 (00000006 hex) L'esclave est occupé à traiter une autre commande. MemoryParityError 8 (00000008 hex) L'esclave a détecté une erreur de parité dans la mémoire lors de la tentative de lecture de la mémoire étendue. GatewayPathUnavailable 10 (0000000A hex) La passerelle est surchargée ou incorrectement configurée. GatewayTargetDeviceFailedToRespond 11 (0000000B hex) L'esclave n'est pas présent sur le réseau. TargetResourceMissing 1 (00000001 hex) La ressource du système cible n'est pas disponible. BadLength 5 (00000005 hex) Longueur incorrecte. CommChannelErr 6 (00000006 hex) Erreur détectée sur la voie de communication. BadAddr 7 (00000007 hex) Adresse incorrecte. SystemResourceMissing 11 (0000000B hex) Ressource système non disponible. TargetCommInactive 12 (0000000C hex) Une fonction de communication cible n'est pas active. TargetMissing 13 (0000000D hex) La cible ne communique pas. ChannelNotConfigured 15 (0000000F hex) Voie non configurée. 255 (FF hex) (refusé) 276 EIO0000001475 12/2017 Objets de communication Configuration de fonctions Propriétés Double-cliquez sur le bloc fonction pour ouvrir le tableau des propriétés de la fonction (voir Compact Modbus SL Logic Controller M221 Book, System User Guide). Il est impossible de modifier les propriétés de ce bloc fonction en mode en ligne. Le bloc fonction %READ_VAR a les propriétés suivantes : Propriété Valeur Description Utilisé Case à cocher Activé/Désactivé Indique si l'adresse est utilisée. Adresse %READ_VARi, où i est compris entre 0 i est l'identificateur de l'instance. Pour connaître et le nombre d'objets disponibles sur le le nombre maximal d'instances, consultez la contrôleur logique section Nombre maximum d'objets (voir Modicon M221, Contrôleur logique, Guide de programmation). Symbole Texte défini par l'utilisateur Le symbole identifie de façon unique cet objet. Pour plus d'informations, consultez le Guide d'utilisation de SoMachine Basic (définition et utilisation de symboles) (voir SoMachine Basic, Guide d'utilisation). Liaison SL1 : série 1 Sélection du port. SL2 : série 2 NOTE : Les ports de communication intégrés SL2 et ETH1 sont disponibles sur certains modèles de contrôleur uniquement. ETH1 : Ethernet Id Timeout Ce paramètre dépend de la configuration des liaisons : 1 à 247 pour l'adresse de l'esclave de lignes série 1 à 16 pour l'index Ethernet Valeur exprimée par incrément de 100 ms (100 par défaut, soit 10 secondes). La valeur 0 signifie qu'aucune temporisation n'est appliquée. Identificateur de l'équipement. Pour plus d'informations sur l'indice Ethernet, consultez Ajout de serveurs distants (voir Modicon M221, Contrôleur logique, Guide de programmation). La temporisation définit la durée maximale d'attente d'une réponse. Si le délai expire, l'échange est interrompu avec un code d'erreur (CommError = 01 hex). Si le système reçoit une réponse après l'expiration du délai, cette réponse est ignorée. NOTE : La configuration de la temporisation sur le bloc fonction remplace la valeur configurée sur les écrans de configuration SoMachine Basic (Configuration Modbus TCP (voir Modicon M221, Contrôleur logique, Guide de programmation) et Configuration de ligne série (voir Modicon M221, Contrôleur logique, Guide de programmation)). EIO0000001475 12/2017 277 Objets de communication Propriété Valeur Description ObjType Type d'objet à lire : 0 pour les mots 1 pour les entrées numériques 2 pour les sorties numériques 3 pour les mots d'entrée Les types de codes de la fonction de lecture Modbus sont : Mbs 0x03 - Read multiple words (holding register) Mbs 0x02 - Read multiple bits (digital inputs) Mbs 0x01 - Read multiple bits (digital outputs) Mbs 0x04 - Read multiple words (input register) FirstObj 0 à 65 535 L'adresse du premier objet sur l'équipement distant où les valeurs sont lues. Quantité 1 à 125 pour %MW Le nombre d'objets à lire sur l'équipement distant. 1 à 2000 pour %I 1 à 2000 pour %Q ou %M 0 à 125 pour %IW IndexData 0 à 7999 L'adresse de la table de mots locaux (%MW) dans laquelle les valeurs lues sont stockées. Lors de la lecture des bits (%I ou %Q), les bits récupérés sont écrits dans la table de mots, à partir de la première adresse indiquée. Ainsi, lors de la lecture de 16 bits où IndexData = 10 et Quantity = 16, le résultat est stocké dans les adresses %MW10:X0 à %MW10:X15. Commentaire Texte défini par l'utilisateur Commentaire relatif à cet objet. Objets Le bloc fonction %READ_VAR comporte les objets suivants : Objet Description Valeur %READ_VARi.LINK Sélection du port Consultez la rubrique Propriétés (voir page 277). Peut être lu et écrit. Peut être modifié dans une table d'animation. %READ_VARi.ID Identificateur d'équipement distant Consultez la rubrique Propriétés (voir page 277). Peut être lu et écrit. Peut être modifié dans une table d'animation. %READ_VARi.TIMEOUT Temporisateur de bloc fonction Consultez la rubrique Propriétés (voir page 277). Peut être lu et écrit. Peut être modifié dans une table d'animation. 278 EIO0000001475 12/2017 Objets de communication Objet Description %READ_VARi.OBJTYPE Type des objets à lire Valeur Consultez la rubrique Propriétés (voir page 277). Peut être lu et écrit. Peut être modifié dans une table d'animation. %READ_VARi.FIRSTOBJ Consultez la rubrique Propriétés L'adresse du premier objet sur l'équipement distant où les valeurs (voir page 277). Peut être lu et sont lues. écrit. Peut être modifié dans une table d'animation. %READ_VARi.QUANTITY Le nombre d'objets à lire sur l'équipement distant. %READ_VARi.INDEXDATA L'adresse de la table de mots locaux (%MW) dans laquelle les valeurs lues sont stockées. Consultez la rubrique Propriétés (voir page 277). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 277). Peut être lu et écrit. Peut être modifié dans une table d'animation. %READ_VARi.COMMERROR Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 274). Lecture seule. Peut être lu dans une table d'animation. %READ_VARi.OPERERROR Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 275). Lecture seule. Peut être lu dans une table d'animation. %READ_VARi.DONE Exécution correctement effectuée Consultez la rubrique Sorties (voir page 274). Lecture seule. Peut être lu dans une table d'animation. %READ_VARi.BUSY Exécution en cours Consultez la rubrique Sorties (voir page 274). Lecture seule. Peut être lu dans une table d'animation. %READ_VARi.ABORTED L'exécution a été annulée Consultez la rubrique Sorties (voir page 274). Lecture seule. Peut être lu dans une table d'animation. %READ_VARi.ERROR Une erreur a été détectée Consultez la rubrique Sorties (voir page 274). Lecture seule. Peut être lu dans une table d'animation. EIO0000001475 12/2017 279 Objets de communication Exemple de programmation Introduction Le bloc fonction %READ_VAR peut être configuré comme dans cet exemple de programmation. Programmation Voici un exemple de bloc fonction %READ_VAR : Réseau Instruction 0 BLK %READ_VAR0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Chronogrammes des blocs fonction de communication (voir page 320). 280 EIO0000001475 12/2017 Objets de communication Sous-chapitre 9.2 Ecrire des données sur un équipement Modbus (%WRITE_VAR) Ecrire des données sur un équipement Modbus (%WRITE_VAR) Utilisation des blocs fonction %WRITE_VAR Cette section décrit l'utilisation des blocs fonction %WRITE_VAR et fournit des conseils de programmation. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 282 Configuration de fonctions 284 Exemple de programmation 288 EIO0000001475 12/2017 281 Objets de communication Description Introduction Le bloc fonction %WRITE_VAR permet d'écrire des données sur un équipement externe en utilisant le protocole Modbus SL ou Modbus TCP. Illustration L'illustration suivante présente le bloc fonction %WRITE_VAR : Entrées Le bloc fonction %WRITE_VAR a les entrées suivantes : Libellé Type Valeur Exécuter BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. Si un deuxième front montant est détecté durant l'exécution du bloc fonction, il est ignoré et la commande en cours n'est pas affectée. Abandonner BOOL Arrête l'exécution du bloc fonction lors de la détection d'un front montant. La sortie Annulé est définie sur 1 et l'objet %WRITE_VARi.CommError contient le code 02 hex (échange interrompu à la demande de l'utilisateur). NOTE : Le réglage de l'entrée Exécuter ou Abandonner sur TRUE au premier cycle de tâches en mode RUN n'est pas détecté en tant que front montant. Le bloc fonction doit d'abord visualiser l'entrée avec la valeur FALSE pour pouvoir détecter le front montant suivant. 282 EIO0000001475 12/2017 Objets de communication Sorties Le bloc fonction %WRITE_VAR a les sorties suivantes : Libellé Type Valeur Terminé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été effectuée sans erreur. Occupé BOOL La valeur TRUE indique que l'exécution du bloc fonction est en cours. Annulé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été annulée avec l'entrée Abandonner. Erreur BOOL La valeur TRUE indique qu'une erreur a été détectée. L'exécution du bloc fonction est interrompue. Pour plus d'informations sur CommError et OperError, consultez les tableaux Codes des erreurs de communication (voir page 274) et Codes des erreurs d'opération (voir page 275) . Ce tableau décrit les objets de sortie du bloc fonction : Objet de sortie Type Description CommError BYTE Pour plus d'informations sur %READ_VARi.CommError, consultez le tableau Codes des erreurs de communication (voir page 274). OperError DWORD Pour plus d'informations sur %READ_VARi.OperError, consultez le tableau Codes des erreurs d'opération (voir page 275). Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 274). Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 275). EIO0000001475 12/2017 283 Objets de communication Configuration de fonctions Propriétés Double-cliquez sur le bloc fonction pour ouvrir le tableau des propriétés de la fonction. Il est impossible de modifier les propriétés de ce bloc fonction en mode en ligne. Le bloc fonction %WRITE_VAR a les propriétés suivantes : Propriété Valeur Description Utilisé Case à cocher activée / désactivée Indique si l'adresse est utilisée. Adresse %WRITE_VARi, où i est compris entre 0 et le nombre d'objets disponibles sur le contrôleur logique i est l'identificateur de l'instance. Pour connaître le nombre maximal d'instances, consultez le tableau Nombre maximal d'objets (voir Modicon M221, Contrôleur logique, Guide de programmation). Symbole Texte défini par l'utilisateur Le symbole identifie de façon unique cet objet. Pour plus d'informations, consultez le Guide d'utilisation de SoMachine Basic (définition et utilisation de symboles) (voir SoMachine Basic, Guide d'utilisation). Liaison SL1 : série 1 Sélection du port. SL2 : série 2 NOTE : Les ports de communication intégrés SL2 et ETH1 sont disponibles sur certains modèles de contrôleur uniquement. ETH1 : Ethernet Id 284 Ce paramètre dépend de la configuration des liaisons : Identificateur de l'équipement. Avec la valeur 0, le contrôleur maître Modbus envoie une diffusion générale à 1 à 247 pour l'adresse de l'esclave de lignes série tous les esclaves. En mode diffusion, les 1 à 16 pour l'index Ethernet esclaves ne répondent pas au maître. Pour plus d'informations sur l'indice Ethernet, consultez Ajout de serveurs distants (voir Modicon M221, Contrôleur logique, Guide de programmation). 0 pour diffusion générale EIO0000001475 12/2017 Objets de communication Propriété Valeur Description Timeout Valeur exprimée par incrément de 100 ms (100 par défaut, soit 10 secondes). La valeur 0 signifie qu'aucune temporisation n'est appliquée. La temporisation définit la durée maximale d'attente d'une réponse. Si le délai expire, l'échange est interrompu avec un code d'erreur (CommError = 01 hex). Si le système reçoit une réponse après l'expiration du délai, cette réponse est ignorée. NOTE : La configuration de la temporisation sur le bloc fonction remplace la valeur configurée sur les écrans de configuration SoMachine Basic (Configuration Modbus TCP (voir Modicon M221, Contrôleur logique, Guide de programmation) et Configuration de ligne série (voir Modicon M221, Contrôleur logique, Guide de programmation)). ObjType Les codes fonction Modbus suivants sont pris en charge : 0 2 4 5 Type des objets à écrire : Mbs 0x10 - Write multiple words (register) Mbs 0x0F - Write multiple bits (digital outputs) Mbs 0x05 - Write single bit (digital output) Mbs 0x06 - Write single word (register) NOTE : l'application doit être configurée avec un niveau fonctionnel d'au moins 5.0 pour utiliser les codes fonction Modbus Single Coil (Mbs 0x05) ou Single Register (Mbs 0x06). FirstObj 0 à 65 535 L'adresse du premier objet sur l'équipement distant où les valeurs sont écrites. Quantité 1 à 123 (registre interne) pour %MW Le nombre d'objets à écrire sur l'équipement distant. Ignoré pour les types d'objet Single Coil et Single Register. 1 à 1968 (bit interne) pour %M ou %Q EIO0000001475 12/2017 285 Objets de communication Propriété Valeur Description IndexData 0 à 7999 L'adresse de la table de mots locaux (%MW) contenant les valeurs à écrire sur l'équipement distant. Lors de l'écriture de bits (%M ou %Q), les valeurs à écrire sont récupérées dans la table de mots, à partir de la première adresse indiquée. Ainsi, lors de l'écriture de 16 bits où IndexData = 10 et Quantity = 16, les valeurs sont récupérées des adresses %MW10:X0 à %MW10:X15. Commentaire Texte défini par l'utilisateur Commentaire relatif à cet objet. Objets Le bloc fonction %WRITE_VAR comporte les objets suivants : Objet Description Valeur %WRITE_VARi.LINK Sélection du port Consultez la rubrique Propriétés (voir page 284). Peut être lu et écrit. Peut être modifié dans une table d'animation. %WRITE_VARi.ID Identificateur d'équipement distant Consultez la rubrique Propriétés (voir page 284). Peut être lu et écrit. Peut être modifié dans une table d'animation. %WRITE_VARi.TIMEOUT Temporisateur de bloc fonction Consultez la rubrique Propriétés (voir page 284). Peut être lu et écrit. Peut être modifié dans une table d'animation. %WRITE_VARi.OBJTYPE Type des objets à écrire Consultez la rubrique Propriétés (voir page 284). Peut être lu et écrit. Peut être modifié dans une table d'animation. 286 %WRITE_VARi.FIRSTOBJ Consultez la rubrique Propriétés L'adresse du premier objet sur l'équipement distant où les valeurs (voir page 284). Peut être lu et sont écrites. écrit. Peut être modifié dans une table d'animation. %WRITE_VARi.QUANTITY Le nombre d'objets à écrire sur l'équipement distant. Consultez la rubrique Propriétés (voir page 284). Peut être lu et écrit. Peut être modifié dans une table d'animation. EIO0000001475 12/2017 Objets de communication Objet Description %WRITE_VARi.INDEXDATA L'adresse de la table de mots Consultez la rubrique Propriétés locaux (%MW) contenant les valeurs (voir page 284). Peut être lu et écrit. Peut être modifié dans une à écrire sur l'équipement distant. table d'animation. %WRITE_VARi.COMMERROR Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 283). Lecture seule. Peut être lu dans une table d'animation. %WRITE_VARi.OPERERROR Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 283). Lecture seule. Peut être lu dans une table d'animation. %WRITE_VARi.DONE Exécution correctement effectuée Consultez la rubrique Sorties (voir page 283). Lecture seule. Peut être lu dans une table d'animation. %WRITE_VARi.BUSY Exécution en cours Consultez la rubrique Sorties (voir page 283). Lecture seule. Peut être lu dans une table d'animation. %WRITE_VARi.ABORTED L'exécution a été annulée Consultez la rubrique Sorties (voir page 283). Lecture seule. Peut être lu dans une table d'animation. %WRITE_VARi.ERROR Une erreur a été détectée Consultez la rubrique Sorties (voir page 283). Lecture seule. Peut être lu dans une table d'animation. EIO0000001475 12/2017 Valeur 287 Objets de communication Exemple de programmation Introduction Le bloc fonction %WRITE_VAR peut être configuré comme dans cet exemple de programmation. Programmation Voici un exemple de bloc fonction %WRITE_VAR : Réseau Instruction 0 BLK %WRITE_VAR0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Chronogrammes des blocs fonction de communication (voir page 320). 288 EIO0000001475 12/2017 Objets de communication Sous-chapitre 9.3 Lecture et écriture de données sur un équipement Modbus (%WRITE_READ_VAR) Lecture et écriture de données sur un équipement Modbus (%WRITE_READ_VAR) Utilisation des blocs fonction %WRITE_READ_VAR Cette section décrit l'utilisation des blocs fonction %WRITE_READ_VAR et fournit des conseils de programmation. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 290 Configuration de fonctions 293 Exemple de programmation 296 EIO0000001475 12/2017 289 Objets de communication Description Introduction Le bloc fonction %WRITE_READ_VAR permet de lire et d'écrire des données stockées dans les mots mémoire internes vers un équipement externe en utilisant le protocole Modbus SL ou Modbus TCP. Ce bloc fonctionnel effectue une seule demande d'écriture puis une seule demande de lecture dans la même transaction. Illustration L'illustration suivante présente le bloc fonction %WRITE_READ_VAR : 290 EIO0000001475 12/2017 Objets de communication Entrées Le bloc fonction %WRITE_READ_VAR a les entrées suivantes : Libellé Type Valeur Exécuter BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. Si un deuxième front montant est détecté durant l'exécution du bloc fonction, il est ignoré et la commande en cours n'est pas affectée. Abandonner BOOL Arrête l'exécution du bloc fonction lors de la détection d'un front montant. La sortie Annulé est définie sur 1 et l'objet %WRITE_READ_VARi.CommError contient le code 02 hex (échange interrompu à la demande de l'utilisateur). NOTE : Le réglage de l'entrée Exécuter ou Abandonner sur TRUE au premier cycle de tâches en mode RUN n'est pas détecté en tant que front montant. Le bloc fonction doit d'abord visualiser l'entrée avec la valeur FALSE pour pouvoir détecter le front montant suivant. Sorties Le bloc fonction %WRITE_READ_VAR a les sorties suivantes : Libellé Type Valeur Terminé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été effectuée sans erreur. Occupé BOOL La valeur TRUE indique que l'exécution du bloc fonction est en cours. Annulé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été annulée avec l'entrée Abandonner. Erreur BOOL La valeur TRUE indique qu'une erreur a été détectée. L'exécution du bloc fonction est interrompue. Pour plus d'informations sur CommError et OperError, consultez les tableaux Codes des erreurs de communication (voir page 274) et Codes des erreurs d'opération (voir page 275) . Ce tableau décrit les objets de sortie du bloc fonction : Objet de sortie Type Description CommError BYTE Pour plus d'informations sur %READ_VARi.CommError, consultez le tableau Codes des erreurs de communication (voir page 274). OperError DWORD Pour plus d'informations sur %READ_VARi.OperError, consultez le tableau Codes des erreurs d'opération (voir page 275). EIO0000001475 12/2017 291 Objets de communication Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 274). Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 275). 292 EIO0000001475 12/2017 Objets de communication Configuration de fonctions Propriétés Double-cliquez sur le bloc fonction pour ouvrir le tableau des propriétés de la fonction. Il est impossible de modifier les propriétés de ce bloc fonction en mode en ligne. Le bloc fonction %WRITE_READ_VAR a les propriétés suivantes : Propriété Valeur Description Utilisé Case à cocher activée / désactivée Indique si l'adresse est utilisée. Adresse %WRITE_READ_VARi, où i est i est l'identificateur de l'instance. Pour compris entre 0 et le nombre d'objets connaître le nombre maximal d'instances, disponibles sur le contrôleur logique consultez le tableau Nombre maximal d'objets (voir Modicon M221, Contrôleur logique, Guide de programmation). Symbole Texte défini par l'utilisateur Le symbole identifie de façon unique cet objet. Pour plus d'informations, consultez le Guide d'utilisation de SoMachine Basic (définition et utilisation de symboles) (voir SoMachine Basic, Guide d'utilisation). Liaison SL1 : série 1 Sélection du port SL2 : série 2 NOTE : Les ports de communication intégrés ETH1 : Ethernet Id Timeout SL2 et ETH1 sont disponibles sur certains modèles de contrôleur uniquement. Ce paramètre dépend de la configuration des liaisons : 1 à 247 pour l'adresse de l'esclave de lignes série 1 à 16 pour l'index Ethernet Identificateur de l'équipement Pour plus d'informations sur l'indice Ethernet, consultez Ajout de serveurs distants Valeur exprimée par incrément de 100 ms (100 par défaut, soit 10 secondes). La valeur 0 signifie qu'aucune temporisation n'est appliquée. La temporisation définit la durée maximale d'attente d'une réponse. Si le délai expire, l'échange est interrompu avec un code d'erreur (CommError = 01 hex). Si le système reçoit une réponse après l'expiration du délai, cette réponse est ignorée. (voir Modicon M221, Contrôleur logique, Guide de programmation). NOTE : La configuration de la temporisation sur le bloc fonction remplace la valeur configurée sur les écrans de configuration SoMachine Basic (Configuration Modbus TCP (voir Modicon M221, Contrôleur logique, Guide de programmation) et Configuration de ligne série (voir Modicon M221, Contrôleur logique, Guide de programmation)). EIO0000001475 12/2017 293 Objets de communication Propriété Valeur Description ObjType %MW (Mbs Fct 17) : mots mémoire Le type de code de la fonction lecture/écriture Modbus est Mbs Fct 17, qui est équivalent au code fonction Modbus 17. FirstWriteObj 0 à 65 535 L'adresse du premier objet sur l'équipement distant où les valeurs sont écrites. WriteQuantity 1 à 121 Le nombre d'objets à écrire sur l'équipement distant. IndexDataOut 0 à 7999 L'adresse de la table de mots locaux (%MW) contenant les valeurs à écrire sur l'équipement distant. FirstReadObj 0 à 65 535 L'adresse du premier objet sur l'équipement distant où les valeurs sont lues. ReadQuantity 1 à 125 Le nombre d'objets à lire sur l'équipement distant. IndexDataIn 0 à 7999 L'adresse de la table de mots locaux (%MW) dans laquelle les valeurs lues sont stockées. Commentaire Texte défini par l'utilisateur Commentaire relatif à cet objet. Objets Le bloc fonction %WRITE_READ_VAR comporte les objets suivants : Objet Description Valeur %WRITE_READ_VARi.LINK Sélection du port Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. %WRITE_READ_VARi.ID Identificateur d'équipement distant %WRITE_READ_VARi.TIMEOUT Temporisateur de bloc fonction Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. 294 %WRITE_READ_VARi.OBJTYPE Type des objets à lire %WRITE_READ_VARi.FIRSTWRITEOBJ L'adresse du premier objet sur l'équipement distant où les valeurs sont écrites. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. EIO0000001475 12/2017 Objets de communication Objet Description %WRITE_READ_VARi.WRITEQUAN- Le nombre d'objets à écrire sur TITY l'équipement distant. %WRITE_READ_VARi.INDEXDATAOUT L'adresse de la table de mots locaux (%MW) contenant les valeurs à écrire sur l'équipement distant. %WRITE_READ_VARi.FIRSTREAD- L'adresse du premier objet sur OBJ l'équipement distant où les valeurs sont lues. %WRITE_READ_VARi.READQUANTITY %WRITE_READ_VARi.INDEXDATAIN Le nombre d'objets à lire sur l'équipement distant. L'adresse de la table de mots locaux (%MW) dans laquelle les valeurs lues sont stockées. Valeur Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 293). Peut être lu et écrit. Peut être modifié dans une table d'animation. %WRITE_READ_VARi.COMMERROR Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 292). Lecture seule. Peut être lu dans une table d'animation. %WRITE_READ_VARi.OPERERROR Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 292). Lecture seule. Peut être lu dans une table d'animation. %WRITE_READ_VARi.DONE Exécution correctement effectuée Consultez la rubrique Sorties (voir page 291). Lecture seule. Peut être lu dans une table d'animation. %WRITE_READ_VARi.BUSY Exécution en cours Consultez la rubrique Sorties (voir page 291). Lecture seule. Peut être lu dans une table d'animation. %WRITE_READ_VARi.ABORTED L'exécution a été annulée Consultez la rubrique Sorties (voir page 291). Lecture seule. Peut être lu dans une table d'animation. %WRITE_READ_VARi.ERROR Une erreur a été détectée Consultez la rubrique Sorties (voir page 291). Lecture seule. Peut être lu dans une table d'animation. EIO0000001475 12/2017 295 Objets de communication Exemple de programmation Introduction Le bloc fonction %WRITE_READ_VAR peut être configuré comme dans cet exemple de programmation. Programmation Voici un exemple de bloc fonction %WRITE_READ_VAR : Réseau Instruction 0 BLK %WRITE_READ_VAR0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Chronogrammes des blocs fonction de communication (voir page 320). 296 EIO0000001475 12/2017 Objets de communication Sous-chapitre 9.4 Communication sur une liaison ASCII (%SEND_RECV_MSG) Communication sur une liaison ASCII (%SEND_RECV_MSG) Utilisation des blocs fonction %SEND_RECV_MSG Cette section décrit l'utilisation des blocs fonction %SEND_RECV_MSG et fournit des conseils de programmation. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 298 Configuration de fonctions 301 Exemple de programmation 304 EIO0000001475 12/2017 297 Objets de communication Description Introduction Le bloc fonction %SEND_RECV_MSG permet d'envoyer ou de recevoir des données sur une ligne série configurée pour le protocole ASCII. Illustration Cette illustration décrit le bloc fonction %SEND_RECV_MSG : Entrées Le bloc fonction %SEND_RECV_MSG a les entrées suivantes : Libellé Type Valeur Exécuter BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. Si un deuxième front montant est détecté durant l'exécution du bloc fonction, il est ignoré et la commande en cours n'est pas affectée. Abandonner BOOL Arrête l'exécution du bloc fonction lors de la détection d'un front montant. La sortie Annulé est définie sur 1 et l'objet %SEND_RECV_MSGi.CommError contient le code 02 hex (échange interrompu à la demande de l'utilisateur). NOTE : Le réglage de l'entrée Exécuter ou Abandonner sur TRUE au premier cycle de tâches en mode RUN n'est pas détecté en tant que front montant. Le bloc fonction doit d'abord visualiser l'entrée avec la valeur FALSE pour pouvoir détecter le front montant suivant. 298 EIO0000001475 12/2017 Objets de communication Sorties Le bloc fonction %SEND_RECV_MSG a les sorties suivantes : Libellé Type Valeur Terminé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été effectuée sans erreur. Occupé BOOL La valeur TRUE indique que l'exécution du bloc fonction est en cours. Annulé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été annulée avec l'entrée Abandonner. Erreur BOOL La valeur TRUE indique qu'une erreur a été détectée. L'exécution du bloc fonction est interrompue. Pour plus d'informations sur CommError et OperError, consultez les tableaux Codes des erreurs de communication (voir page 274) et Codes des erreurs d'opération (voir page 275) . Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 274). Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 275). Conditions de fin Pour une opération d'envoi seulement, la sortie Terminé est définie sur TRUE lorsque toutes les données (y compris tout caractère de début/fin) ont été envoyées. Pour une opération de réception seulement, le système reçoit des caractères jusqu'à ce que la condition de fin soit remplie. Une fois la condition de fin remplie, la sortie Terminé est définie sur TRUE. Les caractères reçus sont alors copiés dans BufferToRecv, jusqu'aux caractères sizeRecvBuffer. sizeRecvBuffer n'est pas une condition de fin. EIO0000001475 12/2017 299 Objets de communication La condition de fin doit être définie dans l'écran Configuration de ligne série (voir Modicon M221, Contrôleur logique, Guide de programmation) : La condition de fin doit être définie sur : Un nombre d'octets reçus : Longueur de trame reçue Un silence de fin de trame : Timeout de trame reçue (ms) Une structure de trame : Premier caractère de fin Pour une opération d'envoi/réception, les caractères sont d'abord envoyés à la ligne, puis les caractères sont reçus jusqu'à ce que la condition de fin soit remplie (comme pour l'opération de réception uniquement). 300 EIO0000001475 12/2017 Objets de communication Configuration de fonctions Propriétés Double-cliquez sur le bloc fonction pour ouvrir le tableau des propriétés de la fonction. Il est impossible de modifier les propriétés de ce bloc fonction en mode en ligne. Le bloc fonction %SEND_RECV_MSG a les propriétés suivantes : Propriété Valeur Description Utilisé Case à cocher Activé/Désactivé Indique si l'adresse est utilisée. Adresse %SEND_RECV_MSGi, où i est compris entre 0 et le nombre d'objets disponibles sur le contrôleur logique i est l'identificateur de l'instance. Pour connaître le nombre maximal d'instances, consultez le guide de programmation du contrôleur logique. Symbole Texte défini par l'utilisateur Le symbole identifie de façon unique cet objet. Pour plus d'informations, consultez le Guide d'utilisation de SoMachine Basic (définition et utilisation de symboles) (voir SoMachine Basic, Guide d'utilisation). Liaison Timeout SL1 : série 1 Sélection du port SL2 : série 2 NOTE : Le port de communication SL2 intégré est disponible sur certains modèles de contrôleur uniquement. Valeur exprimée par incrément de 100 ms (100 par défaut, soit 10 secondes). La valeur 0 signifie qu'aucune temporisation n'est appliquée. La temporisation définit la durée maximale d'attente d'une réponse. Si le délai expire, l'échange est interrompu avec un code d'erreur (CommError = 01 hex). Si le système reçoit une réponse après l'expiration du délai, cette réponse est ignorée. NOTE : La configuration de la temporisation sur le bloc fonction remplace la valeur configurée sur les écrans de configuration SoMachine Basic (Configuration Modbus TCP et Configuration de ligne série, consultez le guide de programmation du contrôleur logique). QuantityToSend EIO0000001475 12/2017 Nombre d'octets à envoyer 0 à 254 La valeur 0 signifie que le bloc fonction effectue uniquement la réception de données. 301 Objets de communication Propriété Valeur Description BufferToSend 0 à 7999 Adresse du premier objet à envoyer SizeRecvBuffer Taille disponible (en octets) du 0 à 254 La valeur 0 signifie que le bloc fonction effectue tampon de réception. uniquement l'envoi de données. BufferToRecv 0 à 7999 Première adresse de la table de mots dans laquelle les valeurs lues sont stockées (%MW). QuantityRecv 0 à 254 Quantité de données reçues (en octets) Commentaire Texte défini par l'utilisateur Commentaire relatif à cet objet. Objets Le bloc fonction %SEND_RECV_MSG comporte les objets suivants : Objet Description Valeur %SEND_RECV_MSGi.LINK Sélection du port Consultez la rubrique Propriétés (voir page 301). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_MSGi.TIMEOUT Temporisateur de bloc fonction Consultez la rubrique Propriétés (voir page 301). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_MSGi.QUANTITYTOSEND Nombre d'octets à envoyer Consultez la rubrique Propriétés (voir page 301). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_MSGi.BUFFERTOSEND %SEND_RECV_MSGi.SIZERECVBUFFER %SEND_RECV_MSGi.BUFFERTORECV 302 Adresse du premier objet à envoyer (voir page 301). Peut être lu et Taille disponible (en octets) du tampon de réception (voir page 301). Peut être lu et Première adresse de la table de mots dans laquelle stocker les valeurs Consultez la rubrique Propriétés écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés écrit. Peut être modifié dans une table d'animation. Consultez la rubrique Propriétés (voir page 301). Peut être lu et écrit. Peut être modifié dans une table d'animation. EIO0000001475 12/2017 Objets de communication Objet Description Valeur %SEND_RECV_MSGi.QUANTITYRECV Quantité de données reçues (en octets) Consultez la rubrique Propriétés (voir page 301). Peut être lu uniquement. Peut être modifié dans une table d'animation. %SEND_RECV_MSGi.COMMERROR Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 299). Lecture seule. Peut être lu dans une table d'animation. %SEND_RECV_MSGi.OPERERROR Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 299). Lecture seule. Peut être lu dans une table d'animation. %SEND_RECV_MSGi.DONE Exécution correctement effectuée Consultez la rubrique Sorties (voir page 299). Lecture seule. Peut être lu dans une table d'animation. %SEND_RECV_MSGi.BUSY Exécution en cours Consultez la rubrique Sorties (voir page 299). Lecture seule. Peut être lu dans une table d'animation. %SEND_RECV_MSGi.ABORTED L'exécution a été annulée Consultez la rubrique Sorties (voir page 299). Lecture seule. Peut être lu dans une table d'animation. %SEND_RECV_MSGi.ERROR Une erreur a été détectée Consultez la rubrique Sorties (voir page 299). Lecture seule. Peut être lu dans une table d'animation. EIO0000001475 12/2017 303 Objets de communication Exemple de programmation Introduction Le bloc fonction %SEND_RECV_MSG peut être configuré comme dans cet exemple de programmation. Programmation Voici un exemple de bloc fonction %SEND_RECV_MSG : Réseau Instruction 0 BLK %SEND_RECV_MSG0 LD %I0.0 EXECUTE LD %I0.1 ABORT OUT_BLK LD DONE ST %Q0.0 LD BUSY ST %Q0.1 LD ABORTED ST %M1 LD ERROR ST %Q0.2 END_BLK NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Chronogramme Chronogrammes des blocs fonction de communication (voir page 320). 304 EIO0000001475 12/2017 Objets de communication Sous-chapitre 9.5 Send Receive SMS (%SEND_RECV_SMS) Send Receive SMS (%SEND_RECV_SMS) Utilisation du bloc fonction %SEND_RECV_SMS Cette section décrit l'utilisation du bloc fonction %SEND_RECV_SMS et fournit des conseils de programmation. Contenu de ce sous-chapitre Ce sous-chapitre contient les sujets suivants : Sujet Page Description 306 Configuration des fonctions 314 EIO0000001475 12/2017 305 Objets de communication Description Présentation Le bloc fonction %SEND_RECV_SMS est utilisé pour l'envoi et la réception de SMS (Short Message Service) via un modem connecté à une ligne série. Par exemple, le contrôleur peut envoyer un SMS afin de transmettre une alarme à un téléphone mobile spécifié ou recevoir un SMS pour arrêter une fonction de la machine. NOTE : L'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) d'au moins Niveau 3.2 pour utiliser la fonctionnalité SMS. Le bloc fonction %SEND_RECV_SMS permet d'effectuer les opérations suivantes : envoyer un SMS à un destinataire unique ou recevoir un SMS filtré à l'aide d'un tableau répertoriant les numéros de téléphone approuvés. Vous pouvez utiliser un seul bloc fonction %SEND_RECV_SMS dans un programme. L'utilisation de la fonction SMS comme équipement de contrôle à distance nécessite une attention et des dispositions particulières afin d'éviter des conséquences involontaires dues à l'exploitation de la machine commandée, des changements d'état du contrôleur ou l'altération de la mémoire de données ou des paramètres de fonctionnement de la machine. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L'EQUIPEMENT Assurez-vous de la présence sur site d'un observateur compétent et qualifié en cas d'exploitation à distance. Configurez et installez l'entrée RUN/STOP pour l'application afin que le contrôle local du démarrage ou de l'arrêt du contrôleur puisse être maintenu indépendamment des commandes envoyées à distance au contrôleur. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 306 EIO0000001475 12/2017 Objets de communication La fonction SMS dépend d'un réseau de télécommunications et de paramètres externes. Les commandes et messages SMS transmis à la machine peuvent être retardés, non envoyés ou non reçus. N'utilisez pas la fonction SMS pour des opérations de sécurité critiques ou d'autres tâches critiques. AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L'EQUIPEMENT Ne permettez pas l'utilisation de fonctions de sécurité critiques dans les commandes SMS. N'utilisez pas les commandes ou messages SMS pour des opérations critiques. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. NOTE : Vérifiez le bon fonctionnement de la fonction SMS et du réseau de télécommunications associé pendant la mise en service. Procédez à des tests réguliers pour vérifier la couverture réseau. Illustration L'illustration suivante présente le bloc fonction %SEND_RECV_SMS : EIO0000001475 12/2017 307 Objets de communication Entrées Ce tableau décrit les entrées du bloc fonction : Libellé Type Valeur Execute BOOL Lance l'exécution du bloc fonction lors de la détection d'un front montant. Si un deuxième front montant est détecté durant l'exécution du bloc fonction, il est ignoré et la commande en cours n'est pas affectée. Abort BOOL Arrête l'exécution du bloc fonction lors de la détection d'un front montant. La sortie Aborted a la valeur 1 et l'objet %SEND_RECV_SMSi.CommError contient le code 02 hex (échange arrêté sur un front montant sur l'entrée Abort). S BOOL Avec la valeur 1, le bloc fonction est configuré pour envoyer un SMS. Avec la valeur 0, le bloc fonction est configuré pour recevoir un SMS. NOTE : Le réglage de l'entrée Exécuter ou Abandonner sur 1 au premier cycle de tâches en mode RUN n'est pas détecté en tant que front montant. Le bloc fonction doit d'abord visualiser l'entrée avec la valeur 0 pour pouvoir détecter le front montant suivant. Ce tableau décrit les objets d'entrée du bloc fonction : 308 Objet d'entrée Type Valeur plage Description Link BYTE 1 - SL1 2 - SL2 Indique la ligne série utilisée pour communiquer via le modem. Timeout WORD 0 à 255 Définit la durée d'attente maximale de la réponse du modem. Valeur exprimée par incrément de 100 ms (100 par défaut, soit 10 secondes). La valeur 0 signifie qu'aucune temporisation n'est appliquée. Index WORD 0 à 15 La valeur de l'index est utilisée : Pendant l'envoi, pour sélectionner un texte à envoyer à partir de la table Messages. 0 correspond à la première chaîne de la table. Pendant la réception, pour sélectionner une chaîne de la table Commandes qui correspond au texte reçu. Mis à FFFF hex si aucune chaîne correspondante n'est trouvée. VAD DINT -2147483648 à Lors de l'envoi, la valeur de %SEND_RECV_SMSi.VAD 2147483647 remplace l'espace réservé $VAD dans le texte du SMS. Lors de la réception, la valeur de %SEND_RECV_SMSi.VAD contient la valeur du point d'insertion de l'espace réservé $VAD dans le SMS stocké dans le tableau Commandes. EIO0000001475 12/2017 Objets de communication Objet d'entrée Type Valeur plage VBD DINT -2147483648 à Lors de l'envoi, la valeur de %SEND_RECV_SMSi.VBD 2147483647 remplace l'espace réservé $VBD dans le texte du SMS. Lors de la réception, la valeur de %SEND_RECV_SMSi.VBD contient la valeur du point d'insertion de l'espace réservé $VBD dans le SMS stocké dans le tableau Commandes. Description MASKPHONE WORD 0 à 15 Lors de l'envoi, le masque est utilisé pour sélectionner le destinataire du SMS dans le tableau Numéros de téléphone. Lors de la réception, le masque est appliqué au tableau Numéros de téléphone pour créer une liste de numéros valides. Sorties Ce tableau décrit les sorties du bloc fonction : Libellé Type Valeur Done BOOL La valeur TRUE indique que l'exécution du bloc fonction a été effectuée sans erreur. Occupé BOOL La valeur TRUE indique que l'exécution du bloc fonction est en cours. Annulé BOOL La valeur TRUE indique que l'exécution du bloc fonction a été annulée avec l'entrée %SEND_RECV_SMSi.Abort. Error BOOL La valeur TRUEindique qu'une erreur a été détectée. L'exécution du bloc fonction est interrompue. Pour plus d'informations sur %SEND_RECV_SMSi.CommError et %SEND_RECV_SMSi.OperError, consultez les tableaux Codes des erreurs de communication (voir page 310) et Codes des erreurs d'opération (voir page 311). NOTE : Lorsque la sortie Busy a la valeur TRUE, l'exécution continue jusqu'à ce que l'une des sorties Done, Aborted ou Error a la valeur TRUE. NOTE : Quand la sortie Busy a la valeur TRUE, les modifications apportées à l'entrée Execute n'ont aucune incidence sur l'exécution du bloc fonction en cours. Toutefois, en cas d'appel d'un autre bloc fonction %SEND_RECV_SMS, ce SMS est refusé (CommError = 255 (FF hex) et OperError = 11 (0000000B hex)). EIO0000001475 12/2017 309 Objets de communication Ce tableau décrit les objets de sortie du bloc fonction : Objet de sortie Type Description CommError BYTE Pour plus d'informations sur %SEND_RECV_SMSi.CommError, consultez le tableau Codes des erreurs de communication (voir page 310). OperError DWORD Pour plus d'informations sur %SEND_RECV_SMSi.OperError, consultez le tableau Codes des erreurs d'opération (voir page 311). Codes des erreurs de communication Ce tableau décrit les codes d'erreur écrits dans l'objet %SEND_RECV_SMSi.CommError de sortie : Code de l'erreur détectée au format décimal (hexadécimal) Nom Description 0 (00 hex) CommunicationOK L'échange est correct. NOTE : Dans ce cas, l'objet %SEND_RECV_SMSi.OperError de sortie contient le niveau de signal du modèle au lieu d'un code d'erreur. 310 1 (01 hex) TimedOut L'échange a été interrompu suite à l'expiration du délai. 2 (02 hex) Abort L'échange a été interrompu sur un front montant sur l'entrée %SEND_RECV_SMSi.Abort. 3 (03 hex) BadLink Lien incorrect. 4 (04 hex) BadCommand Commande incorrecte. 5 (05 hex) BadMgtTable Format de la table de gestion incorrect. 6 (06 hex) BadParameters Paramètres spécifiques incorrects. 7 (07 hex) ProblemSendingSms Échec de la commande d'envoi de SMS. 9 (09 hex) RecvCmdError Commande non valide. 10 (0A hex) SendValueError Valeur non valide. 11 (0B hex) SystemResourceMissing Ressource système non disponible. 14 (0E hex) BadLength Longueur incorrecte. EIO0000001475 12/2017 Objets de communication Code de l'erreur détectée au format décimal (hexadécimal) Nom Description 254 (FE hex) ProtocolSpecificError Indique qu'une erreur de protocole a été détectée. NOTE : dans ce cas, l'objet %SEND_RECV_SMSi.OperError de sortie contient des informations supplémentaires. Consultez Codes des erreurs d'opération. (voir page 311) 255 (FF hex) SMS refusé. Refused NOTE : dans ce cas, l'objet %SEND_RECV_SMSi.OperError de sortie contient des informations supplémentaires. Consultez Codes des erreurs d'opération. (voir page 311) Codes des erreurs d'opération Ce code de retour est pertinent si le code d'erreur de communication (objet %SEND_RECV_SMSi.CommError de sortie) a la valeur suivante : 0 (00 hex) (protocole correct) 254 (FE hex) (protocole incorrect) 255 (FF hex) (SMS refusé) Lorsque %SEND_RECV_SMSi.CommError correspond à 0 (00 hex) (protocole correct), l'objet %SEND_RECV_SMSi.OperError de sortie donne la RSSI (Received Signal Strength Indication) : Valeur décimale dans l'objet %SEND_RECV_SMSi.OperError Niveau de signal du modem RSSI Moins de 9 Valeur marginale (atténuation supérieure à la limite requise pour maintenir la connexion du réseau sans fil) 10 à 14 Ok 15 à 19 Bon Supérieur à 20 Excellent EIO0000001475 12/2017 311 Objets de communication Lorsque %SEND_RECV_SMSi.CommError correspond à 254 (FE hex) (protocole incorrect), l'objet %SEND_RECV_SMSi.OperError de sortie contient des informations supplémentaires : Valeur décimale (hexadécimale) dans l'objet %SEND_RECV_SMSi.OperError Nom Description 256 (00000100 hex) ModemConfSLAsciiFailed La configuration ASCII de la ligne série est incorrecte. 512 (00000200 hex) ModemReconfSLFailed Le repositionnement de la configuration de la ligne série sur la configuration utilisateur est incorrect. 768 (00000300 hex) ModemBusy Le modem répond BUSY à la commande Dial. 1024 (00000400 hex) ModemNoDialtone Le modem répond NODIALTONE à la commande Dial. 1280 (00000500 hex) ModemNoCarrier Le signal porteuse du modem a été perdu ou déconnecté. Le modem répond NO CARRIER à la commande Dial. 1536 (00000600 hex) ModemBadAnswer La réponse du modem est incorrecte. Erreurs spécifiques liées à l'utilisation de la carte SIM SimConfigurationFailed La configuration de la carte SIM est incorrecte. Par exemple, le code PUK est demandé. 8192 (00002000 hex) SimPinCodeInvalid Le code PIN est incorrect. 16384 (00004000 hex) SimSmsCenterInvalid Le numéro de téléphone du centre SMS est incorrect. 4096 (00001000 hex) Lorsque %SEND_RECV_SMSi.CommError correspond à 255 (FF hex) (SMS refusé), l'objet %SEND_RECV_SMSi.OperError de sortie contient des informations supplémentaires : Valeur décimale (hexadécimale) dans l'objet %SEND_RECV_SMSi.OperError Nom Description 1 (00000001 hex) TargetResourceMissing La ressource du système cible n'est pas disponible. 5 (00000005 hex) BadLength La longueur est incorrecte. 6 (00000006 hex) CommChannelErr Une erreur a été détectée sur le canal de communication. 11 (0000000B hex) SystemResourceMissing La ressource du système n'est pas disponible. 12 (0000000C hex) TargetCommInactive La fonction de communication cible n'est pas active. 312 EIO0000001475 12/2017 Objets de communication Valeur décimale (hexadécimale) dans l'objet %SEND_RECV_SMSi.OperError Nom Description 13 (0000000D hex) TargetMissing La cible n'est pas disponible. 15 (0000000F hex) ChannelNotConfigured Le canal de communication n'est pas configuré. 16 (00000010 hex) PhoneNumberNotMatching Le numéro de téléphone dans le message reçu ne correspond pas à la liste des numéros approuvés (liste blanche). 17 (00000011 hex) MessageNotMatching Le message reçu ne correspond à aucun message dans la liste de commandes. Emis uniquement si le numéro de téléphone de l'émetteur correspond à une entrée dans la liste des numéros approuvés (liste blanche). EIO0000001475 12/2017 313 Objets de communication Configuration des fonctions Grandes étapes La procédure suivante décrit les principales étapes de la configuration du bloc fonction %SEND_RECV_SMS après la connexion d'un modem à la ligne série : Etape Action 1 Dans l'onglet Configuration de SoMachine Basic, configurez la ligne série avec le modem, la Commande Init et le protocole ASCII. Pour plus d'informations, reportez-vous au Guide de programmation associé à votre contrôleur logique. 2 Vérifiez que le modem est connecté à la ligne série du contrôleur, ainsi que les points suivants : La carte SIM est déverrouillée, c'est-à-dire non protégée par un code PIN. Le numéro de téléphone du centre SMS est configuré correctement sur la carte SIM. 3 Dans l'onglet Programmation : Ajoutez le bloc fonction %SEND_RECV_SMS et double-cliquez dessus pour afficher le tableau des propriétés de la fonction. Cliquez sur le bouton Configuration de SMS pour ouvrir la fenêtre Assistant SMS. Modifiez les tableaux Messages, Commandes et Numéros de téléphone. Pour plus d'informations, consultez la section Assistant SMS . Cliquez sur le bouton Appliquer pour fermer la fenêtre Assistant SMS. NOTE : Si l'adresse du bloc fonction (par exemple %SEND_RECV_SMS0) n'est pas valide et que le double-clic est désactivé, vérifiez que le niveau fonctionnel de votre application (onglet Programmation > Tâches > Comportement) est au dernier niveau Niveau 3.2). 4 Dans l'onglet Programmation, modifiez les champs de la table des propriétés de la fonction. Pour plus d'informations sur ces champs, consultez la section Propriétés (voir page 317). AVERTISSEMENT FONCTIONNEMENT IMPREVU DE L'APPAREIL Avant d'utiliser le bloc fonction, vérifiez que les indices des messages, des commandes et des numéros de téléphone prévus sont valides (ceux que vous avez l'intention d'utiliser). Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Pour plus d'informations sur l'installation et le paramétrage des modems SR2MOD03, consultez le manuel Modem sans fil SR2MOD02 et SR2MOD03 - Guide de l'utilisateur (EIO00000001575). 314 EIO0000001475 12/2017 Objets de communication Assistant SMS Pour utiliser le bloc fonction %SEND_RECV_SMS, configurez les tableaux des commandes, des messages et des numéros de téléphone. Cliquez sur le bouton Configuration de SMS dans la zone des propriétés Send Receive SMS pour ouvrir la fenêtre Assistant SMS. La fenêtre Assistant SMS comporte trois onglets dans lesquels vous devez configurer des tableaux : Messages Entrez les chaînes utilisées lors de l'envoi de SMS par le contrôleur. Utilisez des espaces réservés pour les variables, la date et l'heure. Tenez compte des limitations liées au nombre de caractères et au format. Commandes Entrez les chaînes utilisées lors de la réception de SMS par le contrôleur. Utilisez des espaces réservés pour les variables. Tenez compte des limitations liées au nombre de caractères et au format. Numéros de téléphone Lors de la programmation du bloc fonction pour l'envoi de messages SMS, vous sélectionnez le destinataire dans ce tableau. Lors de la programmation du bloc fonction pour la réception de messages SMS, vous sélectionnez les numéros de téléphone appelants autorisés dans cette liste. La liste des numéros de téléphone autorisés augmente la sécurité de votre application. Lorsqu'un appel et le SMS associé sont transmis à votre application via le modem, le numéro de téléphone de l'expéditeur est validé avant d'entreprendre toute action liée au SMS reçu. Pour plus d'informations, consultez la ligne MASKPHONE à la section Propriétés (voir page 317). NOTE : pour connaître les codes de numérotation internationaux, consultez la documentation du modem. Chaque tableau contient 16 entrées maximum avec un index compris entre 0 et 15 associés à chaque ligne. Les chaînes que contiennent les tableaux de l'assistant peuvent utiliser les formats et les tailles de message suivants : Format des caractères Tableaux Messages et Commandes GSM 7-bit 105 caractères maximum UNICODE 45 caractères maximum NOTE : le format des caractères est déterminé automatiquement par les caractères que contient le champ de texte. EIO0000001475 12/2017 315 Objets de communication Les espaces réservés suivants peuvent être ajoutés au texte des tableaux Messages ou Commandes et tenir lieu de variables : Espace réservé Valeur de remplacement lors de l'exécution Nombre de caractères en format GSM 7-bit Nombre de caractères en format UNICODE $DATE(1) YY/MM/DD (date du jour) 8+1 16 + 2 $TIME(1) HH:MM:SS (heure actuelle) 8+1 16 + 2 $VAD La valeur DWORD du paramètre %SEND_RECV_SMSi.VAD est convertie en texte. 12 maximum 24 maximum $VBD La valeur DWORD du paramètre %SEND_RECV_SMSi.VBD est convertie en texte. 12 maximum 24 maximum $$ Le symbole $ 1 2 NOTE : lorsque le texte saisi est valide (nombre maximum de caractères respecté et espaces réservés valides), le bouton Appliquer est actif. (1) Ignoré pour le tableau Commandes Exemples Cet exemple illustre l'utilisation des espaces réservés dans les messages : Messages Message configuré $DATE : $TIME - Valeur A = $VAD et Valeur B = $VBD ! Valeurs des espaces réservés VAD = 10; VBD = 2000 SMS envoyé 15/04/27 : 11:15:43 - Valeur A = 10 et Valeur B = 2000 ! Cet exemple illustre l'utilisation des espaces réservés dans les commandes : Commandes 316 Commande configurée Valeur A = $VAD et Valeur B = $VBD ! SMS reçu Valeur A = 300 et Valeur B = 2 ! Valeurs capturées VAD = 300; VBD = 2 EIO0000001475 12/2017 Objets de communication Propriétés Double-cliquez sur le bloc fonction pour ouvrir le tableau des propriétés de la fonction. Il est impossible de modifier les propriétés de ce bloc fonction en mode en ligne. Le bloc fonction %SEND_RECV_SMS a les propriétés suivantes : Propriété Valeur Description Utilisé Case à cocher Activé/Désactivé. Indique si l'adresse est utilisée. Adresse %SEND_RECV_SMSi, où i est compris entre 0 et le nombre d'objets disponibles sur le contrôleur logique. i est l'identificateur de l'instance. Pour connaître le nombre maximal d'instances, consultez le guide de programmation de votre contrôleur logique. Symbole Texte défini par l'utilisateur. Le symbole identifie de façon unique cet objet. Pour plus d'informations, consultez Définition et utilisation des symboles (voir SoMachine Basic, Guide d'utilisation). Link 1 - SL1 2 - SL2 La ligne série sur laquelle le modem est configuré (onglet Configuration). Timeout 0 à 255 Valeur exprimée par incrément de 100 ms (100 par défaut, soit 10 secondes). La valeur 0 signifie qu'aucune temporisation n'est appliquée. La temporisation définit la durée d'attente maximale de la réponse du modem. Si le délai expire, l'échange est interrompu avec un code d'erreur (%SEND_RECV_SMSi.CommError = 01 hex). Si le système reçoit une réponse après l'expiration du délai, cette réponse est ignorée. Index 0 à 15 NOTE : 0 correspond à la première chaîne de la liste. VAD -214748364 à 2147483647 NOTE : la temporisation définie pour le bloc fonction remplace la valeur entrée sur l'écran de configuration SoMachine Basic. Pour plus d'informations, reportez-vous au Guide de programmation associé à votre contrôleur logique. Lors de l'envoi, la valeur de l'index est utilisée pour sélectionner un texte à envoyer à partir du tableau Messages. Lors de la réception, la valeur correspond à l'index du tableau Commandes qui est identique au texte reçu. Lors de l'envoi, la valeur de %SEND_RECV_SMSi.VAD remplace l'espace réservé $VAD dans le texte du SMS. Lors de la réception, la valeur de %SEND_RECV_SMSi.VAD contient la valeur du point d'insertion de l'espace réservé $VAD dans le SMS stocké dans le tableau Commandes. VBD -214748364 à 2147483647 Lors de l'envoi, la valeur de %SEND_RECV_SMSi.VBD remplace l'espace réservé $VBD dans le texte du SMS. Lors de la réception, la valeur de %SEND_RECV_SMSi.VBD contient la valeur du point d'insertion de l'espace réservé $VBD dans le SMS stocké dans le tableau Commandes. EIO0000001475 12/2017 317 Objets de communication Propriété Valeur Description MASKPHONE 0000000000000000 bin à 1000000000000000 bin Lors de l'envoi, ce masque est utilisé pour sélectionner le Texte défini par l'utilisateur Commentaire relatif à cet objet. Commentaire Valeur initiale du masque. destinataire du SMS dans le tableau Numéros de téléphone. Par exemple, 0000000000000010 bin signifie que le SMS est envoyé au deuxième numéro (index 1) du tableau Numéros de téléphone. Lors de la réception, le masque est appliqué au tableau Numéros de téléphone pour créer une liste de numéros appelants valides. Un bit du masque indique le numéro de téléphone qui a été utilisé pour envoyer le SMS au contrôleur logique. Exemple : 0000000000000100 bin signifie que le troisième numéro de téléphone de la liste Numéros de téléphone (index 2) a envoyé le SMS. Objets Le bloc fonction %SEND_RECV_SMS comporte les objets suivants : Objet Description Valeur %SEND_RECV_SMSi.LINK Sélection du port Consultez la rubrique Propriétés (voir page 317). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.TIMEOUT Temporisateur de bloc fonction Consultez la rubrique Propriétés (voir page 317). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.INDEX 318 Index de messages ou table de commandes Consultez la rubrique Propriétés (voir page 317). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.VAD VAD - Espace réservé A Consultez la rubrique Propriétés (voir page 317). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.VBD VBD - Espace réservé B Consultez la rubrique Propriétés (voir page 317). Peut être lu et écrit. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.MASKPHONE Masque de sélection des entrées dans la table de numéros de téléphone Consultez la rubrique Propriétés (voir page 317). Peut être lu et écrit. Peut être modifié dans une table d'animation. EIO0000001475 12/2017 Objets de communication Objet Description Valeur %SEND_RECV_SMSi.COMMERROR Codes des erreurs de communication Consultez Codes des erreurs de communication (voir page 310). Peut être lu uniquement. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.OPERERROR Codes des erreurs d'opération Consultez Codes des erreurs d'opération (voir page 311). Peut être lu uniquement. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.DONE Exécution correctement effectuée Consultez la rubrique Sorties (voir page 309). Peut être lu uniquement. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.BUSY Exécution en cours Consultez la rubrique Sorties (voir page 309). Peut être lu uniquement. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.ABORTED L'exécution a été annulée Consultez la rubrique Sorties (voir page 309). Peut être lu uniquement. Peut être modifié dans une table d'animation. %SEND_RECV_SMSi.ERROR Une erreur a été détectée Consultez la rubrique Sorties (voir page 309). Peut être lu uniquement. Peut être modifié dans une table d'animation. Chronogrammes Consultez la rubrique Comportement des signaux des blocs fonction avec l'entréeExecute (voir page 320). EIO0000001475 12/2017 319 Objets de communication Sous-chapitre 9.6 Chronogrammes des blocs fonction d'objet de communication. Chronogrammes des blocs fonction d'objet de communication. Exemples de chronogrammes Exemple 1 Exécution terminée sans erreur : Exemple 2 Exécution terminée avec une erreur : 320 EIO0000001475 12/2017 Objets de communication Exemple 3 Bloc fonction abandonné par l'application : Si Execute a déjà été remis à FALSE lors de la demande d'abandon, Abort est réglé sur TRUE pour un seul cycle. (1) Réglé sur TRUE pour un seul cycle car Execute a déjà été réglé sur FALSE. EIO0000001475 12/2017 321 Objets de communication Exemple 4 Exécution terminée sans erreur une fois que Execute a été réglé sur FALSE. (1) Réglé sur TRUE pour un seul cycle car Execute a déjà été réglé sur FALSE. 322 EIO0000001475 12/2017 SoMachine Basic EIO0000001475 12/2017 Chapitre 10 Fonctions définies par l'utilisateur Fonctions définies par l'utilisateur Présentation Vue d'ensemble Une fonction définie par l'utilisateur vous permet de créer des fonctions avec un ou plusieurs paramètres d'entrée, des variables locales et une valeur de retour. Les fonctions définies par l'utilisateur sont stockées dans le projet SoMachine Basic. Vous pouvez appeler des fonctions définies par l'utilisateur dans : la tâche maître ; les tâches périodiques ; les POU libres. Pour créer des fonctions définies par l'utilisateur, l'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) correspondant au moins à Niveau 6.0. Pour plus d'informations sur l'utilisation des fonctions définies par l'utilisateur, consultez la section SoMachine Basic - Guide d'utilisation - Fonctions définies par l'utilisateur (voir SoMachine Basic, Guide d'utilisation). EIO0000001475 12/2017 323 324 EIO0000001475 12/2017 SoMachine Basic EIO0000001475 12/2017 Chapitre 11 Blocs fonction définis par l'utilisateur Blocs fonction définis par l'utilisateur Présentation Vue d'ensemble Un bloc fonction défini par l'utilisateur vous permet de créer des blocs fonction avec un ou plusieurs paramètres d'entrée et de sortie, des variables locales et une valeur de retour. Les blocs fonction définis par l'utilisateur sont stockés dans le projet SoMachine Basic. Vous pouvez appeler des blocs fonction définis par l'utilisateur dans : la tâche maître ; les tâches périodiques ; les événements ; les POU libres. Pour créer des blocs fonction définis par l'utilisateur, l'application doit être configurée avec un niveau fonctionnel (voir SoMachine Basic, Guide d'utilisation) correspondant au moins à Niveau 6.0. Pour plus d'informations sur l'utilisation des blocs fonction définis par l'utilisateur, consultez la section SoMachine Basic - Guide d'utilisation - Blocs fonction définis par l'utilisateur (voir SoMachine Basic, Guide d'utilisation). EIO0000001475 12/2017 325 326 EIO0000001475 12/2017 SoMachine Basic EIO0000001475 12/2017 Chapitre 12 Fonctions d'horloge Fonctions d'horloge Présentation Ce chapitre décrit les fonctions de gestion horaire des contrôleurs. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page Fonctions d'horloge 328 Horodatage 329 Réglage de la date et de l'heure 331 EIO0000001475 12/2017 327 Fonctions d'horloge Introduction Sur les contrôleurs logiques équipés d'une fonction RTC, vous pouvez utiliser les fonctions d'heure du jour suivantes lorsque SoMachine Basic est connecté au contrôleur logique : Les blocs fonction RTC (voir page 254) permettent de lire la date et l'heure de l'horodateur, ou de mettre à jour l'horodateur du contrôleur logique avec une date et une heure définies par l'utilisateur. Les blocs fonction de programmation (voir page 249) permettent de contrôler des actions à des heures prédéfinies ou calculées. L'horodatage (voir page 329) permet d'affecter une date et une heure à des événements, et de mesurer la durée de ces derniers. Cette horloge peut être réglée par un programme (voir page 329). La pile du contrôleur facilite le réglage de l'horloge en continuant de fonctionner pendant 1 an lorsque le contrôleur est hors tension. Le contrôleur n'a pas de batterie rechargeable. La batterie a une durée de vie moyenne de 4 ans et doit être remplacée avant sa fin de vie. Afin d'éviter toute perte de données, vous disposez d'un délai de 120 secondes pour remplacer la pile du contrôleur. L'horloge affiche l'heure au format "24 heures" et tient compte des années bissextiles. 328 EIO0000001475 12/2017 Horodatage Introduction Les mots système %SW49 à %SW53 contiennent la date et l'heure au format BCD, un format utile pour l'affichage sur un périphérique ou la transmission vers un périphérique. Ces mots système permettent de stocker la date et l'heure d'un événement. Les instructions BTI permettent de convertir les dates et heures du format BCD au format binaire. Pour plus d'informations, consultez la section Instructions de conversion BCD/binaire (voir page 91). Datage d'un événement Pour dater un événement, il suffit d'utiliser des opérations d'affectation afin de transférer le contenu de mots système vers des mots mémoire, puis de traiter ces mots mémoire (par exemple, la transmission à l'unité d'affichage à l'aide de l'instruction EXCH). Exemple de programmation L'exemple suivant montre comment dater un front montant sur l'entrée %I0.1 : Réseau Instruction 0 LDR %I0.1 [%MW11:5:=%SW49:5] NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Dès qu'un événement est détecté, la table de mots contient : Codage Octet de poids fort Octet de poids faible %MW11 - Jour de la semaine (1) %MW12 00 Seconde %MW13 Heure Minute %MW14 Mois Jour %MW15 Siècle Année (1) 1 = lundi, 2 = mardi, 3 = mercredi, 4 = jeudi, 5 = vendredi, 6 = samedi, 7 = dimanche EIO0000001475 12/2017 329 Exemple de table de mots Exemple de données pour le lundi 03 juin 2013 à 13:40:30 : Mot Valeur (hex.) Signification %MW11 0001 Lundi %MW12 0030 30 secondes %MW13 1340 13 heures, 40 minutes %MW14 0603 06 = 3 juin %MW15 2013 2013 Date et heure du dernier arrêt Les mots système %SW54 à %SW57 contiennent la date et l'heure du dernier arrêt, et le mot %SW58 contient le code affichant la cause du dernier arrêt, au format BCD. 330 EIO0000001475 12/2017 Réglage de la date et de l'heure Introduction Vous pouvez mettre à jour la date et l'heure du contrôleur logique, de l'une des méthodes suivantes : Avec l'onglet Gestion RTC de l'onglet Mise en service de SoMachine Basic. Cette méthode n'est disponible qu'en mode en ligne (voir SoMachine Basic, Guide d'utilisation). Vous avez le choix entre deux modes : Manuel : ce mode affiche des champs de date et d'heure, et vous permet de choisir manuellement l'heure à configurer dans le contrôleur logique. Automatique : ce mode utilise l'heure du PC qui exécute SoMachine Basic. Pour plus d'informations, consultez la section Gestion RTC (voir SoMachine Basic, Guide d'utilisation). Dans un programme, avec des blocs fonction RTC (voir page 254). En mode en ligne, en mettant à jour les mots système soit directement, soit dans le programme à l'aide des blocs d'opération %SW49 à %SW53 ou du mot système %SW59. NOTE : la date et l'heure ne sont réglables que si la fonction RTC est disponible dans votre contrôleur logique (consultez le guide de programmation de votre contrôleur logique.). Utilisation des mots %SW49 à %SW53 Pour régler la date et l'heure à l'aide des mots système %SW49 à %SW53, le bit %S50 doit être mis à 1. Lorsque %S50 est mis à 1, le contrôleur ne met plus à jour les mots système %SW49 à %SW53. Sur un front montant de %S50 (%S50 mis à 0), le RTC interne du contrôleur est mis à jour par les valeurs dans %SW49 à %SW53. Ensuite, le contrôleur reprend la mise à jour de %SW49 à %SW53 à l'aide de l'horloge RTC. Ce tableau indique les mots système contenant la date et l'heure (au format BCD) des fonctions RTC : Mot système Description %SW49 xN Jour de la semaine (N=1 pour lundi) %SW50 00SS : secondes %SW51 HHMM : heure et minute %SW52 MMJJ : mois et jour %SW53 SSAA : siècle et année Pour obtenir la liste complète des bits et mots système, consultez le guide de programmation de votre contrôleur. EIO0000001475 12/2017 331 Exemple de programmation : Réseau Instruction Commentaire 0 LD %S50 R %S50 – 1 LD %I0.1 [%SW50:=%MW11] [%SW51:=%MW12] [%SW52:=%MW13] [%SW53:=%MW14] S %S50 Consultez la section Instructions de conversion BCD/binaire (voir page 91). NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). Les mots %MW11 à %MW14 contiennent les nouvelles date et heure (consultez la section Analyse du code BCD (voir page 91)) et correspondent au codage des mots %SW50 à %SW53. NOTE : %SW49 (Jour de la semaine) est automatiquement calculé en fonction de la date indiquée. La table de mots doit contenir les nouveaux paramètres de date et d'heure : Codage Octet de poids fort Octet de poids faible %MW11 – Seconde %MW12 Heure Minute %MW13 Mois Jour %MW14 Siècle Année Mot Valeur (hex.) Signification %MW11 0030 30 secondes %MW12 1340 13 heures, 40 minutes %MW13 0603 06 = 3 juin %MW14 2013 2013 Exemple pour le 03 juin 2013 : 332 EIO0000001475 12/2017 Utilisation du mot %SW59 Pour mettre à jour la date et l'heure, vous pouvez également utiliser le bit système %S59 et le mot système %SW59. Le réglage du bit %S59 sur 1 permet de configurer la date et l'heure en cours à l'aide du mot %SW59. %SW59 incrémente ou décrémente chacun des composants de date et d'heure sur un front montant. Ce tableau décrit chaque bit du mot système %SW59 pour le réglage des paramètres de date et heure : Incrément Décrément Paramètre Bit 0 Bit 8 Jour de la semaine(1) Bit 1 Bit 9 Secondes Bit 2 Bit 10 Minutes Bit 3 Bit 11 Heures Bit 4 Bit 12 Jours Bit 5 Bit 13 Mois Bit 6 Bit 14 Années Bit 7 Bit 15 Siècles(1) (1) L'utilisateur ne peut pas modifier (incrémentation ou décrémentation) le jour de la semaine et les siècles. Pour obtenir la liste complète des bits et mots système, consultez le guide de programmation de votre contrôleur. Exemple d'application Ce panneau avant permet de modifier le réglage de l'horloge interne (heures, minutes et secondes). EIO0000001475 12/2017 333 Description des commandes : Le commutateur Heures/Minutes/Secondes permet de sélectionner l'heure à modifier, respectivement à l'aide des entrées %I0.2 %I0.3 et %I0.4. Le bouton + incrémente l'affichage de l'heure sélectionnée via l'entrée %I0.0. Le bouton - décrémente l'affichage de l'heure sélectionnée via l'entrée %I0.1. Le programme suivant lit les entrées du panneau et règle l'horloge interne : Réseau Instruction Commentaire 0 LD %M0 ST %S59 – 1 LD %I0.2 ANDR %I0.0 ST %SW59:X3 Heure 2 LD %I0.2 ANDR %I0.1 ST %SW59:X11 – 3 LD %I0.3 ANDR %I0.0 ST %SW59:X2 Minute 4 LD %I0.3 ANDR %I0.1 ST %SW59:X10 – 5 LD %I0.4 ANDR %I0.0 ST %SW59:X1 Seconde 6 LD %I0.4 ANDR %I0.1 ST %SW59:X9 – NOTE : Pour obtenir le schéma à contacts équivalent, reportez-vous à la procédure de réversibilité (voir page 20). 334 EIO0000001475 12/2017 SoMachine Basic Glossaire EIO0000001475 12/2017 Glossaire ! % %Q Selon la norme IEC, % est un préfixe qui identifie les adresses mémoire internes des contrôleurs logiques pour stocker la valeur de variables de programme, de constantes, d'E/S, etc. Selon la norme IEC, %Q représente un bit de sortie (par exemple, un objet langage de type sortie numérique). A application Programme comprenant des données de configuration, des symboles et de la documentation. ASCII Acronyme de American Standard Code for Information Interchange. Protocole utilisé pour représenter les caractères alphanumériques (lettres, chiffres, ainsi que certains caractères graphiques et de contrôle). B bloc fonction Unité de programmation qui possède 1 ou plusieurs entrées et renvoie 1 ou plusieurs sorties. Les blocs fonction (FBs) sont appelés via une instance (copie du bloc fonction avec un nom et des variables dédiés) et chaque instance a un état persistant (sorties et variables internes) d'un appel au suivant. Exemples : temporisateurs, compteurs bus d'extension Bus de communication électronique entre des modules d'E/S d'extension et un contrôleur. C configuration Agencement et interconnexions des composants matériels au sein d'un système, ainsi que les paramètres matériels et logiciels qui déterminent les caractéristiques de fonctionnement du système. EIO0000001475 12/2017 335 Glossaire contrôleur Automatise des processus industriels. On parle également de contrôleur logique programmable (PLC) ou de contrôleur programmable. E E/S Entrée/sortie élément conditionnel Permet d'implémenter des conditions dans le programme en mode déconnecté (hors ligne). élément de boucle Permet d'implémenter une séquence d'instructions dans le programme en mode hors ligne. entrée analogique Convertit les niveaux de tension ou de courant reçus en valeurs numériques. Vous pouvez stocker et traiter ces valeurs au sein du contrôleur logique. J journalisation des données Stockage permanent des données liées à des objets ou des chaînes. L langage à liste d'instructions Un programme écrit en langage à liste d'instructions (IL) consiste en une série d'instructions textuelles exécutées de manière séquentielle par le contrôleur. Chaque instruction comprend un numéro de ligne, un code d'instruction et un opérande (voir IEC 61131-3). langage schéma à contacts Représentation graphique des instructions d'un programme de contrôleur, avec des symboles pour les contacts, les bobines et les blocs dans une série de réseaux exécutés séquentiellement par un contrôleur (voir IEC 61131-3). P programme Composant d'une application constitué de code source compilé qu'il est possible d'installer dans la mémoire d'un contrôleur logique. 336 EIO0000001475 12/2017 Glossaire R RTC Acronyme de real-time clock, horloge en temps réel. Horloge horaire et calendaire supportée par une batterie qui fonctionne en continu, même lorsque le contrôleur n'est pas alimenté, jusqu'à la fin de l'autonomie de la batterie. S sortie analogique Convertit des valeurs numériques stockées dans le contrôleur logique et envoie des niveaux de tension ou de courant proportionnels. EIO0000001475 12/2017 337 Glossaire 338 EIO0000001475 12/2017 SoMachine Basic Index EIO0000001475 12/2017 Index Symbols %C, 188 %DR, 231 %I, 33 %IW, 33 %IWS, 33 %KD, 41 %KF, 41 %KW, 36 %M, 31 %MD, 41 %MF, 41 %MSG, 198 %MW, 36 %Q, 33 %QW, 33 %QWS, 33 %R, 222 %READ_VAR, 273 configuration, 277 description, 273 exemple de programmation, 280 %S, 31 %SBR, 239 %SC, 244 %SCH, 249 %SEND_RECV_MSG, 298 configuration, 301 description, 298 exemple de programmation, 304 %SEND_RECV_SMS, 306 configuration, 314 description, 306 %SW, 36 %TM, 178 %WRITE_READ_VAR, 290 configuration, 293 description, 290 exemple de programmation, 296 EIO0000001475 12/2017 %WRITE_VAR, 282 configuration, 284 description, 282 exemple de programmation, 288 %X, 31 %Xi (étape Grafcet), propriétés, 264 A ABS, 107 ACOS, 110 addition, 83 adressage format, 33 objets d'E/S, 33 affectation, opérateurs, 62 AND, 64 ANDF, 64 ANDN, 64 ANDR, 64 ASCII exemples, 209 ASIN, 110 Assistant Drum, 233 ATAN, 110 B bits système %S18, 42 blocs comparaison insertion d'expressions IL dans, 27 339 Index blocs fonction %READ_VAR, 273 %SEND_RECV_MSG, 298 %SEND_RECV_SMS, 306 %WRITE_READ_VAR, 290 %WRITE_VAR, 282 counter, 188 définis par l'utilisateur, 325 description générale, 53 Drum, 231 LIFO/FIFO register, 222 message, 198 principes de programmation, 171 RTC, 255 shift bit register, 239 step counter, 244 timer, 178 blocs fonction définis par l'utilisateur, 325 blocs horodateurs blocs horodateurs, 249 blocs opération insertion d'instructions d'affectation dans, 23 C calcul, 83 chaînes de bits, 46 code source, utilisation d'exemples, 20 COS, 110 counter configuration, 190 description, 188 exemple de programmation, 193 D débordement index, 52 débordement d'index, 52 décrémentation, 83 DEG_TO_RAD, 112 DINT_TO_REAL, 113 division, 83 340 Drum configuration, 232 exemple de programmation, 235 Drum description, 231 E élément conditionnel, 100 configuration, 101 élément de boucle, 102 configuration, 102 EQUAL_ARR, 137 EXCH, 196 exemples, code source, 20 EXP, 107 expression de comparaison insertion dans des réseaux en langage Schéma à contacts, 27 EXPT, 107 F FALLING opérateur, 72 FIND_, 139 fonctions d'horloge horodatage, 329 présentation, 328 réglage de la date et de l'heure, 331 fonctions définies par l'utilisateur, 323 format d'adresse des entrées/sorties, 33 front descendant détection avec l'instruction LDF, 59 détection avec l'opérateur FALLING, 59 front montant détection avec l'instruction LDR, 59 détection avec l'opérateur RISING, 59 EIO0000001475 12/2017 Index I incrémentation, 83 instruction NOP, 97 instructions arithmétiques, 83 ASCII, 115 booléennes, 56 comparaison, 74 conversion ASCII/entier, 118 conversion ASCII/mot double, 126 conversion ASCII/valeur flottante, 122 conversion d'angle, 112 conversion d'entier/nombre à virgule flottante, 113 conversion entier/ASCII, 120 conversion mot double/ASCII, 128 conversion valeur flottante/ASCII, 124 échange, 196 END, 95 NOP, 97 objets d'entrée/sortie, 161 pile, 130 ROUND, 116 saut, 98 sous-programme, 104 SR, 104 table d'objets, 132 tables d'objet, 135 trigonométriques, 110 instructions arithmétiques, 83 instructions booléennes, 57 instructions d'affectation chaînes de bits, 79 insertion dans des réseaux en langage Schéma à contacts, 23 mots, 81 numériques, 78 tables d'objets, 133 instructions d'échange EXCH1, 196 EXCH2, 196 EXCH3, 196 instructions de comparaison, 74 EIO0000001475 12/2017 instructions de conversion BCD/binaire, 91 mot simple/double, 93 instructions de décalage, 89 instructions de pile MPP, 130 MPS, 130 MRD, 130 instructions END, 95 instructions logiques, 87 instructions numériques décalage, 89 INT_TO_REAL, 113 J journalisation des données, 261 configuration, 262 L LD, 60 LDF, 59, 60 LDN, 60 LDR, 59, 60 LIFO/FIFO register configuration, 224 description, 222 exemple de programmation, 228 FIFO, 227 LIFO, 226 LKUP, 147 LN, 107 LOG, 107 M MAX_ARR, 141 MEAN, 152 message configuration, 202 description, 198 exemple de programmation, 207 MIN_ARR, 141 341 Index modbus requêtes et exemples standard, 211 mots système %SW17, 42 multiplication, 83 N N, 71 O objets adresse directe, 50 adresse indexée, 50 définition, 30 indexés, 50 logiciels, 169 réseau, 167 structurés, 46 tables, 46 objets bit blocs fonction, 53 objets bit mémoire description, 31 objets de réseau, 167, 167 objets de variateur, 269 objets flottants description, 41 objets mot bloc fonction, 54 description, 36 objets mot double blocs fonction, 54 description, 41 OCCUR_ARR, 143 opérateur NOT, 71 342 opérateurs affectation, 62 AND, 64 chargement, 60 FALLING, 72 NOT, 71 OR, 66 RISING, 72 XOR, 68 opérateurs AND, 64 opérateurs de chargement, 60 opérateurs OR, 66 opérateurs OR exclusifs, 68 opérations insertion dans des réseaux en langage Schéma à contacts, 23 OR, 66 ORF, 66 ORN, 66 ORR, 66 outils objets de réseau, 167 Outils objets de variateur, 269 P PID, 260 propriétés des étapes Grafcet, 264 R R, 62 racine carrée, 83 RAD_TO_DEG, 112 READ_IMM_IN, 154 REAL_TO_DINT, 113 REAL_TO_INT, 113 reste, 83 RISING opérateur, 72 ROL_ARR, 144 ROR_ARR, 144 RTC configuration, 259 EIO0000001475 12/2017 Index S S, 62 schedule blocks description, 249 Schedule Blocks programmation et configuration, 252 shift bit register configuration, 240 description, 239 exemple de programmation, 242 SIN, 110 SORT_ARR, 146 soustraction, 83 SQRT, 107 SR (sous-programme), instructions, 104 ST, 62 step counter configuration, 245 description, 244 exemple de programmation, 246 STN, 62 SUM_ARR, 135 V valeur absolue, 83 W WRITE_IMM_OUT, 156 X XOR, 68 XORF, 68 XORN, 68 XORR, 68 T tables instructions sur, 132 TAN, 110 timer configuration, 179 description, 178 exemple de programmation, 186 Type TOF, 183 type TON, 181 type TP, 185 traitement numérique affectation, 78 présentation, 77 TRUNC, 107 U utilisation d'exemples de code source, 20 EIO0000001475 12/2017 343 Index 344 EIO0000001475 12/2017