Schneider Electric SoMachine Mode d'emploi

Ajouter à Mes manuels
949 Des pages
Schneider Electric SoMachine Mode d'emploi | Fixfr
SoMachine
EIO0000000069 02/2018
SoMachine
Guide de programmation
EIO0000000069.15
02/2018
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.
© 2018 Schneider Electric. Tous droits réservés.
2
EIO0000000069 02/2018
Table des matières
Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . .
A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . .
Partie I Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 1 Présentation générale de SoMachine Logic Builder . . . .
Présentation de SoMachine Logic Builder. . . . . . . . . . . . . . . . . . . . . .
Tâches effectuées par SoMachine Logic Builder . . . . . . . . . . . . . . . .
Chapitre 2 Interface utilisateur de SoMachine Logic Builder . . . . . .
Éléments de l'écran de SoMachine Logic Builder . . . . . . . . . . . . . . . .
Navigateurs à plusieurs onglets . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multi-onglet Catalogue Vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Personnalisation de l'interface utilisateur . . . . . . . . . . . . . . . . . . . . . .
Interface utilisateur en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . .
Menus et commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 3 Concepts de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction et concepts de base. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie II Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 4 Installation des équipements . . . . . . . . . . . . . . . . . . . . .
Intégration d'équipements Sercos provenant de fournisseurs tiers. . .
Chapitre 5 Gestion des équipements . . . . . . . . . . . . . . . . . . . . . . . .
5.1 Ajout d'équipements par glisser-déposer . . . . . . . . . . . . . . . . . . . . . .
Ajout d'équipements par glisser-déposer . . . . . . . . . . . . . . . . . . . . . .
5.2 Ajout d'équipements via le menu contextuel ou le bouton plus . . . . . .
Ajout d'un contrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout d'équipements d'expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout de gestionnaires de communication. . . . . . . . . . . . . . . . . . . . . .
Ajout d'équipements à un gestionnaire de communication . . . . . . . . .
Ajout d'équipements à partir d'un modèle . . . . . . . . . . . . . . . . . . . . . .
5.3 Actualisation des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Actualisation des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.4 Conversion d'équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversion des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.5 Conversion de projets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversion SoMachine Basic et Twido Projets . . . . . . . . . . . . . . . . . .
EIO0000000069 02/2018
17
19
25
27
28
29
31
32
38
45
47
52
53
55
55
57
59
59
61
62
62
65
66
67
69
71
73
74
74
76
76
80
80
3
Chapitre 6 Boîtes de dialogue communes de l'éditeur d'appareil . . .
6.1 Configuration des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales sur les éditeurs d'appareil. . . . . . . . . . . . . . . .
Sélection du contrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramètres de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Journal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramètres API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisateurs et groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Relevé des tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Etat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Mappage E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mappage E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de la boîte de dialogue Mappage E/S . . . . . . . . . . . . . . . . .
Mappage E/S en mode en ligne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables implicites pour le forçage des E/S . . . . . . . . . . . . . . . . . . . .
Partie III Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 7 Composants du programme . . . . . . . . . . . . . . . . . . . . . . .
7.1 Unité d'organisation de programme (POU) . . . . . . . . . . . . . . . . . . . . .
POU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout et appel de POU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propriété. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propriété d'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonction externe, bloc fonction, méthode . . . . . . . . . . . . . . . . . . . . . .
POU pour vérifications implicites . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Bloc fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instance de bloc fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appel d'un bloc fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Extension d'un bloc fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
99
100
101
103
119
124
125
127
129
131
134
147
148
148
149
150
153
156
157
159
161
162
163
164
168
170
173
176
178
182
185
187
188
189
190
193
194
196
EIO0000000069 02/2018
Mise en œuvre d'interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appel de méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pointeur SUPER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pointeur THIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3 Objets d'application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Type de données (DUT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liste de variables globales - GVL . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liste de variables de réseau globales - GNVL . . . . . . . . . . . . . . . . . .
Variables persistantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fichier externe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liste de textes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Collection d’images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 8 Configuration de tâche . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuration de tâche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout de tâches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 9 Gestion des applications. . . . . . . . . . . . . . . . . . . . . . . . .
9.1 Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2 Compilation et téléchargement des applications . . . . . . . . . . . . . . . . .
Compilation des applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Processus de compilation des applications modifiées . . . . . . . . . . . .
Téléchargement d'une application. . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.3 Exécution d'applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exécution d'applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4 Entretien des applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Surveillance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Débogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie IV Editeurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 10 Editeur FBD/LD/IL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.1 Informations sur l'éditeur FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Langage FBD (Function Block Diagram) . . . . . . . . . . . . . . . . . . . . . . .
Langage Diagramme à contacts (Ladder Diagram, LD) . . . . . . . . . . .
Langage Liste d'instructions (Instruction List, IL). . . . . . . . . . . . . . . . .
Modificateurs et opérateurs dans IL . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000069 02/2018
199
201
203
205
208
209
211
213
221
223
225
232
235
235
237
238
239
241
242
242
244
245
246
249
250
261
261
263
264
265
267
269
270
271
272
273
274
276
5
Utilisation de l'éditeur FBD et LD . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de l'éditeur IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Positions du curseur dans FBD, LD et IL . . . . . . . . . . . . . . . . . . . . . . .
Menu FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur FBD/LD/IL en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . . .
10.2 Eléments FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boîte à outils /LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Réseau dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Affectation dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Saut dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Etiquette dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modules dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instruction RETURN dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . .
Branchement/bobinage suspendu dans FBD/LD/IL. . . . . . . . . . . . . . .
Branchement parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Définir/réinitialiser dans FBD/LD/IL . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bobinage Set/Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.3 Eléments LD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contact. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bobinage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 11 Editeur CFC (Continuous Function Chart) . . . . . . . . . . . .
Langage CFC (Continuous Function Chart, diagramme fonctionnel
continu) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur CFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Positions du curseur dans CFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eléments CFC / Boîte à outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de l'éditeur CFC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur CFC en mode en ligne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur CFC orienté page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 12 Editeur SFC (Sequential Function Chart) . . . . . . . . . . . . .
Editeur SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Langage SFC (Sequential Function Chart) . . . . . . . . . . . . . . . . . . . . .
Positions du curseur dans SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de l'éditeur SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propriétés des éléments SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eléments SFC/Boîte à outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
279
284
290
294
295
301
302
304
306
306
307
308
309
310
313
316
317
318
319
320
321
322
323
325
327
333
336
338
341
342
344
345
347
349
351
EIO0000000069 02/2018
Qualificatifs d'actions dans SFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables implicites - Drapeaux SFC. . . . . . . . . . . . . . . . . . . . . . . . . .
Séquence de traitement dans SFC . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur SFC en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 13 Editeur ST (Structured Text). . . . . . . . . . . . . . . . . . . . . .
13.1 Informations sur l'éditeur ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur ST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur ST en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.2 Langage Structured Text (ST) / Extended Structured Text (ExST) . . .
ST (Structured Text ST)/ExST (Extended Structured Text) . . . . . . . .
Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie V Éditeurs d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 14 Éditeurs de déclaration . . . . . . . . . . . . . . . . . . . . . . . . . .
Éditeur de déclaration textuel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Éditeur de déclaration tabulaire. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur de déclaration en mode en ligne . . . . . . . . . . . . . . . . . . . . . .
Chapitre 15 Editeur DTM (Device Type Manager) . . . . . . . . . . . . . . .
Editeur DTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 16 Editeur DUT (Data Unit Type). . . . . . . . . . . . . . . . . . . . .
Editeur DUT (Data Unit Type) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 17 Editeur GVL (Global Variables List) . . . . . . . . . . . . . . . .
Editeur GVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 18 Editeur NVL (Network Variables List) . . . . . . . . . . . . . . .
18.1 Informations sur l'éditeur NVL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Editeur de liste de variables de réseau . . . . . . . . . . . . . . . . . . . . . . . .
18.2 Informations générales sur les variables de réseau . . . . . . . . . . . . . .
Introduction à la liste de variables de réseau (NVL) . . . . . . . . . . . . . .
Configuration de l'échange de variables de réseau. . . . . . . . . . . . . . .
Règles des listes de variables de réseau (NVL) . . . . . . . . . . . . . . . . .
Etat de fonctionnement de l'expéditeur et du récepteur . . . . . . . . . . .
Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compatibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000069 02/2018
362
363
368
370
373
374
375
376
380
381
382
384
395
397
398
399
403
405
405
407
407
409
409
411
412
412
413
414
418
423
425
426
432
7
Chapitre 19 Editeur de tâche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations sur la configuration de tâche . . . . . . . . . . . . . . . . . . . . . .
Onglet Propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Onglet Surveillance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuration d'une tâche spécifique . . . . . . . . . . . . . . . . . . . . . . . . . .
Traitement des tâches en mode en ligne . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 20 Editeur de liste de surveillance. . . . . . . . . . . . . . . . . . . . .
Affichage Surveillance / Editeur de liste de surveillance . . . . . . . . . . .
Création d'une liste de surveillance . . . . . . . . . . . . . . . . . . . . . . . . . . .
Liste de surveillance en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 21 Outils dans les éditeurs de logiques. . . . . . . . . . . . . . . . .
Outil de recherche FFB pour fonction et bloc fonction . . . . . . . . . . . . .
Aide à la saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie VI Outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 22 Journalisation des données . . . . . . . . . . . . . . . . . . . . . . .
Présentation de la journalisation des données . . . . . . . . . . . . . . . . . .
Chapitre 23 Gestionnaire de recettes . . . . . . . . . . . . . . . . . . . . . . . . .
Gestionnaire de recettes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Définition de recette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Commandes de RecipeMan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 24 Éditeur de suivi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24.1 Objet de suivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Présentation de la fonction de suivi . . . . . . . . . . . . . . . . . . . . . . . . . . .
Création d'un objet de suivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24.2 Configuration de suivi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramètres de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramètres d'enregistrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramètres avancés de suivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modifier les paramètres d'affichage . . . . . . . . . . . . . . . . . . . . . . . . . . .
Représentation axe Y. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24.3 Éditeur de suivi en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Éditeur de suivi en mode en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24.4 Opérations du clavier pour les diagrammes de suivi . . . . . . . . . . . . . .
Raccourcis clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 25 Editeur de configuration de symbole . . . . . . . . . . . . . . . .
Editeur de configuration de symbole . . . . . . . . . . . . . . . . . . . . . . . . . .
Configuration de symbole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ajout d'une configuration de symbole . . . . . . . . . . . . . . . . . . . . . . . . .
8
437
438
439
440
442
446
447
448
449
451
453
454
458
461
463
463
465
466
470
475
485
486
487
489
492
493
496
500
502
507
509
509
510
510
513
514
517
518
EIO0000000069 02/2018
Chapitre 26 Échange de données entre le contrôleur et l'IHM de
SoMachine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Définition de variable unique SoMachine . . . . . . . . . . . . . . . . . . . . . .
Publication de variables dans la partie contrôleur . . . . . . . . . . . . . . . .
Sélection de variables dans la partie IHM . . . . . . . . . . . . . . . . . . . . . .
Publication de variables dans la partie IHM . . . . . . . . . . . . . . . . . . . .
Paramétrage du support physique . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performances de communication lors de l'échange de données entre
le contrôleur et l'IHM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Partie VII Référence de programmation . . . . . . . . . . . . . . . . . .
Chapitre 27 Déclaration de variables . . . . . . . . . . . . . . . . . . . . . . . . .
27.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recommandations relatives à la dénomination des identificateurs . . .
Initialisation des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mode raccourcis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Déclaration d'une adresse AT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mots clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27.2 Types de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types de variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mots-clés d'attribut pour les types de variable. . . . . . . . . . . . . . . . . . .
Configuration des variables - VAR_CONFIG . . . . . . . . . . . . . . . . . . . .
27.3 Types de méthode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Méthodes FB_init et FB_reinit . . . . . . . . . . . . . . . . . . . . . . . . . .
Méthode FB_exit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27.4 Instructions Pragma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instructions Pragma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pragmas de message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pragmas conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27.5 Pragmas d'attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pragmas d'attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attributs définis par l'utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute call_after_init. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute displaymode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute ExpandFully . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute global_init_slot. . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute hide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000069 02/2018
521
522
526
528
529
531
532
537
539
540
541
544
549
550
551
552
553
557
558
562
566
568
569
572
573
574
576
578
585
586
587
589
590
591
593
594
9
Attribute hide_all_locals . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute initialize_on_call. . . . . . . . . . . . . . . . . . . . . . . . .
Attribute init_namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute init_On_Onlchange . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute instance-path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute linkalways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute namespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute no_check . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute no_copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute no-exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute no_init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute no_virtual_actions. . . . . . . . . . . . . . . . . . . . . . . . .
Attribute obsolete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute pack_mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute qualified_only . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute reflection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute subsequent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute symbol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Attribute warning disable . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27.6 Fonctionnalité Smart Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Smart Coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 28 Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28.1 Informations générales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28.2 Types de données standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types de données standard. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28.3 Extensions de la norme IEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LTIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WSTRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Références. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
595
596
597
598
599
600
602
606
608
608
609
610
611
614
615
616
617
617
618
620
621
621
623
624
624
625
625
628
629
629
630
630
631
633
EIO0000000069 02/2018
28.4 Types de données définis par l'utilisateur . . . . . . . . . . . . . . . . . . . . . .
Types de données définis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Types de sous-zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 29 Instructions de programmation . . . . . . . . . . . . . . . . . . . .
29.1 Conventions de dénomination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29.2 Préfixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Éléments des préfixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ordre des préfixes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Préfixe de domaine de validité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Préfixe de type de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Préfixe de propriété . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Préfixe de POU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Préfixe d'espace de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 30 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.1 Opérateurs arithmétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MUL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SIZEOF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.2 Opérateurs sur chaînes de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.3 Opérateurs de décalage de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SHL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ROL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000069 02/2018
636
637
638
641
643
645
649
650
650
652
653
654
655
656
658
659
660
661
662
663
665
667
669
672
674
675
676
677
678
679
680
681
682
684
685
687
11
30.4 Opérateurs de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SEL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MAX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LIMIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MUX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.5 Opérateurs de comparaison. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
GE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
NE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.6 Opérateurs d'adresse. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opérateur de contenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BITADR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.7 Opérateur d'appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.8 Opérateurs de conversion de type . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions de conversion de type . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversions de BOOL_TO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversions de TO_BOOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversion entre des types numériques entiers . . . . . . . . . . . . . . . . .
Conversions REAL_TO / LREAL_TO. . . . . . . . . . . . . . . . . . . . . . . . . .
Conversions TIME_TO / TIME_OF_DAY . . . . . . . . . . . . . . . . . . . . . . .
Conversions DATE_TO / DT_TO . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversions de STRING_TO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TRUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TRUNC_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conversions ANY_..._TO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.9 Fonctions numériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ABS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SQRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LOG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EXP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SIN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
706
707
708
709
712
714
715
717
719
721
723
724
725
726
727
728
729
730
731
732
EIO0000000069 02/2018
COS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ASIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ACOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ATAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EXPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.10 Opérateurs d'extension IEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opérateurs d'extension IEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
__DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
__ISVALIDREF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
__NEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
__QUERYINTERFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
__QUERYPOINTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opérateurs de domaine de validité . . . . . . . . . . . . . . . . . . . . . . . . . . .
30.11 Opérateur d'initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Opérateur INI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 31 Opérandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31.1 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes BOOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes TIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes DATE_AND_TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes TIME_OF_DAY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes numériques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes REAL/LREAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes STRING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Constantes typées/littéraux typés . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adressage de bits de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31.3 Adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31.4 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EIO0000000069 02/2018
733
734
735
736
737
738
739
740
741
743
744
747
749
751
753
753
755
756
757
758
760
761
762
763
764
765
766
767
768
769
771
771
774
774
13
Partie VIII Modèles de SoMachine . . . . . . . . . . . . . . . . . . . . . .
Chapitre 32 Informations générales sur les modèles de SoMachine. .
32.1 Modèles SoMachine. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales sur les modèles de SoMachine . . . . . . . . . . .
Administration des modèles d'équipements SoMachine . . . . . . . . . . .
Chapitre 33 Gestion des modèles d'équipement . . . . . . . . . . . . . . . . .
33.1 Gestion des modèles d'équipements . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations générales sur les modèles d'équipements . . . . . . . . . . .
Ajout d'équipements à partir d'un modèle . . . . . . . . . . . . . . . . . . . . . .
Création d'un modèle d'équipement sur la base d'équipements ou
modules d'E/S de terrain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Visualisations adaptées à la création de modèles d'équipements . . . .
Informations supplémentaires sur l'intégration de la logique
d'équipement dans les modèles d'équipement . . . . . . . . . . . . . . . . . .
Procédure de création d'un modèle d'équipement. . . . . . . . . . . . . . . .
Chapitre 34 Gestion des modèles de fonction . . . . . . . . . . . . . . . . . . .
34.1 Gestion des modèles de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Informations sur les modèles de fonctions. . . . . . . . . . . . . . . . . . . . . .
Ajout de fonctions à partir d'un modèle . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions d'application à utiliser comme base lors de la création de
modèles de fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procédure de création d'un modèle de fonction. . . . . . . . . . . . . . . . . .
Partie IX Dépannage et FAQ . . . . . . . . . . . . . . . . . . . . . . . . .
Chapitre 35 Générique - Dépannage et FAQ. . . . . . . . . . . . . . . . . . . .
35.1 Questions les plus fréquentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comment activer et configurer des entrées analogiques dans
CANopen ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pourquoi le SoMachine processus de démarrage est-il parfois plus
lent ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comment gérer les raccourcis et les menus ?. . . . . . . . . . . . . . . . . . .
Comment augmenter la limite de mémoire disponible pour SoMachine
sur les systèmes d'exploitation 32 bits ? . . . . . . . . . . . . . . . . . . . . . . .
Comment réduire la consommation de mémoire de SoMachine ? . . .
Comment améliorer les performances de génération de SoMachine ?
Que faire en cas de problèmes avec le Scrutateur d'E/S Modbussur
une ligne série ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Que faire si la communication avec ma liste de variables de réseau
(NVL) est interrompue ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Que faire si un téléchargement multiple échoue sur un
contrôleur IHM ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
775
777
778
779
782
791
792
793
794
797
798
799
802
807
808
809
810
817
820
827
829
830
831
833
834
836
837
838
839
840
840
EIO0000000069 02/2018
Chapitre 36 Accès aux contrôleurs - Dépannage et FAQ . . . . . . . . .
36.1 Dépannage : accès à de nouveaux contrôleurs . . . . . . . . . . . . . . . . .
Accès à de nouveaux contrôleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Connexion via une adresse IP et des informations relatives aux
adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36.2 FAQ : Que faire en cas de problèmes de connexion avec le
contrôleur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
FAQ : Pourquoi la connexion avec le contrôleur est-elle impossible ?
FAQ - Pourquoi la communication entre le PC et le contrôleur a-t-elle
été interrompue ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Annexes
.........................................
Annexe A Communication réseau. . . . . . . . . . . . . . . . . . . . . . . . . .
Topologie du réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adressage et routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure des adresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Annexe B Utilisation de OPC Server 3 . . . . . . . . . . . . . . . . . . . . . .
Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Déclaration d'une variable à utiliser avec OPC . . . . . . . . . . . . . . . . . .
Configuration du serveur OPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation du serveur OPC CoDeSys . . . . . . . . . . . . . . . . . . . . . . . . .
Annexe C Langage de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1
C.2
EIO0000000069 02/2018
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exécution de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Règles de bonne pratique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consultation de la documentation relative aux API .NET . . . . . . . . . .
Points d'entrée. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schneider Electric Script Engine Exemples . . . . . . . . . . . . . . . . . . . .
Paramètres des équipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Version du compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Profil de visualisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mise à jour de bibliothèques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nettoyage et compilation d'une application . . . . . . . . . . . . . . . . . . . . .
Paramètres de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Réinitialisation des messages de diagnostic . . . . . . . . . . . . . . . . . . . .
Réamorçage du contrôleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
841
842
843
845
847
848
851
853
855
856
857
859
863
864
866
869
876
877
878
879
882
884
885
887
888
889
891
892
893
894
895
896
897
15
C.3
Conversion d'un équipement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Comparaison de projets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fonctions de gestion de bibliothèques avancées . . . . . . . . . . . . . . . .
Accès aux POU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemples du CoDeSys Script Engine . . . . . . . . . . . . . . . . . . . . . . . . .
Projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Application en ligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Objets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Equipements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Système et interface utilisateur (UI) . . . . . . . . . . . . . . . . . . . . . . . . . . .
Valeurs de lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Lecture de valeurs à partir de la recette et envoi par e-mail . . . . . . . .
Détermination de l'arborescence d'appareils pour le projet ouvert . . .
Exemple de script 4 : Importation d'un appareil dans PLCOpenXML à
partir de Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Annexe D Gestion des utilisateurs pour Soft PLC. . . . . . . . . . . . . . .
Informations générales sur la gestion des utilisateurs pour Soft PLC .
Utilisateurs et groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Droits d'accès. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Annexe E Ensembles de fonctionnalités du contrôleur relatives à la
migration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ensembles de fonctionnalités du contrôleur relatives à la migration . .
Glossaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
898
901
902
903
904
905
910
913
914
916
918
919
921
922
925
926
928
932
937
937
941
945
EIO0000000069 02/2018
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.
EIO0000000069 02/2018
17
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.
18
EIO0000000069 02/2018
A propos de ce manuel
Présentation
Objectif du document
Le présent document décrit l'interface utilisateur graphique du logiciel SoMachine ainsi que les
fonctions auxquelles ce logiciel donne accès. Pour plus d'informations, consultez les documents
fournis dans l'aide en ligne de SoMachine.
Champ d'application
Ce document a été actualisé suite au lancement du module complémentaire TM3TI4D pour
SoMachine V4.3.
Documents à consulter
Titre du document
Référence
Introduction à SoMachine
EIO0000000734 (ENG) ;
EIO0000000787 (FRE) ;
EIO0000000788 (GER) ;
EIO0000000790 (SPA) ;
EIO0000000789 (ITA) ;
EIO0000000791 (CHS)
SoMachine - Commandes de menu - Aide en ligne
EIO0000001854 (ENG)
EIO0000001855 (FRE)
EIO0000001856 (GER)
EIO0000001858 (SPA)
EIO0000001857 (ITA)
EIO0000001859 (CHS)
SoMachine Central - Guide utilisateur
EIO0000001659 (ENG) ;
EIO0000001660 (FRE) ;
EIO0000001661 (GER) ;
EIO0000001663 (SPA) ;
EIO0000001662 (ITA) ;
EIO0000001664 (CHS)
SoMachine - Compatibilité et migration - Guide de
l'utilisateur
EIO0000001684 (ENG) ;
EIO0000001685 (FRE) ;
EIO0000001686 (GER) ;
EIO0000001688 (SPA) ;
EIO0000001687 (ITA) ;
EIO0000001689 (CHS)
EIO0000000069 02/2018
19
Titre du document
Référence
SoMachine - Fonctions et bibliothèques - Guide de
l'utilisateur
EIO0000000735 (ENG) ;
EIO0000000792 (FRE) ;
EIO0000000793 (GER) ;
EIO0000000795 (SPA) ;
EIO0000000794 (ITA) ;
EIO0000000796 (CHS)
SoMachine - Controller Assistant - Guide de
l'utilisateur
EIO0000001671 (ENG) ;
EIO0000001672 (FRE) ;
EIO0000001673 (GER) ;
EIO0000001675 (SPA) ;
EIO0000001674 (ITA) ;
EIO0000001676 (CHS)
Modicon M238 Logic Controller - Guide de
programmation
EIO0000000384 (ENG) ;
EIO0000000385 (FRE) ;
EIO0000000386 (GER) ;
EIO0000000388 (SPA) ;
EIO0000000387 (ITA) ;
EIO0000000389 (CHS)
SoMachine - Device Type Manager (DTM) - Guide de EIO0000000673 (ENG) ;
EIO0000000674 (FRE) ;
l'utilisateur
EIO0000000675 (GER) ;
EIO0000000676 (SPA) ;
EIO0000000677 (ITA) ;
EIO0000000678 (CHS)
Guide de la bibliothèque TwidoEmulationSupport
EIO0000001692 (ENG) ;
EIO0000001693 (FRE) ;
EIO0000001694 (GER) ;
EIO0000001696 (SPA) ;
EIO0000001695 (ITA) ;
EIO0000001697 (CHS)
SoMachine - Configuration de variables de réseau Guide de la bibliothèque SE_NetVarUdp
EIO0000001151 (ENG) ;
EIO0000001152 (FRE) ;
EIO0000001153 (GER) ;
EIO0000001155 (SPA) ;
EIO0000001154 (ITA) ;
EIO0000001156 (CHS)
Vous pouvez télécharger ces publications ainsi que d'autres informations techniques sur notre site
Web : http://www.schneider-electric.com/en/download.
20
EIO0000000069 02/2018
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'utiliser 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.
EIO0000000069 02/2018
21
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 :
22
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
EIO0000000069 02/2018
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.
EIO0000000069 02/2018
23
24
EIO0000000069 02/2018
SoMachine
Introduction
EIO0000000069 02/2018
Partie I
Introduction
Introduction
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
1
Présentation générale de SoMachine Logic Builder
27
2
Interface utilisateur de SoMachine Logic Builder
31
3
Concepts de base
55
EIO0000000069 02/2018
25
Introduction
26
EIO0000000069 02/2018
SoMachine
Présentation générale de SoMachine Logic Builder
EIO0000000069 02/2018
Chapitre 1
Présentation générale de SoMachine Logic Builder
Présentation générale de SoMachine Logic Builder
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Présentation de SoMachine Logic Builder
28
Tâches effectuées par SoMachine Logic Builder
29
EIO0000000069 02/2018
27
Présentation générale de SoMachine Logic Builder
Présentation de SoMachine Logic Builder
Description générale
Logic Builder offre un environnement de configuration et de programmation aux projets SoMachine
que vous créez avec SoMachine Central.
Il affiche les différents éléments constituant votre projet dans des affichages séparés que vous
pouvez organiser dans l'interface utilisateur de SoMachine et sur votre bureau en fonction de vos
besoins. Cette structure sous forme d'affichages permet d'ajouter des éléments matériels et
logiciels au projet par glisser-déposer. Les principales boîtes de dialogue de configuration qui
permettent de créer le contenu du projet apparaissent au centre de l'écran de Logic Builder.
En plus d'une configuration et d'une programmation simplifiées, Logic Builder offre des fonctions
de diagnostic et de maintenance puissantes.
28
EIO0000000069 02/2018
Présentation générale de SoMachine Logic Builder
Tâches effectuées par SoMachine Logic Builder
Configuration et programmation des projets
Logic Builder permet de programmer la logique et d'ajouter des appareils aux projets SoMachine
créés à l'aide de SoMachine Central.
Les fonctions suivantes vous aideront dans cette tâche :
Des vues distinctes du catalogue de matériels pour Contrôleur, IHM et iPC, Équipements de
terrain et Modules, Divers permettent d'ajouter des appareils au projet par glisser-déposer.
Vous avez aussi la possibilité d'utiliser des modèles d'appareil et de fonction.
 Des affichages de catalogue de logiques séparés pour Variables, Ressources, Macros, Outils,
Bibliothèques permettent d'ajouter différents types d'éléments logiciels par simple opération de
glisser-déposer. L'affichage Ressources, par exemple, permet de créer et de gérer les blocs
fonction et des POU.

Pour afficher uniquement les affichages pertinents pour la tâche effectuée, SoMachine fournit des
perspectives (voir page 50) individuelles pour la configuration matérielle, la configuration logicielle
et le mode en ligne. Vous pouvez adapter ces perspectives par défaut à vos besoins spécifiques
et créer vos propres perspectives avec les affichages que vous utilisez le plus souvent.
Génération de projets
Logic Builder propose différentes méthodes (comme Compiler, Générer tout ou Tout nettoyer)
pour générer votre projet SoMachine.
Communication avec le contrôleur
Les fonctions d'analyse deLogic Builder permettent de détecter les contrôleurs disponibles sur le
réseau Ethernet. Différents protocoles de communication sont pris en charge pour la
communication avec le contrôleur.
Une fois la communication établie, il est possible de télécharger les applications vers ou à partir
du contrôleur. Les applications peuvent être démarrées et arrêtées sur le contrôleur.
Fonctionnalités en ligne et surveillance
Les fonctionnalités en ligne et la surveillance de Logic Builder permettent d'effectuer les tâches
suivantes :
 surveillance en ligne des valeurs du code de programme dans les affichages Surveillance ;
 modifications en ligne ;
 configuration en ligne des suivis ;
 surveillance des suivis en ligne ;
 interaction avec votre machine à l'aide de visualisations intégrées en mode en ligne à des fins
de diagnostic et de test ;
 lecture de l'état des contrôleurs et des appareils ;
 détection des erreurs logiques de programmation potentielles avec la fonction de débogage.
EIO0000000069 02/2018
29
Présentation générale de SoMachine Logic Builder
30
EIO0000000069 02/2018
SoMachine
Interface utilisateur de SoMachine Logic Builder
EIO0000000069 02/2018
Chapitre 2
Interface utilisateur de SoMachine Logic Builder
Interface utilisateur de SoMachine Logic Builder
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Éléments de l'écran de SoMachine Logic Builder
32
Navigateurs à plusieurs onglets
38
Multi-onglet Catalogue Vue
45
Personnalisation de l'interface utilisateur
47
Interface utilisateur en mode en ligne
52
Menus et commandes
53
EIO0000000069 02/2018
31
Interface utilisateur de SoMachine Logic Builder
Éléments de l'écran de SoMachine Logic Builder
Présentation
Logic Builder est composé des éléments suivants :
menus et barres d'outils ;
 affichages du navigateur ;
 affichages du catalogue ;
 panneau principal de l'éditeur.

À l'ouverture, Logic Builder affiche l'agencement des écrans par défaut. Le présent document
décrit les positions par défaut.
Vous pouvez adopter les différents éléments en fonction de vos besoins propres comme décrit au
chapitre Personnalisation de l'interface utilisateur (voir page 47). Vous pouvez visualiser et
modifier les paramètres actuels dans la boîte de dialogue Personnaliser. Par défaut, elle est
accessible par le biais du menu Outils.
Vous pouvez également réorganiser les affichages et les fenêtres à tout moment en déplaçant,
ancrant/détachant les affichages et en redimensionnant ou fermant des fenêtres. Les différentes
positions sont enregistrées avec le projet. Lorsque vous ouvrez de nouveau un projet, les éléments
occupent la même position qu'ils avaient lors de son enregistrement. Les positions des affichages
sont enregistrées séparément dans des perspectives (voir page 50).
32
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Écran par défaut de Logic Builder
Position par défaut des menus, des barres et des affichages de l'écran de Logic Builder
1
Barre de menus
EIO0000000069 02/2018
33
Interface utilisateur de SoMachine Logic Builder
2
3
4
5
6
7
Barre d'outils
Navigateurs comportant plusieurs onglets : Arborescence des équipements, Arborescence des outils,
Arborescence des applications
Affichage Messages
Barre d'informations et d'état
Affichage du catalogue comportant plusieurs onglets : catalogue de matériels : Contrôleur, IHM et iPC,
Équipements et modules, Diverse catalogue de logiques : Variables, Ressources, Macros, Outils,
Bibliothèques
Affichage de l'éditeur comportant plusieurs onglets
Composants standard
L'écran de Logic Builder contient les composants suivants, visibles par défaut :
Composant
Description
Barre de menus
Propose des menus qui contiennent les commandes disponibles
conformément aux définitions de la boîte de dialogue Outils →
Personnaliser.
Barre d'outils
Contient des boutons qui permettent d'exécuter les outils disponibles
conformément aux définitions de la boîte de dialogue Outils →
Personnaliser.
Navigateurs à plusieurs onglets
Les navigateurs suivants sont disponibles sous forme d'onglets dans
lesquels les différents objets d'un projet sont organisés dans une
arborescence :
 Arborescence des équipements
 Arborescence des applications
 Arborescence des outils
Pour plus d'informations, consultez le chapitre Navigateurs à plusieurs
onglets (voir page 38).
Affichage Messages
Affiche des messages relatifs aux opérations de précompilation, de
compilation, de génération et de téléchargement. Pour plus
d'informations, consultez la description des commandes de l'affichage
(voir SoMachine, Commandes de menu, Aide en ligne) Messages.
Barre d'informations et d'état
Fournit les informations suivantes :
 Informations sur l'utilisateur actuel.
 Informations sur le mode d'édition et la position actuelle lorsqu'un
éditeur est ouvert.
Pour plus d'informations, consultez la section Barre d'informations et
d'état du présent chapitre.
34
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Composant
Description
Affichage Catalogue à plusieurs
onglets
L'affichage Catalogue contient plusieurs onglets répertoriant le
matériel et les logiciels disponibles :
 Catalogue de matériels
 Contrôleur
 IHM et iPC
 Équipements et modules
 Diverse
 Catalogue de logiques
 Variables
 Ressources
 Macros
 Outils
 Bibliothèques
Pour plus d'informations, consultez le chapitre Affichages du catalogue
à plusieurs onglets (voir page 45).
Fenêtre de l'éditeur à plusieurs
onglets
Elle permet de créer l'objet particulier dans l'éditeur approprié.
Dans le cas des éditeurs de langage (éditeur ST ou éditeur CFC, par
exemple) la fenêtre combine généralement l'éditeur de langage dans la
partie inférieure et l'éditeur de déclaration dans la partie supérieure.
Dans le cas des autres éditeurs, elle peut contenir des boîtes de
dialogue (éditeur de tâche et éditeur d'équipement, par exemple). Le
nom du POU ou de l'objet ressource apparaît dans la barre de titre de
l'affichage. Vous pouvez ouvrir les objets dans la fenêtre de l'éditeur en
mode hors ligne ou en ligne à l'aide de la commande Modifier l'objet.
Barre d'informations et d'état
La barre de la bordure inférieure de l'écran de Logic Builder fournit trois types d'information :
 Informations sur l'utilisateur connecté.
 Lorsque vous travaillez dans la fenêtre d'un éditeur : la position du curseur et l'état du mode
d'édition.
 En mode en ligne : l'état actuel du programme.
Informations sur l'utilisateur connecté
À chaque projet sont associés un utilisateur et une gestion d'accès (voir page 134). Le nom de
l'utilisateur connecté apparaît dans la barre d'état.
Positions du curseur dans les fenêtres de l'éditeur
La position du curseur est calculée à partir des marges gauche et supérieure de la fenêtre de
l'éditeur.
Abréviation
Description
Ln
Ligne sur laquelle est positionné le curseur.
EIO0000000069 02/2018
35
Interface utilisateur de SoMachine Logic Builder
Abréviation
Description
Col
Colonne dans laquelle est placé le curseur.
(Une colonne contient exactement une espace, un caractère ou un chiffre.)
Ch
Nombre de caractères.
(Dans ce contexte, un caractère peut correspondre à un caractère unique, à
un chiffre ou à un tableau contenant, par exemple quatre colonnes.)
Double-cliquez dans l'un des champs pour accéder à la boîte de dialogue Atteindre la ligne. Vous
pouvez y saisir une position différente de celle du curseur.
L'état du mode d'édition est indiqué par les abréviations suivantes :
Abréviation
Description
INS
Mode insertion
OVR
Mode écrasement
Double-cliquez sur ce champ pour inverser le paramétrage.
L'état suivant du programme est indiqué :
Texte
Description
Programme chargé
Le programme est chargé sur l'équipement.
Programme inchangé
Le programme sur l'équipement correspond à celui du système de
programmation.
Programme modifié
(changement en ligne)
Le programme sur l'équipement est différent de celui du système de
programmation et des modifications en ligne sont nécessaires.
Programme modifié
(téléchargement complet)
Le programme sur l'équipement est différent de celui du système de
programmation et un téléchargement complet est nécessaire.
Informations sur le mode en ligne
État de l'application sur l'équipement :
Texte
Couleur d'arrière-plan
Description
EXÉCUTION
Vert
Programme en cours d'exécution.
STOP
Rouge
Programme arrêté.
ARRÊT AU PA
Rouge
Pause du programme sur un point d'arrêt.
Le champ d'état suivant est disponible si le contrôleur prend en charge la surveillance indépendamment du cycle, en
fonction d'un paramètre dans la description de l'équipement.
DANS LE CYCLE
Blanc
Signifie que les valeurs des expressions surveillées
sont lues dans un cycle.
EN DEHORS DU CYCLE
Rouge
Signifie que l'extraction des valeurs des variables
surveillées ne peut pas être effectuée dans un cycle.
36
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Fenêtres de surveillance et affichages en ligne des éditeurs
Les fenêtres de surveillance et les affichages en ligne des éditeurs présentent un affichage de
contrôle d'un POU ou une liste d'expressions de surveillance définie par l'utilisateur.
Fenêtres, affichages et fenêtres des éditeurs
Logic Builder comporte deux types de fenêtre différents :
Certaines peuvent être ancrées à une marge de la fenêtre de SoMachine ou positionnée
librement sur l'écran indépendamment de la fenêtre de SoMachine. Elles peuvent en outre être
masquées et représentées sous forme d'onglets dans le cadre de la fenêtre de SoMachine (voir
le chapitre Personnalisation de l'interface utilisateur (voir page 47)). Ces fenêtres donnent des
informations qui ne dépendent pas d'un seul objet du projet (par exemple, l'affichage Messages
ou l'arborescence des équipements). Elles sont accessibles par le biais du menu
(voir SoMachine, Commandes de menu, Aide en ligne) Affichage. La plupart des affichages
présentent une barre d'outils non configurable contenant des boutons dédiés au tri, à l'affichage
et à la recherche au sein de la fenêtre.
 D'autres fenêtres s'ouvrent lors de l'affichage ou de la modification d'un objet de projet
spécifique dans l'éditeur associé. Elles s'affichent dans la fenêtre de l'éditeur comprenant
plusieurs onglets. Vous ne pouvez ni les masquer ni les détacher de la fenêtre de SoMachine.
Le menu Fenêtres permet d'accéder à ces fenêtres.

Changement de fenêtres
SoMachine vous permet également de passer des affichages aux éditeurs ouverts. Pour passer
d'un affichage ou d'un éditeur ouvert à l'autre, appuyez simultanément sur les touches Ctrl et
Tabulation. Une fenêtre s'affiche dans laquelle sont répertoriés les affichages et les éditeurs
actuellement ouverts. Elle reste ouverte tant que vous appuyez sur la touche Ctrl. Pour
sélectionner un affichage ou un éditeur spécifique, utilisez simultanément la touche de tabulation
ou les touches fléchées.
EIO0000000069 02/2018
37
Interface utilisateur de SoMachine Logic Builder
Navigateurs à plusieurs onglets
Présentation
Les navigateurs à plusieurs onglets sont des composants standard de l'écran de Logic Builder.
Par défaut, les navigateurs suivants sont disponibles :
Arborescence des équipements : permet de gérer les équipements sur lesquels s'exécutent les
applications.
 Arborescence des applications : permet de gérer dans un affichage unique des POU propres à
un projet ou globaux ainsi que des tâches.
 Arborescence des outils : permet de gérer dans un affichage unique des bibliothèques propres
à un projet ou globales ainsi que d'autres éléments.

Vous pouvez accéder aux différents affichages par le biais du menu Affichage.
Ajout d'éléments dans les navigateurs
Le nœud racine d'un navigateur représente un équipement programmable. Vous pouvez insérer
d'autres éléments sous le nœud racine.
Pour ajouter des éléments sous un nœud d'un navigateur, il suffit de sélectionner un équipement
ou un objet dans le catalogue de matériels ou de logiques situé sur la droite de l'écran de Logic
Builder et de le faire glisser dans le navigateur (par exemple, dans l'arborescence des
équipements). Le ou les nœuds compatibles avec l'équipement ou l'objet sélectionné sont
développés automatiquement et affichés en gras. Les autres nœuds sous lesquels il est
impossible d'insérer l'équipement ou l'objet sélectionné sont grisés. Déposez l'équipement ou
l'objet sur le nœud approprié pour l'insérer automatiquement. Si l'équipement ou l'objet requiert
d'autres éléments, comme des gestionnaires de communication, ils sont insérés
automatiquement.
Vous pouvez aussi sélectionner un nœud dans l'arborescence. S'il est possible d'ajouter un objet
à l'équipement ou l'objet sélectionné, un bouton représentant un signe plus de couleur verte
apparaît. Cliquez sur ce bouton pour accéder au menu qui propose les éléments pouvant être
insérés.
Il est également possible d'ajouter un objet ou un équipement en cliquant avec le bouton droit de
la souris sur un nœud dans un navigateur et en exécutant la commande Ajouter un objet ou Ajouter
un équipement. Le type d'équipement qu'il est possible d'insérer varie suivant l'objet sélectionné
dans le navigateur. Par exemple, les modules d'un esclave PROFIBUS DP ne peuvent pas être
insérés avant l'insertion de l'équipement esclave approprié. Seuls les équipements installés
correctement sur le système local et adaptés pour la position actuelle dans l'arborescence peuvent
être insérés.
38
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Repositionnement des objets
Pour repositionner des objets, utilisez les commandes standard du Presse-papiers (Couper,
Copier, Coller, Supprimer) proposées dans le menu Edition. Vous pouvez aussi faire glisser l'objet
sélectionné en maintenant enfoncé le bouton de la souris (et la touche Ctrl pour la copie). Lorsque
vous ajoutez des équipements à l'aide des fonctions copier et coller, le nouvel équipement
conserve le nom d'origine suivi d'un numéro qui s'incrémente.
Mise à jour de la version d'un équipement
Il est possible de mettre à jour un équipement déjà inséré dans les navigateurs avec une autre
version ou de le convertir en un autre équipement.
Pour plus d'informations, consultez la description des différentes commandes :
Commande (voir page 74) Actualiser l'appareil
 Commande (voir page 76) Convertir l'équipement

Description de l'arborescence des équipements
Chaque objet d'équipement de l'arborescence des équipements représente un objet matériel
(cible) spécifique.
Exemples : contrôleur, nœud de bus de terrain, coupleur de bus, pilote, module d'E/S
Les équipements ainsi que les sous-équipements sont gérés dans l'arborescence des
équipements. Les autres objets nécessaires pour exécuter une application sur un contrôleur sont
regroupés dans les autres navigateurs.




Le nœud racine de l'arborescence est symbolique :
<nom du projet>
La configuration du contrôleur est définie par l'agencement topologique des équipements dans
l'arborescence des équipements. La configuration d'un équipement spécifique ou des
paramètres des tâches s'effectuent dans les boîtes de dialogue des éditeurs appropriés. Voir
aussi le chapitre Configuration de tâche (voir page 238).
La structure du matériel est ainsi mappée et représentée dans l'arborescence Équipements par
l'agencement correspondant des objets de l'équipement, ce qui permet de configurer un
système hétérogène complexe de contrôleurs en réseau et de bus de terrain sous-jacents.
Pour ajouter au projet des équipements configurés à l'aide de DTM (Device Type Managers),
activez la case à cocher Use DTM Connection dans la partie inférieure de l'arborescence des
équipements. Un nœud FdtConnections est alors ajouté sous le nœud racine dans
l'arborescence. Un nœud de gestionnaire de communication est inséré automatiquement sous
le nœud FdtConnections. Vous pouvez ajouter l'équipement DTM approprié sous ce nœud.
Pour plus d'informations, reportez-vous au document SoMachine Device Type Manager (DTM)
- Guide de l'utilisateur (voir SoMachine, Device Type Manager (DTM), Guide utilisateur).
Prenez en compte les recommandations fournies à la section Ajout d'éléments dans les
navigateurs dans le présent chapitre.
EIO0000000069 02/2018
39
Interface utilisateur de SoMachine Logic Builder
Exemple d'arborescence des équipements :
1
2
3
4





40
Nœud racine
Équipement programmable (avec applications)
Nom d'équipement symbolique
Nom d'équipement défini dans le fichier de description de l'équipement
Chaque entrée de l'arborescence des équipements est associée au symbole, au nom
symbolique (modifiable) et au type d'équipement (nom d'équipement tel que fourni par la
description de l'équipement).
Un équipement est programmable ou configurable. Le type de l'équipement détermine sa
position possible dans l'arborescence ainsi que les ressources complémentaires qui peuvent
être insérées dessous.
Dans un même projet, vous pouvez configurer un ou plusieurs équipements programmables,
quel qu'en soit le fabricant ou le type (ressources multiples, équipements multiples, réseau).
Configurez la communication, les paramètres et le mappage des E/S d'un équipement dans la
boîte de dialogue (éditeur d'équipement). Pour accéder à l'éditeur d'équipement, double-cliquez
sur le nœud de l'équipement dans l'arborescence des équipements (voir la description de
l'éditeur d'équipement (voir page 101)).
En mode en ligne, l'icône qui précède l'entrée de l'équipement indique son état :
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder




Le contrôleur est connecté, l'application s'exécute, l'équipement fonctionne, des
données sont échangées. Il est possible d'activer ou de désactiver l'option Mettre à jour E/S
en mode Stop dans l'affichage Paramètres API de l'éditeur d'équipement (voir page 131).

Le contrôleur est connecté et arrêté (STOP). L'option Mettre à jour E/S en mode Stop
est désactivée dans l'affichage Paramètres API de l'éditeur d'équipement (voir page 131).

Le contrôleur est connecté, l'application active s'exécute, des informations de
diagnostics sont disponibles.

L'équipement n'échange pas de données, une erreur de bus a été détectée, il n'est pas
configuré ou en mode simulation (voir la description de la commande Simulation).

L'équipement s'exécute pendant 30 minutes en mode de démonstration. Au bout de
cette période, ce mode expire et le bus de terrain interrompt l'échange de données.

L'équipement est configuré mais pas entièrement opérationnel. Aucune donnée n'est
échangée. Par exemple, les équipements CANopen sont démarrés et préopérationnels.

Mode de redondance actif : le maître de bus de terrain n'envoie pas de données car un
autre maître est en mode actif.

La description de l'équipement est introuvable dans le référentiel d'équipements. Pour
plus d'informations sur l'installation et la désinstallation des équipements dans la boîte de
dialogue Référentiel d'équipements, voir la description Référentiel d'équipements
(voir SoMachine, Commandes de menu, Aide en ligne).
Un ombrage vert identifie les noms de tous les équipements et de toutes les applications
actuellement connectés.
Les noms des équipements qui s'exécutent en mode simulation (voir la description de la
commande Simulation) apparaissent en italique.
Des informations de diagnostic supplémentaires sont fournies dans l'affichage État de l'éditeur
d'équipement (voir page 148).
Vous pouvez aussi exécuter l'application active sur un équipement de simulation automatiquement
disponible par défaut dans le système de programmation. Aucun équipement cible réel n'est donc
nécessaire pour tester le comportement en ligne d'une application (du moins si elle ne dépend pas
de ressources matérielles pour son exécution). Lorsque vous passez en mode simulation
(voir SoMachine, Commandes de menu, Aide en ligne), une entrée dans l'arborescence
Équipements est affichée en italique, et vous pouvez vous connecter à l'application.
Vous pouvez également vous connecter au contrôleur en mode de configuration en ligne (voir le
chapitre Mode de configuration en ligne (voir SoMachine, Commandes de menu, Aide en ligne))
sans avoir à charger au préalable une application réelle sur l'équipement. Ceci s'avère utile pour
le démarrage initial d'un système d'E/S, car vous pouvez accéder et tester les E/S dans la
configuration du contrôleur avant de compiler et de charger un programme d'application réel.
Pour plus d'informations sur la conversion des références des équipements lors de l'ouverture de
projets, reportez-vous au document SoMachine Compatibilité et migration - Guide de l'utilisateur.
EIO0000000069 02/2018
41
Interface utilisateur de SoMachine Logic Builder
Organisation et configuration des objets dans l'arborescence des équipements
Ajout d'équipements/objets :
Pour ajouter des équipements ou des objets dans l'arborescence des équipements, il suffit de
sélectionner un équipement ou un objet dans le catalogue de matériels situé sur la partie droite de
l'écran de Logic Builder et de l'amener dans l'arborescence des équipements. Le ou les nœuds
compatibles avec l'équipement ou l'objet sélectionné sont développés et affichés en gras. Les
autres nœuds sous lesquels il est impossible d'insérer l'équipement ou l'objet sélectionné sont
grisés. Déposez l'équipement ou l'objet sur le nœud approprié pour l'insérer automatiquement.
Vous pouvez aussi sélectionner un nœud dans l'arborescence. S'il est possible d'ajouter un objet
à l'équipement ou l'objet sélectionné, un bouton représentant un signe plus de couleur verte
apparaît. Cliquez sur ce bouton pour accéder au menu qui propose les éléments pouvant être
insérés.
Pour ajouter un objet ou un équipement, vous pouvez aussi cliquer avec le bouton droit de la souris
sur un nœud dans l'arborescence Équipements et exécuter la commande Ajouter un objet ou
Ajouter un équipement. Le type d'équipement qu'il est possible d'insérer varie suivant l'objet
sélectionné dans l'arborescence Équipements. Par exemple, les modules d'un esclave
PROFIBUS DP ne peuvent pas être insérés avant l'insertion de l'équipement esclave approprié.
Aucune application ne peut être insérée sous des équipements non programmables.
Seuls les équipements installés correctement sur le système local et adaptés pour la position
actuelle dans l'arborescence peuvent être insérés.
Repositionnement des objets :
Pour repositionner des objets, utilisez les commandes standard du Presse-papiers (Couper,
Copier, Coller, Supprimer) proposées dans le menu Edition. Vous pouvez également amener
l'objet sélectionné en maintenant enfoncé le bouton de la souris (et la touche Ctrl pour effectuer
une copie). Considérations relatives à la commande Coller : si l'objet à coller peut être inséré audessous ou ou-dessus de l'entrée sélectionnée, la boîte de dialogue Sélectionner la position
d'insertion apparaît. Elle permet de définir le point d'insertion. Lorsque vous ajoutez des
équipements à l'aide des fonctions copier et coller, le nouvel équipement conserve le nom d'origine
suivi d'un numéro qui s'incrémente.
Mise à jour de la version d'un équipement :
Il est possible de remplacer un équipement déjà inséré dans l'arborescence des équipements par
une autre version du même type d'équipement ou par un équipement d'un autre type (mise à jour
de l'équipement). Une arborescence de configuration apparaissant sous l'équipement concerné
est alors conservée aussi longtemps que possible.
Ajout d'équipements au niveau du nœud racine :
Les équipements sont seuls à pouvoir être placés au niveau directement sous le nœud racine
<nom du projet>. Si vous choisissez un autre type d'objet dans la boîte de dialogue Ajouter un
objet, comme un objet Liste de textes, il est inséré au niveau du nœud Global de l'arborescence
des applications.
Sous-nœuds :
42
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Un équipement est inséré en temps que nœud dans l'arborescence. S'ils sont définis dans le
fichier de description des équipements, les sous-nœuds sont insérés automatiquement. Un sousnœud peut de nouveau correspondre à un équipement programmable.
Insertion d'équipements sous un objet d'équipement :
Vous pouvez insérer d'autres équipements sous un objet d'équipement. S'ils sont installés sur le
système local, ils sont disponibles dans le catalogue de matériels ou dans la boîte de dialogue
Ajouter un objet ou Ajouter un équipement. Les objets d'équipement sont triés de haut en bas
dans l'arborescence : à un niveau spécifique de l'arborescence apparaissent d'abord les
équipements programmables, suivis des autres équipements, chacun trié dans l'ordre
alphabétique.
Description de l'arborescence des applications
Les objets d'application, la configuration des tâches et les objets de tâche sont gérés dans
l'arborescence des applications.
Les objets nécessaires pour programmer l'équipement (applications, listes de textes, etc.) sont
gérés dans l'arborescence des applications. Les équipements non programmables (uniquement
configurables) ne peuvent pas être attribués à des objets de programmation. Vous pouvez modifier
les valeurs des paramètres des équipements dans la boîte de dialogue des paramètres de l'éditeur
d'équipement.
Les objets programmables, comme des POU spécifiques ou des listes de variables globales,
peuvent être gérés de deux façons différentes dans l'arborescence Applications suivant leurs
déclarations :
 Lorsqu'ils sont déclarés en tant que sous-nœud du nœud Global, tous les équipements peuvent
y accéder.
 Lorsqu'ils sont déclarés en tant que sous-nœud du nœud Applications, seuls les équipements
correspondants déclarés sous ce nœud Applications permettent d'y accéder.
Un objet Application peut être inséré uniquement dans l'arborescence Applications.
Sous chaque application, vous pouvez insérer d'autres objets de programmation, tels que DUT,
GVL ou des objets de visualisation. Insérez une configuration de tâche sous une application. Dans
la configuration des tâches, les appels des programmes appropriés doivent être définis (instances
de POU du nœud Global de l'arborescence des applications ou POU spécifiques à un
équipement). N'oubliez pas que l'application est définie dans l'affichage Mappage E/S de l'éditeur
d'équipement approprié (voir page 150).
EIO0000000069 02/2018
43
Interface utilisateur de SoMachine Logic Builder
Description de l'arborescence des outils
Les bibliothèques sont gérées dans l'arborescence des outils. Il est impossible d'affecter de tels
objets de programmation à des équipements configurables purs. Vous pouvez modifier les valeurs
des paramètres des équipements dans la boîte de dialogue des paramètres de l'éditeur
d'équipement.
Les objets de programmation, comme le Gestionnaire de bibliothèque, peuvent être gérés de deux
façons différentes dans l'arborescence des outils, suivant la façon dont ils sont déclarés :
 Lorsqu'ils sont déclarés en tant que sous-nœud du nœud Global, tous les équipements peuvent
accéder à ces objets.
 Lorsqu'ils sont déclarés en tant que sous-nœud du nœud Applications, seuls les équipements
correspondants déclarés sous ce nœud Applications permettent d'accéder à ces objets.
44
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Multi-onglet Catalogue Vue
Présentation
Le Catalogue de matériels est un composant standard de l'écran Logic Builder.
Il comprend les onglets suivants :
Contrôleur : contient les contrôleurs Logique, HMI, Unité et Mouvement qui peuvent être insérés
dans votre prjet SoMachine.
 Appareils et modules : contient les Modules d'E/S et les appareils Communication, Contrôle de
moteur, Sécurité et Gestion de l'énergie qui peuvent être insérés dans votre projet SoMachine.
Vous permet également d'insérer des équipements en utilisant un modèle.
 HMI et iPC : contient les appareils HMI et iPC qui peuvent être insérés dans votre projet
SoMachine.
 Divers : contient les projets de tierce partie qui peuvent être insérés dans votre projet
SoMachine.

Le contenu des onglets individuels dépend du projet. Si les contrôleurs intégrés dans le projet
SoMachine ne prennent pas en charge CANopen, par exemple, alors les appareils CANopen ne
sont pas répertoriés dans les catalogues.
Vous pouvez étendre cette vue en utilisant les onglets du Catalogue de logiciels (Variables, Actifs,
Macros, Outils, Bibliothèques) via le menu Affichage → Catalogue de logiciels.
Les boutons Catalogue de matériels
et Catalogue de logiciels
contenus dans la barre
d'outils vous permettent d'afficher ou de masquer les vues de catalogue.
Vous pouvez ajouter les éléments depuis les catalogues par simple opération de glisser-déposer
telle que décrite dans le chapitre Ajout d'appareils par glisser-déposer (voir page 62).
Recherche dans les catalogues
Chaque onglet de la vue de catalogue contient une boîte de recherche. Lorsque vous saisissez
une chaîne dans le champ de recherche, la recherche est effectuée parmi les sous-listes de
l'onglet. Dans les sous-listes ouvertes, les éléments trouvés sont marqués en jaune. Tout autre
élément de la liste qui ne correspond pas à la chaîne recherchée est masqué. Le nombre
d'éléments trouvés dans les sous-listes fermées s'affiche en caractères gras dans la barre de titre
de chaque sous-liste.
Par défaut, la recherche est exécutée sur les noms des éléments contenus dans les listes.
Toutefois, SoMachine prend également en charge les mécanismes d'étiquetage. Cette fonction
vous permet d'assigner les chaînes de recherche de votre choix à n'importe quel élément inclus
dans la vue Catalogue.
EIO0000000069 02/2018
45
Interface utilisateur de SoMachine Logic Builder
Liste des Favoris
Chaque onglet de la vue de catalogue contient une liste de Favoris. Pour fournir un accès rapide,
vous pouvez ajouter les éléments fréquemment utilisés à cette liste de Favoris via une opération
de glisser-déposer.
Ajout d'équipements à partir de modèles dans l'onglet Équipements et modules
L'onglet Équipements et modules contient l'option Modèle d'équipement dans sa partie inférieure.
Activez cette option pour afficher les modèles d'équipements de terrain disponibles dans les listes
de l'onglet Équipements et modules. Ajoutez-les à l'arborescence des équipements tel que décrite
au chapitre Ajout d'équipements à partir d'un modèle (voir page 794).
46
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Personnalisation de l'interface utilisateur
Présentation
L'apparence de l'interface utilisateur, en termes d'agencement et de configuration des différents
composants, dépend des éléments suivants :
 Paramétrages standard prédéfinis des menus, des fonctions du clavier et des barres d'outils.
Vous pouvez remplacer les paramètres par défaut de SoMachine dans la boîte de dialogue
Personnaliser (voir SoMachine, Commandes de menu, Aide en ligne) (disponible par défaut
dans le menu Outils). Les paramètres actuels sont enregistrés sur le système local. Une
fonction de réinitialisation est disponible et permet de restaurer les valeurs par défaut à tout
moment.
 Propriétés d'un éditeur définies dans la boîte de dialogue (voir SoMachine, Commandes de
menu, Aide en ligne) Outils → Options associée. Vous pouvez également remplacer ces
paramètres. La configuration actuelle est enregistrée sur le système local.
 L'agencement des affichages ou des fenêtres des éditeurs dans le projet. Les positions
actuelles sont enregistrées avec le projet (voir plus bas).
 La perspective sélectionnée. Par défaut, la perspective Configuration logique est sélectionnée.
Pour plus d'informations, consultez le paragraphe Perspectives du présent chapitre
(voir page 50).
Agencement des barres de menus et des barres d'outils
La barre de menus se trouve en haut de l'interface utilisateur, entre la barre de titre de la fenêtre
et les fenêtres d'affichage. Vous pouvez placer une barre d'outils dans la même zone que la barre
de menus (fixe) ou comme fenêtre indépendante où bon vous semble sur l'écran.
Une barre d'outils spéciale est disponible dans les fenêtres d'affichage comme l'arborescence des
équipements. Elle propose des options de tri, d'affichage et de recherche dans la fenêtre. Vous ne
pouvez pas configurer cette barre d'outils.
Agencement des fenêtres et des affichages
Fermeture d'un affichage ou d'une fenêtre d'un éditeur : cliquez sur le bouton représentant une
croix situé en haut à droite.
Ouverture d'un affichage fermé : par défaut, vous pouvez rouvrir les affichages des composants
standard à partir du menu Affichage. Pour ouvrir une fenêtre d'un éditeur, exécutez la commande
Projet → Modifier l'objet ou double-cliquez sur l'entrée correspondante dans l'arborescence des
équipements, l'arborescence des applications ou l'arborescence des outils.
Redimensionnement d'un affichage ou d'une fenêtre dans le cadre de la fenêtre : déplacez les
séparateurs entre les affichages voisins. Vous pouvez redimensionner des fenêtres d'affichage
indépendantes sur le bureau en déplaçant leurs bordures.
EIO0000000069 02/2018
47
Interface utilisateur de SoMachine Logic Builder
Déplacement d'une fenêtre vers une autre position sur le bureau ou dans le cadre de la fenêtre :
cliquez sur la barre de titre, ou sur l'onglet de l'affichage dans le cas d'affichages sous forme
d'onglets, gardez le bouton de la souris enfoncé et déplacez l'affichage à l'emplacement souhaité.
Des symboles représentant des flèches s'affichent et indiquent les positions cibles possibles.
Gardez le bouton de la souris enfoncé et choisissez l'emplacement souhaité en déplacement le
curseur sur le symbole correspondant. La position cible est indiquée par un ombrage bleu.
Symboles représentant des flèches indiquant la nouvelle position
Flèche
Description
L'affichage est placé au-dessus.
L'affichage est placé au-dessous.
L'affichage est placé sur la droite.
L'affichage est placé sur la gauche.
L'affichage est placé ici : l'affichage qui se trouve actuellement à cette
position et le nouvel affichage apparaissent sous forme d'icônes.
48
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Exemple de navigation à l'aide des symboles représentant des flèches
Lorsque vous relâchez le bouton de la souris, l'affichage prend la nouvelle position.
Les affichages disposant d'un bouton Masquer peuvent être positionnés en tant que fenêtres
indépendantes (flottantes) en tout point de l'écran par simple déplacement sans qu'il soit
nécessaire de les positionner sur l'une des flèches. Dans ce cas, le bouton Masquer de l'affichage
disparaît. Vous pouvez aussi exécuter des commandes Ancrer et Flottant du menu Fenêtres.
Masquer des affichages : vous pouvez masquer des affichages à l'aide des boutons Masquer
situés sur la bordure de la fenêtre de SoMachine. Cliquez sur le bouton Masquer pointant vers le
bas en haut à droite de l'affichage. L'affichage apparaît sous forme d'onglets au niveau de la
bordure la plus proche de la fenêtre. Le contenu de l'affichage est visible uniquement lorsque le
curseur est placé sur cet onglet. L'onglet affiche l'icône et le nom de l'affichage. L'état de l'affichage
est indiqué par le bouton d'ancrage qui devient Masquer pointant vers la gauche.
EIO0000000069 02/2018
49
Interface utilisateur de SoMachine Logic Builder
Montrer des affichages : pour montrer un affichage, cliquez sur le bouton Masquer pointant vers la
gauche.
La commande Masquer, accessible par défaut dans le menu Fenêtres, permet également de
masquer et de monter un affichage.
Il est impossible de déplacer la barre d'informations et d'état située sur la bordure inférieure de
l'interface utilisateur (voir page 33).
Perspectives
Une perspective permet d'enregistrer la disposition des affichages de SoMachine. Elle mémorise
si les affichages Messages et Surveillance sont ouverts ainsi que l'emplacement des fenêtres des
affichages (ancrées ou indépendantes).
Par défaut, SoMachine propose quatre perspectives pour les cas d'utilisation suivants dans le
menu Fenêtres → Basculer la perspective ou dans le tableau des perspectives de la barre d'outils.
Nom de la
perspective
Cas d'utilisation
Navigateurs (à
gauche)
Affichages de
catalogue (à droite)
Affichages dans la partie
inférieure de l'écran
Configuration
d'équipement
Pour
ajouter/configurer
les équipements.
 Arborescence des
Catalogue de
matériels
 Contrôleur
 Équipements et
modules
 IHM et iPC
 Diverse
Messages (en mode
Masquer)
Configuration
logique
Pour ajouter/créer la  Arborescence des
logique.
équipements
 Arborescence des
applications
 Arborescence des
outils
CODESYS
Classique
Affichages standard
de CoDeSys.
 Équipements
En ligne
Pour le mode en
ligne.
 Arborescence des
50
équipements
 Arborescence des
applications
 Arborescence des
outils
 POU
équipements
 Arborescence des
applications
 Arborescence des
outils
Catalogue de logiques Messages (en mode
Masquer)
 Ressources
 Macros
 Outils
 Bibliothèques
 Variables
Catalogue de
matériels
 Contrôleur
 Équipements et
modules
 IHM et iPC
 Diverse
Messages (en mode
Masquer)
Catalogue de
matériels
 Contrôleur
 Équipements et
modules
 IHM et iPC
 Diverse
 Messages (en mode
Masquer)
 Surveillance 1
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
La perspective En ligne est sélectionnée automatiquement lorsque l'application passe en mode en
ligne.
Création de vos propres perspectives :
En plus de ces perspectives standard, vous pouvez créer un agencement d'affichage personnalisé
et l'enregistrer dans différentes perspectives en fonction de vos besoins.
Pour créer votre propre perspective, procédez comme suit :
Etape
Action
1
Redimensionnez, ouvrez ou fermez les affichages en fonction de vos besoins.
2
Exécutez la commande Enregistrer la configuration courante en tant que perspective dans le
menu Fenêtres pour enregistrer les modifications dans une nouvelle perspective.
3
Dans la boîte de dialogue Enregistrer la configuration courante en tant que perspective, donnez
un Nom à la perspective.
Résultat : l'agencement de l'affichage actuel est enregistré. La nouvelle perspective est
disponible dans le menu Fenêtres → Basculer la perspective et dans le tableau des
perspectives de la barre d'outils.
Réinitialisation de l'état initial d'une perspective :
Pour réinitialiser l'état initial d'une perspective ayant été modifiée, exécutez la commande
Réinitialiser la perspective courante dans le menu Fenêtres.
Importation/exportation de perspectives :
Pour pouvoir échanger des perspectives entre différentes installations de SoMachine ou différents
utilisateurs, la boîte de dialogue (voir SoMachine, Commandes de menu, Aide en ligne) Outils →
Options → Perspectives permet d'exporter des perspectives dans un fichier XML et d'importer des
fichiers de perspectives au format XML existants.
Zoom
Une fonction de zoom est disponible dans chacune des fenêtres de l'éditeur. Cliquez sur le bouton
de zoom
situé en bas à gauche de la fenêtre pour afficher une liste. Celle-ci permet de choisir
le facteur d'agrandissement 25, 50, 100, 150, 200 ou 400 % ou d'entrer celui de votre choix. Une
impression fait toujours référence à l'affichage à 100 %.
Il est possible de personnaliser l'interface utilisateur en mode hors ligne et en ligne.
EIO0000000069 02/2018
51
Interface utilisateur de SoMachine Logic Builder
Interface utilisateur en mode en ligne
Présentation
Dès que vous vous connectez au projet, les objets qui ont déjà été ouverts en mode hors ligne
s'affichent automatiquement en mode en ligne. La perspective passe automatiquement à la
perspective (voir page 50) en ligne, ce qui signifie que par défaut, l'affichage Surveillance apparaît.
Pour ouvrir un objet non encore ouvert en mode en ligne, double-cliquez sur le nœud dans
l'arborescence des applications ou exécutez la commande Projet → Modifier l'objet. L'objet est
alors ouvert en mode en ligne.
Si le projet contient plusieurs instances de l'objet sélectionné (comme des blocs fonction), la boîte
de dialogue Sélectionner le statut en ligne <nom de l'objet> s'affiche. Elle permet de choisir si une
instance ou la mise en œuvre de base de l'objet doit être affichée et si l'objet doit être affiché en
mode en ligne ou hors ligne.
Boîte de dialogue Sélectionner le statut en ligne
Le champ Appareil/Application contient l'équipement et l'application auxquels est associé l'objet
concerné.
52
EIO0000000069 02/2018
Interface utilisateur de SoMachine Logic Builder
Pour ouvrir l'affichage en ligne de l'objet, activez l'option Mode en ligne et cliquez sur OK. Pour
visualiser l'affichage hors ligne, activez l'option Mode hors-ligne.
Si l'objet est un bloc fonction, le champ Instance de bloc fonction contient la liste des instances
actuellement utilisées dans l'application.
Dans ce cas, les options suivantes sont disponibles :
 Sélectionnez l'une des instances et activez le mode en ligne ou hors ligne.
 Ou sélectionnez l'option Implémentation qui, quelle que soit l'instance sélectionnée, ouvre
l'affichage de l'implémentation de base du bloc fonction. L'option Implémentation n'a aucune
incidence sur les objets qui ne sont pas instanciés.
Pour plus d'informations sur les affichages en ligne des différents éditeurs, consultez la description
de l'éditeur approprié.
La barre d'état (voir page 33) donne des informations sur l'état actuel de l'application.
Menus et commandes
Présentation
La figure suivante présente la barre de menus par défaut :
Certaines commandes ne sont pas visibles dans la vue par défaut. Pour ajouter une commande
dans un menu, insérez-la à l'aide de la boîte de dialogue (voir SoMachine, Commandes de menu,
Aide en ligne) Outils → Personnaliser.
Certaines commandes, d'un éditeur particulier par exemple, sont généralement disponibles dans
un menu correspondant. Elles ne sont accessibles que lorsque l'éditeur est ouvert. Ainsi, lors de
la modification d'un objet dans l'éditeur SFC, le menu SFC apparaît dans la barre de menus.
Pour réorganiser l'arborescence des menus, utilisez la boîte de dialogue Outils → Personnaliser.
Plusieurs options du menu Fichier ne sont pas accessibles car les tâches correspondantes sont
effectuées dans SoMachine Central. Pour plus d'informations, reportez-vous au document
SoMachine Central - Guide de l'utilisateur (voir SoMachine Central, Guide utilisateur).
Pour une description des menus et commandes, consultez l'aide en ligne (voir SoMachine,
Commandes de menu, Aide en ligne) de SoMachine.
EIO0000000069 02/2018
53
Interface utilisateur de SoMachine Logic Builder
54
EIO0000000069 02/2018
SoMachine
Concepts de base
EIO0000000069 02/2018
Chapitre 3
Concepts de base
Concepts de base
Introduction et concepts de base
Présentation
SoMachine est un système de programmation de contrôleur qui ne dépend pas des équipements.
Conformément à la norme IEC 61131-3, il prend en charge tous les langages de programmation
standard. Il permet en outre d'inclure des routines en langage C. Il donne la possibilité de
programmer plusieurs contrôleurs dans un projet.
Pour plus d'informations, voir le chapitre Créer les fichiers du système d'exécution
(voir SoMachine, Commandes de menu, Aide en ligne).
Orientation objet
À la disponibilité des éléments et des fonctionnalités de programmation appropriés qui illustrent
l'orientation objet, viennent s'ajouter le traitement de la structure et de la version de SoMachine,
ainsi que l'organisation du projet. L'utilisation conjointe des unités de programmation instanciées
rend possible l'utilisation par plusieurs équipements d'un projet SoMachine. Le clônage des
applications est possible, ainsi que le mélange d'équipements de contrôleur configurables et
programmables dans un même projet.
Traitement de version
Il est possible d'installer simultanément plusieurs versions des composants de SoMachine et
d'utiliser les combinaisons de versions souhaitées. Ceci s'applique également à l'utilisation de
différentes versions du compilateur en fonction de l'équipement. Des fonctions individuelles
peuvent être ajoutées sans qu'il soit nécessaire de mettre à jour la version complète.
Pour en savoir plus, reportez-vous au document Compatibilité et migration - Guide de l'utilisateur.
Organisation des projets
L'organisation des projets est également définie selon une orientation objet. Un projet SoMachine
contient d'une part un programme de contrôleur comprenant différents objets de programmation
et d'autre part les définitions des ressources nécessaires pour exécuter des instances du
programme (application) sur les systèmes cibles définis (équipements, contrôleurs).
EIO0000000069 02/2018
55
Concepts de base
Un programme comporte donc deux principaux types d'objet :
Type d'objet
Description
Objets de programmation (POU)
Il s'agit des programmes, fonctions, blocs fonction, méthodes,
interfaces, actions, type de données, définitions, etc.
Les objets de programmation qui peuvent être instanciés dans
l'ensemble du projet, c'est-à-dire pour toutes les applications définies
dans le projet, doivent être gérés sous le nœud Global de
l'arborescence des applications. L'instanciation a lieu lorsqu'une
tâche affectée à une application appelle un programme POU.
Les objets de programmation gérés uniquement dans l'arborescence
des applications, c'est-à-dire directement affectés à une application,
ne peuvent pas être instanciés uniquement par une autre application
insérée dessous.
Objets de ressource (arborescence
des équipements)
Les objets des équipements sont gérés exclusivement dans
l'arborescence des équipements. Lorsque vous insérez des objets
dans l'arborescence des équipements, tenez compte des
recommandations fournies à la section Ajout d'éléments dans les
navigateurs (voir page 42).
(voir page 163)
Génération de code
La génération de code par des compilateurs intégrés et l'utilisation du code machine qui en résulte
permettent d'obtenir des temps d'exécution courts.
Transfert des données sur le contrôleur
Le transfert des données entre SoMachine et l'équipement est effectué par le biais d'une
passerelle (composant) et d'un système d'exécution. Une fonctionnalité en ligne complète
permettant de contrôler un programme sur l'équipement est disponible.
Langages de programmation pris en charge
Les langages de programmation mentionnés dans la norme IEC IEC 61131 sont pris en charge
par le biais d'éditeurs spéciaux adaptés :
 Éditeur FBD/LD/IL (voir page 269) pour les langages FBD (diagramme à blocs fonction), LD
(langage à contact) et IL (liste d'instructions)
 Éditeur SFC (voir page 341) pour le langage SFC (diagramme fonctionnel en séquence)
 Éditeur ST (voir page 373) pour le langage ST (texte structuré)
SoMachine propose en outre un éditeur pour la programmation en langage CFC (ne figurant pas
dans la norme CIE) :
 Éditeur CFC (voir page 321) pour le langage CFC (diagramme fonctionnel continu)
Le langage CFC est une extension des langages de programmation CEI standard.
56
EIO0000000069 02/2018
SoMachine
Configuration
EIO0000000069 02/2018
Partie II
Configuration
Configuration
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
4
Installation des équipements
59
5
Gestion des équipements
61
6
Boîtes de dialogue communes de l'éditeur d'appareil
99
EIO0000000069 02/2018
57
Configuration
58
EIO0000000069 02/2018
SoMachine
Installation des équipements
EIO0000000069 02/2018
Chapitre 4
Installation des équipements
Installation des équipements
Intégration d'équipements Sercos provenant de fournisseurs tiers
Introduction
La boîte de dialogue (voir SoMachine, Commandes de menu, Aide en ligne) Référentiel
d'équipements vous permet d'intégrer des équipements Sercos avec des profils d'E/S génériques
dans votre système de programmation.
Pour installer cet équipement Sercos, vous devez disposer du fichier SDDML (Sercos Device
Description Markup Language) (fichier de description des équipements Sercos) fourni avec
l'équipement par le fournisseur. Le fichier SDDML est un fichier de description des équipements
Sercos.
Deux types d'équipements Sercos associés à des profils d'E/S génériques sont disponibles :
 Bloc d'E/S
Un bloc d'E/S est un bloc pré-assemblé composé d'une interface de bus et d'un module d'E/S.
 Equipements d'E/S modulaire
Les équipements d'E/S modulaires sont des modules d'E/S qui peuvent être connectés à une
interface de bus.
Intégration dans SoMachine
Pour intégrer des équipements Sercos provenant de fournisseurs tiers dans votre système de
programmation, procédez comme suit :
Etape
Action
1
Sélectionnez Outils → Référentiel d'équipements... dans la barre de menus.
Résultat : la boîte de dialogue Référentiel d'équipements s'ouvre.
2
Cliquez sur le bouton Installer... dans la boîte de dialogue Référentiel d'équipements.
Résultat : la boîte de dialogue Installer la description d'appareil s'ouvre.
3
Choisissez le type de fichier Descriptions d'équipement d'E/S SERCOS III (*.xml) et recherchez
le fichier SDDML à ouvrir dans le système de fichiers.
4
Sélectionnez le fichier SDDML et cliquez sur Ouvrir.
Résultat : le fichier SDDML est converti et importé dans un format de fichier compatible avec
SoMachine.
NOTE : Si le fichier SDDML sélectionné n'est pas compatible ou si l'équipement Sercos du
fournisseur tiers n'utilise pas un type FSP (Function Specific Profile) compatible, un message de
diagnostic le signalant apparaît dans la vue (voir SoMachine, Commandes de menu, Aide en ligne)
Messages.
EIO0000000069 02/2018
59
Installation des équipements
Vérification de l'intégration
Pour vérifier si un équipement Sercos associé à un profil d'E/S générique a été intégré dans le
système de programmation, procédez comme suit :
Etape
Action
1
Sélectionnez Outils → Référentiel d'équipements... dans la barre de menus.
Résultat : la boîte de dialogue Référentiel d'équipements s'ouvre.
2
Dans l'arborescence Descriptions d'appareil installés, développez le nœud Bus de terrain →
Sercos.
3
Développez le sous-nœud Esclave afin de vérifier que les interfaces de bus Sercos que vous
avez intégrées figurent dans la liste.
4
Développez le sous-nœud Module afin de vérifier que les modules d'E/S Sercos que vous avez
intégrés figurent dans la liste.
Pour plus d'informations, consultez la description de la boîte de dialogue (voir SoMachine,
Commandes de menu, Aide en ligne) Référentiel d'équipements.
60
EIO0000000069 02/2018
SoMachine
Gestion des équipements
EIO0000000069 02/2018
Chapitre 5
Gestion des équipements
Gestion des équipements
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
5.1
Ajout d'équipements par glisser-déposer
62
5.2
Ajout d'équipements via le menu contextuel ou le bouton plus
65
5.3
Actualisation des équipements
74
5.4
Conversion d'équipements
76
5.5
Conversion de projets
80
EIO0000000069 02/2018
61
Gestion des équipements
Sous-chapitre 5.1
Ajout d'équipements par glisser-déposer
Ajout d'équipements par glisser-déposer
Ajout d'équipements par glisser-déposer
Présentation
SoMachine V4.0 et les versions ultérieures proposent un affichage de catalogue à plusieurs
onglets dans la partie droite de SoMachine Logic Builder.
Deux types d'affichage de catalogue sont disponibles :
le catalogue de matériels,
 le catalogue de logiques.

Pour ajouter un équipement à l'arborescence Equipements, sélectionnez l'entrée correspondante
dans le catalogue de matériels, faites-la glisser jusqu'à l'arborescence Equipements, puis
déposez-la sur le nœud approprié. Il est ajouté automatiquement à votre projet.
Ajout de contrôleurs par glisser-déposer
Pour ajouter un contrôleur à votre projet, procédez comme suit :
Etape
1
Action
Si le catalogue de matériels n'est pas déjà ouvert, ouvrez-le en cliquant sur le bouton Catalogue
de matériels
62
dans la barre d'outils SoMachine Logic Builder.
2
Sélectionnez l'onglet Contrôleur dans le catalogue de matériels.
Résultat : les contrôleurs adaptés à votre projet SoMachine sont affichés dans le catalogue de
matériels.
3
Sélectionnez une entrée de contrôleur dans l'onglet Contrôleur, faites-la glisser jusqu'à
l'arborescence Equipements, puis déposez-la sur le nœud approprié. Vous pouvez déposer un
contrôleur dans un espace vide à l'intérieur de l'arborescence Equipements.
Résultat : le contrôleur est ajouté à l'arborescence Equipements en tant que nouveau nœud
avec différents sous-nœuds, selon le type du contrôleur.
EIO0000000069 02/2018
Gestion des équipements
Ajout d'équipements d'extension par glisser-déposer
Pour ajouter un équipement d'extension à un contrôleur, procédez comme suit :
Etape
Action
1
Si le catalogue de matériels n'est pas déjà ouvert, ouvrez-le en cliquant sur le bouton Catalogue
2
Sélectionnez l'onglet Devices & Modules dans le catalogue de matériels.
Résultat : les équipements d'extension adaptés à votre projet SoMachine sont affichés dans le
catalogue de matériels.
3
Sélectionnez votre équipement d'extension, faites-le glisser jusqu'à l'arborescence
Equipements, puis déposez-le sur le sous-nœud approprié d'un contrôleur.
de matériels
dans la barre d'outils SoMachine Logic Builder.
NOTE : Les sous-nœuds appropriés sont développés et mis en évidence par SoMachine
Résultat : l'équipement d'extension est ajouté à l'arborescence Equipements sous le sousnœud du contrôleur.
4
Si l'équipement d'extension nécessite un gestionnaire de communication, ce nœud est ajouté
automatiquement à l'arborescence Equipements.
Si plusieurs gestionnaires de communication sont disponibles pour votre équipement
d'extension, vous pouvez sélectionner celui qui convient dans la boîte de dialogue qui s'affiche.
Ajout d'équipements et de modules par glisser-déposer
Pour ajouter un équipement de terrain à un contrôleur, procédez comme suit :
Etape
Action
1
Si le catalogue de matériels n'est pas déjà ouvert, ouvrez-le en cliquant sur le bouton Catalogue
2
Sélectionnez l'onglet Devices & Modules dans le catalogue de matériels.
Résultat : les équipements de terrain adaptés à votre projet SoMachine sont affichés dans le
catalogue de matériels.
3
Sélectionnez une entrée d'équipement de terrain dans l'affichage de catalogue Devices &
Modules, faites-la glisser jusqu'à l'arborescence Equipements, puis déposez-la sur un sousnœud approprié d'un contrôleur.
de matériels
dans la barre d'outils SoMachine Logic Builder.
NOTE : Les sous-nœuds appropriés sont développés et mis en évidence par SoMachine.
Résultat : l'équipement de terrain est ajouté à l'arborescence Equipements sous le sous-nœud
du contrôleur.
4
EIO0000000069 02/2018
Si l'équipement de terrain nécessite un gestionnaire de communication, ce nœud est ajouté
automatiquement à l'arborescence Equipements.
Si plusieurs gestionnaires de communication sont disponibles pour votre équipement de terrain,
vous pouvez sélectionner celui qui convient dans la boîte de dialogue qui s'affiche.
63
Gestion des équipements
Ajout d'équipements à partir d'un modèle d'équipement par glisser-déposer
Pour ajouter un équipement à partir d'un modèle d'équipement, procédez comme suit :
Etape
Action
1
Si le catalogue de matériels n'est pas déjà ouvert, ouvrez-le en cliquant sur le bouton Catalogue
2
Sélectionnez l'onglet Devices & Modules dans le catalogue de matériels.
3
Sélectionnez l'option Modèle d'équipement au bas de l'onglet Devices & Modules.
Résultat : les modèles d'équipement adaptés à votre projet SoMachine sont affichés dans
l'onglet Devices & Modules.
4
Ajoutez-les à l'arborescence Equipements comme indiqué au chapitre Ajout d'équipements à
partir d'un modèle (voir page 794).
de matériels
dans la barre d'outils SoMachine Logic Builder.
Ajout d'équipements à partir d'un modèle de fonction par glisser-déposer
Pour ajouter un équipement à partir d'un modèle de fonction, procédez comme suit :
Etape
1
Action
Si le catalogue de logiques n'est pas déjà ouvert, ouvrez-le en cliquant sur le bouton Catalogue
de logiques
dans la barre d'outils SoMachine Logic Builder.
2
Sélectionnez l'onglet Macro dans le catalogue de logiques.
Résultat : les modèles de fonction disponibles dans SoMachine sont affichés dans le catalogue
de logiques.
3
Sélectionnez une entrée de modèle de fonction dans l'affichage Macro, faites-la glisser jusqu'à
l'arborescence Equipements, puis déposez-la sur un sous-nœud approprié d'un contrôleur.
NOTE : Les sous-nœuds appropriés sont développés et mis en évidence par SoMachine.
Résultat : l'équipement basé sur le modèle de fonction est ajouté à l'arborescence
Equipements.
64
EIO0000000069 02/2018
Gestion des équipements
Sous-chapitre 5.2
Ajout d'équipements via le menu contextuel ou le bouton plus
Ajout d'équipements via le menu contextuel ou le bouton plus
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Ajout d'un contrôleur
66
Ajout d'équipements d'expansion
67
Ajout de gestionnaires de communication
69
Ajout d'équipements à un gestionnaire de communication
71
Ajout d'équipements à partir d'un modèle
73
EIO0000000069 02/2018
65
Gestion des équipements
Ajout d'un contrôleur
Introduction
Outre la possibilité de glisser-déplacer les équipements dans l'arborescence Equipements, vous
pouvez également cliquer sur le bouton plus vert qui est affiché sur le nœud approprié de
l'arborescence. Vous pouvez aussi effectuer un clic droit sur un nœud de l'arborescence afin
d'ajouter l'équipement souhaité via le menu contextuel. La boîte de dialogue Ajouter l'équipement
s'ouvre pour vous permettre de déterminer si l'équipement doit être ajouté à la fin, inséré ou
connecté au nœud sélectionné (voir SoMachine, Commandes de menu, Aide en ligne).
Lorsque vous ajoutez un contrôleur à votre projet, plusieurs nœuds sont automatiquement ajoutés
à l'arborescence Equipements. Ces sous-nœuds sont spécifiques aux contrôleurs, selon les
fonctions que ceux-ci proposent.
Le paragraphe suivant décrit la procédure générale d'ajout d'un contrôleur. Pour obtenir des
informations sur un contrôleur particulier, consultez le manuel de programmation correspondant.
Ajout d'un contrôleur
Pour ajouter un équipement à votre projet SoMachine, procédez comme suit :
Etape
Action
1
Sélectionnez un nœud de projet, cliquez sur le bouton plus vert du nœud, ou effectuez une clic droit
sur le nœud de projet et sélectionnez la commande Ajouter l'équipement... dans le menu contextuel.
Résultat : la boîte de dialogue Ajouter l'équipement s'ouvre.
2
Dans la boîte de dialogue Ajouter l'équipement, sélectionnez Schneider Electric dans la zone de
liste Fournisseur.
3
Choisissez le contrôleur à insérer dans le projet.
4
Renommez l'équipement en saisissant un nom dans la zone de texte Nom.
NOTE : choisissez un nom conforme à la norme IEC. N'utilisez pas de caractères spéciaux, de
chiffres en début ou d'espaces dans le nom. Le nom ne doit pas comporter plus de 32 caractères.
Si vous ne renommez pas l'équipement, un nom est attribué par défaut.
L'attribution d'un nom d'équipement cohérent peut faciliter l'organisation de votre projet.
5
66
Cliquez sur le bouton Ajouter l'équipement.
Résultat : le contrôleur sélectionné est ajouté au projet en s'affiche en tant que nouveau nœud dans
l'arborescence Equipements. La boîte de dialogue Ajouter l'équipement reste ouverte. Vous pouvez
procéder comme suit :
 Vous pouvez ajouter un autre contrôleur en revenant à l'étape 3.
 Ou vous pouvez cliquer sur le bouton Fermer pour fermer la boîte de dialogue Ajouter
l'équipement.
EIO0000000069 02/2018
Gestion des équipements
Ajout d'équipements d'expansion
Equipements d'expansion disponibles
Afin d'obtenir une liste des équipements d'expansion disponibles pour les différents contrôleurs,
consultez le chapitre Equipements pris en charge du document Introduction à SoMachine.
AVERTISSEMENT
FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT


N'utiliser 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.
Ajout d'équipements d'expansion
Pour ajouter des équipements d'expansion à votre équipement, procédez comme suit :
Etape
1
Action
Sélectionnez un nœud de contrôleur, cliquez sur le bouton plus vert du nœud, ou effectuez une clic droit
sur le nœud de contrôleur et sélectionnez la commande Ajouter l'équipement... dans le menu contextuel.
Résultat : la boîte de dialogue Ajouter l'équipement s'ouvre.
2
Dans la boîte de dialogue Ajouter l'équipement, sélectionnez Schneider Electric dans la liste Fournisseur.
3
Choisissez l'équipement d'expansion à ajouter à votre contrôleur dans la liste Equipement située en
dessous.
4
Renommez votre équipement d'expansion en saisissant un nom dans la zone de texte Nom.
NOTE : Le nom ne doit contenir aucun espace. Si vous ne renommez pas l'équipement d'expansion, un
nom est attribué par défaut.
L'attribution d'un nom cohérent à l'équipement d'expansion peut faciliter l'organisation de votre projet.
5
Cliquez sur le bouton Ajouter l'équipement.
Résultat : l'équipement d'expansion sélectionné est ajouté au projet et affiché dans l'arborescence
Equipements comme nouveau sous-nœud de votre contrôleur.
La boîte de dialogue Ajouter l'équipement reste ouverte. Vous pouvez effectuer l'une des opérations
suivantes :
 Ajouter un autre équipement d'expansion en revenant à l'étape 3 de cette description.
 Cliquer sur le bouton Fermer.
EIO0000000069 02/2018
67
Gestion des équipements
NOTE : lorsque vous ajoutez un objet TWDNOI10M3 (AS-Interface Master Module), le
gestionnaire de bus de terrain Bus ASI virtuel correspondant est inséré automatiquement. Pour
plus d'informations sur la configuration de l'interface ASI, reportez-vous au chapitre correspondant
dans le Guide de programmation du Modicon M238 Logic Controller (voir Modicon M238 Logic
Controller, Guide de programmation).
Configuration des équipements d'expansion
Pour plus d'informations sur la configuration, reportez-vous au Guide de programmation de votre
équipement d'expansion.
68
EIO0000000069 02/2018
Gestion des équipements
Ajout de gestionnaires de communication
Présentation
Les gestionnaires de communication sont obligatoires pour activer et configurer toute interface de
bus matériel, par exemple CANopen ou de ligne série.
Il existe deux types de gestionnaires de communication :
Les gestionnaires de bus de terrain qui permettent de configurer les équipements de bus terrain
(esclaves CANopen ou Modbus, par exemple),
 les gestionnaires de communication génériques.

Les gestionnaires de communication disponibles dans SoMachine sont répertoriés ci-dessous :
Nom
Type
d'interface
Description
Gestionnaire ASCII
Ligne série
Permet de transmettre et/ou de recevoir des données avec
un équipement simple.
Gestionnaire de réseau
SoMachine
 Ligne série
Utilisez cette configuration être utilisé si vous souhaitez
connecter un IHM XBTGT, XBTGK, XBTGH ou SCU au
moyen du protocole SoMachine offrant un échange
transparent de données et une capacité de
téléchargement multiple (téléchargement d'applications
d'automate et IHM à travers une seule connexion PCautomate ou PC-IHM).
Un maximum de 4 connexions est disponible : 1 pour
SoMachine (même si une connexion USB est utilisée), 3
pour l'Ethernet.
Scrutateur d'E/S Modbus
Ligne série
Gestionnaire de protocole RTU Modbusou ASCII utilisés
pour définir des échanges implicites (I/O scanning) avec
des équipements esclaves Modbus.
Gestionnaire Modbus
Ligne série
Utilisé pour le protocole Modbus RTU ou ASCII en mode
maître ou esclave.
CANopen Optimisé
CAN
Gestionnaire CANopen pour contrôleurs optimisés (M238,
M241, XBTGC, XBTGT, XBTGK, SCU HMI, ATV IMC)
Performances CANopen
CAN
Gestionnaire CANopen pour contrôleurs de performances
(M251, M258, LMC058 et LMC078)
CANmotion
CAN
Gestionnaire CANmotion pour LMC058 et LMC078 port
CAN1 uniquement.
Equipement esclave Modbus
TCP
Ethernet
Gestionnaire Modbus TCP pour contrôleurs avec port
Ethernet.
EtherNet/IP
Ethernet
Gestionnaire EtherNet/IP pour contrôleurs avec port
Ethernet (M251M258, LMC058 et LMC078).
EIO0000000069 02/2018
(max. 1)
 Ethernet
(max. 3)
69
Gestion des équipements
Ajout du gestionnaire de communication
Les gestionnaires de communications sont automatiquement ajoutés avec l'appareil concerné.
Pour ajouter un gestionnaire de communications séparément, procédez comme suit :
Etape
70
Action
1
Dans l'arborescence des équipements, sélectionnez l'interface de bus (Ligne série, CAN0,
CAN1, Ethernet) et cliquez sur le signe plus de couleur verte, ou cliquez sur le nœud du
gestionnaire de périphériques sur site et sélectionnez la commande Ajouter un appareil... à
partir du menu contextuel.
Résultat : la boîte de dialogue Ajouter un appareil s'ouvre.
2
Dans la boîte de dialogue Ajouter un appareil, sélectionnez Schneider Electric dans la zone de
liste Fabricant.
Remarque : vous pouvez trier les équipements par marque en cliquant sur la zone de liste
Fabricant.
3
Sélectionnez le gestionnaire de communication dans la liste ci-dessous.
4
Renommez l'équipement en saisissant un nom dans le champ Nom.
Remarque : n'utilisez pas d'espaces dans le nom. Si vous ne renommez pas l'équipement, un
nom est attribué par défaut.
l'attribution d'un nom à l'équipement peut faciliter l'organisation de votre projet.
5
Cliquez sur le bouton Ajouter un appareil.
6
Cliquez sur le bouton Fermer pour fermer la boîte de dialogueAjouter un appareil.
7
Configurez le gestionnaire de communication.
EIO0000000069 02/2018
Gestion des équipements
Ajout d'équipements à un gestionnaire de communication
Présentation
Vous pouvez ajouter des équipements de terrain au gestionnaire de communication en
sélectionnant le nœud du gestionnaire d'équipements de terrain (par exemple, le gestionnaire
CANopen ou Modbus) dans l'arborescence des équipements et en cliquant sur le signe plus de
couleur verte. Vous pouvez également cliquer avec le bouton droit sur le nœud du gestionnaire
d'équipements de terrain dans l'arborescence des équipements et exécuter la commande Ajouter
un appareil.
À titre de condition préalable, l'appareil doit être disponible dans la boîte de dialogue Référentiel
des appareils (voir SoMachine, Commandes de menu, Aide en ligne).
Ajout d'équipements
Etape
Action
1
Sélectionnez le nœud du gestionnaire d'équipements de terrain (gestionnaire
CANopen ou Modbus) dans l'arborescence des équipements et cliquez sur le
signe plus de couleur verte, ou cliquez sur le nœud du gestionnaire
d'équipements de terrain et sélectionnez la commande Ajouter un appareil…
dans le menu contextuel.
Résultat : la boîte de dialogue Ajouter un appareil s'ouvre.
2
Dans la boîte de dialogue Ajouter un appareil, sélectionnez Schneider Electric
dans la zone de liste Fabricant.
Remarque : vous pouvez trier les équipements par marque en cliquant sur la
zone de liste Fabricant.
3
Sélectionnez un équipement dans la liste ci-dessous.
4
Renommez l'équipement en saisissant un nom dans le champ Nom.
NOTE : N'intégrez pas d'espaces dans le nom. N'ajoutez pas de trait de
soulignement (_) à la fin du nom.
Si vous ne renommez pas l'équipement, un nom est attribué par défaut.
l'attribution d'un nom à l'équipement peut faciliter l'organisation de votre projet.
5
Cliquez sur le bouton Ajouter un appareil.
Résultat : l'équipement de terrain est ajouté au gestionnaire d'équipements de
terrain.
NOTE : La boîte de dialogue Ajouter l'équipement reste ouverte.
Vous pouvez accomplir les actions suivantes :
 Vous pouvez ajouter un autre équipement en revenant à l'étape 2.
 Ou vous pouvez cliquer sur le bouton Fermer.
EIO0000000069 02/2018
71
Gestion des équipements
Accès aux informations de diagnostic.
Pour obtenir des informations de diagnostic relatives aux équipements sur CANopen, utilisez la
bibliothèque CAA_CiA405.
Accès au diagnostic de configuration (pour utilisateurs avancés)
Vous pouvez utiliser les options Annulation en cas d'erreur et Saut à la ligne en cas d'erreur dans
l'onglet Service Data Object du configurateur CANopen pour traiter les erreurs potentielles de
configuration.
Pour optimiser les performances de l'objet-maître CAN, les diagnostics CAN sont externes aux
données-maître CAN dans le contrôleur. La structure de diagnostic CAN est définie dans la
bibliothèque CanConfig Extern disponible dans le Gestionnaire de bibliothèque.
La structure g_aNetDiagnosis contient les informations de diagnostic les plus récentes en
provenance des esclaves. La structure est mise à jour chaque fois qu'un esclave est configuré,
qu'elle qu'en soit la raison.
Cette structure peut être utilisée au sein du programme pour effectuer les opérations suivantes :
 Surveiller la réponse des esclaves configurés au moyen de messages SDO.
 Surveiller le maître pour détecter d'éventuels messages d'abandon issus des esclaves avant
d'autoriser le démarrage d'une machine ou d'une application.
Cette structure doit être en place et active au sein de l'application utilisateur au cours des tests, du
débogage et de la mise en service de l'application. Lorsque la machine et son application de
contrôle ont été mises en service et validées, il devient possible de désactiver ce code d'exécution
et de réduire ainsi le trafic sur le réseau CANopen.
Mais si pendant le cycle de vie d'une application et de la machine ou du processus qui la
commande, des esclaves sont ajoutés ou remplacés dans le système opérationnel, la structure de
diagnostic devrait rester active dans l'application.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT


Utilisez la structure de données g_aNetDiagnosis au sein de l'application pour surveiller les
réponses d'esclave CAN aux commandes de configuration.
Vérifiez que l'application ne démarre pas ou ne place pas la machine ou le processus dans un
état opérationnel en cas de réception de messages d'abandon SDO depuis l'un des esclaves
CAN.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
72
EIO0000000069 02/2018
Gestion des équipements
Après avoir ajouté la bibliothèque CanConfig Extern à votre application, utilisez la définition Net
Diagnostic au sein de votre application pour tester les messages d'abandon SDO issus des
esclaves CAN.
L'exemple de code suivant illustre l'utilisation de la structure de données de diagnostic CAN :
IF g_aNetDiagnosis[CAN_Net_Number].ctSDOErrorCounter = 0 THEN
(* Aucune erreur n'est détectée dans la configuration*)
ELSE
(* Une erreur a été détectée pendant la configuration. Récupérer les
dernières informations d'erreur.*)
// ID nœud de l'esclave qui a envoyé le code d'abandon
ReadLastErrorNodeID := g_aNetDiagnosis[CAN_Net_Number].usiNodeID;
// index utilisé dans le SDO abandonné
ReadLastErrorIndex := g_aNetDiagnosis[CAN_Net_Number].wIndex;
// sous-index utilisé dans le DSO abandonné
ReadLastErrorSubIndex := g_aNetDiagnosis[CAN_Net_Number].bySubIndex
;
// code d'abandon SDO
ReadLastErrorSdoAbortCode := g_aNetDiagnosis [CAN_Net_Number].udiAb
ortCode;
(* Ne pas autoriser le démarrage ou tout autre fonctionnement de la
machine ou du processus *)
END_IF
NOTE : Dans cet exemple, le CAN_Net_Number serait 0 pour le port CAN0, et si le contrôleur est
équipé en conséquence, il serait de 1 pour le port CAN1.
Ajout d'équipements à partir d'un modèle
Présentation
Il est également possible d'ajouter un nouvel équipement en utilisant un modèle d'équipement.
Pour obtenir une description de cette procédure, reportez-vous à la section Gestion des modèles
d'équipements (voir page 794).
EIO0000000069 02/2018
73
Gestion des équipements
Sous-chapitre 5.3
Actualisation des équipements
Actualisation des équipements
Actualisation des équipements
Introduction
La fonction d'actualisation d'équipement permet de remplacer un équipement sélectionné dans
l'arborescence Equipements
 par une autre version du même équipement ou
 par un type d'équipement différent
Actualisation des équipements
Pour remplacer un équipement de votre projet SoMachine par une autre version ou par un
équipement différent, procédez comme suit :
Etape Action
1 Sélectionnez l'équipement à remplacer dans l'arborescence Equipements, puis exécutez la
commande Actualiser l'appareil du menu Projet.
OU
Cliquez avec le bouton droit de la souris sur l'équipement à remplacer dans l'arborescence
Equipements, puis sélectionnez la commande Actualiser l'appareil dans le menu contextuel.
Résultat : la boîte de dialogue Actualiser l'appareil s'ouvre.
OU
Cliquez avec le bouton droit de la souris sur l'équipement à remplacer dans l'arborescence
Equipements, puis sélectionnez la commande Ajouter un appareil dans le menu contextuel. Dans la
boîte de dialogue Ajouter un appareil, sélectionnez Action : Actualiser l'appareil.
Résultat : la boîte de dialogue Ajouter un appareil est remplacée par la boîte de dialogue Actualiser
l'appareil.
2 Dans la liste Appareil, choisissez l'équipement qui doit remplacer l'équipement actuel.
Pour sélectionner une version spécifique de l'équipement, sélectionnez les options Afficher toutes les
versions (uniquement pour experts) et/ou Afficher les versions obsolètes.
3 Si nécessaire, pour distinguer votre équipement des autres, renommez-le en tapant un nom dans la
zone de texte Nom. A défaut, le même nom est utilisé pour l'appareil actualisé.
Si l'équipement est actualisé par un autre type d'équipement, la description du type d'équipement
(indiquée entre guillemets devant le nom d'équipement) est adaptée automatiquement.
Pour faciliter l'organisation de votre projet, veillez à attribuer un nom explicite à l'équipement.
4 Cliquez sur le bouton Actualiser l'appareil.
Résultat : l'équipement qui avait été sélectionné dans l'arborescence Equipements est remplacé par
le nouveau type d'équipement ou la nouvelle version. Le nouveau type d'équipement ou la nouvelle
version est maintenant indiqué au niveau du nœud sélectionné dans l'arborescence Equipements.
74
EIO0000000069 02/2018
Gestion des équipements
Conséquences de l'actualisation d'un équipement
Les sous-équipements figurant dans l'arborescence Equipements sous l'équipement que vous
avez actualisé sont également actualisés automatiquement.
Les paramètres de configuration de l'équipement ne sont pas modifiés si le type d'équipement n'a
pas été changé.
Si la procédure d'actualisation entraîne une incohérence au niveau de la configuration existante,
cela est détecté à la prochaine compilation de l'application. Les incohérences détectées sont
indiquées par des messages appropriés. Cela concerne aussi implicitement les bibliothèques
ajoutées qui ne sont pas supprimées de manière automatique et appropriée lors d'une
actualisation d'équipement.
EIO0000000069 02/2018
75
Gestion des équipements
Sous-chapitre 5.4
Conversion d'équipements
Conversion d'équipements
Conversion des équipements
Introduction
SoMachine 4.0 et versions ultérieures vous permettent de convertir un équipement configuré dans
votre projet en un autre équipement compatible. SoMachine convertit automatiquement
l'équipement actuellement configuré en l'équipement sélectionné et affiche les modifications
apportées dans la vue Messages.
La commande Convertir l'équipement peut ajouter ou supprimer automatiquement des modules.
Ces modifications matérielles influencent également l'adressage et les bibliothèques.
Pour prévenir tout comportement imprévu une fois qu'un équipement a été converti :
Vérifiez que le nouvel équipement prend en charge toutes les fonctions et tous les ports de
communication nécessaires à votre projet.
 Evitez d'utiliser les adresses directes dans votre application.
 Effectuez une sauvegarde du projet sur le disque dur du PC avant de convertir un équipement.

AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT


Vérifiez que les adresses directes utilisées dans votre application (par exemple, %IB5) ont été
converties correctement après la conversion de l'équipement.
Vérifiez que le projet modifié contient les configurations prévues et fournit les fonctionnalités
souhaitées après la conversion de l'équipement.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
AVIS
PERTE DE DONNEES
Effectuez une sauvegarde du projet sur le disque dur du PC avant de convertir un équipement.
Le non-respect de ces instructions peut provoquer des dommages matériels.
76
EIO0000000069 02/2018
Gestion des équipements
Conversion d'un équipement
Pour convertir un équipement en un équipement compatible, procédez comme suit :
Etape
Action
1
Effectuez une sauvegarde du projet sur le disque dur du PC en exécutant la commande Fichier →
Enregistrer le projet sous... avant de convertir un équipement.
2
Effectuez un clic droit sur l'équipement que vous souhaitez convertir dans l'arborescence Equipements.
3
Sélectionnez la commande Convertir l'équipement dans le menu contextuel.
Résultat : la boîte de dialogue Convertir l'équipement est affichée. Elle répertorie les équipements qui
sont compatibles avec celui que vous avez sélectionné et fournit des informations supplémentaires sur
l'équipement sélectionné :
4
Sélectionnez dans la liste l'équipement vers lequel vous souhaitez convertir votre équipement configuré.
Pour afficher les versions disponibles d'un équipement, sélectionnez l'option Afficher toutes les versions
(experts uniquement).
EIO0000000069 02/2018
77
Gestion des équipements
Etape
Action
5
Si vous n'avez pas encore sauvegardé votre projet, cliquez sur Annuler pour arrêter sans apporter de
modifications et effectuer une sauvegarde avant de relancer la procédure.
Pour lancer la conversion, cliquez sur OK.
Résultat : l'équipement actuellement configuré est converti en l'équipement que vous avez sélectionné
dans la liste. Les informations que vous avez saisies sont conservées si les modules associés sont
toujours disponibles. Toutes les modifications ou configurations qui n'ont pas pu être converties sont
répertoriées dans la vue Messages.
6
Vérifiez que le projet converti contient toujours les configurations prévues et fournit les fonctions
attendues. Si ce n'est pas le cas, adaptez la configuration ou restaurez la sauvegarde du fichier projet
inchangé.
Informations de conversion dans la vue Messages
Les informations suivantes sont affichées dans la vue Messages du processus de conversion :
Equipements source et équipements cible résultant de la conversion
 Paramètres qui n'ont pas été transférés ver la cible
 Equipements qui n'ont pas été convertis

Pour enregistrer les informations affichées dans la vue Messages, vous pouvez les copier vers le
presse-papiers (appuyez sur CTRL + C) et les copier dans un fichier de données (appuyez sur
CTRL + V).
Cas spécifique : conversion d'un équipement IHM en un autre équipement IHM ayant une résolution
d'écran supérieure
Comme les autres équipements, vous pouvez aussi convertir un équipement IHM en un autre
équipement IHM. Dans ce cas, la boîte de dialogue Convertir l'équipement inclut une option
supplémentaire pour les équipements IHM, celle-ci permettant une adaptation automatique à une
résolution d'écran supérieure.
78
EIO0000000069 02/2018
Gestion des équipements
Boîte de dialogue Convertir l'équipement pour les équipements IHM
Si le nouvel équipement IHM est muni d'un écran plus grand et utilise donc une résolution
supérieure, l'option Adapter à la résolution d'écran supérieure est activée par défaut. Elle adapte
automatiquement le contenu, les fenêtres contextuelles et les polices des panneaux IHM à la
résolution d'écran supérieure du nouvel équipement IHM.
NOTE : cette opération ne peut pas être annulée automatiquement. Vérifiez et, si nécessaire,
adaptez manuellement le contenu des panneaux après la conversion.
EIO0000000069 02/2018
79
Gestion des équipements
Sous-chapitre 5.5
Conversion de projets
Conversion de projets
Conversion SoMachine Basic et Twido Projets
Introduction
Avec SoMachine, vous pouvez convertir un projet SoMachine Basic ou TwidoSoft/TwidoSuite et
le contrôleur configuré en un Logic Controller ou un HMI Controller SoMachine sélectionnable
(voir page 937). Le contrôleur et la logique correspondante sont convertis et intégrés dans le projet
SoMachine.
SoMachine propose plusieurs solutions pour effectuer ce processus de conversion :
Dans SoMachine Central, exécutez la commande Convertir... → Convertir le projet Twido... ou
Convertir... → Convertir le projet SoMachine Basic... dans le Menu principal (voir SoMachine
Central, Guide utilisateur). La boîte de dialogue Convertir le projet SoMachine Basic ou
Convertir le projet Twido s'affiche.
 Dans SoMachine Logic Builder, exécutez la commande Fichier → Convertir le projet
SoMachine Basic ou Fichier → Convertir le projet Twido. La boîte de dialogue Convertir le projet
SoMachine Basic ou Convertir le projet Twido s'affiche. Si les commandes ne sont pas
disponibles, vous pouvez les insérer dans un menu de votre choix à l'aide de la boîte de
dialogue (voir SoMachine, Commandes de menu, Aide en ligne) Outils → Personnaliser.
 Dans SoMachine Central, ouvrez un projet SoMachine Basic ou Twido. Pour ce faire, cliquez
sur le bouton Ouvrir un projet existant ou cliquez sur Ouvrir un projet dans l'écran Mise en route
pour ouvrir la boîte de dialogue Ouvrir un projet. Sélectionnez l'option Fichiers de projet Twido
(*.xpr, *.twd, *.xar) ou Fichiers de projet SoMachine Basic (*.smbp) dans la liste des fichiers pris
en charge et recherchez votre projet SoMachine Basic ou Twido. Cliquez sur le bouton Ouvrir
pour ouvrir la boîte de dialogue Convertir le projet SoMachine Basic ou Convertir le projet
Twido.

Les versions de SoMachine Basic prises en charge par ce mécanisme de conversion sont
répertoriées dans les notes de version de SoMachine. Si vous convertissez un projet SoMachine
Basic créé avec une version de SoMachine Basic plus récente que la dernière version prise en
charge, un message s'affiche dans la vue (voir SoMachine, Commandes de menu, Aide en ligne)
Messages. Vous pouvez alors continuer ou annuler la conversion. Si vous poursuivez, l'application
est convertie, mais vous risquez de rencontrer des erreurs et de devoir les corriger. Dans ce cas,
vérifiez la vue Messages et l'application avant de mettre en place le projet.
NOTE : vérifiez que le projet SoMachine Basic ou Twido est valide avant de le convertir en projet
SoMachine.
NOTE : il est impossible de convertir des projets protégés par un mot de passe.
Pour éviter un comportement imprévisible après la conversion d'un projet, vérifiez que le contrôleur
cible prend en charge les fonctions et les ports de communication nécessaires à votre projet.
80
EIO0000000069 02/2018
Gestion des équipements
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT



Vérifiez que le programme du contrôleur cible contient les configurations et délivre les
fonctions prévues une fois le projet converti.
Procédez au débogage, à la vérification et à la validation de la totalité des fonctionnalités du
programme converti avant sa mise en service.
Avant de convertir un programme, assurez-vous que le programme source est valide, c'est-àdire téléchargeable vers le contrôleur source.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
NOTE : pour obtenir des informations complémentaires, des conseils et des informations de
sécurité importantes sur l'importation de projets dans SoMachine, consultez le document
SoMachine - Compatibilité et migration - Guide de l'utilisateur (voir SoMachine - Compatibilité et
migration, Guide utilisateur).
EIO0000000069 02/2018
81
Gestion des équipements
Conversion d'un projet SoMachine Basic ou Twido
Pour convertir un projet SoMachine Basic ou Twido, procédez comme suit :
Étape
82
Action
1
Pour lancer la conversion, effectuez l'une des trois actions disponibles dans SoMachine Central ou
SoMachine Logic Builder (comme indiqué dans la partie Introduction de ce chapitre (voir page 80)).
Résultat : la boîte de dialogue Convertir le projet SoMachine Basic ou Convertir le projet Twido s'affiche :
2
Indiquez le nom du contrôleur dans le champ Nom de l'équipement.
EIO0000000069 02/2018
Gestion des équipements
Étape
3
Action
Saisissez le chemin d'accès au fichier de projet SoMachine Basic ou Twido dans le champ Fichier du
projet, ou cliquez sur le bouton … pour rechercher le fichier.
NOTE : Si vous avez déjà recherché votre projet SoMachine Basic ou Twido dans la boîte de dialogue
Ouvrir un projet, le chemin d'accès s'affiche automatiquement dans le champ Fichier du projet et n'est
pas modifiable.
4
Sélectionnez le langage de programmation dans lequel la logique sera convertie dans la liste Langue
d'implémentation.
Les langages de programmation pris en charge sont les suivants :
 LD (Ladder Diagram, schéma à contacts)
 Function Block Diagram (FBD), langage en blocs fonction
 IL (Instruction List, liste d'instructions)
 Continuous Function Chart (CFC), diagramme fonctionnel continu
5
Sélectionnez, dans la liste des Appareils, le contrôleur cible dans lequel vous voulez convertir votre
contrôleur SoMachine Basic ou Twido. Des informations complémentaires sur l'appareil sélectionné
s'affichent dans la zone Informations de la boîte de dialogue.
6
Cliquez sur Convertir pour démarrer la conversion.
Résultat : le projet SoMachine Basic ou Twido est converti et intégré dans le projet SoMachine ouvert.
Les modifications ou configurations qui n'ont pas pu être converties sont répertoriées dans la vue
(voir SoMachine, Commandes de menu, Aide en ligne) Messages.
7
Consultez la catégorie Conversion du projet dans la vue Messages et vérifiez les erreurs et alertes
détectées et répertoriées.
8
Vérifiez que le projet converti contient les configurations prévues et fournit les fonctions attendues. Si tel
n'est pas le cas, adaptez la configuration.
Compatibilité IEC des noms d'objet et des noms de variable
Dans les projets SoMachine, les noms d'objet et noms de variable doivent être conformes aux
conventions de dénomination définies dans la norme IEC. Les noms dans votre projet SoMachine
Basic ou Twido, qui ne sont pas conformes à la norme, sont automatiquement remplacés par des
noms corrects au regard de la norme IEC.
Si vous souhaitez conserver des noms non conformes à la norme IEC dans le projet SoMachine
converti, activez l'option Autoriser les caractères unicode pour les identificateurs dans la boîte de
dialogue (voir SoMachine, Commandes de menu, Aide en ligne) Options du projet → Options
compilateur.
Bibliothèque TwidoEmulationSupport
La bibliothèque (voir Twido Emulation Support, Guide de la bibliothèque) de TwidoEmulationSupport contient les fonctions et blocs fonctionnels qui délivrent les fonctionnalités SoMachine
Basic et TwidoSoft/TwidoSuite dans une application SoMachine. La bibliothèque TwidoEmulationSupport est automatiquement intégrée au projet SoMachine avec le contrôleur converti.
EIO0000000069 02/2018
83
Gestion des équipements
Conversion du programme d'application
Dans le projet SoMachine cible, des programmés séparés sont créés pour chaque POU
SoMachine Basic et POU libre, ainsi que pour chaque sous-programme et section de programme
Twido. Le langage de programmation utilisé pour ces programmes est déterminé par le Langage
d'implémentation sélectionné dans la boîte de dialogue Convertir le projet SoMachine Basic ou
Convertir le projet Twido. Les POU programmés en Grafcet graphique constituent une exception.
Ils sont convertis en programme SFC. Pour plus d'informations, consultez la section Grafcet de ce
chapitre (voir page 92).
Pour chaque objet de langage (comme les objets de mémoire ou les blocs fonction) utilisé par le
programme d'application, une variable globale est créée. Des listes de variables globales
(voir page 211) distinctes pour les différentes catégories d'objets (une pour les bits mémoire, une
pour les mots mémoire, etc.) sont créées.
Les restrictions suivantes concernant la structure du programme d'application s'appliquent lors de
la conversion de ce dernier :
 Dans SoMachine, il n'est pas possible d'accéder à un libellé (voir page 307) contenu dans un
autre programme.
 Il n'est pas possible de définir des étapes Grafcet dans un sous-programme.
 Il n'est pas possible d'activer ou de désactiver les étapes Grafcet (par instruction # et D#) dans
un sous-programme.
Conversion des objets de mémoire
Les zones fournies pour les objets de mémoire dans SoMachine Basic et Twido diffèrent de
SoMachine.
Dans SoMachine Basic et Twido, il existe trois zones distinctes pour les objets de mémoire :
Zone
Objets de mémoire inclus
zone de mémoire binaire
Bits mémoire (%M)
Zone de mots mémoire
 Mots mémoire (%MW)
 Mots doubles (%MD)
 Valeurs en virgule flottante (%MF)
Zone des constantes
 Mots constants (%KW)
 Mots doubles (%KD)
 Valeurs en virgule flottante (%KF)
84
EIO0000000069 02/2018
Gestion des équipements
Dans SoMachine, seule la zone de mots de mémoire existe pour les objets de mémoire :
Zone
Objets de mémoire inclus
Zone de mots mémoire
 Mots mémoire (%MW)
 Mots doubles (%MD)
 valeurs en virgule flottante
Aucun format d'adressage spécifique n'existe pour les valeurs en
virgule flottante. Les variables à virgule flottante peuvent être
mappées à une adresse %MD.
Le graphique ci-dessous présente les différentes configurations des adresses %MD et %MF dans
SoMachine Basic / Twido et SoMachine.
1
2
Adresses mémoire dans SoMachine Basic / Twido
Adresses mémoire dans SoMachine
EIO0000000069 02/2018
85
Gestion des équipements
Les objets de mémoire sont convertis comme suit :
Objets de mémoire source
Objets de mémoire cible
Informations complémentaires
%MW
Mappé à la même adresse %MW
Exemple
%MW2 est mappé à %MW2.
Pour chaque objet %MW, une
variable globale de type INT est
créée.
%MD et %MF avec des adresses
paires
Mappé de manière à conserver la
même adresse %MW
qu'auparavant.
Exemple
%MD4 / %MF4 mappées à %MD2.
Pour chaque objet %MD, une
variable globale de type DINT est
créée.
Pour chaque objet %MF utilisé, une
variable globale de type REAL est
créée.
%MD et %MF avec des adresses
impaires
Mappage impossible, car aucune
variable DINT n'est localisable
dans une adresse mémoire
impaire.
Une variable est créée pour
contribuer à s'assurer que
l'application convertie peut être
compilée. Toutefois, vous devez
examiner l'effet la création de cette
variable sur la fonctionnalité
globale de votre programme.
%M
Mappé en tant que champ de bits
empaqueté dans un emplacement
fixe de la zone %MW.
Pour chaque objet %M, une variable
globale de type BOOL est créée.
%KW
Mappé à des adresses
consécutives de la zone %MW.
Pour chaque objet %KW utilisé, une
variable globale de type INT est
créée.
La relation entre les objets %KW, %KD et %KF est la même que pour les objets %MW, %MD et %MF. Par
exemple, %KD4 et %KF4 sont mappées au même emplacement que %KW4. Le mappage d'adresses
%KD / %KF impaires est impossible.
Accès distant
Les objets mémoire (%MW, %MD, %MF et %M) sont accessibles via un équipement distant par le biais
des services Modbus :
 Si un équipement distant accède à des objets %MW, %MD ou %MF dans l'application source, cet
accès reste disponible dans l'application SoMachine.
 Si un périphérique distant accède à des objets %M dans l'application source, cet accès ne reste
pas disponible dans l'application SoMachine.
86
EIO0000000069 02/2018
Gestion des équipements
Conversion des blocs fonction
Pour les blocs fonction de SoMachine Basic / Twido, la bibliothèque TwidoEmulationSupport
fournit des blocs dotés de fonctions compatibles :
SoMachine Basic / Twido
Bloc fonctionnel de la bibliothèque
TwidoEmulationSupport
Temporisateurs %TM
FB_Timer
Compteurs %C
FB_Counter
Registre %R
FB_FiFo / FB_LiFo
Drum %DR
FB_Drum
Registre de bits à décalage %SBR
FB_ShiftBitRegister
Fonction pas à pas %SC
FB_StepCounter
Calendrier %SCH
FB_ScheduleBlock
PID
FB_PID
Echange / message %MSG
FB_EXCH
Compteur très rapide %HSC / %VFC
Ces blocs fonction sont convertis comme indiqué dans
la section Conversion des compteurs rapides,
compteurs très rapides (Twido : compteurs très
rapides) et générateurs d'impulsions (voir page 90) de
ce chapitre.
Compteur rapide %FC
Générateur d'impulsions %PLS
Générateur d'impulsions PWM %PWM
Blocs fonction PTO %PTO, %MC_xxx_PTO
Générateur de fréquence %FREQGEN
FB_ReadVar, FB_WriteVar, FB_WriteReadVa
Blocs fonction de communication
READ_VAR, WRITE_VAR, WRITE_READ_VAR et r et FB_SendRecvMsg
SEND_RECV_MSG
Bloc fonction SMS SEND_RECV_SMS
Ces blocs fonction ne sont pas convertis.
MC_MotionTask_PTO
Blocs fonction de variateur %MC_xxx_ATV
EIO0000000069 02/2018
87
Gestion des équipements
Pour la conversion des blocs fonctionnels, veuillez considérer les points suivants :
 La bibliothèque TwidoEmulationSupport ne fournit aucun bloc fonctionnel pour les fonctions
liées au matériel, tels que des compteurs haut débit, compteurs rapides ou générateurs
d'impulsions. Le contrôle doit être effectué par l'intermédiaire de blocs fonctionnels fournis par
les bibliothèques HSC et PTO_PWM spécifiques à la plateforme. Ces blocs fonctionnels ne sont
pas compatibles avec les blocs fonctionnels du code source. En clair, il n'est pas possible
d'effectuer une conversion complète si le programme source contient des fonctions reposant
sur les ressources matérielles de contrôleur. Pour plus d'informations, reportez-vous à la
description de la Conversion des compteurs rapides, compteurs haut débit (Twido : compteurs
très rapides) et générateurs d'impulsions (voir page 90).
 Dans SoMachine Basic / Twido, la fonction de messagerie est assurée par l'instruction EXCHx
et le bloc fonction %MSGx. Dans l'application SoMachine, cette fonction est assurée par un seul
bloc fonction FB_EXCH.
 Dans SoMachine Basic / Twido, certains blocs fonctionnels peuvent être configurés à l'aide de
boîtes de dialogue de configuration spéciales. Ces données de configuration sont fournies pour
les blocs fonctionnels de la bibliothèque TwidoEmulationSupport au moyen de paramètres
dédiés.
Conversion des variables système
Les bits système et les mots suivants sont convertis :
Bit / mot
système
Informations complémentaires
%S0
Défini sur 1 pendant le premier cycle suivant un démarrage à froid.
NOTE : Il n'est pas possible de déclencher un démarrage à froid en écrivant dans ce bit système.
%S1
Défini sur 1 pendant le premier cycle suivant un démarrage à chaud.
NOTE : Il n'est pas possible de déclencher un démarrage à chaud en écrivant dans ce bit système.
%S4
Impulsion déclenchée sur une base temporelle de 10 ms.
%S5
Impulsion déclenchée sur une base temporelle de 100 ms.
%S6
Impulsion déclenchée sur une base temporelle de 1 s.
%S7
Impulsion déclenchée sur une base temporelle de 1 min.
%S13
Mis à 1 pendant le premier cycle après le démarrage du contrôleur.
%S18
Défini sur 1 en cas d'un dépassement de la capacité arithmétique.
NOTE : Cet indicateur est fourni par la bibliothèque de TwidoEmulationSupport et est défini
uniquement par les fonctions fournies par cette bibliothèque.
%S21 , %S22
Ne sont qu'écrits. La lecture de ces variables n'est pas prise en charge.
%S113
Arrête le scrutateur d'E/S Modbus Série sur la ligne série 1.
%S114
Arrête le scrutateur d'E/S Modbus Série sur la ligne série 2.
%SW63...65
Code d'erreur des blocs MSG 1 à 3.
%SW114
Activer les indicateurs pour les blocs de calendrier.
88
EIO0000000069 02/2018
Gestion des équipements
Les autres variables système ne sont pas prises en charge par la conversion. Si une variable
système non prise en charge est utilisée par le programme d'application source, un message est
généré dans la catégorie Conversion de projet de la vue Messages (voir SoMachine, Commandes
de menu, Aide en ligne).
Conversion des variables conservées
Les variables et blocs fonction de SoMachine Basic / Twido sont des variables conservées. Cela
signifie qu'ils conservent leurs valeurs et leurs états après un arrêt imprévu ou un redémarrage
normal du contrôleur.
Ce comportement n'est pas reproduit lors de la conversion. Dans SoMachine, les variables et
blocs fonction convertis sont normaux. Ils sont donc initialisés lors de l'arrêt imprévu ou du
redémarrage normal du contrôleur. Si votre application SoMachine requiert des variables
conservées, vous devez déclarer ce mot-clé d'attribut (voir page 562) manuellement.
Conversion des tables d'animation
La gestion des tables d'animation diffère entre les applications source et cible :
SoMachine Basic / Twido permettent de définir plusieurs listes d'animation identifiées par leur
nom. Chaque liste d'animations peut contenir plusieurs entrées correspondant aux objets à
animer. Pour chaque variable, vous devez sélectionner l'option Trace.
 Dans SoMachine, 4 listes de surveillance (voir page 448) prédéfinies sont disponibles
(Surveillance 1 à Surveillance 4). Chaque liste de surveillance peut contenir des variables
multiples à animer. Une liste de surveillance unique peut contenir des variables issues de
contrôleurs différents.
Pour ces variables dont l'option Trace est sélectionnée dans SoMachine Basic / Twido,
SoMachine crée un objet de suivi. Vous pouvez visualiser ces variables dans l'éditeur de suivi
(voir page 485).

Durant le processus de conversion, les entrées des tables d'animation source sont ajoutées à la
fin de la liste Surveillance 1.
Conversion des symboles
Les symboles définis dans un projet SoMachine Basic / Twido sont automatiquement transférés
vers le projet SoMachine.
Les restrictions suivantes s'appliquent à la dénomination des symboles :
Si...
Alors…
un nom de symbole ne respecte pas les règles de nommage des
SoMachine,
le nom du symbole est modifié.
un nom de symbole correspond à un mot clé de SoMachine,
le nom du symbole est modifié.
aucune variable n'est créée pour un objet de langage,
le nom du symbole est ignoré.
un symbole n'est utilisé nulle part dans le programme d'application,
le nom du symbole peut être ignoré.
EIO0000000069 02/2018
89
Gestion des équipements
Pour obtenir la liste complète des modifications de symbole nécessaires, consultez la vue
Messages.
Conversion des compteurs rapides, compteurs très rapides (Twido : compteurs très rapides) et
générateurs d'impulsions
Les blocs fonctionnels fournis par SoMachine diffèrent de ceux fournis par SoMachine Basic /
Twido. Néanmoins, la configuration des compteurs rapides, des compteurs à haut débit et des
générateurs d'impulsions est convertie dans la mesure du possible. Les sections suivantes
présentent les restrictions applicables.
Restrictions générales
Les restrictions générales suivantes s'appliquent :
Restriction
Solution
Les entrées et sorties utilisées par les compteurs à
haut débit et les générateurs d'impulsions convertis
peuvent différer des entrées et sorties utilisées par
l'application source.
Prenez ce facteur en compte lors de la connexion du
controleur converti.
La réaffectation des entrées et des sorties est
consignée dans la vue (voir SoMachine,
Commandes de menu, Aide en ligne) Messages.
Il se peut que le contrôleur SoMachine Basic et le
Vous devez adapter votre application manuellement.
contrôleur cible sélectionné n'acceptent pas le même
nombre de compteurs et de générateurs d'impulsions.
La fonction de conversion ne convertit que les
compteurs et les générateurs d'impulsions pris en
charge par le contrôleur cible.
Contraintes de conversion des blocs fonction %FC, %HSC/%VFC, %PLS et %PWM
Pour chaque bloc fonction %FC, %HSC / %VFC, %PLS et %PWM utilisé dans l'application SoMachine
Basic / Twido, un seul programme est créé dans SoMachine. Vous pouvez améliorer cette
implémentation de base selon les besoins de votre application.
Les restrictions suivantes s'appliquent :
90
Restriction
Solution
L'accès aux paramètres du bloc fonction s'effectue
différemment dans SoMachine Basic et SoMachine.
Dans SoMachine Basic, les paramètres d'un bloc
fonction sont accessibles directement via le
programme d'application, par exemple
%HSC.P = 100.
Dans SoMachine, il faut utiliser un bloc fonction
propre à un contrôleur (par exemple
EXPERTSetParam) pour accéder à un paramètre.
Si l'application source accède aux paramètres du
bloc fonction, vous devez étendre l'application
convertie en conséquence.
EIO0000000069 02/2018
Gestion des équipements
Restriction
Solution
Vous devez adapter votre application manuellement.
Les compteurs se comportent différemment dans
SoMachine et dans SoMachine Basic/Twido lorsque
la valeur de préréglage est définie.
Dans Twido :
 Le compteur décroissant poursuit son décompte si
le zéro est atteint.
 Le compteur croissant continue son comptage si la
valeur de préréglage est atteinte.
Dans SoMachine :
 Le compteur décroissant arrête son décompte si le
zéro est atteint.
 Le compteur croissant reprend son comptage au
début si la valeur de préréglage est atteinte.
Les paramètres suivants des blocs fonction
Vous devez adapter votre application manuellement.
SoMachine Basic ne peuvent pas être convertis dans
SoMachine :
Bloc fonction %PLS :
 Paramètre de sortie D [Done]
 Paramètre R [Duty Cycle]
Bloc fonction %PWM :
 Paramètre R [Duty Cycle]
Bloc fonction %HSC :
 Paramètre de sortie U [Counting Direction]
Contraintes de conversion des blocs fonction PTO %PTO et %MC_xxxx
Pour M241 :
Les blocs fonction PTO fournis par SoMachine pour les contrôleurs M241 sont compatibles avec
les blocs fonction PTO fournis par SoMachine Basic. Les blocs fonction PTO sont convertis sans
restriction. La seule exception concerne le bloc fonction MC_MotionTask_PTO. Le MC_MotionTask_PTO n'est pas converti.
Pour HMISCU :
Les blocs fonction PTO fournis par SoMachine pour les contrôleurs HMISCU sont compatibles
avec les blocs fonction PTO fournis par SoMachine Basic. Les blocs fonction PTO ne sont pas
convertis.
Contraintes de conversion du bloc fonction Générateur de fréquence %FREQGEN
Le bloc fonction Générateur de fréquence %FREQGEN est converti sans restriction pour les
contrôleurs M241 et HMISCU.
EIO0000000069 02/2018
91
Gestion des équipements
Conversion d'un programme Grafcet
Vous pouvez écrire un programme Grafcet de manière textuelle ou graphique.
Type de Grafcet
Description
Pris en charge par
Textuel
Plusieurs éléments de programmation en
IL et LD sont disponibles pour définir,
activer et désactiver des états Grafcet.
 TwidoSoft/TwidoSuite
Permet de positionner les étapes,
transitions et branches de manière
graphique.
Uniquement SoMachine Basic V1.4 et
versions ultérieures.
Graphique
 SoMachine Basic
Conversion de Grafcet textuel
Les langages de programmation de SoMachine ne prennent pas en charge la programmation sous
Grafcet.
C'est pourquoi une application Grafcet convertie contient des éléments de langage supplémentaires qui assurent la prise en charge Grafcet.
92
Élément complémentaire
Description
Dossier Grafcet
Ce dossier contient les éléments de langage suivants, utilisés pour
la prise en charge de la machine à états Grafcet.
Structure de données
GRAFCET_STATES
Cette structure de données comporte un élément binaire pour
chaque état Grafcet autorisé.
S'il s'agit d'un état initial, l'élément est initialisé à la valeur TRUE
(FALSE dans le cas contraire).
Liste des variables globales
GrafcetVariables
Cette liste de variables globales contient les variables suivantes :
 1 variable STATES contenant 1 bit pour chaque état Grafcet.
Chaque bit représente la valeur actuelle de l'état Grafcet
correspondant (objet %Xi).
 1 variable ACTIVATE_STATES contenant 1 bit pour chaque
état Grafcet. Si le bit a la valeur TRUE, l'état Grafcet est activé
lors du cycle suivant.
 1 variable DEACTIVATE_STATES contenant 1 bit pour chaque
état Grafcet. Si le bit a la valeur TRUE, l'état Grafcet est
désactivé lors du cycle suivant.
Programme Grafcet
Ce programme met en œuvre la machine à états Grafcet. Il contient
la logique nécessaire à l'activation et à la désactivation des étapes
Grafcet.
Le programme contient les actions suivantes :
 Init initialise les étapes Grafcet à leur état initial. Il est exécuté
lorsque le programme d'application définit le bit système %S21.
 Reset restaure les étapes Grafcet avec la valeur FALSE. Il est
exécuté lorsque le programme d'application définit le bit
système %S22.
EIO0000000069 02/2018
Gestion des équipements
Les instructions Grafcet contenues dans le programme d'application sont converties comme suit :
 Le début de chaque étape Grafcet est marqué par une étiquette indiquant le nom de l'étape.
La première instruction contenue dans l'étape Grafcet vérifie si cette étape est active. Si tel n'est
pas le cas, elle passe à l'étiquette de l'étape Grafcet suivante.
 L'accès à %Xi est converti en un accès à la variable STATES.Xi.
 Une instruction d'activation Grafcet #i est convertie en une définition du bit d'activation de l'état
i et du bit de désactivation de l'état actuel.
 Une instruction de désactivation Grafcet #Di est convertie en une définition du bit de
désactivation de l'état i et du bit de désactivation de l'état actuel.
Vous pouvez étendre le programme Grafcet converti si vous prenez en compte les informations
fournies dans cette section.
Conversion de Grafcet graphique
Le Grafcet graphique est similaire au langage de programmation SFC fourni par SoMachine. C'est
pourquoi un POU Grafcet graphique est converti en programme SFC, autant que possible.
Les différences entre Grafcet graphique et SFC sont les suivantes :
Grafcet graphique
SFC
Informations complémentaires
Peut contenir un nombre arbitraire Doit avoir une seule étape initiale.
d'étapes initiales.
Si le POU Grafcet graphique a
plusieurs étapes initiales, le
convertisseur crée plusieurs
étapes initiales dans le code SFC.
Ce qui bloque la génération de
l'application convertie, sans
qu'aucune erreur ne soit détectée.
Adaptez le programme converti en
conséquence.
L'activation de plusieurs étapes
d'une branche alternative est
autorisée.
Seule une étape d'une branche
alternative peut être activée.
Vérifiez soigneusement que le
programme converti fonctionne
comme prévu.
Les transitions de sortie d'une
étape sont évaluées juste après
l'exécution de ladite étape.
Les transitions du programme SFC Vérifiez soigneusement que le
sont évaluées après l'exécution de programme converti fonctionne
toutes les étapes actives.
comme prévu.
La disposition des étapes,
transitions et branches est
relativement libre.
La disposition des étapes,
transitions et branches est
soumise à davantage de
restrictions.
EIO0000000069 02/2018
La disposition graphique est
convertie en SFC autant que
possible. Les incompatibilités
rencontrées pendant la conversion
sont affichées dans la vue
Messages.
Les actions d'étape et les sections
de transition sont totalement
converties.
Complétez le programme SFC
créé.
93
Gestion des équipements
Il est possible d'initialiser un POU Grafcet graphique en définissant le bit système %S21. Si ce bit
est défini dans le projet SoMachine Basic, le convertisseur active la variable implicite SFCInit et
l'utilise pour initialiser le programme SFC.
Conversion de modules d'extension TM2 en modules d'extension TM3
Les contrôleurs Twido n'utilisent que des modules d'extension TM2. Même si les contrôleurs M221
et M241 prennent en charge les modules TM2 et les modules TM3, il est recommandé d'utiliser
des modules TM3. Pour convertir les modules TM2 utilisés dans votre projet Twido en modules
TM3 pour le projet SoMachine, l'option Mettre à niveau les modules TM2 vers TM3 est
sélectionnée par défaut.
Les modules d'extension TM2 sont convertis en modules d'extension TM3, comme indiqué dans
le tableau ci-dessous :
94
Module d'extension TM2 source
Module d'extension TM3 cible
Informations complémentaires
TM2DDI8DT
TM3DI8
–
TM2DAI8DT
TM3DI8A
–
TM2DDO8UT
TM3DQ8U
–
TM2DDO8TT
TM3DQ8T
–
TM2DRA8RT
TM3DQ8R
–
TM2DDI16DT
TM3DI16
–
TM2DDI16DK
TM3DI16K
–
TM2DRA16RT
TM3DQ16R
–
TM2DDO16UK
TM3DQ16UK
–
TM2DDO16TK
TM3DQ16TK
–
TM2DDI32DK
TM3DI32K
–
TM2DDO32UK
TM3DQ32UK
–
TM2DDO32TK
TM3DQ32TK
–
TM2DMM8DRT
TM3DM8R
–
TM2DMM24DRF
TM3DM24R
–
TM2AMI2HT
TM3AI2H
–
TM2AMI4LT
TM3TI4
Il est possible que le comportement
du module de température converti
diffère de celui du module
d'origine. Vérifiez attentivement le
module converti.
TM2AMI8HT
TM3AI8
–
EIO0000000069 02/2018
Gestion des équipements
Module d'extension TM2 source
Module d'extension TM3 cible
Informations complémentaires
TM2ARI8HT
–
Les modules TM2 TM2ARI8HT,
TM2ARI8LRJ et TM2ARI8LT ne
sont pas convertis car il n'existe
aucun module d'extension TM3
correspondant. Vous pouvez
remplacer ce module par
deux modules TM3TI4.
TM2AMO1HT
TM3AQ2
Le module d'extension TM3 cible
offre davantage de voies d'E/S que
le module TM2 source.
TM2AVO2HT
TM2AMM3HT
–
TM3TM3
TM2ALM3LT
TM2AMI2LT
–
Il est possible que le comportement
du module de température converti
diffère de celui du module
d'origine. Vérifiez attentivement le
module converti.
TM3TI4
Le module d'extension TM3 cible
offre davantage de voies d'E/S que
le module TM2 source.
Il est possible que le comportement
du module de température converti
diffère de celui du module
d'origine. Vérifiez attentivement le
module converti.
TM2AMM6HT
TM3AM6
–
TM2ARI8LRJ
–
Les modules TM2 TM2ARI8HT,
TM2ARI8LRJ et TM2ARI8LT ne
sont pas convertis car il n'existe
aucun module d'extension TM3
correspondant. Vous pouvez
remplacer ce module par
deux modules TM3TI4.
TM2ARI8LT
–
Les modules TM2 TM2ARI8HT,
TM2ARI8LRJ et TM2ARI8LT ne
sont pas convertis car il n'existe
aucun module d'extension TM3
correspondant. Vous pouvez
remplacer ce module par
deux modules TM3TI4.
NOTE : si vous utilisez des modules d'extension TM2 et TM3 dans votre projet SoMachine, notez
leur position dans l'arborescence. Les nœuds TM3 situés sous des nœuds TM2 dans
l'arborescence sont signalés comme des erreurs de génération dans la vue Messages.
EIO0000000069 02/2018
95
Gestion des équipements
Conversion du scrutateur d'E/S Modbus Série
Vous devez vérifier les résultats du processus de conversion, à cause des disparités entre les
plates-formes de contrôleur, et plus particulièrement pour l'équipement de contrôleur connecté qui
dépend du bon fonctionnement du programme converti. Il est impératif de tester et valider
entièrement le système au niveau de la machine ou du processus, peu importe que des erreurs ou
alertes soient détectées lors de la conversion.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT



Vérifiez que le programme du contrôleur cible contient les configurations et délivre les
fonctions prévues une fois le projet converti.
Procédez au débogage, à la vérification et à la validation de la totalité des fonctionnalités du
programme converti avant sa mise en service.
Avant de convertir un programme, assurez-vous que le programme source est valide, c'est-àdire téléchargeable vers le contrôleur source.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Configuration
La configuration du scrutateur d'E/S est entièrement convertie :
Les appareils sont convertis sur l'appareil Esclave Modbus générique. Le type d'appareil source
n'est pas préservé.
 La configuration de l'appareil (requêtes d'initialisation, paramètres des voies et variable de
réinitialisation) est entièrement convertie.

Blocs fonction
Les blocs fonction qui prennent le contrôle des variateurs Altivar sur le scrutateur d'E/S Modbus
(MC_xxx_ATV) ne sont pas convertis.
Traitement des états
Les états du scrutateur d'E/S sont traités différemment dans SoMachine Basic et SoMachine. Par
conséquent, ces fonctions ne peuvent être que partiellement converties. Si votre application utilise
des informations d'état du scrutateur d'E/S, assurez-vous que la logique fonctionne encore.
Etat du scrutateur d'E/S
Informations complémentaires
Etat de l'équipement (%IWNSx)
SoMachine Basic et SoMachine fournissent des informations d'état
concernant les appareils esclaves. En revanche, les valeurs d'état sont
différentes. La logique d'état est donc partiellement convertie.
Etat des voies (%IWNSx.y)
SoMachine ne fournit pas d'informations d'état sur les voies. L'état des
voies est converti en état d'appareil.
Mots et bits système :
96
EIO0000000069 02/2018
Gestion des équipements
Etat du scrutateur d'E/S
Informations complémentaires
%S110/%S111 (réinitialisation du
scrutateur d'E/S)
Ces données ne sont pas converties.
%S113/%S114 (arrêt du scrutateur Ces données sont converties.
d'E/S)
%SW210/%SW211 (état du
scrutateur d'E/S)
Ces données ne sont pas converties.
Accès immédiat aux E/S
Les instructions READ_IMM_IN et WRITE_IMM_OUT de SoMachine Basic permettant un accès
immédiat aux voies d'E/S numériques locales ne sont pas converties.
Pour les contrôleurs M241, vous pouvez utiliser les fonctions GetImmediateFastInput et
PhysicalWriteFastOutputs fournies par la bibliothèque PLCSystem, tout en gardant à l'esprit
les différences suivantes :
Instructions READ_IMM_IN et WRITE_IMM_OUT
Fonctions GetImmediateFastInput et
(contrôleurs M221)
PhysicalWriteFastOutputs (contrôleurs M241)
Accès à toutes les entrées et sorties locales.
Accès aux entrées et sorties rapides uniquement.
WRITE_IMM_OUT écrit un seul bit (comme la fonction
de lecture).
WRITE_IMM_OUT renvoie un code d'erreur.
PhysicalWriteFastOutputs écrit les sorties
rapides en même temps.
PhysicalWriteFastOutputs ne renvoie que des
informations sur les sorties écrites.
Les codes d'erreur de READ_IMM_IN et de GetImmediateFastInput sont différents.
READ_IMM_IN met à jour l'objet d'entrée (%I0.x).
GetImmediateFastInput ne renvoie que la
valeur lue, sans mettre à jour la voie d'entrée.
NOTE : il n'existe aucune fonction équivalente pour les contrôleurs HMISCU.
Twido Interface de communication
Les fonctions de communication suivantes de Twido ne sont pas converties :
Interface AS
 CANopen
 Liaison distante

Si vous utilisez ces fonctionnalités de communication dans votre application Twido, vous devez
adapter l'application SoMachine manuellement.
Pendant la conversion, une variable est créée pour chaque objet d'E/S associé, ce qui permet de
générer l'application SoMachine. Ces variables sont collectées dans des listes globales distinctes.
Cette configuration vous permet de mieux identifier les variables à remplacer.
EIO0000000069 02/2018
97
Gestion des équipements
Erreurs détectées et alertes indiquées dans la vue Messages
Si des erreurs ou des alertes sont détectées au cours du processus de conversion, une boîte de
message s'affiche, indiquant leur nombre. Pour plus d'informations, consultez la catégorie
Conversion de projet de la vue (voir SoMachine, Commandes de menu, Aide en ligne) Messages.
Vérifiez attentivement chaque entrée pour déterminer si vous devez adapter votre application.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT



Vérifiez que le programme du contrôleur cible contient les configurations et délivre les
fonctions prévues une fois le projet converti.
Procédez au débogage, à la vérification et à la validation de la totalité des fonctionnalités du
programme converti avant sa mise en service.
Avant de convertir un programme, assurez-vous que le programme source est valide, c'est-àdire téléchargeable vers le contrôleur source.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.



Un message d'avertissement indique que le processus de conversion a effectué quelques
ajustements qui, selon toute vraisemblance, n'ont aucun impact sur les fonctions de votre
application.
Un message d'erreur indique que certaines parties de l'application ne sont pas entièrement
convertibles. Dans ce cas, vous devrez adapter l'application manuellement afin de préserver
des fonctionnalités dans l'application cible.
Si le programme applicatif exploite des fonctionnalités qui ne peuvent pas être totalement
converties, le convertisseur crée des variables pour les objets de langage non pris en charge.
Cela vous permet de compiler votre application avec succès. Toutefois, vérifiez cette fonctionnalité non prise en charge après la conversion.
Pour enregistrer les informations affichées dans la vue Messages, copiez-les dans le pressepapiers (CTRL + C) puis collez-les dans un fichier de données (CTRL + V).
98
EIO0000000069 02/2018
SoMachine
Boîtes de dialogue communes de l'éditeur d'appareil
EIO0000000069 02/2018
Chapitre 6
Boîtes de dialogue communes de l'éditeur d'appareil
Boîtes de dialogue communes de l'éditeur d'appareil
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
6.1
Configuration des équipements
100
6.2
Mappage E/S
149
EIO0000000069 02/2018
99
Boîtes de dialogue communes de l'éditeur d'appareil
Sous-chapitre 6.1
Configuration des équipements
Configuration des équipements
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
100
Page
Informations générales sur les éditeurs d'appareil
101
Sélection du contrôleur
103
Paramètres de communication
119
Configuration
124
Applications
125
Fichiers
127
Journal
129
Paramètres API
131
Utilisateurs et groupes
134
Relevé des tâches
147
Etat
148
Informations
148
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Informations générales sur les éditeurs d'appareil
Présentation
L'éditeur d'appareil contient les paramètres qui permettent de configurer un équipement, qui est
géré dans l'arborescence Equipements.
Pour ouvrir l'éditeur d'appareil pour un équipement spécifique, procédez comme suit :
Double-cliquez sur le nœud de l'équipement dans l'arborescence Equipements ou
 Sélectionnez l'équipement dans l'arborescence Equipements, puis exécutez la commande
Modifier l'objet via le menu contextuel ou le menu Projet.

La boîte de dialogue Outils → Options → Editeur d'appareil permet de masquer les affichages de
configuration (voir page 124) d'équipement génériques.
Ce chapitre décrit les principales boîtes de dialogue de l'éditeur d'appareil. Les boîtes de dialogue
de configuration de bus sont décrites séparément.
Principales boîtes de dialogue de l'éditeur d'appareil
Le titre de la boîte de dialogue principale est constitué du nom de l'équipement, par exemple,
MonApi.
Selon le type d'équipement, l'éditeur d'appareil peut présenter les onglets suivants :
Onglet
Description
Sélection du contrôleur (voir page 103) Configuration de la connexion entre le système de programmation
et un appareil programmable (contrôleur).
Il s'agit de l'onglet par défaut de SoMachine V4.0 et les versions
ultérieures. SoMachine V3.1 et les versions antérieures utilisent
l'onglet Paramètres de communication par défaut.
Paramètres de communication
Configuration de la connexion entre le système de programmation
et un appareil programmable (contrôleur).
Il s'agit de l'onglet par défaut de SoMachine V3.1 et des versions
antérieures. SoMachine V4.0 et les versions ultérieures utilisent
l'onglet Sélection du contrôleur par défaut.
Configuration (voir page 124)
Affichage ou configuration des paramètres de l'équipement.
Applications (voir page 125)
Liste des applications en cours d'exécution sur le contrôleur. Voir la
description au chapitre (voir page 159) Programme.
(voir page 119)
Fichiers (voir page 127)
Configuration d'un transfert de fichier entre l'hôte et le contrôleur.
Journal (voir page 129)
Affichage du fichier journal du contrôleur.
Paramètres API (voir page 131)
Configuration des éléments suivants :
 application notifiée pour le traitement des E/S ;
 comportement des E/S à l'arrêt ;
 options de cycle de bus.
Utilisateurs et groupes (voir page 928) Gestion des utilisateurs concernant l'accès à l'équipement en cours
d'exécution.
EIO0000000069 02/2018
101
Boîtes de dialogue communes de l'éditeur d'appareil
102
Onglet
Description
Droits d'accès (voir page 932)
Configuration des droits d'accès sur les objets et fichiers
d'exécution pour les groupes d'utilisateurs spécifiques.
Relevé des tâches (voir page 147)
Affichage des entrées et sorties attribuées la tâche définie (utilisé
pour le dépannage)
Etat (voir page 148)
Messages d'état et de diagnostic concernant l'équipement.
Informations (voir page 148)
Informations générales sur l'équipement (par exemple : nom,
fournisseur, version)
Mappage E/S (voir page 149)
Mappage des canaux d'entrée et de sortie d'un périphérique d'E/S
sur les variables (application) du projet.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Sélection du contrôleur
Présentation
L'affichage Sélection du contrôleur de l'éditeur d'appareil donne accès au service Network Device
Identification. Il permet de rechercher des équipements sur le réseau Ethernet (tels que
contrôleurs, équipements HMI) et de les afficher dans une liste. Dans cet affichage, vous pouvez
configurer les paramètres de communication entre les équipements (appelés contrôleurs dans ce
chapitre) et le système de programmation.
La liste de contrôleurs contient les contrôleurs du réseau qui ont répondu à la requête de
SoMachine. Il peut arriver que le contrôleur voulu ne figure pas dans cette liste. Plusieurs raisons
peuvent expliquer cela. Pour connaître ces raisons et trouver des solutions appropriées, reportezvous au chapitre Accès aux contrôleurs - Dépannage et FAQ (voir page 841).
L'affichage Sélection du contrôleur n'est visible que si la communication entre le contrôleur et le
système de programmation est établie à l'aide de l'adresse IP. Il s'agit du paramètre par défaut de
SoMachine V4.0 et des versions ultérieures. Vous pouvez opter pour l'établissement d'une
communication à partir d'une adresse IP ou d'un chemin actif dans la boîte de dialogue Paramètres
de projet → Paramètres de communication. Si l'option Numérotation via "Adresse IP" est
sélectionnée, l'affichage Sélection du contrôleur apparaît dans l'éditeur d'appareil. Dans le cas
contraire, c'est l'affichage Paramètres de communication qui apparaît.
Affichage Sélection du contrôleur de l'éditeur d'appareil
EIO0000000069 02/2018
103
Boîtes de dialogue communes de l'éditeur d'appareil
L'affichage Sélection du contrôleur présente les éléments suivants :
 boutons de la barre d'outils ;
 liste fournissant des informations sur les contrôleurs disponibles ;
 option, liste et zone de texte au bas de l'affichage.
Description des boutons de la barre d'outils
La barre d'outils propose les boutons suivants :
Bouton
Description
Optique
Cliquez sur ce bouton pour permettre au contrôleur sélectionné
d'indiquer la présence d'un signal optique par le clignotement rapide
d'une LED de contrôle. Cela peut vous aider à identifier le contrôleur
en question si un grand nombre de contrôleurs est utilisé.
La fonction s'arrête en cliquant une deuxième fois ou
automatiquement au bout de 30 secondes environ.
NOTE : Le signal optique est émis uniquement par les contrôleurs
qui prennent en charge cette fonction.
Optique et acoustique
Cliquez sur ce bouton pour permettre au contrôleur sélectionné
d'indiquer la présence d'un signal optique et acoustique, qui est
signalé par un bip sonore et le clignotement rapide d'une LED de
contrôle. Cela peut vous aider à identifier le contrôleur en question si
un grand nombre de contrôleurs est utilisé.
La fonction s'arrête en cliquant une deuxième fois ou
automatiquement au bout de 30 secondes environ.
NOTE : Les signaux optique et acoustique sont émis uniquement
par les contrôleurs qui prennent en charge cette fonction.
Mise à jour
Cliquez sur ce bouton pour actualiser la liste de contrôleurs. Une
demande est envoyée aux contrôleurs du réseau. Les contrôleurs qui
répondent à cette demande sont répertoriés avec les valeurs
actuelles.
Les entrées de contrôleurs existantes sont actualisées à chaque
nouvelle demande.
Les contrôleurs qui figurent déjà dans la liste, mais qui ne répondent
pas à une nouvelle demande ne sont pas supprimés. Ils sont
marqués comme étant inactifs par une croix rouge, qui est ajoutée
sur leur icône.
Le bouton Mise à jour correspond à la commande Actualiser la liste
proposée dans le menu contextuel lorsque vous cliquez avec le
bouton droit de la souris sur un contrôleur de la liste.
Pour actualiser les informations d'un contrôleur sélectionné, le menu
contextuel propose la commande Actualiser ce contrôleur. Cette
commande demande des informations plus détaillées auprès du
contrôleur sélectionné.
NOTE : la commande Actualiser ce contrôleur peut également
actualiser les informations des autres contrôleurs.
104
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Bouton
Description
Supprimer tous les contrôleurs
inactifs de la liste.
Les contrôleurs qui ne répondent pas à une analyse de réseau sont
marqués comme étant inactifs dans la liste. Cela est indiqué par la
présence d'une croix rouge sur leur icône. Cliquez sur ce bouton pour
supprimer simultanément de la liste tous les contrôleurs marqués
comme étant inactifs.
NOTE : Un contrôleur peut être marqué comme étant inactif alors
qu'il ne l'est pas.
Le menu contextuel qui s'ouvre lorsque vous cliquez avec le bouton
droit de la souris sur un contrôleur de la liste propose deux autres
commandes de suppression de contrôleurs :
 La commande Supprimer le contrôleur sélectionné de la liste
permet de supprimer uniquement le contrôleur sélectionné dans
la liste.
 La commande Supprimer tous les contrôleurs de la liste permet
de supprimer simultanément tous les contrôleurs de la liste.
Nouveau favori... et Favori 0
Vous pouvez utiliser Favoris pour ajuster la sélection de contrôleurs
en fonction de vos besoins personnels. Cela peut vous aider à suivre
un grand nombre de contrôleurs sur le réseau.
Un favori décrit un ensemble de contrôleurs associés à un
identificateur unique.
Cliquez sur un bouton de favori (tel que Favori 0) pour le sélectionner
ou le désélectionner. Si vous n'avez pas sélectionné de favori, tous
les contrôleurs détectés sont visibles.
Vous pouvez également accéder aux Favoris via le menu contextuel.
Il s'ouvre après avoir effectué un clic droit sur un contrôleur de la liste.
Placez le curseur sur un bouton de favori dans la barre d'outils pour
afficher les contrôleurs associés sous forme d'info-bulle
Liste de contrôleurs
La liste de contrôleurs située au centre de l'affichage Sélection du contrôleur de l'éditeur d'appareil
recense les contrôleurs qui ont répondu à l'analyse de réseau Elle fournit dans plusieurs colonnes
des informations sur chaque contrôleur. Vous pouvez adapter l'affichage des colonnes de la liste
de contrôleurs à vos propres besoins.
EIO0000000069 02/2018
105
Boîtes de dialogue communes de l'éditeur d'appareil
Pour cela, cliquez avec le bouton droit de la souris sur l'en-tête d'une colonne pour ouvrir la boîte
de dialogue Traiter les colonnes.
Vous pouvez créer une disposition personnalisée de ce tableau. Cliquez sur Nouveau, puis
attribuez un nom à votre disposition. Vous pouvez faire passer des colonnes de la liste Colonnes
possibles dans la liste Colonnes actuelles (et inversement) en cliquant sur les flèches horizontales.
Pour modifier l'ordre des colonnes de la liste Colonnes actuelles, cliquez sur les flèches Haut et
Bas.
106
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Configuration des paramètres de communication
Pour définir les paramètres de communication entre le système de programmation et un
contrôleur, procédez comme suit :
Étape
Action
1
Sélectionnez le contrôleur dans la liste de contrôleurs.
2
Cliquez avec le bouton droit sur l'entrée du contrôleur, puis exécutez la commande Traiter les
paramètres de communication dans le menu contextuel.
Résultat : la boîte de dialogue Traiter les paramètres de communication s'ouvre avec les
paramètres actuels du contrôleur.
NOTE : La plupart des contrôleurs fournissent un paramètre (tel que RemoteAccess) qui
permet d'empêcher la modification des paramètres de communication du contrôleur.
EIO0000000069 02/2018
107
Boîtes de dialogue communes de l'éditeur d'appareil
Étape
Action
3
Configurez les paramètres de communication :
 Mode de démarrage
 FIXE : une adresse IP fixe est utilisée en fonction des valeurs entrées dans les
paramètres ci-après (Adresse IP, Masque de sous-réseau, Passerelle).
 BOOTP : l'adresse IP est reçue dynamiquement par BOOTP (Bootstrap Protocol). Les
valeurs ci-dessous sont ignorées.
 DHCP : l'adresse IP est reçue dynamiquement par DHCP (Dynamic Host
Configuration Protocol). Les valeurs ci-dessous sont ignorées.
NOTE : Tous les appareils ne prennent pas en charge BOOTP et/ou DHCP.
 Adresse IP
Lorsque vous configurez des adresses IP, consultez l'avertissement ci-dessous.
Cette zone de texte contient l'adresse IP du contrôleur. Il s'agit d'une adresse unique
constituée de quatre nombres situés dans la plage 0-255 et séparés par des points.
L'adresse IP doit être unique dans ce (sous-)réseau.
 Masque de sous-réseau
Le masque de sous-réseau indique le segment de réseau auquel appartient le contrôleur.
Il s'agit d'une adresse constituée de quatre nombres situés dans la plage 0-255 séparés
par des points. En règle générale, seules les valeurs 0 et 255 sont utilisées pour les
numéros de masque de sous-réseau standard. Toutefois, d'autres valeurs numériques
sont possibles. La valeur du masque de sous-réseau est généralement identique pour
tous les contrôleurs du réseau.
 Passerelle
L'adresse de passerelle correspond à l'adresse d'un routeur IP local situé sur le même
réseau que le contrôleur. Le routeur IP transmet les données à des destinations situées
en dehors du réseau local. Il s'agit d'une adresse constituée de quatre nombres situés
dans la plage 0-255 séparés par des points. La valeur de la passerelle est généralement
identique pour tous les contrôleurs du réseau.
 Pour enregistrer les paramètres de communication dans le contrôleur, même s'il est
redémarré, activez l'option Enregistrer les paramètres de manière permanente.
4
Cliquez sur OK pour transférer les paramètres au contrôleur.
Gérez les adresses IP avec soin, car chaque équipement du réseau requiert une adresse unique.
Si plusieurs équipements ont la même adresse IP, le réseau et le matériel associé risquent de se
comporter de manière imprévisible.
108
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT





Vérifiez que tous les équipements ont une adresse unique.
Demandez votre adresse IP auprès de l'administrateur système.
Vérifiez que l'adresse IP de l'équipement est unique avant de mettre le système en service.
N'attribuez pas la même adresse IP à d'autres équipements du réseau.
Après avoir cloné une application comprenant des communications Ethernet, mettez à jour
l'adresse IP pour qu'elle soit unique.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Gestion des favoris
Pour gérer les favoris de la liste de contrôleurs, procédez comme suit :
Étape
Action
1
Sélectionnez le contrôleur dans la liste de contrôleurs.
2
Cliquez avec le bouton droit sur le contrôleur, puis sélectionnez l'une des commandes
suivantes :
 Nouveau favori pour créer un nouveau groupe de favoris.
 Favori n pour effectuer l'une des opérations suivantes :
 ajouter le contrôleur sélectionné à cette liste de favoris ;
 supprimer le contrôleur sélectionné de cette liste de favoris ;
 supprimer tous les contrôleurs de cette liste de favoris ;
 sélectionner un favori ;
 renommer un favori ;
 supprimer un favori.
Option Sécurisation du mode en ligne
L'option Sécurisation du mode en ligne entraîne SoMachine l'affichage d'un message demandant
de confirmer la sélection de l'une des commandes en ligne suivantes : Forcer les valeurs,
Ouverture de session, Téléchargement multiple, Release force list, Single cycle, Démarrer,
Arrêter, Ecrire les valeurs. Pour désactiver la sécurisation du mode en ligne et supprimer
l'affichage de ce message, décochez cette option.
EIO0000000069 02/2018
109
Boîtes de dialogue communes de l'éditeur d'appareil
Définition de noms d'équipements uniquesNoms de nœuds
Le terme nom de nœud est utilisé comme synonyme du terme nom d'équipement (ou d'appareil).
Sachant que les noms de nœuds servent également à identifier un contrôleur à l'issue d'une
analyse de réseau, il convient de les gérer avec le même soin que les adresses IP et de s'assurer
que chaque nom de nœud est unique dans votre réseau. Si plusieurs équipements possèdent le
même nom de nœud, le réseau et l'équipement associé risquent de fonctionner de manière
imprévisible.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT





Veillez à ce que tous les équipements aient un nom de nœud unique.
Vérifiez que le nom de nœud de l'équipement est unique avant de mettre le système en
service.
N'attribuez pas le même nom de nœud à d'autres équipements du réseau.
Après avoir cloné une application comprenant des communications Ethernet, mettez à jour le
nom de nœud pour qu'il soit unique.
Créez un nom de nœud unique pour chaque équipement qui ne le crée pas automatiquement,
tel que les contrôleurs IHM XBT.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
La procédure de création automatique du nom de nœud (nom d'équipement) peut varier selon le
type de contrôleur. Pour créer un nom unique, certains contrôleurs intègrent leur adresse IP,
d'autres utilisent l'adresse MAC de l'adaptateur Ethernet. Dans ce cas, vous n'avez pas besoin de
modifier le nom.
D'autres équipements, tels que les contrôleurs IHM XBT, ne créent pas automatiquement un nom
d'équipement unique. Dans ce cas, attribuez un nom d'équipement unique (nom de nœud) comme
suit :
Étape
Action
1
Cliquez avec le bouton droit sur le contrôleur dans la liste, puis exécutez la commande
Modifier le nom de l'appareil dans le menu contextuel.
Résultat : la boîte de dialogue Modifier le nom de l'appareil s'ouvre.
2
Dans la boîte de dialogue Modifier le nom de l'appareil, entrez un nom d'équipement unique
dans la zone de texte Nouveau.
3
Cliquez sur OK pour confirmer.
Résultat : le nom d'appareil que vous avez entré est affecté au contrôleur et s'affiche dans la
colonne Nom du nœud de la liste.
NOTE : Nom d'appareil et nom de nœud sont synonymes.
110
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Définition du mode de connexion
La liste Mode de connexion située dans la partie inférieure gauche de l'affichage Sélection du
contrôleur permet de sélectionner le format de l'adresse de connexion à entrer dans le champ
Adresse.
Les formats pris en charge sont les suivants :
Automatique (voir page 111)
 Nom du nœud (voir page 112)
 Adresse IP (voir page 112)
 Nom du nœud via NAT (TCP distant) (voir page 112) (NAT = Network Address Translation)
 Adresse IP via NAT (TCP distant) (voir page 113)
 Nom du nœud via la passerelle (voir page 114)
 Adresse IP via la passerelle (voir page 115)
 Nom du nœud via MODEM (voir page 117)

NOTE : Après la modification du mode de connexion, il peut être nécessaire d'effectuer deux fois
la procédure de connexion pour accéder au contrôleur sélectionné.
Mode de connexion Automatique
Si vous sélectionnez l'option Automatique dans la liste Mode de connexion, vous pouvez entrer le
nom du nœud, l'adresse IP ou l'URL (Uniform Resource Locator) de connexion pour spécifier
l'adresse.
NOTE : N'utilisez pas d'espace au début ou à la fin de l'adresse.
Si vous avez sélectionné un autre mode de connexion et que vous avez spécifié une adresse pour
ce mode, cette adresse reste disponible dans la zone de texte Adresse si vous passez au mode
de connexion → Automatique.
Exemple :
Mode de connexion → Nom du nœud via NAT (TCP distant)sélectionné et adresse et nom du
nœud spécifiés
Si vous passez au mode de connexion → Automatique, les informations sont converties en URL,
qui commence par le préfixe enodename3://
Si une adresse IP a été entrée pour le mode de connexion (par exemple, si le mode de connexion
→ Adresse IP a été sélectionné), les informations sont converties en URL, qui commence par le
préfixe etcp3://. Par exemple, etcp3://<IpAddress>.
EIO0000000069 02/2018
111
Boîtes de dialogue communes de l'éditeur d'appareil
Si un nom de nœud a été entrée pour le mode de connexion (par exemple, si le mode de connexion
→ Nom du nœud a été sélectionné), les informations sont converties en URL, qui commence par
le préfixe enodename3://. Par exemple, enodename3://<Nodename>.
Mode de connexion → Nom du nœud
Si vous sélectionnez l'option Nom du nœud dans la liste Mode de connexion, vous pouvez entrer
le nom de nœud d'un contrôleur pour spécifier l'adresse. La zone de texte est remplie automatiquement si vous double-cliquez sur un contrôleur dans la liste de contrôleurs.
Exemple : Nom du nœud :MyM238 (10.128.158.106)
Si le contrôleur sélectionné n'indique pas de nom de nœud, le mode de connexion passe automatiquement à Adresse IP, et l'adresse IP de la liste est entrée dans la zone de texte Adresse.
NOTE : N'utilisez pas d'espace au début ou à la fin de l'adresse.
N'utilisez pas de virgule (,) dans la zone de texte Adresse.
Mode de connexion → Adresse IP
Si vous sélectionnez l'option Adresse IP dans la liste Mode de connexion, vous pouvez entrer
l'adresse IP d'un contrôleur pour spécifier l'adresse. La zone de texte est remplie automatiquement
si vous double-cliquez sur un contrôleur dans la liste de contrôleurs.
Exemple : Adresse IP : 190.201.100.100
Si le contrôleur sélectionné n'indique pas d'adresse IP, le mode de connexion passe automatiquement à Nom du nœud, et le nom de nœud de la liste est entré dans la zone de texte Adresse.
NOTE : Entrez l'adresse IP d'après le format <Number>.<Number>.<Number>.<Number>
Mode de connexion → Nom du nœud via NAT (TCP distant)
Si vous sélectionnez l'option Nom du nœud via NAT (TCP distant) dans la liste Mode de
connexion, vous pouvez spécifier l'adresse d'un contrôleur qui réside derrière un routeur NAT dans
le réseau. Entrez le nom de nœud du contrôleur, ainsi que l'adresse IP ou le nom d'hôte et le port
du routeur NAT.
1
2
3
112
PC / IHM
Routeur NAT
Equipement cible
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Exemple : Adresse/port NAT : 10.128.158.1061105Nom du nœud de la
cible :MyM238 (10.128.158.106)
NOTE : Entrez une adresse IP valide (format <Number>.<Number>.<Number>.<Number>) ou
un nom d'hôte valide pour l'adresse NAT.
Entrez le port du routeur NAT à utiliser. A défaut, le port par défaut 1105 est utilisé.
N'utilisez pas d'espaces au début ou à la fin et n'utilisez pas de virgules dans la zone de texte Nom
du nœud de la cible.
Les informations que vous entrez sont interprétées comme étant une URL qui crée un pont TCP
distant (à l'aide d'un pilote de bloc TCP) et qui se connecte en recherchant sur la passerelle locale
un contrôleur avec le nom de nœud donné.
NOTE : Le routeur NAT peut se trouver sur le contrôleur cible proprement dit. Vous pouvez l'utiliser
pour créer un pont TCP sur le contrôleur lui-même.
Mode de connexion → Adresse IP via NAT (TCP distant)
Si vous sélectionnez l'option Adresse IP via NAT (TCP distant) (NAT = Network Address
Translation) dans la liste Mode de connexion, vous pouvez spécifier l'adresse d'un contrôleur qui
réside derrière un routeur NAT dans le réseau. Entrez l'adresse IP du contrôleur, ainsi que
l'adresse IP ou le nom d'hôte et le port du routeur NAT.
1
2
3
PC / IHM
Routeur NAT
Equipement cible
Exemple : Adresse/port NAT :10.128.154.2061217Adresse IP de la cible :192.168.1.55
NOTE : Entrez une adresse IP valide (format <Number>.<Number>.<Number>.<Number>) ou
un nom d'hôte valide pour l'adresse NAT.
Entrez le port du routeur NAT à utiliser. A défaut, le port de la passerelle SoMachine par défaut
1217 est utilisé.
Entrez une adresse IP valide (format <Number>.<Number>.<Number>.<Number>) pour
l'adresse IP de la cible.
Les informations que vous entrez sont interprétées comme étant une URL qui crée un pont TCP
distant (à l'aide d'un pilote de bloc TCP) et qui se connecte en recherchant sur la passerelle locale
un contrôleur avec le nom de nœud donné. L'adresse IP est recherchée dans le nom du nœud
(MyController (10.128.154.207)) ou en appelant un service sur chaque équipement
analysé de la passerelle.
EIO0000000069 02/2018
113
Boîtes de dialogue communes de l'éditeur d'appareil
NOTE : Le routeur NAT peut se trouver sur le contrôleur cible proprement dit. Vous pouvez l'utiliser
pour créer un pont TCP sur un contrôleur.
Mode de connexion → Nom du nœud via la passerelle
Si vous sélectionnez l'option Nom du nœud via la passerelle dans la liste Mode de connexion, vous
pouvez spécifier l'adresse d'un contrôleur qui réside derrière ou à proximité d'un routeur de
passerelle SoMachine dans le réseau. Entrez le nom de nœud du contrôleur, ainsi que l'adresse
IP ou le nom d'hôte et le port du routeur de la passerelle SoMachine.
1
2
3
PC / IHM
PC / IHM / équipements avec passerelle SoMachine installée
Equipement cible
Exemple : Adresse/port de la pass. : 10.128.156.281217Nom du nœud de la cible :MyM238
NOTE : Entrez une adresse IP valide (format <Number>.<Number>.<Number>.<Number>) ou
un nom d'hôte valide pour l'adresse/port de la pass..
Entrez le port du routeur de la passerelle à utiliser. A défaut, le port de la passerelle SoMachine
par défaut 1217 est utilisé.
N'utilisez pas d'espaces au début ou à la fin et n'utilisez pas de virgules dans la zone de texte Nom
du nœud de la cible.
Les informations que vous entrez sont interprétées comme étant une URL. Une analyse est lancée
sur la passerelle pour rechercher un appareil correspondant au nom de nœud donné, qui est
directement connecté à cette passerelle. Dans la topologie de la passerelle SoMachine,
« directement connecté » signifie qu'il s'agit du nœud racine proprement dit ou d'un nœud enfant
du nœud racine.
NOTE : La passerelle SoMachine peut être située sur le contrôleur cible, le PC de destination ou
le PC local, ce qui permet la connexion à un appareil sans nom de nœud unique mais situé dans
un sous-réseau derrière un réseau SoMachine.
114
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Le schéma montre un exemple qui permet l'établissement d'une connexion entre le PCI / IMH et
le contrôleur cible 3 (élément 4 dans le schéma) en utilisant l'adresse du tronçon PC2 (élément 5
dans le schéma) sur lequel la passerelle SoMachine doit être installée.
1
2
3
4
5
6
7
8
Tronçon PC 1
Contrôleur cible 1 : MonNomdeNœudNonUnique
Contrôleur cible 2 : MonNomdeNœudNonUnique
Contrôleur cible 3 : MonNomdeNœudNonUnique
Tronçon PC 2
PC / IHM
Routeur
Ethernet
Mode de connexion → Adresse IP via la passerelle
Si vous sélectionnez l'option Adresse IP via la passerelle dans la liste Mode de connexion, vous
pouvez spécifier l'adresse d'un contrôleur qui réside derrière ou à proximité d'un routeur de
passerelle SoMachine dans le réseau. Entrez l'adresse IP du contrôleur, ainsi que l'adresse IP ou
le nom d'hôte et le port du routeur de passerelle SoMachine.
EIO0000000069 02/2018
115
Boîtes de dialogue communes de l'éditeur d'appareil
1
2
3
PC / IHM
PC / IHM / équipements avec passerelle SoMachine installée
Equipement cible
Exemple : Adresse/port de la pass. :10.128.156.281217Adresse IP de la
cible :10.128.156.222
NOTE : Entrez une adresse IP valide (format <Number>.<Number>.<Number>.<Number>) ou
un nom d'hôte valide pour l'adresse/port de la pass..
Entrez le port du routeur de la passerelle à utiliser. A défaut, le port de la passerelle SoMachine
par défaut 1217 est utilisé.
Entrez une adresse IP valide (format <Number>.<Number>.<Number>.<Number>) pour
l'adresse IP de la cible.
Les informations que vous entrez sont interprétées comme étant une URL. Une analyse de la
passerelle est lancée pour rechercher un équipement associé à l'adresse IP donnée. L'adresse IP
est recherchée dans le nom du nœud (MyController (10.128.154.207)) ou en appelant un
service sur chaque équipement analysé de la passerelle.
NOTE : La passerelle SoMachine peut se trouver sur le contrôleur cible, le PC de destination ou
le PC local lui-même. Autrement dit, il est possible de se connecter à un équipement qui ne
possède pas de nom de nœud unique, mais qui réside dans un sous-réseau derrière un réseau
SoMachine.
116
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Le schéma montre un exemple qui permet l'établissement d'une connexion entre le tronçon PC2
(élément 5 dans le schéma) sur lequel une passerelle SoMachine doit être installée et le contrôle
cible 3 (élément 4 dans le schéma).
1
2
3
4
5
6
7
8
Tronçon PC 1
Contrôleur cible 1 : 10.128.156.20
Contrôleur cible 2 : 10.128.156.20
Contrôleur cible 3 : 10.128.156.20
Tronçon PC 2
PC / IHM
Routeur
Ethernet
Mode de connexion → Nom du nœud via MODEM
Si vous sélectionnez l'option Nom du nœud via MODEM dans la liste Mode de connexion, vous
pouvez spécifier un contrôleur qui réside derrière une ligne modem.
EIO0000000069 02/2018
117
Boîtes de dialogue communes de l'éditeur d'appareil
1
2
3
4
5
PC / IHM
PC / IHM / MODEM
Modem cible
Equipement cible
Ligne téléphonique
Pour établir une connexion avec le modem, cliquez sur le bouton → Connecter. Dans la boîte de
dialogue Modem Configuration, entrez le numéro de téléphone du modem cible et configurez les
paramètres de communication. Cliquez sur OK pour confirmer et établir une connexion avec le
modem.
L'arrêt et le redémarrage de la passerelle SoMachine met fin à toute connexion de la passerelle
locale. SoMachine affiche un message qui doit être confirmé pour lancer le processus de
redémarrage.
Après que la connexion au modem a été établie, le bouton MODEM change, passant de Connecter
à Déconnecter. La liste de contrôleurs est effacée et actualisée à la suite de la recherche de
contrôleurs connectés sur la connexion modem. Vous pouvez double-cliquer sur un élément de la
liste de contrôleurs ou entrer un nom de nœud dans la zone de texte Nom du nœud de la cible
pour vous connecter à un contrôleur spécifique.
Cliquez sur le bouton MODEM → Déconnecter pour mettre fin à la connexion modem et pour
arrêter et redémarrer la passerelle SoMachine. La liste de contrôleurs est effacée et actualisée à
la suite de l'analyse du réseau Ethernet.
118
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Paramètres de communication
Présentation
L'affichage Paramètres de communication de l'éditeur d'appareil sert à configurer les paramètres
de communication entre l'équipement et le système de programmation.
Il n'est visible que si la communication entre l'équipement et le système de programmation est
établie en utilisant le chemin actif. Il s'agit du paramètre par défaut de SoMachine V3.1 et des
versions antérieures. Vous pouvez choisir d'établir une communication à partir du chemin actif ou
d'une adresse IP dans la boîte de dialogue Paramètres de projet → Paramètres de
communication. Si l'option Numérotation via "Adresse IP" est sélectionnée, l'affichage Sélection
du contrôleur figure dans l'éditeur d'appareil à la place de l'affichage Paramètres de
communication. Il s'agit du paramètre par défaut de SoMachine V4.0 et des versions ultérieures.
Affichage Paramètres de communication de l'éditeur d'appareil
EIO0000000069 02/2018
119
Boîtes de dialogue communes de l'éditeur d'appareil
Cet affichage se divise en deux parties :
 La partie gauche présente les canaux de passerelle actuellement configurés dans une
arborescence.
 La partie droite présente les données et les informations correspondantes.
Description de l'arborescence
Lorsque vous créez le premier projet sur votre système local, la passerelle locale est déjà
disponible dans l'arborescence sous forme de nœud. Cette passerelle démarre automatiquement
en même temps que le système.
Les paramètres de cette passerelle figurent dans la partie droite de la fenêtre.
Exemple :
Nom du nœud : Passerelle-1
Port : 1217
Adresse IP : 127.0.0.1
Pilote : TCP/IP
La présence d'une puce de couleur verte avant le nœud de la passerelle indique que celle-ci est
en cours d'exécution ; sinon, la puce est de couleur rouge. La puce est de couleur grise si la
passerelle n'a pas encore été contactée (certains protocoles de communication n'autorisent pas
l'interrogation de la passerelle, ce qui explique que l'état n'est pas affiché).
En dessous du nœud Passerelle (ouvert/fermé à l'aide du signe +/-) figurent en retrait les entrées
de tous les équipements accessibles via cette passerelle. Les entrées d'équipement sont
précédées d'un symbole
. Les entrées dont l'ID du système cible est différent de celui de
l'équipement actuellement configuré dans le projet sont reconnaissables à leur police grise. Pour
obtenir une liste à jour des équipements disponibles, utilisez le bouton Parcourir le réseau.
Les nœuds d'équipement se composent d'un symbole suivi du nom et de l'adresse du nœud. Dans
la partie droite de la fenêtre figurent leurs éléments respectifs, à savoir : ID du système cible, Nom
du système cible, Type de système cible, Fabricant de système cible et Version de système cible.
Dans le champ Sélectionner le chemin réseau vers automate programmable, le canal de
passerelle est spécifié automatiquement en sélectionnant le canal dans l'arborescence.
120
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Fonction de filtrage et de tri
Vous pouvez filtrer et trier les nœuds de passerelle et d'équipement affichés dans l'arborescence
à l'aide des zones de sélection figurant dans la partie droite de l'affichage :


Filtre : permet de limiter les entrées de l'arborescence aux équipements dont l'ID du système
cible correspond à celui de l'équipement actuellement configuré dans le projet.
Ordre de tri : permet de trier les entrées de l'arborescence en fonction du nom ou de l'adresse
de nœud par ordre alphabétique ou croissant.
Description des boutons/commandes
Pour modifier la configuration de communication, le menu contextuel propose les boutons ou
commandes suivants :
Bouton/commande
Description
Définir le chemin actif
Cette commande permet de définir le canal de
communication sélectionné comme chemin d'accès
actif au contrôleur. Consultez la description de la
commande Définir le chemin actif. Un double-clic sur
le nœud dans l'arborescence produit le même effet.
Ajouter une passerelle...
Cette commande ouvre la boîte de dialogue
Passerelle dans laquelle vous pouvez définir une
passerelle à ajouter à la configuration actuelle.
Consultez la description de la commande Ajouter
une passerelle.
Ajouter un appareil...
Cette commande ouvre la boîte de dialogue Ajouter
un appareil dans laquelle vous pouvez définir
manuellement un appareil à ajouter à l'entrée de
passerelle sélectionnée (envisagez d'utiliser la
fonctionnalitéParcourir le réseau).
Consultez la description de la commande Ajouter un
appareil.
Modifier passerelle...
Cette commande ouvre la boîte de dialogue
Passerelle pour modifier les paramètres de la
passerelle sélectionnée.
Consultez la description de la commande Modifier
passerelle.
Supprimer l'appareil sélectionné
Cette commande permet de supprimer l'équipement
sélectionné dans l'arborescence.
Consultez la description de la commande Supprimer
l'appareil sélectionné.
EIO0000000069 02/2018
121
Boîtes de dialogue communes de l'éditeur d'appareil
Bouton/commande
Description
Recherche d'appareil via l'adresse
Cette commande permet de rechercher sur le réseau
les équipements dont l'adresse est spécifiée ici dans
l'arborescence de configuration. Ceux qui sont
trouvés sont représentés dans la passerelle avec
l'adresse de nœud spécifiée, ainsi que leur nom.
L'analyse porte sur les équipements situés en
dessous de cette passerelle dans l'arborescence
dont une entrée est actuellement sélectionnée.
Consultez la description de la commande Recherche
d'appareil via l'adresse.
Recherche d'appareil via le nom
Cette commande permet de rechercher sur le réseau
les équipements dont le nom est spécifié ici dans
l'arborescence de configuration (recherche sensible
à la casse). Ceux qui sont trouvés sont représentés
dans la passerelle avec le nom spécifié, ainsi que
leur adresse de nœud unique. L'analyse porte sur les
équipements situés en dessous de cette passerelle
dans l'arborescence dont une entrée est
actuellement sélectionnée.
Consultez la description de la commande Recherche
d'appareil via le nom.
Recherche d'appareil via l'adresse IP Cette commande permet de rechercher sur le réseau
les équipements dont l'adresse IP est spécifiée ici
dans l'arborescence de configuration. Ceux qui sont
trouvés sont représentés dans la passerelle avec
l'adresse de nœud spécifiée, ainsi que leur nom.
L'analyse porte sur les équipements situés en
dessous de cette passerelle dans l'arborescence
dont une entrée est actuellement sélectionnée.
Consultez la description de la commande Recherche
d'appareil via l'adresse IP.
122
Relier à la passerelle locale
Cette commande ouvre une boîte de dialogue qui
permet de configurer une passerelle locale et offre
ainsi une alternative à la modification manuelle du
fichier Gateway.cfg.
Consultez la description de la commande Relier à la
passerelle locale.
Parcourir le réseau
Cette commande permet de rechercher les appareils
disponibles sur le réseau local. L'arborescence de
configuration de la passerelle en question est
actualisée en conséquence.
Consultez la description de la commande Parcourir
le réseau.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Description des options
Deux options sont disponibles en dessous de l'arborescence :
Option
Description
Ne pas enregistrer le chemin réseau
dans le projet
Activez cette option si la définition actuelle du chemin
réseau ne doit pas être stockée dans le projet, mais
dans les paramètres d'options locaux de votre
ordinateur. Par conséquent, si le projet est rouvert
sur le même ordinateur, le paramètre de chemin est
restauré. Il doit être redéfini si le projet est utilisé sur
un autre système.
Sécurisation du mode en ligne
Activez cette option si, pour des raisons de sécurité,
l'utilisateur doit être invité à confirmer la sélection de
l'une des commandes en ligne suivantes : Forcer les
valeurs, Téléchargement multiple, Release force list,
Single cycle, Démarrer, Arrêter, Ecrire les valeurs.
EIO0000000069 02/2018
123
Boîtes de dialogue communes de l'éditeur d'appareil
Configuration
Présentation
L'affichage Configuration n'est disponible dans l'éditeur d'appareil que si l'option Afficher les
éditeurs de configuration génériques est activée dans la boîte de dialogue → Options → Editeur
d'appareil. Cet affichage contient les paramètres propres aux équipements et permet de modifier
la valeur des paramètres, dans la mesure où la description de l'équipement l'y autorise.
AffichageConfiguration de l'éditeur d'appareil
Cet affichage contient les éléments suivants :
124
Elément
Description
Paramètre
Nom du paramètre, non modifiable.
Type
Type de données du paramètre, non modifiable.
Valeur
Tout d'abord, la valeur par défaut du paramètre s'affiche directement ou sous la forme
d'un nom symbolique. Si le paramètre peut être modifié (cela dépend de la description
de l'équipement ; les paramètres non modifiables sont affichés en gris), cliquez sur la
cellule du tableau pour ouvrir une zone d'édition ou une liste de sélection pour modifier
la valeur. Si la valeur est une spécification de fichier, la boîte de dialogue standard
d'ouverture de fichier s'ouvre lorsque vous double-cliquez sur la cellule. Elle permet de
sélectionner un autre fichier.
Valeur par défaut
Valeur de paramètre par défaut, non modifiable.
Unité
Unité de la valeur du paramètre (par exemple : ms pour millisecondes), non modifiable.
Description
Brève description du paramètre, non modifiable.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Applications
Présentation
Si l'affichage Applications de l'éditeur d'équipement permet de scruter et de supprimer des
applications sur le contrôleur. Des informations sur le contenu de l'application peuvent être
disponibles, ainsi que des détails sur les propriétés de l'application.
Affichage Applications de l'éditeur d'équipement
Description des éléments
L'affichage Applications contient les options suivantes :
Élément
Description
Applications sur l'automate
programmable
Cette zone de texte énumère les noms des applications détectées sur le
contrôleur lors de la dernière analyse (clic sur Actualiser).
Si aucune analyse n'a été exécutée ou s'il n'est pas possible d'en effectuer
une parce qu'aucune passerelle n'est configurée (voir page 119) en vue de la
connexion, un message explicatif s'affiche.
Supprimer
Supprimer tout
Cliquez sur ces boutons pour supprimer du contrôleur l'application
actuellement sélectionnée dans la liste des applications.
Détails
Cliquez sur ce bouton pour accéder à la boîte de dialogue contenant les
informations définies dans l'onglet Informations de la boîte de dialogue
Propriétés de l'objet d'application.
EIO0000000069 02/2018
125
Boîtes de dialogue communes de l'éditeur d'appareil
Élément
Description
Contenu
Si dans Affichage → Propriétés → Options de création d'application, l'option
Téléchargement infos sur l'application est activée pour l'objet d'application
(voir SoMachine, Commandes de menu, Aide en ligne), des informations
complémentaires sur le contenu de l'application sont chargées sur le
contrôleur.
Cliquez sur le bouton Contenu pour afficher les différents POU dans un
affichage de comparaison. Après plusieurs téléchargements, ces
informations permettent de comparer le code de la nouvelle application avec
celui déjà disponible sur le contrôleur. Les informations plus précises ainsi
obtenues aident à décider du mode de connexion. Pour plus d'informations,
consultez la description de la commande Connexion.
Actualiser la liste
Cliquez sur ce bouton pour analyser le contrôleur et détecter les applications
qui s'y trouvent. La liste est mise à jour en conséquence.
Vérifications avant le chargement d'une application sur le contrôleur
Les vérifications suivantes sont effectuées avant le chargement d'une application sur le
contrôleur :
 La liste des applications présentes sur le contrôleur est comparée à celles qui sont disponibles
dans le projet. Lorsque des incohérences sont détectées, les boîtes de dialogue appropriées
s'affichent pour charger sur le contrôleur les applications qui n'y sont pas encore ou supprimer
d'autres applications du contrôleur.
 Une vérification permet de déterminer si les POU mis en œuvre à l'extérieur dans l'application
à charger sont disponibles sur le contrôleur. Si ce n'est pas le cas, un message explicatif
(référence(s) non résolue(s)) apparaît dans la zone de message et dans l'affichage Messages
lors de la sélection de l'option Télécharger.
 Les paramètres (variables) des POU de l'application à charger sont comparés à ceux des POU
de même nom de l'application déjà disponible sur le contrôleur (validation des signatures). Si
des incohérences sont détectées, un message explicatif (conflit(s) de signature) est généré
dans une zone de message et dans l'affichage Messages lors de la sélection de l'option
Télécharger.
 Si dans Affichage → Propriétés → Options de création d'application l'option Téléchargement
infos sur l'application est activée, des informations complémentaires sur le contenu de
l'application sont chargées sur le contrôleur. Voir la description du bouton Contenu dans le
tableau précédent.
126
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Fichiers
Présentation
L'affichage Fichiers de l'éditeur d'appareil sert à transférer des fichiers entre l'hôte et le contrôleur.
Cela signifie que vous pouvez choisir n'importe quel fichier dans un répertoire du réseau local pour
le copier dans le répertoire de fichiers du système d'exécution actuellement connecté (et
inversement).
Affichage Fichiers de l'éditeur d'appareil
Cet affichage se divise en deux parties :
La partie gauche présente les fichiers de l'hôte.
 La partie droite présente les fichiers du système d'exécution.

Description des éléments
L'affichage Fichiers fournit les éléments suivants :
Elément
Description
Actualise la liste Exécution.
Crée un dossier dans lequel vous pouvez copier les
fichiers.
Supprime de la liste les fichiers ou dossiers
sélectionnés.
EIO0000000069 02/2018
127
Boîtes de dialogue communes de l'éditeur d'appareil
128
Elément
Description
Emplacement
Indique le dossier du système de fichiers
correspondant qui sera utilisé pour le transfert de
fichiers.
Permet de sélectionner une entrée dans la liste ou de
parcourir l'arborescence du système de fichiers.
<< >>
Sélectionnez les fichiers à copier dans
l'arborescence du système de fichiers. Vous pouvez
sélectionner plusieurs fichiers à la fois ou
sélectionner un dossier pour copier tous les fichiers
qu'il contient.
Pour copier les fichiers sélectionnés de l'hôte vers le
répertoire du système d'exécution, cliquez sur >>.
Pour copier les fichiers sélectionnés de l'hôte vers le
répertoire du système d'exécution, cliquez sur <<.
Si un fichier n'est pas encore disponible dans le
répertoire cible, il y est créé.
S'il existe déjà un fichier sous le nom donné et qu'il
n'est pas protégé en écriture, il est remplacé. S'il est
protégé en écriture, un message approprié est
généré.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Journal
Présentation
L'affichage Journal de l'éditeur d'appareil sert à afficher les événements qui ont été journalisés sur
le système d'exécution du contrôleur.
Cela concerne :
les événements au démarrage ou à l'arrêt du système (composants chargés et leur version) ;
 le téléchargement d'applications et le téléchargement de projets de démarrage ;
 les entrées propres au client ;
 les entrées de journal des pilotes d'E/S ;
 les entrées de journal du serveur de données.

Affichage Journal de l'éditeur d'appareil
EIO0000000069 02/2018
129
Boîtes de dialogue communes de l'éditeur d'appareil
Description des éléments
L'affichage Journal fournit les éléments suivants :
Elément
Description
Pondération
Les événements du journal sont regroupés en quatre catégories :
 avertissement
 erreur
 exception
 information
Les boutons de la barre située au-dessus de la liste indiquent le nombre actuel de
journalisations de la catégorie qu'ils représentent. Cliquez sur ces boutons pour
afficher ou masquer les entrées de la catégorie correspondante.
Horodatage
Date et heure,
par exemple, 12.01.2007 09:48
Description
Description de l'événement,
par exemple, Echec de la fonction d'importation de <CmpFileTransfer>
Composant
Vous pouvez ici choisir un composant déterminé de façon à afficher uniquement les
entrées de journal afférentes. Le paramètre par défaut est <<Tous les composants>.
Enregistreur
La liste de sélection présente les journalisations disponibles. Le paramètre par défaut
est <<Enregistreur par défaut>, qui est défini par le système d'exécution.
Actualise la liste.
Exporte la liste dans un fichier XML. La boîte de dialogue standard d'ouverture de
fichier s'ouvre. Le filtre de fichiers défini est xml-files (*.xml). Le fichier journal est
stocké dans le répertoire sélectionné avec le nom de fichier spécifié et l'extension
.XML.
Affiche les entrées de journal stockées dans un fichier XML, qui a peut-être été
exporté comme décrit ci-dessus. La boîte de dialogue standard de recherche de
fichier s'ouvre. Le filtre défini est xml-files (*.xml). Choisissez le fichier journal
souhaité. Les entrées de ce fichier s'affichent dans une fenêtre distincte.
Efface la table de journal actuelle pour supprimer toutes les entrées affichées.
Enregistrement hors ligne
Cette option n'est pas utilisée dans SoMachine.
Temps UTC
Activez cette option pour afficher directement l'horodatage du système d'exécution,
sans conversion. Si cette option est désactivée, l'horodatage affiché correspond à
l'heure locale de l'ordinateur, qui dépend du fuseau horaire du système d'exploitation.
NOTE : Pour afficher l'horodatage au format UTC (Universal Time Coordinated),
l'heure du contrôleur doit avoir été définie au préalable en UTC (reportez-vous
également à l'onglet Services de la configuration du contrôleur).
130
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Paramètres API
Présentation
L'affichage Paramètres API de l'éditeur d'appareil sert à configurer certains paramètres généraux
pour le contrôleur.
Affichage Paramètres API de l'éditeur d'appareil
Description des éléments
L'affichage Paramètres API fournit les éléments suivants :
Elément
Description
Application pour traitement E/S
Définissez ici l'application affectée à l'équipement dans l'arborescence
Équipements qui sera surveillée pour le traitement E/S. Pour SoMachine, il n'y
a qu'une application disponible.
Zone Paramètres API
Actualiser E/S en état d'arrêt
EIO0000000069 02/2018
Si cette option est activée (par défaut), les valeurs des canaux d'entrée et de
sortie sont actualisées lorsque le contrôleur est arrêté. En cas d'expiration de
la surveillance, les sorties sont définies avec les valeurs par défaut.
131
Boîtes de dialogue communes de l'éditeur d'appareil
Elément
Description
Comportement des sorties à l'arrêt
Dans la liste de sélection, choisissez l'une des options suivantes pour définir
la façon dont les valeurs des canaux de sortie sont traitées en cas d'arrêt du
contrôleur :
 Conserver les valeurs
Les valeurs actuelles ne sont pas modifiées.
 Ramener toutes les sorties à la valeur par défaut
Les valeurs par défaut résultant du mappage sont affectées.
 Exécuter le programme
Vous pouvez déterminer le comportement des sorties à l'aide d'un
programme disponible dans le projet. Entrez le nom de ce programme ici.
Celui-ci s'exécutera dès lors que le contrôleur sera arrêté. Cliquez sur le
bouton ... pour utiliser l'Aide à la saisie à cette fin.
Actualiser toutes les variables dans
tous les appareils
Si cette option est activée, les variables E/S sont actualisées à chaque cycle
de la tâche de cycle de bus pour les équipements définis dans la configuration
actuelle du contrôleur. Elle correspond à l'option Toujours actualiser les
variables. Vous pouvez la définir séparément pour chaque équipement
figurant dans l'affichage (voir page 153) Mappage E/S.
Zone Options de cycle de bus
Tâche de cycle de bus
La liste de sélection répertorie les tâches actuellement définies dans la
Configuration de tâche de l'application active (par exemple, MAST). Le
paramètre par défaut MAST est entré automatiquement.
<non spécifié> signifie que la tâche est sélectionnée en fonction de
paramètres internes au contrôleur, qui dépendent alors du contrôleur. Il peut
s'agir de la tâche dont le temps de cycle est le plus court, comme de celle dont
le temps de cycle est le plus long.
NOTE : Le paramétrage de la tâche de cycle de bus avec la valeur <non spécifié> peut générer
un comportement inattendu de votre application. Veuillez consulter le Guide de programmation de
votre contrôleur.
ATTENTION
COMPORTEMENT IMPREVU DE L'EQUIPEMENT
Si vous avez des incertitudes quant aux paramètres de tâche de cycle de bus du contrôleur,
évitez d'attribuer la valeur <non spécifié> au paramètre Tâche de cycle de bus. Sélectionnez
plutôt une tâche dédiée dans la liste.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
132
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Paramètre supplémentaire
Le paramètre Variables forcées pour le mappage E/S n'est disponible que s'il est pris en charge
par l'équipement. Si l'option est activée, pour chaque canal E/S, qui est affecté à une variable dans
la boîte de dialogue Mappage E/S, deux variables globales sont créées dès que l'application est
compilée. Ces variables peuvent être utilisées dans une visualisation IHM pour le forçage de la
valeur E/S. Pour plus d'informations, consultez le chapitre Mappage E/S (voir page 149).
EIO0000000069 02/2018
133
Boîtes de dialogue communes de l'éditeur d'appareil
Utilisateurs et groupes
Présentation
La gestion des utilisateurs et des groupes de droits d'accès diffère selon le contrôleur que vous
utilisez. Sur la plupart des équipements prenant en charge la gestion des utilisateurs en ligne (tels
que les contrôleurs M258, M241, M251 et LMC••8), la vue Utilisateurs et groupes décrite dans ce
chapitre sert à gérer les comptes d'utilisateur et les groupes de droits d'accès d'utilisateur, ainsi
que les droits d'accès associés. Vous pouvez ainsi contrôler l'accès aux projets et aux appareils
de SoMachine en utilisant le mode en ligne.
Pour effectuer la gestion des droits des utilisateurs, vous devez ouvrir une session en tant
qu'Administrateur.
ATTENTION
ACCÈS NON AUTHENTIFIÉ, NON AUTORISÉ





Exposez le moins possible les contrôleurs et réseaux de contrôleurs aux réseaux publics et à
Internet.
Utilisez des couches de sécurité supplémentaires, par exemple VPN pour l'accès à distance,
et installez des pare-feu.
Limitez l'accès aux personnes autorisées.
Changez les mots de passe par défaut au démarrage et modifiez-les fréquemment.
Vérifiez régulièrement l'efficacité de ces mesures.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
NOTE : la fonctionnalité Utilisateurs et groupes ne protège pas le projet SoMachine contre les
intrusions, mais prévient les erreurs des utilisateurs identifiés.
Si vous souhaitez protéger l'ensemble du projet, activez l'option Enable project file encryption dans
la boîte de dialogue (voir SoMachine, Commandes de menu, Aide en ligne) Paramètres du projet
→ Sécurité.
Si vous souhaitez ne protéger qu'une partie du code du projet, placez ce code dans une
bibliothèque générée (voir SoMachine, Commandes de menu, Aide en ligne).
NOTE : Vous pouvez utiliser les commandes de sécurité (voir SoMachine, Commandes de menu,
Aide en ligne), qui permettent d'ajouter, de modifier et de supprimer un utilisateur dans le service
de gestion des utilisateurs en ligne de l'équipement cible auquel vous êtes connecté.
NOTE : Vous devez définir des droits d'accès utilisateur à l'aide du logiciel SoMachine. Si vous
avez cloné une application entre deux contrôleurs, vous devrez activer et définir les droits d'accès
des utilisateurs sur le contrôleur ciblé.
134
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
NOTE : la seule manière d'accéder à un contrôleur sur lequel les droits d'utilisateur sont activés et
dont vous ne connaissez pas le(s) mot(s) de passe consiste à effectuer une mise à jour du
micrologiciel à l'aide d'une carte SD ou d'une clé USB (reportez-vous au document SoMachine Controller Assistant - Guide de l'utilisateur pour en savoir plus), selon le support du contrôleur
concerné, ou à exécuter un script. Etant donné que la procédure d'exécution d'un script varie en
fonction du contrôleur, reportez-vous au chapitre Transfert de fichiers avec carte SD ou Transfert
de fichiers avec clé USB du Guide de programmation de votre contrôleur. Ces opérations vous
permettent d'accéder au contrôleur, tout en sachant qu'elles suppriment également l'application
présente dans la mémoire du contrôleur.
Pour les contrôleurs Soft PLC, une vue Utilisateurs et groupes spécifique et une vue Droits d'accès
séparée sont affichées dans l'éditeur d'appareil. Ces vues spécifiques sont décrites dans le
chapitre Gestion des utilisateurs pour Soft PLC (voir page 925).
Si vous souhaitez que certaines fonctions d'un contrôleur ne soient exécutées que par des
utilisateurs autorisés, vous pouvez utiliser la vue Utilisateurs et groupes pour définir des
utilisateurs, attribuer des droits d'accès et demander une authentification de l'utilisateur lorsqu'il se
connecte.
Pour cela, créez des utilisateurs et configurez leurs droits d'accès aux données, aux outils
d'ingénierie et aux fichiers en utilisant les boutons disponibles dans la zone Actions utilisateur.
Vous pouvez créer des groupes de droits d'accès utilisateur et configurer chaque autorisation
individuellement en utilisant les boutons disponibles dans la zone Actions groupes.
Vue Utilisateurs et groupes
La vue Utilisateurs et groupes vous permet de gérer l'accès des utilisateurs aux projets et aux
appareils. Les utilisateurs et les droits correspondants sont valables pour tous les appareils
rattachés à un projet.
EIO0000000069 02/2018
135
Boîtes de dialogue communes de l'éditeur d'appareil
Vue Utilisateurs et groupes de l'éditeur d'appareil.
NOTE : lorsque vous appliquez la configuration des droits d'utilisateur à une cible, cette nouvelle
configuration peut ne pas s'appliquer aux connexions déjà ouvertes. Pour s'assurer qu'elle est bien
appliquée, fermez les connexions à cette cible en redémarrant cette dernière ou en débranchant
les câbles (Ethernet et ligne série) pendant au moins 1 minute.
Section Protection d'accès
La section Protection d'action de la vue Utilisateurs et groupes contient la case à cocher Activer la
gestion des utilisateurs. Cette case à cocher est désactivée par défaut, ce qui signifie que la
gestion des utilisateurs n'est pas activée. L'accès aux projets et aux appareils s'effectue librement.
Pour gérer des comptes utilisateur et groupes de droits d'accès des utilisateurs et leur attribuer des
droits d'accès, vous devez cocher la case Activer la gestion des utilisateurs. Pour pouvoir modifier
les paramètres de gestion des utilisateurs, vous devez soit vous connecter en tant
qu'administrateur, soit disposer du droit d'administration. Lors de la première ouverture de session
en tant qu'administrateur, vous êtes invité à changer le mot de passe par défaut.
Sous la case Activer la gestion des utilisateurs se trouve une liste des utilisateurs définis (dans la
colonne Utilisateur), ainsi que des groupes de droits d'accès correspondants (dans les colonnes
Protection d'accès triées par type).
136
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Par défaut, la liste contient cinq utilisateurs. Vous disposez d'un accès limité aux utilisateurs par
défaut répertoriés dans ce tableau :
Utilisateur par
défaut
Description
Administrateur
Peut être
supprimé
Le nom peut
être modifié
Les droits
peuvent être
modifiés
Mot de passe
par défaut
(modifiable)
L'Administrateur n'est
Non
soumis à aucune restriction
de ses droits d'accès. Il est
habilité à configurer les
droits des utilisateurs.
Non
Non
Administrat
or
Doit être
changé lors de
la première
ouverture de
session.
Tout le monde
L'identité Tout le monde est Non
utilisée lorsque vous n'êtes
pas connecté.
Si vous supprimez des
autorisations, vous devez
ouvrir une session en tant
qu'utilisateur titulaire des
droits adéquats.
Non
Oui
Aucun mot de
passe attribué.
USER
L'identité USER est utilisée Non
par le serveur Web pour
accéder au contrôleur.
Oui
Oui
USER
IHM
L'identité HMI est utilisée
par l'interface HMI pour se
connecter au contrôleur.
Non
Oui
Oui
HMI
Développeur
L'utilisateur Développeur
bénéficient des
autorisations appropriées
pour développer un projet.
Oui
Oui
Oui
Developer
Les droits d'accès des utilisateurs sont regroupés en trois catégories, ou types d'accès, sous
Protection de l'accès :
 Accès aux données : accès aux applications destinées à la lecture ou à l'écriture de données à
partir de l'appareil (IHM et OPC, par exemple).
 Outils d'ingénierie : accès aux outils de programmation, tels que SoMachine et Controller
Assistant.
 Accès aux fichiers : accès au système de fichiers interne ou externe, tel que les supports
externes, le protocole SoMachine, le FTP et le Web.
Lorsque vous cliquez sur la zone déroulante d'un utilisateur dans une colonne correspondant à un
type d'accès, vous accédez à la liste des groupes de droits d'accès des utilisateurs. Vous pouvez
alors faire votre choix pour l'utilisateur et le type d'accès en question. Pour plus d'informations sur
les groupes de droits d'accès utilisateur, consultez la section Gestion des groupes de droits
d'accès (voir page 141).
EIO0000000069 02/2018
137
Boîtes de dialogue communes de l'éditeur d'appareil
Zone Actions sur les utilisateurs
Les boutons ne sont disponibles que si l'option Activer la gestion des utilisateurs est activée.
Le fait de cliquer sur un bouton ouvre une boîte de dialogue vous invitant à ouvrir une session en
tant qu'Administrateur, car il s'agit du seul utilisateur qui bénéficie de droits pour la gestion des
utilisateurs.
Les boutons Actions utilisateur permettent d'exécuter les fonctions standard de gestion des
utilisateurs :
Bouton
Description
Ajouter un utilisateur...
Cliquez sur ce bouton pour ajouter un nouvel utilisateur à la liste.
La boîte de dialogue Ajouter un utilisateur s'ouvre.
Entrez un Nom d'utilisateur, un Nom complet, une Description et un Mot de
passe. Répétez le mot de passe dans le champ Confirmation du mot de
passe.
Pour accorder les droits au nouvel utilisateur, définissez l'option Activé.
Supprimer un utilisateur...
Cliquez sur ce bouton pour supprimer l'utilisateur sélectionné de la liste
indiquée à la section Protection d'accès.
Modifier l’utilisateur
Cliquez sur ce bouton pour modifier l'utilisateur sélectionné de la liste
indiquée à la section Protection d'accès. La boîte de dialogue Modifier
l'utilisateur s'ouvre. Elle correspond à la boîte de dialogue Ajouter un
utilisateur (voir plus haut) contenant les paramètres de l'utilisateur
actuellement défini.
Pour accorder les droits au nouvel utilisateur, définissez l'option Activé.
Modifiez les mots de passe par défaut de tous les utilisateurs par défaut (USER, IHM,
Développeur). Avant d'accorder des droits d'accès à l'identité par défaut Tout le monde, pensez
aux implications. D'un côté, le fait d'accorder des droits d'accès à l'identité Tout le monde permet
à l'utilisateur d'exécuter des scripts via le port USB ou SD (selon la référence de contrôleur). Par
contre, n'importe quelle personne peut disposer de ces droits d'accès, sans avoir à se connecter.
AVERTISSEMENT
ACCÈS AUX DONNÉES NON AUTORISÉ



Remplacez immédiatement tous les mots de passe par défaut par de nouveaux mots de passe
sécurisés.
Ne transmettez pas les mots de passe à des personnes non autorisées ou non qualifiées.
N'accordez à l'identité Tout le monde que des droits d'accès essentiels pour votre application.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
138
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
NOTE : Un mot de passe sécurisé est un mot de passe qui n'a pas été communiqué à du personnel
non autorisé et qui ne contient aucune donnée personnelle ou évidente par ailleurs. De plus, une
combinaison de caractères minuscules et majuscules et de chiffres offre une sécurité renforcée. Il
est conseillé de choisir un mot de passe d'au moins sept caractères.
Zone Actions sur les groupes
Les boutons ne sont disponibles que si l'option Activer la gestion des utilisateurs est activée.
Le fait de cliquer sur un bouton ouvre une boîte de dialogue vous invitant à ouvrir une session en
tant qu'Administrateur, car il s'agit du seul utilisateur qui bénéficie de droits pour la gestion des
utilisateurs.
Ces boutons permettent d'exécuter les fonctions de gestion des droits d'accès appliquées aux
groupes :
Bouton
Description
Ajouter un groupe
Cliquez sur ce bouton pour créer un groupe. La boîte de dialogue Groupes
personnalisés s'ouvre.
Modifier le groupe
Cliquez sur ce bouton pour modifier un groupe. La boîte de dialogue Groupes
personnalisés s'ouvre. Dans la liste Groupe à modifier, sélectionnez le
groupe que vous souhaitez éditer. Les paramètres définis pour le groupe
sélectionné sont affichés dans les tableaux ci-dessous.
Supprimer un groupe...
Cliquez sur ce bouton pour supprimer le groupe sélectionné de la liste
indiquée à la section Protection d'accès.
Remarque : certains groupes par défaut ne peuvent pas être supprimés
(voir page 134).
Groupes de droits d'accès des types de protection de l'accès
Un certain nombre de groupes de droits d'accès sont prédéfinis et disponibles dans les listes
déroulantes de chaque type de protection de l'accès, et ce pour chaque utilisateur défini.
EIO0000000069 02/2018
139
Boîtes de dialogue communes de l'éditeur d'appareil
Le tableau suivant répertorie les groupes de droits d'accès par défaut disponibles par type de
protection de l'accès :
Type de protection de l'accès
Groupes de droits d'accès par
défaut
Description
Accès aux données
Aucune
L'accès est refusé.
Lecture
 Accès au site Web de l'appareil.
 Lire les données non
protégées :
 Variables configurées dans
OpcUaSymbolConfiguration
(client OPC UA)
 Variables configurées dans
SymbolConfiguration (IHM,
serveur OPC CoDeSys)
 Variables configurées dans
WebDataConfiguration
(serveur Web)
 Visualisation Web
Lecture/écriture
 Accès au site Web de l'appareil.
 Lire/écrire des données non
protégées :
 Variables configurées dans
OpcUaSymbolConfiguration
(client OPC UA)
 Variables configurées dans
SymbolConfiguration (IHM,
serveur OPC CoDeSys)
 Variables configurées dans
WebDataConfiguration
(serveur Web)
 Visualisation Web
OpcUa
140
Accès aux données OPC UA (IHM
et serveur Web exclus).
Accordez ce droit d'accès à
l'utilisateur par défaut Everyone
(Tout le monde) pour autoriser
l'accès anonyme aux données du
serveur OPC UA.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Type de protection de l'accès
Groupes de droits d'accès par
défaut
Description
Outils d'ingénierie
Aucune
L'ouverture de session est refusée.
Moniteur
 Connexion
 Télécharger la source
 Variables en lecture seule
Utiliser
 Connexion
 Télécharger la source
 Forcer / écrire les variables
Accès aux fichiers
Programme
Aucune restriction, excepté la
configuration des droits des
utilisateurs, qui n'est pas autorisée.
Administrer
Aucune restriction, la configuration
des droits des utilisateurs est
également autorisée.
Aucune
L'accès est refusé.
Lecture
Lire les fichiers non protégés.
Lecture-écriture
Lire / écrire les fichiers non
protégés.
Lecture-Êcriture-Suppression
Lire / écrire / supprimer les fichiers
non protégés.
Gestion des groupes de droits d'accès
Vous avez la possibilité de créer vos propres groupes de droits d'accès, en plus de ceux définis
par défaut. Ceci signifie que vous pouvez configurer les droits d'accès à des outils ou commandes
spécifiques groupés sous chaque type de Protection d'accès (Accès aux données, Outils
d'ingénierie, Accès aux fichiers). Pour cela, cliquez sur le bouton Ajouter un groupe ou Modifier un
groupe dans la zone Actions sur les groupes. La boîte de dialogue Groupes personnalisés s'ouvre.
EIO0000000069 02/2018
141
Boîtes de dialogue communes de l'éditeur d'appareil
Paramètre
Description
Nom
Attribuez un nom au groupe (32 caractères maximum).
Les caractères a à z, A à Z, 0 à 9 et le trait de soulignement sont admis.
Type d'accès
Sélectionnez un type d'accès par groupe :
 Accès aux données
 Outils d'ingénierie
 Accès aux fichiers
Les actions et droits disponibles pour le type d'accès sélectionné sont
énumérés en dessous, sur le côté gauche.
142
Réinitialiser à
Pour copier les droits d'accès des utilisateurs d'un groupe vers un autre,
sélectionnez le groupe souhaité dans la liste Réinitialiser à. Les actions et
droits sont alors réinitialisés sur les valeurs du groupe sélectionné.
Liste Actions/Droits
Cette liste répertorie les actions et droits disponibles pour le type d'accès
sélectionné. Reportez-vous ci-dessous aux listes d'actions et droits propres
à chaque type d'accès.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Paramètre
Description
Liste TargetName/Droits
Les noms de système cible de cette liste correspondent exactement à ceux
de l'arborescence Équipements du projet de l'appareil sélectionné.
Vous pouvez configurer des droits pour chaque appareil cible. Pour ce faire,
sélectionnez l'appareil dans la liste, puis sélectionnez l'option appropriée
(Par défaut, Refuser, Lecture seule, Modifiable, Complet) dans la liste
Droits.
La valeur Par défaut correspond aux droits de l'identité Tout le monde.
Le tableau répertorie les actions et droits pouvant être attribués au type d'accès → Accès aux
données :
Actions disponibles
Droits
Serveur OPC
Permet à l'utilisateur de se connecter à un appareil
au sein du serveur OPC à l'aide d'un nom de
connexion et d'un mot de passe.
 Refuser
IHM
Permet à l'utilisateur d'accéder à Vijeo Designer à
l'aide d'un nom d'utilisateur et d'un mot de passe.
 Refuser
Serveur Web
Permet à l'utilisateur d'accéder au serveur Web à
l'aide d'un nom d'utilisateur et d'un mot de passe.
 Refuser
 Lecture
 Lecture/Ecriture
 Lecture
 lecture/écriture
L'utilisateur ne peut pas accéder au serveur Web.
 Lecture
L'utilisateur peut accéder au serveur Web et lire
les variables.
 lecture/écriture
L'utilisateur peut accéder au serveur Web et
lire/écrire les variables.
Le tableau répertorie les actions et droits pouvant être attribués au type d'accès → Outils
d'ingénierie :
Actions disponibles
Droits
Connexion
Autorise l'utilisateur à se connecter à l'appareil et à
accéder à l'application.
Cette autorisation est une condition prérequise pour
l'attribution de toute autre autorisation en ligne.
 Par défaut
EIO0000000069 02/2018
 Refuser
 Autoriser
143
Boîtes de dialogue communes de l'éditeur d'appareil
Actions disponibles
Droits
Réinitialiser
 Par défaut
Mêmes droits que l'identité Tout le monde.
 Refuser
L'utilisateur ne peut effectuer de réinitialisation de
l'appareil.
 Froid
L'utilisateur peut effectuer une réinitialisation à
froid de l'appareil.
 Froid - Chaud
L'utilisateur peut effectuer une réinitialisation à
froid et à chaud de l'appareil.
Run/Stop
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
L'utilisateur ne peut effectuer de démarrage ou
d'arrêt de l'application.
 Autoriser
L'utilisateur peut effectuer un démarrage ou un
arrêt de l'application.
Enregistreur:
Autorise l'utilisateur à accéder à la vue Journal de
l'éditeur d'appareil.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
Variables
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
L'utilisateur ne peut lire ni écrire aucune variable.
 Lecture
L'utilisateur peut lire les variables de l'application.
 Lecture/Ecriture
L'utilisateur peut lire, écrire et forcer les variables
non protégées.
Trace
Autorise l'utilisateur à accéder à l'appareil de suivi.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
Paramètres du projet
Permet à l'utilisateur de modifier (lecture et écriture)
les informations et les paramètres du projet.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
Paramètres API
Permet à l'utilisateur d'accéder à la vue Paramètres
API de l'éditeur d'appareil.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
144
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Actions disponibles
Droits
Télécharger
Permet à l'utilisateur de télécharger toutes les
applications, ou l'application active, sur l'appareil.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
Changement en ligne
Permet à l'utilisateur d'exécuter la commande
Changement en ligne.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
Téléchargement d'image
Permet à l'utilisateur de télécharger des images.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Autoriser
Télécharger la source
Permet à l'utilisateur d'exécuter la commande
Chargement de sources.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Téléchargement d'image en amont
Permet à l'utilisateur de télécharger des images en
amont.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
 Default
Mise à jour d'équipements
Permet à l'utilisateur d'exécuter la commande Mise à  Refuser
jour d'équipements.
 Modifier
Compilation de projet
Permet à l'utilisateur d'exécuter les commandes
Compiler et Générer tout.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Gestion des appareils
Permet à l'utilisateur d'ajouter, modifier, supprimer,
mettre à jour et actualiser un appareil.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Créer un objet
Permet à l'utilisateur de créer des objets dans un
projet.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Outils de développement
Permet à l'utilisateur de modifier les applications, les
POU et les appareils.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
EIO0000000069 02/2018
145
Boîtes de dialogue communes de l'éditeur d'appareil
Actions disponibles
Droits
Outils de visualisation
 Default
Permet à l'utilisateur d'ajouter et modifier une
Mêmes droits que l'identité Tout le monde.
visualisation Web et de créer des visualisations dans  Refuser
le projet actuel.
 Modifier
Gestion des bibliothèques
Permet à l'utilisateur d'effectuer la gestion de la
bibliothèque, sauf l'accès à la liste des bibliothèques
dans un projet et l'affichage de leurs propriétés.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Recette
 Default
Permet à l'utilisateur de créer, modifier, envoyer,
Mêmes droits que l'identité Tout le monde.
télécharger en amont, jouer une recette et charger
 Refuser
des données du programme actuel vers une recette.  Modifier
Outils de débogage
Permet à l'utilisateur d'exécuter les commandes de
débogage, y compris les points d'arrêt.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Outils SoftMotion
Permet à l'utilisateur d'exécuter les commandes
CAM et CNC.
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Gestion DTM
Permet à l'utilisateur d'exécuter les commandes de
l'outil FDT (Field Device Tool).
 Default
Mêmes droits que l'identité Tout le monde.
 Refuser
 Modifier
Le tableau répertorie les actions et droits pouvant être attribués au type d'accès → Accès aux
fichiers :
146
Actions disponibles
Droits
Système de fichiers
FTP
Supports amovibles
Permet à l'utilisateur d'accéder au fichier en mode
FTP, SoMachine ou Web.
 Refuser
 Lecture
 Lecture/Ecriture
 Lecture - Êcriture - Suppression
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Relevé des tâches
Présentation
L'affichage Relevé des tâches de l'éditeur d'appareil présente un tableau contenant des
entrées/sorties et leur affectation aux tâches définies. Pour que ces informations s'affichent, le
projet doit être compilé et le code généré. Ces informations permettent de résoudre les problèmes
liés à l'actualisation d'une même entrée/sortie dans différentes tâches avec des priorités
différentes.
Relevé des tâches de l'éditeur d'appareil
Ce tableau présente les tâches classées en fonction de leur priorité. Cliquez sur l'en-tête de
colonne (nom de la tâche) pour afficher uniquement les variables affectées à cette tâche. Pour
afficher à nouveau toutes les variables, cliquez sur la première colonne (Canaux E/S
Pour ouvrir la table de mappages E/S d'un canal, double-cliquez sur l'entrée ou la sortie.
Une flèche bleue indique la tâche du cycle de bus.
Dans l'exemple ci-dessus, la variable usiBK5120Out AT %QB0 est utilisée dans deux tâches
différentes. Dans ce cas, la sortie, définie par une tâche, peut être remplacée par l'autre tâche :
cela peut donner une valeur non définie. En règle générale, il est déconseillé d'écrire des
références de sortie dans plusieurs tâches. Cela rend le débogage du programme difficile et
souvent, cela peut avoir des conséquences imprévues sur le fonctionnement de votre machine ou
de votre processus.
EIO0000000069 02/2018
147
Boîtes de dialogue communes de l'éditeur d'appareil
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT
Evitez d'écrire dans une variable de sortie présente dans plusieurs tâches.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Etat
Présentation
L'affichage Etat de l'éditeur d'appareil affiche des informations sur l'état (par exemple, En cours
d'exécution, Arrêté), des messages de diagnostic spécifiques sur l'équipement en question, ainsi
que des informations sur la carte utilisée et le système de bus interne.
Informations
Présentation
L'affichage Informations de l'éditeur d'appareil fournit des informations générales sur l'équipement
sélectionné dans l'arborescence Equipements : Nom, Type, Numéro de version, Numéro de
commande, Description, Image.
148
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Sous-chapitre 6.2
Mappage E/S
Mappage E/S
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Mappage E/S
150
Utilisation de la boîte de dialogue Mappage E/S
153
Mappage E/S en mode en ligne
156
Variables implicites pour le forçage des E/S
157
EIO0000000069 02/2018
149
Boîtes de dialogue communes de l'éditeur d'appareil
Mappage E/S
Présentation
L'affichage Mappage E/S de l'éditeur d'appareil s'intitule Mappage E/S <type d'appareil> (par
exemple, Mappage E/S PROFIBUS DP). Il sert à configurer un mappage E/S du contrôleur.
Autrement dit, les variables de projet utilisées par l'application sont affectées aux adresses
d'entrée, de sortie et de mémoire du contrôleur.
Définissez l'application qui doit traiter les E/S dans l'affichage (voir page 131) Paramètres API.
NOTE : Si l'équipement le permet, vous pouvez utiliser le mode de configuration en ligne pour
accéder aux E/S du matériel sans avoir préalablement chargé une application. Pour plus
d'informations, consultez la description du mode de configuration en ligne (voir SoMachine,
Commandes de menu, Aide en ligne).
Voir les chapitres suivants :
Utilisation de la boîte de dialogue Mappage E/S (voir page 153)
 Mappage E/S en mode en ligne (voir page 156)
 Variables implicites pour le forçage des E/S (voir page 157)

Informations générales sur le mappage des E/S dans les variables
La possibilité de mapper les E/S sur un équipement dépend de l'équipement lui-même. L'affichage
peut être utilisé uniquement dans le but de visualiser l'instance d'équipement implicitement créée.
Consultez la description des objets CEI (voir page 156).
Pour le mappage des E/S sur les variables, il convient avant tout de noter les points suivants :
 Les variables nécessitant une entrée ne sont pas accessibles en écriture.
 Une variable existante ne peut être mappée que sur une seule entrée.
 Au lieu d'utiliser l'affichage Mappage E/S, vous pouvez également affecter une adresse à une
variable via la déclaration d'adresse AT (voir page 552).
Toutefois, tenez compte des points suivants :
 Vous ne pouvez utiliser les déclarations d'adresse AT qu'avec des variables locales ou
globales, mais pas avec les variables d'entrée et de sortie des POU.
 Il n'est pas possible de générer des variables de forçage pour les E/S (voir Variables
implicites pour le forçage des E/S (voir page 157)) pour les déclarations d'adresse AT.
 Si des déclarations d'adresse AT sont utilisées avec des membres de structure ou de bloc
fonction, toutes les instances accèdent au même emplacement de mémoire. Cet
emplacement de mémoire correspond aux variables statiques des langages de
programmation classiques, comme le langage C.


150
L'équipement cible détermine également la disposition de la mémoire des structures.
Pour chaque variable affectée à un canal E/S dans l'affichage Mappage E/S, il est possible de
créer des variables de forçage lors d'une compilation de l'application (voir SoMachine,
Commandes de menu, Aide en ligne). Vous pouvez les utiliser pour forcer la valeur d'entrée ou
de sortie lors de la mise en service d'une machine, par exemple, via une visualisation (IHM).
Reportez-vous au chapitre Variables implicites pour le forçage d'E/S (voir page 157).
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Mappage E/S automatique
SoMachine V4.0 et les versions ultérieures intègrent une fonction de mappage E/S automatique.
Elle crée automatiquement des variables IEC dès lors qu'un équipement ou un module avec
modules E/S est ajouté à l'arborescence Equipements et qu'il les mappe sur chaque entrée et/ou
sortie. Par défaut, la fonction est activée.
Vous pouvez la désactiver et la configurer dans la boîte de dialogue Projet → Paramètres de projet
→ Automatic I/O mapping.
EIO0000000069 02/2018
151
Boîtes de dialogue communes de l'éditeur d'appareil
La boîte de dialogue contient les éléments suivants :
Elément
Description
Créer une variable sur le mappage d'E/S Sélectionnez ou désélectionnez cette option pour activer ou désactiver la
fonction de mappage E/S automatique.
Zone Mappage
Par bit
Sélectionnez cette option pour créer des variables pour chaque bit.
Par module
Sélectionnez cette option pour créer une variable pour chaque module, et
non pour chaque bit.
Zone Règle de dénomination
zone de texte
152
Entrez les caractères suivants en les faisant précéder du symbole # pour
spécifier les parties qui constitueront le nom de variable :
 Entrez #X pour intégrer un i pour les entrées et un q pour les sorties
dans le nom de variable.
 Entrez #T pour intégrer le code préfixe du type de données
correspondant de la variable dans le nom de variable. Les préfixes
utilisés pour les différents types de données sont répértoriés dans le
chapitre (voir page 544)Recommandations sur la dénomination des
identificateurs .
 Entrez #D pour intégrer le nom de l'équipement dans le nom de variable.
 Entrez #C pour intégrer le nom défini dans la colonne Canal dans le nom
de variable.
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Utilisation de la boîte de dialogue Mappage E/S
Présentation
L'illustration suivante représente l'onglet Mappage E/S de l'éditeur d'équipement
Description des éléments de la zone Canaux
La zone Canaux de l'onglet Mappage E/S présente les éléments suivants lorsqu'ils sont fournis par
l'appareil :
Élément
Description
Voie
Nom symbolique de la voie d'entrée ou de sortie de l'équipement
Adresse
Adresse de la voie, par exemple : %IW0
Type
Type de données de la voie d'entrée ou de sortie, par exemple : BOOL
Lorsque le type de données n'est pas standard, mais qu'il s'agit d'un champ
de structure ou de bits défini dans la description de l'équipement, il n'apparaît
que s'il figure dans la norme IEC. Le type IEC apparaît dans la description
de l'équipement. Sinon, l'entrée du tableau est vide.
Unité
Unité de la valeur du paramètre, par exemple : ms pour millisecondes
Description
Brève description du paramètre
Valeur actuelle
Valeur actuelle du paramètre (affichée en mode en ligne)
EIO0000000069 02/2018
153
Boîtes de dialogue communes de l'éditeur d'appareil
NOTE : Les entrées et les sorties non utilisées dans le code du contrôleur ne sont pas lues par le
contrôleur en mode en ligne. Les valeurs affichées pour ces entrées ou sorties qui peuvent être
incorrectes sont identifiées par un arrière-plan gris.
Configuration du mappage E/S
Procédez au mappage E/S en affectant les variables de projet appropriées aux canaux d'entrée et
de sortie de l'appareil dans la colonne Variable.



Le type de canal est déjà indiqué dans la colonne Variable à l'aide du symbole
pour entrée
et du symbole
pour sortie. Entrez sur cette ligne le nom ou le chemin de la variable avec
laquelle doit être mappé le canal. Vous pouvez le mapper sur une variable de projet existante
ou définir une nouvelle variable qui sera ensuite automatiquement déclarée comme variable
globale.
Lors du mappage de variables structurées, l'éditeur ne permet pas d'accéder à la variable de
structure (par exemple sur %QB0) et à des éléments de structure particuliers (par exemple, en
l'occurrence, %QB0.1 et QB0.2 ).
Cela signifie que lorsque la table de mappage contient une entrée principale avec une sousarborescence d'entrées de canaux de bits (comme dans l'illustration ci-après), il est possible
d'accéder à une variable sur la ligne de l'entrée principale ou sur celles des sous-éléments
(canaux de bits), mais jamais les deux.
Pour mapper une variable existante, indiquez le chemin complet. Par exemple : <nom de
l'application>.<chemin pou>.<nom de la variable> ;
Exemple : app1.plc_prg.ivar
Pour ce faire, il peut être utile d'ouvrir l'aide à la saisie en cliquant sur le bouton .... Dans la
colonne Mappage, le symbole
s'affiche et la valeur d'adresse et biffée. Ceci ne signifie en
aucune façon que cette adresse mémoire n'existe plus. Toutefois, elle n'est pas utilisée
directement car la valeur de la variable existante est gérée dans un autre emplacement
mémoire et, en particulier pour les sorties, aucune autre variable existante ne doit être stockée
à cette adresse (%Qxx dans le mappage d'E/S) afin d'éviter toute ambiguïté lors de l'écriture des
valeurs.
L'exemple suivant présente un mappage de sortie sur la variable existante xBool_4 :

154
Pour définir une nouvelle variable, entrez son nom.
Exemple : bVar1
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Dans ce cas, le symbole
est inséré dans la colonne Mappage et la variable est déclarée en
interne comme une variable globale. La variable est ensuite globalement accessible dans
l'application. La déclaration des variables globales peut également être effectuée dans la boîte
de dialogue de mappage.
NOTE : Une adresse peut également être lue ou écrite dans un code de programme comme ST
(Structured Text).

Étant donné les possibilités de modification liées à la configuration de l'appareil, il est
recommandé d'effectuer les mappages dans la boîte de dialogue de configuration de l'appareil.
NOTE : Si une UNION est représentée par des canaux E/S dans la boîte de dialogue de mappage,
l'appareil détermine s'il est possible ou non de mapper l'élément racine.
Si une variable déclarée d'un type de données particulier est plus longue que la variable vers
laquelle elle est mappée, sa valeur est tronquée pour correspondre à la taille de la variable cible
du mappage.
Par exemple, si vous mappez une variable déclarée de type WORD à une variable de type BYTE,
seuls 8 bits du mot sont mappés à l'octet.
Ceci signifie que pour la surveillance de la valeur dans la boîte de dialogue de mappage, la valeur
affichée pour l'élément racine de l'adresse correspond à la valeur de la variable déclarée
(actuellement valide dans le projet). Dans les sous-éléments qui figurent sous la racine, les valeurs
des éléments particuliers de la variable mappée seront surveillées. Toutefois, seule une partie de
la valeur déclarée sera affichée parmi les sous-éléments.
Une autre implication correspond au mappage d'une variable déclarée avec des sorties physiques.
De même, si vous mappez un type de données plus grand que le type de données de sortie, ce
dernier peut recevoir une valeur tronquée pouvant affecter l'application de manières inattendues.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT
Vérifiez que le type de données déclaré mappé avec les E/S physiques est compatible avec
l'opération envisagée pour la machine.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Élément
Description
Réinitialiser le mappage
Cliquez sur ce bouton pour réinitialiser la valeur par défaut
des paramètres de mappage définis dans le fichier de
description de l'appareil.
Toujours actualiser les variables
Si cette option est activée, les variables seront mises à jour
pour chaque cycle de la tâche de cycle de bus
(voir page 131), qu'elles soient ou non utilisées ou qu'elles
soient ou non mappées avec une entrée ou une sortie.
EIO0000000069 02/2018
155
Boîtes de dialogue communes de l'éditeur d'appareil
Objets IEC
Cette partie de l'onglet n'est disponible que lors de la création implicite d'une instance de l'objet
équipement accessible à l'application (par exemple, pour redémarrer un bus ou interroger des
informations). La disponibilité d'une telle instance et la façon dont elle peut être utilisée dépend du
contrôleur, comme indiqué dans le guide de programmation correspondant.
Options de cycle de bus
Cette option de configuration est disponible pour les appareils associés à des appels cycliques
avant et après la lecture des entrées ou des sorties. Elle permet de définir une tâche de cycle de
bus (voir page 131) propre à un appareil.
Par défaut, le paramètre de cycle de bus supérieur est valide (Utiliser les paramètres de cycle du
bus supérieur). La définition de la tâche de cycle de bus valide suivante sera donc recherchée
dans l'arborescence des équipements.
Pour attribuer une tâche de cycle de bus spécifique, sélectionnez la tâche voulue dans la liste de
sélection. La liste contient les tâches actuellement définies dans la configuration des tâches de
l'application.
Mappage E/S en mode en ligne
Mappage E/S en mode en ligne
Si une variable de structure est mappée avec l'élément racine de l'adresse (élément supérieur de
l'arborescence de l'adresse respective et dans la boîte de dialogue de mappage), aucune valeur
n'apparaît sur cette ligne en mode en ligne. Toutefois, si une variable DWORD, par exemple, est
mappée avec cette adresse, les valeurs de la ligne racine et des lignes des canaux de bits
apparaissant dessous en retrait seront respectivement surveillées. Concrètement, le champ de la
ligne racine reste vide si la valeur comporte plusieurs sous-éléments.
156
EIO0000000069 02/2018
Boîtes de dialogue communes de l'éditeur d'appareil
Variables implicites pour le forçage des E/S
Présentation
Lors de la mise en service d'une usine ou d'une machine, il peut s'avérer nécessaire de forcer les
E/S, par exemple, par une visualisation IHM. Pour cela, vous pouvez générer des variables de
forçage spéciales pour chaque canal E/S mappé à une variable dans l'onglet Mappage E/S de
l'éditeur d'équipement.
Le paramètre Générer des variables de forçage pour le mappage d'E/S doit au préalable être
activé dans l'onglet Paramètres API. Ensuite, chaque fois que l'application est compilée, pour
chaque canal E/S mappé, 2 variables sont générées conformément à la syntaxe qui suit. Les
espaces figurant dans le nom du canal sont remplacés par un trait de soulignement.
<nomappareil>_<nomcanal>_<adresseCEI>_Forçage de type BOOL, pour l'action et la
désactivation du forçage
<nomappareil>_<nomcanal>_<adresseCEI>_Valeur du type de données du canal, pour la
définition de la valeur à forcer sur le canal
Ces variables seront disponibles dans l'aide à la saisie sous la catégorie Variables → IoConfig_Globals_Force_Variables. Vous pouvez les utiliser au sein du système de programmation dans un
objet de programmation quelconque, dans des visualisations, dans une configuration de symbole,
etc.
Un front montant au niveau de la variable de forçage active le forçage de l'E/S avec la valeur
définie par la variable de valeur. Un front descendant désactive le forçage. Pour procéder au
forçage d'une nouvelle valeur, il est nécessaire le désactiver en attribuant la valeur FALSE à la
variable de forçage.
Tenez compte des restrictions qui suivent.
Exemple
Si le mappage est identique à celui de l'illustration de l'onglet Mappage E/S de l'éditeur
d'équipement (voir page 153), lors de la compilation (F11) de l'application, les variables suivantes
sont générées, puis disponibles dans l'aide à la saisie :
 Digitax_ST_Control_word_QW0_Force : BOOL;
 Digitax_ST_Control_word_QW0_Value : UINT;
 Digitax_ST_Target_position_QD1_Force : BOOL;
 Digitax_ST_Target_position_QD1_Value : DINT;
 Digitax_ST_Status_word_IW0_Force : BOOL;
 Digitax_ST_Status_word_IW0_Value : UINT;
 Digitax_ST_Position_actual_value_ID1_Force : BOOL;
 Digitax_ST_Position_actual_value ID1_Value : DINT;
EIO0000000069 02/2018
157
Boîtes de dialogue communes de l'éditeur d'appareil
Restrictions





158
Seuls les canaux qui sont mappés avec une variable dans l'onglet Mappage E/S (qu'elle soit
nouvelle ou existante, une variable doit donc être définie dans la colonne Variable) peuvent être
forcés par les variables implicites décrites ci-dessus.
Il est impossible de forcer les entrées/sorties non utilisées, ainsi que celles qui sont mappées à
l'aide d'une déclaration AT dans un programme d'application.
Les canaux E/S doivent respectivement être utilisés dans au moins une tâche.
Les E/S forcés ne sont pas indiqués dans la surveillance (affichage Surveillance, boîte de
dialogue Mappage E/S). La valeur est utilisée uniquement de façon implicite dans le pilote E/S
pour l'écriture sur l'appareil.
Le symbole de forçage rouge (F) s'affiche correctement pour les entrées forcées, ce qui n'est
pas le cas des entrées/sorties forcées.
EIO0000000069 02/2018
SoMachine
Programme
EIO0000000069 02/2018
Partie III
Programme
Programme
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
7
Composants du programme
161
8
Configuration de tâche
237
9
Gestion des applications
241
EIO0000000069 02/2018
159
Programme
160
EIO0000000069 02/2018
SoMachine
Composants du programme
EIO0000000069 02/2018
Chapitre 7
Composants du programme
Composants du programme
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
7.1
Unité d'organisation de programme (POU)
162
7.2
Bloc fonction
189
7.3
Objets d'application
208
7.4
Application
235
EIO0000000069 02/2018
161
Composants du programme
Sous-chapitre 7.1
Unité d'organisation de programme (POU)
Unité d'organisation de programme (POU)
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
162
Page
POU
163
Ajout et appel de POU
164
Programme
168
Fonction
170
Méthode
173
Propriété
176
Interface
178
Propriété d'interface
182
Action
185
Fonction externe, bloc fonction, méthode
187
POU pour vérifications implicites
188
EIO0000000069 02/2018
Composants du programme
POU
Présentation
Le terme POU (unité d'organisation de programme) s'applique à tous les objets de programmation
(programmes, blocs fonction, fonctions, etc.) utilisés pour créer une application contrôleur.
Gestion des POU
Les POU gérés sous le n?œud Global de l'arborescence des applications ne sont pas spécifiques
aux appareils mais peuvent être instanciés pour être utilisés sur un appareil (application). Pour ce
faire, les POU des programmes doivent être appelés par une tache de l'application
correspondante.
Les POU qui sont insérés de façon explicite sous une application dans l'arborescence des
applications peuvent uniquement être instanciés par les applications figurant en retrait sous cette
application (application enfant). Pour plus d'informations, reportez-vous aux descriptions de
l'arborescence des équipements (voir page 39) et de l'objet (voir page 235) application.
Toutefois, le terme POU est également le nom d'une sous-catégorie de ces objets dans le menu
Ajouter un objet. Il correspond alors à des programmes, à des blocs fonction et à des fonctions.
De façon générale, un objet POU est une unité de programmation. Il s'agit d'un objet géré d'une
façon qui n'est pas spécifique à un appareil sous le nœud Global ou directement sous une
application dans l'arborescence des applications. Il est possible de l'afficher et de le modifier dans
un affichage d'éditeur. Un objet POU peut correspondre à un programme, une fonction ou un bloc
fonction.
Il est possible de définir certaines Propriétés (comme les conditions de compilation, etc.) de
chaque objet POU particulier.
Pour obtenir une description sur la façon de créer un POU, consultez la section Ajout de POU dans
une application (voir page 165). Les POU que vous avez créés sont ajoutés dans l'affichage
Ressources du Catalogue de logiques.
Vous pouvez procéder de deux façons pour ajouter au projet un POU disponible dans l'affichage
Ressources :
 Sélectionnez un POU dans l'affichage Ressources et faites-le glisser au niveau du nœud
approprié dans l'arborescence des applications.
 Sélectionnez un POU dans l'affichage Ressources et faites-le glisser dans l'éditeur de logiques
(voir page 267).
En plus des objets POU, des objets d'appareil sont utilisés pour exécuter le programme sur le
système cible (Ressource, Application, Configuration de tâche etc.). Ils sont gérés dans
l'arborescence des applications.
EIO0000000069 02/2018
163
Composants du programme
Ajout et appel de POU
Introduction
Vous pouvez ajouter des POU (Program Organization Unit) à votre application dans Catalogue de
logiques → Ressources ou dans l'arborescence Applications.
Les différents types de POU sont :
Programme : renvoie une ou plusieurs valeurs lors de l'opération. Toutes les valeurs sont
conservées entre deux exécutions du programme. Celui-ci peut être appelé par une autre POU.
 Bloc fonction : fournit une ou plusieurs valeurs durant le traitement d'un programme
Contrairement à une fonction, les valeurs des variables de sortie, ainsi que des variables
internes nécessaires, doivent persister d'une exécution du bloc fonction à une autre. Par
conséquent, l'appel d'un bloc fonction avec les mêmes arguments (paramètres d'entrée) ne doit
pas toujours produire les mêmes variables de sortie.
 Fonction : produit exactement un élément de données (qui peut être constitué de plusieurs
éléments, tels que des champs ou des structures) lorsqu'elle est traitée. L'appel dans les
langages textuels peut être effectué sous la forme d'un opérateur dans des expressions.

164
EIO0000000069 02/2018
Composants du programme
Ajout de POU à une application
Pour ajouter une POU à l'application du contrôleur, procédez comme suit :
Étape Action
1 Dans la section Catalogue de logiques → Ressources → POU, sélectionnez un
nœud Application, cliquez sur le bouton plus vert, puis exécutez la commande
POU.... Vous pouvez également effectuer un clic droit sur le nœud Application du
contrôleur et choisir Ajouter l'objet → POU.
Les 2 méthodes sont aussi disponibles dans l'arborescence Applications.
Résultat : la boîte de dialogue Ajouter une POU s'ouvre.
2 Dans la boîte de dialogue Ajouter une POU, attribuez un nom à votre POU en
saisissant un nom dans le champ de texte Nom.
NOTE : Le nom ne doit contenir aucun espace. Un nom est attribué par défaut si
vous n'en saisissez pas.
L'attribution d'un nom significatif une POU peut faciliter l'organisation de votre projet.
EIO0000000069 02/2018
165
Composants du programme
Étape Action
3 Sélectionnez un type de POU :
 Programme
 Bloc fonction:
a. Sélectionnez Etendu et cliquez sur le navigateur pour sélectionner le bloc
fonction souhaité dans l'Aide à la saisie.
b. Cliquez sur le bouton OK.
c. Sélectionnez Implémenté et cliquez sur le navigateur pour sélectionner
l'interface souhaitée dans l'Aide à la saisie.
d. Cliquez sur le bouton OK.
e. Dans la zone de liste Langage d'implémentation de méthode, sélectionnez le
langage de programmation souhaité pour la modification du bloc fonction
 Fonction:
a. Cliquez sur le navigateur pour sélectionner le Type de renvoi souhaité dans la
fenêtre Aide à la saisie.
b. Cliquez sur le bouton OK.
4 Dans la zone de liste Langage d'implémentation, sélectionnez le langage de
programmation souhaité pour la modification du programme.
5 Cliquez sur le bouton Ouvrir.
Les POU déjà définies sont répertoriées dans la section Catalogue de logiques → Ressources →
POU. Vous pouvez les ajouter à votre application en les faisant glisser vers l'arborescence
Applications et en les déposant sur un nœud Application. Vous pouvez aussi déposer une POU
dans la vue d'éditeur logique.
Attribution de POU à une tâche
Au moins 1 POU doit être attribuée à une tâche. Pour ajouter une POU à une tâche, procédez
comme suit :
Étape Action
1 Sous le nœud Configuration de tâche du contrôleur, double-cliquez sur la tâche à
laquelle vous souhaitez ajouter votre POU. Dans l'onglet Configuration, cliquez sur
Ajouter l'appel.
Dans l'arborescence Applications, vous pouvez aussi sélectionner un nœud de tâche
pour déclarer votre POU et cliquer sur le bouton plus vert. Exécutez la commande
POU... depuis la liste. Cliquez sur le bouton ....
Résultat : la boîte de dialogue Aide à la saisie s'affiche.
2 Dans l'onglet Catégories de la boîte de dialogue Aide à la saisie, sélectionnez
Programmes (Projet).
3 Cliquez sur la case Représentation structurée pour la décocher.
4 Dans le volet Eléments, sélectionnez une POU.
5 Cliquez sur le bouton OK.
166
EIO0000000069 02/2018
Composants du programme
Appel de POU
Les POU peuvent appeler d'autres POU.
Lorsqu'une POU attribuée à une application appelle une autre POU uniquement par son nom
(sans aucun espace de noms (voir page 751) ajouté), utilisez l'ordre de navigation suivant dans le
projet pour l'appel de la POU :
1.
application actuelle
2.
Gestionnaire de bibliothèques de l'application actuelle dans l'arborescence Outils
3.
Nœud Global de l'arborescence Applications
4.
Gestionnaire de bibliothèques dans le nœud Global de l'arborescence Outils
Si une POU ayant le nom spécifié dans l'appel est disponible dans la bibliothèque du Gestionnaire
de bibliothèques de l'application, ainsi qu'un objet dans le nœud Global de l'arborescence
Applications, il n'existe aucune syntaxe permettant d'appeler explicitement la POU dans le nœud
Global de l'arborescence Applications, uniquement en utilisant son nom. Dans ce cas, déplacez la
bibliothèque concernée du Gestionnaire de bibliothèques de l'application vers le Gestionnaire de
bibliothèques du nœud Global de l'arborescence Applications. Vous pouvez alors appeler la POU
depuis le nœud Global de l'arborescence Applications uniquement par son nom (et, si nécessaire,
celui de la bibliothèque en précédant l'espace de noms de la bibliothèque).
Reportez-vous également au chapitre POU pour vérifications implicites (voir page 188).
EIO0000000069 02/2018
167
Composants du programme
Programme
Présentation
Un programme est un POU qui renvoie une ou plusieurs valeurs pendant l'exécution. Toutes les
valeurs sont conservées entre deux exécutions du programme.
Ajout d'un programme
Pour attribuer un programme à une application existante, sélectionnez le nœud de l'application
dans l'arborescence des applications, cliquez sur le signe plus de couleur verte et exécutez la
commande POU.... Vous pouvez aussi cliquer avec le bouton droit sur le nœud Application et
choisir la commande Ajouter l'objet → POU dans le menu contextuel. Pour ajouter un POU ne
dépendant d'aucune application, sélectionnez le nœud Global dans l'arborescence des
applications, puis exécutez les mêmes commandes.
Dans la boîte de dialogue Ajouter un POU, sélectionnez l'option Programme, entrez un nom de
programme et sélectionnez le langage d'implémentation souhaité. Cliquez sur Ouvrir pour
confirmer. L'éditeur du nouveau programme s'ouvre et vous pouvez commencer à le modifier.
Déclaration d'un programme
Syntaxe :
PROGRAM <nom du programme>
Viennent ensuite les déclarations des variables d'entrée (voir page 558), de sortie (voir page 558)
et des variables de programme. Les variables d'accès sont également disponibles en option.
Exemple de programme
168
EIO0000000069 02/2018
Composants du programme
Appel d'un programme
Un autre POU peut appeler un programme. En revanche, aucun appel de programme n'est
autorisé dans une fonction (voir page 170). Il n'existe aucune instance de programme.
Si un POU a appelé un programme et que les valeurs de celui-ci ont été modifiées, ces
modifications sont conservées jusqu'à l'appel suivant du programme. Ceci est valable même si
l'appel provient d'un autre POU. Il n'en va pas de même lors de l'appel d'un bloc fonction. En effet,
dans ce cas, seules les valeurs de l'instance spécifique du bloc fonction sont modifiées. Seules les
modifications sont affectées lors d'un nouvel appel de la même instance.
Pour définir des paramètres d'entrée et/ou de sortie lors de l'appel d'un programme, dans les
éditeurs de texte (par exemple, ST), affectez des valeurs aux paramètres en les plaçant entre
parenthèses après le nom du programme. Utilisez := pour affecter les valeurs des paramètres
d'entrée, comme lors de l'initialisation des variables (voir page 549) à l'emplacement de
déclaration. Pour les paramètres de sortie, utilisez =>. Voir l'exemple suivant.
Si le programme est inséré via l'aide à la saisie avec l'option Insert with arguments dans l'affichage
de l'implémentation d'un éditeur de texte, il s'affiche automatiquement conformément à cette
syntaxe avec tous les paramètres, même si l'affectation de ces derniers n'est pas obligatoire.
Exemple d'appels de programme
Programme en langage IL :
CAL
LD
ST
PRGexample
in_var:= 33
PRGexample.out_var
erg
(
)
Exemple avec affectation de paramètres (aide à la saisie avec l'option Insert with arguments) :
Programme en langage IL avec arguments :
CAL
PRGexample
in_var:= 33
out_var=> erg
(
,
)
Exemple en langage ST
PRGexample(in_var:= 33);
erg := PRGexample.out_var;
Exemple avec affectation de paramètres (aide à la saisie avec l'option Insert with arguments
comme décrit précédemment) :
PRGexample (in_var:=33, out_var=>erg );
Exemple en langage FBD
Programme en langage FBD :
EIO0000000069 02/2018
169
Composants du programme
Fonction
Présentation
Une fonction est un POU qui produit exactement un élément de données (qui peut être constitué
de plusieurs éléments, tels que des champs ou des structures) lorsqu'elle est traitée. Son appel
dans les langages textuels peut être effectué sous la forme d'un opérateur dans des expressions.
Ajout d'une fonction
Pour attribuer une fonction à une application existante, sélectionnez le nœud de l'application dans
l'arborescence des applications, cliquez sur le signe plus de couleur verte et exécutez la
commande POU.... Vous pouvez aussi cliquer avec le bouton droit sur le nœud Application et
choisir la commande Ajouter l'objet → POU dans le menu contextuel. Pour ajouter un POU ne
dépendant d'aucune application, sélectionnez le nœud Global dans l'arborescence des
applications, puis exécutez les mêmes commandes.
Dans la boîte de dialogue Ajouter un POU, sélectionnez l'option Fonction. Attribuez un Nom (<nom
de la fonction>) et un type de données renvoyées (<type de données>) à la nouvelle fonction et
sélectionnez le langage d'implémentation souhaité. Pour choisir le type de données renvoyées,
cliquez sur le bouton ... pour accéder à la boîte de dialogue Aide à la saisie. Cliquez sur Ouvrir
pour confirmer. L'éditeur de la nouvelle fonction s'ouvre et vous pouvez commencer à la modifier.
Déclaration d'une fonction
Syntaxe :
FUNCTION <nom de la fonction> : <type de données>
Viennent ensuite les déclarations des variables d'entrée et de fonction.
Attribuez un résultat à une fonction. Ceci signifie que le nom de la fonction est utilisé comme
variable de sortie.
Dans une fonction, il est inutile de déclarer les variables locales comme RETAIN ou PERSISTENT,
cela n'aurait aucun effet.
Le compilateur génère les messages appropriés lors de la détection de variables locales déclarées
comme RETAIN ou PERSISTENT.
170
EIO0000000069 02/2018
Composants du programme
Exemple de fonction en langage ST : une telle fonction nécessite trois variables d'entrée et renvoie
le produit des deux dernières ajouté à la première.
Appel d'une fonction
L'appel d'une fonction en langage ST peut être effectué sous la forme d'un opérande dans des
expressions.
En langage IL, un appel de fonction peut être placé uniquement dans les actions d'une étape ou
dans une transition.
Les fonctions (contrairement à un programme ou à un bloc fonction) ne contiennent aucune
information sur l'état interne, de sorte que l'appel d'une fonction avec les mêmes arguments
(paramètres d'entrée) produit toujours les mêmes valeurs (sortie). C'est pour cette raison que les
fonctions ne peuvent contenir ni variables globales ni adresses.
Exemple d'appels de fonction en langage IL
Appels de fonction en langage IL ;
LD
Fct
ST
5
3
22
result
,
Exemple d'appels de fonction en langage ST
result := fct1(5,3,22);
EIO0000000069 02/2018
171
Composants du programme
Exemple d'appels de fonction en langage FBD
Appels de fonction en langage FBD :
Exemple :
fun(formal1 := actual1, actual2); // -> error message
fun(formal2 := actual2, formal1 := actual1); // same semantics as the f
ollowing:
fun(formal1 := actual1, formal2 := actual2);
Conformément à la norme IEC 61131-3, les fonctions peuvent disposer de sorties supplémentaires. Elles doivent être affectées dans l'appel de la fonction. En langage ST, par exemple, la
syntaxe suivante doit être utilisée :
out1 => <variable de sortie 1> | out2 => <variable de sortie 2> | ... variables de sortie
supplémentaires
Exemple
La fonction fun est définie avec les deux variables d'entrée in1 et in2. La valeur renvoyée par
la fonction fun est consignée dans les variables de sortie (voir page 558) déclarées localement
(VAR_OUTPUT) loc1 et loc2.
fun(in1 := 1, in2 := 2, out1 => loc1, out2 => loc2);
172
EIO0000000069 02/2018
Composants du programme
Méthode
Présentation
La fonctionnalité Méthode n'est disponible que si elle est sélectionnée dans le jeu de fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités prédéfinis).
Les méthodes prenant en charge la programmation orientée objet, vous pouvez les utiliser pour
décrire une séquence d'instructions. Contrairement à une fonction, une méthode n'est pas un POU
indépendant, mais doit être affectée à un bloc fonction (voir page 189). Elle peut être considérée
comme une fonction contenant une instance du bloc fonction. Comme une fonction, elle dispose
d'une valeur de retour, d'une partie déclarative propre pour les variables temporaires et les
paramètres.
Pour la programmation orientée objet, vous pouvez également utiliser des interfaces
(voir page 178) pour organiser les méthodes disponibles dans un projet. Une interface est un
ensemble de prototypes de méthodes. Ceci signifie qu'une méthode affectée à une interface
contient uniquement une partie déclarative sans aucune implémentation. Plus loin dans la
déclaration, les variables locales et statiques ne sont pas autorisées, seules les variables d'entrée,
de sortie et d'entrée/sortie le sont. L'implémentation de la méthode doit être effectuée dans le bloc
fonction qui met en œuvre l'interface (voir page 199) et utilise la méthode.
NOTE : Lors de la copie ou du déplacement d'une méthode ou d'une propriété depuis un POU vers
une interface, les implémentations sont supprimées automatiquement. Lors de la copie ou du
déplacement depuis une interface vers un POU, vous devez préciser le langage d'implémentation
désiré.
Insertion d'une méthode
Pour affecter une méthode à un bloc fonction ou à une interface, sélectionnez le bloc fonction ou
l'interface qui convient dans l'arborescence des applications, cliquez sur le signe plus de couleur
verte et exécutez la commande Méthode. Vous pouvez aussi cliquer avec le bouton droit sur le
nœud du bloc fonction ou de l'interface et choisir la commande Ajouter l'objet → Méthode dans le
menu contextuel.
Dans la boîte de dialogue Ajouter une méthode, définissez le Nom, le Type de retour souhaité, le
Langage d'implémentation et le Modificateur d'accès (voir plus bas). Pour choisir le type de
données renvoyées, cliquez sur le bouton ... pour accéder à la boîte de dialogue Aide à la saisie.
Modificateur d'accès : Pour des raisons de compatibilité, les modificateurs d'accès sont facultatifs.
Le modificateur PUBLIC équivaut à ne définir aucun modificateur.
Vous pouvez aussi choisir l'une des options de la liste de sélection :
PRIVATE : L'accès à la méthode est limité au bloc fonction.
 PROTECTED : L'accès à la méthode est limité au bloc fonction et à ses dérivés.
 INTERNAL : L'accès à la méthode est limité à l'espace de noms actuel (la bibliothèque).
 FINAL : Aucun accès en remplacement n'est possible sur la méthode. Ceci permet une
génération de code optimisée.

EIO0000000069 02/2018
173
Composants du programme
NOTE : Les modificateurs d'accès sont valides à partir de la version 3.4.4.0 du compilateur et
peuvent ainsi servir d'identificateurs dans les versions antérieures. Pour plus d'informations,
consultez la table de mappage des versions de compilateur SoMachine/CoDeSys dans le
document SoMachine Compatibilité et migration - Guide utilisateur (voir SoMachine Compatibilité et migration, Guide utilisateur).
Cliquez sur Ouvrir pour confirmer. L'éditeur de méthode s'ouvre.
Déclaration d'une méthode
Syntaxe :
METHOD <modificateur d'accès> <nom de la méthode> : <type de données renvoyées>VAR_IN
PUT ... END_VAR
Pour obtenir une description sur la façon de déclarer les méthodes de traitement des interfaces,
consultez le chapitre Interface (voir page 178).
Appel d'une méthode
Les appels de méthode sont également nommés appels de fonction virtuelle. Pour plus
d'informations, consultez le chapitre Appel de méthodes (voir page 201).
Tenez compte des points suivants lorsque vous appelez une méthode :
Les données d'une méthode sont temporaires et valides uniquement pendant son exécution
(pile des variables). Cela signifie que les variables et les blocs fonction déclarés dans une
méthode sont réinitialisés pour chaque appel de la méthode.
 Dans le corps d'une méthode, l'accès aux variables de l'instance du bloc fonction est autorisé.
 Si nécessaire, utilisez le pointeur THIS (voir page 205) qui pointe toujours vers l'instance son
cours.
 Il est impossible d'accéder aux variables VAR_IN_OUT ou VAR_TEMP du bloc fonction dans une
méthode.
 Les méthodes définies dans une interface (voir page 178) sont uniquement autorisées à
disposer de variables d'entrée, de sortie et d'entrée/sortie, mais pas de corps (partie relative à
l'implémentation).
 Les méthodes telles que les fonctions peuvent contenir des sorties supplémentaires. Elles
doivent être affectées lors de l'appel de la méthode (voir page 201).

174
EIO0000000069 02/2018
Composants du programme
Méthodes spéciales pour un bloc fonction
Méthode
Description
Init
Par défaut, une méthode nommée FB_init est déclarée de façon implicite,
mais peut également l'être de façon explicite. Elle contient le code
d'initialisation du bloc fonction tel que déclaré dans la partie déclarative de
celui-ci. Consultez la méthode (voir page 569) FB_init.
Reinit
Si une méthode nommée FB_reinit est déclarée pour une instance de bloc
fonction, elle est appelée suite à la copie de l'instance (pendant l'opération
Changement en ligne, par exemple) et réinitialise le nouveau module.
Consultez les méthodes (voir page 569) FB_init, FB_reinit.
Exit
Si une méthode existante nommée FB_exit est souhaitée, elle doit être
déclarée de façon explicite. Aucune déclaration implicite n'est possible. La
méthode Exit est appelée pour chaque instance du bloc fonction avant tout
nouveau téléchargement, toute réinitialisation, ou pendant un changement en
ligne pour toutes les instances déplacées ou supprimées. Consultez la
méthode (voir page 572) FB_exit.
Les propriétés (voir page 176) et les propriétés d'interface (voir page 182) correspondent respectivement à une méthode de l'accesseur Set et/ou Get.
Appel de méthode lors de l'arrêt de l'application
Dans le fichier de description de l'appareil, il est possible d'indiquer qu'une méthode donnée doit
toujours être appelée après un cycle de tâches par un bloc fonction donné (d'un module de
bibliothèque). Si cette méthode contient les paramètres d'entrée qui suivent, son traitement peut
également avoir lieu lorsque l'application active n'est pas en cours d'exécution.
Exemple
VAR_INPUT
pTaskInfo : POINTER TO DWORD;
pApplicationInfo: POINTER TO _IMPLICIT_APPLICATION_INFO;
END_VAR
Le programmeur peut vérifier l'état de l'application à l'aide de la commande pApplicationInfo,
puis définir ce qu'il convient de faire.
IF pApplicationInfo^.state = RUNNING THEN <instructions> END_IF
EIO0000000069 02/2018
175
Composants du programme
Propriété
Présentation
La fonctionnalité Propriété n'est disponible que si elle est sélectionnée dans le jeu de fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités prédéfinis).
En plus de la norme IEC 61131-3, une propriété est disponible pour la programmation orientée
objet. Elle comporte une paire de méthodes d'accesseurs (Get, Set). Elles sont appelées
automatiquement lors de l'accès en lecture ou en écriture au bloc fonction associé à la propriété.
Pour insérer une propriété en tant qu'objet sous un nœud programme (voir page 168) ou bloc
fonction (voir page 189), sélectionnez ce nœud dans l'arborescence des applications, cliquez sur
le plus de couleur verte et exécutez la commande Propriété. Vous pouvez aussi cliquer avec le
bouton droit sur le nœud et choisir la commande Ajouter l'objet → Propriété dans le menu
contextuel.
Dans la boîte de dialogue Ajouter une propriété, définissez le Nom, le Type de retour souhaité, le
Langage d'implémentation et éventuellement un Modificateur d'accès.
Les modificateurs d'accès disponibles sont les mêmes que pour les méthodes (voir page 173) :
 PUBLIC
 PRIVATE
 PROTECTED
 INTERNAL
 FINAL
NOTE : Les propriétés peuvent également être utilisées dans des interfaces.
Accesseurs de propriété Get et Set
Deux méthodes (voir page 173) spéciales, nommées accesseurs, sont insérées automatiquement
dans l'arborescence des applications sous l'objet propriété. Vous pouvez en supprimer une si la
propriété doit être utilisée uniquement pour l'écriture ou uniquement pour la lecture. Un accesseur,
tout comme une propriété (voir le paragraphe précédent), peut se voir affecté un modificateur
d'accès dans la partie déclarative ou par le biais de la boîte de dialogue Ajouter un POU, lors de
l'ajout explicite d'un accesseur.

L'accesseur Set est appelé lors de l'écriture de la propriété, c'est-à-dire lorsque le nom de la
propriété est utilisé en entrée.

L'accesseur Get est appelé lors de la lecture de la propriété, c'est-à-dire lorsque le nom de la
propriété est utilisé en sortie.
Exemple :
Le bloc fonction FB1 utilise une variable locale milli. Cette variable est déterminée par les
propriétés Get et Set :
Exemple avec la méthode Get
seconds := milli / 1000;
176
EIO0000000069 02/2018
Composants du programme
Exemple avec la méthode Set
milli := seconds * 1000;
Vous pouvez écrire la propriété du bloc fonction (méthode Set), par exemple avec
fbinst.seconds := 22;.
(fbinst est l'instance de FB1).
Vous pouvez lire la propriété du bloc fonction (méthode Get), par exemple avec
testvar := fbinst.seconds;.
Dans l'exemple suivant, la propriété Prop1 est affectée au bloc fonction fb :
Une propriété peut disposer de variables locales supplémentaires, mais pas d'entrées supplémentaires et, contrairement à une fonction (voir page 170) ou à une méthode (voir page 173), pas de
sorties supplémentaires.
NOTE : Lors de la copie ou du déplacement d'une méthode ou d'une propriété depuis un POU vers
une interface, les implémentations sont supprimées automatiquement. Lors de la copie ou du
déplacement depuis une interface vers un POU, vous devez préciser le langage d'implémentation
désiré.
Surveillance d'une propriété
Il est possible de surveiller une propriété en mode en ligne à l'aide de la surveillance en ligne
(voir page 376) ou d'une liste de surveillance (voir page 448). L'ajout d'un pragma {attribute
'monitoring:=variable'} (voir le chapitre Surveillance des attributs (voir page 602)) en
plus de sa définition constitue une condition préalable à la surveillance d'une propriété.
EIO0000000069 02/2018
177
Composants du programme
Interface
Présentation
La fonctionnalité Interface n'est disponible que si elle est sélectionnée dans le jeu de fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités prédéfinis).
L'utilisation des interfaces permet la programmation orientée objet. Une interface POU décrit un
ensemble de méthodes (voir page 173) et des prototypes de propriétés (voir page 176). Le terme
prototype signifie que des déclarations sont fournies, mais pas la mise en œuvre. Une interface
peut être décrite comme l'environnement vide d'un bloc fonction (voir page 189). Elle doit être mise
en œuvre (voir page 199) dans la déclaration du bloc fonction afin d'être réalisée dans les
instances de bloc fonction. Tant qu'elle ne fait pas partie de la définition d'un boc fonction, elle ne
peut pas recevoir le code de programmation propre à ce dernier. Un bloc fonction peut mettre en
œuvre une ou plusieurs interfaces.
La même méthode peut être réalisée avec des paramètres identiques, mais par différents blocs
fonction utilisant des codes de mise en œuvre distincts. Ainsi, une interface peut être
utilisée/appelée dans n'importe quel POU sans que ce dernier ait à identifier le bloc fonction
spécifique concerné.
Exemple de définition et d'utilisation d'une interface dans un bloc fonction
Une interface IFT est insérée sous une application. Elle contient deux méthodes, Method1 et
Method2. Ni l'interface ni les méthodes ne contiennent de code de mise en œuvre. Seule la partie
déclarative des méthodes doit être remplie avec les déclarations de variable souhaitées :
Interface avec deux méthodes :
Un ou plusieurs blocs fonction peuvent désormais être insérés pour la mise en œuvre de l'interface
ITF définie ci-dessus.
178
EIO0000000069 02/2018
Composants du programme
Création d'un bloc fonction mettant en œuvre une interface
Lors de l'ajout d'un bloc fonction POU dans l'arborescence des applications, les méthodes
Method1 et Method2 sont insérées automatiquement dessous, conformément à la définition de
l'interface ITF. Le code de mise en œuvre du bloc fonction peut alors y être introduit.
Utilisation de l'interface dans la définition du bloc fonction
EIO0000000069 02/2018
179
Composants du programme
Une interface peut étendre d'autres interfaces en utilisant EXTENDS dans sa définition (voir
l'exemple suivant Exemple d'extension d'une interface (voir page 181)). Cette opération est
également possible pour les blocs fonction.
Propriétés d'interface
Une interface peut également définir une propriété d'interface contenant les méthodes d'accesseur
Get et/ou Set. Pour plus d'informations sur les propriétés, consultez les chapitres Propriété
(voir page 176) et Propriété d'interface (voir page 182). Une propriété dans une interface telle que
les méthodes susceptibles d'être incluses n'est autre qu'un prototype, ce qui signifie qu'elle ne
contient pas de code de mise en œuvre. Comme les méthodes, elle est ajoutée automatiquement
au bloc fonction qui met en œuvre l'interface. Elle peut y recevoir un code de programmation
spécifique.
Observations
Les informations suivantes doivent être prises en compte :
 La déclaration de variables dans une interface n'est pas autorisée. Une interface ne contient ni
corps (partie relative à l'implémentation) ni actions. Seul un ensemble de méthodes est défini
dans une interface et ces méthodes peuvent uniquement contenir des variables d'entrée, des
variables de sortie et des variables d'entrée/sortie.

Les variables déclarées avec le type d'une interface sont traitées comme des références.

Des méthodes et des propriétés dont les noms sont identiques à ceux qu'elles portent dans
l'interface doivent être affectées à un bloc fonction mettant en œuvre une interface. Elles
doivent contenir des entrées, des sorties et des entrées/sorties portant le même nom.
NOTE : Lors de la copie ou du déplacement d'une méthode ou d'une propriété depuis un POU vers
une interface, les implémentations sont supprimées automatiquement. Lors de la copie ou du
déplacement depuis une interface vers un POU, vous devez préciser le langage d'implémentation
désiré.
Insertion d'une interface
Pour ajouter une interface à une application, sélectionnez le nœud Application dans
l'arborescence des applications ou dans Catalogue de logiques → Ressources, cliquez sur le plus
de couleur verte et sélectionnez Ajouter d'autres objets... → Interface. Vous pouvez également
exécuter la commande Ajouter un objet → Interface. Si vous sélectionnez le nœud Global avant
d'exécuter la commande, la nouvelle interface est disponible pour toutes les applications.
Dans la boîte de dialogue Ajouter Interface, définissez le nom de la nouvelle interface (<nom de
l'interface>). Vous pouvez activer l'option Étendu : si vous souhaitez que l'interface actuelle soit
l'extension (voir page 196) d'une autre interface.
180
EIO0000000069 02/2018
Composants du programme
Exemple d'extension d'une interface
Si l'interface ITF1 étend l'interface ITF_base, toutes les méthodes décrites par ITF_base sont
automatiquement disponibles dans ITF1.
Extension d'une interface
Cliquez sur Ajouter pour confirmr les paramètres. L'éditeur de la nouvelle interface s'ouvre.
Déclaration d'une interface
Syntaxe
INTERFACE <nom de l'interface>
Pour une interface en extension d'une autre interface :
INTERFACE <nom de l'interface> EXTENDS <nom de l'interface de base>
Exemple
INTERFACE interface1 EXTENDS interface_base
Ajout de l'ensemble des méthodes souhaitées
Pour terminer la définition de l'interface, ajoutez l'ensemble des méthodes souhaitées. Pour cela,
sélectionnez le nœud de l'interface dans l'arborescence des applications ou dans Catalogue de
logiques → Ressources et exécutez la commande Méthode d'interface.... La boîte de dialogue
Add Interface Method s'ouvre pour définir une méthode pour l'interface. Vous pouvez aussi
sélectionner le nœud de l'interface dans l'arborescence des applications, cliquer sur le signe plus
de couleur verte et sélectionner Méthode d'interface. Ajoutez autant de méthodes que vous le
souhaitez, sans oublier qu'elles ne peuvent contenir que des variables d'entrée, des variables de
sortie et des variables d'entrée/sortie, mais pas de corps (partie relative à l'implémentation).
EIO0000000069 02/2018
181
Composants du programme
Propriété d'interface
Présentation
Outre ses méthodes et ses programmes, une propriété, qui permet la programmation orientée
objet, peut être utilisée dans la définition d'une interface (voir page 178). On parle alors de
propriété d'interface. Pour l'ajouter à l'interface sélectionnée dans l'arborescence des applications,
cliquez sur le signe plus de couleur verte et exécutez la commande Propriété d'interface. Vous
pouvez aussi cliquer avec le bouton droit sur le nœud de l'interface et choisir la commande Ajouter
l'objet → Propriété d'interface dans le menu contextuel.
Pour plus d'informations sur une propriété et les méthodes associées, consultez la section
Propriété (voir page 176)
Une propriété d'interface étend la description d'une interface. Comme l'interface, elle se contente
de définir les méthodes d'accesseur Get et/ou Set (vous pouvez en utiliser une ou les deux)
associées à l'interface sans toutefois fournir de code de mise en œuvre pour ces méthodes. Lors
de l'extension d'un bloc fonction avec une interface contenant des propriétés, ces dernières et les
accesseurs Get et/ou Set qui leur sont associés sont insérés automatiquement dans
l'arborescence des équipements sous le bloc fonction. Vous pouvez les modifier pour ajouter le
code de mise en œuvre souhaité.
Exemple
Dans la figure qui suit, l'interface NamedItem dispose de la propriété Name associée aux
méthodes d'accesseur Get et Set. Dans cet exemple, il est prévu que l'accesseur Get lise le nom
des différents éléments d'un bloc fonction mettant en œuvre l'interface. L'accesseur Set peut
servir à écrire un nom dans ce bloc fonction. Les deux méthodes ne peuvent pas être modifiées
dans la définition de l'interface, mais elles peuvent l'être par la suite dans le bloc fonction.
Le bloc fonction FB_Name_xy1 a été ajouté dans l'arborescence des équipements, mettant en
œuvre l'interface (FUNCTION_BLOCK FB_Name_xy1 IMPLEMENTS NamedItem). La propriété
Name associée aux méthodes Get et Set a donc été insérée automatiquement sous
FB_Name_xy1. Vous pouvez y modifier les méthodes d'accesseur, par exemple la façon dont est
lue la variable name_of_xy1 pour utiliser le nom got pour un élément. Dans un autre bloc
fonction qui met également en œuvre la même interface, il est possible d'entrer un code différent
pour la méthode Get. Ce code peut fournir le nom d'un autre élément. La méthode Set de cet
exemple sert à écrire un nom défini par le programme PLC_PRG ('abc') dans le bloc fonction
FB_Name_xy2.
182
EIO0000000069 02/2018
Composants du programme
Interface NamedItem mise en œuvre dans deux blocs fonction
Deux blocs fonction mettant en œuvre l'interface NamedItem
Bloc fonction FB_Name_xy1
FUNCTION_BLOCK FB_Name_xy1 IMPLEMENTS NamedItem
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
name_of_xy1: STRING:='xy1';
END_VAR
Bloc fonction FB_Name_xy2
FUNCTION_BLOCK FB_Name_xy2 IMPLEMENTS NamedItem
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
name_of_xy2: STRING:='xy2';
name_got_from_PLC_PRG: STRING;
END_VAR
EIO0000000069 02/2018
183
Composants du programme
Mise en œuvre du code dans les méthodes d'accesseur Get et Set sous les deux blocs fonction
FB_Name_xy1.Get
VAR
END_VAR
name := name_of_xy1;
FB_Name_xy2.Get
VAR
END_VAR
name := name_of_xy2;
FB_Name_xy2.Set
VAR
END_VAR
name_got_from_PLC_PRG:=name;
Accès aux blocs fonction à l'aide du programme PLC_PRG
PROGRAM PLC_PRG
VAR
FBxy1_inst: FB_Name_xy1;
FBxy2_inst: FB_Name_xy2;
namexy1: STRING;
namexy2: STRING;
END_VAR
//get name out of fb
namexy1:=FBxy1_inst.Name;
namexy2:=FBxy2_inst.Name;
//write name to fb
FBxy2_inst.Name:='abc';
184
EIO0000000069 02/2018
Composants du programme
Action
Présentation
Vous pouvez définir des actions et les affecter aux blocs fonction (voir page 189) et aux
programmes (voir page 168). Une action est une mise en œuvre supplémentaire. Elle peut être
générée dans un langage différent de celui de la mise en œuvre de base. Un nom est attribué à
chaque action.
Une action utilise les données du bloc fonction ou du programme auquel elle appartient. Elle utilise
les variables d'entrée/sortie et les variables locales définies et ne contient pas de déclarations
propres.
Exemple d'action d'un bloc fonction
L'illustration suivante montre une action dans un bloc fonction
Dans cet exemple, chaque appel du bloc fonction FB1 augmente ou diminue la variable de sortie
out en fonction de la valeur de la variable d'entrée in. L'appel de l'action Reset du bloc fonction
règle la valeur de la variable de sortie out sur 0. La même variable out est écrite dans les deux
cas.
Insertion d'une action
Pour ajouter une action, sélectionnez respectivement le nœud du programme ou du bloc fonction
dans l'arborescence des applications ou sous le nœud Global de l'arborescence des applications,
cliquez sur le plus de couleur verte et exécutez la commande Action.... Vous pouvez aussi cliquer
avec le bouton droit sur le nœud du programme ou du bloc fonction et choisir la commande Ajouter
l'objet → Action. Dans la boîte de dialogue Ajouter une action, définissez le Nom de l'action et le
Langage d'implémentation souhaité.
EIO0000000069 02/2018
185
Composants du programme
Appel d'une action
Syntaxe
<Program_name>.<Action_name>
ou
<Instance_name>.<Action_name>
Examinez la notation en langage FBD (voir l'exemple qui suit).
Pour appeler une action dans son propre bloc, c'est-à-dire le programme ou le bloc fonction auquel
elle appartient, il suffit d'utiliser le nom de l'action.
Exemples
Cette section donne des exemples d'appel de l'action décrite ci-dessus à partir d'un autre POU.
Déclaration pour tous les exemples :
PROGRAM PLC_PRG
VAR
Inst : Counter;
END_VAR
Appel de l'action Reset dans un autre POU, programmé en langage IL :
CAL Inst.Reset(In := FALSE)
LD Inst.out
ST ERG
Appel de l'action Reset dans un autre POU, programmé en langage ST :
Inst.Reset(In := FALSE);
Erg := Inst.out;
Appel de l'action Reset dans un autre POU, programmé en langage FBD :
Action en langage FBD
NOTE : La norme IEC ne reconnaît pas les actions autres que celles du diagramme fonctionnel en
séquence (SFC). Ces actions constituent une partie essentielle qui contient les instructions à
traiter aux différentes étapes du diagramme.
186
EIO0000000069 02/2018
Composants du programme
Fonction externe, bloc fonction, méthode
Présentation
Le système de programmation ne génère aucun code pour une fonction externe, un bloc fonction
ou une méthode.
Pour créer un POU externe, procédez comme suit :
Etape
Action
1.
Ajoutez le POU souhaité sous le nœud Global dans l'arborescence des
applications du projet comme tout autre objet interne et définissez
respectivement les variables d'entrée et de sortie.
NOTE : Définissez les variables locales dans des blocs fonction externes. Ne
les définissez pas dans des fonctions ou méthodes externes. Il est impossible
d'utiliser les variables VAR_STAT dans le système d'exécution.
2.
Définissez le POU comme une entité externe :
Pour cela, cliquez avec le bouton droit sur le POU sous le nœud Global dans
l'arborescence des applications et choisissez la commande Propriétés dans le
menu contextuel. Ouvrez l'onglet Compiler et activez l'option External
Implementation (Late link in the runtime system).
Une fonction, une méthode ou un bloc fonction équivalent doit être mis en œuvre dans le système
d'exécution. Lors du téléchargement d'un programme, une recherche de l'élément équivalent de
chaque POU externe est effectuée dans le système d'exécution. Lorsqu'il est trouvé, l'élément
équivalent est lié.
EIO0000000069 02/2018
187
Composants du programme
POU pour vérifications implicites
Présentation
Sous une application, vous pouvez ajouter des POU spéciaux. Ils doivent être disponibles pour
pouvoir utiliser la fonctionnalité de vérification fournie de façon implicite pour les tableaux et les
limites de plages, les divisions par zéro et les pointeurs pendant l'exécution. Vous pouvez
désactiver cette fonctionnalité pour les appareils intégrant ces fonctions de vérification par le biais
d'une bibliothèque implicite spéciale.
Pour ce faire, les fonctions suivantes sont disponibles dans la boîte de dialogue Ajouter un objet
→ POU pour vérifications implicites :
 CheckBounds (voir page 638)
 CheckDivInt (voir page 669)
 CheckDivLInt (voir page 669)
 CheckDivReal (voir page 669)
 CheckDivLreal (voir page 669)
 CheckRange (voir page 645)
 CheckRangeUnsigned (voir page 645)
 CheckPointer (voir page 628)
Suite à son insertion, le POU de vérification est ouvert dans l'éditeur correspondant au langage
d'implémentation sélectionné. Une mise en œuvre par défaut que vous pouvez adapter à vos
besoins est fournie dans l'éditeur ST.
Suite à l'insertion de l'un des POU de vérification, l'option n'est plus accessible dans la boîte de
dialogue afin d'éviter l'insertion d'un doublon. Si tous les types de POU de vérification ont déjà été
ajoutés sous l'application, l'option POU pour vérifications implicites n'est plus accessible dans la
boîte de dialogue Ajouter un objet.
ATTENTION
FONCTIONNALITÉ DE VÉRIFICATIONS IMPLICITES INCORRECTE
Ne modifiez pas la partie déclarative d'une fonction de vérification implicite afin de ne pas
compromettre son intégrité fonctionnelle.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
NOTE : À partir de la version SoMachine V4.0, suite à la suppression de la fonction de vérification
implicite (CheckBounds, par exemple) de votre application, aucun Changement en ligne ne peut
être effectué, mais uniquement un téléchargement. Un message explicatif s'affiche.
188
EIO0000000069 02/2018
Composants du programme
Sous-chapitre 7.2
Bloc fonction
Bloc fonction
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Informations générales
190
Instance de bloc fonction
193
Appel d'un bloc fonction
194
Extension d'un bloc fonction
196
Mise en œuvre d'interfaces
199
Appel de méthodes
201
Pointeur SUPER
203
Pointeur THIS
205
EIO0000000069 02/2018
189
Composants du programme
Informations générales
Présentation
Un bloc fonction est un POU (voir page 163) qui fournit une ou plusieurs valeurs lors du traitement
d'un programme de contrôleur. Contrairement à une fonction, les valeurs des variables de sortie,
ainsi que des variables internes nécessaires, doivent persister d'une exécution du bloc fonction à
une autre. Par conséquent, l'appel d'un bloc fonction avec les mêmes arguments (paramètres
d'entrée) ne doit pas toujours produire les mêmes variables de sortie.
En plus de la fonctionnalité décrite par la norme IEC11631-3, la programmation orientée objet est
prise en charge et des blocs fonction peuvent être définis en tant qu'extensions (voir page 196)
d'autres blocs fonction. Ils peuvent contenir des définitions d'interface (voir page 199) relatives à l'
appel de méthodes (voir page 201). Il est donc possible d'utiliser l'héritage lors de la
programmation avec des blocs fonction.
L'appel d'un bloc fonction se fait toujours par le biais d'une instance (voir page 193), soit une
reproduction (copie) du bloc fonction.
Ajout d'un bloc fonction
Pour ajouter un bloc fonction dans une application existante, sélectionnez respectivement le nœud
dans Catalogue de logiques → Ressources ou dans l'arborescence des applications, cliquez sur
le signe plus de couleur verte et choisissez POU.... Vous pouvez aussi cliquer avec le bouton droit
sur le nœud et choisir la commande Ajouter l'objet → POU. Pour créer un bloc fonction
indépendant d'une application, sélectionnez le nœud Global dans l'arborescence des applications
ou Ressources.
Dans la boîte de dialogue Ajouter un objet, sélectionnez l'option Bloc fonction, entrez un Nom
(<identificateur>) de bloc fonction et choisissez le Langage d'implémentation souhaité.
Vous pouvez en outre définir les options suivantes :
190
Option
Description
Étendu
Entrez le nom d'un autre bloc fonction disponible dans le
projet afin de l'utiliser comme base du bloc fonction actuel.
Pour plus d'informations, consultez Extension d'un bloc
fonction (voir page 196).
Implémenté
Entrez les noms des interfaces (voir page 178) disponibles
dans le projet qui doivent être implémentées dans le bloc
fonction actuel. Vous pouvez entrer plusieurs interfaces
séparées par des virgules. Pour plus d'informations,
consultez Mise en œuvre d'interfaces (voir page 199).
EIO0000000069 02/2018
Composants du programme
Option
Description
Modificateur d'accès
Pour des raisons de compatibilité, les modificateurs d'accès
sont facultatifs. Le modificateur PUBLIC équivaut à ne définir
aucun modificateur.
Vous pouvez aussi choisir l'une des options de la liste de
sélection :
 INTERNAL : L'accès au bloc fonction est limité à l'espace
de noms actuel (la bibliothèque).
 FINAL : Il est impossible de dériver l'accès si bien que
vous ne pouvez pas étendre un bloc fonction par un autre.
Ceci permet une génération de code optimisée.
NOTE : Les modificateurs d'accès sont valides à partir de
la version 3.4.4.0 du compilateur et peuvent ainsi servir
d'identificateurs dans les versions antérieures.
Pour plus d'informations, consultez la table de mappage
des versions de compilateur SoMachine/CoDeSys dans
le document SoMachine Compatibilité et migration Guide utilisateur (voir SoMachine - Compatibilité et
migration, Guide utilisateur).
Langage
d'implémentation de
méthode
Choisissez le langage de programmation souhaité pour
toutes les méthodes créées par le biais de la mise en œuvre
de l'interface, sans tenir compte de celui défini pour le bloc
fonction lui-même.
Cliquez sur Ajouter pour confirmer les paramètres. L'éditeur du nouveau bloc fonction s'ouvre et
vous pouvez commencer à le modifier.
Déclaration d'un bloc fonction
Syntaxe
FUNCTION_BLOCK <modificateur d'accès> <nom du bloc fonction> | EXTENDS <nom du bloc
fonction> | IMPLEMENTS <liste des noms d'interface séparés par des virgules>
Viennent ensuite les déclarations des variables.
EIO0000000069 02/2018
191
Composants du programme
Exemple
Le bloc fonction FBexample illustré à la figure suivante dispose de deux variables d'entrée et de
deux variables de sortie out1 et out2.
out1 est la somme les deux entrées et out2 est le résultat de la comparaison d'égalité.
Exemple de bloc fonction en langage ST
192
EIO0000000069 02/2018
Composants du programme
Instance de bloc fonction
Présentation
L'appel (voir page 194) des blocs fonction se fait par le biais d'une instance qui n'est autre qu'une
reproduction (copie) d'un bloc fonction (voir page 190).
Chaque instance dispose d'un identificateur unique (nom d'instance) et d'une structure de données
contenant les variables d'entrée, de sortie et internes qui lui sont associées.
Comme les variables, les instances sont déclarées localement ou globalement. Le nom du bloc
fonction est fourni sous forme de type de données d'un identificateur.
Syntaxe de déclaration d'une instance de bloc fonction
<identificateur>:<nom du bloc fonction>;
Exemple
Déclaration (par exemple, dans la partie déclarative d'un programme) de l'instance INSTANCE du
bloc fonction FUB :
INSTANCE: FUB;
Les parties déclaratives des blocs fonction et des programmes peuvent contenir des déclarations
d'instances. Ces dernières ne sont en revanche pas autorisées dans les fonctions.
EIO0000000069 02/2018
193
Composants du programme
Appel d'un bloc fonction
Présentation
L'appel des blocs fonction (voir page 190) se fait par le biais d'une instance de bloc fonction. Une
instance de bloc fonction doit donc être déclarée localement ou globalement. Pour plus
d'informations sur cette déclaration, consultez le chapitre Instance de bloc fonction
(voir page 193).
Il est ensuite possible d'accéder à la variable souhaitée du bloc fonction à l'aide de la syntaxe qui
suit.
Syntaxe
<nom d'instance>.<nom de la variable>
Observations







L'accès de l'extérieur d'une instance de bloc fonction est possible uniquement pour les variables
d'entrée et de sortie d'un bloc fonction, mais en aucune façon pour ses variables internes.
L'accès à une instance de bloc fonction est limité au POU (voir page 163) dans lequel elle a été
déclarée, sauf s'il s'agit d'une déclaration globale.
Lors de l'appel de l'instance, les valeurs souhaitées peuvent être affectées aux paramètres du
bloc fonction. Voir le paragraphe suivant Affectation de paramètres lors d'un appel.
Les variables d'entrée/sortie (VAR_IN_OUT) d'un bloc fonction sont transmises en tant que
pointeurs.
En langage SFC, les appels de bloc fonction peuvent uniquement se produire dans des étapes.
Il est possible d'utiliser le nom de l'instance d'un bloc fonction comme paramètre d'entrée pour
une fonction ou un autre bloc fonction.
Toutes les valeurs d'un bloc fonction sont conservées jusqu'au prochain traitement du bloc
fonction. Ainsi, les appels de bloc fonction ne renvoient pas toujours les mêmes valeurs de
sortie, même lorsque des arguments identiques sont utilisés.
NOTE : Si au moins l'une des variables du bloc fonction est rémanente, l'ensemble de l'instance
est stocké dans la zone des données conservées.
Exemples explicitant l'accès aux variables d'un bloc fonction
Supposons que le bloc fonction fb dispose d'une variable d'entrée in1 de type INT. L'appel de
cette variable depuis le programme prog est illustré ci-dessous. Voir la déclaration et la mise en
œuvre en langage ST :
194
EIO0000000069 02/2018
Composants du programme
PROGRAM prog
VAR
inst1:fb;
END_VAR
inst1.in1:=22;
(* fb is called and input variable in1 gets assigned v
alue 22 *)
inst1(); (* fb is called, this is needed for the following access on th
e output variable *)
res:=inst1.outl; (* output variable of fb is read *)
Exemple d'appel d'un bloc fonction en langage FBD :
Affectation de paramètres lors d'un appel
Dans les langages de texte IL et ST, vous pouvez définir immédiatement des paramètres d'entrée
et/ou de sortie lors de l'appel du bloc fonction. Il est possible d'affecter les valeurs de ces
paramètres en les plaçant entre parenthèses après le nom d'instance du bloc fonction. Utilisez :=
pour affecter les valeurs des paramètres d'entrée, comme lors de l'initialisation des variables
(voir page 549) à l'emplacement de déclaration. Utilisez => pour les paramètres de sortie.
Exemple d'appel avec affectations
Dans cet exemple, un bloc fonction de temporisateur (instance CMD_TMR) est appelé avec des
affectations pour les paramètres IN et PT. La variable de résultats Q est ensuite affectée à la
variable A. L'adressage de la variable de résultat utilise le nom de l'instance du bloc fonction suivi
d'un point et du nom de la variable :
CMD_TMR(IN := %IX5, PT := 300);
A:=CMD_TMR.Q
Exemple d'insertion par le biais de l'aide à la saisie avec des arguments
Si l'instance est insérée via l'aide à la saisie avec l'option Insérer avec des arguments dans
l'affichage de l'implémentation d'un POU en langage ST ou IL, elle s'affiche automatiquement
conformément à la syntaxe illustrée dans l'exemple qui suit avec tous les paramètres, même si
l'affectation de ces derniers n'est pas obligatoire.
Dans l'exemple mentionné précédemment, l'appel aurait l'aspect ci-dessous.
CMD_TMR(in:=, pt:=, q=>)
-> fill in, e.g.:
CMD_TMR(in:=bvar, pt:=t#200ms, q=>bres);
EIO0000000069 02/2018
195
Composants du programme
Extension d'un bloc fonction
Présentation
Grâce à la prise en charge de la programmation orientée objet, il est possible de dériver un bloc
fonction d'un autre bloc fonction. Ceci signifie qu'un bloc fonction peut en étendre un autre,
récupérant ainsi automatiquement les propriétés du bloc fonction de base en plus des siennes.
L'extension est effectuée en introduisant le mot-clé EXTENDS dans la déclaration d'un bloc
fonction. Vous pouvez déjà choisir l'option EXTENDS lors de l'ajout d'un bloc fonction dans un projet
par le biais de la boîte de dialogue Ajouter un objet.
Syntaxe
FUNCTION_BLOCK <nom du bloc fonctionnel> EXTENDS <nom du bloc fonctionnel>
Viennent ensuite les déclarations des variables.
Exemple
Définition du bloc fonction fbA
FUNCTION_BLOCK fbA
VAR_INPUT
x:int;
END_VAR
...
Définition du bloc fonction fbB
FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
ivar: INT := 0;
END_VAR
...
Extension avec EXTENDS
Signification de l'extension avec EXTENDS :
 fbB contient toutes les données et toutes les méthodes définies par fbA. Il est possible d'utiliser
une instance de fbB dans n'importe quel contexte dans lequel un bloc fonction de type fbA est
attendu.
 fbB peut remplacer les méthodes définies dans fbA. Ceci signifie que fbB peut déclarer une
méthode portant le même nom qu'une méthode déclarée par A et avec des entrées et une sortie
identiques.
196
EIO0000000069 02/2018
Composants du programme


fbB ne peut pas utiliser des variables de bloc fonction portant le même nom que celles utilisées
dans fbA. Si c'est le cas, le compilateur génère un message d'erreur.
Il est possible d'accéder aux variables et aux méthodes de fbA directement à partir de fbB à
l'aide du pointeur SUPER (voir page 203) (SUPER^.<method>).
NOTE : Les héritages multiples ne sont pas autorisés.
Exemple
FUNCTION_BLOCK FB_Base
VAR_INPUT
END_VAR
VAR_OUTPUT
iCnt : INT;
END_VAR
VAR
END_VAR
THIS^.METH_DoIt();
THIS^.METH_DoAlso();
METHOD METH_DoIt : BOOL
VAR
END_VAR
iCnt := -1;
METH_DoIt := TRUE;
METHOD METH_DoAlso : BOOL
VAR
END_VAR
METH_DoAlso := TRUE;
FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
END_VAR
// Calls the method defined under FB_1
THIS^.METH_DoIt();
THIS^.METH_DoAlso();
// Calls the method defined under FB_Base
SUPER^.METH_DoIt();
SUPER^.METH_DoAlso();
METHOD METH_DoIt : BOOL
VAR
EIO0000000069 02/2018
197
Composants du programme
END_VAR
iCnt := 1111;
METH_DoIt := TRUE;
PROGRAM PLC_PRG
VAR
Myfb_1: FB_1;
iFB: INT;
iBase: INT;
END_VAR
Myfb_1();
iBase := Myfb_1.iCnt_Base;
iFB := Myfb_1.iCnt_THIS;
198
EIO0000000069 02/2018
Composants du programme
Mise en œuvre d'interfaces
Présentation
Pour prendre en charge la programmation orientée objet, un bloc fonction peut mettre en œuvre
plusieurs interfaces (voir page 178) qui permettent d'utiliser des méthodes (voir page 173).
Syntaxe
FUNCTION_BLOCK <nom du bloc fonction> IMPLEMENTS <nom de l'interface_1>|,<nom de
l'interface_2>, ..., <nom de l'interface_n>
Un bloc fonction qui met en œuvre une interface doit contenir toutes les méthodes et toutes les
propriétés (propriétés d'interface (voir page 182)) définies par cette interface. Il s'agit du nom, des
entrées et de la sortie de la méthode ou propriété concernée qui doivent être rigoureusement
identiques.
Pour cela, lors de la création d'un nouveau bloc fonction mettant en œuvre une interface, toutes
les méthodes et toutes les propriétés définies dans cette interface sont automatiquement insérées
sous le nouveau bloc fonction dans l'arborescence des applications.
NOTE : Si des méthodes sont ajoutées à la définition d'interface par la suite, elles ne sont pas
ajoutées automatiquement dans les blocs fonction concernés. Exécutez la commande
Implémenter les interfaces... (voir SoMachine, Commandes de menu, Aide en ligne) pour effectuer
cette mise à jour de façon explicite.
Exemple
L'INTERFACE I1 contient la méthode GetName :
METHOD GetName : STRING
Chacun des blocs fonction A et B met en œuvre l'interface I1 :
FUNCTION_BLOCK A IMPLEMENTS I1
FUNCTION_BLOCK B IMPLEMENTS I1
Ainsi, la méthode GetName doit être disponible dans les deux blocs fonction et sera placée
automatiquement sous chacun lors de leur insertion dans l'arborescence des applications.
Examinez la déclaration d'une variable de type I1 :
FUNCTION DeliverName : STRING
VAR_INPUT
l_i : I1;
END_VAR
Cette entrée peut recevoir tous les blocs fonction qui mettent en œuvre l'interface I1.
Exemple d'appels de fonction :
DeliverName(l_i := A_instance); // call with instance of type A
DeliverName(l_i := B_instance); // call with instance of type B
EIO0000000069 02/2018
199
Composants du programme
NOTE : Une instance de bloc fonction doit être affectée à une variable de type interface pour
pouvoir appeler une méthode pour cette variable. Une variable de type interface fait toujours
référence à l'instance de bloc fonction affectée.
Un appel à la méthode d'interface se traduisit donc par un appel à la mise en œuvre du bloc
fonction. Dès que la référence est affectée, l'adresse correspondante est surveillée en mode en
ligne. Si aucune référence n'a encore été affectée, la valeur 0 s'affiche lors de la surveillance en
mode en ligne.
Dans l'exemple, consultez la partie relative à la mise en œuvre de la fonction DeliverName :
DeliverName := l_i.GetName(); // in this case it depends on the "real"
type of l_i whether A.GetName or B.GetName is called
NOTE : Examinez également la possibilité d'étendre un bloc fonction (voir page 196) en ajoutant
le mot-clé EXTENDS dans la déclaration.
200
EIO0000000069 02/2018
Composants du programme
Appel de méthodes
Présentation
La programmation orientée objet avec des blocs fonction, en plus des possibilités d'extension
(voir page 196) via EXTENDS, rend possible l'utilisation d'interfaces (voir page 199) et de l'héritage.
Ceci nécessite la résolution dynamique des appels de méthode, aussi appelés appels de fonction
virtuelle.
Un peu plus longs que les appels de fonction ordinaire, les appels de fonction virtuelle sont utilisés
dans les situations suivantes :
 appel effectué par le biais d'un pointeur vers un bloc fonction (pfub^.method) ;
 appel d'une méthode de variable d'interface (interface1.method) ;
 appel d'une méthode par une autre méthode du même bloc fonction ;
 appel effectué par le biais d'une référence à un bloc fonction :
 possibilité d'affecter une instance de bloc fonction de type dérivé à la variable VAR_IN_OUT
d'un bloc fonction de base.
Avec les appels de fonction virtuelle, il est possible qu'un même appel dans le code source d'un
programme fasse appel à des méthodes différentes lors de l'exécution.
Pour plus d'informations et un examen détaillé, consultez les sections :
 Méthode (voir page 173) pour obtenir des informations complémentaires sur les méthodes.
 Pointeur THIS (voir page 205) pour obtenir des informations sur l'utilisation du pointeur THIS.
 Pointeur SUPER (voir page 203) pour obtenir des informations sur l'utilisation du pointeur
SUPER.
Appel de méthodes
Conformément à la norme IEC 61131-3 les méthodes telles que les fonctions (voir page 170)
ordinaires peuvent disposer de sorties supplémentaires. Elles doivent être affectées dans l'appel
de méthode avec la syntaxe suivante :
<méthode>(in1:=<valeur> |, autres affectations en entrée, out1 => <variable de sortie 1> | out2 =>
<variable de sortie 2> | ...autres variables de sortie)
De cette façon, la sortie de la méthode est consignée dans les variables de sortie déclarées
localement comme indiqué dans l'appel.
EIO0000000069 02/2018
201
Composants du programme
Exemple
Supposons que les blocs fonction fub1 et fub2 étendent (EXTEND) le bloc fonction fubbase et
mettent en œuvre (IMPLEMENT) l'interface interface1. La méthode method1 est incluse.
Utilisation possible des interfaces et des appels de méthode :
PROGRAM PLC_PRG
VAR_INPUT
b : BOOL;
END_VAR
VAR
pInst : POINTER TO fubbase;
instBase : fubbase;
inst1 : fub1;
inst2 : fub2;
instRef : REFERENCE to fubbase;
END_VAR
IF b THEN
instRef REF= inst1;
(* Reference to fub1 *)
pInst := ADR(instBase);
ELSE
instRef REF= inst2;
(* Reference to fub2 *)
pInst := ADR(inst1);
END_IF
pInst^.method1();
(* If b is true, fubbase.method1 is c
alled, else fub1.method1 is called *)
instRef.method1();
(* If b is true, fub1.method1 is call
ed, else fub2.method1 is called *)
Supposons que le bloc fonction fubbase de l'exemple précédent contient deux méthodes :
method1 et method2. fub1 remplace method2, mais pas method1.
La méthode method1 est appelée comme indiqué dans l'exemple précédent.
pInst^.method1(); (* If b is true fubbase.method1 is called, else fub1.
method1 is called *)
Pour un appel par le biais du pointeur THIS, consultez la section Pointeur THIS (voir page 205).
202
EIO0000000069 02/2018
Composants du programme
Pointeur SUPER
Présentation
Un pointeur nommé SUPER est automatiquement disponible pour chaque bloc fonction. Il pointe
vers les instances de blocs fonction de base à partir desquelles est créé le bloc fonction qui hérite
des premiers.
Ceci répond de manière efficace à cette situation :

Le pointeur SUPER permet d'accéder aux méthodes de mise en œuvre des classes de base.
Grâce au mot-clé SUPER, il est possible d'appeler une méthode dans l'instance de classe de
base (parent). Aucune liaison de nom dynamique n'est ainsi effectuée.
Le pointeur SUPER peut être utilisé uniquement dans les méthodes et dans la mise en œuvre des
blocs fonction associés.
SUPER pointant vers le bloc fonction de base, vous devez annuler la référence pour obtenir
l'adresse du bloc fonction : SUPER^.METH_DoIt
Appel du pointeur SUPER dans différents langages d'implémentation
Langage d'implémentation
Exemple
ST
SUPER^.METH_DoIt();
FBD/CFC/LD
NOTE : La fonctionnalité du pointeur SUPER n'est pas encore mise en œuvre dans la liste
d'instructions.
EIO0000000069 02/2018
203
Composants du programme
Exemple
La variable locale iVarB surcharge la variable de bloc fonction iVarB.
FUNCTION_BLOCK FB_Base
VAR_OUTPUT
iCnt : INT;
END_VAR
METHOD METH_DoIt : BOOL
iCnt := -1;
METHOD METH_DoAlso : BOOL
METH_DoAlso := TRUE;
FUNCTION_BLOCK FB_1 EXTENDS FB_Base
VAR_OUTPUT
iBase: INT;
END_VAR
// Calls the method defined under FB_1
THIS^.METH_DoIt();
THIS^.METH_DoAlso();
// Calls the method defined under FB_Base
SUPER^.METH_DoIt();
SUPER^.METH_DoAlso();
iBase := SUPER^.iCnt;
METHOD METH_DoIt : BOOL
iCnt := 1111;
METH_DoIt := TRUE;
END_VAR
ROGRAM PLC_PRG
VAR
myBase: FB_Base;
myFB_1: FB_1;
iTHIS: INT;
iBase: INT;
END_VAR
myBase();
iBase := myBase.iCnt;
myFB_1();
iTHIS := myFB_1.iCnt;
204
EIO0000000069 02/2018
Composants du programme
Pointeur THIS
Présentation
Un pointeur nommé THIS est automatiquement disponible pour chaque bloc fonction. Il pointe
vers sa propre instance de bloc fonction.
Ceci répond de manière efficace aux situations suivantes :
 Lorsqu'une variable déclarée localement dans la méthode masque une variable de bloc
fonction.
 Si vous voulez qu'un pointeur fasse référence à sa propre instance de bloc fonction afin de
l'utiliser dans une fonction.
Le pointeur THIS peut être utilisé uniquement dans les méthodes et dans la mise en œuvre des
blocs fonction associés.
THIS doit être écrit en lettres majuscules. Aucune autre orthographe n'est acceptée.
THIS pointant vers le bloc fonction hérité, vous devez annuler la référence pour obtenir l'adresse
de ce bloc fonction de remplacement : THIS^.METHDoIt
Appel du pointeur THIS dans différents langages d'implémentation
Langage d'implémentation
Exemple
ST
THIS^.METH_DoIt();
FBD/CFC/LD
NOTE : La fonctionnalité du pointeur THIS n'est pas encore mise en œuvre dans la liste
d'instructions.
EIO0000000069 02/2018
205
Composants du programme
Exemple 1
La variable locale iVarB masque la variable de bloc fonction iVarB.
FUNCTION_BLOCK fbA
VAR_INPUT
iVarA: INT;
END_VAR
iVarA := 1;
FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;
METHOD DoIt : BOOL
VAR_INPUT
END_VAR
VAR
iVarB: INT;
END_VAR
iVarB := 22; // Here the local iVarB is set.
THIS^.iVarB := 222; // Here the function block variable iVarB is se
t, although iVarB is overloaded.
PROGRAM PLC_PRG
VAR
MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();
206
EIO0000000069 02/2018
Composants du programme
Exemple 2
Appel de fonction qui nécessite une référence à sa propre instance.
FUNCTION funA
VAR_INPUT
pFB: fbA;
END_VAR
...;
FUNCTION_BLOCK fbA
VAR_INPUT
iVarA: INT;
END_VAR
...;
FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;
METHOD DoIt : BOOL
VAR_INPUT
END_VAR
VAR
iVarB: INT;
END_VAR
iVarB := 22;
//Here the local iVarB is set.
funA(pFB := THIS^);
//Here funA is called with THIS^.
PROGRAM PLC_PRG
VAR
MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();
EIO0000000069 02/2018
207
Composants du programme
Sous-chapitre 7.3
Objets d'application
Objets d'application
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
208
Page
Type de données (DUT)
209
Liste de variables globales - GVL
211
Liste de variables de réseau globales - GNVL
213
Variables persistantes
221
Fichier externe
223
Liste de textes
225
Collection d’images
232
EIO0000000069 02/2018
Composants du programme
Type de données (DUT)
Présentation
Vous pouvez définir vos propres types de données en plus des types de données standard. Vous
pouvez créer des structures (voir page 641), des types d'énumération (voir page 643) et des
références (voir page 631) en tant que type de données (DUT) dans l'éditeur de type de données
(voir page 407).
Pour une description d'un type standard spécifique et des types de données définis par l'utilisateur,
consultez la description des types de données (voir page 624).
Ajout d'un objet de type de données
Pour ajouter un objet de type de données dans une application existante, sélectionnez le nœud de
l'application dans Catalogue de logiques → Ressources ou dans l'arborescence des applications,
cliquez sur le signe plus de couleur verte et choisissez DUT.... Vous pouvez aussi cliquer avec le
bouton droit sur le nœud et choisir la commande Ajouter l'objet → DUT. Pour créer un objet de
types de données indépendant d'une application, sélectionnez le nœud Global dans Ressources
ou dans l'arborescence des applications. Dans la boîte de dialogue Add DUT, entrez le Nom du
nouveau type de données et choisissez le type Structure, Énumération, Alias ou Union souhaité.
Si vous choisissez le type Structure, vous pouvez utiliser le principe d'héritage afin d'assurer la
prise en charge de la programmation orientée objet. Si vous le souhaitez, vous pouvez aussi
indiquer que le type de données en étend un autre déjà défini dans le projet. Ainsi, les définitions
du type de données étendu seront automatiquement valides dans le type actuel. Pour cela, activez
l'option Étendu : et entrez le nom de l'autre type de données.
Cliquez sur Ajouter pour confirmer les paramètres. L'éditeur du nouveau type de données s'ouvre
et vous pouvez commencer à le modifier.
Déclaration d'un objet de type de données
Syntaxe
TYPE <identificateur> : <déclaration des composants DUT>END_TYPE
La déclaration de composant DUT varie suivant le type de DUT, par exemple, une structure
(voir page 641) ou une énumération (voir page 643).
EIO0000000069 02/2018
209
Composants du programme
Exemple
L'exemple suivant contient deux DUT qui définissent les structures struct1 et struct2 ;
struct2 étend struct1, ce qui signifie que vous pouvez utiliser struct2.a lors de la mise en
service pour accéder à la variable a.
TYPE struct1 :
STRUCT
a:INT;
b:BOOL;
END_STRUCT
END_TYPE
TYPE struct2 EXTENDS struct1 :
STRUCT
c:DWORD;
d:STRING;
END_STRUCT
END_TYPE
210
EIO0000000069 02/2018
Composants du programme
Liste de variables globales - GVL
Présentation
Une liste de variables globales (GVL) permet de déclarer des variables globales (voir page 559).
Lorsqu'une GVL est placée sous le nœud Global dans Catalogue de logiques → Ressources →
POU ou dans l'arborescence des applications, les variables sont disponibles pour l'ensemble du
projet. Si une GVL est affectée à une application donnée, les variables sont valides dans cette
application.
Pour ajouter une GVL dans une application existante, sélectionnez le nœud de l'application dans
Catalogue de logiques → Ressources → POU ou dans l'arborescence des applications, cliquez
sur le signe plus de couleur verte et choisissez Liste de variables globales.... Vous pouvez aussi
cliquer avec le bouton droit sur le nœud et choisir la commande Ajouter l'objet → Add Global
Variable List.... Si vous sélectionnez le nœud Global dans ces affichages, le nouvel objet GVL ne
dépend d'aucune application.
Pour modifier une liste de variables globales, utilisez l'éditeur de liste de variables globales
(voir page 409).
Les variables figurant dans une liste de variables globales peuvent être définies pour être
disponibles en tant que variables de réseau (voir page 855) pour l'échange de données par
diffusion avec d'autres appareils du réseau. Pour cela, configurez les propriétés réseau
appropriées (par défaut, dans le menu Affichage → Propriétés → Variables réseau) pour la liste
de variables globales.
NOTE : La taille maximale d'une variable réseau est de 255 octets. Le nombre de variables réseau
n'est pas limité.
NOTE : Les variables déclarées dans les listes de variables globales sont initialisées avant les
variables locales des POU.
Liste de variables globales pour constantes configurables (liste de paramètres) dans les bibliothèques
Il est possible de remplacer la valeur d'une constante globale fournie par le biais d'une bibliothèque
par une valeur définie par l'application. Pour cela, la constante doit être déclarée dans une liste de
paramètres dans la bibliothèque. Par la suite, lorsque la bibliothèque est incluse dans l'application,
il est possible de modifier sa valeur dans l'onglet Liste de paramètres du gestionnaire de
bibliothèques de l'application. L'exemple qui suit donne une description détaillée de la procédure.
Traitement des listes de paramètres
Une bibliothèque lib1.library fournit une variable de tableau g_Array. La taille de cette
dernière est définie par une constante globale g_c_Arraysize. La bibliothèque est incluse dans
différentes applications, chacune nécessitant une taille de tableau différente. Il convient donc de
remplacer la constante globale de la bibliothèque par une valeur propre à l'application.
EIO0000000069 02/2018
211
Composants du programme
Procédez comme suit : lors de la création de la bibliothèque lib1.library, définissez la
constante globale g_c_Arraysize dans une liste de variables globales (GVL) de type spécial, à
savoir la liste de paramètres. Pour cela, exécutez la commande Ajouter un objet et ajoutez un objet
de liste de paramètres, nommé Param dans cet exemple. Dans l'éditeur de cet objet, identique à
celui d'une liste de variables globales standard, insérez la déclaration de variables
g_c_Arraysize.
Liste de paramètres Param dans la bibliothèque Lib1.library
Modifiez le paramètre g_c_Arraysize dans le gestionnaire de bibliothèques d'un projet.
Sélectionnez la bibliothèque dans la partie supérieure du gestionnaire de bibliothèques pour
afficher l'arborescence des modules. Sélectionnez Param pour accéder à l'onglet Paramètres de
bibliothèque qui contient les déclarations. Sélectionnez la cellule dans la colonne Valeur
(modifiable) et ouvrez un champ d'édition dans l'espace vide. Entrez la nouvelle valeur souhaitée
pour g_c_Arraysize. Elle sera appliquée à la portée locale actuelle de la bibliothèque après la
fermeture du champ d'édition.
212
EIO0000000069 02/2018
Composants du programme
Liste de variables de réseau globales - GNVL
Présentation
La fonctionnalité GNVL n'est disponible que si elle est sélectionnée dans le jeu de fonctionnalités
en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités prédéfinis).
Une liste de variables de réseau globales (GNVL) est utilisée dans l'affichage Catalogue de
logiques → Variables → Variables globales et dans l'arborescence des applications. Elle définit
des variables qui sont spécifiées comme des variables de réseau dans un autre appareil du
réseau.
NOTE : La taille maximale d'une variable réseau est de 255 octets. Le nombre de variables réseau
n'est pas limité.
Vous pouvez ainsi ajouter un objet GNVL à une application si une GVL (voir page 211) comportant
des propriétés réseau spéciales (liste de variables de réseau) est disponible dans l'un des autres
appareils du réseau. Qu'elle soit définie dans le même projet ou dans d'autres projets n'a aucune
incidence. Si plusieurs GVL approuvées sont détectées dans le projet actuel pour le réseau actuel,
choisissez celle que vous souhaitez dans une liste de sélection Expéditeur lors de l'ajout d'une
GNVL par le biais de la boîte de dialogue Ajouter l'objet → Add Global Network Variable List. Les
GVL des autres projets doivent être importées conformément à la description fournie dans le
présent chapitre.
Cela signifie que chaque GNVL dans l'appareil actuel (destinataire) correspond exactement à une
GVL dans un autre appareil (expéditeur).
Boîte de dialogue Add Global Network Variable List
EIO0000000069 02/2018
213
Composants du programme
Description des éléments
Lors de l'ajout de la GNVL, en plus du Nom, définissez une Tâche chargée du traitement des
variables de réseau.
Au lieu de choisir directement une GVL Expéditeur d'un autre appareil, vous pouvez indiquer un
fichier d'exportation au format *.GVL avec l'option Importation à partir du fichier. Ce fichier GVL a
été généré précédemment à partir de la GVL Expéditeur par le biais de la boîte de dialogue
(voir SoMachine, Commandes de menu, Aide en ligne) Affichage → Propriétés → Liens avec
fichier. Cette opération est nécessaire lorsque la GVL souhaitée est définie dans un autre projet.
Pour cela, sélectionnez l'option Importation à partir du fichier dans la liste de sélection Expéditeur
et entrez le chemin du fichier dans la zone de texte Importation à partir du fichier (ou cliquez sur
le bouton ... pour utiliser la boîte de dialogue standard permettant de parcourir le système de
fichiers).
Vous pouvez modifier les paramètres ultérieurement dans la boîte de dialogue (voir SoMachine,
Commandes de menu, Aide en ligne) Affichage → Propriétés → Paramètres réseau.
Il est possible d'afficher une GNVL dans l'éditeur de liste des variables de réseau (voir page 412),
mais pas de la modifier. Elle montre le contenu actuel de la liste de variables globales correspondantes. Si vous modifiez la GVL de base, la GNVL est mise à jour en conséquence.
Un commentaire est ajouté automatiquement en haut de la partie déclarative d'une GNVL, donnant
des informations sur l'expéditeur (chemin de l'appareil), le nom de la GVL et le type de protocole.
Exemple de liste de variables de réseau globales
Liste de variables de réseau globales
NOTE : Seuls les tableaux dont les limites sont définies par un littéral ou une constante sont
transférés vers l'application distante. Dans ce cas, les expressions constantes ne sont pas
autorisées pour la définition des limites. Exemple : arrVar : ARRAY[0..g_iArraySize1] OF INT ; n'est pas transféré, alors que arrVar : ARRAY[0..10] OF INT ; l'est
Pour plus d'informations, consultez le chapitre Communication réseau (voir page 855).
214
EIO0000000069 02/2018
Composants du programme
Exemple d'échange simple de variables de réseau
Dans l'exemple suivant, un échange simple de variables de réseau est défini. Une liste de
variables globales (GVL) est créée dans le contrôleur expéditeur. Une liste de variables de réseau
globales (GNVL) correspondante est créée dans le contrôleur destinataire.
Effectuez les opérations ci-dessous dans un projet standard où un contrôleur expéditeur
Dev_Sender et un contrôleur destinataire Dev_Receiver sont disponibles dans l'arborescence des
équipements :
 Créez une POU (programme) prog_sender sous le nœud Application de Dev_Sender.
 Sous le nœud Configuration de tâche de cette application, ajoutez la tâche Task_S qui appelle
prog_sender.
 Créez une POU (programme) prog_rec sous le nœud Application de Dev_Receiver.
 Sous le nœud Configuration de tâche de cette application, ajoutez la tâche Task_R qui appelle
prog_rec.
NOTE : Les deux contrôleurs doivent être configurés dans le même sous-réseau du réseau
Ethernet.
EIO0000000069 02/2018
215
Composants du programme
Définition de la GVL de l'expéditeur
Étape 1 : définition d'une liste de variables globales dans le contrôleur expéditeur :
Étape
216
Action
Commentaire
1
Dans Catalogue de logiques → Ressources →
POU, sélectionnez le nœud Application du
contrôleur Dev_Sender et cliquez sur le signe plus
de couleur verte. Sélectionnez la commande Liste
de variables globales...
La boîte de dialogue Add Global Variable List
s'ouvre.
2
Entrez le Nom GVL_Sender et cliquez sur Ajouter
pour créer une liste de variables globales.
Le nœud GVL_Sender apparaît sous le nœud
Application dans l'arborescence des applications et
l'éditeur s'ouvre au milieu de l'écran SoMachine.
3
Dans l'éditeur, entrez les définitions de variable
suivantes :
VAR_GLOBAL iglobvar:INT; bglobvar:BOOL; strglobvar:STRING; END_VAR
–
EIO0000000069 02/2018
Composants du programme
Étape 2 : définition des propriétés réseau de la GVL de l'expéditeur :
Étape
Action
Commentaire
1
Dans l'arborescence des applications, sélectionnez La boîte de dialogue Propriétés - GVL_Sender
le nœud GVL_Sender, cliquez sur le signe plus de s'ouvre.
couleur verte et exécutez la commande
Propriétés...
2
Ouvrez l'onglet Propriétés réseau et configurez les
paramètres comme indiqué ci-après :
–
3
Cliquez sur OK.
La boîte de dialogue se referme. Les propriétés
réseau de la GVL sont configurées.
EIO0000000069 02/2018
217
Composants du programme
Définition de la GNVL du destinataire
Étape 1 : définition d'une liste de variables de réseau globales dans le contrôleur destinataire :
Étape
218
Action
Commentaire
1
Dans l'arborescence des applications, sélectionnez La boîte de dialogue Add Global Network Variable
le nœud Application du contrôleur Dev_Receiver,
s'ouvre.
cliquez sur le signe plus de couleur verte et
exécutez la commande Liste de variables de réseau
globales....
2
Configurez les paramètres comme indiqué cidessous.
Cette liste de variables de réseau globales est
l'équivalent de la GVL définie pour le contrôleur
expéditeur.
EIO0000000069 02/2018
Composants du programme
Étape
3
Action
Commentaire
Cliquez sur le bouton Ouvrir.
La boîte de dialogue se referme et GNVL_Receiver
apparaît sous le nœud Application du contrôleur
Dev_Receiver :
Cette GNVL contient automatiquement les mêmes
déclarations de variable que GVL_Sender.
Étape 2 : affichage et/ou modification des paramètres réseau de la GNVL :
Étape
Action
Commentaire
1
Dans l'arborescence des équipements, cliquez
avec le bouton droit de la souris sur le nœud
GNVL_Receiver et sélectionnez Propriétés...
La boîte de dialogue Propriétés - GNVL_Receiver
s'ouvre.
2
Cliquez sur l'onglet Paramètres réseau.
–
EIO0000000069 02/2018
219
Composants du programme
Étape 3 : test de l'échange de variables de réseau en mode en ligne :
Étape
220
Action
Commentaire
1
Sous le nœud Application du contrôleur
Dev_Sender, double-cliquez sur la POU
prog_sender.
L'éditeur de prog_sender s'ouvre dans la partie
droite.
2
Entrez le code suivant pour la variable iglobvar : –
3
Sous le nœud Application du contrôleur
L'éditeur de prog_rec s'ouvre dans la partie droite.
Dev_Receiver, double-cliquez sur la POU prog_rec.
4
Entrez le code suivant pour la variable
ivar_local :
5
Connectez-vous aux applications de l'expéditeur et La variable ivar_local dans le destinataire
du destinataire dans le même réseau et démarrez- récupère les valeurs de iglobvar affichées dans
les.
l'expéditeur.
–
EIO0000000069 02/2018
Composants du programme
Variables persistantes
Présentation
Il s'agit d'une liste de variables globales qui contient uniquement les variables persistantes d'une
application. Cette liste doit donc être affectée à une application. Pour cela, vous devez l'insérer
dans l'arborescence des applications en sélectionnant respectivement le nœud, en cliquant sur le
signe plus de couleur verte et en sélectionnant Ajouter d'autres objets → Variables persistantes....
Pour modifier la liste des variables persistantes, utilisez l'éditeur GVL (voir page 409). La variable
VAR_GLOBAL PERSISTENT RETAIN est prédéfinie sur la première ligne.
Liste de variables persistantes
Les variables persistantes peuvent uniquement être réinitialisées avec l'option Réinitialiser
(origine) <application>. Pour plus d'informations, consultez la description variables rémanentes
(voir page 562).
Vous pouvez également vous reporter à la description des commandes spéciales de gestion des
variables persistantes (voir SoMachine, Commandes de menu, Aide en ligne).
Ajout et déclaration de variables rémanentes
Lorsque vous ajoutez des variables à une application, vous pouvez en déclarer certaines en tant
que variables rémanentes. Les variables rémanentes peuvent conserver leur valeur en cas de
coupure de courant, de redémarrage, de réinitialisation ou de téléchargement de programme
d'application. Il en existe plusieurs types : conservées (retain), persistantes (persistent) ou
conservées-persistantes.
Pour plus d'informations sur l'espace mémoire réservé aux variables conservées et persistantes
dans les différents contrôleurs, consultez le Guide de programmation du contrôleur que vous
utilisez.
EIO0000000069 02/2018
221
Composants du programme
Pour ajouter une liste de variables globales appelée Variables persistantes à l'application,
procédez comme suit :
Etape Action
222
1
Sélectionnez respectivement le nœud de l'application dans l'arborescence des
applications, cliquez sur le signe plus de couleur verte et sélectionnez Ajouter
d'autres objets → Variables persistantes...
Vous pouvez aussi cliquer avec le bouton droit sur le nœud et choisir la commande
Ajouter l'objet → Variables persistantes...
2
Dans la boîte de dialogue Ajouter des variables persistantes, entrez un nom dans la
zone de texte Nom.
3
Cliquez sur Ajouter.
Résultat : un nœud de variable persistante est créé dans l'arborescence des
applications. Vous trouverez un exemple dans le paragraphe Présentation du
présent chapitre.
EIO0000000069 02/2018
Composants du programme
Fichier externe
Présentation
La fonctionnalité Fichier externe n'est disponible que si elle est sélectionnée dans le jeu de
fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités
prédéfinis).
Pour ajouter un fichier externe au nœud Global de l'arborescence des applications ou de
l'arborescence des outils, sélectionnez le nœud Global, cliquez sur le signe plus de couleur verte
et exécutez les commandes Ajouter d'autres objets → Fichier externe....
Cliquez sur le bouton ... pour ouvrir la boîte de dialogue et rechercher un fichier. Le chemin du
fichier apparaît dans la zone de texte Chemin d'accès au fichier. Le nom du fichier choisi est inséré
automatiquement, sans extension, dans la zone de texte Nom. Vous pouvez modifier la valeur du
champ en entrant un autre nom sous lequel sera traité ce fichier dans le projet.
Boîte de dialogue Add External File :
EIO0000000069 02/2018
223
Composants du programme
Description de la section « Que voulez-vous faire avec le fichier externe ? » de la boîte de dialogue
Sélectionnez l'une des options suivantes :
Option
Description
Enregistrer le lien.
Le fichier est disponible dans le projet uniquement s'il l'est dans le
chemin du lien défini
Enregistrer le lien et l'incorporer
dans le projet.
Une copie du fichier est stockée en interne dans le projet, mais le lien
vers le fichier externe est aussi rappelé. Tant que le fichier externe est
disponible comme défini, les options de mise à jour définies sont
implémentées. Sinon, seule la version du fichier stockée dans le projet
est disponible.
Incorporé dans le projet.
Seule une copie du fichier est stockée dans le projet. Aucune autre
connexion au fichier externe n'est effectuée.
Description de la section « Lorsque le fichier externe est modifié » de la boîte de dialogue
Si le fichier externe est lié au projet, vous pouvez en outre sélectionner l'une des options
suivantes :
Option
Description
Recharger automatiquement le
fichier.
Le fichier est mis à jour dans le projet dès qu'une modification est
apportée à l'extérieur.
Demander si le fichier doit être
rechargé.
Une boîte de dialogue s'affiche dès qu'une modification externe a été
apportée au fichier. Vous pouvez décider si le fichier doit également
être mis à jour dans le projet.
Ne rien faire.
Le fichier n'est pas modifié dans le projet, même s'il l'a été à l'extérieur.
Description des boutons
224
Bouton
Description
Afficher les propriétés de fichier...
Ce bouton ouvre la boîte de dialogue standard des propriétés d'un
fichier. Cette boîte de dialogue s'affiche également lorsque vous
sélectionnez le fichier dans l'arborescence des applications ou dans
l'arborescence des outils et que vous exécutez la commande
Propriétés. Vous pouvez afficher et modifier les propriétés dans l'onglet
Fichier externe de la boîte de dialogue.
Ouvrir
Une fois les paramètres définis, cliquez sur le bouton Ouvrir pour
ajouter le fichier sous le nœud Global dans l'arborescence des
applications ou dans l'arborescence des outils. Il s'ouvre dans
l'application définie par défaut pour ouvrir ce format de fichier.
EIO0000000069 02/2018
Composants du programme
Liste de textes
Présentation
La fonctionnalité Liste de textes n'est disponible que si elle est sélectionnée dans le jeu de
fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités
prédéfinis).
Une liste de textes est un objet géré au niveau global sous le nœud Global de l'arborescence
Applications ou affecté à une application dans cette même arborescence.
Elle permet les actions suivantes :
Prise en charge en plusieurs langues du texte et des info-bulles statiques (voir page 226) et
dynamiques (voir page 227) dans les visualisations et pour le traitement des alarmes
 Échange de texte dynamique

Les listes de textes peuvent être exportées et (ré-)importées (voir page 230). L'exportation est
nécessaire si un fichier de langue au format XML doit être fourni pour la visualisation cible, mais
est également utile pour la traduction.
Formats de liste de textes possibles :
texte
 XML

Vous pouvez activer la prise en charge du format Unicode (voir page 230).
Chaque liste de textes est définie de façon unique par son espace de noms. Elle contient des
chaînes de texte référencées de façon unique dans la liste par un identificateur unique (ID
constitué d'une séquence de caractères) et un identificateur de langue. La liste de textes à utiliser
est définie lors de la configuration du texte pour un élément de visualisation.
Suivant la langue définie dans la visualisation, la chaîne de texte correspondante est affichée en
mode en ligne. La langue utilisée dans une visualisation peut être modifiée par une entrée
Commutation vers une autre langue. Ceci s'effectue par une action de la souris configurée sur
l'élément de visualisation donné. Chaque liste de textes doit contenir au moins une langue par
défaut, et éventuellement des langues supplémentaires que vous définissez vous-même. Si
aucune entrée ne correspond à la langue actuellement définie dans SoMachine, l'entrée de langue
par défaut est utilisée. À chaque texte peuvent être associées des définitions de formatage
(voir page 230).
Structure de base d'une liste de textes
Identificateu
r (index)
Par défaut
<chaîne de
caractères
unique>
<chaîne de
caractères
unique>
EIO0000000069 02/2018
<Langue 1>
<Langue 2>
.... <Langue n>
<texte abc en
<texte abc en
langue par défaut> langue 1>
<texte abc en
langue 2>
...
<texte xyz en
<texte xyz en
langue par défaut> langue 1>
<texte xyz en
langue 2>
...
225
Composants du programme
Types de liste de textes
Deux types de texte peuvent être utilisés dans les éléments de visualisation auxquels
correspondent deux types de liste :
 GlobalTextList pour les textes statiques
 Textlist pour les textes dynamiques
GlobalTextList pour les textes statiques
GlobalTextList est une liste de textes spéciale dans laquelle les identificateurs des entrées de texte
particulières sont traités de façon implicite et ne peuvent pas être modifiés. Par ailleurs, la liste ne
peut pas être supprimée. Elle peut en revanche être exportée, modifiée à l'extérieur puis
réimportée.
Contrairement aux textes dynamiques, les textes statiques d'une visualisation ne sont pas
échangés par une variable en mode en ligne. La seule option permettant l'échange d'un élément
de visualisation est via une entrée Commutation vers une autre langue. Un texte statique est
affecté à un élément de visualisation par le biais de la propriété Texte ou Info-bulle dans la
catégorie Textes. Dès la définition du premier texte statique dans un projet, un objet de liste de
textes nommé GlobalTextList est ajouté sous le nœud Global de l'arborescenceApplications. Il
contient la chaîne de texte définie qui se trouve dans la colonne Par défaut, et un nombre entier
automatiquement attribué comme identificateur de texte. Pour chaque texte statique créé à partir
de ce moment, le numéro d'identificateur est incrémenté et attribué à l'élément de visualisation.
Si un texte statique est saisi dans un élément de visualisation (par exemple, si dans un rectangle
avec la catégorie de propriété Textes, la chaîne Exemple de texte est définie), ce texte est
recherché dans la liste de textes GlobalTextList.
 Si le texte est trouvé (par exemple, ID 4711, Exemple de texte) la valeur d'élément 4711 de
TextId est affectée à une variable interne. Ceci permet d'établir la relation entre l'élément et la
ligne correspondante dans la liste GlobalTextList.
 Si le texte est introuvable, une nouvelle ligne est insérée dans la liste GlobalTextList (par
exemple, ID 4712, Exemple de texte). Dans l'élément, la valeur 4712 est affectée à la variable
interne.
NOTE : Si elle n'existe pas encore, vous pouvez créer une liste de textes globale de façon explicite
à l'aide de la commande Créer la liste de textes globale.
Si vous avez exporté, modifié et réimporté la liste GlobalTextList, une validation détermine si les
identificateurs correspondent toujours à ceux qui sont utilisés dans la configuration des éléments
de visualisation respectifs. Si nécessaire, une mise à jour implicite des identificateurs utilisés dans
la configuration est effectuée.
226
EIO0000000069 02/2018
Composants du programme
Exemple de liste de textes GlobalTextList
Créer la liste de textes globale
Textlist pour textes dynamiques
Il est possible de modifier de façon dynamique les textes dynamiques en mode en ligne. L'identificateur de texte (ID), qui n'est autre qu'une chaîne de caractères, doit être unique dans la liste de
textes. Contrairement à la liste de textes GlobalTextLists, vous devez la définir. Autre différence
avec la liste de textes GlobalTextList, pour créer des listes de textes pour les textes dynamiques,
vous devez sélectionner de façon explicite le nœud Global, cliquer sur le signe plus de couleur
verte et exécuter la commande Ajouter d'autres objets → Liste de textes...
Les listes de textes dynamiques qui sont disponibles sont proposées lors de la configuration d'un
élément de visualisation par le biais de la propriété Textes dynamiques / Liste de textes. Si vous
indiquez un nom de liste de textes combiné à l'identificateur de texte (ID), que vous pouvez entrer
directement ou par le biais d'une variable de projet qui définit la chaîne de l'identificateur, il est
possible de modifier le texte actuel en mode en ligne.
Une liste de textes dynamique doit être exportée en cas de besoin sous forme de fichier de langue
pour la commutation des langues dans une visualisation cible. Définissez le chemin du fichier dans
les options de visualisation. Comme la liste de textes GlobalTextList, une liste de textes
dynamiques peut être exportée en vue d'une modification externe, puis réimportée. Contrairement
à ce qui se produit avec la liste de textes GlobalTextList, lors de l'importation des listes de textes
dynamiques, il n'y a ni vérification automatique, ni mise à jour des identificateurs.
AVIS
MODIFICATION FORTUITE DES IDENTIFICATEURS
Ne modifiez pas les identificateurs lors de la modification de la liste exportée.
Le non-respect de ces instructions peut provoquer des dommages matériels.
EIO0000000069 02/2018
227
Composants du programme
Exemple de liste de textes dynamiques nommée ErrorList
Exemple ErrorList
Exemple détaillé
Cet exemple explique comment configurer un élément de visualisation, qui affiche le message
correspondant lorsqu'une erreur est détectée dans une application qui traite les événements
d'erreurs identifiés via des ID numériques attribués à une variable d'entier ivar_err.
Fournissez une liste de textes dynamiques nommée ErrorList dans laquelle le texte des messages
associés aux ID d'erreur 0 à 4 est défini en allemand, en anglais et dans la langue par défaut :
Pour utiliser les ID d'erreur dans la configuration de visualisation, définissez une variable STRING,
par exemple strvar_err. Pour affecter le nombre entier de ivar_err à strvar_err, utilisez
strvar_err:=INT_TO_STRING(ivar_err);.
Il est possible d'entrer strvar_err comme paramètre Textindex dans la configuration des
propriétés Textes dynamiques d'un élément de visualisation. L'élément affichera le message
approprié en mode en ligne.
228
EIO0000000069 02/2018
Composants du programme
L'exemple suivant concerne le traitement de l'ID d'erreur en utilisant les variables du projet et la
configuration d'un élément de visualisation (Propriétés), ce qui doit afficher le message approprié :
Création d'une liste de textes




Pour créer une liste de textes pour des textes dynamiques (voir page 227), ajoutez un objet
Liste de textes au projet dans l'arborescence des applications. Pour créer une liste de textes
spécifique à une application, sélectionnez le nœud de l'application. Pour créer une liste de
textes globale, sélectionnez le nœud Global. Cliquez ensuite sur le signe plus de couleur verte
associé au nœud sélectionné et exécutez la commande Ajouter d'autres objets → Liste de
textes... Après avoir défini le nom de la liste et confirmé la boîte de dialogue Add Textlist, la
nouvelle liste est insérée sous le nœud sélectionné.
Pour générer une liste de textes pour des textes statiques (voir page 226) (GlobalTextList),
affectez un texte à la propriété Texte dans la catégorie Textes d'un objet de visualisation afin
de créer automatiquement la liste, ou générez-la de façon explicite à l'aide de la commande
Créer la liste de textes globale.
Pour ouvrir une liste de textes existante afin de la modifier, sélectionnez l'objet liste ou le nœud
Global dans l'arborescence Applications. Cliquez avec le bouton droit sur le nœud de la liste de
textes et exécutez la commande Modifier l'objet, ou double-cliquez sur le nœud de la liste de
textes. Pour connaître la façon dont est structurée une liste de textes, consultez le tableau
Structure de base d'une liste de textes.
Pour ajouter un nouveau texte par défaut dans la liste de textes, utilisez la commande Insérer
texte, ou modifiez respectivement le champ dans la ligne vide de la liste. Pour modifier un
champ dans une liste de textes, cliquez sur le champ afin de le sélectionner, puis cliquez de
nouveau dessus ou appuyez sur la barre d'espacement pour afficher un cadre d'édition. Entrez
les caractères souhaités et fermez le cadre d'édition en appuyant sur la touche Entrée.
EIO0000000069 02/2018
229
Composants du programme
Prise en charge du format Unicode
Pour utiliser le format Unicode, activez l'option correspondante dans le Gestionnaire de
visualisation. Ensuite, définissez une directive de compilation spéciale pour l'application :
sélectionnez l'application dans l'arborescence Équipements, accédez à la boîte de dialogue
Propriétés, onglet Compiler. Dans le champ Définitions compilateur, entrez VISU_USEWSTRING.
Boîte de dialogue avec définition du compilateur
Exportation et importation des listes de textes
Les listes de textes statiques et dynamiques peuvent être exportées sous forme de fichier au
format CSV. Les fichiers exportés peuvent également être utilisés pour ajouter du texte à
l'extérieur, par un traducteur externe par exemple. Toutefois seuls les fichiers disponibles au
format texte (*.csv) peuvent être réimportés.
Voir la description des commandes de liste de textes (voir SoMachine, Commandes de menu, Aide
en ligne) correspondantes.
Indiquez le dossier dans lequel les fichiers exportés doivent être enregistrés dans la boîte de
dialogue Fichier → Paramètres du projet → Visualisation.
Formatage des textes
Les textes peuvent contenir des définitions de formatage (%s,%d,…) qui permettent d'inclure les
valeurs actuelles des variables dans un texte. Pour connaître les chaînes de formatage qu'il est
possible d'utiliser, consultez la section Visualisation de l'aide en ligne de SoMachine.
230
EIO0000000069 02/2018
Composants du programme
Si vous utilisez du texte avec des chaînes de formatage, le remplacement est effectué dans l'ordre
suivant :
 La chaîne de texte à utiliser est recherchée à l'aide du nom et de l'identificateur de la liste.
 Si le texte contient des définitions de formatage, elles sont remplacées par la valeur de la
variable correspondante.
Fourniture ultérieure de textes traduits
L'insertion du fichier GlobalTextList.csv dans le répertoire utilisé pour le chargement des fichiers
textes permet d'intégrer par la suite les textes traduits. Lorsque le projet d'initialisation est démarré,
le micrologiciel détecte la disponibilité d'un fichier supplémentaire. Le texte est comparé à celui
figurant dans les fichiers de liste de textes existants. Des textes nouveaux et modifiés sont alors
appliqués aux fichiers de liste de textes. Les fichiers de liste de textes mis à jour seront appliqués
au prochain démarrage.
Liste des composants de la saisie de texte
Vous pouvez définir un fichier modèle de texte dans la boîte de dialogue Outils → Options →
Visualisation. Tout le texte de la colonne Default du fichier est copié dans une liste qui sera utilisée
par la fonctionnalité List Components. Vous pouvez utiliser un fichier modèle créé précédemment
à l'aide de la commande Exporter.
Fonctionnement avec plusieurs utilisateurs
Grâce au contrôle du code source, plusieurs utilisateurs peuvent travailler simultanément sur le
même projet. Si un texte statique est modifié en éléments de visualisation par plus d'un utilisateur,
la liste GlobalTextList est modifiée (voir GlobalTextList (voir page 226)). Dans ce cas, les identificateurs de texte peuvent ne plus être cohérents avec les éléments de visualisation. Utilisez les
méthodes de détection et de correction d'erreurs suivantes :


La commande Vérifier ID texte de visualisation permet de détecter ce type d'erreur dans les
visualisations.
La commande Actualiser l'ID texte de visualisation permet de corriger automatiquement les
erreurs. Les visualisations concernées ainsi que la liste GlobalTextList doivent être autorisées
en écriture.
Utilisation des listes de textes pour changer de langue dans les visualisations
Si une liste de textes appropriée est disponible, c'est-à-dire une liste de textes définissant des
versions d'un texte en plusieurs langues, la langue utilisée pour les textes d'une visualisation peut
être commutée en mode en ligne grâce à une action sur un élément de visualisation. Les
propriétés Textes Dynamiques de l'élément doivent préciser la liste de textes à utiliser, et une
action de la souris Commutation vers une autre langue doit être configurée en indiquant la langue
à utiliser après l'exécution de cette action.
NOTE : La langue doit être définie avec exactement cette chaîne, celle-ci s'affichant dans l'en-tête
de colonne de la liste de textes.
EIO0000000069 02/2018
231
Composants du programme
Collection d’images
Présentation
La fonctionnalité Collection d'images n'est disponible que si elle est sélectionnée dans le jeu de
fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités
prédéfinis).
Les collections d'images sont des tables qui définissent le chemin d'accès au fichier, un aperçu et
une chaîne d'identification pour chaque image. La saisie de l'identificateur et (pour permettre un
accès unique) du nom du fichier image permet de référencer l'image, par exemple, lors de son
insertion dans une visualisation (pour la configuration des propriétés d'un élément d'image, voir
Utilisation d'images gérées dans une collection d'images (voir page 233) ).
NOTE : Il est recommandé de réduire autant que possible la taille d'un fichier image avant son
ajout à une collection d'images. Sinon, le projet peut être volumineux et les opérations de
chargement et de tri, images comprises, peuvent peser sur les applications de visualisation.
Structure d'une collection d'images
Exemple de collection d'images
232
Élément
Description
ID
ID chaîne (par exemple logo, y_icon, 2)
Une image est référencée de façon unique grâce à la
combinaison d'un nom de liste d'images et d'un identificateur
(par exemple, List1.basic_logo).
Nom fichier
Chemin d'accès du fichier image (par exemple,
C:\programs\images\logo.bmp)
Image
Aperçu de l'image
EIO0000000069 02/2018
Composants du programme
Création et modification d'une collection d'images
Un projet peut contenir plusieurs collections d'images.
Si aucune collection n'est encore disponible dans un projet, dès que vous ajoutez le premier
élément d'image et que vous saisissez un identificateur (ID statique) pour l'image correspondante
dans les propriétés de l'élément visuel, une collection d'images est créée automatiquement sous
le nom GlobalImagePool. Une entrée est insérée pour l'image. GlobalImagePool est une collection
globale par laquelle commence la recherche lorsqu'un fichier image doit être utilisé. Il est possible
d'utiliser des collections individuelles nommées en plus de celle-ci.
Pour créer manuellement des collections d'images, procédez comme suit : GlobalImagePool est
créé à l'aide de la commande Image Pool Editor Commands → Créer la collection globale
d’images. Vous pouvez insérer les autres objets collection sous le nœud d'une application ou sous
le nœud Global de l'arborescence des applications en cliquant sur le signe plus de couleur verte
et en exécutant les commandes Ajouter d'autres objets → Collection d'images. Dans la boîte de
dialogue Add Image Pool, définissez le Nom de la collection.
Pour ajouter manuellement une image dans une collection, utilisez la commande Insérer fichier
image ou remplissez manuellement la table de la collection. Dans ce dernier cas, sélectionnez le
champ ID de la première ligne vide dans la table de collection, appuyez sur la barre d'espacement
pour ouvrir un cadre d'édition et entrez un identificateur (chaîne). Ce dernier sera automatiquement unique. Placez ensuite le curseur dans le champ de nom Fichier, appuyez sur la barre
d'espacement et cliquez sur le bouton ... pour accéder à la boîte de dialogue Sélection d'images.
Vous pouvez y indiquer le chemin d'accès au fichier image souhaité.
Utilisation d'images gérées dans des collections d'images
Si l'identificateur d'une image à utiliser est défini dans plusieurs collections d'images :
 Ordre de recherche : si vous choisissez une image gérée dans la collection GlobalImagePool,
il est inutile de préciser le nom de la collection. L'ordre de recherche des images est identique
à celui de la recherche des variables globales :
1. GlobalImagePool
2. Collections d'images affectées à l'application active
3. Collections d'images sous le nœud Global de l'arborescence des applications en plus de
GlobalImagePool
4. Collections d'images figurant dans les bibliothèques
 Accès unique : vous pouvez appeler directement l'image souhaitée en ajoutant le nom de la
collection d'images avant l'identificateur selon la syntaxe : <nom de la collection>.<ID image>
(par exemple, imagepool1.drive_icon dans l'illustration précédente.)
EIO0000000069 02/2018
233
Composants du programme
Utilisation d'une image dans un élément de visualisation de type image
Lors de l'insertion d'une image dans une visualisation, vous pouvez la définir comme étant statique
ou dynamique. Il est possible de modifier l'image dynamique en mode en ligne en fonction de la
valeur d'une variable du projet :
Images statiques :
Dans la configuration de l'élément (propriété ID statique), entrez l'identificateur de l'image ou le
nom de la collection d'images + l'identificateur de l'image. Consultez les remarques sur l'ordre de
recherche et l'accès unique du paragraphe précédent pour ce contexte.
Images dynamiques :
Dans la configuration de l'élément (propriété variable ID bitmap), entrez la variable qui définit
l'identificateur, par exemple, PLC_PRG.imagevar.
Utilisation d'une image pour l'arrière-plan de la visualisation
Dans la définition de l'arrière-plan d'une visualisation, vous pouvez définir une image à afficher en
arrière-plan. Comme décrit précédemment pour un élément de visualisation, vous pouvez définir
le fichier image, avec le nom de la collection d'images et celui du fichier image.
234
EIO0000000069 02/2018
Composants du programme
Sous-chapitre 7.4
Application
Application
Application
Présentation
Une application et l'ensemble des objets nécessaires pour exécuter une instance donnée du
programme de contrôleur sur un appareil particulier (contrôleur). Pour cela, des objets
indépendants gérés sous le nœud Global de l'arborescence des applications sont instanciés et
affectés à un appareil. Il s'agit d'un concept de la programmation orientée objet. Toutefois, vous
pouvez également utiliser des POU spécifiques à une application.
Une application est représentée par un objet application dans l'arborescence des applications.
Sous l'entrée d'une application, insérez les objets qui définissent l'ensemble des ressources de
cette application.
Une application est disponible pour un contrôleur. Il est impossible d'ajouter d'autres applications.
La Configuration de tâche, qui contrôle l'exécution d'un programme (instances de POU ou POU
spécifiques à une application), fait partie de chaque application. Des objets ressource peuvent en
outre être affectés à une application, comme des listes de variables globales, des bibliothèques,
etc. Contrairement aux objets gérés sous le nœud Global de l'arborescence des applications, ces
objets peuvent uniquement être utilisés par l'application et ses enfants. Pour connaître les règles,
consultez la description relative à l'organisation et la configuration des objets dans l'arborescence
des équipements (voir page 42).
Observations
Avant d'établir la connexion avec une application sur un appareil cible (contrôleur ou simulation
cible), deux vérifications sont effectuées : Quelle est l'application actuellement présente dans le
contrôleur ? Les paramètres de l'application dans le contrôleur correspondent-ils à ceux de
l'application dans SoMachine ? S'ils ne correspondent pas, des messages appropriés le signalent
et proposent des solutions pour continuer. Vous pouvez en outre supprimer l'application dans le
contrôleur. Pour plus d'informations, consultez la description de la commande Connexion
(voir page 246).
EIO0000000069 02/2018
235
Composants du programme
236
EIO0000000069 02/2018
SoMachine
Configuration de tâche
EIO0000000069 02/2018
Chapitre 8
Configuration de tâche
Configuration de tâche
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Configuration de tâche
238
Ajout de tâches
239
EIO0000000069 02/2018
237
Configuration de tâche
Configuration de tâche
Présentation
La Configuration de tâche définit une ou plusieurs tâches pour contrôler le traitement d'un
programme d'application.
Il s'agit d'un objet ressource d'une application (voir page 235). Elle doit être insérée dans
l'arborescence des applications sous le nœud d'une application. Une tâche peut appeler un POU
spécifique à une application et disponible uniquement sous celle-ci dans l'arborescence des
applications. Elle peut aussi appeler un programme géré sous le nœud Global dans l'arborescence
des applications. Dans ce dernier cas, le programme disponible globalement et instancié par
l'application.
Vous pouvez modifier une configuration de tâche dans l'éditeur de tâches (voir page 437).
En mode en ligne, l'éditeur de tâches dispose d'un affichage de contrôle qui donne des
informations sur les cycles, les durées de cycle et l'état des tâches.
L'affichage de contrôle propose une fonctionnalité supplémentaire de configuration de tâche si
l'appareil la prend en charge, à savoir l'analyse dynamique des POU contrôlés par une tâche.
Cette fonction donne des informations sur les durées de cycle, le nombre d'appels de bloc fonction
et les lignes de code non utilisées.
238
EIO0000000069 02/2018
Configuration de tâche
Ajout de tâches
Introduction
Vous pouvez ajouter des tâches à votre application via l'arborescence Applications.
Procédure
Etape Action
1 Dans l'arborescence Applications, sélectionnez le nœud Configuration de tâche,
cliquez sur le bouton plus vert, puis exécutez la commande Tâche....
Vous pouvez également effectuer un clic droit sur le nœud Configuration de tâche,
puis sélectionner Ajouter l'objet → Tâche... dans le menu contextuel.
Résultat : la boîte de dialogue Ajouter une tâche s'ouvre.
2 Dans la boîte de dialogue Ajouter une tâche, saisissez un nom dans la zone de texte
Nom :.
Remarque : le nom ne doit contenir aucun espace et ne pas comporter plus de
32 caractères.
3 Cliquez sur Ajouter.
EIO0000000069 02/2018
239
Configuration de tâche
240
EIO0000000069 02/2018
SoMachine
Gestion des applications
EIO0000000069 02/2018
Chapitre 9
Gestion des applications
Gestion des applications
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
9.1
Informations générales
242
9.2
Compilation et téléchargement des applications
244
9.3
Exécution d'applications
261
9.4
Entretien des applications
263
EIO0000000069 02/2018
241
Gestion des applications
Sous-chapitre 9.1
Informations générales
Informations générales
Introduction
Introduction
Pour exécuter une application, vous devez d'abord connecter le PC au contrôleur, puis télécharger
l'application sur ce dernier.
NOTE : en raison d'une limitation de la taille de mémoire, certains contrôleurs ne peuvent pas
stocker la source de l'application (uniquement une application compilée qui est exécutée). Vous
ne pouvez donc pas charger la source de l'application du contrôleur à un PC.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT



Vérifiez que vous avez spécifié la bonne désignation ou la bonne adresse de l'appareil dans
la boîte de dialogue Paramètres de communication lors du téléchargement d'une application.
Vérifiez que les protections et les étiquettes sont en place sur la machine, afin d'éviter toute
blessure physique ou tout dommage matériel en cas de fonctionnement imprévu de la
machine.
Lisez attentivement toute la documentation utilisateur de ce logiciel et des équipements
associés, ainsi que la documentation concernant le fonctionnement de l'équipement ou de la
machine.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Prérequis
Vérifiez que l'application satisfait les conditions suivantes avant de la télécharger sur le contrôleur :
Le chemin d'accès actif pointe vers le contrôleur approprié.
 L'application que vous souhaitez télécharger est active.
 L'application ne comporte aucune erreur de compilation.

242
EIO0000000069 02/2018
Gestion des applications
Application de démarrage
L'application de démarrage est lancée au démarrage du contrôleur. Elle est stockée dans la
mémoire du contrôleur. Pour configurer le téléchargement de l'application de démarrage, cliquez
avec le bouton droit sur le nœud Application dans l'arborescence des applications et sélectionnez
la commande Propriétés.
Lorsque le téléchargement d'une nouvelle application aboutit, un message vous invite à créer
l'application de démarrage.
Vous pouvez créer une application de démarrage manuellement de l'une des façons suivantes :
En mode hors ligne : cliquez sur En ligne → Créer une application de démarrage pour
enregistrer l'application de démarrage dans un fichier.
 En mode en ligne, avec le contrôleur en mode STOP : exécutez la commande (voir SoMachine,
Commandes de menu, Aide en ligne) En ligne → Créer une application de démarrage pour
télécharger l'application de démarrage sur le contrôleur.

EIO0000000069 02/2018
243
Gestion des applications
Sous-chapitre 9.2
Compilation et téléchargement des applications
Compilation et téléchargement des applications
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
244
Page
Compilation des applications
245
Connexion
246
Processus de compilation des applications modifiées
249
Téléchargement d'une application
250
EIO0000000069 02/2018
Gestion des applications
Compilation des applications
Présentation
SoMachine propose différentes procédures de compilation dans le menu Compiler
(voir SoMachine, Commandes de menu, Aide en ligne). Ces procédures permettent de gérer les
contrôles syntaxiques, soit uniquement sur les objets modifiés, soit sur tous les objets de
l'application active.
Vous pouvez effectuer une génération de code hors connexion afin de rechercher d'éventuelles
erreurs de compilation avant le téléchargement du code sur l'appareil. Pour que la connexion
aboutisse, la génération de code doit avoir été effectuée sans erreur.
Génération du code, informations sur la compilation
Le code machine ne sera pas généré avant le téléchargement du projet Application
(voir page 235) sur l'appareil cible (contrôleur, cible de simulation). Lors de chaque téléchargement, les informations de compilation, soit le code et l'ID référence de l'application chargée, sont
stockés dans le répertoire du projet dans un fichier <nom du projet>.<nom de l'appareil>.<ID
application>.compileinfo Le fichier compileinfo est détecté lors de l'exécution de la commande
Nettoyer ou Tout nettoyer.
Aucune génération de code n'a lieu lors de la compilation du projet à l'aide des commandes de
compilation (dans le menu Compiler par défaut). Le processus de compilation vérifie le projet afin
de détecter les erreurs de programmation. Toute erreur de programmation détectée est affichée
dans l'affichage Messages (catégorie de message Compiler).
Pendant la génération de code, des erreurs supplémentaires peuvent être détectées et affichées.
Seul le générateur de code peut les détecter, à moins qu'elles ne soient provoquées par l'allocation
de mémoire.
EIO0000000069 02/2018
245
Gestion des applications
Connexion
Présentation
La commande En ligne → Connexion permet de connecter l'application à l'appareil cible
(contrôleur ou cible de simulation) et de passer ainsi en mode en ligne.
Raccourci clavier par défaut : ALT + F8.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT



Vérifiez que vous avez spécifié la bonne désignation ou la bonne adresse de l'appareil dans
la boîte de dialogue "Paramètres de communication" lors du téléchargement d'une
application.
Vérifiez que les protections et les étiquettes sont en place sur la machine, afin d'éviter toute
blessure physique ou tout dommage matériel en cas de fonctionnement imprévu de la
machine.
Lisez attentivement toute la documentation utilisateur de ce logiciel et des équipements
associés, ainsi que la documentation concernant le fonctionnement de l'équipement ou de la
machine.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Si la gestion des utilisateurs en ligne (voir le chapitre Utilisateurs et groupes (voir page 928)) est
définie sur l'appareil cible, vous êtes invité à entrer le nom d'utilisateur et le mot de passe
appropriés lors de la connexion. La boîte de dialogue Ouverture de session d'utilisateur sur
l'appareil s'affiche.
Procédures de connexion
Il existe deux procédures de connexion différentes suivant le mode numérotation sélectionné dans
la boîte de dialogue Projet → Paramètres du projet → Paramètres de communication. Le
paramétrage par défaut du mode numérotation varie suivant la version de SoMachine. L'éditeur
d'équipement propose des boîtes de dialogue individuelles pour chaque type de connexion.
Type de connexion
Mode numérotation
Paramétrage par défaut
suivant la version de
SoMachine
Boîte de dialogue de l'éditeur
d'équipement
1
Adresse IP
V4.0 et suivantes
Sélection du contrôleur
2
chemin actif
V3.1 et suivantes
Paramètres de communication
246
(voir page 103)
(voir page 119)
EIO0000000069 02/2018
Gestion des applications
Procédure de connexion avec le mode numérotation Adresse IP
Cette procédure de connexion est utilisée par défaut dans SoMachine V4.0 et les versions
suivantes. Le mode numérotation dans la boîte de dialogue Projet → Paramètres du projet →
Paramètres de communication est réglé sur Numérotation via "Adresse IP".
Pour que la connexion aboutisse, la génération du code doit avoir été effectuée sans erreur (voir
le chapitre Processus de compilation avant la connexion (voir page 249)).
Étape
1
2
3
4
Action
Exécutez la commande En ligne → Connexion, ou cliquez sur le bouton Connexion
dans
la barre d'outils, ou utilisez le raccourci clavier ALT + F8.
Résultat : aucune adresse cible n'ayant été définie au préalable, l'affichage Sélection du
contrôleur de l'éditeur d'équipement apparaît. Un message indiquant qu'aucune adresse valide
n'a été définie s'affiche.
Si un seul contrôleur a été détecté lors de l'analyse du réseau Ethernet par SoMachine, il est
marqué dans la liste et utilisé comme appareil cible.
Si plusieurs contrôleurs ont été détectés, double-cliquez sur le contrôleur auquel vous souhaitez
vous connecter.
Exécutez la commande En ligne → Connexion, ou cliquez sur le bouton Connexion
la barre d'outils, ou utilisez le raccourci clavier ALT + F8.
Résultat : un message vous informant des dangers potentiels apparaît.
dans
Cliquez sur Annuler pour annuler la connexion ou sur ALT + F pour valider le message et vous
connecter au contrôleur sélectionné.
Résultat : si vous appuyez sur les touches ALT + F, la connexion avec le contrôleur est établie
et vous pouvez télécharger l'application (voir page 250).
Procédure de connexion en mode numérotation Chemin actif
Cette procédure de connexion est utilisée par défaut dansSoMachine V3.1 et les versions
précédentes. Le mode numérotation dans la boîte de dialogue Paramètres du projet →
Paramètres de communication est réglé sur Numérotation via "Chemin actif".
Pour que la connexion aboutisse, la génération du code doit avoir été effectuée sans erreur (voir
le chapitre Processus de compilation avant la connexion (voir page 249)). De plus, les paramètres
de communication (voir page 103) de l'appareil doivent être configurés correctement.
Étape
1
EIO0000000069 02/2018
Action
Exécutez la commande En ligne → Connexion, ou cliquez sur le bouton Connexion
dans
la barre d'outils, ou utilisez le raccourci clavier ALT + F8.
Résultat : aucune adresse cible n'ayant été définie au préalable, l'affichage Paramètres de
communication de l'éditeur d'équipement apparaît. Un message indiquant que le chemin actif n'a
pas été défini et qu'une analyse du réseau est en cours s'affiche.
247
Gestion des applications
Étape
2
Action
Si un seul contrôleur a été détecté lors de l'analyse du réseau Ethernet par SoMachine, il est
marqué dans la liste et utilisé comme appareil cible.
Si plusieurs contrôleurs ont été détectés, double-cliquez sur le contrôleur auquel vous souhaitez
vous connecter.
NOTE : Seuls les contrôleurs associés au même ID du système cible que le contrôleur
sélectionné figurent dans la liste. Pour afficher tous les contrôleurs dans la liste, définissez le
critère de filtre Aucun.
3
4
248
Exécutez la commande En ligne → Connexion, ou cliquez sur le bouton Connexion
la barre d'outils, ou utilisez le raccourci clavier ALT + F8.
Résultat : un message vous informant des dangers potentiels apparaît.
dans
Cliquez sur Annuler pour annuler la connexion ou sur ALT + F pour valider le message et vous
connecter au contrôleur sélectionné.
Résultat : si vous appuyez sur les touches ALT + F, la connexion avec le contrôleur est établie
et vous pouvez télécharger l'application (voir page 250).
EIO0000000069 02/2018
Gestion des applications
Processus de compilation des applications modifiées
Processus de compilation avant la connexion
Le projet d'application affecté actuel est compilé avant la connexion s'il ne l'a pas été depuis la
dernière ouverture ou la dernière modification. Cela signifie que le projet sera généré en réponse
à l'exécution de la commande Compiler en mode hors-ligne, ainsi que le code de compilation du
contrôleur.
Si des erreurs sont détectées pendant la compilation, le message Des erreurs de compilation se
sont produites. Voulez-vous ouvrir une session sans charger le programme ? s'affiche. Vous
pouvez choisir de corriger d'abord les erreurs détectées ou de vous connecter malgré tout. Dans
ce dernier cas, vous êtes connectés à la version de l'application qui est peut-être déjà disponible
sur le contrôleur.
Les erreurs détectées sont répertoriées dans l'affichage Messages (catégorie Compiler).
EIO0000000069 02/2018
249
Gestion des applications
Téléchargement d'une application
Introduction
Pour exécuter une application, connectez d'abord le PC au contrôleur, puis téléchargez
l'application sur le contrôleur.
Le téléchargement d'un projet permet de copier le projet actuel de SoMachine vers la mémoire du
contrôleur.
NOTE : en raison d'une limitation de la taille de mémoire, certains contrôleurs ne peuvent pas
stocker la source de l'application (uniquement une application compilée qui est exécutée). Vous
ne pouvez donc pas charger la source de l'application du contrôleur à un PC.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT



Vérifiez que vous avez spécifié la bonne désignation ou la bonne adresse de l'appareil dans
la boîte de dialogue Paramètres de communication lors du téléchargement d'une application.
Vérifiez que les protections et les étiquettes sont en place sur la machine, afin d'éviter toute
blessure physique ou tout dommage matériel en cas de fonctionnement imprévu de la
machine.
Lisez attentivement toute la documentation utilisateur de ce logiciel et des équipements
associés, ainsi que la documentation concernant le fonctionnement de l'équipement ou de la
machine.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Prérequis
Vérifiez que votre application respecte les conditions suivantes avant de la télécharger sur le
contrôleur :
 Le chemin actif est défini pour le contrôleur adéquat.
 L'application à télécharger est active.
 L'application ne contient aucune erreur de compilation.
250
EIO0000000069 02/2018
Gestion des applications
Application de démarrage
L'application de démarrage est l'application lancée au démarrage du contrôleur. Cette application
est stockée dans la mémoire du contrôleur. Pour configurer le téléchargement de l'application de
démarrage, cliquez avec le bouton droit sur le nœud Application de la vue Equipements et
sélectionnez la commande Propriétés.
A la fin d'un téléchargement réussi d'une nouvelle application, un message vous invite à créer
l'application de démarrage.
Vous pouvez créer une application de démarrage manuellement de l'une des façons suivantes :
En mode hors ligne : cliquez sur En ligne → Créer une application de démarrage pour
enregistrer l'application de démarrage dans un fichier.
 En mode En ligne, avec l'application en mode STOP : cliquez sur En ligne → Créer une
application de démarrage pour télécharger l'application de démarrage sur le contrôleur.

Modes de fonctionnement
La méthode de téléchargement diffère selon la relation entre l'application chargée et l'application
à télécharger. Trois cas se présentent :
 Cas 1 : l'application du contrôleur est la même que celle que vous souhaitez charger. Dans ce
cas, aucun téléchargement n'est effectué. Il vous suffit de connecter SoMachine au contrôleur.
 Cas 2 : des modifications ont été apportées à l'application qui est chargée sur le contrôleur, par
rapport à l'application sur SoMachine. Dans ce cas, vous pouvez indiquer si vous souhaitez
télécharger tout ou partie de l'application modifiée ou conserver l'application telle quelle dans le
contrôleur.
 Cas 3 : une version nouvelle ou différente de l'application est déjà disponible sur le contrôleur.
Dans ce cas, le système vous demande si vous souhaitez remplacer cette application.
 Cas 4 : l'application n'est pas encore disponible sur le contrôleur. Dans ce cas, le système vous
invite à confirmer le téléchargement.
Téléchargement de votre application sur le contrôleur : cas 1
L'application sur le contrôleur est la même que celle que vous souhaitez charger. Dans ce cas,
aucun téléchargement n'est effectué ; il vous suffit de connecter SoMachine au contrôleur.
Étape
Action
1
Pour établir une connexion au contrôleur, sélectionnez En ligne → Ouvrir la session sur
« Application[NomApplication; Plc Logic] ».
2
La connexion au contrôleur est établie.
EIO0000000069 02/2018
251
Gestion des applications
Téléchargement de votre application sur le contrôleur : cas 2
Des modifications ont été apportées à l'application qui est chargée sur le contrôleur, par rapport à
l'application sur SoMachine.
Étape
Action
1
Pour établir une connexion au contrôleur, sélectionnez En ligne → Ouvrir la session sur
« Application[NomApplication; Plc Logic] ».
2
Si vous avez modifié votre application et que vous souhaitez la recharger sur le contrôleur, le message
suivant apparaît :
Ouverture de session avec changement en ligne : Seules les parties modifiées d'un projet déjà exécuté
seront rechargées sur le contrôleur.
Ouverture de session avec téléchargement : L'intégralité de l'application modifiée est rechargée sur le
contrôleur.
Ouverture de session sans changement : Les modifications ne sont pas chargées.
NOTE : Si vous sélectionnez l'option Ouverture de session sans changement, les changements que
vous effectuez dans l'application SoMachine ne sont pas téléchargés sur le contrôleur. Dans ce cas, la
barre d'état et d'information de SoMachine affiche RUN comme état opérationnel et indique Program
modified (Online change). Cette option diffère des options Ouverture de session avec changement en
ligne ou Ouverture de session avec téléchargement, où la barre d'état et d'information indique Program
unchanged.
Dans ce cas, la surveillance des variables est possible, mais le flux logique peut porter à confusion car
les valeurs des sorties de bloc fonction sont susceptibles de ne pas correspondre aux valeurs des
entrées.
Exemples
Dans LD, les états de contact sont surveillés à partir des variables affectées. Ainsi, un contact animé bleu
suivi d'un lien bleu (signifiant vrai) peut s'afficher, même si la bobine connectée à ce contact l'indique
comme faux. Dans le flux logique ST, une instruction IF ou une boucle semble être exécutée, ce qui n'est
en fait pas le cas car l'expression de condition diffère dans le projet et sur le contrôleur.
3
252
Sélectionnez l'option appropriée, puis cliquez sur OK.
EIO0000000069 02/2018
Gestion des applications
NOTE : pour obtenir des informations de sécurité importantes relatives au téléchargement
d'applications, consultez le guide de programmation de votre contrôleur.
Téléchargement de votre application sur le contrôleur : cas 3
Une version nouvelle ou différente de l'application est déjà disponible sur le contrôleur.
Étape
Action
1
Pour établir une connexion au contrôleur, choisissez En ligne → Ouvrir la session sur
« Application[NomApplication; Plc Logic] ».
2a
Si le contrôleur n'est pas en mode RUN et que vous souhaitez charger une autre application que celle
actuellement présente sur le contrôleur, le message suivant s'affiche :
Avant de cliquer sur Oui pour télécharger la nouvelle application sur le contrôleur, ou sur Non pour
annuler l'opération, consultez les messages d'avertissement ci-dessous.
2b
Si le contrôleur est en mode RUN et que vous souhaitez charger une autre application que celle
actuellement présente sur le contrôleur, le message suivant s'affiche :
Avant de cliquer sur Oui pour télécharger la nouvelle application sur le contrôleur, ou sur Non pour
annuler l'opération, consultez les messages de génération ci-dessous.
EIO0000000069 02/2018
253
Gestion des applications
AVERTISSEMENT
COMPORTEMENT IMPRÉVU DE L'ÉQUIPEMENT
Avant de confirmer le téléchargement, vérifiez que vous avez la bonne application.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Si vous cliquez sur Oui, l'application exécutée sur votre contrôleur sera remplacée.
Pour éviter toute perte d'informations, annulez cette opération en cliquant sur Non et exécutez au
préalable la commande Chargement de sources. L'application actuellement disponible sur votre
contrôleur sera chargée sur votre PC. Vous pouvez alors la comparer avec celle que vous
prévoyez de télécharger.
Téléchargement de votre application sur le contrôleur : cas 4
L'application n'est pas encore disponible sur le contrôleur.
Étape
Action
1
Pour établir une connexion au contrôleur, choisissez En ligne → Ouvrir la session sur
« Application[NomApplication; Plc Logic] ».
2
Si l'application n'est pas encore disponible sur le contrôleur, le système vous invite à confirmer le
téléchargement. Pour ce faire, une boîte de dialogue contenant le texte suivant s'affiche :
Cliquez sur Oui pour télécharger l'application sur le contrôleur, ou sur Non pour annuler l'opération.
NOTE : pour obtenir des informations de sécurité importantes relatives au téléchargement
d'applications, consultez le guide de programmation de votre contrôleur.
254
EIO0000000069 02/2018
Gestion des applications
Changement en ligne
La commande Changement en ligne modifie le programme d'application en cours sans affecter le
processus de redémarrage.
 Le code du programme peut se comporter d'une manière autre qu'après une initialisation
complète, car la machine conserve son état.
 Les variables de pointeur conservent les mêmes valeurs qu'au dernier cycle. Si une variable
comporte un pointeur dont la taille a été modifiée en raison d'une modification en ligne, la valeur
n'est plus correcte. Vérifiez que les variables de pointeur sont réattribuées à chaque cycle.
AVERTISSEMENT
COMPORTEMENT IMPRÉVU DE L'ÉQUIPEMENT
Avant de mettre le système en service, vérifiez que l'intégralité du code de votre application est
fonctionnelle.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
NOTE : Pour obtenir des informations spécifiques, consultez le chapitre Description des états de
contrôleur dans le Guide de programmation de votre contrôleur.
Si le projet d'application actuellement exécuté sur le contrôleur a été changé dans le système de
programmation étant donné qu'il a été téléchargé en dernier, alors seuls les objets modifiés du
projet seront chargés sur le contrôleur pendant l'exécution du programme.
Changement en ligne implicite
Lorsque vous tentez de vous reconnecter avec une application modifiée (contrôlée via
COMPILEINFO, qui a été stocké dans le dossier projet lors du dernier téléchargement), le système
vous demande si vous souhaitez effectuer un changement en ligne, un téléchargement ou une
connexion sans changement.
EIO0000000069 02/2018
255
Gestion des applications
Boîte de dialogue de connexion :
Description des éléments :
256
Elément
Description
Ouverture de session avec
changement en ligne :
Cette option est sélectionnée par défaut. Si vous
confirmez la boîte de dialogue en cliquant sur OK, les
modifications seront chargées et immédiatement
affichées dans la vue en ligne (surveillance) du ou des
objets correspondants.
Ouverture de session avec
téléchargement :
Activez cette option pour charger et initialiser
complètement le projet d'application.
Ouverture de session sans
changement :
Activez cette option pour ne pas modifier le
programme exécuté sur le contrôleur. Un
téléchargement explicite pourra ensuite être effectué,
entraînant ainsi le chargement de tout le projet
d'application. Le système est aussi susceptible de
vous demander à nouveau si un changement en ligne
doit être réalisé lors de la prochaine reconnexion.
Détails
Cliquez sur ce bouton pour obtenir la boîte de
dialogue Application Information (Nom du projet,
Dernière modification, version IDE, Auteur,
Description) de l'application actuelle dans IDE
(Integrated Development Environment, c'est-à-dire
SoMachine), par rapport à celle actuellement
disponible sur le contrôleur. Reportez-vous à la figure
suivante et au chapitre Application Information
(voir page 245).
EIO0000000069 02/2018
Gestion des applications
Boîte de dialogue Application Information
Pour plus d'informations, reportez-vous au chapitre Connexion (voir page 246).
Si le changement en ligne génère des modifications importantes du code de téléchargement,
comme des déplacements possibles des adresses de pointeur ou des redirections nécessaires
des références d'interface (voir page 178), une autre boîte de message apparaît une fois que vous
avez confirmé la boîte de dialogue Changement en ligne en cliquant sur OK pour que le téléchargement s'effectue. Celle-ci vous informe des répercussions de votre choix et vous permet
d'annuler l'opération de changement en ligne.
NOTE : avec SoMachine V4.0 et version ultérieure, après avoir retiré une fonction de vérification
implicite (telle que CheckBounds) de votre application, aucun changement en ligne ne peut être
effectué. Seul un téléchargement est possible. Un message approprié s'affiche.
Cliquez sur le bouton Détails de cette boîte de message pour obtenir des informations détaillées,
telles que le nombre et la liste des interfaces modifiées, les POU, les variables affectées, etc.
EIO0000000069 02/2018
257
Gestion des applications
Boîte de dialogue Detailed Online Change Information
Changement en ligne explicite
Exécutez la commande Changement en ligne (par défaut dans le menu En ligne) pour effectuer
explicitement une opération de changement en ligne sur une application particulière.
Un Changement en ligne d'un projet modifié n'est plus possible après une opération Nettoyer
(Générer → Nettoyer tout, Générer → Nettoyer). Dans ce cas, les informations dans lesquelles
des objets ont été changés depuis le dernier téléchargement seront supprimées. Par conséquent,
seul le projet complet peut être téléchargé.
NOTE :
258
EIO0000000069 02/2018
Gestion des applications
Tenez compte des éléments suivants avant d'exécuter la commande Changement en ligne :
 Vérifiez que le code modifié ne contient aucune erreur logique.
 Les variables de pointeur conservent leur valeur du dernier cycle. Si vous pointez sur une
variable qui a été déplacée, la valeur n'est plus correcte. Pour cette raison, réattribuez les
variables de pointeur dans chaque cycle.
Informations sur le processus de téléchargement
Lorsque le projet est chargé sur le contrôleur complètement lors de la Connexion ou partiellement
lors du Changement en ligne, la vue Messages fournit des informations sur la taille du code
généré, la taille des données globales, l'espace mémoire nécessaire sur le contrôleur et, en cas
de changement en ligne, également sur les POU affectées.
NOTE : en mode en ligne, il n'est pas possible de modifier les paramètres des équipements ou
modules. Pour modifier les paramètres des équipements, l'application doit être déconnectée.
Selon le système de bus, la modification de certains paramètres spéciaux peut être autorisée en
mode en ligne.
Application de démarrage (projet de démarrage)
Lors de chaque téléchargement réussi, l'application active est automatiquement stockée dans le
fichier application.app du dossier système du contrôleur, et devient ainsi disponible comme
application de démarrage. Une application de démarrage est le projet lancé automatiquement au
démarrage du contrôleur (démarré). Pour que le téléchargement de l'application active devienne
l'application de démarrage, vous devez exécuter la commande Créer l'application de démarrage
(disponible dans le menu En ligne).
La commande Créer l'application de démarrage copie le fichier application.app vers un fichier
appelé <nom_projet>.app et le définit ainsi comme application de démarrage pour le contrôleur.
Vous pouvez aussi créer l'application de démarrage en mode hors ligne (voir page 251).
Si vous souhaitez établir une connexion au même contrôleur à partir du système de
programmation sur un autre PC, ou si vous souhaitez récupérer l'application active depuis un autre
PC, sans recourir au changement en ligne ou au téléchargement, suivez les étapes décrites au
paragraphe Transfert de projets vers d'autres systèmes.
Transfert de projets vers d'autres systèmes
Pour transférer un projet vers un autre ordinateur, utilisez une archive de projet (voir SoMachine,
Commandes de menu, Aide en ligne).
Vous pouvez transférer un projet déjà exécuté sur un contrôleur xy, du système de programmation
du PC1 vers celui du PC2. Pour pouvoir rétablir la connexion du PC2 vers le même contrôleur xy
sans devoir recourir au changement en ligne ou au téléchargement, vérifiez les paramètres de
projet suivants avant de créer une archive de projet.
EIO0000000069 02/2018
259
Gestion des applications
Procédez comme suit :
1. Vérifiez que seules les bibliothèques avec des versions définitives sont incluses dans le projet,
à l'exception des bibliothèques d'interface pures. (Ouvrez le Gestionnaire de bibliothèques et
vérifiez les entrées marquées d'un astérisque (*) au lieu d'une version corrigée
(voir SoMachine, Fonctions et bibliothèques - Guide de l'utilisateur).)
2. Vérifiez qu'une version de compilateur définitive est configurée dans la boîte de dialogue
Paramètres du projet → Options de compilation (voir SoMachine, Commandes de menu, Aide
en ligne).
3. Vérifiez qu'un profil de visualisation précis est défini dans la boîte de dialogue Paramètres du
projet → Profil de visualisation (pour plus d'informations, reportez-vous à la partie Visualisation
de l'aide en ligne SoMachine).
4. Vérifiez que l'application actuellement ouverte est la même que celle déjà disponible sur le
contrôleur. Ainsi, le projet de démarrage (reportez-vous à la commande En ligne → Créer une
application de démarrage (voir SoMachine, Commandes de menu, Aide en ligne)) doit être
identique au projet présent dans le système de programmation. Si un astérisque apparaît après
le titre du projet dans la barre de titre de la fenêtre du système de programmation, cela signifie
que le projet a été modifié mais pas encore enregistré. Dans ce cas, il peut différer du projet de
démarrage. Si nécessaire, avant de transférer le projet vers un autre PC, créez un (nouveau)
projet de démarrage (pour certains contrôleurs, cette opération est automatique lors du
téléchargement), puis téléchargez et démarrez le projet sur le contrôleur.
5. Créez l'archive du projet via SoMachine Central. Sélectionnez les informations suivantes :
fichiers d'informations de téléchargement, profil de bibliothèque, équipements référencés,
bibliothèques référencées, profil de visualisation.
6. Déconnectez-vous. Si nécessaire, arrêtez puis redémarrez le contrôleur xy avant de rétablir la
connexion depuis le PC2.
7. Extrayez l'archive de projet sur le PC2 avec les mêmes options d'information activées lors de
l'étape 5.
260
EIO0000000069 02/2018
Gestion des applications
Sous-chapitre 9.3
Exécution d'applications
Exécution d'applications
Exécution d'applications
Introduction
Cette partie explique comment lancer/arrêter une application.
Commande EXECUTE/STOP avec SoMachine
Le contrôleur peut être lancé et arrêté à l'aide de SoMachine exécuté sur un PC connecté au
contrôleur.
Cliquez sur En ligne → Démarrer « Application [NomApplication: logique API] », appuyez sur
CTRL+F5 ou cliquez sur le bouton Démarrer « Application [NomApplication: logique API] » dans
la barre de menus pour démarrer l'application.
Cliquez sur En ligne → Stop « Application [NomApplication: logique API] », appuyez sur
CTRL+MAJ+F5 ou cliquez sur le bouton Stop « Application [NomApplication: logique API] » dans
la barre de menus pour arrêter l'application.
Entrée RUN/STOP pour les contrôleurs
Certains contrôleurs permettent de configurer une entrée Run/Stop pour commander le démarrage
ou l'arrêt de l'application.
Etat
Description
0
Arrêter l'application. La commande EXECUTE dans SoMachine ne peut pas être utilisée.
Front
Lancer l'application.
montant
1
L'application est exécutée. Les commandes EXECUTE/STOP dans SoMachine ne peuvent pas
être utilisées.
Consultez le manuel de votre contrôleur pour déterminer si celui-ci prend en charge cette fonction.
Configurez ou utilisez l'entrée RUN/STOP si vous souhaitez utiliser des commandes à distance
pour démarrer ou arrêter le contrôleur. C'est la meilleure méthode pour contribuer à assurer une
commande locale du fonctionnement de l'automate pour éviter le démarrage intempestif de cet
automate depuis un site distant.
EIO0000000069 02/2018
261
Gestion des applications
AVERTISSEMENT
DEMARRAGE IMPREVU DE LA MACHINE OU DU PROCESSUS


Vérifiez l'état de sécurité de l'environnement de votre machine ou de votre processus avant
de mettre l'entrée Run/Stop sous tension.
Utilisez l'entrée Run/Stop pour éviter tout démarrage intempestif à distance.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
262
EIO0000000069 02/2018
Gestion des applications
Sous-chapitre 9.4
Entretien des applications
Entretien des applications
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Surveillance
264
Débogage
265
EIO0000000069 02/2018
263
Gestion des applications
Surveillance
Présentation
En mode en ligne, les valeurs actuelles des objets du contrôleur peuvent être affichées de
différentes façons :





Vous pouvez afficher la valeur des objets dans un éditeur de programme lorsque vous êtes
connecté. Pour plus d'informations, voir la description de l'éditeur correspondant.
Vous pouvez afficher les valeurs des objets dans l'affichage en ligne de l'éditeur de déclaration.
Pour plus d'informations, consultez la description de l'éditeur de déclaration (voir page 397).
Vous pouvez afficher les objets de façon indépendante dans des listes à l'aide de la commande
Surveillance. Pour plus d'informations, consultez la description de l'éditeur affichage de
surveillance / liste de surveillance (voir page 448). Pour insérer une variable dans un affichage
de surveillance, sélectionnez, puis exécutez la commande Add watchlist du menu contextuel.
Vous pouvez afficher des valeurs par échantillonnage de suivi : enregistrement et affichage des
valeurs des variables provenant du contrôleur. Pour plus d'informations, consultez la
description de la fonctionnalité objet de suivi (voir page 486).
Vous pouvez afficher les valeurs des objets présentes dans les recettes : ensemble de
variables définies par l'utilisateur pour surveiller ces variables sur le contrôleur. Pour plus
d'informations, consultez la description du gestionnaire de recettes (voir page 465).
Pour plus d'informations sur la surveillance des propriétés insérées sous les POU ou sous les
blocs fonction, consultez le chapitre Propriété (voir page 176).
Pour plus d'informations sur la surveillance des appels de fonction, consultez le chapitre
Surveillance des attributs (voir page 602).
NOTE : Si une valeur n'est pas valide (par exemple, le résultat du calcul d'une racine carrée d'un
nombre négatif), le résultat NaN (non numérique) ou INF (valeur infinie) peut s'afficher suivant
l'opération, l'objet et la plate-forme de contrôleur utilisée. Pour plus d'informations, reportez-vous
au guide de programmation de votre contrôleur.
264
EIO0000000069 02/2018
Gestion des applications
Débogage
Présentation
Pour évaluer les erreurs de programmation potentielles, vous pouvez utiliser la fonctionnalité de
débogage en mode en ligne. Jusqu'à un certain point, vous pouvez également déboguer
l'application en mode simulation. La simulation évite d'avoir à se connecter au matériel physique,
mais présente des restrictions qui peuvent nécessiter de terminer le débogage en ligne.
Vous pouvez définir des points d'arrêt à des positions spécifiques afin de forcer l'arrêt de
l'exécution. Certaines conditions, comme l'identification des tâches et des cycles dans lesquels les
points d'arrêt doivent être en vigueur, peuvent être définies pour chaque point d'arrêt (points d'arrêt
conditionnels). Consultez la description des points d'arrêt plus loin dans ce chapitre.
Des fonctions pas à pas sont disponibles et permettent d'exécuter un programme sous forme
d'étapes contrôlées. Consultez le paragraphe Pas à pas (voir page 266).
À chaque arrêt, vous pouvez examiner les valeurs actuelles des variables. Vous pouvez en outre
afficher une pile d'appels (voir SoMachine, Commandes de menu, Aide en ligne) pour la position
de l'étape actuelle.
Vous pouvez activer la fonction Contrôle de déroulement pour suivre les parties du programme
d'application qui ont été exécutées. Contrairement à la fonction de surveillance standard qui
affiche uniquement la valeur d'une variable entre deux cycles d'exécution, la fonction Contrôle de
déroulement donne la valeur de chacune des étapes de l'exécution, au moment de son exécution.
Points d'arrêt
Un point d'arrêt défini dans un programme d'application entraîne un arrêt pendant l'exécution du
programme. Seule la tâche qui a atteint le point d'arrêt (appelée plus loin tâche de débogage) est
mise en pause. L'exécution des autres tâches continue. Les positions possibles pour les points
d'arrêt dépendent de l'éditeur. Dans tous les cas, un point d'arrêt est inséré la fin d'un POU.
NOTE : Les E/S traitées par la tâche de débogage ne sont pas mises à jour lors d'une pause ou
d'un point d'arrêt. Ceci s'applique même si l'option Mettre à jour E/S en mode Stop est activée dans
l'onglet Paramètres API de l'éditeur d'équipement (voir page 131).
Pour une description des commandes relatives aux points d'arrêt, consultez le chapitre
Commandes liées aux points d'arrêt. La boîte de dialogue (voir SoMachine, Commandes de menu,
Aide en ligne) Points d'arrêt donne un aperçu de tous les points d'arrêt et permet d'en ajouter, d'en
supprimer ou d'en modifier.
Points d'arrêt conditionnels
La pause sur un point d'arrêt peut dépendre du nombre de cycles d'une tâche donnée ou de la
tâche active. La déclaration d'une tâche de débogage spécifique permet d'assurer que seul le point
d'arrêt et non toutes les tâches partageant un même POU soit affectée (voir le paragraphe Points
d'arrêt et procédures pas à pas dans les applications contenant plusieurs tâches (voir page 266)).
EIO0000000069 02/2018
265
Gestion des applications
Symboles des points d'arrêt
Symbole
Description
Point d'arrêt activé
Point d'après désactivé
Pause sur le point d'arrêt en mode en ligne
Position d'étape actuelle
indiquée par une flèche jaune avant la ligne correspondante et un ombrage jaune derrière l'opération
concernée
Pas à pas
La fonction pas à pas permet de contrôler l'exécution d'un programme d'application en vue du
débogage. Concrètement, vous passez d'une instruction à la suivante en accédant à une
instruction (Pas à pas détaillé), en passant à l'instruction suivante ((Pas à pas principal) ou en
sortant d'une instruction (Pas à pas sortant). Pour une description des commandes pas à pas,
consultez le chapitre Commandes liées aux points d'arrêt (voir SoMachine, Commandes de menu,
Aide en ligne).
Exemple d'opération Pas à pas détaillé
À partir du point d'arrêt, vous pouvez exécuter chacune des lignes de commandes à l'aide de la
commande pas à pas.
Pas à pas détaillé - Exemple
Points d'arrêt et procédures pas à pas dans les applications contenant plusieurs tâches
Si plusieurs tâches atteignent un point d'arrêt (utilisation du POU par plusieurs tâches), seule la
tâche arrivant la première est mise en pause. Vous devez en tenir compte en cas de fonction pas
pas unique ou si vous continuez le débogage après une pause. Il peut arriver qu'une autre tâche
soit mise en pause lors de l'accès suivant (le cycle n'est peut-être pas encore terminé). Si un seul
type de tâche doit être concerné (tâche de débogage), vous devez l'indiquer dans les propriétés
des conditions des points d'arrêt (boîte de dialogue Points d'arrêt → Nouveau point d'arrêt, onglet
Condition).
266
EIO0000000069 02/2018
SoMachine
Editeurs logiques
EIO0000000069 02/2018
Partie IV
Editeurs logiques
Editeurs logiques
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
10
Editeur FBD/LD/IL
269
11
Editeur CFC (Continuous Function Chart)
321
12
Editeur SFC (Sequential Function Chart)
341
13
Editeur ST (Structured Text)
373
EIO0000000069 02/2018
267
Editeurs logiques
268
EIO0000000069 02/2018
SoMachine
Editeur FBD/LD/IL
EIO0000000069 02/2018
Chapitre 10
Editeur FBD/LD/IL
Editeur FBD/LD/IL
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
10.1
Informations sur l'éditeur FBD/LD/IL
270
10.2
Eléments FBD/LD/IL
301
10.3
Eléments LD
318
EIO0000000069 02/2018
269
Editeur FBD/LD/IL
Sous-chapitre 10.1
Informations sur l'éditeur FBD/LD/IL
Informations sur l'éditeur FBD/LD/IL
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
270
Page
Editeur FBD/LD/IL
271
Langage FBD (Function Block Diagram)
272
Langage Diagramme à contacts (Ladder Diagram, LD)
273
Langage Liste d'instructions (Instruction List, IL)
274
Modificateurs et opérateurs dans IL
276
Utilisation de l'éditeur FBD et LD
279
Utilisation de l'éditeur IL
284
Positions du curseur dans FBD, LD et IL
290
Menu FBD/LD/IL
294
Editeur FBD/LD/IL en mode en ligne
295
EIO0000000069 02/2018
Editeur FBD/LD/IL
Editeur FBD/LD/IL
Présentation
Un éditeur combiné permet de modifier les POU en langages FBD (function block diagram
(voir page 272)), LD (ladder diagram (voir page 273)) et IL (instruction list (voir page 274)).
Par conséquent, un groupe commun de commandes et d'éléments est utilisé et une conversion
interne automatique entre les 3 langages est effectuée. En mode hors ligne, le programmeur peut
basculer entre les vues de l'éditeur(Vue).
N'oubliez pas que des éléments spéciaux ne peuvent pas être convertis et ne s'afficheront donc
que dans le langage approprié. En outre, certaines constructions ne peuvent pas être converties
sans équivoque entre IL et FBD et seront donc normalisées dans une reconversion en FBD ; en
particulier, la négation des expressions et les affectations de sortie explicites/implicites.
Vous pouvez définir le comportement, l'aspect et les menus de l'éditeur FBD/LD/IL dans les boîtes
de dialogue Personnaliser et Options. Vous avez aussi la possibilité de définir l'affichage des
commentaires et des adresses.
L'éditeur s'ouvre dans une fenêtre bipartite. Lorsque vous modifiez un objet programmé dans
FBD/LD/IL, la partie supérieure contient un éditeur de déclaration (voir page 398) et la partie
inférieure contient une zone de codage.
Le langage de programmation d'un nouvel objet est spécifié lorsque vous créez l'objet.
Pour plus d'informations, reportez-vous à :


Utilisation de la vue de l'éditeur FBD et LD (voir page 279)
Utilisation de la vue de l'éditeur IL (voir page 284)
EIO0000000069 02/2018
271
Editeur FBD/LD/IL
Langage FBD (Function Block Diagram)
Présentation
FBD est un langage de programmation orienté graphique. Il fonctionne avec une liste de réseaux.
Chaque réseau contient une structure graphique de boîtes et de lignes de connexion représentant
une expression logique ou arithmétique, un appel de bloc fonction, un saut ou une instruction de
retour.
Réseaux FBD
272
EIO0000000069 02/2018
Editeur FBD/LD/IL
Langage Diagramme à contacts (Ladder Diagram, LD)
Présentation
Le Diagramme à contacts (LD) est un langage de programmation orienté graphique qui ressemble
à la structure d'un circuit électrique.
Le Diagramme à contacts (LD) est approprié à la construction de commutateurs logiques, mais
permet également de créer des réseaux comme dans le FBD. Ainsi, le LD est utile au contrôle de
l'appel des autres POU.
Le Diagramme à contacts (LD) se compose d'une série de réseaux, dont chacun d'entre eux est
limité par une ligne de courant verticale (rail d'alimentation) sur la gauche. Un réseau contient un
diagramme de circuit constitué de contacts, de bobines, mais aussi éventuellement de POU
(boîtes) supplémentaires et de lignes de connexion.
Sur le côté gauche se trouve un contact ou une série de contacts passant de gauche à droite la
condition ON ou OFF qui correspond aux valeurs booléennes VRAI et FAUX. Une variable
booléenne est attribuée à chaque contact. Si cette variable est VRAI, la condition sera passée de
gauche à droite le long de la ligne de connexion. Sinon, la condition OFF sera passée. Ainsi, la ou
les bobines placées dans la partie droite du réseau reçoivent une condition ON ou OFF provenant
de la gauche. Par conséquent, la valeur VRAI ou FAUX sera écrite dans une variable booléenne
attribuée.
Réseau Diagramme à contacts (Ladder Diagram, LD).
EIO0000000069 02/2018
273
Editeur FBD/LD/IL
Langage Liste d'instructions (Instruction List, IL)
Présentation
La liste d'instructions (IL) est un langage de programmation pour assemblage conforme à
IEC 61131-3.
Ce langage prend en charge la programmation basée sur un accumulateur. Les opérateurs
IEC 61131-3 sont pris en charge, ainsi que plusieurs entrées/plusieurs sorties, les négations, les
commentaires, la définition/redéfinition des sorties et les sauts non conditionnels/conditionnels.
Chaque instruction est d'abord basée sur le chargement des valeurs dans l'accumulateur à l'aide
de l'opérateur LD. L'opération est ensuite exécutée avec le premier paramètre extrait de
l'accumulateur. Le résultat de l'opération est disponible dans l'accumulateur, à partir duquel vous
devez le stocker avec l'instruction ST.
Pour permettre la programmation des boucles ou des exécutions conditionnelles, IL prend en
charge les opérateurs de comparaison (comme EQ, GT, LT, GE, LE et NE) et les sauts. Ces
derniers peuvent être non conditionnels (JMP) or conditionnels (JMPC/JMPCN). Pour les sauts
conditionnels, la valeur de l'accumulateur est référencée pour VRAI ou FAUX.
Syntaxe
Une liste d'instructions (IL) est composée d'une série d'instructions. Chaque instruction commence
sur une nouvelle ligne et contient un opérateur et, selon le type d'opération, un ou plusieurs
opérandes séparés par des virgules. Vous pouvez étendre l'opérateur par un modificateur.
Sur une ligne précédant une instruction peut se trouver une marque d'identification (étiquette)
suivie du signe deux-points (:) (ml: dans l'exemple ci-dessous). Une étiquette peut être la cible
d'une instruction de saut (JMPC m1 dans l'exemple ci-dessous).
Placez un commentaire comme dernier élément d'une ligne.
Vous pouvez insérer des lignes vides entre les instructions.
274
EIO0000000069 02/2018
Editeur FBD/LD/IL
Exemple
PROGRAM IL
VAR
inst1: TON;
dwVar: DWORD;
dwRes: DWORD;
t1:
TIME;
tout1: TIME;
inst2: TON;
bVar: BOOL;
END_VAR
LD
bVar
ST
inst1.IN
JMPC
ml
CAL
inst1(
PT:=t1,
ET:=>tout1)
LD
inst1.Q
ST
inst2.IN
ml:
LD
dwVar
ADD
230
ST
dwRes
variable
starts timer with risin...
is TRUE, PT seconds aft...
starts timer with risin...
Pour plus d'informations, reportez-vous à :


Utilisation de la vue de l'éditeur IL (voir page 284)
Modificateurs et opérateurs dans IL (voir page 276)
EIO0000000069 02/2018
275
Editeur FBD/LD/IL
Modificateurs et opérateurs dans IL
Modificateurs
Vous pouvez utiliser les modificateurs suivants dans Liste d'instructions (voir page 274).
C
avec JMP, CAL, RET :
L'instruction sera uniquement exécutée si le
résultat de l'expression précédente est VRAI.
N
avec JMPC, CALC, RETC :
L'instruction sera uniquement exécutée si le
résultat de l'expression précédente est FAUX.
N
Négation de l'opérande (et non de
avec d'autres opérateurs, selon
le tableau Opérateurs ci-dessous l'accumulateur).
(N dans la colonne Modificateurs)
NOTE : en général, il n'est pas recommandé d'utiliser l'instruction CALC (/RETC/JMPC) juste
après un opérateur STN, S ou R, car elle modifie arbitrairement la valeur de l'accumulateur, ce qui
est source d'erreurs de programmation difficiles à localiser.
Opérateurs
Le tableau indique les opérateurs pouvant être utilisés en combinaison avec les modificateurs
spécifiés.
L'accumulateur stocke la valeur actuelle qui résulte de l'opération précédente.
276
Opérateur
Modificateurs
Signification
Exemple
LD
N
Charge la valeur (négative) de l'opérande dans
l'accumulateur.
LD iVar
ST
N
Stocke le contenu (négatif) de l'accumulateur
dans la variable d'opérande.
ST iErg
S
–
Définit l'opérande (type BOOL) sur VRAI lorsque S bVar1
le contenu de l'accumulateur est VRAI.
R
–
Définit l'opérande (type BOOL) sur FAUX lorsque R bVar1
le contenu de l'accumulateur est FAUX.
AND
N,(
Opération AND au niveau du bit de
l'accumulateur et de l'opérande (négatif).
OR
N,(
Opération OR au niveau du bit de l'accumulateur OR xVar
et de l'opérande (négatif).
XOR
N,(
Opération OR exclusive au niveau du bit de
l'accumulateur et de l'opérande (négatif).
XOR N, (bVar1,bVar
2)
NOT
–
Négation au niveau du bit du contenu de
l'accumulateur.
–
ADD
(
Ajout de l'accumulateur et de l'opérande ; le
résultat est copié dans l'accumulateur.
ADD
)
AND bVar2
(iVar1,iVar2
EIO0000000069 02/2018
Editeur FBD/LD/IL
Opérateur
Modificateurs
Signification
SUB
(
Soustraction de l'accumulateur et de l'opérande ; SUB iVar2
le résultat est copié dans l'accumulateur.
Exemple
MUL
(
Multiplication de l'accumulateur et de
l'opérande ; le résultat est copié dans
l'accumulateur.
MUL iVar2
DIV
(
Division de l'accumulateur et de l'opérande ; le
résultat est copié dans l'accumulateur.
DIV 44
GT
(
Vérifie si l'accumulateur est supérieur ou égal à
l'opérande ; le résultat (BOOL) est copié dans
l'accumulateur ; >=
GT 23
GE
(
Vérifie si l'accumulateur est supérieur ou égal à
l'opérande ; le résultat (BOOL) est copié dans
l'accumulateur ; >=
GE iVar2
EQ
(
Vérifie si l'accumulateur est égal à l'opérande ; le EQ iVar2
résultat (BOOL) est copié dans l'accumulateur ; =
NE
(
Vérifie si l'accumulateur est différent de
l'opérande ; le résultat (BOOL) est copié dans
l'accumulateur ; <>
NE iVar1
LE
(
Vérifie si l'accumulateur est inférieur ou égal à
l'opérande ; le résultat (BOOL) est copié dans
l'accumulateur ; <=
LE 5
LT
(
Vérifie si l'accumulateur est inférieur à
l'opérande ; le résultat (BOOL) est copié dans
l'accumulateur ; <
LT cVar1
JMP
CN
Saut non conditionnel (conditionnel) vers
l'étiquette
JMPN next
CAL
CN
CAL prog1
Appel (conditionnel) d'un PROGRAMME or
BLOC_FONCTION (si l'accumulateur est VRAI).
RET
–
Retour anticipé du POU et saut en arrière vers le RET
POU d'appel
RET
C
Conditionnel - si l'accumulateur est VRAI, retour
anticipé du POU et saut en arrière vers le POU
d'appel
RET
CN
Conditionnel - si l'accumulateur est FAUX, retour RETCN
anticipé du POU et saut en arrière vers le POU
d'appel
)
–
Evaluer l'opération différée
RETC
–
Voir aussi Opérateurs IEC (voir page 661) et Utiliser l'éditeur IL (voir page 284) pour savoir
comment utiliser et traiter les opérandes multiples, les opérandes complexes, les appels de
fonction/méthode/bloc fonction/programme/action et les sauts.
EIO0000000069 02/2018
277
Editeur FBD/LD/IL
Exemple
Exemple de programme IL utilisant des modificateurs :
LD
ANDN
JMPC
LDN
ST
m1:
LD
ST
278
TRUE
bVar1
m1
bVar2
bRes
bVar2
bRes
load TRUE to accumulator
execute AND with negative value of bVar1
if accum. is TRUE, jump to label "m1"
store negated value of bVar2...
... in bRes
store value of bVar2...
... in bRes
EIO0000000069 02/2018
Editeur FBD/LD/IL
Utilisation de l'éditeur FBD et LD
Présentation
Les réseaux sont les entités de base de la programmation FBD et LD. Chaque réseau contient une
structure qui affiche une expression logique ou arithmétique, une POU (appel de fonction,
programme, bloc fonction, etc.), un saut et une instruction de retour.
Lorsque vous créez un nouvel objet, la fenêtre de l'éditeur contient automatiquement un réseau
vide.
Consultez les paramètres généraux de l'éditeur dans la boîte de dialogue Options, catégorie
FBD/LD/IL pour connaître les potentielles options d'affichage de l'éditeur.
Info-bulle
Les info-bulles contiennent des informations sur les variables ou les paramètres de boîte.
Le curseur placé sur le nom d'une variable ou d'un paramètre de boîte déclenche l'affichage d'une
info-bulle. Elle indique le type correspondant. En cas d'instances de bloc fonction, la portée, le
nom, le type de données, la valeur initiale et le commentaire s'affichent. Pour les opérateurs IEC
SEL, LIMIT et MUX, une courte description des entrées apparaît. S'ils sont définis, l'adresse et le
commentaire de symbole s'affichent, ainsi que le commentaire d'opérande (entre guillemets sur
une seconde ligne).
Exemple : info-bulle sur une sortie POU
EIO0000000069 02/2018
279
Editeur FBD/LD/IL
Insertion et organisation des éléments


Les commandes d'utilisation de l'éditeur sont par défaut disponibles dans le menu FBD/LD/IL
(voir page 294). Les commandes fréquemment utilisées sont également disponibles dans le
menu contextuel. Les éléments pouvant être insérés via la commande de menu varient en
fonction de la position du curseur ou de la sélection en cours (sélection multiple possible ; voir
la section Sélection (voir page 281) ci-dessous).
Vous pouvez aussi faire glisser des éléments avec la souris de la boîte à outils (voir page 302)
vers la fenêtre de l'éditeur, ou d'une position vers une autre dans l'éditeur (glisser-déplacer).
Pour ce faire, cliquez sur l'élément afin de le sélectionner, maintenez le bouton de la souris
enfoncé, puis faites glisser l'élément vers le réseau approprié dans la vue de l'éditeur. Dès que
vous avez atteint le réseau, toutes les positions d'insertion possibles pour le type d'élément
correspondant sont indiquées par des marqueurs de position gris. Lorsque vous placez le
curseur de la souris sur l'une des ces positions, la marqueur devient vert et vous pouvez
relâcher le bouton de la souris de façon à insérer l'élément à cette position.
Positions d'insertion dans l'éditeur LD



280
Vous pouvez utiliser les commandes Couper, Copier, Coller et Supprimer, disponibles dans le
menu Edition, pour organiser les éléments. Vous pouvez aussi copier un élément par glisserdéplacer : cliquez sur l'élément d'un réseau pour le sélectionner, appuyez sur la touche CTRL
et, tout en maintenant le bouton de la souris et la touche enfoncés, faites glisser l'élément vers
la position cible. Dès que la position est atteinte (marqueur de position vert), un symbole plus
est ajouté au symbole de curseur. Relâchez ensuite le bouton de la souris pour insérer
l'élément.
Pour connaître les positions possibles du curseur, reportez-vous à la section Positions du
curseur dans FBD, LD et IL (voir page 290).
L'insertion des boîtes EN/ENO ne s'effectue pas de la même façon dans l'éditeur FBD et LD.
Pour plus d'informations, consultez la description de la commande Insérer l'appel de module
(l'insertion de boîtes EN/ENO n'est pas prise en charge dans l'éditeur IL).
EIO0000000069 02/2018
Editeur FBD/LD/IL
Navigation dans l'éditeur







Vous pouvez utiliser les touches FLECHEES pour accéder à la position du curseur
(voir page 290) suivante ou précédente. Ceci est également possible entre des réseaux. La
navigation avec la touche ← ou → suit le flux de signal qui va normalement de gauche à droite
et inversement. En cas de sauts de ligne, la position du curseur suivante peut être laissée sous
la position actuellement marquée. Si vous appuyez sur la touche ↑ ou ↓, la sélection passe
au voisin suivant au-dessus ou au-dessous de la position actuelle si ce voisin se trouve dans le
même groupe logique (par exemple, une broche d'une boîte). Si ce groupe n'existe pas, elle
passe à l'élément voisin le plus proche situé au-dessus ou au-dessous. La navigation dans des
éléments connectés en parallèle s'effectue le long de la première branche.
Appuyez sur la touche HOME pour passer au premier élément. Appuyez sur la touche FIN pour
passer au dernier élément du réseau.
Utilisez la touche TAB pour passer à la position du curseur (voir page 290) suivante ou
précédente au sein d'un réseau.
Appuyez sur CTRL + DEBUT pour revenir au début du document et marquer le premier réseau.
Appuyez sur CTRL + FIN pour passer à la fin du document et marquer le dernier réseau.
Appuyez sur PAGE PRECEDENTE pour monter d'un écran et marquer le rectangle situé tout
en haut.
Appuyez sur PAGE SUIVANTE pour descendre d'un écran et marquer le rectangle situé tout en
haut.
Sélection


Vous pouvez sélectionner un élément, ainsi qu'un réseau, en spécifiant la position du curseur
adéquate via un clic de souris ou à l'aide des touches fléchées ou de tabulation. Les éléments
sélectionnés sont indiqués en rouge ombré. Reportez-vous également à la section Positions du
curseur dans FBD, LD et IL (voir page 290).
Dans l'éditeur LD, vous pouvez aussi sélectionner des lignes situées entre les éléments, afin
d'exécuter des commandes. Par exemple, pour insérer un autre élément à cette position.
Ligne sélectionnée dans l'éditeur LD

La sélection multiple d'éléments ou réseaux est possible en maintenant enfoncée la
touche CTRL tout en sélectionnant les éléments souhaités l'un après l'autre.
EIO0000000069 02/2018
281
Editeur FBD/LD/IL
Ouverture d'un bloc fonction
Si un bloc fonction est ajouté à l'éditeur, vous pouvez l'ouvrir en double-cliquant dessus. Vous avez
aussi la possibilité d'utiliser la commande Parcourir - Atteindre la définition dans le menu
contextuel.
Editeur FBD
282
EIO0000000069 02/2018
Editeur FBD/LD/IL
Editeur LD
Pour plus d'informations sur les langages, reportez-vous à :


Diagramme à blocs fonction - FBD (Function Block Diagram) (voir page 272)
Diagramme à contacts - LD (Ladder Diagram) (voir page 273)
EIO0000000069 02/2018
283
Editeur FBD/LD/IL
Utilisation de l'éditeur IL
Présentation
L'éditeur Liste d'instructions (voir page 274) (IL) est un éditeur de table. La structure réseau des
programmes FBD ou LD est également représentée dans un programme IL. En principe, un seul
réseau (voir page 304) suffit dans un programme IL, mais en prenant en compte le basculement
entre FBD, LD et IL, vous pouvez aussi utiliser les réseaux pour structurer un programme IL.
Consultez également les paramètres généraux de l'éditeur dans la boîte de dialogue Options,
catégorie FBD/LD/IL.
Info-bulle
Les info-bulles contiennent des informations sur les variables ou les paramètres de boîte.
Reportez-vous à la section Utilisation de la vue de l'éditeur FBD et LD (voir page 279).
Insertion et organisation des éléments





Les commandes d'utilisation de l'éditeur sont disponibles dans le menu FBD/LD/IL. Les
commandes fréquemment utilisées sont également disponibles dans le menu contextuel.
Les unités de programmation qui sont des éléments sont chacune insérées à la position actuelle
du curseur via les commandes Insérer, disponibles dans le menu FBD/LD/IL.
Vous pouvez utiliser les commandes Couper, Copier, Coller et Supprimer, disponibles dans le
menu Edition, pour organiser les éléments.
Reportez-vous aussi aux informations relatives au langage de programmation Liste
d'instructions (IL, Instruction List) (voir page 274).
Les opérateurs disposant de la fonctionnalité EN/ENO peuvent uniquement être insérés dans
l'éditeur FBD et LD.
Ce chapitre explique comment l'éditeur de table est structuré, comment naviguer dans l'éditeur et
comment utiliser les appels, les sauts et les opérandes complexes.
284
EIO0000000069 02/2018
Editeur FBD/LD/IL
Structure de l'éditeur de table IL
Éditeur de table IL
Chaque ligne de programme est écrite dans une ligne de table, structurée en champs par les
colonnes de table :
Colonne
Contient
Description
1
opérateur
Ce champ contient l'opérateur IL (LD, ST, CAL, AND, OR, etc.) ou un nom de
fonction.
En cas d'appel de bloc fonction, les paramètres correspondants sont également
spécifiés ici. Entrez le champ de préfixe := ou =>.
Pour plus d'informations, reportez-vous à la section Modificateurs et opérateurs dans
IL (voir page 276).
2
opérande
Ce champ contient exactement un opérande ou une étiquette de saut. Si plusieurs
opérandes sont requis (opérateurs multiples/extensibles AND A, B, C, ou appels de
fonction avec plusieurs paramètres), écrivez-les sur les lignes suivantes et laissez
vide le champ d'opérateur. Dans ce cas, ajoutez une virgule de séparation des
paramètres.
En cas d'appel de bloc fonction, programme ou action, ajoutez les parenthèses
d'ouverture et/ou de fermeture appropriées.
3
adresse
Ce champ contient l'adresse de l'opérande défini dans la partie de déclaration. Vous
ne pouvez pas modifier ce champ. Utilisez l'option Show symbol address pour
l'activer ou le désactiver.
4
symbol comment
Ce champ contient le commentaire défini pour l'opérande dans la partie de
déclaration. Vous ne pouvez pas modifier ce champ. Utilisez l'option Show symbol
address pour l'activer ou le désactiver.
5
operand comment
Ce champ contient le commentaire de la ligne actuelle. Il est modifiable et peut être
activé ou désactivé via l'option Show operand comment.
EIO0000000069 02/2018
285
Editeur FBD/LD/IL
Navigation dans la table











Touches fléchées HAUT et BAS : déplacement vers le champ situé au-dessus ou en dessous.
TAB : déplacement sur une ligne vers le champ situé à droite.
MAJ + TAB : déplacement sur une ligne vers le champ situé à gauche.
ESPACE : ouvre le champ sélectionné pour modification. Vous pouvez aussi cliquer sur le
champ. Le cas échéant, l'assistant de saisie sera disponible via le bouton .... Vous pouvez
fermer un champ de modification ouvert en appuyant sur ENTREE pour confirmer les entrées
actuelles ou en appuyant sur ECHAP pour annuler les entrées réalisées.
CTRL + ENTREE : insère une nouvelle ligne sous la ligne actuelle.
SUPPR : supprime le ligne actuelle où vous avez sélectionné un champ.
Couper, Copier, Coller : pour copier une ou plusieurs lignes, sélectionnez au moins un champ
de la lignes ou des lignes, puis exécutez la commande Copier. Pour couper une ligne, utilisez
la commande Couper. La commande Coller insérera les lignes précédemment
copiées/coupées avant la ligne où un champ est actuellement sélectionné. Si aucun champ
n'est sélectionné, elles seront insérées à la fin du réseau.
CTRL + DEBUT permet de revenir au début du document et de marquer le premier réseau.
CTRL + FIN permet de passer à la fin du document et de marquer le dernier réseau.
PAGE PRECEDENTE permet de monter d'un écran et de marquer le rectangle situé tout en
haut.
PAGE SUIVANTE permet de descendre d'un écran et de marquer le rectangle situé tout en
haut.
Opérandes multiples (opérateurs extensibles)
Si le même opérateur (voir page 276) est utilisé avec plusieurs opérandes, vous disposez de deux
moyens de programmation :
 Les opérandes sont saisis sur les lignes suivantes, séparés par des virgules. Par exemple :
LD
7
ADD
2,
4,
7
ST
iVar
 L'instruction est répétée sur les lignes suivantes. Par exemple :
LD
7
ADD
2
ADD
4
ADD
7
ST
iVar
286
EIO0000000069 02/2018
Editeur FBD/LD/IL
Opérande complexes
Si un opérande complexe doit être utilisé, entrez une parenthèse ouvrante avant celui-ci, puis
utilisez les lignes suivantes pour les composants d'opérande spécifiques. Sous ceux-ci, sur une
ligne séparée, entrez la parenthèse fermante.
Exemple : faire pivoter une chaîne d'un caractère à chaque cycle.
Code ST correspondant :
stRotate := CONCAT(RIGHT(stRotate, (LEN(stRotate) 1)), (LEFT(stRotate, 1)));
LD
RIGHT(
LEN
SUB
)
CONCAT(
LEFT
)
ST
stRotate
stRotate
1
stRotate
1
stRotate
Appels de fonction
Entre le nom de la fonction dans le champ d'opérateur. Placez le (premier) paramètre d'entrée
comme opérande dans une opération LD précédente. Si d'autres paramètres sont présents,
placez le suivant sur la même ligne que le nom de fonction. Vous pouvez ajouter d'autres
paramètres sur cette ligne, séparés par des virgules, ou sur les lignes suivantes.
La valeur de retour de fonction sera stockée dans l'accumulateur. La restriction suivante
concernant la norme IEC s'applique.
NOTE : Tout appel de fonction ayant plusieurs valeurs de retour est interdit. Pour qu'une opération
réussisse, une seule valeur de retour doit être utilisée.
Exemple : la fonction GeomAverage, qui a 3 paramètres d'entrée, est appelée. Le premier
paramètre est donné par X7 dans une opération précédente. Le deuxième, 25, est donné avec le
nom de fonction. Le troisième est donné par la variable tvar, sur la même ligne ou sur la ligne
suivante. La valeur de retour est attribuée à la variable Ave.
Code ST correspondant :
Ave := GeomAverage(X7, 25, tvar);
Appel de fonction dans IL :
LD
GeomAverage
ST
EIO0000000069 02/2018
X7
25
tvar
Ave
287
Editeur FBD/LD/IL
Appels de bloc fonction et appels de programme
Utilisez l'opérateur (voir page 276) CAL- ou CALC. Entrez le nom de l'instance de bloc fonction ou
le nom de programme dans le champ d'opérande (deuxième colonne) suivi de la parenthèse
ouvrante. Saisissez les paramètres d'entrée, chacun sur l'une des lignes suivantes :
Champ d'opérateur : nom de paramètre
Champ de préfixe :
 := pour les paramètres d'entrée
 => pour les paramètres de sortie
Champ d'opérande : paramètre actuel
Champ de suffixe :
 , si d'autres paramètres suivent
) après le dernier paramètre
 () en cas d'appels sans paramètre
Exemple : appel de POUToCAll avec 2 paramètres d'entrée et 2 paramètres de sortie.
Code ST correspondant :
POUToCall(Counter := iCounter, iDecrement:=2, bError=>bErr, wError=>wRe
sult);
Appel de programme dans IL avec paramètres d'entrée et de sortie :
Il n'est pas nécessaire d'utiliser tous les paramètres d'un bloc fonction ou programme.
NOTE : Les expressions complexes ne peuvent pas être utilisées. Elles doivent être attribuées à
l'entrée du bloc fonction ou programme avant l'instruction d'appel.
288
EIO0000000069 02/2018
Editeur FBD/LD/IL
Appel d'action
Pour être effectué comme un appel de bloc fonction ou programme, le nom de l'action doit être
ajouté au nom de l'instance ou au nom du programme.
Exemple : appel de l'action ResetAction.
Code ST correspondant :
Inst.ResetAction();
Appel d'action dans IL :
CAL
Inst.ResetAction()
Appel de méthode
Pour être effectué comme un appel de fonction, le nom de l'instance avec le nom de méthode
ajouté doit être saisi dans la première colonne (opérateur).
Exemple : appel de méthode Home.
Code ST correspondant :
Z := IHome.Home(TRUE, TRUE, TRUE);
Appel de méthode dans IL :
LD
IHome.Home
ST
TRUE
TRUE
TRUE
Z
Saut
Un saut (voir page 306) est programmé par JMP dans la première colonne (opérateur) et un nom
d'étiquette dans la deuxième colonne (opérande). L'étiquette doit être définie dans le réseau cible
du champ d'étiquette (voir page 307).
La liste des instructions précédant le saut non conditionnel doit se terminer par l'une des
commandes suivantes : ST, STN, S, R, CAL, RET ou un autre JMP.
Cela n'est pas le cas pour un saut conditionnel (voir page 306). L'exécution du saut dépend de la
valeur chargée.
Exemple : instruction de saut conditionnel ; si bCallRestAction est VRAI, le programme doit
sauter vers le réseau étiqueté avec Cont.
Instruction de saut conditionnel dans IL :
LDN
JMPC
EIO0000000069 02/2018
bCallResetAction
Cont
289
Editeur FBD/LD/IL
Positions du curseur dans FBD, LD et IL
Editeur IL
Il s'agit d'un éditeur de texte structuré sous forme de tableau. Chaque cellule du tableau représente
une position possible du curseur. Voir aussi Utilisation de l'éditeur IL (voir page 284).
Editeurs FBD et LD
Il s'agit d'éditeurs graphiques. Les exemples (1) à (15) ci-dessous illustrent les positions possibles
du curseur : texte, entrée, sortie, module, contact, bobinage, retour, saut, ligne entre éléments et
réseau
Les actions telles que couper, copier, coller, supprimer et les autres commandes de l'éditeur
s'appliquent à la position en cours du curseur ou à l'élément sélectionné. Voir Utilisation des
éditeurs FBD et LD (voir page 279).
Il faut savoir que dans FBD, un rectangle en pointillés autour d'un élément indique la position
actuelle du curseur. D'autre part, le texte et les modules s'affichent en bleu ou rouge grisé.
Dans LD, les bobinages et les contacts s'affichent en rouge lorsque le curseur est positionné sur
ces éléments.
La position du curseur détermine les éléments disponibles pour insertion (voir page 280) à partir
du menu contextuel.
Positions possibles du curseur
(1) Tout champ de texte :
Dans l'image de gauche, les positions possibles du curseur sont signalées par un cadre rouge.
L'image de droite présente un module avec le curseur positionné dans le champ AND. Gardez à
l'esprit qu'il est possible de saisir des adresses au lieu de noms de variable si elles sont
configurées correctement dans la boîte de dialogue FBD, LD and IL editor Options.
(2) Toute entrée :
290
EIO0000000069 02/2018
Editeur FBD/LD/IL
(3) Chaque opérateur, fonction ou bloc fonctionnel :
(4) Sorties si elles précèdent une affectation ou un saut :
(5) Juste avant le croisement de lignes au-dessus d'une affectation avant une instruction de saut
ou de retour :
(6) Position du curseur la plus à droite du réseau ou à n'importe quel autre endroit du réseau, outre
les autres positions du curseur. Pour sélectionner l'ensemble du réseau :
(7) Croisement de lignes juste devant une affectation :
EIO0000000069 02/2018
291
Editeur FBD/LD/IL
(8) Tout contact :
(9) Tout bobinage :
(10) Chaque retour et saut :
(11) Ligne de connexion entre contacts et bobinages :
(12) Branchement ou sous-réseau au sein d'un réseau :
292
EIO0000000069 02/2018
Editeur FBD/LD/IL
(13) Ligne de connexion entre contacts parallèles (positions 1 à 4) :
(14) Avant ou après un réseau :
Vous pouvez ajouter de nouveaux réseaux dans la partie gauche de l'éditeur. L'insertion d'un
nouveau réseau avant un réseau existant n'est possible qu'avant le réseau 1.
(15) Début ou fin d'un réseau :
Vous pouvez ajouter des contacts et des blocs fonctionnels au début d'un réseau au niveau du
champ Start here. Vous pouvez ajouter un retour, un saut et un bobinage à la fin du réseau au
niveau du champ Add output or jump here.
EIO0000000069 02/2018
293
Editeur FBD/LD/IL
Menu FBD/LD/IL
Présentation
Lorsque le curseur est positionné dans la fenêtre de l'éditeur FBD/LD/IL (voir page 271), le menu
FBD/LD/IL est disponible dans la barre de menus. Il propose des commandes permettant de
programmer dans la vue actuelle de l'éditeur.
Menu FBD/LD/IL dans la vue de l'éditeur FBD :


294
Pour obtenir une description des commandes, voir le chapitre Commandes des éditeurs
FBD/LD/IL.
Pour plus de détails sur la configuration du menu, voir la description du menu Personnaliser.
EIO0000000069 02/2018
Editeur FBD/LD/IL
Editeur FBD/LD/IL en mode en ligne
Présentation
En mode en ligne, l'éditeur FBD/LD/IL fournit des vues de surveillance (voir page 295), ainsi que
d'écriture et de forçage des valeurs et des expressions sur le contrôleur.
La fonctionnalité de débogage (point d'arrêt, exécution par étapes, etc.) est disponible ; voir
Positions de point d'arrêt ou d'arrêt (voir page 299).


Pour plus d'informations sur l'ouverture des objets en mode en ligne, voir le chapitre Interface
utilisateur en mode en ligne (voir page 52).
Gardez à l'esprit que la fenêtre d'édition d'un objet FBD, LD ou IL contient également l'éditeur
de déclaration dans sa partie supérieure. Voir également le chapitre Editeur de déclaration en
mode en ligne (voir page 403).
Surveillance
Si la surveillance en ligne n'est pas désactivée explicitement dans la boîte de dialogue Options,
elle se fait dans l'éditeur FBD ou LD au moyen de petites fenêtres qui s'affichent derrière chaque
variable ou d'une colonne supplémentaire contenant les valeurs réelles (surveillance en ligne).
Cela s'applique également aux entrées et sorties des blocs fonctionnels non affectés.
La fenêtre de surveillance en ligne d'une variable présente un petit triangle rouge dans l'angle
supérieur gauche si la variable est forcée (voir page 298) et un triangle bleu dans l'angle inférieur
gauche si la variable est préparée pour l'écriture ou le forçage. Dans LD, pour les contacts et les
bobinages, la valeur actuellement préparée (TRUE ou FALSE) s'affiche juste sous l'élément.
Exemple de variable actuellement forcée et préparée pour l'annulation du forçage
Exemple de variable de contact actuellement préparée pour l'écriture ou le forçage avec la valeur
TRUE
EIO0000000069 02/2018
295
Editeur FBD/LD/IL
Vue en ligne d'un programme FBD
296
EIO0000000069 02/2018
Editeur FBD/LD/IL
Vue en ligne d'un programme IL
Dans la vue en ligne, les réseaux à contacts présentent des connexions animées :
 Les connexions dont la valeur est TRUE s'affichent en gras en bleu.
 Les connexions dont la valeur est FALSE s'affichent en gras en noir.
 Les connexions dont la valeur est inconnue ou analogique s'affichent dans un cadre standard
(en noir, non gras).
Les valeurs des connexions sont calculées à partir des valeurs de surveillance.
Vue en ligne d'un programme LD
Pour ouvrir une fonction, double-cliquez sur celle-ci ou sélectionnez la commande Parcourir Atteindre la définition dans le menu contextuel. Pour plus d'informations, voir la description de
l'interface utilisateur en mode en ligne. (voir page 52).
EIO0000000069 02/2018
297
Editeur FBD/LD/IL
Forçage/écriture de variables
En mode en ligne, vous pouvez préparer une valeur pour le forçage ou l'écriture d'une variable
dans l'éditeur de déclaration (voir page 403) ou dans l'éditeur. Double-cliquez sur une variable
dans l'éditeur pour ouvrir la boîte de dialogue suivante :
Boîte de dialogue Préparer la valeur
Le nom de la variable suivi de son chemin d'accès dans l'arborescence d'équipements
(Expression), son type et sa valeur actuelle s'affichent. Vous pouvez choisir d'effectuer l'une des
opérations suivantes :
 Préparer une nouvelle valeur qui doit être saisie dans le champ d'édition.
 Supprimer une valeur préparée.
 Annuler le forçage de la variable forcée.
 Annuler le forçage de la variable forcée et rétablir la valeur qui lui était affectée avant le forçage.
Pour exécuter l'action sélectionnée, cliquez sur la commande Forcer les valeurs (dans le menu En
ligne) ou appuyez sur F7.
Pour savoir comment l'état actuel d'une variable (valeur forcée, préparée) est indiqué au niveau
de l'élément correspondant dans le réseau, voir la section Surveillance (voir page 295).
298
EIO0000000069 02/2018
Editeur FBD/LD/IL
Positions de point d'arrêt ou d'arrêt
Les positions pouvant être définies pour un point d'arrêt (position d'arrêt) à des fins de débogage
sont celles auxquelles les valeurs des variables peuvent changer (instructions), auxquelles le
déroulement du programme bifurque ou auxquelles un autre POU est appelé.
Ces positions sont les suivantes :
Le réseau dans son ensemble, de sorte que le point d'arrêt soit appliqué à la première position
possible au sein du réseau.
 Un module (voir page 308), s'il contient une instruction. Cela exclut donc les modules
d'opérateur, par exemple ADD, DIV. Voir la remarque ci-dessous.
 Une affectation.
 La fin d'un POU, au point de retour à l'appelant. A cet effet, un réseau vide apparaît automatiquement en mode en ligne. Il n'est pas identifié par un numéro de réseau, mais par RET.

NOTE : Vous ne pouvez pas définir un point d'arrêt directement sur le premier module d'un réseau.
Toutefois, si un point d'arrêt est défini sur l'ensemble du réseau, la position d'arrêt est appliquée
automatiquement au premier module.
Pour connaître les positions possibles à un moment donné, voir la liste de sélection disponible
dans la boîte de dialogue Afficher → Points d'arrêt.
Un réseau contenant une position de point d'arrêt active est identifié par le symbole de point d'arrêt
(cercle rouge plein) à droite du numéro du réseau. La première position de point d'arrêt possible
apparaît dans un rectangle à l'arrière-plan rouge grisé. Les positions de point d'arrêt désactivées
sont signalées par une bordure (cercle ou rectangle) rouge.
Point d'arrêt défini et point d'arrêt atteint
1
2
point d'arrêt défini
point d'arrêt atteint
EIO0000000069 02/2018
299
Editeur FBD/LD/IL
Dès qu'une position de point d'arrêt est atteinte au cours de l'exécution par étapes ou du traitement
du programme, une flèche jaune est ajoutée sur le symbole de point d'arrêt et la zone en rouge
grisé s'affiche en jaune.
Positions d'arrêt dans FBD
Position d'arrêt dans IL
NOTE : Un point d'arrêt est défini automatiquement dans toutes les méthodes qui peuvent être
appelées. Si une méthode gérée par l'interface est appelée, des points d'arrêt seront définis dans
toutes les méthodes ou blocs fonction implémentant cette interface et dans tous les blocs fonction
dérivés abonnés à cette méthode. Si une méthode est appelée à l'aide d'un pointeur sur un bloc
fonction, des points d'arrêt seront définis dans la méthode du bloc fonction et dans tous les blocs
fonction dérivés abonnés à cette méthode.
300
EIO0000000069 02/2018
Editeur FBD/LD/IL
Sous-chapitre 10.2
Eléments FBD/LD/IL
Eléments FBD/LD/IL
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Boîte à outils /LD/IL
302
Réseau dans FBD/LD/IL
304
Affectation dans FBD/LD/IL
306
Saut dans FBD/LD/IL
306
Etiquette dans FBD/LD/IL
307
Modules dans FBD/LD/IL
308
Instruction RETURN dans FBD/LD/IL
309
Branchement/bobinage suspendu dans FBD/LD/IL
310
Branchement parallèle
313
Définir/réinitialiser dans FBD/LD/IL
316
Bobinage Set/Reset
317
EIO0000000069 02/2018
301
Editeur FBD/LD/IL
Boîte à outils /LD/IL
Présentation
L'éditeur FBD/LD/IL (voir page 271) propose une boîte à outils contenant les éléments de
programmation à insérer dans la fenêtre de l'éditeur par glisser-déposer. Pour ouvrir la boîte à
outils, sélectionnez la commande Outils du menu Afficher.
Les éléments pouvant être insérés dépendent de la vue de l'éditeur actuellement active (voir la
description des commandes d'insertion).
Ces éléments sont triés par catégorie : Général (éléments généraux comme Réseau, Affectation,
etc.), Opérateurs logiques, Opérateurs mathématiques, Autres opérateurs (par exemple,
SEL, MUX, LIMIT et MOVE), Blocs fonctionnels (par exemple,
R_TRIG, F_TRIG, RS, SR, TON, TOF, CTD, CTU), Eléments de langage à contacts et
POU (définis par l'utilisateur).
La catégorie POU répertorie tous les POU définis sous la même application que l'objet FBD/LD/IL
ouvert dans l'éditeur. Si un bitmap a été affecté à un POU dans les propriétés de celui-ci, il apparaît
avant le nom du POU. Dans le cas contraire, c'est l'icône standard associée au type de POU qui
s'affiche. La liste est mise à jour automatiquement lorsque des POU sont ajoutés à l'application ou
en sont supprimés.
La catégorie Autres opérateurs contient, outre les opérateurs SEL, MUX, LIMIT et MOVE, un
élément d'espace réservé de conversion. Vous pouvez faire glisser et déposer cet élément à
l'emplacement approprié du réseau. Le type de conversion est défini automatiquement, selon le
type de position d'insertion requis. Cependant, il arrive que le type de conversion requis ne puisse
pas être déterminé automatiquement. Le cas échéant, modifiez l'élément manuellement.
Pour développer les dossiers des catégories, cliquez sur le bouton de la catégorie voulue. Par
exemple, dans l'image ci-dessous, la catégorie Général est développée, alors que les autres
catégories sont réduites. Cette image présente un exemple d'insertion d'un élément Affectation par
glisser-déposer depuis la boîte à outils.
Seule la section Général de la boîte à outils est développée :
302
EIO0000000069 02/2018
Editeur FBD/LD/IL
Insertion à partir de la boîte à outils
Pour insérer un élément dans l'éditeur, sélectionnez-le dans la boîte à outils en cliquant dessus,
puis faites-le glisser et déposez-le dans la fenêtre de l'éditeur. Les positions auxquelles l'élément
peut être inséré sont identifiées par des marqueurs de position, qui s'affichent pendant que vous
faites glisser l'élément (bouton de la souris enfoncé) dans la fenêtre de l'éditeur. La position
possible la plus proche apparaît en vert. Lorsque vous relâchez le bouton de la souris, l'élément
est inséré à la position affichée en vert.
Si vous déposez un élément Module sur un élément existant du même type, le nouveau remplace
l'ancien. Si des entrées et des sorties ont déjà été affectées, elles le restent, mais elles ne sont pas
connectées au nouvel élément Module.
EIO0000000069 02/2018
303
Editeur FBD/LD/IL
Réseau dans FBD/LD/IL
Présentation
Un réseau constitue l'entité de base d'un programme FBD (voir page 272) ou LD (voir page 273).
Dans l'éditeur FBD/LD, les réseaux apparaissent dans une liste verticale. Chaque réseau est
identifié, à gauche, par un numéro de réseau série et possède une structure composée d'une
expression logique ou arithmétique, d'un programme, d'un appel de fonction ou de bloc fonctionnel
et, éventuellement, d'instructions de saut ou de retour.
L'éditeur IL (voir page 274), qui partage une base commune avec les éditeurs FBD et LD, utilise
également l'élément Réseau. Si un objet a été programmé initialement dans FBD ou LD, puis
converti en IL, les réseaux restent présents dans le programme IL. De même, si vous commencez
à programmer un objet dans IL, vous devez utiliser au moins un élément Réseau qui peut contenir
toutes les instructions, mais vous pouvez également avoir recours à des réseaux supplémentaires
pour structurer le programme.
Un titre, un commentaire et une étiquette (voir page 307) peuvent être associés à un réseau.
Vous pouvez activer/désactiver la disponibilité des champs de titre et de commentaire dans la
boîte de dialogue d'options des éditeurs FBD, LD et IL. Si cette option est activée, cliquez
directement sous la bordure supérieure du réseau pour ouvrir un champ d'édition du titre. Pour
saisir un commentaire, procédez de même pour ouvrir un champ d'édition sous le champ de titre.
Le commentaire peut être constitué de plusieurs lignes. Appuyez sur Entrée pour insérer des sauts
de ligne. Appuyez sur Ctrl+Entrée pour terminer la saisie du commentaire.
La boîte de dialogue d'options des éditeurs FBD, LD et IL permet de définir si et comment un
commentaire réseau apparaît dans l'éditeur.
Pour ajouter une étiquette (voir page 307), adressable par un saut (voir page 306), utilisez la
commande Insérer une étiquette. Si une étiquette est définie, elle s'affiche sous les champs de titre
et de commentaire ou, si ces champs ne sont pas disponibles, directement sous la bordure
supérieure du réseau.
304
EIO0000000069 02/2018
Editeur FBD/LD/IL
Commentaires et étiquette dans un réseau
Cette figure présente un réseau à l'état de commentaire. Cela signifie que le réseau n'est pas
traité, mais qu'il est affiché et géré comme un commentaire. Pour obtenir ce résultat, utilisez la
commande Commentaires activés/désactivés.
Vous pouvez appliquer les commandes copier, couper, insérer et supprimer par défaut à un réseau
sélectionné (position du curseur 6 (voir page 290)).
NOTE : Pour sélectionner des titres, des commentaires ou des étiquettes seulement, au lieu du
réseau entier, cliquez avec le bouton droit de la souris sur ces entrées (position du curseur 6
(voir page 290)). Ainsi, l'exécution des commandes par défaut n'affecte pas le réseau.
Pour insérer un réseau, utilisez la commande Insérer un réseau ou faites-le glisser à partir de la
boîte à outils (voir page 302). Un réseau, avec tous ses éléments, peut également être copié ou
déplacé (voir page 279) par glisser-déposer au sein de l'éditeur.
Vous pouvez également créer des sous-réseaux (voir page 310) en insérant des branchements.
Réseau RET
En mode en ligne, un réseau vide supplémentaire s'affiche sous les réseaux existants. Il n'est pas
identifié par un numéro de réseau, mais par RET.
Il représente la position à laquelle l'exécution revient au POU appelant et constitue une position
d'arrêt (voir page 295) possible.
EIO0000000069 02/2018
305
Editeur FBD/LD/IL
Affectation dans FBD/LD/IL
Présentation
Selon la position du curseur (voir page 290) dans FBD ou LD, une affectation est insérée
directement avant l'entrée sélectionnée (position du curseur 2 (voir page 290)), directement après
la sortie sélectionnée (position du curseur 4 (voir page 290)) ou à la fin du réseau (position du
curseur 6 (voir page 290)). Dans un réseau LD, une affectation apparaît comme un bobinage
(voir page 320). Vous pouvez également faire glisser l'élément Affectation à partir de la boîte à
outils (voir page 302) ou le copier ou le déplacer (voir page 279) par glisser-déposer dans la vue
de l'éditeur.
Après l'insertion, la chaîne de texte ??? peut être remplacée par le nom de la variable à affecter.
Pour ce faire, utilisez le bouton ... pour afficher l'aide à la saisie.
Dans IL (voir page 274), une affectation est programmée à l'aide d'instructions LD et ST. Voir
Modificateurs et opérateurs dans IL (voir page 276).
Saut dans FBD/LD/IL
Présentation
Selon la position du curseur (voir page 290) dans FBD (voir page 272) ou LD (voir page 273), un
saut est inséré directement avant l'entrée sélectionnée (position du curseur 2), directement après
la sortie sélectionnée (position du curseur 4) ou à la fin du réseau (position du curseur 6). Vous
pouvez également faire glisser l'élément Saut à partir de la boîte à outils (voir page 302) ou le
copier ou le déplacer (voir page 279) par glisser-déposer dans l'éditeur.
Après l'insertion, vous pouvez remplacer la chaîne par défaut ??? par l'étiquette à laquelle le saut
doit être affecté.
Dans IL (voir page 274), l'insertion d'un saut se fait via une instruction JMP. Dans ce contexte, voir
la description des opérateurs et des modificateurs dans IL (voir page 276).
306
EIO0000000069 02/2018
Editeur FBD/LD/IL
Etiquette dans FBD/LD/IL
Présentation
Pour chaque réseau FBD (voir page 272), LD (voir page 273) ou IL, un champ de saisie de texte
permettant de définir une étiquette apparaît sous la zone de commentaire. Facultative, cette
étiquette identifie le réseau et est adressable lors de la définition d'un saut (voir page 306). Elle
peut se composer d'une séquence quelconque de caractères.
Position d'une étiquette dans un réseau
Pour définir l'affichage du commentaire et du titre, voir la boîte de dialogue Outils → Options →
FBD, LD et IL.
EIO0000000069 02/2018
307
Editeur FBD/LD/IL
Modules dans FBD/LD/IL
Présentation
Un module peut être inséré dans un réseau FBD (voir page 272), LD (voir page 273) ou IL
(voir page 274). Il s'agit d'un élément complexe qui peut représenter des fonctions supplémen-
taires telles que des temporisateurs, des compteurs, des opérations arithmétiques ou encore des
programmes, des fonctions IEC et des blocs fonctionnels IEC.
Un module peut posséder une ou plusieurs entrées ou sorties et peut provenir d'une bibliothèque
système ou être programmé. Au moins une entrée et une sortie doivent être associées à des
valeurs booléennes.
Une icône s'affiche dans le module si elle a été fournie et si l'option Show box icon est
sélectionnée.
Utilisation dans FBD, LD
Vous pouvez placer un module dans un réseau LD ou dans un réseau FBD à l'aide de la
commande Insérer l'appel de module, Insérer module vide. Vous pouvez également l'insérer à
partir de la boîte à outils (voir page 302) ou le copier ou le déplacer au sein de l'éditeur par glisserdéposer. Pour plus d'informations, voir la description de la commande Insérer l'appel de module.
Utilisation dans IL
Dans un programme IL (voir page 274), une instruction CAL (voir page 276) comportant des
paramètres est insérée pour représenter un élément Module.
Si l'interface du module a été modifiée, vous pouvez mettre à jour les paramètres du module
(entrées, sorties) avec l'implémentation actuelle sans réinsérer le module, au moyen de la
commande Actualiser les paramètres.
308
EIO0000000069 02/2018
Editeur FBD/LD/IL
Instruction RETURN dans FBD/LD/IL
Présentation
Une instruction RETURN permet de fermer un POU FBD (voir page 272), LD (voir page 273) ou IL
(voir page 274).
Dans un réseau FBD ou LD, vous pouvez la placer parallèlement aux éléments précédents, ou
après ceux-ci. Si l'entrée d'une instruction RETURN a la valeur TRUE, le traitement du POU est
interrompu immédiatement.
Exécutez la commande Insérer un retour pour insérer une instruction RETURN. Vous pouvez
également faire glisser l'élément à partir de la boîte à outils (voir page 302) ou le copier ou le
déplacer (voir page 279) par glisser-déposer à partir d'un autre emplacement dans l'éditeur.
Elément RETURN
Dans IL, l'instruction RET (voir page 276) a la même fonction.
EIO0000000069 02/2018
309
Editeur FBD/LD/IL
Branchement/bobinage suspendu dans FBD/LD/IL
Présentation
Dans un réseau FBD (voir page 272) ou LD (voir page 273), un branchement ou un bobinage
suspendu divise la ligne de traitement à partir de la position actuelle du curseur. La ligne de
traitement se poursuit sous forme de deux sous-réseaux, exécutés l'un à la suite de l'autre en
partant du haut. Un branchement supplémentaire peut être ajouté à chaque sous-réseau, ce qui
permet les branchements multiples au sein d'un réseau.
Chaque sous-réseau dispose de son propre marqueur (rectangle vertical). Vous pouvez le
sélectionner (position du curseur 11 (voir page 290)) pour appliquer des opérations à cette partie
du branchement.
Marqueurs de branchement
Dans FBD, utilisez la commande Insérer un branchement pour ajouter un branchement. Vous
pouvez également faire glisser l'élément à partir de la boîte à outils (voir page 302). Pour connaître
les positions d'insertion possibles, voir la description de la commande Insérer un branchement.
NOTE : Le couper-coller n'est pas pris en charge pour les sous-réseaux.
Dans l'exemple ci-dessous, un branchement a été inséré au niveau de la sortie du module SUB.
Deux sous-réseaux ont ainsi été créés, que vous pouvez sélectionner à l'aide de leur marqueur de
sous-réseau. Ensuite, un module ADD a été ajouté dans chaque sous-réseau.
310
EIO0000000069 02/2018
Editeur FBD/LD/IL
Réseau dans FBD avec insertion d'un branchement
Pour supprimer un sous-réseau, vous devez d'abord supprimer tous ses éléments, c'est-à-dire les
éléments placés à droite du marqueur du sous-réseau. Sélectionnez ensuite le marqueur, puis
exécutez la commande Supprimer standard ou appuyez sur la touche Suppr.
Dans l'image ci-dessous, l'élément OR à 3 entrées doit être supprimé pour que le marqueur du
sous-réseau inférieur puisse être sélectionné et supprimé.
EIO0000000069 02/2018
311
Editeur FBD/LD/IL
Suppression d'un branchement ou d'un sous-réseau
Exécution en mode en ligne
Les branchements sont exécutés de gauche à droite, puis de haut en bas.
IL (Instruction List, liste d'instructions)
IL (voir page 274) ne prend pas en charge les réseaux avec branchements. Ils demeurent dans la
représentation d'origine.
Branchements parallèles
Vous pouvez utiliser des branchements parallèles pour configurer l'évaluation des branchements
parallèles (voir page 313) dans les réseaux à contacts.
Contrairement aux branchements ouverts (sans point de jonction), les branchements parallèles
sont fermés. Ils présentent des points de jonction et de bifurcation.
312
EIO0000000069 02/2018
Editeur FBD/LD/IL
Branchement parallèle
Présentation
Un branchement parallèle permet d'implémenter une évaluation parallèle d'éléments logiques.
Pour ce faire, une méthodologie nommée SCE (Short Circuit Evaluation) est utilisée. SCE permet
d'ignorer l'exécution d'un bloc fonctionnel avec une sortie booléenne si certaines conditions
parallèles ont la valeur TRUE. La condition peut être représentée dans l'éditeur LD par un
branchement parallèle au branchement du bloc fonctionnel. La condition SCE est définie par un
ou plusieurs contacts au sein de ce branchement, connectés en parallèle ou en séquence.
NOTE : Le terme branchement désigne également un autre élément qui fractionne un flux de
signaux. Ce branchement (voir page 310), contrairement au branchement parallèle, ne possède
pas de point de jonction.
Le branchement parallèle fonctionne comme suit : il est analysé pour trouver les branchements ne
contenant pas de bloc fonctionnel. Si un tel branchement a la valeur TRUE, le bloc fonctionnel du
branchement parallèle n'est pas appelé et la valeur d'entrée du branchement du bloc fonctionnel
est transmise à la sortie. Si la condition SCE a la valeur FALSE, le bloc fonctionnel est appelé et
le résultat booléen de l'appel d'exécution du bloc fonctionnel est transmis.
Si tous les branchements contiennent des blocs fonctionnels, ils sont évalués l'un après l'autre (de
haut en bas) et leurs sorties sont combinées à l'aide d'opérations OR logiques. Si aucun
branchement ne contient d'appel de bloc fonctionnel, l'opération OR standard est exécutée.
Pour insérer un branchement parallèle avec une fonction SCE, sélectionnez le module du bloc
fonctionnel et exécutez la commande Insérer un contact parallèle (au-dessus) ou Insérer le
contact parallèle (en dessous). Cette opération n'est possible que si la première entrée et la sortie
principale du bloc fonctionnel sont de type BOOL.
L'exemple ci-dessous illustre le modèle de langage généré pour le réseau donné.
EIO0000000069 02/2018
313
Editeur FBD/LD/IL
Exemple pour SCE
L'instance de bloc fonctionnel x1 (TON) possède une entrée et une sortie booléennes. Son
exécution peut être ignorée si la condition du branchement parallèle a la valeur TRUE. Cette valeur
résulte des opérations OR et AND qui connectent les contacts cond1, cond2 et cond3.
Branchement parallèle pour SCE dans un réseau à contacts
Le traitement se déroule comme indiqué ci-dessous. P_IN et P_OUT représentent respectivement
la valeur booléenne en entrée (point de bifurcation) et en sortie (point de jonction) du branchement
parallèle.
P_IN := b1 AND b2;
IF ((P_IN AND cond1) AND (cond2 OR cond3)) THEN
P_OUT := P_IN;
ELSE
x1(IN := P_IN, PT := {p 10}t#2s);
tElapsed := x1.ET;
P_OUT := x1.Q;
END_IF
bRes := P_OUT AND b3;
Les images ci-dessous présentent le flux de données (bleu) si le bloc fonctionnel est exécuté (la
condition résultant de cond1, cond2 et cond3 a la valeur FALSE) ou ignoré (la condition a la
valeur TRUE).
314
EIO0000000069 02/2018
Editeur FBD/LD/IL
Condition=FALSE, bloc fonctionnel exécuté :
Condition=TRUE, bloc fonctionnel ignoré :
EIO0000000069 02/2018
315
Editeur FBD/LD/IL
Définir/réinitialiser dans FBD/LD/IL
FBD et LD
Une sortie booléenne dans FBD (voir page 272) ou un bobinage LD (voir page 273) peut être
défini (Set) ou réinitialisé (Reset). Pour passer d'un état à un autre, utilisez la commande
Définir/réinitialiser du menu contextuel de la sortie. La sortie ou le bobinage est alors identifié par
un S ou un R.
Définir
(Set)
Si la valeur TRUE est transmise à une sortie ou un bobinage Set, celui-ci prend
cette valeur et la garde. Cette valeur ne peut pas être remplacée pour cette
position tant que l'application est en cours d'exécution.
Réinitialis
er (Reset)
Si la valeur TRUE est transmise à une sortie ou un bobinage Reset, celui-ci
prend la valeur FALSE et la garde. Cette valeur ne peut pas être remplacée pour
cette position tant que l'application est en cours d'exécution.
Sortie Reset dans FBD
Dans l'éditeur LD, vous pouvez insérer des bobinages Set et Reset par glisser-déposer. Pour ce
faire, dans Outils, sélectionnez la catégorie Eléments de langage à contacts, ou sélectionnez les
éléments S et R de la barre d'outils.
Exemple :
Bobinage Set, bobinage Reset
Pour plus d'informations, voir Bobinage Set/Reset (voir page 317).
IL
Dans IL, utilisez les opérateurs S et R (voir page 276) pour définir ou réinitialiser un opérande.
316
EIO0000000069 02/2018
Editeur FBD/LD/IL
Bobinage Set/Reset
Présentation
Les bobinages (voir page 320) peuvent également être définis en tant que bobinages Set ou
Reset.
Un bobinage Set est identifié par la lettre S dans le symbole de bobinage : (S). Un bobinage Set
ne remplace pas la valeur TRUE dans la variable booléenne appropriée. En d'autres termes, une
fois définie sur TRUE, la variable le reste.
Un bobinage Reset est identifié par la lettre R dans le symbole de bobinage : (R). Un bobinage
Reset ne remplace pas la valeur FALSE dans la variable booléenne appropriée. En d'autres
termes, une fois définie sur FALSE, la variable le reste.
Dans l'éditeur LD, vous pouvez insérer des bobinages Set et Reset directement par glisserdéposer à partir du menu Outils, catégorie Eléments de langage à contacts.
Bobinage Set, bobinage Reset
EIO0000000069 02/2018
317
Editeur FBD/LD/IL
Sous-chapitre 10.3
Eléments LD
Eléments LD
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
318
Page
Contact
319
Bobinage
320
EIO0000000069 02/2018
Editeur FBD/LD/IL
Contact
Présentation
Il s'agit d'un élément LD.
Dans LD (voir page 273), tout réseau contient au moins un contact dans sa partie gauche. Les
contacts sont représentés par 2 lignes verticales parallèles.
Les contacts transmettent la condition ON (TRUE) ou OFF (FALSE), de gauche à droite. Une
variable booléenne est affectée à chaque contact. Si la valeur de cette variable est TRUE, la
condition est transmise de gauche à droite, jusqu'à un bobinage situé à droite du réseau. Dans le
cas contraire, la connexion de droite reçoit la valeur FALSE.
Vous pouvez connecter plusieurs contacts en série et en parallèle. En parallèle, les contacts
représentent une condition logique 'OR', de sorte qu'un seul d'entre eux doive avoir la valeur TRUE
pour que le branchement parallèle transmette cette valeur. A l'inverse, les contacts en série
représentent une condition logique 'AND', c'est-à-dire que tous les contacts doivent avoir la valeur
TRUE pour que le dernier contact transmette cette valeur.
Ainsi, la disposition des contacts correspond à un circuit électrique parallèle ou à un circuit série.
Un contact peut également être inversé. Le symbole du contact comporte alors une barre oblique.
Un contact inversé ne transmet la condition entrante (TRUE ou FALSE) que si la variable
booléenne affectée a la valeur FALSE.
Pour insérer un contact dans un réseau LD, utilisez la commande Insérer un contact, Insérer un
contact (à droite), Insérer un contact parallèle (au-dessus), Insérer le contact parallèle (en
dessous), Insérer un contact de front montant ou Insérer un contact de front descendant du menu
LD. Vous pouvez également insérer l'élément par glisser-déposer à partir de la boîte à outils
(voir page 302) ou d'un autre emplacement dans l'éditeur (glisser-déposer).
FBD et IL
Si vous utilisez la vue FBD (voir page 272) ou IL (voir page 274), ces commandes ne sont pas
disponibles. Toutefois, les contacts et les bobinages insérés dans un réseau LD sont représentés
par les éléments FBD ou les instructions IL correspondants.
EIO0000000069 02/2018
319
Editeur FBD/LD/IL
Bobinage
Présentation
Il s'agit d'un élément LD.
Plusieurs bobinages représentés par des parenthèses peuvent se trouver à droite d'un réseau LD.
Ils ne peuvent être disposés qu'en parallèle. Un bobinage transmet la valeur des connexions de
gauche à droite et la copie dans une variable booléenne appropriée. La valeur ON (TRUE) ou OFF
(FALSE) peut être présente sur la ligne d'entrée.
Les bobinages peuvent également être inversés. Le symbole du bobinage comporte alors une
barre oblique.
Dans ce cas, la valeur inversée du signal entrant est copiée dans la variable booléenne
appropriée.
Pour insérer un bobinage dans un réseau, utilisez la commande Insérer bobinage, Insérer un
bobinage Set, Insérer bobinage Reset ou Insérer un bobinage inversé du menu LD. Vous pouvez
également faire glisser et déposer l'élément à partir de la boîte à outils (Eléments de langage à
contacts) ou à partir d'un autre emplacement dans l'éditeur. Voir aussi Bobinage Set/Reset
(voir page 317).
FBD et IL
Si vous utilisez la vue FBD (voir page 272) ou IL (voir page 274), ces commandes ne sont pas
disponibles. Toutefois, les contacts et les bobinages insérés dans un réseau LD sont représentés
par les éléments FBD ou les instructions IL correspondants.
320
EIO0000000069 02/2018
SoMachine
Editeur CFC (Continuous Function Chart)
EIO0000000069 02/2018
Chapitre 11
Editeur CFC (Continuous Function Chart)
Editeur CFC (Continuous Function Chart)
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Langage CFC (Continuous Function Chart, diagramme fonctionnel continu)
322
Editeur CFC
323
Positions du curseur dans CFC
325
Eléments CFC / Boîte à outils
327
Utilisation de l'éditeur CFC
333
Editeur CFC en mode en ligne
336
Editeur CFC orienté page
338
EIO0000000069 02/2018
321
Editeur CFC (Continuous Function Chart)
Langage CFC (Continuous Function Chart, diagramme fonctionnel continu)
Présentation
Le CFC, extension de la norme IEC 61131-3, est un langage de programmation graphique basé
sur le langage FBD (Function Block Diagram, diagramme de bloc fonction) (voir page 272).
Cependant, contrairement au langage FBD, il n'y a aucun réseau. CFC autorise un positionnement
libre des éléments graphiques, qui permettent à leur tour des boucles de rétroaction.
Pour plus d'informations sur la création d'objets de programmation CFC dans SoMachine,
consultez la description de l'éditeur CFC (voir page 323).
322
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Editeur CFC
Présentation
L'éditeur CFC est un éditeur graphique qui permet de programmer des objets en langage de
programmation CFC (Continuous Function Chart) (voir page 322), qui est une extension des
langages de programmation IEC 61131-3. Choisissez le langage lorsque vous ajoutez un nouvel
objet Unité organisationnelle de programme (POU) à votre projet. Pour les gros projets, il est
préférable d'utiliser la version orientée page (voir page 338).
L'éditeur sera disponible dans la partie inférieure de la fenêtre qui s'affiche lors de l'ouverture d'un
objet POU CFC. Cette fenêtre inclut également l'éditeur de déclaration (voir page 398) dans sa
partie supérieure.
Editeur CFC
EIO0000000069 02/2018
323
Editeur CFC (Continuous Function Chart)
Contrairement à l'éditeur FBD / LD, l'éditeur CFC permet un positionnement (voir page 333) libre
des éléments, ce qui permet l'insertion directe des chemins de retour d'information. La séquence
de traitement est déterminée par une liste qui contient tous les éléments actuellement insérés et
qui peut être modifiée.
Les éléments suivants sont disponibles dans une boîte à outils (voir page 327) et peuvent être
insérés par une opération glisser-déposer :
 boîte (opérateurs, fonctions, blocs fonction et programmes)
 entrée
 sortie
 saut
 étiquette
 retour
 composeur
 sélecteur
 marques de connexion
 commentaires
Vous pouvez connecter les broches d'entrée et de sortie des éléments en traçant une ligne avec
la souris. Le chemin de la ligne de connexion sera créé automatiquement et suivra la route la plus
courte possible. Les lignes de connexion sont automatiquement ajustées dès que les éléments
sont déplacés. Pour plus d'informations, reportez-vous à la description d'insertion et organisation
des éléments (voir page 333). Pour des diagrammes complexes, vous pouvez utiliser les marques
de connexion (voir page 328) au lieu des lignes. Vous avez aussi la possibilité de modifier le
routage.
Il peut arriver que des éléments positionnés recouvrent des connexions déjà routées. Ces
collisions sont indiquées par des lignes de connexion rouges. Si des collisions se produisent dans
le diagramme, le bouton situé dans le coin supérieur droit de la vue de l'éditeur est encadré en
rouge:
. Pour modifier des collisions étape par étape, cliquez sur ce bouton et exécutez la
commande Montrer la collision suivante. La prochaine connexion concernée sera ensuite
sélectionnée.
Pour des diagrammes complexes, vous pouvez utiliser les marques de connexion (voir page 328)
au lieu des lignes. Vous pouvez aussi utiliser la version orientée page de l'éditeur CFC.
Une fonction de zoom vous permet de modifier la dimension de la fenêtre de l'éditeur : utilisez le
bouton
situé dans le coin inférieur droit de la fenêtre, puis choisissez parmi les facteurs de
zoom répertoriés. Vous avez également la possibilité de sélectionner l'entrée ... pour ouvrir une
boîte de dialogue dans laquelle vous pouvez saisir n'importe quel facteur.
Vous pouvez appeler les commandes permettant de travailler dans l'éditeur CFC à partir du menu
contextuel ou à partir du menu CFC qui devient disponible dès que l'éditeur CFC est actif.
324
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Positions du curseur dans CFC
Présentation
Dans un programme CFC, les positions du curseur sont indiquées par un arrière-plan gris lorsque
vous passez la souris sur l'élément de programmation.
Lorsque vous cliquez sur l'une des ces zones ombrées, avant de relâcher le bouton de la souris,
la couleur d'arrière-plan devient rouge. Dès que vous relâchez le bouton de la souris, la position
actuelle du curseur est enregistrée, et l'élément ou le texte correspondant est sélectionné et affiché
en rouge.
Il y a 3 catégories de positions du curseur. Consultez les positions possibles indiquées par une
zone ombrée grise, comme le montrent les illustrations des paragraphes suivants.
Curseur positionné sur un texte
Si le curseur est positionné sur un texte et que vous cliquez sur le bouton de la souris, il apparaît
en bleu ombré et peut être modifié. Le bouton ... permet d'ouvrir l'assistant de saisie. Une fois que
vous avez inséré un élément, les caractères ??? représentent le nom de l'élément. Remplacez ces
caractères par un identifiant valide. Ensuite, une info-bulle s'affiche lorsque vous positionnez le
curseur sur le nom d'une variable ou d'un paramètre de zone. L'info-bulle contient le type de la
variable ou du paramètre et, s'il existe, le commentaire associé sur une seconde ligne.
Positions possibles du curseur et exemple de texte sélectionné :
EIO0000000069 02/2018
325
Editeur CFC (Continuous Function Chart)
Curseur positionné sur le corps d'un élément
Si le curseur est positionné sur le corps d'un élément (zone, entrée, sortie, saut, étiquette, retour,
commentaire, marque de connexion), ceux-ci apparaissent en rouge et peuvent être déplacés en
bougeant la souris.
Positions possibles du curseur et exemple de corps sélectionné :
Curseur positionné sur la connexion d'entrée ou de sortie d'un élément
Si le curseur est positionné sur une connexion d'entrée ou de sortie d'un élément, un carré rouge
indique cette position (point de connexion). Il peut être annulé ou défini/réinitialisé.
Positions possibles du curseur (ombres grises) et exemples de positions d'entrée et de sortie
sélectionnées (carrés rouges):
326
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Eléments CFC / Boîte à outils
Présentation
Les éléments graphiques disponibles pour la programmation dans la fenêtre Editeur CFC
(voir page 323) sont fournis par une boîte à outils. Ouvrez la boîte à outils dans une fenêtre de vue
en exécutant la commande ToolBox du menu Affichage.
Sélectionnez l'élément souhaité dans la boîte à outils et insérez (voir page 333)-le dans la fenêtre
de l'éditeur par une opération glisser-déposer.
Outre les éléments de programmation, vous disposez d'une entrée
en haut de la liste
de boîte à outils. Tant que cette entrée est sélectionnée, le curseur a la forme d'une flèche et vous
pouvez sélectionner des éléments dans la fenêtre de l'éditeur pour le positionnement ou la
modification.
EIO0000000069 02/2018
327
Editeur CFC (Continuous Function Chart)
Eléments CFC
Nom
Symbole
Description
page
Le numéro de la page est indiqué automatiquement en fonction de sa
position. Vous pouvez entrer le nom (Overview dans cet exemple)
dans le champ orange situé en haut de la page.
point de
contrôle
Un point de contrôle est requis pour résoudre un routage de ligne de
connexion manuellement modifié. Cela empêche que la modification
soit annulée par la commande Route all Connections. Grâce à
2 points de contrôle, vous pouvez marquer un segment précis d'une
ligne pour laquelle vous souhaitez modifier le routage.
entrée
Vous pouvez sélectionner le texte spécifié par ??? et le remplacer
par une variable ou une constante. L'aide à la saisie permet de
sélectionner un identifiant valide.
sortie
boîte
Vous pouvez utiliser une boîte pour représenter les opérateurs,
fonctions, blocs fonction et programmes. Vous pouvez sélectionner
le texte spécifié par ??? et le remplacer par un opérateur, une
fonction, un bloc fonction ou un nom de programme. L'aide à la saisie
permet de sélectionner l'un des objets disponibles.
Si vous insérez un bloc fonction, un autre ??? s'affiche au-dessus de
la boîte. Remplacez les points d'interrogation par le nom de l'instance
de bloc fonction.
Si vous remplacez une boîte existante par une autre (en modifiant le
nom saisi) et que la nouvelle boîte a un nombre minimal ou maximal
de saisie ou de broches de sortie différent, les broches seront
adaptées en conséquence. Si des broches doivent être supprimées,
la plus basse le sera en premier.
saut
Utilisez l'élément saut pour indiquer la position à laquelle doit
continuer l'exécution du programme. Cette position est définie par
une étiquette (voir ci-dessous). Par conséquent, remplacez le texte
spécifié par ??? par le nom de l'étiquette.
étiquette
Une étiquette marque la position vers laquelle le programme peut
sauter (voir l'élément saut).
En mode En ligne, une étiquette de retour marquant la fin de la POU
est automatiquement insérée.
retour
En mode en ligne, un élément retour est automatiquement inséré
dans la première colonne et après le dernier élément dans l'éditeur.
En mode pas à pas, le système y accède automatiquement avant
que l'exécution quitte la POU.
328
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Nom
Symbole
Description
composeur
Utilisez le composeur pour traiter une entrée d'une boîte qui est du
type d'une structure. Le composeur affiche les composants de la
structure et les rend ainsi accessibles au programmeur dans CFC.
Ainsi, nommez le composeur comme la structure concernée (en
remplaçant ??? par le nom) et connectez-le à la boîte au lieu
d'utiliser un élément d'entrée.
sélecteur
Contrairement au composeur, un sélecteur permet de traiter une
sortie d'une boîte qui est un type de structure. Le sélecteur affiche les
composants de la structure et les rend ainsi accessibles au
programmeur dans CFC. Ainsi, nommez le sélecteur comme la
structure concernée (en remplaçant ??? par le nom) et connectez-le
à la boîte au lieu d'utiliser un élément de sortie.
commentaire
Utilisez cet élément pour ajouter des commentaires au diagramme.
Sélectionnez le texte de l'espace réservé et remplacez-le par le texte
souhaité. Pour obtenir une nouvelle ligne dans le commentaire,
appuyez sur CTRL + ENTREE.
marque de
connexion source
marque de
connexion sink
Vous pouvez utiliser des marques de connexion à la place d'une
ligne de connexion (voir page 334) entre des éléments. Cela permet
de clarifier des diagrammes complexes.
Pour obtenir une connexion valide, attribuez un élément de marque
de connexion - source à la sortie d'un élément et attribuez une
marque de connexion - sink (voir ci-dessous) à l'entrée d'un autre
élément. Attribuez le même nom aux deux marques (pas de
distinction entre les majuscules et les minuscules).
Nommage :
Le premier élément de marque de connexion - source inséré par
défaut dans un CFC est nommé C-1 et peut être modifié
manuellement. Dans sa marque de connexion - sink homologue,
remplacez les ??? par la même chaîne de nom que celle utilisée
dans la marque source. L'éditeur vérifiera que les noms des marques
sont uniques. Si le nom d'une marque source a changé, le nom de la
marque sink connectée sera aussi automatiquement modifié.
Toutefois, si une marque sink est renommée, la marque source
conservera l'ancien nom. Cela vous permet de reconfigurer les
connexions. De la même manière, la suppression d'une marque de
connexion ne supprime pas son homologue.
Pour utiliser une marque de connexion dans le diagramme, faites-la
glisser de la boîte à outils vers la fenêtre de l'éditeur, puis connectez
sa broche à la broche d'entrée ou de sortie de l'élément
correspondant. Vous avez aussi la possibilité de convertir une ligne
de connexion normale existante à l'aide de la commande Connection
Mark. Cette commande vous permet également de rétablir les
marques de connexion en lignes de connexion normales.
Pour visualiser des figures présentant quelques exemples de
marques de connexion, reportez-vous au chapitre Marque de
connexion.
EIO0000000069 02/2018
329
Editeur CFC (Continuous Function Chart)
Nom
Symbole
broche
d'entrée
broche de
sortie
Description
Selon le type de boîte, vous pouvez ajouter une entrée
supplémentaire. Pour ce faire, sélectionnez l'élément boîte dans le
réseau CFC et tirez l'élément broche d'entrée vers la boîte.
–
Selon le type de boîte, vous pouvez ajouter une sortie
supplémentaire. Pour ce faire, sélectionnez l'élément boîte dans le
réseau CFC et tirez l'élément broche de sortie vers la boîte.
Exemple de composeur
Un programme CFC cfc_prog gère une instance du bloc fonction fublo1, qui a une variable
d'entrée struvar de structure type. Utilisez l'élément composeur pour accéder aux composants
de la structure.
Définition de la structure stru1 :
TYPE stru1 :
STRUCT
ivar:INT;
strvar:STRING:='hallo';
END_STRUCT
END_TYPE
Déclaration et implémentation du bloc fonction fublo1 :
FUNCTION_BLOCK fublo1
VAR_INPUT
struvar:STRU1;
END_VAR
VAR_OUTPUT
fbout_i:INT;
fbout_str:STRING;
END_VAR
VAR
fbvar:STRING:='world';
END_VAR
fbout_i:=struvar.ivar+2;
fbout_str:=CONCAT (struvar.strvar,fbvar);
Déclaration et implémentation du programme cfc_prog :
330
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
PROGRAM cfc_prog
VAR
intvar: INT;
stringvar: STRING;
fbinst: fublo1;
erg1: INT;
erg2: STRING;
END_VAR
Elément composeur
1
2
composeur
bloc fonction avec variable d'entrée struvar de structure type stru1
Exemple de sélecteur
Un programme CFC cfc_prog gère une instance du bloc fonction fublo2, qui a une variable de
sortie fbout de structure type stru1. Utilisez l'élément sélecteur pour accéder aux composants
de la structure.
Définition de la structure stru1 :
TYPE stru1 :
STRUCT
ivar:INT;
strvar:STRING:='hallo';
END_STRUCT
END_TYPE
Déclaration et implémentation du bloc fonction fublo1 :
EIO0000000069 02/2018
331
Editeur CFC (Continuous Function Chart)
FUNCTION_BLOCK fublo2
VAR_INPUT CONSTANT
fbin1:INT;
fbin2:DWORD:=24354333;
fbin3:STRING:='hallo';
END_VAR
VAR_INPUT
fbin : INT;
END_VAR
VAR_OUTPUT
fbout : stru1;
fbout2:DWORD;
END_VAR
VAR
fbvar:INT;
fbvar2:STRING;
END_VAR
Déclaration et implémentation du programme cfc_prog :
VAR
intvar: INT;
stringvar: STRING;
fbinst: fublo1;
erg1: INT;
erg2: STRING;
fbinst2: fublo2;
END_VAR
L'illustration montre un élément de sélecteur sur lequel les connexions non reliées ont été
supprimées via la commande Supprimer les connexions non reliées.
1
2
332
bloc fonction avec variable de sortie fbout de structure type stru1
sélecteur
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Utilisation de l'éditeur CFC
Présentation
Les éléments de programmation disponibles dans l'éditeur CFC sont fournis dans la Boîte à outils
(voir page 327) qui est par défaut proposée dans une fenêtre dès l'ouverture de l'éditeur CFC.
Dans Outils → Options → Editeur CFC, vous pouvez définir les paramètres généraux d'utilisation
de l'éditeur.
Insertion
Pour insérer un élément, cliquez dessus dans la Boîte à outils (voir page 327) pour le sélectionner,
maintenez le bouton de la souris enfoncé, puis faites-le glisser vers la position souhaitée dans la
fenêtre de l'éditeur. Lors du déplacement, le curseur prend la forme d'une flèche, mais aussi d'un
rectangle et du signe plus. Lorsque vous relâchez le bouton de la souris, l'élément est inséré.
Sélection
Pour sélectionner un élément inséré afin d'effectuer d'autres actions comme une modification ou
une réorganisation, cliquez sur le corps d'un élément pour sélectionner ce dernier. Il s'affichera par
défaut en rouge ombré. En appuyant ensuite sur la touche MAJ, vous pouvez cliquer sur d'autres
éléments pour les sélectionner également. Vous pouvez aussi appuyer sur le bouton gauche de la
souris et tracer un rectangle en pointillés autour de tous les éléments que vous souhaitez
sélectionner. Dès que vous relâchez le bouton, la sélection est indiquée. Grâce à la commande
Sélectionner tout, tous les éléments sont sélectionnés simultanément.
À l'aide des touches fléchées, vous pouvez déplacer la marque de sélection vers la prochaine
position possible du curseur. La séquence dépend de l'ordre d'exécution ou des éléments, ceci
étant indiqué par les numéros d'élément (voir page 335).
Lorsqu'une broche d'entrée est sélectionnée et que vous appuyez sur CTRL + FLECHE GAUCHE,
la sortie correspondante est sélectionnée. Lorsqu'une broche de sortie est sélectionnée et que
vous appuyez sur CTRL + FLECHE GAUCHE, les sorties correspondantes sont sélectionnées.
Remplacement des boîtes
Pour remplacer un élément boîte existant, remplacez l'identifiant actuellement inséré par celui du
nouvel élément souhaité. Le nombre de broches d'entrée et de sortie est adapté si nécessaire en
raison de la définition des POU. Ainsi, certaines attributions existantes peuvent être supprimées.
Déplacement
Pour déplacer un élément, sélectionnez-le en cliquant sur son corps (voir les positions du curseur
(voir page 325) possibles) et, tout en maintenant le bouton de la souris enfoncé, faites-le glisser
vers la position souhaitée. Relâchez alors le bouton de la souris pour placer l'élément. Vous
pouvez également utiliser les commandes Couper et Coller pour effectuer cette opération.
EIO0000000069 02/2018
333
Editeur CFC (Continuous Function Chart)
Connexion
Vous pouvez connecter les broches d'entrée et de sortie de 2 éléments par l'intermédiaire d'une
ligne de connexion ou via des marques de connexion.
Ligne de connexion : vous pouvez sélectionner un point de connexion valide qui soit une broche
d'entrée ou de sortie d'un élément (reportez-vous à Positions du curseur dans CFC
(voir page 325)), puis tracer une ligne vers un autre point de connexion avec la souris. L'autre
possibilité consiste à sélectionner 2 points de connexion et à exécuter la commande Select
connected pins. Un point de connexion possible sélectionné est indiqué par un carré rouge.
Lorsque vous tracez une ligne de ce type de point vers l'élément cible, vous pouvez identifier le
possible point de connexion cible. Lorsque vous positionnez ensuite le curseur sur un point de
connexion valide, un symbole de flèche est ajouté au curseur quand vous passez sur ce point, ce
qui indique une connexion possible.
La figure suivante fournit un exemple : après un clic de souris sur la broche d'entrée de l'élément
var1, le rectangle rouge s'affiche pour indiquer qu'il s'agit d'un point de connexion sélectionné. En
maintenant le bouton de la souris enfoncé, déplacez le curseur vers la broche de sortie de la boîte
ADD jusqu'à ce que le symbole de curseur apparaisse, comme indiqué sur la figure. Relâchez
alors le bouton de la souris pour établir la ligne de connexion.
La connexion la plus courte possible sera créée en prenant en compte les autres éléments et
connexions. Si la route des lignes de connexion chevauche d'autres lignes de connexion, elles
apparaissent en gris clair.
Marques de connexion : vous pouvez aussi utiliser les marques de connexion à la place des lignes
de connexion afin de simplifier des diagrammes complexes. Reportez-vous à la description des
marques de connexion (voir page 328).
Copie
Pour copier un élément, sélectionnez-le et utilisez les commandes Copier et Coller.
Modification
Une fois que vous avez inséré un élément, la partie texte est représentée par ??? par défaut. Pour
la remplacer par le texte souhaité (nom de POU, nom d'étiquette, nom d'instance, commentaire,
etc.), cliquez sur le texte pour obtenir un champ de modification. Le bouton ... vous permet en outre
d'ouvrir l'Assistant de saisie.
Suppression
Vous pouvez supprimer une ligne de connexion ou un élément sélectionné en exécutant la
commande Supprimer disponible dans le menu contextuel ou en appuyant sur la touche Suppr.
334
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Ouverture d'un bloc fonction
Si un bloc fonction est ajouté à l'éditeur, vous pouvez ouvrir ce bloc en double-cliquant dessus.
Vous pouvez aussi utiliser la commande Browse → Go To Definition dans le menu contextuel.
Ordre d'exécution, numéros d'élément
L'ordre dans lequel les éléments d'un réseau CFC sont exécutés en mode En ligne est indiqué par
les numéros situés dans le coin supérieur droit des éléments boîte, sortie, saut, retour et étiquette.
Le processus commence par l'élément ayant le numéro le plus bas, à savoir 0.
Vous pouvez modifier l'ordre d'exécution à l'aide des commandes disponibles dans le sous-menu
Execution Order du menu CFC.
Lors de l'ajout d'un élément, le numéro est automatiquement attribué en fonction de l'ordre
topologique (de gauche à droite, et de haut en bas). Le nouvel élément reçoit le numéro de son
successeur topologique si l'ordre a déjà été modifié, et tous les numéros plus élevés sont
augmentés de 1.
N'oubliez pas que le numéro d'un élément reste constant lorsqu'il est déplacé.
N'oubliez pas que l'ordre influence le résultat et qu'il doit être modifié dans certains cas.
Modification de la taille de la feuille de travail
Pour disposer de davantage d'espace autour d'un diagramme CFC existant dans la fenêtre de
l'éditeur, vous pouvez modifier la taille de la zone de travail (feuille de travail. Pour ce faire,
sélectionnez et faites glisser tous les éléments à l'aide de la souris ou utilisez les commandes
Couper/Coller (reportez-vous à la section Déplacement (voir page 333))
Vous pouvez aussi utiliser une boîte de dialogue de paramètres de dimensions spéciales. Vous
gagnerez ainsi du temps avec les diagrammes de grande dimension. Reportez-vous à la
description de la boîte de dialogue Edit Working Sheet (voir SoMachine, Commandes de menu,
Aide en ligne). Dans la cas d'un CFC orienté page, vous pouvez utiliser la commande Edit Page
Size (voir SoMachine, Commandes de menu, Aide en ligne).
EIO0000000069 02/2018
335
Editeur CFC (Continuous Function Chart)
Editeur CFC en mode en ligne
Présentation
En mode en ligne, l'éditeur CFC fournit des vues destinées à la surveillance. Les vues destinées
à l'écriture et au forçage des variables et des expressions sur le contrôleur sont décrites dans
d'autres chapitres. La fonctionnalité de débogage (points d'arrêt, exécution pas à pas, etc.) est
disponible, comme décrit ci-dessous.


Pour obtenir des informations sur l'ouverture des objets en mode en ligne, reportez-vous à la
description de l'interface utilisateur en mode en ligne (voir page 52).
La fenêtre de l'éditeur d'un objet CFC inclut l'éditeur de déclaration dans la partie supérieure.
Reportez-vous à la description de l'éditeur de déclaration en mode en ligne (voir page 403).
Surveillance
Les valeurs réelles sont affichées dans de petites fenêtres de surveillance derrière chaque variable
(surveillance en ligne).
Vue en ligne d'un objet de programme PLC_PRG :
336
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Positions de point d'arrêt dans l'éditeur CFC
Les positions de point d'arrêt possibles sont celles incluses dans une POU, auxquelles les valeurs
des variables peuvent changer ou auxquelles le flux de programme se ramifie ou une autre POU
est appelée. Visualisez les positions possibles dans l'image suivante.
Positions de point d'arrêt dans l'éditeur CFC :
NOTE : Un point d'arrêt est défini automatiquement dans toutes les méthodes qui peuvent être
appelées. Si une méthode gérée par l'interface est appelée, des points d'arrêt seront définis dans
toutes les méthodes ou blocs fonction implémentant cette interface et dans tous les blocs fonction
dérivés abonnés à cette méthode. Si une méthode est appelée à l'aide d'un pointeur sur un bloc
fonction, des points d'arrêt seront définis dans la méthode du bloc fonction et dans tous les blocs
fonction dérivés abonnés à cette méthode.
EIO0000000069 02/2018
337
Editeur CFC (Continuous Function Chart)
Editeur CFC orienté page
Présentation
En plus de l'éditeur CFC standard, SoMachine permet la pagination de l'éditeur CFC. Outre les
outils (voir page 327) et les commandes de l'éditeur CFC standard, cet éditeur vous permet
d'organiser les éléments sur le nombre souhaité de pages différentes.
NOTE : vous ne pouvez pas convertir des POU créées en langage CFC orienté page en CFC
normal, et inversement. Vous pouvez copier des éléments entre ces 2 éditeurs à l'aide des
commandes Copier et Coller (via le presse-papiers) ou de la fonction glisser-déposer.
Pagination CFC
Pour changer la taille de la page, exécutez la commande Edit Page Size.
338
EIO0000000069 02/2018
Editeur CFC (Continuous Function Chart)
Connexions entre 2 pages
Les connexions entre 2 pages sont réalisées avec les éléments marque de connexion - source et
marque de connexion - sink (voir la description des marques de connexion). Par une opération
glisser-déposer, vous pouvez placer la marque de connexion -source dans la marge droite et la
marque de connexion -sink dans la marge gauche. Si vous tirez une ligne de connexion depuis
une entrée ou une sortie d'un élément vers la marge, la marque de connexion est placée
automatiquement.
Insertion des marques de connexion
Ordre d'exécution
L'ordre d'exécution des pages va de haut en bas. Dans une page, l'ordre suit les règles de
l'éditeur CFC standard (voir l'ordre d'exécution (voir page 335) pour plus d'informations). Vous
pouvez changer l'ordre d'exécution des éléments uniquement dans la page associée. Vous ne
pouvez pas changer l'ordre d'exécution des éléments sur différentes pages.
EIO0000000069 02/2018
339
Editeur CFC (Continuous Function Chart)
340
EIO0000000069 02/2018
SoMachine
Editeur SFC (Sequential Function Chart)
EIO0000000069 02/2018
Chapitre 12
Editeur SFC (Sequential Function Chart)
Editeur SFC (Sequential Function Chart)
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Editeur SFC
342
Langage SFC (Sequential Function Chart)
344
Positions du curseur dans SFC
345
Utilisation de l'éditeur SFC
347
Propriétés des éléments SFC
349
Eléments SFC/Boîte à outils
351
Qualificatifs d'actions dans SFC
362
Variables implicites - Drapeaux SFC
363
Séquence de traitement dans SFC
368
Editeur SFC en mode en ligne
370
EIO0000000069 02/2018
341
Editeur SFC (Sequential Function Chart)
Editeur SFC
Présentation
L'éditeur SFC permet de programmer des objets dans le langage de programmation IEC 61131-3
SFC (Sequential Function Chart) (voir page 344). Sélectionnez ce langage lorsque vous ajoutez
un nouvel objet POU au projet.
L'éditeur SFC est un éditeur graphique. Définissez ses paramètres de comportement et
d'affichage généraux dans la boîte de dialogue Options → Editeur SFC.
L'éditeur SFC est disponible dans la partie inférieure de la fenêtre qui s'affiche lorsque vous éditez
un objet POU SFC. Dans la partie supérieure de cette fenêtre se trouve également l'éditeur de
déclaration (voir page 398).
Editeur SFC
342
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Utilisation de l'éditeur SFC
Les éléments (voir page 351) utilisés dans un diagramme SFC se trouvent dans le menu SFC. Ce
menu est disponible dès que l'éditeur SFC est actif. Disposez ces éléments dans une séquence
(ou dans plusieurs séquences parallèles) d'étapes connectées par des transitions. Pour plus
d'informations, voir Utilisation de l'éditeur SFC (voir page 347).
Vous pouvez modifier les propriétés des étapes dans une fenêtre de propriétés (voir page 349)
distincte. Vous pouvez notamment définir les durées d'activité minimum et maximum de chaque
étape.
Vous pouvez accéder à des variables implicites (voir page 363) permettant de contrôler le
traitement d'un SFC (état des étapes, analyse des timeouts, réinitialisation, etc.).
EIO0000000069 02/2018
343
Editeur SFC (Sequential Function Chart)
Langage SFC (Sequential Function Chart)
Présentation
SFC (Sequential Function Chart) est un langage de type graphique qui décrit l'ordre chronologique
d'actions données au sein d'un programme. Ces actions sont disponibles sous forme d'objets de
programmation distincts, écrit dans n'importe quel langage de programmation disponible. Dans
SFC, elles sont affectées à des éléments d'étape et la séquence de traitement est contrôlée par
des éléments de transition. Pour une description détaillée du traitement des étapes en mode en
ligne, voir Séquence de traitement dans SFC (voir page 368).
Pour savoir comment utiliser l'éditeur SFC dans SoMachine, voir la description de l'éditeur SFC
(voir page 342).
Exemple
Exemple de séquence d'étapes dans un module SFC :
344
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Positions du curseur dans SFC
Présentation
Les positions possibles du curseur dans un diagramme SFC sont indiquées dans l'éditeur SFC
(voir page 342) par un ombrage grisé qui apparaît lorsque vous faites passer le curseur sur les
éléments.
Positions du curseur dans les textes
Il existe deux catégories de positions de curseur : textes et corps d'éléments. Les figures qui
suivent présentent les positions possibles indiquées par un ombrage grisé.
Positions possibles du curseur dans les textes :
Lorsque vous cliquez sur une position dans un texte, la chaîne peut être éditée.
Sélectionnez un nom d'action pour le modifier :
EIO0000000069 02/2018
345
Editeur SFC (Sequential Function Chart)
Positions du curseur dans les corps d'éléments
Positions possibles du curseur dans les corps d'éléments :
Lorsque vous cliquez sur une zone grisée, l'élément est sélectionné. Il apparaît alors dans un
cadre en pointillés avec un arrière-plan rouge (pour sélectionner plusieurs éléments, voir
Utilisation de l'éditeur SFC (voir page 347) ).
Elément d'étape sélectionné
346
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Utilisation de l'éditeur SFC
Présentation
Par défaut, un nouveau POU SFC contient une étape initiale suivie d'une transition. Ce chapitre
décrit comment ajouter des éléments et comment organiser et modifier les éléments.
Positions possibles du curseur
Pour plus d'informations, voir le chapitre Positions du curseur dans SFC (voir page 345).
Navigation
Utilisez les touches fléchées pour passer à l'élément précédent ou suivant du diagramme.
Insertion d'éléments
Pour insérer des éléments SFC (voir page 351), exécutez les commandes correspondantes du
menu SFC. Pour plus d'informations, voir la description des commandes de l'éditeur SFC
(voir SoMachine, Commandes de menu, Aide en ligne). Double-cliquez sur un élément d'étape, de
transition ou d'action existant, qui ne fait pas encore référence à un objet de programmation, pour
ouvrir une boîte de dialogue permettant d'affecter un tel objet.
Sélection d'éléments
Sélectionnez un élément ou un champ de texte en cliquant sur une position possible du curseur.
Vous pouvez également déplacer la sélection sur un élément adjacent à l'aide des touches
fléchées. L'élément s'affiche alors en rouge. Pour obtenir un exemple, voir le chapitre Positions du
curseur dans SFC (voir page 345).
NOTE : Contrairement aux précédentes, la nouvelle version de SoMachine permet de
sélectionner, et donc de déplacer (couper, copier, coller) ou de supprimer des étapes et des
transitions séparément.
Pour sélectionner plusieurs éléments, vous pouvez :
 Cliquer sur les éléments voulus tout en maintenant la touche Maj enfoncée.
 Appuyer sur le bouton gauche de la souris et tracer un rectangle (ligne en pointillés) autour des
éléments à sélectionner.
 Exécuter la commande Sélectionner tout du menu Modifier.
Edition de texte
Cliquez sur une position du curseur de texte pour ouvrir un champ d'édition dans lequel vous
pouvez modifier le texte. Si une zone de texte a été sélectionnée à l'aide des touches fléchées,
appuyez sur la barre d'espacement pour ouvrir le champ d'édition de manière explicite.
EIO0000000069 02/2018
347
Editeur SFC (Sequential Function Chart)
Edition des actions associées
Double-cliquez sur une action d'étape (entrée, active ou sortie) ou de transition pour ouvrir l'action
associée dans l'éditeur correspondant. Vous pouvez, par exemple, double-cliquer sur l'élément de
transition ou le triangle indiquant une action de sortie dans un élément d'étape.
Couper, copier et coller des éléments
Sélectionnez les éléments voulus et exécutez la commande Couper, Copier ou Coller (du menu
Modifier) ou utilisez les touches correspondantes.
NOTE :
Lorsque vous collez un ou plusieurs éléments coupés ou copiés, le contenu du presse-papiers
est inséré avant la position actuellement sélectionnée. Si rien n'est sélectionné, les éléments
sont ajoutés à la fin du diagramme actuellement chargé.
 Si vous collez un branchement alors que l'élément actuellement sélectionné est également un
branchement, les éléments collés sont insérés à gauche des éléments existants.
 Si vous collez une action (liste) dans une étape actuellement sélectionnée, les actions sont
ajoutées au début de la liste d'actions de l'étape, ou une liste d'actions est créée pour l'étape.
 Eléments incompatibles pour le couper-copier :
Si vous sélectionnez une action associée (liste) et un élément qui n'est pas l'étape à laquelle
appartient l'action (liste), le message suivant s'affiche : La sélection actuelle contient des
éléments incompatibles. Aucune donnée ne peut être transmise vers le presse-papiers. La
sélection n'est pas enregistrée et vous ne pouvez pas la coller ni la copier ailleurs.
 Éléments incompatibles pour le collage :
Si vous tentez de coller une action (liste) alors que l'élément actuellement sélectionné n'est ni
une étape ni une autre association, le message suivant s'affiche : Le contenu du presse-papiers
ne peut pas être ajouté à la sélection actuelle. Si vous tentez de coller un élément tel qu'une
étape, un branchement ou une transition alors qu'une action (liste) associée est actuellement
sélectionnée, le même message apparaît.

Suppression d'éléments
Sélectionnez les éléments et exécutez la commande Supprimer ou appuyez sur la touche Suppr.
Tenez compte des points suivants :
 La suppression d'une étape entraîne celle de la liste d'actions associée.
 Lorsque l'étape initiale est supprimée, l'étape suivante devient automatiquement l'étape initiale.
L'option Etape initiale est activée dans les propriétés de l'étape concernée.
 La suppression de la ligne horizontale qui précède une zone comportant des branchements
entraîne la suppression de l'ensemble des branchements.
 La suppression de tous les éléments individuels d'un branchement entraîne la suppression de
celui-ci.
348
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Propriétés des éléments SFC
Présentation
Vous pouvez afficher et modifier les propriétés d'un élément SFC dans la boîte de dialogue
Propriétés d'éléments. Pour ouvrir cette boîte de dialogue, utilisez la commande Propriétés
d'éléments du menu Afficher.
Les propriétés qui s'affichent dépendent de l'élément actuellement sélectionné. Les propriétés
sont groupées. Pour ouvrir ou fermer un groupe, cliquez sur le signe plus ou moins.
Vous pouvez définir si certains types de propriétés doivent s'afficher en regard d'un élément dans
le diagramme SFC à partir de l'onglet Afficher des options de l'éditeur SFC.
Paramètres généraux
Propriété
Description
Nom
Nom de l'élément, par défaut <élément><numéro d'exécution>. Exemples : nom
d'étape Step0, Step1, nom de branchement branch0, etc.
Commentaire
Commentaire sur l'élément, chaîne de texte. Exemple : Réinitialiser le compteur.
Appuyez sur Ctrl+Entrée pour insérer des sauts de ligne.
Symbole
Pour chaque élément SFC, un drapeau portant le même nom est créé de manière
implicite.
Vous pouvez spécifier si cette variable doit être exportée vers la configuration de
symbole et, le cas échéant, comment accéder au symbole dans le contrôleur.
Double-cliquez sur le champ de valeur ou sélectionnez ce champ et appuyez sur la
barre d'espacement pour ouvrir une liste dans laquelle vous pourrez sélectionner
l'une des options d'accès suivantes :
Aucun : le symbole est exporté vers la configuration de symbole, mais il n'est pas
accessible dans le contrôleur.
Lire : le symbole est exporté vers la configuration de symbole et lisible dans le
contrôleur.
Ecrire : le symbole est exporté vers la configuration de symbole et écrit dans le
contrôleur.
Lire/écrire : combinaison des options Lire et Ecrire.
Par défaut, ce champ est vide. Cela signifie qu'aucun symbole n'est exporté dans la
configuration de symbole.
EIO0000000069 02/2018
349
Editeur SFC (Sequential Function Chart)
Propriétés spécifiques
Propriété spécifique
Description
Etape initiale
Cette option est activée dans les propriétés
de l'étape initiale (voir page 351) actuelle.
Par défaut, elle est activée pour la première
étape d'un SFC et désactivée pour les
autres. Si vous activez cette option pour une
autre étape, vous devez la désactiver pour
l'étape initiale précédente. Sinon, une erreur
du compilateur est générée.
Durées
Définit les durées de traitement minimum et
maximum de l'étape.
NOTE : Les timeouts sont indiqués par le
drapeau SFCError Variable implicite
(voir page 363).
Minimal actif
Durée de traitement minimum de l'étape.
Valeurs admises : durée au format IEC (par
exemple, t#8s) ou variable TIME, par
défaut : t#0s.
Maximal actif
Durée de traitement maximum de l'étape.
Valeurs admises : durée au format IEC (par
exemple, t#8s) ou variable TIME, par
défaut : t#0s.
Définit les actions (voir page 354) à exécuter
lorsque l'étape est active. Pour plus de
détails, voir Séquence de traitement dans
SFC (voir page 368).
Actions
Etape activée
Cette action est exécutée après l'activation
de l'étape.
Etape active
Cette action est exécutée lorsque l'étape est
active et que les actions d'entrée possibles
ont déjà été traitées.
Etape désactivée
Cette action est exécutée lors du cycle
suivant la désactivation d'une étape (action
de sortie).
NOTE : Utilisez les variables implicites appropriées pour déterminer l'état des actions et des
timeouts via des drapeaux SFC (voir page 363).
350
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Eléments SFC/Boîte à outils
Présentation
Pour insérer les éléments graphiques utilisés pour la programmation dans la fenêtre de l'éditeur
SFC, exécutez les commandes du menu SFC.
Pour plus d'informations sur l'utilisation de l'éditeur, voir la description présentée dans le chapitre
Utilisation de l'éditeur SFC (voir page 347)
Les éléments suivants sont disponibles et décrits dans le présent chapitre :
 étape (voir page 351)
 transition (voir page 351)
 action (voir page 354)
 branchement (alternatif) (voir page 358)
 branchement (parallèle) (voir page 358)
 saut (voir page 360)
 macro (voir page 360)
Etape/Transition
Pour insérer une étape ou une transition, exécutez la commande Etape ou Transition dans Outils.
Les étapes et les transitions peuvent également être insérées en combinaison, via la commande
Insérer une transition d'étape (
d'outils.
) ou Insérer une transition d'étape après (
) de la barre
Une étape est représentée par un module qui contient principalement un nom d'étape généré
automatiquement. Elle est connectée à la transition précédente et à la suivante par une ligne. Le
cadre du module de la première étape d'un SFC (étape initiale) est constitué d'une ligne double.
La transition est représentée par un petit rectangle. Après son insertion, elle porte un nom par
défaut, Trans<n>, où n est un numéro d'exécution.
Exemple d'étape et de transition suivante :
Exemple d'étape initiale et de transition suivante :
EIO0000000069 02/2018
351
Editeur SFC (Sequential Function Chart)
Vous pouvez modifier les noms d'étape et de transition en ligne.
Les noms d'étape doivent être uniques dans le cadre du POU parent. Cette consigne est à prendre
en considération notamment lors de l'utilisation d'actions programmées en SFC. Si elle n'est pas
respectée, une erreur est détectée pendant le processus de compilation.
Vous pouvez transformer chaque étape en étape initiale à l'aide de la commande Etape initiale ou
en activant la propriété d'étape correspondante. Une étape initiale est exécutée en premier lorsque
le POU IL est appelé.
Chaque étape est définie par des propriétés (voir page 349).
Après avoir inséré une étape, associez les actions à effectuer lorsque l'étape est active (traitée) ;
voir ci-dessous pour plus d'informations sur les actions (voir page 354).
Recommandations relatives aux transitions
Une transition doit fournir la condition à laquelle l'étape suivante doit être activée lorsque la valeur
de la condition est TRUE. Une condition de transition doit donc avoir la valeur TRUE ou FALSE.
Une condition de transition peut être définie de deux manières :
Type de définition
Type de condition
Description
directe
en ligne
Remplacez le nom de transition par défaut par l'un des
éléments suivants :
 variable booléenne
 adresse booléenne
 constante booléenne
 instruction avec un résultat booléen (exemple : (i<100) AND
b).
Vous ne pouvez pas indiquer de programmes, de blocs
fonctionnels ni d'affectations ici.
utilisation d'une transition utilisations multiples
ou d'un objet de propriété
distinct
Remplacez le nom de transition par défaut par le nom d'une
transition (
) ou d'un objet de propriété (
) disponible dans
le projet. (Cela permet les utilisations multiples des transitions,
voir par exemple condition_xy dans les figures ci-dessous.)
Un objet tel qu'une transition en ligne peut contenir les éléments
suivants :
 variable booléenne
 adresse
 constante
 instruction
 plusieurs instructions avec code arbitraire
NOTE : Si une transition produit plusieurs instructions, affectez l'expression voulue à une variable
de transition.
NOTE : Les transitions constituées d'une transition ou d'un objet de propriété sont identifiées par
un petit triangle situé dans l'angle supérieur droit du rectangle.
352
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Objet de transition (transition à utilisations multiples) :
Exemples de transitions :
1
2
Conditions de transition saisies directement
Transition condition_xy programmée en ST
EIO0000000069 02/2018
353
Editeur SFC (Sequential Function Chart)
Les conditions à utilisations multiples (transitions ou propriétés) sont identifiées par un triangle :
Contrairement aux versions précédentes de SoMachine, un appel de transition est géré comme
un appel de méthode. Il est saisi avec la syntaxe suivante :
<nom de transition>:=<condition de transition>;
Exemple : trans1:= (a=100);
ou simplement
<condition de transition>;
Exemple : a=100;
Vous trouverez également un exemple (condition_xy) dans la figure Exemples de transitions.
Action
Une action peut contenir une série d'instructions écrite dans l'un des langages de programmation
valides. Elle est affectée à une étape et, en mode en ligne, elle est traitée selon la séquence de
traitement (voir page 368) définie.
354
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Chaque action à utiliser dans les étapes du SFC doit être disponible en tant que POU valide dans
le POU SFC ou le projet (
).
Les noms d'étape doivent être uniques dans le cadre du POU parent. Une action ne peut pas
contenir une étape portant le même nom que l'étape à laquelle elle est affectée. Si cette consigne
n'est pas respectée, une erreur est détectée pendant le processus de compilation.
Exemple d'action écrite en ST
Les actions d'étape conformes à IEC et les actions d'extension IEC sont décrites dans les
paragraphes qui suivent.
Action d'étape conforme à IEC (action IEC)
Il s'agit d'une action conforme à la norme IEC61131-3, traitée selon le qualificatif (voir page 362)
associé lorsque l'étape est activée, puis de nouveau lorsqu'elle est désactivée. Si plusieurs actions
sont affectées à une étape, la liste d'actions est exécutée de haut en bas.




Différents qualificatifs peuvent être utilisés pour les actions d'étape IEC, contrairement aux
actions d'étape standard.
Chaque action d'étape IEC est fournie avec un drapeau de contrôle, ce qui n'est pas le cas des
actions standard. Cela évite qu'une action soit exécutée plusieurs fois simultanément, même si
elle est appelée par une autre étape. Cela ne s'applique pas aux actions d'étape standard.
Une action d'étape IEC est représentée par un module en deux parties relié à la droite de l'étape
via une ligne de connexion. A gauche se trouve le qualificatif de l'action et à droite, son nom.
Les deux peuvent être modifiés en ligne.
Les actions d'étape IEC sont associées à une étape à l'aide de la commande Insérer une
association d'actions. Vous pouvez associer une ou plusieurs actions à une étape. La position
de la nouvelle action dépend de la position actuelle du curseur et de la commande. Les actions
doivent être disponibles dans le projet et être insérées avec un nom d'action unique (par
exemple, plc_prg.a1).
EIO0000000069 02/2018
355
Editeur SFC (Sequential Function Chart)
Liste d'actions d'étape conformes à IEC associée à une étape :
Pour chaque module d'action, la première colonne contient le qualificatif et la seconde, le nom de
l'action.
Actions d'extension IEC
Ces actions étendent la norme IEC. Elles doivent être disponibles en tant qu'objets sous l'objet
SFC. Sélectionnez des noms d'action uniques. Leur définition figure dans les propriétés de l'étape.
Le tableau suivant répertorie les actions d'extension IEC :
Type d'action
Traitement
Association
Représentation
Etape activée
Ce type d'action est traité
dès l'activation de l'étape,
avant l'action Etape active.
L'action est associée à une
étape via une entrée dans le
champ Etape activée des
propriétés de l'étape
(voir page 349).
Elle est identifiée par un E
dans l'angle inférieur
gauche du module d'étape
correspondant.
Etape active
Ce type d'action est traité
dès l'activation de l'étape,
après le traitement d'une
éventuelle action Etape
activée. Toutefois,
contrairement à une action
d'étape IEC (voir cidessus), elle n'est pas
réexécutée lorsqu'elle est
désactivée et aucun
qualificatif ne peut lui être
affecté.
L'action est associée à une
étape via une entrée dans le
champ Etape active des
propriétés de l'étape
(voir page 349).
Elle est identifiée par un
petit triangle dans l'angle
supérieur droit du module
d'étape correspondant.
Etape désactivée
Une action de sortie est
exécutée après la
désactivation de l'étape.
Cependant, cette exécution
n'a pas lieu au cours du
même cycle, mais au début
du suivant.
L'action est associée à une
étape via une entrée dans le
champ Etape désactivée
des propriétés de l'étape
(voir page 349).
Elle est identifiée par un X
dans l'angle inférieur droit
du module d'étape
correspondant.
356
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Actions d'extension IEC
Exemple : différence entre actions d'étapes conformes à IEC et actions d'extension
La principale différence entre les actions d'étape et les actions IEC associées au qualificatif N
réside dans le fait que l'action IEC est exécutée au moins deux fois, la première lors de l'activation
de l'étape et la seconde, lors de sa désactivation. Voir l'exemple suivant.
L'action Action_AS1 est associée à l'étape AS1 en tant qu'action d'étape (gauche) ou en tant
qu'action IEC portant le qualificatif N (droite). Etant donné que dans les deux cas, deux transitions
sont utilisées, deux cycles du contrôleur sont nécessaires pour atteindre l'étape initiale, en
supposant qu'une variable iCounter soit incrémentée dans Action_AS1. Après la réactivation
de l'étape Init, iCounter prend la valeur 1 (exemple de gauche). Dans l'exemple de droite,
iCounter a la valeur 2 car l'action IEC a été exécutée deux fois, en raison de la désactivation de
AS1.
Pour plus d'informations sur les qualificatifs, reportez-vous à la liste des qualificatifs disponibles
(voir page 362).
EIO0000000069 02/2018
357
Editeur SFC (Sequential Function Chart)
Branchements
La ligne de traitement d'un diagramme fonctionnel en séquence (SFC) peut être divisée en deux
lignes (branchements) ou plus. Les branchements parallèles (voir page 358) sont traités
simultanément. Dans le cas des branchements alternatifs (voir page 358), un seul est traité, selon
la condition de transition précédente. Chaque branchement d'un diagramme est précédé d'une
ligne horizontale double (parallèle) ou simple (alternatif) et se termine par cette ligne ou par un saut
(voir page 360).
Branchement parallèle
Un branchement parallèle doit commencer et se terminer par une étape. Les branchements
parallèles peuvent contenir des branchements alternatifs ou d'autres branchements parallèles.
La zone contenant des branchements est précédée et suivie de lignes horizontales doubles.
Traitement en mode en ligne : si la transition précédente (t2 dans l'exemple de gauche) a la valeur
TRUE, les premières étapes de tous les branchements parallèles sont activées (Step11 et
Step21). Les branchements individuels sont traités parallèlement les uns aux autres avant que la
transition suivante (t3) soit reconnue.
Pour insérer un branchement parallèle, sélectionnez une étape et exécutez la commande Insérer
un branchement à droite.
Vous pouvez convertir les branchements parallèles en branchements alternatifs, et inversement,
à l'aide des commandes Parallèle ou Alternatif.
Une étiquette de branchement est ajoutée automatiquement sur la ligne horizontale qui précède
le branchement nommé Branch<n>, où n est un numéro d'exécution (0 et ainsi de suite). Vous
pouvez spécifier cette étiquette lors de la définition d'une destination de saut (voir page 360).
358
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Branchement alternatif
La zone contenant des branchements est précédée et suivie de lignes horizontales simples.
Un branchement alternatif doit commencer et se terminer par une transition. Les branchements
alternatifs peuvent contenir des branchements parallèles et d'autres branchements alternatifs.
Si l'étape qui précède la ligne de début du branchement alternatif est active, la première transition
de chaque branchement alternatif est évaluée de gauche à droite. La première transition en partant
de la gauche dont la condition de transition a la valeur TRUE est ouverte et les étapes suivantes
sont activées.
Pour insérer des branchements alternatifs, sélectionnez une transition et exécutez la commande
Insérer un branchement à droite .
Vous pouvez convertir les branchements parallèles en branchements alternatifs, et inversement,
à l'aide des commandes Parallèle ou Alternatif.
EIO0000000069 02/2018
359
Editeur SFC (Sequential Function Chart)
Saut
Un saut est représenté par une ligne de connexion verticale, ainsi qu'une flèche horizontale et le
nom de la destination du saut. Il définit l'étape suivante à traiter dès que la transition précédente a
la valeur TRUE. Vous pouvez utiliser des sauts pour éviter que les lignes de traitement se croisent
ou remontent.
A part le saut par défaut situé à la fin du diagramme, un saut ne peut être utilisé qu'à la fin d'un
branchement. Pour insérer un saut, sélectionnez la dernière transition du branchement et
exécutez la commande Insérer un saut.
Le destination du saut est spécifiée par la chaîne de texte associée, qui peut être modifiée. Il peut
s'agir d'un nom d'étape ou de l'étiquette d'un branchement parallèle.
Macro
Vue principale de l'éditeur SFC
360
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Vue de l'éditeur de macro pour Macro1
Une macro est représentée par un module encadré en gras contenant le nom de la macro. Elle
contient une partie du diagramme SFC, qui n'est donc pas visible directement dans la vue
principale de l'éditeur. Le flux de processus n'est pas influencé par l'utilisation de macros ; il s'agit
simplement d'un moyen de masquer certaines parties du programme, par exemple pour simplifier
l'affichage. Pour insérer un module de macro, exécutez la commande Insérer une macro après. Le
nom de la macro peut être modifié.
Pour ouvrir l'éditeur de macro, double-cliquez sur le module de la macro ou exécutez la commande
Afficher la macro. Vous pouvez effectuer la modification dans l'éditeur comme dans la vue
principale de l'éditeur et accéder à la section voulue du diagramme SFC. Pour sortir, exécutez la
commande Quitter la macro.
La ligne de titre de l'éditeur de macro contient le chemin d'accès de la macro dans l'exemple SFC
actuel :
EIO0000000069 02/2018
361
Editeur SFC (Sequential Function Chart)
Qualificatifs d'actions dans SFC
Présentation
Pour configurer la manière dont les actions (voir page 354) doivent être associées aux étapes IEC,
des qualificatifs sont disponibles ; ils doivent être insérés dans le champ de qualificatif d'un
élément d'action.
Qualificatifs disponibles
Qualificatif
Format long
Description
N
non stocké
L'action est active tant que l'étape l'est.
R0
réinitialisation prioritaire
L'action est désactivée.
S0
défini (stocké)
L'action démarre lorsque l'étape devient active et se poursuit
après la désactivation de l'étape, jusqu'à la réinitialisation de
l'action.
L
durée limitée
L'action démarre lorsque l'étape devient active. Elle se poursuit
jusqu'à ce que l'étape devienne inactive ou jusqu'à l'expiration
d'un délai défini.
D
reporté
Un temporisateur démarre lorsque l'étape devient active. Si l'étape
est toujours active une fois le délai écoulé, l'action démarre et se
poursuit jusqu'à la désactivation de l'étape.
NOTE : Lorsqu'une action D (reporté) est associée à deux étapes
consécutives afin de définir la même variable booléenne, cette
variable n'est pas réinitialisée lors du passage à la seconde étape.
Pour réinitialiser la variable, insérez une étape intermédiaire entre
les deux étapes.
P
impulsion
L'action démarre lorsque l'étape devient active/inactive et est
exécutée une seule fois.
SD
stocké et reporté
L'action démarre une fois le délai défini écoulé et se poursuit
jusqu'à sa réinitialisation.
DS
reporté et stocké
Si l'étape est toujours active une fois le délai spécifié écoulé,
l'action démarre et se poursuit jusqu'à sa réinitialisation.
SL
stocké et durée limitée
L'action démarre lorsque l'étape devient active et se poursuit
pendant la durée indiquée ou jusqu'à une réinitialisation.
Les qualificatifs L, D, SD, DS et SL exigent une valeur de temps au format de constante TIME.
Indiquez cette valeur après le qualificatif, suivi d'un espace (par exemple, L T#10s).
NOTE : Une fois désactivée, une action IEC est exécutée une fois de plus. En conséquence,
chaque action est exécutée au moins deux fois.
362
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Variables implicites - Drapeaux SFC
Présentation
Chaque étape SFC et action IECfournit des variables générées de manière implicites permettant
de contrôler l'état (voir page 363) des étapes et des actions IEC pendant l'exécution. Vous pouvez
également définir des variables pour surveiller et contrôler l'exécution d'un SFC (timeouts, réinitialisation, mode conseil). Ces variables peuvent aussi être générées implicitement par l'objet SFC.
En fait, pour chaque étape et action IEC, une variable implicite est générée. Il s'agit d'une instance
de structure, nommée d'après l'élément, par exemple, step1 pour une étape nommée step1. Dans
les propriétés de l'élément (voir page 349), vous pouvez définir si, pour ce drapeau, une définition
de symbole doit être exportée vers la configuration de symbole, ainsi que le mode d'accès au
symbole dans le contrôleur.
Les types de données de ces variables implicites sont définis dans la bibliothèque IecSFC.library.
Cette bibliothèque est incluse automatiquement dans le projet dès qu'un objet SFC est ajouté.
Etat des étapes et des actions et durée des étapes
En fait, pour chaque étape et chaque action IEC, une variable de structure implicite de type
SFCStepType ou SFCActionType est créée. Les composants de la structure (drapeaux)
décrivent l'état d'une étape ou d'une action, ou bien la durée de traitement en cours d'une étape
active.
La syntaxe de la déclaration de variable implicite est la suivante :
<nom d'étape>: SFCStepType;
ou
_<nom d'action>:SFCActionType;
NOTE : Contrairement aux versions précédentes de SoMachine, les variables implicites associées
aux actions sont précédées d'un trait de soulignement dans les versions 4.0 et suivantes.
Les drapeaux booléens ci-dessous sont disponibles pour décrire l'état des étapes ou des actions.
Drapeaux booléens pour les étapes :
Drapeau booléen
Description
<nom d'étape>.x
indique l'état d'activation actuel.
<nom d'étape>._x
indique l'état d'activation pour le cycle suivant.
Si <nom d'étape>.x = TRUE, l'étape est exécutée lors du cycle en cours.
Si <nom d'étape>._x = TRUE et <nom d'étape>.x = FALSE, l'étape est exécutée lors du cycle
suivant. Cela signifie que <nom d'étape>._x est copié dans <nom d'étape>.x au début d'un cycle.
EIO0000000069 02/2018
363
Editeur SFC (Sequential Function Chart)
Drapeaux booléens pour les actions :
Drapeau booléen
Description
_<nom d'action>.x
a la valeur TRUE si l'action est exécutée.
_<nom d'action>._x
a la valeur TRUE si l'action est active.
Génération de symboles
Vous pouvez définir dans les propriétés d'élément (voir page 349) d'une étape ou d'une action si
une définition de symbole doit être ajoutée à une configuration de symbole éventuellement créée
et téléchargée, pour le drapeau de l'étape ou de l'action. A cet effet, créez une entrée
correspondant au droit d'accès voulu dans la colonne Symbole de la vue des propriétés de
l'élément.
AVERTISSEMENT
COMPORTEMENT IMPRÉVU DE L'ÉQUIPEMENT
Si vous utilisez le drapeau booléen <nom d'étape>.x pour forcer une certaine valeur d'état (afin
d'activer une étape), sachez que cela aura une incidence sur les états non contrôlés au sein du
SFC.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Durée via les variables TIME :
Le drapeau t indique la durée écoulée depuis l'activation de l'étape. Cela s'applique uniquement
aux étapes, qu'une durée minimale soit configurée ou non dans les attributs d'étape
(voir page 349) (voir ci-dessous : SFCError).
Pour les étapes :
<nom d'étape>.t (<nom d'étape>._t ne peut pas être utilisé à des fins externes)
Pour les actions :
Les variables de durée implicites ne sont pas utilisées.
Contrôle de l'exécution du SFC (timeouts, réinitialisation, mode conseil)
Vous pouvez utiliser certaines variables disponibles de manière implicite, également nommées
drapeaux SFC (voir le tableau ci-dessous) pour contrôler le fonctionnement d'un SFC. Pour
pouvez par exemple indiquer les dépassements de temps ou activer le mode conseil pour les
changements de transitions.
Pour avoir accès à ces drapeaux, vous devez les déclarer et les activer. Pour ce faire, utilisez la
boîte de dialogue Paramètres SFC. Il s'agit d'une sous-boîte de dialogue de la boîte de dialogue
Propriétés de l'objet.
364
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
La déclaration manuelle, requise dans SoMachine V3.1, n'est nécessaire que pour activer l'accès
en écriture à partir d'un autre POU (voir le paragraphe Accès aux drapeaux).
Dans ce cas, tenez compte des points suivants :
Si vous déclarez le drapeau de manière globale, vous devez désactiver l'option Déclarer de la
boîte de dialogue Paramètres SFC. Sinon, un drapeau local déclaré implicitement est créé et
utilisé à la place du drapeau global. Gardez à l'esprit qu'au départ, les paramètres SFC d'un POU
SFC sont déterminés par les définitions figurant dans la boîte de dialogue Options → SFC.
Notez qu'une déclaration d'une variable de drapeau effectuée seulement dans la boîte de dialogue
Paramètres SFC n'apparaît que dans la vue en ligne du POU SFC.
Les variables implicites (drapeaux) ci-dessous peuvent être utilisées. Vous devez pour cela les
déclarer et les activer dans la boîte de dialogue Paramètres SFC.
Variable
Type
Description
SFCInit
BOOL
Si cette variable prend la valeur TRUE, le SFC revient à l'étape initiale
(voir page 351). Les étapes, actions et autres drapeaux SFC sont tous
réinitialisés (initialisation). L'étape initiale reste active, mais elle n'est pas
exécutée tant que la valeur de la variable est TRUE. Rétablissez SFCInit sur
FALSE pour revenir au traitement normal.
SFCReset
BOOL
Cette variable se comporte comme SFCInit. La différence réside dans le fait
que la suite du traitement a lieu après l'initialisation de l'étape initiale. Ainsi, le
rétablissement du drapeau SFCReset sur FALSE peut être effectué lors de
l'étape initiale.
SFCError
BOOL
Dès qu'un timeout se produit lors d'une étape du SFC, cette variable prend la
valeur TRUE. Condition préalable : SFCEnableLimit doit avoir la valeur
TRUE.
Notez qu'aucun autre timeout ne peut être enregistré avant une réinitialisation de
SFCError. SFCError doit être défini pour que les autres drapeaux de contrôle
de durée (SFCErrorStep, SFCErrorPOU, SFCQuitError) puissent être
utilisés.
SFCEnableLimit
BOOL
Vous pouvez utiliser cette variable pour l'activation (TRUE) et la désactivation
(FALSE) explicites du contrôle de durée des étapes via SFCError. Cela signifie
que, si cette variable est déclarée et activée (Paramètres SFC), elle doit avoir la
valeur TRUE pour que SFCError fonctionne. Sinon, les timeouts des étapes ne
sont pas enregistrés. L'utilisation peut être raisonnable pendant les démarrages
ou le fonctionnement manuel. Si cette variable n'est pas définie, SFCError
fonctionne automatiquement.
Condition préalable : SFCError doit être définie.
SFCErrorStep
STRING
Cette variable contient le nom d'une étape à laquelle un timeout a été enregistré
par SFCError.timeout.
Condition préalable : SFCError doit être définie.
SFCErrorPOU
STRING
Cette variable contient le nom du POU SFC dans lequel un timeout s'est produit.
Condition préalable : SFCError doit être définie.
EIO0000000069 02/2018
365
Editeur SFC (Sequential Function Chart)
Variable
Type
Description
SFCQuitError
BOOL
Tant que cette variable a la valeur TRUE, l'exécution du diagramme SFC est
interrompue et la variable SFCError est réinitialisée. Une fois la valeur FALSE
rétablie, tous les états en cours dans les étapes actives sont réinitialisés.
Condition préalable : SFCError doit être définie.
SFCPause
BOOL
Tant que cette variable a la valeur TRUE, l'exécution du diagramme SFC est
interrompue.
SFCTrans
BOOL
Cette variable prend la valeur TRUE dès qu'une transition est déclenchée.
SFCCurrentStep
STRING
Cette variable contient le nom de l'étape actuellement active, indépendamment
du contrôle de durée. En cas de séquences simultanées, le nom de l'étape
extérieure droite est enregistré.
SFCTipSFCTipMode
BOOL
Ces variables permettent d'utiliser le mode par à-coups dans le diagramme
actuel. Une fois ce mode activé via SFCTipMode=TRUE, vous ne pouvez passer
à l'étape suivante qu'en définissant SFCTip=TRUE (front montant). Tant que
SFCTipMode a la valeur FALSE, il est possible de passer les transitions.
La figure ci-dessous présente des exemples de drapeaux d'erreur détectés par SFC dans le mode
en ligne de l'éditeur.
Un timeout a été détecté lors de l'étape s1 de l'objet SFC POU (drapeau SFCError).
366
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Accès aux drapeaux
Pour permettre l'accès aux drapeaux de contrôle de l'exécution du SFC (timeouts, réinitialisation,
mode conseil), déclarez et activez les variables des drapeaux comme décrit ci-dessus (Contrôle
de l'exécution du SFC (voir page 364)).
Syntaxe d'accès à partir d'une action ou d'une transition dans le POU SFC :
<nom d'étape>.<drapeau>
ou
_<nom d'action>.<drapeau>
Exemples :
status:=step1._x;
checkerror:=SFCerror;
Syntaxe d'accès à partir d'un autre POU :
<POU SFC>.<nom d'étape>.<drapeau>
ou
<POU SFC>_<nom d'action>.<drapeau>
Exemples :
status:=SFC_prog.step1._x;
checkerror:=SFC_prog.SFCerror;
Pour l'accès en écriture depuis un autre POU, tenez compte des points suivants :
 La variable implicite doit également être déclarée explicitement comme variable VAR_INPUT
du POU SFC.
 Sinon, elle doit être déclarée globalement dans une GVL (liste de variables globale).
Exemple : déclaration locale
PROGRAM SFC_prog
VAR_INPUT
SFCinit:BOOL;
END_VAR
Exemple : déclaration globale dans une GVL
VAR_GLOBAL
SFCinit:BOOL;
END_VAR
Accès au drapeau dans PLC_PRG :
PROGRAM PLC_PRG
VAR
setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit;
EIO0000000069 02/2018
//Write access to SFCinit in SFC_prog
367
Editeur SFC (Sequential Function Chart)
Séquence de traitement dans SFC
Présentation
En mode en ligne, chaque type d'action est traité selon une séquence définie ; voir le tableau cidessous.
Définition des termes
Les termes suivants sont utilisés :
368
Terme
Description
étape active
Etape dont l'action est en cours d'exécution.
En mode en ligne, les étapes actives sont identifiées par la couleur
bleue.
étape initiale
Lors du premier cycle après l'appel d'un POU SFC, l'étape initiale
devient automatiquement active et l'action (voir page 354) d'étape
associée est exécutée.
Actions IEC
Les actions IEC sont exécutées au moins deux fois :
 Une fois lorsqu'elles sont activées.
 Une seconde fois, lors du cycle suivant, lorsqu'elles sont
désactivées.
branchements alternatifs
Si l'étape qui précède la ligne horizontale marquant le début des
branchements alternatifs est active, la première transition de chaque
branchement est évaluée de gauche à droite. La première transition
en partant de la gauche, dont la condition de transition a la valeur
TRUE, est recherchée et le branchement correspondant est exécuté,
ce qui entraîne l'activation de l'étape suivante de ce branchement.
branchements parallèles
Si la ligne double située avant les branchements parallèles est active
et que la condition de transition qui précède a la valeur TRUE, la
première étape de tous les branchements parallèle devient active.
Les branchements sont alors traités parallèlement les uns aux
autres. L'étape qui suit la ligne double à la fin du branchement
devient active lorsque toutes les étapes précédents sont actives et
que la condition de transition suivant la ligne double a la valeur
TRUE.
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Ordre de traitement
Ordre de traitement des éléments d'une séquence :
Etape
Description
1. Réinitialisation des actions
IEC
Tous les drapeaux de contrôle des actions (voir page 354) IEC sont réinitialisés
(sauf ceux des actions IEC appelées au sein de ces actions).
2. Actions de sortie (étape
désactivée)
Toutes les étapes sont vérifiées dans l'ordre qu'elle occupent dans le diagramme
en séquence (de haut en bas et de gauche à droite) afin de déterminer si l'exécution
de l'action de sortie est requise. Le cas échéant, elle est exécutée. Une action de
sortie est exécutée si l'étape doit être désactivée (voir page 351), c'est-à-dire si les
(éventuelles) actions d'entrée et de sortie ont été exécutées au cours du dernier
cycle et que la transition de l'étape suivante a la valeur TRUE.
3. Actions d'entrée (étape
activée)
Toutes les étapes sont testées dans l'ordre qu'elles occupent dans la séquence afin
de déterminer si l'action d'entrée d'étape doit être exécutée. Le cas échéant, elle
est exécutée. Une action d'entrée est exécutée si la condition de transition qui
précède l'étape a la valeur TRUE, qui signifie que l'étape a été activée.
4. Actions de vérification de
timeout, étape active
Pour les étapes non IEC, les actions d'étape active correspondantes sont
désormais exécutées selon leur positionnement dans la séquence (de haut en bas
et de gauche à droite).
5. Actions IEC
Les actions (voir page 354) IEC utilisées dans la séquence sont exécutées dans
l'ordre alphabétique. Pour cela, deux passages dans la liste d'actions sont
effectués. Au cours du premier passage, toutes les actions IEC désactivées pour
le cycle en cours sont exécutées. Au cours du second passage, toutes les actions
IEC actives pour le cycle en cours sont exécutées.
6. Vérification de transition,
activation des étapes suivantes
Les transitions (voir page 351) sont évaluées. Si l'étape était active dans le cycle
en cours et que la transition suivante renvoie la valeur TRUE (et que la durée
d'activité minimale a été respectée), l'étape suivante est activée.
NOTE : Une action peut être exécutée plusieurs fois au cours d'un cycle car elle est appelée depuis
plusieurs actions IEC lorsque plusieurs étapes sont actives. En d'autres termes, la même action
IEC est utilisée simultanément à différents niveaux d'un SFC, ce qui peut entraîner des résultats
inattendus.
Exemple : un SFC peut comporter les actions IEC A et B, toutes deux implémentées dans le SFC
et qui appellent toutes deux l'action IEC C. Les actions IEC A et B peuvent être actives dans le
même cycle et l'action IEC C peut être active dans les deux actions. C est alors appelée deux fois.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT
N'appelez pas des actions IEC à partir de plusieurs autres actions IEC au cours du même cycle.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
EIO0000000069 02/2018
369
Editeur SFC (Sequential Function Chart)
NOTE : Utilisez des variables implicites (voir page 363) pour déterminer l'état des étapes et des
actions ou l'exécution du diagramme.
Editeur SFC en mode en ligne
Présentation
En mode en ligne, l'éditeur SFC fournit des vues de surveillance (voir ci-dessous), ainsi que
d'écriture et de forçage des variables et des expressions sur le contrôleur. Les fonctions de
débogage des autres langages IEC (points d'arrêt, exécution par étapes, etc.) ne sont pas
disponibles dans SFC. Cependant, tenez compte des recommandations suivantes pour le
débogage dans SFC :





370
Pour obtenir des informations sur l'ouverture des objets en mode en ligne, reportez-vous à la
description de l'interface utilisateur en mode en ligne (voir page 52).
La fenêtre d'édition d'un objet SFC contient l'éditeur de déclaration dans sa partie supérieure.
Pour des informations générales, voir le chapitre Editeur de déclaration en mode en ligne
(voir page 403). Si vous avez déclaré des variables implicites (drapeaux SFC) (voir page 363)
via la boîte de dialogue Paramètres SFC, ils sont ajoutés ici, mais ils n'apparaissent pas dans
le mode en ligne de l'éditeur de déclaration.
Tenez compte de la séquence de traitement (voir page 368) des éléments d'un SFC.
Consultez les propriétés des objets ou les options de l'éditeur SFC et les valeurs par défaut du
SFC pour connaître les paramètres relatifs à la compilation ou à l'affichage en ligne des
éléments SFC et de leurs attributs.
Envisagez d'utiliser des drapeaux (voir page 363) pour surveiller et contrôler le traitement d'un
SFC.
EIO0000000069 02/2018
Editeur SFC (Sequential Function Chart)
Surveillance
Les étapes actives sont identifiées par un remplissage de couleur bleue. L'affichage des attributs
des étapes dépend des options de l'éditeur SFC définies.
Vue en ligne de l'objet de programmation SFC_prog
EIO0000000069 02/2018
371
Editeur SFC (Sequential Function Chart)
372
EIO0000000069 02/2018
SoMachine
Editeur ST (Structured Text)
EIO0000000069 02/2018
Chapitre 13
Editeur ST (Structured Text)
Editeur ST (Structured Text)
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
13.1
Informations sur l'éditeur ST
374
13.2
Langage Structured Text (ST) / Extended Structured Text (ExST)
380
EIO0000000069 02/2018
373
Editeur ST (Structured Text)
Sous-chapitre 13.1
Informations sur l'éditeur ST
Informations sur l'éditeur ST
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
374
Page
Editeur ST
375
Editeur ST en mode en ligne
376
EIO0000000069 02/2018
Editeur ST (Structured Text)
Editeur ST
Présentation
L'éditeur ST permet de créer des objets de programmation en langage IEC ST (Structured Text)
ou ST étendu, qui offre des extensions de la norme IEC 61131-3.
L'éditeur ST est un éditeur de texte. Par conséquent, utilisez les paramètres appropriés des boîtes
de dialogue Options et Personnaliser pour configurer le comportement, la présentation et les
menus de l'éditeur. Vous pouvez également définir des paramètres par défaut pour la couleur de
mise en évidence, les numéros de ligne, les onglets, l'indentation et bien plus encore.
Informations complémentaires
Pour sélectionner des blocs, appuyez sur la touche ALT et sélectionnez la zone de texte voulue à
l'aide de la souris.
L'éditeur est disponible dans la partie inférieure de la fenêtre, qui comporte également l'éditeur de
déclaration (voir page 398) dans sa partie supérieure.
Si des erreurs de syntaxe sont détectées pendant l'édition, les messages correspondants
s'affichent dans la fenêtre Precompile Messages. Cette fenêtre est actualisée dès que la fenêtre
de l'éditeur devient active (par exemple, placez le curseur dans une autre fenêtre, puis revenez
dans la fenêtre de l'éditeur).
EIO0000000069 02/2018
375
Editeur ST (Structured Text)
Editeur ST en mode en ligne
Présentation
En mode en ligne, l'éditeur ST (Structured Text) fournit des vues de surveillance (voir page 376),
ainsi que d'écriture et de forçage des variables et des expressions sur le contrôleur. Le débogage
(points d'arrêt, exécution par étapes, etc.) est disponible. Voir Positions des points d'arrêt dans
l'éditeur ST (voir page 378).



Pour obtenir des informations sur l'ouverture des objets en mode en ligne, reportez-vous à la
description de l'interface utilisateur en mode en ligne (voir page 52).
Pour savoir comment saisir des valeurs préparées pour les variables en mode en ligne, voir
Forçage de variables (voir page 377).
La fenêtre d'édition d'un objet ST contient l'éditeur de déclaration dans sa partie supérieure.
Pour plus d'informations sur l'éditeur de déclaration en mode en ligne, voir Editeur de
déclaration en mode en ligne (voir page 403).
Surveillance
Si la surveillance n'est pas désactivée explicitement dans la boîte de dialogue Options, la valeur
réelle de chaque variable apparaît derrière celle-ci.
Vue en ligne d'un objet de programmation PLC_PRG (surveillance activée) :
376
EIO0000000069 02/2018
Editeur ST (Structured Text)
Forçage de variables
Outre la possibilité de saisir une valeur préparée pour une variable dans la déclaration de n'importe
quel éditeur, l'éditeur ST permet de double-cliquer sur la zone de surveillance d'une variable dans
la partie implémentation (en mode en ligne). Saisissez la valeur préparée dans la boîte de dialogue
qui s'affiche.
Boîte de dialogue Préparer la valeur
Le nom de la variable suivi de son chemin d'accès dans l'arborescence d'équipements
(Expression), son type et sa valeur actuelle s'affichent.
Vous pouvez choisir d'effectuer l'une des opérations suivantes :
Préparer une nouvelle valeur qui doit être saisie dans la zone d'édition.
 Supprimer une valeur préparée.
 Arrêter le forçage de la variable.
 Arrêter le forçage de la variable et rétablir la valeur affectée avant le forçage.

Pour exécuter l'action sélectionnée, exécutez la commande Debug → Forcer les valeurs (option
En ligne) ou appuyez sur F7.
EIO0000000069 02/2018
377
Editeur ST (Structured Text)
Positions des points d'arrêt dans l'éditeur ST
Vous pouvez placer un point d'arrêt aux positions d'un POU où les valeurs des variables peuvent
changer, où le flux du programme se scinde ou un autre POU est appelé. Dans les descriptions
qui suivent, {BP} indique une position de point d'arrêt possible.
Affectation :
Au début de la ligne. Gardez à l'esprit que les affectations en tant qu'expressions (voir page 382)
ne définissent pas de positions de point d'arrêt supplémentaire sur une ligne.
Boucle FOR :
1. avant l'initialisation du compteur
2. avant le test du compteur
3. avant une instruction
{BP} FOR i := 12 TO {BP} x {BP} BY 1 DO
{BP} [statement1]
...
{BP} [statementn-2]
END_FOR
Boucle WHILE :
1. avant la vérification de la condition
2. avant une instruction
{BP} WHILE i < 12 DO
{BP} [statement1]
...
{BP} [statementn-1]
END_WHILE
Boucle REPEAT :
avant la vérification de la condition

REPEAT
{BP} [statement1]
...
{BP} [statementn-1]
{BP} UNTIL i >= 12
END_REPEAT
Appel d'un programme ou d'un bloc fonctionnel :
Au début de la ligne.
{{BP} POU( );
A la fin d'un POU :
Lors de l'exécution par étapes, cette position est également atteinte après une instruction RETURN.
378
EIO0000000069 02/2018
Editeur ST (Structured Text)
Affichage des points d'arrêt dans ST
Point d'arrêt en mode en ligne Point d'arrêt désactivé
Arrêt du programme au point
d'arrêt
NOTE : Un point d'arrêt est défini automatiquement dans toutes les méthodes qui peuvent être
appelées. Si une méthode gérée par l'interface est appelée, des points d'arrêt seront définis dans
toutes les méthodes ou blocs fonction implémentant cette interface et dans tous les blocs fonction
dérivés abonnés à cette méthode. Si une méthode est appelée à l'aide d'un pointeur sur un bloc
fonction, des points d'arrêt seront définis dans la méthode du bloc fonction et dans tous les blocs
fonction dérivés abonnés à cette méthode.
EIO0000000069 02/2018
379
Editeur ST (Structured Text)
Sous-chapitre 13.2
Langage Structured Text (ST) / Extended Structured Text (ExST)
Langage Structured Text (ST) / Extended Structured Text
(ExST)
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
380
Page
ST (Structured Text ST)/ExST (Extended Structured Text)
381
Expressions
382
Instructions
384
EIO0000000069 02/2018
Editeur ST (Structured Text)
ST (Structured Text ST)/ExST (Extended Structured Text)
Présentation
ST est un langage de programmation textuel de niveau supérieur, comme PASCAL ou C. Le code
des programmes est constitué d'expressions (voir page 382) et d'instructions (voir page 384).
Contrairement à IL (Instruction List), il permet d'utiliser plusieurs constructions pour programmer
des boucles, ce qui permet le développement d'algorithmes complexes.
Exemple
IF value < 7 THEN
WHILE value < 8 DO
value:=value+1;
END_WHILE;
END_IF;
ExST (Extended Structured Text) est une extension, propre à SoMachine, de la norme IEC 611313 relative à ST. Exemples : affectation en tant qu'expression, opérateurs Set/Reset
EIO0000000069 02/2018
381
Editeur ST (Structured Text)
Expressions
Présentation
Une expression est une construction qui renvoie une valeur après son évaluation. Cette valeur est
utilisée dans les instructions.
Les expressions sont constituées d'opérateurs (voir page 661), d'opérandes (voir page 755) et/ou
d'affectations. Un opérande peut être une constante, une variable, un appel de fonction ou une
autre expression.
Exemples
33
(* Constante *)
ivar
(* Variable *)
fct(a,b,c)
(* Appel de fonction *)
a AND b
(* Expression *)
(x*y) / z
(* Expression *)
real_var2 := int_var;
(* Affectation, voir ci-dessous *)
Ordre des opérations
L'évaluation d'une expression passe par le traitement des opérateurs en fonction de certaines
règles. L'opérateur ayant le niveau d'exécution le plus élevé est traité en premier, suivi de
l'opérateur de niveau suivant, et ainsi de suite jusqu'à ce que tous les opérateurs aient été traités.
Le tableau suivant répertorie les opérateurs selon leur niveau d'exécution ordinal :
382
Opération
Symbole
Niveau d'exécution
placé entre parenthèses
(expression)
niveau le plus élevé
appel de fonction
nom de fonction (liste de
paramètres)
..............
élévation de puissance
EXPT
.............
négation
–
............
construction de compléments
NOT
...........
multiplication
*
..........
division
/
.........
modulo
MOD
........
addition
+
.......
soustraction
–
......
comparaison V
<,>,<=,>=
.....
égal à
=
....
EIO0000000069 02/2018
Editeur ST (Structured Text)
Opération
Symbole
Niveau d'exécution
non égal à
<>
...
AND booléen
AND
..
XOR booléen
XOR
.
OR booléen
OR
ordre le plus faible
Affectation en tant qu'expression
Les affactions peuvent être utilisées en tant qu'expression ; il s'agit d'une extension de la norme
IEC 61131-3 (ExST).
Exemples :
int_var1 := int_var2 := int_var3 + 9;
(* int_var1 et int_var2 tous les
deux équivalents à la valeur de
int_var3 + 9*)
real_var1 := real_var2 := int_var;
(* les affectations correctes,
real_var1 et real_var2,
prennent la valeur de int_var *)
int_var := real_var1 := int_var;
(* un message s'affiche en raison de
la non-concordance real-int *)
IF b := (i = 1) THEN
i := i + 1;
END_IF
(* expression utilisée dans
l'instruction de condition IF : b aura
d'abord pour valeur TRUE ou
FALSE, selon la valeur de i (1 ou
non), puis la valeur de résultat de b
sera évaluée.*)
EIO0000000069 02/2018
383
Editeur ST (Structured Text)
Instructions
Présentation
Les instructions définissent le traitement à appliquer aux expressions (voir page 382) .
Les instructions suivantes peuvent être utilisées dans ST :
Instruction
Exemple
affectation (voir page 385)
A:=B; CV := CV + 1; C:=SIN(X);
Appel d'un bloc fonctionnel (voir page 386) et CMD_TMR(IN := %IX5, PT := 300);
A:=CMD_TMR.Q
utilisation de la sortie correspondante
384
RETURN (voir page 386)
RETURN;
IF (voir page 386)
D:=B*B;
IF D<0.0 THEN
C:=A;
ELSIF D=0.0 THEN
C:=B;
ELSE
C:=D;
END_IF;
CASE (voir page 387)
CASE INT1 OF
1: BOOL1 := TRUE;
2: BOOL2 := TRUE;
ELSE
BOOL1 := FALSE;
BOOL2 := FALSE;
END_CASE;
FOR (voir page 388)
J:=101;
FOR I:=1 TO 100 BY 2 DO
IF ARR[I] = 70 THEN
J:=I;
'EXIT;
END_IF;
END_FOR;
WHILE (voir page 389)
J:=1;
WHILE J<= 100 AND ARR[J] <> 70 D
O
J:=J+2;
END_WHILE;
REPEAT (voir page 390)
J:=-1;
REPEAT
J:=J+2;
UNTIL J= 101 OR ARR[J] = 70
END_REPEAT;
EXIT (voir page 392)
EXIT;
EIO0000000069 02/2018
Editeur ST (Structured Text)
Instruction
Exemple
CONTINUE (voir page 391)
CONTINUE;
JMP (voir page 392)
label1: i:=i+1;
IF i=10 THEN
JMP label2;
END_IF
JMP label1;
label2:
Instruction vide
;
Opérateurs d'affectation
Affectation standard
A gauche d'une affectation figure un opérande (variable, adresse) auquel l'opérateur d'affectation
:= affecte la valeur de l'expression située à droite.
Consultez également la description de l'opérateur (voir page 674) MOVE dont la fonction est la
même.
Exemple
Var1 := Var2 * 10;
Après l'exécution de cette ligne, Var1 a la valeur de Var2 multipliée par 10.
Opérateur de définition S=
La valeur est définie ; si elle est définie une fois sur TRUE, elle le reste.
Exemple
a S= b;
a prend la valeur de b : s'il est défini une fois sur TRUE, il conserve cette valeur, même si b reprend
la valeur FALSE.
Opérateur de réinitialisation R=
La valeur est réinitialisée ; si elle est définie une fois sur FALSE, elle le reste.
Exemple
a R= b;
a prend la valeur FALSE dès que b est TRUE.
NOTE : En cas d'affectations multiples, les affectations définies et réinitialisées font référence au
dernier membre de l'affectation.
Exemple
a S= b R= fun1(par1,par2)
Dans ce cas, b correspond à la valeur de sortie réinitialisée de fun1. Toutefois, a ne prend pas la
valeur définie de b, mais la valeur de sortie définie de fun1.
EIO0000000069 02/2018
385
Editeur ST (Structured Text)
Notez qu'une affectation peut être utilisée en tant qu'expression (voir page 382). Cette fonction
correspond à une extension de la norme IEC 61131-3.
Appel de blocs fonctionnels dans ST
Un bloc fonctionnel (FB) est appelé dans le texte structuré selon la syntaxe suivante :
<nom d'instance FB>(variable d'entrée FB:=<valeur ou adresse>|, <autre variable d'entrée
FB:=<valeur ou adresse>|...autres variables d'entrée FB);
Exemple
Dans l'exemple ci-dessous, un bloc fonction de temporisateur (TON) est appelé avec des
affectations pour les paramètres IN et PT. Puis la variable de résultat Q est affectée à la variable
A. Le bloc fonction de temporisateur est instancié par TMR:TON;. La variable résultat, comme dans
IL, fait l'objet d'adressage selon la syntaxe <nom d'instance FB>.<FB variable>:
TMR(IN := %IX5, PT := 300);
A:=TMR.Q;
Une autre syntaxe est disponible pour les sorties :
fb(in1:=myvar, out1=>myvar2);
Instruction RETURN
Vous pouvez utiliser l'instruction RETURN pour quitter un POU.
Syntaxe
RETURN;
Exemple
IF b=TRUE THEN
RETURN;
END_IF;
a:=a+1;
Si b a la valeur TRUE, l'instruction a:=a+1; n'est pas exécutée. Par conséquent, le POU est
fermé immédiatement.
Instruction IF
L'instruction IF permet de tester une condition et, suivant celle-ci, d'exécuter des instructions.
Syntaxe
IF <expression_booléenne1> THEN
<IF_instructions>
{ELSIF <expression_booléenne2> THEN
<ELSIF_instructions1>
386
EIO0000000069 02/2018
Editeur ST (Structured Text)
..
..
ELSE <expression_booléenne n> THEN
<ELSIF_instructions-1>
ELSE
<ELSE_instructions>}
END_IF;
Le segment entre crochets {} est facultatif.
Si <expression_booléenne1> renvoie la valeur TRUE, seules les <instructions_IF> sont exécutées
et, par conséquent, aucune autre instruction n'est exécutée. Sinon, les expressions booléennes,
à partir de <expression_booléenne2>, sont évaluées l'une après l'autre jusqu'à ce que l'une d'elles
renvoie la valeur TRUE. Ensuite, seules les instructions qui suivent cette expression booléenne et
qui précèdent l'instruction ELSE ou ELSIF suivante, sont évaluées. Si aucune expression
booléenne ne renvoie la valeur TRUE, seules les <instructions_ELSE> sont évaluées.
Exemple
IF temp<17
THEN heating_on := TRUE;
ELSE heating_on := FALSE;
END_IF;
Dans cet exemple, le chauffage s'allume lorsque la température est inférieure à 17 degrés. Sinon,
il reste éteint.
Instruction CASE
L'instruction CASE permet de combiner dans une structure plusieurs instructions conditionnelles
ayant la même variable de condition.
Syntaxe
CASE <Var1> OF
<valeur1>: <instruction 1>
<valeur2>: <instruction 2>
<valeur3, valeur4, valeur5>: <instruction 3>
<valeur6..valeur10>: <instruction 4>
..
..
<valeur n>: <instruction n>
ELSE <instruction ELSE>
END_CASE;
EIO0000000069 02/2018
387
Editeur ST (Structured Text)
Une instruction CASE est traitée selon le modèle suivant :
 Si la variable dans <Var1> a la valeur <Valeur I>, l'instruction <Instruction I> est exécutée.
 Si <Var 1> n'a aucune des valeurs indiquées, l'instruction <Instruction ELSE> est exécutée.
 Si la même instruction doit être exécutée pour plusieurs valeurs des variables, vous pouvez les
écrire l'une après l'autre en les séparant par des virgules, afin de conditionner l'exécution
courante.
 Si la même instruction doit être exécutée pour une plage de valeurs d'une variable, vous pouvez
écrire la valeur initiale et la valeur de fin séparées par deux points. Ainsi, vous pouvez
conditionner l'exécution courante.
Exemple
CASE INT1 OF
1, 5: BOOL1 := TRUE;
BOOL3 := FALSE;
2: BOOL2 := FALSE;
BOOL3 := TRUE;
10..20: BOOL1 := TRUE;
BOOL3:= TRUE;
ELSE
BOOL1 := NOT BOOL1;
BOOL2 := BOOL1 OR BOOL2;
END_CASE;
Boucle FOR
La boucle FOR permet de programmer des processus de manière répétée.
Syntaxe
INT_Var:INT;
FOR <INT_Var> := <INIT_VALUE> TO <END_VALUE> {BY <intervalle>} DO
<instructions>
END_FOR;
La partie entre accolades {} est facultative.
Les <instructions> sont exécutées tant que le compteur <INT_Var> ne dépasse pas
<END_VALUE>. Cette condition est vérifiée avant l'exécution des <instructions>, afin de ne pas
exécuter celles-ci si <INIT_VALUE> est supérieure à <END_VALUE>.
Lorsque les <instructions> sont exécutées, <INT_Var> est incrémenté de <intervalle>.
L'intervalle peut être une valeur entière quelconque. Si cette valeur n'est pas indiquée, elle est
définie sur 1. La boucle se termine lorsque <INT_Var> est supérieur à <END_VALUE>.
Exemple
388
EIO0000000069 02/2018
Editeur ST (Structured Text)
FOR Counter:=1 TO 5 BY 1 DO
Var1:=Var1*2;
END_FOR;
Erg:=Var1;
Supposons que la valeur par défaut de Var1 soit 1. Elle aura la valeur 32 après l'exécution de la
boucle FOR.
NOTE : Si <END_VALUE> est égal à la valeur limite du type de données de <INT_Var> (Counter
dans l'exemple ci-dessus), une boucle infinie est créée. Par exemple, si Counter est de type SINT
et que <END_VALUE> est 127 (valeur positive maximale d'une variable de type SINT), la boucle
ne peut jamais se terminer car l'ajout de 1 à cette valeur maximale produirait une variable négative
ne dépassant jamais les limites imposées par l'instruction FOR.
AVERTISSEMENT
BOUCLE INFINIE ENTRAINANT UN COMPORTEMENT INATTENDU DE L'EQUIPEMENT
Assurez-vous que le type de variable utilisé dans les instructions FOR présente une capacité
suffisante (une limite supérieure assez élevée) pour prendre en compte <END_VALUE> + 1.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Vous pouvez utiliser l'instruction CONTINUE dans une boucle FOR. Cette fonction correspond à une
extension de la norme IEC 61131-3.
Boucle WHILE
La boucle FOR constitue une alternative à la boucle WHILE ; elle exécute la boucle si une condition
booléenne est TRUE et tant qu'elle le reste. Si la valeur initiale de la condition n'est pas TRUE, la
boucle n'est pas exécutée. Si la condition dont la valeur initiale était TRUE devient FALSE, la
boucle prend fin.
Syntaxe
WHILE <expression booléenne> DO
<instructions>
END_WHILE;
Naturellement, l'expression booléenne initiale et en cours doit avoir la valeur FALSE à un moment
donné lors de l'exécution des instructions de la boucle. Sinon, la boucle ne prend jamais fin, ce qui
crée une condition de boucle infinie (sans fin).
EIO0000000069 02/2018
389
Editeur ST (Structured Text)
AVERTISSEMENT
BOUCLE INFINIE ENTRAINANT UN FONCTIONNEMENT INATTENDU DE L'EQUIPEMENT
Assurez-vous que la boucle WHILE se termine lors de l'exécution des instructions en créant une
condition FALSE de l'expression booléenne.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
L'exemple suivant présente des instructions entraînant la fin de la boucle :
WHILE Counter<>0 DO
Var1 := Var1*2;
Counter := Counter-1;
END_WHILE
L'instruction REPEAT n'est pas encore mise en œuvre. Le paragraphe (avec la modification) est
donc déplacé plus bas.
Vous pouvez utiliser l'instruction CONTINUE dans une boucle WHILE.
Boucle REPEAT
La boucle REPEAT constitue une seconde alternative à la boucle FOR, à l'instar de la boucle
WHILE. La boucle REPEAT est différente de la boucle WHILE, car la condition de sortie n'est
évaluée qu'à la fin de la boucle, après une exécution au moins de celle-ci.
Syntaxe
REPEAT
<instructions>
UNTIL <expression booléenne>
END_REPEAT;
Les <instructions> sont exécutées de manière répétée tant que <expression booléenne> renvoie
la valeur TRUE. Si <expression booléenne> est produite dès la première évaluation UNTIL, les
<instructions> sont exécutées une seule fois. L'<expression booléenne> doit avoir la valeur TRUE
un moment donné lors de l'exécution des instructions de la boucle. Sinon, la boucle ne prend
jamais fin, ce qui crée une condition de boucle infinie (sans fin).
390
EIO0000000069 02/2018
Editeur ST (Structured Text)
AVERTISSEMENT
BOUCLE INFINIE ENTRAINANT UN FONCTIONNEMENT INATTENDU DE L'EQUIPEMENT
Assurez-vous que la boucle REPEAT se termine lors de l'exécution des instructions en créant une
condition TRUE de l'expression booléenne.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
L'exemple suivant présente des instructions entraînant la fin de la boucle :
REPEAT
Var1 := Var1*2;
Counter := Counter-1;
UNTIL
Counter=0
END_REPEAT;
Vous pouvez utiliser l'instruction CONTINUE dans une boucle REPEAT. Cette fonction correspond
à une extension de la norme IEC 61131-3.
D'une certaine manière, les boucles WHILE et REPEAT sont plus puissantes que la boucle FOR, car
il n'est pas nécessaire de connaître le nombre de cycles pour les exécuter. Dans certains cas, vous
pourrez donc n'utiliser que ces deux types de boucle. Toutefois, si le nombre de cycles est défini,
une boucle FOR est préférable. En effet, dans la plupart des cas, elle exclut automatiquement les
boucles sans fin (consultez l'avertissement dans le FORparagraphe relatif à la boucle
(voir page 388)).
Instruction CONTINUE
Extension de la norme IEC 61131-3, l'instruction CONTINUE est prise en charge dans les boucles
FOR, WHILE et REPEAT. CONTINUE permet d'exécuter le cycle de boucle suivant.
Exemple
FOR Counter:=1 TO 5 BY 1 DO
INT1:=INT1/2;
IF INT1=0 THEN
CONTINUE; (* to avoid division by zero *)
END_IF
Var1:=Var1/INT1; (* only executed, if INT1 is not "0" *)
END_FOR;
Erg:=Var1;
EIO0000000069 02/2018
391
Editeur ST (Structured Text)
Instruction EXIT
L'instruction EXIT met fin à la boucle FOR, WHILE ou REPEAT à laquelle elle appartient, de façon
non conditionnelle.
Instruction JMP
Vous pouvez utiliser l'instruction JMP pour accéder de manière non conditionnelle à une ligne de
code identifiée par une étiquette de saut.
Syntaxe
JMP <étiquette>;
L'<étiquette> est un identificateur arbitraire, mais unique, placé au début d'une ligne de
programme. L'instruction JMP doit être suivie par l'indication de la destination qui doit correspondre
à une étiquette prédéfinie.
AVERTISSEMENT
BOUCLE INFINIE ENTRAINANT UN COMPORTEMENT INATTENDU DE L'EQUIPEMENT
Assurez-vous que l'utilisation de la boucle JMP est conditionnelle, afin qu'elle n'entraîne pas la
création d'une boucle infinie.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
L'exemple suivant présente des instructions qui créent des conditions logiques permettant d'éviter
qu'une boucle infinie entre le saut et sa destination :
aaa:=0;
_label1: aaa:=aaa+1;
(*instructions*)
IF (aaa < 10) THEN
JMP _label1;
END_IF;
Tant que la variable i, initialisée à 0, a une valeur inférieure à 10, l'instruction de saut dans
l'exemple ci-dessus entraîne un retour répété à la ligne du programme identifiée par _label1. Par
conséquent, les instructions comprises entre l'étiquette et l'instruction JMP sont traitées
indéfiniment. Etant donné que ces instructions incluent également l'incrémentation de la variable
i, la condition de saut est transgressée (lors de la neuvième vérification) et l'exécution du
programme se poursuit.
Vous pouvez également obtenir ce résultat en utilisant une boucle WHILE ou REPEAT dans
l'exemple. En général, les instructions de saut nuisent à la lisibilité du code.
392
EIO0000000069 02/2018
Editeur ST (Structured Text)
Commentaires dans ST
Pour écrire des commentaires dans un objet de texte structuré, deux possibilité sont offertes :
 Démarrez le commentaire par (* et fermez-le par *). Vous pouvez ainsi insérer des
commentaires occupant plusieurs lignes. Exemple : (*Ceci est un commentaire.*)
 Commentaire d'une ligne (extension de la norme IEC 61131-3) : // indique le début d'un
commentaire qui se termine à la fin de la ligne. Exemple : // Ceci est un commentaire.
Vous pouvez placer des commentaires à l'endroit de votre choix dans la partie déclaration ou
implémentation de l'éditeur ST.
Commentaires imbriqués : vous pouvez insérer des commentaires à l'intérieur de commentaires.
Exemple
(*
a:=inst.out; (* to be checked *)
b:=b+1;
*)
Dans cet exemple, le commentaire qui commence à la première parenthèse n'est pas fermé par
celle qui suit checked, mais par la dernière parenthèse.
EIO0000000069 02/2018
393
Editeur ST (Structured Text)
394
EIO0000000069 02/2018
SoMachine
Éditeurs d'objets
EIO0000000069 02/2018
Partie V
Éditeurs d'objets
Éditeurs d'objets
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
14
Éditeurs de déclaration
397
15
Editeur DTM (Device Type Manager)
405
16
Editeur DUT (Data Unit Type)
407
17
Editeur GVL (Global Variables List)
409
18
Editeur NVL (Network Variables List)
411
19
Editeur de tâche
437
20
Editeur de liste de surveillance
447
21
Outils dans les éditeurs de logiques
453
EIO0000000069 02/2018
395
Éditeurs d'objets
396
EIO0000000069 02/2018
SoMachine
Éditeurs de déclaration
EIO0000000069 02/2018
Chapitre 14
Éditeurs de déclaration
Éditeurs de déclaration
Présentation
L'éditeur de déclaration textuel permet de créer la partie de déclaration d'un objet POU. Il peut être
complété par une vue tabulaire. Toute modification effectuée dans l'une des vues est
immédiatement appliquée à l'autre vue.
Selon les paramètres actuels définis dans les options de l'éditeur de déclaration, seule la vue
textuelle ou tabulaire est disponible. Vous pouvez passer de l'une à l'autre grâce aux boutons
(Textuel / Tabulaire) situés dans le bord droit dans la fenêtre de l'éditeur.
Généralement, l'éditeur de déclaration est utilisé en combinaison avec les éditeurs de langage de
programmation. Cela signifie qu'il sera placé dans la partie supérieure de la fenêtre qui s'ouvre
lorsque vous vous apprêtez à modifier ou afficher (surveillance) un objet en mode en ligne ou hors
ligne. L'en-tête de déclaration décrit le type de POU (par exemple : PROGRAMME,
BLOC_FONCTION, FONCTION). Il peut être étendu par des attributs de pragmas globaux POU.
Le mode en ligne de l'éditeur de déclaration (voir page 403) est structuré comme celui d'une vue
de surveillance.
La déclaration de variable s'effectue aussi dans les Listes de variables globales et Types d'unités
de données, qui sont créés dans des éditeurs séparés.
Reportez-vous également au chapitre Déclaration des variables (voir page 541).
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Éditeur de déclaration textuel
398
Éditeur de déclaration tabulaire
399
Editeur de déclaration en mode en ligne
403
EIO0000000069 02/2018
397
Éditeurs de déclaration
Éditeur de déclaration textuel
Présentation
Vue de l'éditeur textuel
Le comportement et l'aspect sont déterminés par les paramètres actuels de l'éditeur de texte
correspondant dans les boîtes de dialogue Options et Personnaliser. Vous pouvez ici définir les
paramètres par défaut concernant la couleur de la surbrillance, les numéros de ligne, les onglets,
la mise en retrait et bien d'autres options. Les fonctions de modification habituelles, telles que la
fonction copier-coller, sont disponibles. Vous pouvez effectuer une sélection par bloc en appuyant
sur la touche ALT tout en sélectionnant la zone de texte souhaitée avec la souris.
398
EIO0000000069 02/2018
Éditeurs de déclaration
Éditeur de déclaration tabulaire
Présentation
Vue de l'éditeur tabulaire
La vue tabulaire de l'éditeur contient les colonnes permettant les définitions habituelles de la
déclaration de variable (voir page 541) : Portée, Nom, Adresse, Type de données, Initialisation,
Commentaire et (pragma) Attributs. Les déclarations spécifiques sont insérées sous forme de
lignes numérotées.
Pour ajouter une nouvelle ligne de déclaration au-dessus d'une ligne existante, sélectionnez
d'abord cette ligne puis exécutez la commande
contextuel.
Insérer dans la barre d'outils ou le menu
Pour ajouter une nouvelle déclaration à la fin de la table, cliquez juste après la dernière ligne de
déclaration existante et utilisez également la commande Insérer.
Par défaut, la déclaration nouvellement insérée utilise d'abord la portée VAR et le type de données
que vous venez de saisir. Le champ de saisie de la variable obligatoire Nom s'ouvre automatiquement. Entrez un identifiant valide et fermez le champ en appuyant sur la touche ENTREE ou
en cliquant sur une autre partie de la vue.
Double-cliquez sur une cellule de la table pour accéder aux fonctionnalités appropriées de saisie
d'une valeur.
Double-cliquez sur la Portée pour ouvrir une liste dans laquelle vous pouvez choisir la portée
souhaitée et le mot-clé d'attribut de portée (indicateur).
Saisissez directement le Type de données ou cliquez sur le bouton > pour utiliser l'Assistant de
saisie ou l'Assistant de tableau.
Saisissez directement la valeur d'Initialisation ou cliquez sur le bouton ... pour ouvrir la boîte de
dialogue Valeur d'initialisation. Cette fonctionnalité est notamment utile en cas de variables
structurées.
Chaque variable est déclarée sur une ligne séparée, les lignes étant numérotées.
Vous pouvez changer l'ordre des lignes (numéros de ligne) en sélectionnant une ligne et en la
déplaçant d'un cran vers le haut ou vers le bas par l'intermédiaire de la commande
vers le haut ou
EIO0000000069 02/2018
Déplacer
Déplacer vers le bas de la barre d'outils ou du menu contextuel.
399
Éditeurs de déclaration
Vous pouvez trier la liste des déclarations dans chacune des colonnes en cliquant sur l'en-tête de
la colonne appropriée. La colonne qui détermine l'ordre actuel est indiquée par un symbole de
flèche :
flèche vers le haut = ordre croissant
flèche vers le bas = ordre décroissant
Chaque clic suivant dans l'en-tête de colonne permet de basculer entre l'ordre croissant et l'ordre
décroissant.
Pour supprimer une ou plusieurs déclarations, sélectionnez les lignes adéquates et appuyez sur
la touche SUPPR, ou exécutez la commande Supprimer dans le menu contextuel ou cliquez sur
le bouton
dans la barre d'outils.
Valeur d'initialisation
Boîte de dialogue Valeur d'initialisation
Les Expressions de la variable sont affichées avec les valeurs d'initialisation actuelles.
Sélectionnez les variables souhaitées et modifiez la valeur d'initialisation dans le champ situé sous
la liste. Cliquez ensuite sur le bouton Appliquer la valeur sur les lignes sélectionnées. Pour
restaurer les initialisations par défaut, cliquez sur le bouton Réinitialiser les lignes sélectionnées
aux valeurs par défaut.
Appuyez sur CTRL + ENTREE pour insérer des sauts de ligne dans l'entrée Commentaire.
400
EIO0000000069 02/2018
Éditeurs de déclaration
Modifier l'en-tête de déclaration
Vous pouvez modifier l'en-tête de déclaration dans la boîte de dialogue Modifier la partie
déclaration. Ouvrez-le en cliquant sur la barre d'en-tête de l'éditeur (PROGRAM PLC_PRG dans
la figure ci-dessus) ou via la commande Modifier la partie déclaration.
Boîte de dialogue Modifier la partie déclaration
La boîte de dialogue Modifier la partie déclaration fournit les éléments suivants :
Elément
Description
Déclaration
Permet d'insérer le type (depuis la liste de sélection) et le nom de l'objet POU.
Commentaire
Permet d'insérer un commentaire. Appuyez sur CTRL + ENTREE pour insérer des
sauts de ligne.
Attributs
Ouvre la boîte de dialogue Attributs (voir plus bas dans ce chapitre) pour l'insertion des
pragmas et attributs.
EIO0000000069 02/2018
401
Éditeurs de déclaration
Attributs
Dans la boîte de dialogue Modifier la partie déclaration, cliquez sur le bouton Attributs... pour ouvrir
la boîte de dialogue Attributs. Vous pouvez alors entrer de nombreux attributs et pragmas au
format texte. Insérez-les sans accolades {} ; utilisez une ligne séparée pour chacune. Pour
l'exemple présenté sur l'image suivante, consultez la vue textuelle correspondante au-dessus
dans le graphique de la vue de l'éditeur textuel (voir page 398).
Boîte de dialogue Attributs
402
EIO0000000069 02/2018
Éditeurs de déclaration
Editeur de déclaration en mode en ligne
Présentation
Une fois la connexion au contrôleur établie, chaque objet qui a été préalablement ouvert dans une
fenêtre en mode hors ligne s'affiche automatiquement dans la vue en ligne.
La vue en ligne de l'éditeur de déclaration présente une table similaire à celle utilisée dans les vues
de surveillance (voir page 451). La ligne d'en-tête affiche le chemin d'objet <nom_équipement>.<nom_application>.<nom_objet>. La table de chaque expression de surveillance affiche
le type et le valeur actuelle, mais aussi, si elle est définie, une valeur préparée à des fins de forçage
ou d'écriture. S'ils sont disponibles, une Adresse et/ou un Commentaire IEC directement attribués
sont affichés dans les autres colonnes.
Afin d'établir une valeur préparée pour une variable, utilisez la boîte de dialogue Préparer la valeur
ou cliquez sur le champ attribué de la colonne Valeur préparée et saisissez directement la valeur
souhaitée. En cas d'énumérations, une liste indiquant les valeurs d'énumération s'ouvre pour
permettre la sélection d'une valeur. En cas de variable booléenne, l'opération est encore plus
simple.
Vous pouvez faire basculer des valeurs de préparation booléennes à l'aide des touches RETOUR
ou ESPACE en respectant l'ordre suivant :
 Si la valeur est VRAI , les étapes de préparation sont FAUX -> VRAI -> rien.
 Si la valeur est FAUX, les étapes de préparation sont VRAI -> FAUX -> rien.
Si une expression de surveillance (variable) est un type structuré (par exemple, une instance d'un
bloc fonction ou une variable de matrice), alors un signe plus ou moins précède l'expression. Avec
un clic de souris sur ce signe, les éléments particuliers de l'objet instancié peuvent être en plus
affichés (voir fbinst dans l'image suivante) ou masqués (voir aVar). Les icônes indiquent si la
variable est une entrée
, une sortie
ou une variable ordinaire
.
Lorsque vous pointez avec le curseur sur une variable dans la partie d'implémentation, une infobulle affiche la déclaration et le commentaire de la variable. Consultez l'image suivante présentant
l'éditeur de déclaration dans la partie supérieure d'un objet de programme PLC_PRG en vue en
ligne :
EIO0000000069 02/2018
403
Éditeurs de déclaration
Vue en ligne de l'éditeur de déclaration
404
EIO0000000069 02/2018
SoMachine
Editeur DTM (Device Type Manager)
EIO0000000069 02/2018
Chapitre 15
Editeur DTM (Device Type Manager)
Editeur DTM (Device Type Manager)
Editeur DTM
Présentation
La vue de l'éditeur DTM dépend du Device Type Manager.
EIO0000000069 02/2018
405
Editeur DTM (Device Type Manager)
Le graphique fournit un exemple d'éditeur DTM.
Pour plus d'informations sur les DTM, reportez-vous au SoMachine Device Type Manager (DTM)
Guide de l'utilisateur (voir SoMachine, Device Type Manager (DTM), Guide utilisateur).
Pour obtenir la liste des versions DTM actuellement prises en charge par SoMachine, consultez
les Notes de publication de votre installation SoMachine.
406
EIO0000000069 02/2018
SoMachine
Editeur DUT (Data Unit Type)
EIO0000000069 02/2018
Chapitre 16
Editeur DUT (Data Unit Type)
Editeur DUT (Data Unit Type)
Editeur DUT (Data Unit Type)
Présentation
Vous pouvez créer des types de données (voir page 624) définis par l'utilisateur dans
l'éditeur DUT (Data Unit Type). Il s'agit d'un éditeur de texte dont le comportement est conforme
aux options d'éditeur de texte actuellement définies.
L'éditeur DUT s'ouvre automatiquement dans une fenêtre lorsque vous ajoutez un objet DUT dans
la boîte de dialogue Ajouter l'objet. Dans ce cas, il fournit par défaut la syntaxe d'une déclaration
de structure étendue. Si vous le souhaitez, vous pouvez l'utiliser pour entrer une déclaration de
structure simple ou pour entrer la déclaration d'une autre unité de type de données, telle qu'une
énumération.
L'éditeur s'ouvre également lorsque vous ouvrez un objet DUT actuellement sélectionné dans la
vue de POU.
Fenêtre de l'éditeur DUT
EIO0000000069 02/2018
407
Editeur DUT (Data Unit Type)
408
EIO0000000069 02/2018
SoMachine
Editeur GVL (Global Variables List)
EIO0000000069 02/2018
Chapitre 17
Editeur GVL (Global Variables List)
Editeur GVL (Global Variables List)
Editeur GVL
Présentation
L'éditeur GVL est un éditeur de déclaration permettant d'éditer des listes de variables globales.
L'éditeur GVL fonctionne comme l'éditeur de déclaration et reprend les options, hors ligne et en
ligne, définies pour l'éditeur de texte. La déclaration commence par VAR_GLOBAL et se termine
par END_VAR. Ces mots-clés sont fournis automatiquement. Insérez des déclarations de variables
globales valides entre ces mots-clés.
Editeur GVL
EIO0000000069 02/2018
409
Editeur GVL (Global Variables List)
410
EIO0000000069 02/2018
SoMachine
Editeur NVL (Network Variables List)
EIO0000000069 02/2018
Chapitre 18
Editeur NVL (Network Variables List)
Editeur NVL (Network Variables List)
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
18.1
Informations sur l'éditeur NVL
412
18.2
Informations générales sur les variables de réseau
413
EIO0000000069 02/2018
411
Editeur NVL (Network Variables List)
Sous-chapitre 18.1
Informations sur l'éditeur NVL
Informations sur l'éditeur NVL
Editeur de liste de variables de réseau
Présentation
L'éditeur NVL est un éditeur de déclaration permettant d'éditer des listes de variables de réseau.
L'éditeur NVL fonctionne comme l'éditeur de déclaration et reprend les options, hors ligne et en
ligne, définies pour l'éditeur de texte. La déclaration commence par VAR_GLOBAL et se termine
par END_VAR. Ces mots-clés sont fournis automatiquement. Insérez des déclarations de variables
(voir page 539) valides entre ces mots-clés.
Editeur NVL
412
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Sous-chapitre 18.2
Informations générales sur les variables de réseau
Informations générales sur les variables de réseau
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Introduction à la liste de variables de réseau (NVL)
414
Configuration de l'échange de variables de réseau
418
Règles des listes de variables de réseau (NVL)
423
Etat de fonctionnement de l'expéditeur et du récepteur
425
Exemple
426
Compatibilité
432
EIO0000000069 02/2018
413
Editeur NVL (Network Variables List)
Introduction à la liste de variables de réseau (NVL)
Présentation
La liste de variables de réseau (NVL) se présente sous la forme d'une liste fixe de variables
pouvant être envoyées ou reçues via un réseau de communication. Elle permet d'échanger des
données dans un réseau via des variables de réseau, si le contrôleur (système cible) prend en
charge l'opération.
La liste doit être définie dans le contrôleur expéditeur et le contrôleur récepteur (et peut figurer
dans un ou plusieurs projets). Ses valeurs sont transmises par la diffusion de datagrammes UDP
(User Datagram Protocol). UDP est un protocole de communication Internet sans connexion, défini
par l'IETF RFC 768. Il facilite la transmission directe de datagrammes sur des réseaux IP (Internet
Protocol). Les messages UDP/IP n'attendent pas de réponse. De ce fait, ils sont particulièrement
adaptés aux applications dans lesquelles aucune retransmission des paquets envoyés n'est
nécessaire (comme dans la vidéo en continu ou les réseaux exigeant des performances en temps
réel).
La NVL est une puissante fonctionnalité de SoMachine. Elle vous permet de partager et de
surveiller les données entre des contrôleurs et leurs applications. Cependant, il n'y a aucune
restriction sur le rôle des données échangées entre les contrôleurs. Elles peuvent servir à
verrouiller une machine ou un processus, voire à modifier l'état d'un contrôleur.
En tant que concepteur et/ou programmeur de l'application, vous êtes la seule personne à
connaître l'ensemble des conditions et facteurs présents pendant le fonctionnement de la machine
ou du processus. Vous seul pouvez déterminer les stratégies de communication, les verrouillages
et les sécurités nécessaires pour pouvoir échanger des données entre des contrôleurs grâce à
cette fonctionnalité. Surveillez attentivement ce type de fonctionnalité de communication et vérifiez
que la conception de la machine ou du processus n'expose pas les biens et les personnes à des
risques de sécurité.
414
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
AVERTISSEMENT
FONCTIONNEMENT NON INTENTIONNEL DE LA MACHINE DU A UNE COMMUNICATION
INCORRECTE





Vous devez tenir compte des modes de défaillances potentiels des canaux de commande et,
pour certaines fonctions de contrôle critiques, prévoir un moyen d'assurer la sécurité en
maintenant un état sûr pendant et après une défaillance, qu'il s'agisse d'une coupure de
courant et d'un redémarrage du système.
Des canaux de commande séparés ou redondants doivent être prévus pour les fonctions de
commande critiques.
Soyez particulièrement attentif aux implications des délais de transmission non prévus et des
défauts de liaison.
Respectez toutes les réglementations de prévention des accidents, ainsi que les réglementations de sécurité locales.
Chaque mise en œuvre d'un équipement utilisant cette fonctionnalité doit être testée pour
s'assurer de son bon fonctionnement avant la mise en service.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Vous pouvez utiliser les blocs fonction de Diagnostic (voir SoMachine, Configuration de variables
de réseau, Guide de la bibliothèque SE_NetVarUdp) et de Gestion des erreurs (voir SoMachine,
Configuration de variables de réseau, Guide de la bibliothèque SE_NetVarUdp) ainsi que les
paramètres des propriétés de réseau pour contrôler le fonctionnement, l'état et l'intégrité des
communications utilisant cette fonctionnalité. Cette dernière a été conçue pour le partage et la
surveillance des données. Elle ne peut pas être utilisée pour des fonctions de contrôle critiques.
Liste de variables de réseau (NVL)
Les variables de réseau à échanger sont définies dans les deux types de listes suivants :
des listes de variables globales (GVL) dans un contrôleur expéditeur ;
 des listes de variables de réseau globales (GNVL) dans un contrôleur récepteur.

Les GVL et GNVL correspondantes contiennent les mêmes déclarations de variables. Vous
pouvez afficher leur contenu dans l'éditeur approprié en double-cliquant sur le nœud GVL ou
GNVL dans le volet Appareils.
Une GVL contient les variables de réseau d'un expéditeur. Les paramètres de protocole et de
transmission sont définis dans les Propriétés réseau de l'expéditeur. Conformément à ces
paramètres, les valeurs des variables sont diffusées au sein du réseau. Elles peuvent être reçues
par tous les contrôleurs qui ont une GNVL correspondante.
NOTE : pour qu'un échange de variables de réseau ait lieu, les bibliothèques de réseau
respectives doivent être installées. Cette opération s'effectue automatiquement pour le type de
réseau standard UDP dès que les propriétés réseau d'une GVL sont définies.
EIO0000000069 02/2018
415
Editeur NVL (Network Variables List)
Les variables réseau sont envoyées de la GVL (expéditeur) à une ou plusieurs GNVL (récepteurs).
Pour chaque contrôleur, vous pouvez définir des GVL et des GNVL. Ainsi, chaque contrôleur peut
se comporter comme un expéditeur ou un récepteur.
Une GVL d'expéditeur peut être fournie par le même projet ou un autre projet. Ainsi, lors de la
création d'une GNVL, la GVL (expéditeur) peut être choisie dans la liste des GVL disponibles dans
le réseau, ou lue dans un fichier d'exportation généré précédemment (par exemple, à l'aide de la
boîte de dialogue Lien avec fichier) à partir de la GVL.
NOTE : Le fichier d'exportation est nécessaire si la GVL (expéditeur) à utiliser est définie dans un
autre projet.
Éléments à prendre en compte pour la NVL
Le tableau ci-dessous montre les contrôleurs qui prennent en charge la fonctionnalité de liste de
variables de réseau (NVL) :
Nom de la fonction
M238
Liste de variables de réseau Non
M241
M251
M258
LMC058
XBTGC
XBT GK
XBT GT
ATV IMC
Oui
Oui
Oui
Oui
Oui*
*L'ATV IMC ne prend en charge la NVL que dans les tâches à exécution libre.
416
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Cette figure montre un réseau constitué d'un expéditeur et de 7 récepteurs (nombre maximum
recommandé) :
Contrôleur expéditeur A : expéditeur avec la liste de variables globales (GVL) et le contrôleur récepteur avec
les listes de variables de réseau globales (GNVL)
Contrôleurs récepteurs 1 à 7 : récepteurs (avec GNVL) de A et contrôleur expéditeur (GVL) uniquement
pour A
EIO0000000069 02/2018
417
Editeur NVL (Network Variables List)
Configuration de l'échange de variables de réseau
Présentation
Pour pouvoir échanger des variables de réseau, deux contrôleurs (un expéditeur et un récepteur)
doivent être disponibles dans l'arborescence Equipements de SoMachine. Ces contrôleurs sont
configurés avec les propriétés réseau décrites ci-après.
Pour configurer la liste des variables de réseau, procédez comme suit :
Étape
1
Action
Créez un contrôleur expéditeur et un contrôleur récepteur dans l'arborescence Equipements.
2
Créez un programme (POU) pour le contrôleur expéditeur et le contrôleur récepteur.
3
Ajoutez une tâche pour le contrôleur expéditeur et le contrôleur récepteur.
NOTE : Pour garantir des performances transparentes, attribuez à la tâche dédiée à la NVL
une priorité supérieure à 25 et régulez les communications afin d'éviter toute saturation
superflue du réseau.
4
Définissez la liste des variables globales (GVL) de l'expéditeur.
5
Définissez la liste des variables de réseau globales (GNVL) du récepteur.
Un exemple plus détaillé est disponible dans l'Annexe (voir page 426).
418
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Liste de variables globales
Pour créer la GVL de l'expéditeur, définissez les propriétés réseau suivantes dans la boîte de
dialogue GVL → Propriétés → Propriétés réseau :
Description des paramètres
Paramètre
Valeur par défaut
Description
Type de réseau
UDP
Seul le type de réseau standard UDP est disponible.
Pour modifier les valeurs de Broadcast Adr. et de Port, cliquez sur le
bouton Paramètres....
Tâche
MAST
Sélectionnez la tâche que vous avez configurée, sous l'élément
Configuration de tâche, pour exécuter le code de la NVL.
Pour maintenir la transparence des performances, il est recommandé
de configurer un Intervalle supérieur ou égal à 50 ms pour cette tâche.
NOTE : Pour garantir des performances transparentes, attribuez à la
tâche dédiée à la NVL une priorité supérieure à 25 et régulez les
communications afin d'éviter toute saturation superflue du réseau.
Identificateur de liste
de variables
EIO0000000069 02/2018
1
Entrez un numéro unique pour chaque GVL sur le réseau. Il permet
aux récepteurs d'identifier la liste des variables (voir page 424).
419
Editeur NVL (Network Variables List)
Paramètre
Valeur par défaut
Description
Compacter les
variables
Activée
Lorsque cette option est activée, les variables sont regroupées en
paquets (datagrammes) en vue de leur transmission.
Lorsque cette option est désactivée, un paquet par variable est
transmis.
Transmettre le total de
contrôle
Désactivée
Activez cette option pour ajouter un total de contrôle à chaque paquet
de variables pendant la transmission.
Les récepteurs vérifient alors le total de contrôle de chaque paquet
qu'ils reçoivent, et rejettent ceux dont le total de contrôle ne
correspond pas. Une notification est envoyée avec le paramètre
(voir SoMachine, Configuration de variables de réseau, Guide de la
bibliothèque SE_NetVarUdp) NetVarError_CHECKSUM.
Confirmation
Désactivée
Activez cette option pour demander au récepteur d'envoyer un
message de confirmation pour chaque paquet de données qu'il a reçu.
Une notification est envoyée avec le paramètre (voir SoMachine,
Configuration de variables de réseau, Guide de la bibliothèque
SE_NetVarUdp) NetVarError_ACKNOWLEDGE si l'expéditeur ne
reçoit pas cette confirmation de la part du récepteur avant qu'il
n'envoie le paquet de données suivant.
Transmission cyclique
 Intervalle
Transmission en cas
de modification
 Écart minimum
Activée
Activez cette option pour effectuer des transmissions cycliques selon
l'Intervalle spécifié.
Cet Intervalle doit être un multiple du temps de cycle que vous avez
défini dans la tâche d'exécution du code de la NVL pour obtenir un
temps de transmission précis des variables de réseau.
Désactivée
Activez cette option pour transmettre les variables dont la valeur a
changé.
 T#20ms
NOTE : Après le premier téléchargement ou l'exécution de la
commande Reset froid ou Reset chaud en mode En ligne, les
contrôleurs récepteurs ne sont pas mis à jour et conservent leur
dernière valeur, tandis que le contrôleur expéditeur prend la valeur 0
(zéro).
Le paramètre Écart minimum définit le délai minimum à respecter
entre deux transferts de données.
Transmission
déclenchée par
événement
 Variable
Désactivée
 –
Activez cette option pour transmettre des variables tant que la Variable
spécifiée a pour valeur TRUE. Cette variable est contrôlée à chaque
cycle de la tâche d'exécution du code de la NVL.
Description du bouton Paramètres...
Paramètre
Valeur par défaut
Description
Port
1202
Entrez un numéro de port unique (≥ 1202) pour chaque expéditeur
de GVL.
Broadcast Adr.
255.255.255.255
Entrez une adresse IP de diffusion pour votre application.
420
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Liste de variables de réseau globales (GNVL)
Une liste de variables de réseau globales ne peut être ajoutée que dans l'arborescence Appareils.
Elle définit des variables qui sont spécifiées comme des variables de réseau dans un autre
contrôleur du réseau.
Ainsi, un objet GNVL ne peut être ajouté à une application que si une liste de variables
globales (GVL) avec des propriétés réseau (liste de variables de réseau) a été créée dans l'un des
autres contrôleurs du réseau. Ces contrôleurs peuvent appartenir au même projet ou à des projets
différents.
Pour créer la GNVL, définissez les paramètres suivants dans la boîte de dialogue Ajouter un objet
→ Liste de variables de réseau globales :
Description des paramètres
Paramètre
Valeur par défaut
Description
Nom
NVL
Indiquez le nom de la GNVL.
Tâche
Tâche définie dans
le nœud
Configuration de
tâche de cette
Application
Sélectionnez une tâche dans la liste de celles qui recevront les trames
émanant de l'expéditeur et qui sont disponibles sous le nœud
Configuration de tâche du contrôleur récepteur.
EIO0000000069 02/2018
421
Editeur NVL (Network Variables List)
Paramètre
Valeur par défaut
Description
Expéditeur
1 des GVL
disponibles dans le
projet
Sélectionnez la GVL de l'expéditeur dans la liste de toutes les GVL
d'expéditeur, avec les propriétés réseau actuellement disponibles
dans le projet.
Sélectionnez l'entrée Importation à partir du fichier dans la liste pour
utiliser une GVL d'un autre projet. Ceci active le paramètre Importation
à partir du fichier : ci-dessous.
Importation à partir du
fichier:
–
Ce paramètre n'est disponible que si vous avez sélectionné l'option
Importation à partir du fichier pour le paramètre Expéditeur.
Le bouton ... ouvre une fenêtre standard de l'Explorateur Windows, qui
vous permet de naviguer jusqu'au fichier d'exportation *.gvl que vous
avez créé à partir d'une GVL dans un autre projet.
Pour plus d'informations, reportez-vous au paragraphe Comment
ajouter une GNVL d'un autre projet ci-dessous.
Comment ajouter une GNVL dans le même projet
Lorsque vous ajoutez une GNVL à l'aide de la boîte de dialogue Ajouter un objet, toutes les GVL
appropriées qui sont trouvées dans le projet pour le réseau concerné sont répertoriées dans la
zone de liste Expéditeur. Les GVL d'autres projets doivent être importées (reportez-vous au
paragraphe Comment ajouter une GNVL d'un autre projet ci-dessous).
Suite à cette sélection, chaque GNVL du contrôleur actuel (expéditeur) est liée à une GVL
spécifique dans un autre contrôleur (récepteur).
De plus, vous devez définir un nom et une tâche chargée de gérer les variables de réseau, lors de
l'ajout de la GNVL.
Comment ajouter une GNVL d'un autre projet
Au lieu de choisir directement une GVL d'expéditeur d'un autre contrôleur, vous pouvez également
spécifier un fichier d'exportation de GVL que vous avez généré à partir de la GVL à l'aide des
propriétés Lien avec fichier. Ceci vous permet d'utiliser une GVL définie dans un autre projet.
Pour ce faire, sélectionnez l'option Importation à partir du fichier dans le paramètre Expéditeur : et
spécifiez le chemin dans le paramètre Importation à partir du fichier :.
Ces paramètres sont modifiables ultérieurement dans la boîte de dialogue Propriétés - GVL.
Propriétés de GNVL
Si vous double-cliquez sur une GNVL dans l'arborescence Appareils, son contenu s'affiche à
droite dans un éditeur. Sachez toutefois que le contenu de la GNVL n'est pas modifiable. Ce qui
s'affiche n'est qu'une référence au contenu de la GVL correspondante. Le nom exact et le chemin
de l'expéditeur contenant la GVL correspondante sont indiqués en haut du volet de l'éditeur, avec
le type de protocole réseau utilisé. Si la GVL correspondante est modifiée, le contenu de la GNVL
est mis à jour en conséquence.
422
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Règles des listes de variables de réseau (NVL)
Règles relatives à la quantité de données
En raison de certaines limitations de performances, respectez les règles suivantes :
Nombre
Règle
1
La transmission de données entre une GVL (expéditeur) et une GNVL (récepteur) ne doit pas dépasser
200 octets.
2
L'échange de données entre plusieurs GVL (expéditeurs) d'un même contrôleur et leurs GNVL
associées (récepteurs) ne doit pas dépasser 1000 octets de variables.
Règles relatives au nombre de datagrammes
Pour limiter la durée maximale du cycle des tâches d'une NVL, respectez les recommandations
suivantes :
Nombre
Règle
Description
1
Limitez le nombre de datagrammes
reçus par cycle à 20.
Lorsque cette limite est dépassée, les datagrammes restants
sont traités lors du cycle suivant. Une notification Dépassement
de réceptions est consignée dans les données de diagnostic
(voir SoMachine, Configuration de variables de réseau, Guide
de la bibliothèque SE_NetVarUdp).
Un datagramme peut contenir jusqu'à 256 octets. Cela signifie
que vous ne devez pas dépasser la limite de 5120 octets de
données reçues par un récepteur.
2
Limitez le nombre de datagrammes
émis par cycle à 20.
Lorsque cette limite est dépassée, les datagrammes restants
sont traités lors du cycle suivant. Une notification Dépassement
d'émissions est consignée dans les données de diagnostic
(voir SoMachine, Configuration de variables de réseau, Guide
de la bibliothèque SE_NetVarUdp).
Un datagramme peut contenir jusqu'à 256 octets. Cela signifie
que vous ne devez pas dépasser la limite de 5120 octets de
données émises par un contrôleur expéditeur.
Si le nombre de datagrammes reçus/émis par cycle dépasse la limite plusieurs fois, les
événements suivants risquent de se produire :
 perte de datagrammes UDP (User Datagram Protocol) ;
 échange incohérent de variables.
Adaptez les paramètres suivants à vos besoins :
durée du cycle du contrôleur expéditeur
 durée du cycle du contrôleur récepteur
 nombre d'expéditeurs dans le réseau

EIO0000000069 02/2018
423
Editeur NVL (Network Variables List)
AVIS
PERTE DE DONNEES
Testez soigneusement l'application pour vérifier la transmission et la réception des datagrammes
UDP avant de mettre votre système en service.
Le non-respect de ces instructions peut provoquer des dommages matériels.
Nombre maximum de GVL (expéditeurs)
Définissez au maximum 7 GVL par contrôleur (expéditeur) pour maintenir la transparence des
performances.
Règles relatives aux durées des cycles de tâche des GVL (expéditeurs) et des GNVL (récepteurs)
Afin d'éviter toute saturation en réception, vous devez définir pour la tâche qui gère la transmission
de la GVL une durée de cycle au moins double de celle de la tâche qui gère la réception de la
GNVL.
Règles relatives à la protection de l'identificateur de liste
La fonction NVL inclut une vérification de l'identificateur de liste :
Cet identificateur permet d'éviter qu'une GVL (expéditeur) émanant de deux contrôleurs distincts
avec le même identificateur de liste (boîte de dialogue GVL → Propriétés → Identificateur de liste
de variables :) envoie des datagrammes à la même liste de variables de réseau globales (GNVL)
d'un contrôleur. Si l'Identificateur de liste de variables n'est pas unique, l'échange des variables
peut être interrompu.
AVIS
PERTE DE COMMUNICATION
Vérifiez que l'identificateur de liste n'est utilisé que par une adresse IP dans le réseau.
Le non-respect de ces instructions peut provoquer des dommages matériels.
La fonction de vérification de l'identificateur de liste est mise en œuvre dans le contrôleur
récepteur.
Si une GNVL (récepteur) détecte que deux adresses IP différentes utilisent le même identificateur
de liste, le récepteur interrompt immédiatement la réception des datagrammes.
De plus, une notification est générée dans le bloc fonction NETVARGETDIAGINFO. Les adresses
IP des deux expéditeurs sont indiquées dans les paramètres de sortie dwDuplicateListIdIp1
et dwDuplicateListIdIp de ce bloc fonction (voir SoMachine, Configuration de variables de
réseau, Guide de la bibliothèque SE_NetVarUdp).
424
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Avec le bloc fonction NETVARRESETERROR, les erreurs de NVL détectées sont réinitialisées et la
communication est relancée.
Etat de fonctionnement de l'expéditeur et du récepteur
Etat de fonctionnement
Etat de fonctionnement de...
Comportement des variables de réseau
Expéditeur
Récepteur
RUN
RUN
Des variables de réseau sont échangées entre
l'expéditeur et le récepteur.
STOP
RUN
L'expéditeur n'envoie plus de variables au récepteur.
Aucune variable de réseau n'est échangée entre
l'expéditeur et les récepteurs.
RUN
STOP
Le récepteur ne traite pas les variables de réseau
envoyées par l'expéditeur.
Lorsque le récepteur reprend l'état RUN, les variables
de réseau sont de nouveau traitées par ce dernier.
STOP
STOP
Aucune variable n'est échangée.
NOTE : Plusieurs erreurs d'initialisation de communication (NetVarError_INITCOMM) sont
détectées lorsque vous faites passer l'expéditeur de l'état STOP à l'état RUN.
Événements dans la tâche qui gère la NVL
Si les événements suivants surviennent dans la tâche qui gère la NVL, le comportement attendu
de la NVL est le même que si le contrôleur était en mode STOP dans le tableau ci-dessus :
 Une exception survient dans l'application qui suspend la tâche.
 Un point d'arrêt est rencontré ou un cycle est en cours de traitement dans la tâche.
EIO0000000069 02/2018
425
Editeur NVL (Network Variables List)
Exemple
Vue d'ensemble
Dans l'exemple suivant, un échange simple de variables de réseau est défini. Une liste de
variables globales (GVL) est créée dans le contrôleur expéditeur. Une liste de variables de réseau
globales (GNVL) correspondante est créée dans le contrôleur récepteur.
Effectuez les opérations ci-dessous dans un projet standard où un contrôleur expéditeur
Dev_Sender et un contrôleur récepteur Dev_Receiver sont disponibles dans l'arborescence
Appareils :
 Créez une POU (programme) prog_sender sous le nœud Application de Dev_Sender.
 Sous le nœud Configuration de tâche de cette application, ajoutez la tâche Task_S qui appelle
prog_sender.
 Créez une POU (programme) prog_rec sous le nœud Application de Dev_Receiver.
 Sous le nœud Configuration de tâche de cette application, ajoutez la tâche Task_R qui appelle
prog_rec.
NOTE : les deux contrôleurs doivent être configurés dans le même sous-réseau du réseau
Ethernet.
426
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Définition de la GVL de l'expéditeur
Étape 1 : définition d'une liste de variables globales dans le contrôleur expéditeur :
Etape
Action
Commentaire
1
Dans le volet Appareils, cliquez avec le bouton droit La boîte de dialogue Ajouter Liste de variables
de la souris sur le nœud Application du contrôleur globales s'ouvre.
Dev_Sender et sélectionnez Ajouter un objet →
Liste de variables globales....
2
Saisissez GVL_Sender dans le champ Nom et
cliquez sur Ouvrir pour créer une liste de variables
globales.
3
Dans l'éditeur situé à droite, entrez les définitions de –
variable suivantes :
VAR_GLOBAL iglobvar:INT; bglobvar:BOOL; strglobvar:STRING; END_VAR
EIO0000000069 02/2018
Le nœud GVL_Sender apparaît sous le nœud
Application dans le volet Appareils, et l'éditeur
s'ouvre dans la partie droite.
427
Editeur NVL (Network Variables List)
Étape 2 : définition des propriétés réseau de la GVL de l'expéditeur :
Etape
428
Action
Commentaire
1
Dans le volet Appareils, cliquez avec le bouton droit La boîte de dialogue Propriétés - GVL_Sender
de la souris sur le nœud GVL_Sender et
s'ouvre.
sélectionnez Propriétés....
2
Ouvrez l'onglet Propriétés réseau et configurez les
paramètres comme indiqué ci-après :
–
3
Cliquez sur OK.
La boîte de dialogue se referme. Les propriétés
réseau de la GVL sont configurées.
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Définition de la GNVL du récepteur
Étape 1 : définition d'une liste de variables de réseau globales dans le contrôleur récepteur :
Etape
Action
Commentaire
1
Dans le volet Appareils, cliquez avec le bouton droit La boîte de dialogue Ajouter Liste de variables de
de la souris sur le nœud Application du contrôleur réseau global s'ouvre.
Dev_Receiver et sélectionnez Ajouter un objet →
Liste de variables de réseau globales....
2
Configurez les paramètres comme indiqué cidessous.
EIO0000000069 02/2018
Cette liste de variables de réseau globales est
l'équivalent de la GVL définie pour le contrôleur
expéditeur.
429
Editeur NVL (Network Variables List)
Etape
3
Action
Commentaire
Cliquez sur le bouton Ouvrir.
La boîte de dialogue se referme et GNVL_Receiver
apparaît sous le nœud Application du contrôleur
Dev_Receiver :
Cette GNVL contient automatiquement les mêmes
déclarations de variable que GVL_Sender.
Étape 2 : affichage et/ou modification des paramètres réseau de la GNVL :
Etape
430
Action
Commentaire
1
Dans le volet Appareils, cliquez avec le bouton droit La boîte de dialogue Propriétés - GNVL_Receiver
de la souris sur le nœud GNVL_Receiver et
s'ouvre.
sélectionnez Propriétés....
2
Cliquez sur l'onglet Paramètres réseau.
–
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Étape 3 : test de l'échange de variables de réseau en mode en ligne :
Etape
Action
Commentaire
1
Sous le nœud Application du contrôleur
Dev_Sender, double-cliquez sur la POU
prog_sender.
L'éditeur de prog_sender s'ouvre dans la partie
droite.
2
Entrez le code suivant pour la variable iglobvar : –
3
Sous le nœud Application du contrôleur
L'éditeur de prog_rec s'ouvre dans la partie droite.
Dev_Receiver, double-cliquez sur la POU prog_rec.
4
Entrez le code suivant pour la variable
ivar_local :
5
Connectez-vous aux applications de l'expéditeur et La variable ivar_local dans le récepteur
du récepteur dans le même réseau et démarrez-les. récupère les valeurs de iglobvar affichées dans
l'expéditeur.
EIO0000000069 02/2018
–
431
Editeur NVL (Network Variables List)
Compatibilité
Introduction
Même si les contrôleurs fonctionnent avec des applications ayant différentes versions du système
de programmation (par exemple, V2.3 et V3.x), la communication via des variables de réseau est
possible.
Toutefois, en raison des formats différents des fichiers d'export entre les versions (*.exp / *.gvl), il
est impossible de procéder à de simples importations et exportations de ces fichiers entre projets.
Si une liste de variables de réseau globales (GNVL) est créée dans la dernière version (par
exemple, V3.x), la configuration des paramètres réseau requis doit être fournie par un expéditeur
de la dernière version (en l'occurrence, V3.x). Un fichier d'exportation *.exp créé par un expéditeur
d'une version antérieure (par exemple, V2.3) ne contient pas ces informations.
Les paragraphes suivants détaillent une solution permettant d'échanger des variables de réseau
entre des applications générées par des systèmes de programmation de différentes versions.
Mise à jour de la liste des variables de réseau globales
Pour échanger des variables de réseau entre des applications dont le système de programmation
a différentes versions (par exemple, V2.3 et V3.x), mettez à jour la liste des variables de réseau
globales en procédant comme suit :
Étape
Action
Commentaire
1
Recréez dans la dernière version (V3.x) la
liste des variables de réseau (NVL)
disponible dans la version
précédente (V2.3).
Pour ce faire, ajoutez une liste de variables globales
(GVL) avec des propriétés réseau, contenant les
mêmes déclarations de variables que la NVL de la
version précédente (V2.3).
2
Exportez la nouvelle GVL dans un fichier
*.exp à l'aide de l'onglet Lien avec fichier.
NOTE : activez l'option Exclure de la compilation
dans l'onglet Compiler pour conserver la GVL dans
le projet sans obtenir d'événements de
précompilation et de noms ambigus. Désactivez
cette option pour recréer le fichier *.exp si la GVL
doit être modifiée.
3
Réimportez la liste.
Pour ce faire, créez une liste de variables de réseau
globales (GNVL) à l'aide du fichier *.exp
précédemment généré afin d'obtenir une liste des
récepteurs correctement configurés.
Ces étapes sont décrites dans l'exemple ci-dessous.
432
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Exemple
Dans cet exemple, la variable trans23 définie dans une application V2.3 est disponible dans une
version plus récente (V3.x).
Les conditions définies sont les suivantes :
Condition
Description
1
Dans la version précédente du système de programmation (V2.3), le projet 23.pro contient une liste
des variables globales GVL_23 avec la déclaration suivante :
VAR_GLOBAL trans23:INT; END_VAR
2
Les propriétés réseau de GVL_23 sont configurées comme suit :
NOTE : l'exportation de GVL_23 crée un fichier *.exp qui ne contient que la déclaration de variable
suivante :
VAR_GLOBAL trans23:INT; END_VAR
Le fichier *.exp ne contient aucun paramètre de configuration.
EIO0000000069 02/2018
433
Editeur NVL (Network Variables List)
Le tableau ci-dessous montre les opérations supplémentaires à effectuer pour recréer GVL_23
dans la version plus récente (V3.x) :
Étape
434
Action
Commentaire
1
Ajoutez un objet GVL nommé GVL_23 –
à une application.
2
Configurez les propriétés réseau
comme indiqué dans le projet 23.pro.
3
Dans l'onglet Lien avec fichier,
configurez un fichier d'exportation
cible nommé 23.gvl.
4
Dans l'onglet Compiler, activez
l'option Exclure de la compilation.
Ce paramètre vous permet de conserver le fichier sur le disque,
en vue de modifications ultérieures.
EIO0000000069 02/2018
Editeur NVL (Network Variables List)
Étape
Action
Commentaire
5
Compilez le projet.
Le fichier 23.gvl est généré et contient la variable et les
paramètres de configuration :
6
Ajoutez un objet GNVL dans le
projet V3.x à partir du fichier
d'exportation 23.gvl (à l'aide de la
commande Importation à partir du
fichier :).
Cela permet de lire la variable trans23 à partir du contrôleur de
l'ancien système de programmation (V.2.3).
Si le projet de l'ancienne version (V2.3) et l'application de la
nouvelle version (V3.x) sont tous les deux en cours d'exécution
sur le réseau, la seconde peut lire la variable trans23 du
projet 23.pro.
EIO0000000069 02/2018
435
Editeur NVL (Network Variables List)
436
EIO0000000069 02/2018
SoMachine
Editeur de tâche
EIO0000000069 02/2018
Chapitre 19
Editeur de tâche
Editeur de tâche
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Informations sur la configuration de tâche
438
Onglet Propriétés
439
Onglet Surveillance
440
Configuration d'une tâche spécifique
442
Traitement des tâches en mode en ligne
446
EIO0000000069 02/2018
437
Editeur de tâche
Informations sur la configuration de tâche
Présentation
La configuration de tâche définit une ou plusieurs tâches permettant de contrôler le traitement d'un
programme d'application. Il s'agit donc d'un objet essentiel pour une application, qui doit être
disponible dans l'arborescence Applications.
Description de l'arborescence de configuration de tâche
Au sommet d'une arborescence de configuration de tâche se trouve l'entrée Configuration de
tâche
. Les tâches définies apparaissent en dessous, chacune représentée par un nom de
tâche. Les appels du POU des tâches individuelles s'affichent dans l'arborescence de
configuration de tâche.
Vous pouvez modifier l'arborescence (ajouter, copier, coller ou supprimer des tâches) à l'aide des
commandes applicables à l'arborescence Applications. Par exemple, pour ajouter une nouvelle
tâche, sélectionnez le noeud Configuration de tâche, cliquez sur le bouton plus vert, puis exécutez
la commande Tâche.... Vous pouvez également cliquer à l'aide du bouton droit de la souris sur le
noeud Configuration de tâche, puis exécuter la commande Ajouter un objet → Tâche....
Pour configurer chaque tâche, utilisez l'éditeur de tâche (voir page 442), qui offre également une
vue de surveillance en mode en ligne. Les options disponibles pour la configuration de tâche
dépendent de la plate-forme du contrôleur.
Configuration de tâche dans l'arborescence Applications
Tâches
Une task (voir page 442) permet de contrôler le traitement d'un programme IEC. Elle est définie
par un nom, une priorité et un type déterminant la condition qui déclenche le démarrage de la
tâche. Cette condition peut être définie par un délai (cyclique, exécution libre) ou par un événement
(interne ou externe) qui déclenche la tâche, tel que le front montant d'une variable de projet globale
ou un événement d'interruption du contrôleur.
Pour chaque tâche, vous pouvez spécifier une série de POU de programme démarrés par la tâche.
Si la tâche est exécutée lors du cycle courant, ces programmes sont traités pendant la durée d'un
cycle.
La combinaison de priorité et de condition détermine l'ordre chronologique (voir page 446)
d'exécution des tâches.
Pour chaque tâche, vous pouvez configurer un contrôle temporel (horloge de surveillance). Les
paramètres possibles dépendent de la plate-forme du contrôleur.
438
EIO0000000069 02/2018
Editeur de tâche
Onglet Propriétés
Présentation
Lorsque le nœud Configuration de tâche (voir page 438) est sélectionné, l'onglet Propriétés
s'ouvre dans la vue Éditeur de tâches.
Configuration de tâche, onglet Propriétés, exemple
Des informations sur la configuration de tâche courante fournies par le contrôleur s'affichent,
comme le nombre maximal de tâches autorisé par type de tâche.
EIO0000000069 02/2018
439
Editeur de tâche
Onglet Surveillance
Présentation
Si elle est prise en charge par le système cible, la fonction de surveillance est autorisée. Elle
permet l'analyse dynamique de la durée d'exécution, du nombre d'appels et de la protection de
code des POU, qui sont contrôlés par une tâche. En mode en ligne, le traitement des tâches peut
être surveillé.
Affichage en ligne de l'éditeur de tâches
Lorsque vous sélectionnez le nœud supérieur de l'arborescence Configuration de tâche, à côté de
l'onglet (voir page 439) Propriétés, l'onglet Surveillance est disponible. En mode en ligne, il affiche
l'état et certaines statistiques actuelles sur les cycles et les temps de cycle dans un tableau.
L'intervalle d'actualisation des valeurs est le même que celui utilisé pour la surveillance des valeurs
du contrôleur.
Description des éléments
Lorsque le nœud supérieur de l'arborescence Configuration de tâche est sélectionné, à côté de la
boîte de dialogue Propriétés (voir page 439) d'un autre onglet, la boîte de dialogue Surveillance
est disponible. En mode en ligne, il affiche l'état et certaines statistiques actuelles sur les cycles et
les temps de cycle dans un tableau. L'intervalle d'actualisation des valeurs est le même que celui
utilisé pour la surveillance des valeurs du contrôleur.
Configuration de tâche, Surveillance
440
EIO0000000069 02/2018
Editeur de tâche
Pour chaque tâche, les informations suivantes s'affichent dans une ligne :
Tâche
Etat
Nom de la tâche tel que défini dans la Configuration de
tâche
Entrées possibles :
 Non créé : la tâche n'a pas été démarrée depuis la
dernière actualisation ; entrée surtout utilisée pour les
tâches d'événement
 Créé : la tâche est connue dans le système d'exécution,
mais n'est pas encore configurée pour l'opération
 Valide : la tâche fonctionne normalement
 Exception : la tâche présente une exception
Nombre de cycles IEC
Nombre de cycles d'exécution depuis le démarrage de
l'application ; 0 si la fonction n'est pas prise en charge par
le système cible.
Nombre de cycles
Nombre de cycles déjà exécutés (selon le système cible,
cette valeur peut être égale au nombre de cycles IEC ou
supérieure si les cycles sont comptés même lorsque
l'application n'est pas en cours d'exécution.)
Last Cycle Time (µs)
Dernier temps d'exécution mesuré en µs
Average Cycle Time (µs)
Temps d'exécution moyen de tous les cycles en µs
Max. Cycle Time (µs)
Temps d'exécution maximal de tous les cycles mesuré en
µs
Min. Cycle Time (µs)
Temps d'exécution minimal de tous les cycles mesuré en µs
Jitter (µs)
Dernière gigue* mesurée en µs
Min. Jitter (µs)
Gigue* minimale mesurée en µs
Max. Jitter (µs)
Gigue* maximale mesurée en µs
* gigue : laps de temps entre le moment où la tâche démarre et le moment où le système
d'exploitation indique qu'elle s'exécute.
Pour remettre les valeurs d'une tâche à 0, placez le curseur sur le champ indiquant le nom de la
tâche, puis exécutez la commande Réinitialiser disponible dans le menu contextuel.
EIO0000000069 02/2018
441
Editeur de tâche
Configuration d'une tâche spécifique
Présentation
Lorsque vous insérez une tâche dans le nœud Configuration de tâche de l'arborescence
Applications, la vue Éditeur de tâches permettant de configurer les tâches s'affiche avec l'onglet
Configuration.
Elle s'affiche également si vous cliquez deux fois sur une tâche disponible (par exemple, MAST)
afin de modifier sa configuration.
Onglet Configuration d'une tâche
NOTE : Pour modifier le nom de la tâche, éditez l'entrée correspondante dans l'arborescence
Applications.
Insérez les attributs voulus.
Priorité
Priorité (0...31)
Nombre de 0 à 31 ; 0 correspond à la priorité la plus élevée, 31 à la plus faible
Type
La liste de sélection propose les types de tâche suivants :
442
EIO0000000069 02/2018
Editeur de tâche
Type
Cyclique
La tâche est traitée de manière cyclique selon la définition de durée (temps de
cycle de tâche) indiquée dans le champ Intervalle (voir ci-dessous).
Exécutée librement
La tâche est traitée dès que le programme démarre et à la fin d'une exécution ;
elle est redémarrée automatiquement dans une boucle continue. Aucune
durée de cycle n'est définie.
Etat
La tâche démarre si la variable définie dans le champ Événement a la valeur
TRUE.
NOTE : Cette fonction n'est pas disponible pour tous les contrôleurs pris en
charge. Pour plus d'informations, consultez le Guide de programmation de
votre contrôleur.
Evénement
La tâche démarre dès que la variable définie dans le champ Evénement atteint
un front montant.
Evénement externe
La tâche démarre dès que l'événement système défini dans le champ
Evénement se produit. Les événements pris en charge et proposés dans la
liste de sélection dépendent de la cible. (Il ne faut pas les confondre avec les
événements système.)
Différence entre Etat et Evénement
Lorsque l'événement spécifié est TRUE, la condition de démarrage d'une tâche donnée est
remplie, tandis qu'une tâche pilotée par un événement nécessite que l'événement passe de
FALSE à TRUE. Si l'événement passe trop vite de TRUE à FALSE, puis de nouveau à TRUE, il
risque de ne pas être détecté. La tâche Événement ne sera alors pas démarrée.
L'exemple suivant illustre le comportement de la tâche suite à un événement (ligne verte) :
Aux points d'échantillonnage 1 à 4, les tâches présentent une réaction différente selon leur type :
Comportement au point :
1
2
3
4
Etat
Pas de
démarrage
Démarrage
Démarrage
Démarrage
Événement
Pas de
démarrage
Démarrage
Pas de démarrage, car
l'événement est passé
trop vite de TRUE à
FALSE, puis de
nouveau à TRUE
Pas de
démarrage
EIO0000000069 02/2018
443
Editeur de tâche
Entrées obligatoires dépendant de la tâche choisie
Entrée
Description
Temps de cycle Obligatoire pour le type Cyclique.
de tâche de
Durée (en millisecondes [ms]) après laquelle la tâche doit être redémarrée.
l'intervalle
NOTE : Tenez compte du système de bus en cours d'utilisation lors de la définition du
temps de cycle de tâche. Par exemple, sur un bus CAN, vous pouvez définir la tâche de
cycle de bus dans l'onglet Mappage E/S CANopen. Elle doit correspondre au débit de
transmission actuellement défini et au nombre de trames utilisées sur le bus. De plus, les
valeurs définies pour le heartbeat, le nodeguarding et la synchronisation doivent toujours
être des multiples du temps de cycle de tâche. Sinon, des trames CAN risquent d'être
perdues. Pour plus d'informations, consultez la section Éditeur d'appareil de
l'SoMachineaide en ligne.
Événement
Obligatoire pour le type Événement ou déclenché par un Événement externe.
Variable booléenne globale qui déclenche le démarrage de la tâche dès qu'un front
montant est détecté. Utilisez le bouton ... ou l'aide à la saisie pour afficher toutes les
variables d'événement globales disponibles.
NOTE : Si l'événement qui pilote une tâche est déclenché par une entrée, au moins une
tâche ne doit pas être pilotée par des événements. Sinon, les E/S ne sont jamais mises à
jour et la tâche ne démarre jamais.
Paramètres de l'horloge de surveillance
Pour chaque tâche, vous pouvez configurer un contrôle temporel (horloge de surveillance).
Les paramètres par défaut de l'horloge de surveillance dépendent du contrôleur.
Lorsque l'option Activer est sélectionnée (coche affichée), l'horloge de surveillance est activée.
Lorsque l'horloge de surveillance est activée pour une tâche, une erreur Exception est détectée si
la durée d'exécution de la tâche dépasse la limite définie (Temps) par rapport à la Sensibilité
définie. Si l'option Actualiser E/S en état d'arrêt est activée dans la boîte de dialogue de
paramètres du contrôleur, les sorties prennent les valeurs par défaut prédéfinies, selon la plateforme du contrôleur.
Temps (par exemple t#200ms) Permet de définir le temps d'exécution maximal admis pour une tâche.
Lorsque l'exécution d'une tâche prend plus longtemps, le contrôleur signale
une exception d'horloge de surveillance pour cette tâche.
Sensibilité
Permet de définir le nombre d'exceptions d'horloge de surveillance des
tâches qui doivent se produire avant que l'automate détecte une erreur
d'application.
NOTE : La fonction d'horloge de surveillance n'est pas disponible en mode simulation.
Pour plus d'informations, consultez le chapitre Horloges de surveillance du système et des tâches
du Guide de programmation de votre contrôleur.
444
EIO0000000069 02/2018
Editeur de tâche
POU
Les POU contrôlés par la tâche sont répertoriés dans un tableau indiquant le nom du POU et un
Commentaire facultatif. Les commandes d'édition se trouvent au-dessus du tableau :
 Pour définir un nouveau POU, ouvrez la boîte de dialogue Aide à la saisie à l'aide de la
commande Ajouter l'appel. Sélectionnez l'un des programmes disponibles dans le projet. Vous
pouvez également ajouter des POU de type programme à la liste par glisser-déposer depuis
l'arborescence Applications.
 Pour remplacer un appel de programme par un autre, sélectionnez l'entrée voulue dans le
tableau, ouvrez l'Aide à la saisie via la commande Modifier l'appel et sélectionnez un autre
programme.
 Pour supprimer un appel, sélectionnez-le dans le tableau et utilisez la commande Supprimer
l'appel.
 La commande Ouvrir le POU ouvre le programme actuellement sélectionné dans l'éditeur
approprié.
L'ordre des appels de POU de haut en bas détermine l'ordre d'exécution en mode en ligne. Vous
pouvez déplacer l'entrée sélectionnée dans la liste à l'aide des commandes Monter et Descendre.
EIO0000000069 02/2018
445
Editeur de tâche
Traitement des tâches en mode en ligne
Conditions d'exécution des tâches
L'exécution des tâches définies dans Configuration de tâche obéit aux règles suivantes :
Une tâche s'exécute dès lors que ses conditions sont remplies, c'est-à-dire lorsque la durée
spécifié est arrivée à expiration ou lorsque sa variable (événement) de condition indique un front
montant.
 Si plusieurs tâches remplissent les conditions, c'est celle dont la priorité est la plus élevée qui
s'exécute.
 Si plusieurs tâches remplissent les conditions et ont des priorités équivalentes, c'est la tâche
dont le temps d'attente est le plus long qui est exécutée en premier.
 Les appels de POU (de type programme) sont traités en fonction de leur ordre (de haut en bas)
dans l'éditeur de tâches. Si un POU est appelé et qu'il est disponible sous le même nom dans
l'arborescence Applications attribuée à l'application, ainsi que dans une bibliothèque ou à
l'échelle du projet dans le nœud Global de cette même arborescence , c'est celui qui est déclaré
directement dessous dans l'arborescence Applications qui est exécuté.

446
EIO0000000069 02/2018
SoMachine
Editeur de liste de surveillance
EIO0000000069 02/2018
Chapitre 20
Editeur de liste de surveillance
Editeur de liste de surveillance
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Affichage Surveillance / Editeur de liste de surveillance
448
Création d'une liste de surveillance
449
Liste de surveillance en mode en ligne
451
EIO0000000069 02/2018
447
Editeur de liste de surveillance
Affichage Surveillance / Editeur de liste de surveillance
Présentation
Une liste de surveillance est un ensemble défini par l'utilisateur de variables de projet. Celles-ci
sont affichées dans l'affichage Surveillance dans le but de surveiller (voir page 451) les valeurs
d'une table. De même, l'affichage Surveillance autorise l'écriture et le forçage des variables.
Vous pouvez ouvrir un affichage Surveillance via le sous-menu de la commande Surveillance (par
défaut, dans le menu Affichage). Vous y trouverez un éditeur permettant de créer des listes de
surveillance (voir page 449).
Par défaut, vous pouvez configurer quatre listes de surveillance individuelles dans les affichages
Surveillance 1, Surveillance 2, Surveillance 3, Surveillance 4. L'affichage Observer tous les
forçages en mode en ligne est rempli (voir page 452) automatiquement avec toutes les valeurs
actuellement forcées de l'application active.
448
EIO0000000069 02/2018
Editeur de liste de surveillance
Création d'une liste de surveillance
Présentation
Pour configurer une liste de surveillance Surveillance<n> dans l'affichage Surveillance, cliquez
dans un champ de la colonne Expression, puis appuyez sur la touche ESPACE pour modifier la
colonne Expression. Entrez le chemin complet de l'expression de surveillance souhaitée. L'Aide à
la saisie est disponible via le bouton ....
Syntaxe des expressions de surveillance
<nom de l'équipement>.<nom de l'application>.<nom de l'objet>.<nom de la variable>
Exemple
Exemple :
Dev1.App1.PLC_PRG.ivar
Le type de variable est indiqué par une icône avant le nom de la variable :
Icône
Variable
Entrée
Sortie
Normal
Lorsque vous avez saisi la variable dans la colonne Expression, le type de données correspondant
est automatiquement ajouté dans la colonne Type. Si un commentaire a été ajouté à la déclaration
d'une variable, il est ajouté dans la colonne Commentaire.
La colonne Valeur affiche la valeur actuelle de l'expression en mode en ligne (voir page 451).
Pour préparer une valeur pour une variable, cliquez dans le champ correspondant de la colonne
Valeur préparée, puis saisissez directement la valeur souhaitée.
Dans le cas d'une variable booléenne, le traitement est encore plus simple : vous pouvez basculer
d'une valeur booléenne de préparation à une autre à l'aide des touches ENTREE ou ESPACE en
respectant l'ordre suivant :
si la valeur est TRUE, les étapes de préparation sont FALSE -> TRUE -> aucune entrée ; si la
valeur est FALSE, les étapes de préparation sont TRUE -> FALSE -> aucune entrée.
Répétez cette procédure pour les autres expressions/variables souhaitées dans les lignes
suivantes. Consultez l'exemple ci-dessous, qui représente l'affichage Surveillance en mode hors
ligne : il contient des expressions d'objets PLC_PRG et Prog_St.
EIO0000000069 02/2018
449
Editeur de liste de surveillance
Gardez à l'esprit que dans le cas d'une variable structurée, à l'instar de l'instance de bloc
fonctionnel, les composants d'une instance particulière sont ajoutés automatiquement lorsque
vous entrez le nom de l'instance (voir dans l'exemple Dev1.App1.PLC_PRG.fbinst). Cliquez
sur le signe plus ou moins pour les afficher ou les masquer dans une structure.
Exemple : affichage Surveillance en mode hors ligne
En mode en ligne (voir page 451), vous pouvez utiliser la liste pour surveiller les valeurs de
variables.
NOTE : En mode en ligne, vous pouvez ajouter des expressions à la liste de surveillance à l'aide
de la commande Ajouter à la liste de surveillance.
450
EIO0000000069 02/2018
Editeur de liste de surveillance
Liste de surveillance en mode en ligne
Surveillance
Une liste de surveillance (voir page 448) (Surveillance<n>) en mode en ligne affiche la valeur
actuelle d'une variable dans la colonne Valeur. Il s'agit de la valeur de la variable entre deux cycles
de tâche.
Une adresse CEI directe affectée et/ou un commentaire sont également affichés, le cas échéant.
Les composants de l'affichage correspondent à ceux de l'affichage en ligne de l'éditeur de
déclaration (voir page 403).
Consultez le chapitre Création d'une liste de surveillance (voir page 449) pour savoir comment
configurer une liste de surveillance et comment gérer les structures dans le cas des variables
structurées.
Affichage Surveillance en mode en ligne
NOTE : En mode en ligne, vous pouvez ajouter des expressions à la liste de surveillance à l'aide
de la commande Ajouter à la liste de surveillance.
Valeurs d'écriture et de forçage
Dans la colonne Valeur préparée, vous pouvez entrer une valeur souhaitée qui sera écrite ou
forcée dans l'expression correspondante du contrôleur à l'aide de la commande Ecrire les valeurs
ou Forcer les valeurs. Reportez-vous à la description des commandes Ecrire et Forcer, qui
peuvent également être utilisées dans d'autres affichages Surveillance (par exemple, l'éditeur de
déclaration).
EIO0000000069 02/2018
451
Editeur de liste de surveillance
Observer tous les forçages
Il s'agit d'un affichage de liste de surveillance spéciale, qui est automatiquement rempli en mode
en ligne avec toutes les valeurs actuellement forcées de l'application active. Chaque Expression,
Type, Valeur et Valeur préparée est affiché, comme dans l'affichage en ligne d'une liste de
Surveillance<n>.
Vous pouvez lever le forçage des valeurs par l'intermédiaire de l'une des commandes disponibles
via le bouton Arrêter le forçage... :
 Annuler le forçage et conserver toutes les valeurs sélectionnées.
 Annuler le forçage et rétablir toutes les valeurs sélectionnées.
Boîte de dialogue Observer tous les forçages
452
EIO0000000069 02/2018
SoMachine
Outils dans les éditeurs de logiques
EIO0000000069 02/2018
Chapitre 21
Outils dans les éditeurs de logiques
Outils dans les éditeurs de logiques
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Outil de recherche FFB pour fonction et bloc fonction
454
Aide à la saisie
458
EIO0000000069 02/2018
453
Outils dans les éditeurs de logiques
Outil de recherche FFB pour fonction et bloc fonction
Présentation
SoMachine propose l'outil de recherche FFB (fonction et bloc fonction) pour vous aider à trouver
une fonction ou bloc fonction même quand vous ne connaissez pas son nom exact.
Vous pouvez utiliser l'outil de recherche de fonction et bloc fonction dans les langages de
programmation suivants qui permettent d'insérer des blocs fonction :
 CFC
 LD
 IL
 FBD
 ST
Comment trouver une Fonction ou un Bloc fonction avec FFB Finder
Quand vous êtes prêt à créer du code de programmation dans SoMachine Logic Builder, accédez
à l'emplacement où vous souhaitez insérer le bloc fonction et ouvrez FFB Finder comme suit :
 sélectionnez le menu Edition → FFB Finder
ou
 cliquez à droite sur l'emplacement correspondant dans l'éditeur et sélectionnez la commande
FFB Finder... sur le menu contextuel
454
EIO0000000069 02/2018
Outils dans les éditeurs de logiques
La boîte de dialogue FFB Finder s'ouvre :
La boîte de dialogue FFB Finder contient les éléments suivants pour la recherche d'une fonction
ou d'un bloc fonction :
Elément
Description
Elément à rechercher
Dans la zone de texte Elément à rechercher, entrez le nom de la fonction ou
du bloc fonction que vous souhaitez insérer dans votre code de
programmation.
Comme caractères génériques, vous pouvez utiliser le point
d'interrogation (?) qui remplace un caractère, ou l'astérisque (*) qui remplace
zéro ou plusieurs caractères.
EIO0000000069 02/2018
455
Outils dans les éditeurs de logiques
Elément
Description
Société
Si vous connaissez la société qui a créé la bibliothèque incluant le bloc
fonction que vous recherchez, vous pouvez sélectionner les sociétés
suivantes dans la liste Société :
 3S - Smart Software Solutions GmbH
 Groupe de travail technique CAA
 Schneider Electric
 Système
Ce paramètre est par défaut Toutes les sociétés.
Majuscules/minuscules
Cochez la case Respecter la casse pour effectuer une recherche faisant la
distinction entre majuscules et minuscules.
Par défaut, cette case n'est pas cochée.
Inclure les commentaires dans la
recherche
Cochez la case Inclure les commentaires dans la recherche pour rechercher
la chaîne saisie non seulement dans les noms de fonctions et blocs fonction,
mais aussi dans les commentaires qui sont enregistrés avec.
Par défaut, cette case n'est pas cochée.
Rechercher seulement dans les
bibliothèques du projet
Cochez la case Rechercher dans les bibliothèques de projets uniquement
pour limiter la recherche aux bibliothèques utilisées dans le projet en cours.
Par défaut, cette case n'est pas cochée et l'opération de recherche inclut
toutes les bibliothèques installées sur le PC SoMachine.
Rechercher
Cliquez sur le bouton Rechercher ou appuyez sur la touche ENTREE pour
commencer la recherche de la fonction ou du bloc fonction.
Résultats renvoyés par FFB Finder
Chaque fonction ou bloc fonction qui correspond aux critères de recherche saisis s'affiche dans la
liste Résultats avec les informations suivantes :
 Le Nom de la fonction ou du bloc fonction
 La Bibliothèque dans laquelle la fonction ou le bloc fonction est enregistré
 La Version de la bibliothèque
 La Société qui a créé la bibliothèque
 Un commentaire, le cas échéant, est affiché dans la colonne à droite.
 La colonne Chargé à gauche indique si la bibliothèque dans laquelle la fonction ou le bloc
fonction est enregistré est déjà utilisée dans le projet en cours.
Pour afficher des informations supplémentaires sur une des fonctions ou un des blocs fonctions,
sélectionnez-le dans la liste. Un graphique de la fonction ou du bloc fonction avec ses entrées et
sorties apparaît dans le champ en dessous, ainsi qu'une description ou des informations
supplémentaires, le cas échéant.
456
EIO0000000069 02/2018
Outils dans les éditeurs de logiques
Intégration d'une fonction/un bloc fonction dans le code de programmation
Pour intégrer une fonction/un bloc fonction trouvé par FFB Finder dans votre code de
programmation, sélectionnez-le dans la liste Résultats et
 soit faites un double-clic sur l'entrée sélectionnée dans la liste Résultats,
 soit cliquez sur le bouton OK.
La fonction ou le bloc fonction sélectionné est inséré à l'emplacement du curseur dans votre code
de programmation, la bibliothèque correspondante est chargée automatiquement.
Répétez cette opération chaque fois que vous avez besoin d'aide pour trouver une fonction ou un
bloc fonction.
EIO0000000069 02/2018
457
Outils dans les éditeurs de logiques
Aide à la saisie
Présentation
La boîte de dialogue Aide à la saisie et la commande Aide à la saisie correspondante (par défaut,
menu Edit → Modification de code intelligente) sont disponibles uniquement si le curseur est placé
dans la fenêtre d'un éditeur de texte. Cette boîte de dialogue propose les éléments de projet
disponibles et pouvant être insérés à l'emplacement actuel du curseur.
Boîte de dialogue Aide à la saisie
458
EIO0000000069 02/2018
Outils dans les éditeurs de logiques
Description des éléments
La boîte de dialogue Aide à la saisie contient les options suivantes :
Élément
Description
Catégories
Dans cette zone, les éléments du projet sont triés par
Catégories.
Filtre
Vous pouvez définir un Filtre pour la catégorie
Variables. Pour afficher un type donné de variable,
sélectionnez une entrée telle que Variables locales,
Variables globales, Constantes dans la liste.
Zone Éléments
Nom, Type, Adresse, Origine
La zone Éléments contient les éléments disponibles
et, suivant la catégorie, le Type, l'Adresse et l'Origine
des données de la catégorie sélectionnée dans la
zone Catégories.
L'Origine est indiquée pour les variables d'E/S
(chemin dans l'arborescence des équipements) et
les variables définies dans les bibliothèques (nom de
bibliothèque et catégorie).
Vous pouvez trier les éléments par ordre
alphabétique croissant ou décroissant par Nom,
Type, Adresse, Origine. Pour cela, cliquez sur l'entête de la colonne appropriée (flèche vers le haut ou
vers le bas).
Pour afficher ou masquer les colonnes Type,
Adresse ou Origine, cliquez avec le bouton droit sur
l'en-tête de colonne correspondant.
Affichage structuré
Si l'option Affichage structuré est sélectionnée, les
éléments du projet sont affichés sous forme
d'arborescence et associés à des icônes.
Si cette option n'est pas sélectionnée, les éléments
du projet sont organisés à plat. Chaque élément de
projet est affiché avec le POU auquel il appartient
(exemple : GVL1.gvar1).
NOTE : Si des objets de même nom sont disponibles sous le nœud Global de l'arborescence des
applications ainsi que sous une application (arborescence des applications), une seule entrée
apparaît dans l'aide à la saisie, car l'utilisation de l'objet est déterminée par les priorités d'appel
habituelles (d'abord l'objet affecté à l'application, puis l'objet global).
EIO0000000069 02/2018
459
Outils dans les éditeurs de logiques
460
Élément
Description
Show documentation
Si l'option Show documentation est sélectionnée, le
champ Documentation est ajouté dans la boîte de
dialogue Aide à la saisie.
Si l'élément sélectionné est une variable à laquelle a
été affectée une adresse ou si un commentaire a été
ajouté à sa déclaration, ces éléments s'affichent ici.
Insert with arguments
Si cette option est sélectionnée, les éléments qui
contiennent des arguments, comme les fonctions,
sont insérés avec ces arguments.
Exemple :
Si le bloc fonction FB1, qui contient une variable
d'entrée fb1_in et une variable de sortie fb1_out,
est inséré avec des arguments, l'expression suivante
est écrite dans l'éditeur :
fb1(fb1_in:= , fb1_out=> )
Insert with namespace prefix
Si cette option est sélectionnée, l'élément est inséré
avec l'espace de noms comme préfixe. Actuellement,
cette option est disponible uniquement pour les
variables globales.
EIO0000000069 02/2018
SoMachine
Outils
EIO0000000069 02/2018
Partie VI
Outils
Outils
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
22
Journalisation des données
463
23
Gestionnaire de recettes
465
24
Éditeur de suivi
485
25
Editeur de configuration de symbole
513
26
Échange de données entre le contrôleur et l'IHM de SoMachine
521
EIO0000000069 02/2018
461
Outils
462
EIO0000000069 02/2018
SoMachine
Journalisation des données
EIO0000000069 02/2018
Chapitre 22
Journalisation des données
Journalisation des données
Présentation de la journalisation des données
Présentation
Vous pouvez contrôler et analyser les données d'application en examinant le fichier de journalisation des données (.log).
Téléchargement de fichiers
depuis SoMachine,
le serveur Web du contrôleur
ou à la demande du client FTP
Application
du contrôleur
Mémoire
du contrôleur
Fichier journal
BF
Enregistrement
Fichier journal
Commande
de vidage
BF
Vidage
Mémoire tampon
du fichier journal
Journal des données x
Journal des données y
Journal des données z
Vidage
automatique
Nouveau
journal
de données
Forcer le vidage
de la mémoire tampon
JournalDonnées.log
Journal des données 1
Journal des données 2
Journal des données 3
Journal des données 4
Journal des données 5
Journal des données 6
…
La figure illustre une application composée de 2 blocs fonction, LogRecord et Dump. Le bloc
fonction LogRecord écrit les données dans la mémoire tampon qui les transfère, lors de son
vidage, au fichier de journalisation (.log) situé dans la mémoire du contrôleur. Le vidage de la
mémoire tampon est automatiquement déclenché lorsqu'elle est pleine à 80 %. Il peut être forcé à
l'aide de la fonction Dump. En tant que client FTP standard, un PC peut accéder au fichier de
journalisation des données dès lors que le contrôleur sert de serveur FTP. Vous pouvez également
télécharger le fichier depuis SoMachine ou le serveur Web du contrôleur.
EIO0000000069 02/2018
463
Journalisation des données
NOTE : Seuls les contrôleurs disposant de fonctionnalités de gestion des fichiers peuvent prendre
en charge la journalisation des données. Reportez-vous au manuel de programmation de
l'automate pour savoir s'il prend en charge la gestion des fichiers. Le logiciel ne vérifie pas si votre
contrôleur est compatible avec les opérations de journalisation des données.
Exemple de fichier de journalisation des données (.log)
Entries in File: 8; Last Entry: 8;
18/06/2009;14:12:33;cycle: 1182;
18/06/2009;14:12:35;cycle: 1292;
18/06/2009;14:12:38;cycle: 1450;
18/06/2009;14:12:40;cycle: 1514;
18/06/2009;14:12:41;cycle: 1585;
18/06/2009;14:12:43;cycle: 1656;
18/06/2009;14:14:20;cycle: 6346;
18/06/2009;14:14:26;cycle: 6636;
Procédure de mise en œuvre
Avant de commencer à écrire votre programme, vous devez d'abord déclarer et configurer les
fichiers de journalisation dans votre application.
464
EIO0000000069 02/2018
SoMachine
Gestionnaire de recettes
EIO0000000069 02/2018
Chapitre 23
Gestionnaire de recettes
Gestionnaire de recettes
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Gestionnaire de recettes
466
Définition de recette
470
Commandes de RecipeMan
475
EIO0000000069 02/2018
465
Gestionnaire de recettes
Gestionnaire de recettes
Présentation
La fonctionnalité Gestionnaire de recettes n'est disponible que si elle est sélectionnée dans le jeu
de fonctionnalités en cours d'utilisation (Options → Fonctionnalités → Jeux de fonctionnalités
prédéfinis).
Le gestionnaire de recettes dispose d'une fonctionnalité permettant de gérer des listes de
variables de projet définies par l'utilisateur, aussi appelées définitions de recette, ainsi que des
ensembles de valeurs définis pour ces variables dans une définition de recette, aussi appelés
recettes.
Vous pouvez utiliser des recettes pour définir et surveiller les paramètres de contrôle sur le
contrôleur. Elles peuvent également être chargées à partir de fichiers et y être enregistrées. Ces
interactions sont possibles grâce à des éléments de visualisation que vous devez configurer de
façon appropriée (commande d'exécution d'une configuration d'entrée). Vous pouvez également
utiliser certaines commandes de recette dans l'application (voir page 475).
Après avoir sélectionné une recette, vérifiez qu'elle est adaptée au processus à contrôler.
AVERTISSEMENT
COMPORTEMENT IMPRÉVU DE L'ÉQUIPEMENT






Procédez à une analyse de sécurité de l'application et de l'équipement installé.
Vérifiez l'adéquation entre la recette et le processus, l'équipement ou la fonction dans
l'installation.
Définissez les paramètres appropriés, notamment pour les limites et les autres éléments liés
à la sécurité.
Vérifiez que tous les capteurs et les actionneurs sont compatibles avec la recette
sélectionnée.
Effectuez un test approfondi de toutes les fonctions pendant la vérification et la mise en
service.
Établissez des chemins indépendants pour les fonctions de contrôle critiques (arrêt d'urgence,
dépassement de limites, etc.) en fonction de l'analyse de la sécurité et des réglementations et
consignes applicables.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
466
EIO0000000069 02/2018
Gestionnaire de recettes
Par défaut, le gestionnaire de recettes est chargé sur le contrôleur lors du téléchargement. Il traite
l'écriture et la lecture des recettes lors de l'exécution de l'application sur le contrôleur. Toutefois,
si vous utilisez des recettes uniquement pour l'échange de paramètres au démarrage du système
cible (lorsque SoMachine est encore connecté au contrôleur), il est inutile de charger le
gestionnaire de recettes sur le contrôleur. Vous pouvez désactiver son téléchargement à l'aide de
l'option Recipe management in the plc. L'écriture et la lecture des valeurs de la recette sont ensuite
traitées par les commandes et les services en ligne standard. Si le programme d'application rend
nécessaire l'exécution de la gestion des recettes sur le contrôleur lors de l'exécution, le bloc
fonction RecipeCommands est chargé du traitement des commandes de recette.
Pour une description du comportement des recettes dans les différents modes en ligne, consultez
le chapitre Définition de recette (voir page 470).
Si le gestionnaire de recettes réside sur un contrôleur différent de l'application affectée par les
recettes, la lecture/écriture de celles-ci est effectuée par le serveur de données. La lecture et
l'écriture des variables est effectuée de façon synchrone. L'appel de g_RecipeManager.LastError après la lecture/écriture permet de vérifier si la transmission a réussi
(g_RecipeManager.LastError=0 dans le cas présent).
Objets du gestionnaire de recettes dans l'arborescence des outils
Pour ajouter un objet Gestionnaire de recettes dans l'arborescence des outils, sélectionnez le
nœud Application, cliquez sur le signe plus de couleur verte pour exécuter la commande Ajouter
d'autres objets... → Gestionnaire de recettes... Pour valider la boîte de dialogue Add Recipe
Manager cliquez sur Ajouter, le nœud Gestionnaire de recettes est alors inséré sous le nœud
Application.
Vous pouvez ajouter un ou plusieurs objets Définition de recette sous un nœud Gestionnaire de
recettes. Pour cela, cliquez sur le signe plus de couleur verte associé au nœud Gestionnaire de
recettes et exécutez la commande Définition de recette.... Entrez un Nom dans la boîte de
dialogue Add Recipe Definition et cliquez sur Ajouter. Double-cliquez sur le nœud pour afficher et
modifier les définitions de recette qui contiennent les recettes particulières dans une fenêtre
d'éditeur séparée. Pour une description du comportement des recettes dans les différents modes
en ligne, consultez le chapitre Définition de recette (voir page 470).
EIO0000000069 02/2018
467
Gestionnaire de recettes
Éditeur Gestionnaire de recettes, onglet Enregistrement
Par défaut, les recettes sont enregistrées automatiquement dans des fichiers en fonction des
paramètres définis dans l'onglet Enregistrement de l'éditeur Gestionnaire de recettes :
Paramètre
Description
Type d'enregistrement
Sélectionnez le type d'enregistrement Textuel ou Binaire.
Chemin du fichier
Indiquez l'emplacement d'enregistrement de la recette.
Extension de fichier
Indiquez l'extension du fichier de recette.
NOTE : Il est également possible de définir un fichier d'enregistrement avec l'entrée sur un élément
de visualisation (entrée de la configuration, exécution de la commande,
enregistrement/chargement d'une recette à partir d'un fichier). Toutefois, lors de la définition du
nom d'un tel fichier dans la configuration de visualisation, veillez à ne pas supprimer le fichier *
.txtrecipe défini ici dans le gestionnaire de recettes.
468
EIO0000000069 02/2018
Gestionnaire de recettes
Paramètre
Description
Caractère de séparation
Lors d'un enregistrement de type textuel, un séparateur délimite les colonnes
sélectionnées pour l'enregistrement. Sélectionnez l'une des six options
proposées.
Colonnes disponibles
Toutes les colonnes de la définition de recette représentées par leur en-tête
respectif.
Colonnes sélectionnées
Colonnes sélectionnées dans la définition de recette, c'est-à-dire les
colonnes à enregistrer.
Cette sélection comporte au moins la colonne contenant la Valeur actuelle. Il
est impossible de la désélectionner.
Boutons fléchés
Il est possible de déplacer les autres colonnes vers la droite ou vers la gauche
en sélectionnant l'entrée appropriée et en cliquant sur les boutons fléchés.
Vous pouvez également déplacer simultanément toutes les entrées d'un côté
à l'autre à l'aide des boutons représentant des flèches doubles.
Boutons Monter et
Descendre
Cliquez sur ces boutons pour modifier l'ordre des colonnes sélectionnées,
soit l'ordre des colonnes dans le fichier d'enregistrement.
Pour chaque recette, un fichier <nom de la recette>.<définition de la
recette>.<extension de fichier> est créé dans le dossier spécifié. À chaque
redémarrage de l'application, ce fichier sera rechargé dans le gestionnaire de
recettes. Pour la configuration de l'actualisation des fichiers d'enregistrement
de recettes, reportez-vous à la description de l'onglet (voir page 469)
Général.
Enregistrer comme défaut
Cliquez sur le bouton Enregistrer comme défaut pour utiliser comme
paramètres par défaut les paramètres définis dans la boîte de dialogue pour
chaque gestionnaire de recettes supplémentaire inséré.
Enregistrer automatiquement Sélectionnez cette option pour mettre à jour immédiatement les fichiers de
les modifications des
stockage après toute modification d'une recette pendant l'exécution.
recettes
Éditeur de gestionnaire de recettes, onglet Général
Paramètre
Description
Recipe management in the plc
Si le gestionnaire de recettes est inutile sur le contrôleur faute de recette à
traiter pendant l'exécution de l'application, vous pouvez désactiver cette
option. Ceci évite de télécharger le gestionnaire.
La mise à jour automatique du fichier de recettes est possible uniquement
une fois le téléchargement terminé. Pour télécharger la gestion des
recettes sur le contrôleur, sélectionnez cette option.
EIO0000000069 02/2018
469
Gestionnaire de recettes
Définition de recette
Présentation
Le gestionnaire de recettes (voir page 466) gère une ou plusieurs définitions de recette. Une
définition de recette contient une liste de variables, ainsi qu'une ou plusieurs recettes (ensembles
de valeurs) pour ces variables. L'utilisation de différentes recettes permet d'affecter d'une simple
opération un jeu de valeurs supplémentaire à un ensemble de variables sur le contrôleur. Le
nombre de définitions de recette, de recettes et de variables par recette n'est soumis à aucune
limitation.
Définition de recette
Vous pouvez ajouter un ou plusieurs objets Définition de recette sous un nœud Gestionnaire de
recettes dans l'arborescence des outils. Pour cela, cliquez sur le signe plus de couleur verte
associé au nœud Gestionnaire de recettes et exécutez la commande Définition de recette....
Double-cliquez sur le nœud pour afficher et modifier les définitions de recette qui contiennent les
recettes particulières dans un affichage d'éditeur séparé.
Éditeur de recette
1
2
nom de la définition de recette
noms de recette
Le nom de la définition de recette sert de titre à la fenêtre de l'éditeur.
470
Paramètre
Description
Variable
Dans un tableau, vous pouvez entrer plusieurs variables de projet pour
lesquelles vous souhaitez définir une ou plusieurs recettes. Pour ce faire,
vous pouvez utiliser la commande Insérer une variable lorsque le curseur se
trouve dans n'importe quel champ de n'importe quelle ligne. Vous pouvez
aussi double-cliquer sur un champ Variable ou le sélectionner et appuyer sur
la barre d'espacement pour passer en mode éditeur. Entrez le nom valide
d'une variable de projet, par exemple plc_prg.ivar. Cliquez sur le bouton
... pour ouvrir l'aide à la saisie.
Type
Le champ Type est renseigné automatiquement. Si vous le souhaitez, vous
pouvez également définir un Nom symbolique.
EIO0000000069 02/2018
Gestionnaire de recettes
Paramètre
Description
Nom
Vous pouvez définir un Nom symbolique.
Commentaire
Entrez des informations complémentaires, telles que l'unité de la valeur
enregistrée dans la variable.
Valeur minimale et Valeur
maximale
Si vous le souhaitez, vous pouvez définir les valeurs autorisées pour cette
variable.
Valeur actuelle
Cette valeur est surveillée en mode en ligne.
Enregistrer automatiquement Il est recommandé d'activer cette option, car elle influe sur le comportement
les modifications des
habituel d'un gestionnaire de recettes : les fichiers d'enregistrement sont mis
recettes
à jour immédiatement en cas de modification d'une recette pendant
l'exécution. Gardez à l'esprit que l'option n'a d'effet que tant que le
gestionnaire de recettes est disponible sur le contrôleur.
Pour supprimer une variable (ligne) du tableau, appuyez sur la touche Suppr lorsque l'une des
cellules associées est sélectionnée. Pour sélectionner plusieurs lignes, maintenez la touche Ctrl
enfoncée lorsque vous sélectionnez les cellules. Vous pouvez copier les lignes sélectionnées à
l'aide des commandes Copier et Coller. La commande Coller insère les lignes copiées au-dessus
de la ligne actuellement sélectionnée. Dans ce cas, si elles sont disponibles, les valeurs de recette
sont insérées dans la colonne de recette correspondante.
Pour ajouter une recette à la définition de recette, exécutez la commande (voir SoMachine,
Commandes de menu, Aide en ligne) Insérer la recette lorsque l'affichage de l'éditeur est
sélectionné. Pour chaque recette, une colonne propre est créée qui prend le nom de la recette
(exemple : R1 et R2 dans la figure ci-dessus).
En mode en ligne, il est possible de modifier une recette à l'aide d'un élément de visualisation
configuré comme il convient (commande d'exécution de la configuration d'entrée) ou à l'aide des
méthodes appropriées du bloc fonction RecipeManCommands de la bibliothèque
Recipe_Management.library.
Les méthodes suivantes sont prises en charge :
 ReadRecipe : les valeurs de variable actuelles sont prises dans la recette.
 WriteRecipe : la recette est écrite dans les variables.
 SaveRecipe : la recette est enregistrée dans un fichier de recette standard.
 LoadRecipe : la recette est chargée à partir d'un fichier de recette standard.
 CreateRecipe : une nouvelle recette est créée dans la définition de recette.
 DeleteRecipe : une recette existante est supprimée d'une définition de recette.
Pour connaître le comportement des recettes dans des états en ligne spécifiques, consultez les
paragraphes qui suivent. Il est recommandé de définir l'option Enregistrer automatiquement les
modifications des recettes (pour bénéficier du comportement habituel de la gestion des recettes).
EIO0000000069 02/2018
471
Gestionnaire de recettes
Recette
Vous pouvez ajouter ou supprimer une recette hors ligne ou en ligne. En mode hors-ligne, utilisez
les commandes Insérer la recette (voir SoMachine, Commandes de menu, Aide en ligne) et
Remove recipes (voir SoMachine, Commandes de menu, Aide en ligne) dans l'éditeur du
gestionnaire de recettes. En mode en ligne, configurez une entrée sur un élément de visualisation
correctement configuré ou utilisez les méthodes appropriées du bloc fonction RecipeManCommands de la bibliothèque Recipe_Management.library.
Lors de l'ajout d'une recette, une nouvelle colonne portant le nom de la recette est ajoutée après
la colonne la plus à droite (voir la figure représentant l'éditeur de recette). Les valeurs appropriées
peuvent être insérées dans les champs d'une colonne de recette. Ainsi, pour un même ensemble
de variables il est possible de préparer différents ensembles de valeurs dans des recettes
spécifiques.
Utilisation de recettes en mode en ligne
Il est possible de gérer (créer, lire, écrire, enregistrer, charger, supprimer) des recettes à l'aide des
méthodes du bloc fonction RecipeManCommands fournies dans la bibliothèque Recipe_Management.libray, dans le code de l'application ou par le biais d'entrées sur des éléments de
visualisation.
Traitement des recettes en mode en ligne lorsque la commande Enregistrer automatiquement les
modifications des recettes est activatée :
Actions
Recettes définies dans le projet
Recettes créées lors de l'exécution
Reset chaud en ligne
Reset froid en ligne
Télécharger
Les recettes de toutes les
définitions de recette sont définies
avec les valeurs du projet actuel.
Les recettes créées de façon
dynamique sont inchangées.
Reset origine en ligne
L'application est supprimée du contrôleur. En cas de nouveau
téléchargement ultérieur, les recettes sont restaurées comme lors d'un
Reset chaud en ligne.
Fermer et redémarrer le contrôleur Après le redémarrage, les recettes sont rechargées à partir des fichiers
créés automatiquement. L'état d'avant l'arrêt est donc restauré.
472
Changement en ligne
Les valeurs de la recette sont inchangées. Pendant l'exécution, seules
les commandes du bloc fonction RecipeManCommands permettent de
modifier une recette.
Arrêt
Lors de l'arrêt/démarrage du contrôleur, les recettes sont inchangées.
EIO0000000069 02/2018
Gestionnaire de recettes
Traitement des recettes en mode en ligne lorsque la commande Enregistrer automatiquement les
modifications des recettes N'EST PAS activée :
Actions
Recettes définies dans le projet
Recettes créées lors de l'exécution
Reset chaud en ligne
Reset froid en ligne
Télécharger
Les recettes de toutes les
définitions de recette sont définies
avec les valeurs du projet actuel.
Toutefois, elles sont définies dans
la mémoire uniquement. Pour
enregistrer la recette dans un
fichier, il est nécessaire d'utiliser
de façon explicite la commande
Enregistrer.
Les recettes créées de façon
dynamique sont perdues.
Reset origine en ligne
L'application est supprimée du
contrôleur. Les recettes sont
restaurées en cas de
téléchargement ultérieur.
Les recettes créées de façon
dynamique sont perdues.
Fermer et redémarrer le contrôleur Après le redémarrage, les recettes sont rechargées à partir des valeurs
initiales créées lors du téléchargement avec les valeurs du projet. L'état
d'avant l'arrêt n'est donc pas restauré.
Changement en ligne
Les valeurs de la recette sont inchangées. Pendant l'exécution, seules
les commandes du bloc fonction RecipeManCommands permettent de
modifier une recette.
Arrêt
Lors de l'arrêt/démarrage du contrôleur, les recettes sont inchangées.
Informations complémentaires:
 Pour plus d'informations concernant l'enregistrement des recettes dans des fichiers rechargés
lors du redémarrage de l'application, consultez la description de l'Éditeur de gestionnaire de
recettes, onglet Enregistrement (voir page 468).
 Pour une description des méthodes (voir page 475) propres à RecipeManCommands,
consultez la documentation dans la bibliothèque.
 Pour plus informations sur la configuration d'entrée appropriée d'un élément de visualisation,
consultez la page d'aide (catégorie Entrée → exécuter commande).
Il est possible d'exécuter les actions suivantes sur les recettes :
Actions
Description
Créer la recette (= Insérer la
recette)
Une nouvelle recette est insérée dans la définition de recette indiquée.
Lire la recette
Les valeurs actuelles des variables de la définition de recette indiquée sont
lues à partir du contrôleur et écrites dans la recette spécifiée. Cela signifie
que les valeurs sont stockées de façon implicite (dans un fichier sur le
contrôleur). Elles sont en outre surveillées immédiatement dans la table de
définition de recette dans le Gestionnaire de recettes. Autrement dit, la
recette gérée dans le Gestionnaire de recettes est mise à jour avec les
valeurs réelles du contrôleur.
EIO0000000069 02/2018
473
Gestionnaire de recettes
Actions
Description
Écrire la recette
Les valeurs de la recette donnée, telles qu'afficher dans le gestionnaire de
recettes, sont écrites dans les variables sur le contrôleur.
Enregistrer la recette
Les valeurs de la recette spécifiée sont écrites dans un fichier associé à
l'extension *.txtrecipe dont vous devez définir le nom. La boîte de dialogue
standard d'enregistrement de fichier dans le système de fichier local apparaît
à cet effet.
NOTE : Les fichiers de recette utilisés de façon implicite (tampon nécessaire
pour la lecture et l'écriture des valeurs de recette) ne doivent pas être
remplacés. Le nom du nouveau fichier de recette doit donc être différent de
<nom de la recette>.<nom de la définition de recette>.txtrecipe.
Charger la recette
Les recettes qui ont été stockées dans un fichier (voir la description
Enregistrer la recette) peuvent être rechargées à partir de ce fichier. La boîte
de dialogue standard permettant de rechercher un fichier apparaît à cet effet.
Le filtre est automatiquement réglé sur l'extension *.txtrecipe. Une fois le
fichier rechargé, les valeurs de recettes sont mises à jour en conséquence
dans le gestionnaire de recettes.
Supprimer la recette (=
Remove recipe)
La recette indiquée est supprimée de la définition de recette.
Modifier la recette
Il est possible de modifier la valeur des variables de projet. Suite à l'écriture
d'une recette, les variables de projet appropriées sont écrites avec les
nouvelles valeurs.
Création de tâches de gestion de recettes spécifiques
L'utilisation de fichiers de recette (création, lecture, écriture, suppression) peut affecter les
performances des contrôleurs logiques. Avant d'utiliser ce type de fichier, vous pouvez créer des
tâches spécifiques (voir page 442) ayant une priorité basse et avec la fonction Horloge de
surveillance désactivée.
474
EIO0000000069 02/2018
Gestionnaire de recettes
Commandes de RecipeMan
Présentation
Lors de l'appel d'une commande de recette, le programme accède aux données internes. Suivant
le type d'équipement, cela peut prendre plusieurs millisecondes. Veillez à ce que ces appels ne
soient pas effectués par la tâche MAST ou par une tâche pour laquelle une horloge de surveillance
ou une tâche en temps réel est configurée. Une erreur d'application risque d'être renvoyée et le
contrôleur passera à l'état HALT.
Gardez à l'esprit que l'option Enregistrer automatiquement les modifications des recettes accède
également au fichier à chaque modification de la recette. Désactivez cette option si
l'enregistrement de la recette est déclenché par l'application.
Valeurs renvoyées
Les commandes de recette peuvent renvoyer les valeurs suivantes :
Valeur renvoyée
Description
ERR_NO_RECIPE_MANAGER_SET
Aucun gestionnaire de recettes n'est disponible sur le
contrôleur.
ERR_RECIPE_DEFINITION_NOT_FOUND
La définition de recette n'existe pas.
ERR_RECIPE_ALREADY_EXIST
La recette existe déjà dans la définition de recette.
ERR_RECIPE_NOT_FOUND
La recette n'existe pas dans la définition de recette.
ERR_RECIPE_FILE_NOT_FOUND
Le fichier de recette n'existe pas.
ERR_RECIPE_MISMATCH
Le contenu du fichier de recette ne correspond pas à
la recette actuelle.
NOTE : Cette valeur renvoyée n'est générée que
lorsque le type d'enregistrement est textuel et qu'un
nom de variable dans le fichier ne correspond pas au
nom de la variable dans la définition de la recette. Le
fichier de recette n'est pas chargé.
ERR_RECIPE_SAVE_ERR
Le fichier de recette n'a pas pu être ouvert avec un
accès en écriture.
ERR_FAILED
L'opération a échoué.
ERR_OK
L'opération a réussi.
EIO0000000069 02/2018
475
Gestionnaire de recettes
CreateRecipe
Cette méthode crée une recette dans la définition de recette indiquée, et lit ensuite les valeurs
actuelles du contrôleur dans cette nouvelle recette. À l'issue de l'opération, la nouvelle recette est
enregistrée dans le fichier par défaut.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
ALREADY_EXIST, ERR_FAILED, ERR_OK
CreateRecipeNoSave
Cette méthode crée une recette dans la définition de recette indiquée, et lit ensuite les valeurs
actuelles du contrôleur dans cette nouvelle recette.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
DeleteRecipe
Cette méthode supprime une recette d'une définition de recette.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
476
EIO0000000069 02/2018
Gestionnaire de recettes
DeleteRecipeFile
Cette méthode supprime le fichier de recette standard d'une recette.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_OK
LoadAndWriteRecipe
Cette méthode charge une recette à partir du fichier de recette standard, et écrit ensuite la recette
dans les variables du contrôleur.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_RECIPE_MISMATCH, ERR_FAILED,
ERR_OK
LoadFromAndWriteRecipe
Cette méthode charge une recette à partir du fichier de recette indiqué, et écrit ensuite la recette
dans les variables du contrôleur.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
FileName :
Nom du fichier
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_RECIPE_MISMATCH, ERR_FAILED,
ERR_OK
EIO0000000069 02/2018
477
Gestionnaire de recettes
LoadRecipe
Cette méthode charge une recette à partir du fichier de recette standard nommé
<recette>.<définition de recette>.<extension de la recette>
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_FILE_NOT_FOUND, ERR_RECIPE_MISMATCH, ERR_FAILED,
ERR_OK
ReadAndSaveRecipe
Cette méthode lit les valeurs actuelles du contrôleur dans la recette, et enregistre ensuite celle-ci
dans le fichier de recette standard.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_SAVE_ERR, ERR_FAILED, ERR_OK
ReadAndSaveRecipeAs
Cette méthode lit les valeurs actuelles du contrôleur dans la recette, et enregistre ensuite celle-ci
dans le fichier de recette indiqué. Si le fichier existe déjà, son contenu est remplacé.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
FileName :
Nom du fichier
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_SAVE_ERR, ERR_FAILED, ERR_OK
478
EIO0000000069 02/2018
Gestionnaire de recettes
SaveRecipe
Cette méthode enregistre la recette dans le fichier de recette standard. Si le fichier existe déjà, son
contenu est remplacé. Le fichier de recette standard est nommé <recette>.<définition de la
recette>.<extension de la recette>.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_RECIPE_SAVE_ERR, ERR_FAILED, ERR_OK
ReadRecipe
Cette méthode lit les valeurs actuelles du contrôleur dans la recette.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
WriteRecipe
Cette méthode écrit la recette dans les variables du contrôleur.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName :
Nom de la recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
EIO0000000069 02/2018
479
Gestionnaire de recettes
ReloadRecipes
Cette méthode recharge la liste des recettes à partir du système de fichiers.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_FAILED,
ERR_OK
GetRecipeCount
Cette méthode renvoie le nombre de recettes conformément à la définition de recette
correspondante.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
Valeurs renvoyées : -1 : si la définition de recette est introuvable.
GetRecipeNames
Cette méthode renvoie les noms des recettes à partir de la définition de recette correspondante.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
pStrings :
Chaînes dans lesquelles doivent être enregistrées les valeurs de recette
iSize :
Taille d'un tableau de chaînes
iStartIndex :
Index de début
Utilisable pour une fonction de défilement
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_FAILED,
ERR_OK
Exemple :
Il y a 50 recettes. Pour générer un tableau qui présente les noms de recette 10 par 10, définissez
un tableau de chaînes de caractères :
strArr: ARRAY[0..9] OF STRING;
Il est possible de lire les noms de recette à partir d'une zone spécifique correspondant à l'index
iStartIndex.
480
EIO0000000069 02/2018
Gestionnaire de recettes
iStartIndex := 0;
Les noms 0 à 9 sont renvoyés.
iStartIndex := 20;
Les noms 20 à 29 sont renvoyés. Dans cet exemple :
iSize := 10;
GetRecipeValues
Cette méthode renvoie les valeurs des variables de recette à partir de la recette correspondante.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName
Nom de la recette
pStrings :
Chaînes dans lesquelles doivent être enregistrées
les valeurs de recette
iSize :
Taille d'un tableau de chaînes
iStartIndex :
Index de début
Utilisable pour une fonction de défilement
iStringLength :
Longueur de la chaîne de caractères dans le tableau
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
Exemple :
Il y a 50 recettes. Pour générer un tableau qui présente les noms de recette 10 par 10, définissez
un tableau de chaînes de caractères :
strArr: ARRAY[0..9] OF STRING;
Il est possible de lire les noms de recette à partir d'une zone spécifique correspondant à l'index
iStartIndex.
iStartIndex := 0;
Les valeurs 0 à 9 sont renvoyées.
iStartIndex := 20;
Les valeurs 20 à 29 sont renvoyées. Dans cet exemple :
iStringLength := 80;
iSize := 10;
EIO0000000069 02/2018
481
Gestionnaire de recettes
GetRecipeVariableNames
Cette méthode renvoie le nom des variables de la recette correspondante.
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName
Nom de la recette
pStrings :
Chaînes dans lesquelles doivent être enregistrées
les valeurs de recette
iSize :
Taille d'un tableau de chaînes
iStartIndex :
Index de début
Utilisable pour une fonction de défilement
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
Exemple :
Il y a 50 recettes. Pour générer un tableau qui présente les noms de recette 10 par 10, définissez
un tableau de chaînes de caractères :
strArr: ARRAY[0..9] OF STRING;
Il est possible de lire les noms de recette à partir d'une zone spécifique correspondant à l'index
iStartIndex.
iStartIndex := 0;
Les noms 0 à 9 sont renvoyés.
iStartIndex := 20;
Les noms 20 à 29 sont renvoyés. Dans cet exemple :
iSize := 10;
SetRecipeValues
Cette méthode définit les valeurs des recettes dans la recette correspondante.
482
Paramètre
Description
RecipeDefinitionName :
Nom de la définition de recette
RecipeName
Nom de la recette
pStrings :
Chaînes dans lesquelles doivent être enregistrées
les valeurs de recette
iSize :
Taille d'un tableau de chaînes
EIO0000000069 02/2018
Gestionnaire de recettes
Paramètre
Description
iStartIndex :
Index de début
Utilisable pour une fonction de défilement
Valeurs renvoyées (voir page 475) :
ERR_NO_RECIPE_MANAGER_SET, ERR_RECIPE_DEFINITION_NOT_FOUND, ERR_RECIPE_
NOT_FOUND, ERR_FAILED, ERR_OK
Exemple :
Il y a 50 recettes. Pour générer un tableau qui présente les noms de recette 10 par 10, définissez
un tableau de chaînes de caractères :
strArr: ARRAY[0..9] OF STRING;
Il est possible de lire les noms de recette à partir d'une zone spécifique correspondant à l'index
iStartIndex.
iStartIndex := 0;
Les valeurs 0 à 9 sont définies.
iStartIndex := 20;
Les valeurs 20 à 29 sont définies. Dans cet exemple :
iStringLength := 80;
iSize := 10;
GetLastError
Cette méthode renvoie la dernière erreur détectée dans les opérations précédentes.
Valeurs renvoyées (voir page 475) : ERR_NO_RECIPE_MANAGER_SET, ERR_OK
ResetLastError
Cette méthode réinitialise la dernière erreur détectée.
Valeurs renvoyées (voir page 475) : ERR_NO_RECIPE_MANAGER_SET, ERR_OK
EIO0000000069 02/2018
483
Gestionnaire de recettes
484
EIO0000000069 02/2018
SoMachine
Éditeur de suivi
EIO0000000069 02/2018
Chapitre 24
Éditeur de suivi
Éditeur de suivi
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
24.1
Objet de suivi
486
24.2
Configuration de suivi
492
24.3
Éditeur de suivi en mode en ligne
509
24.4
Opérations du clavier pour les diagrammes de suivi
510
EIO0000000069 02/2018
485
Éditeur de suivi
Sous-chapitre 24.1
Objet de suivi
Objet de suivi
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
486
Page
Présentation de la fonction de suivi
487
Création d'un objet de suivi
489
EIO0000000069 02/2018
Éditeur de suivi
Présentation de la fonction de suivi
Fonctionnalité de suivi
La fonctionnalité de suivi permet de capturer la progression des valeurs des variables sur le
contrôleur sur une période donnée, un peu comme un oscilloscope à échantillonnage numérique.
Vous pouvez également définir un déclencheur pour contrôler la capture des données avec des
signaux d'entrée (déclencheur). Les valeurs des variables de suivi sont régulièrement écrites dans
un tampon de taille définie de SoMachine. Elles apparaissent sous la forme d'un graphique en
deux dimensions tracé en fonction du temps.
Méthode de traçage des données
Le traçage des données sur le contrôle s'effectue de deux façons différentes :
 soit à partir du code IEC généré par l'objet de suivi et téléchargé sur le contrôleur par une
application enfant de suivi ;
 soit dans le composant CmpTraceMgr (aussi appelé gestionnaire de suivi).
Une entrée au niveau des paramètres cible (suivi → gestionnaire de suivi) détermine le type de de
données utilisé.
Le gestionnaire de suivi dispose de fonctionnalités avancées. Elle vous permet d'effectuer les
actions suivantes :
 configurer et suivre les paramètres du système de contrôle, tels que la courbe de la
température du processeur ou de la batterie. Pour plus d'informations, consultez les paramètres
de variables (voir page 493) et les paramètres d'enregistrement (déclencheur) (voir page 496).
 lire les suivis des équipements, comme le suivi du courant électrique d'un lecteur. Pour plus
d'informations, consultez la description de la commande (voir SoMachine, Commandes de
menu, Aide en ligne) Télécharger le suivi en amont.
 suivre les variables système des autres composants du système d'exécution.
La commande (voir SoMachine, Commandes de menu, Aide en ligne) supplémentaire Liste en
ligne est en outre disponible.
NOTE :
Si un suivi est utilisé dans la visualisation, il est impossible de suivre ou d'utiliser comme
déclencheur les paramètres des équipements.
 Le niveau de déclenchement ne peut pas être défini dans une expression IEC, seuls les littéraux
et les constantes sont pris en charge.
 Il est impossible de définir la condition d'enregistrement avec une expression IEC de type
BOOL, seules les variables sont prises en charge.
 Si une propriété est suivie ou utilisée comme déclencheur, elle doit être annotée avec la
surveillance attribute monitoring (voir page 602) dans la déclaration IEC.

EIO0000000069 02/2018
487
Éditeur de suivi
Configuration
Configurez les données de suivi et leurs paramètres d'affichage dans la Configuration. Des
commandes sont alors disponibles pour accéder aux boîtes de dialogue de configuration. Il est
possible de suivre et d'afficher simultanément plusieurs variables dans des affichages différents
comme avec le mode multicanal. Enregistrez les suivis des variables avec différents paramètres
déclencheur dans un objet de suivi propre. Vous pouvez créer autant d'objets de suivi que vous le
souhaitez.
Arborescence des outils avec plusieurs objets de suivi
Les commandes permettant de modifier les paramètres d'affichage sont décrites dans le
paragraphe Fonctionnalités (voir page 490). Des fonctionnalités de zoom et un curseur sont
disponibles, ainsi que des commandes permettant d'exécuter le suivi, afin que le graphique puisse
être réduit ou agrandi.
Pour intégrer la lecture d'un suivi dans une visualisation, utilisez l'élément Suivi de la visualisation.
488
EIO0000000069 02/2018
Éditeur de suivi
Création d'un objet de suivi
Présentation
Pour insérer un objet de suivi dans l'arborescence des outils, sélectionnez le nœud Application,
cliquez sur le signe plus de couleur verte pour exécuter la commande Ajouter d'autres objets →
Suivi... Double-cliquez sur le nœud Suivi dans l'Arborescence des outils pour ouvrir l'éditeur de
suivi.
Configuration
Nouveau suivi et menu contextuel
Un suivi contient au moins une variable échantillonnée.
Les variables de suivi configurées sont affichées dans la zone de l'arborescence des suivis, à
droite de la fenêtre. Par défaut, elles apparaissent avec le chemin d'instance complet.
Activez la case à cocher Masquer les chemins d'instance pour masquer le chemin d'instance. Pour
afficher cette case à cocher, cliquez sur le bouton représentant une flèche située en haut à droite
de la zone de l'arborescence des suivis.
Pour configurer ou modifier les paramètres de suivi, utilisez les commandes du menu contextuel
dans la zone de l'arborescence des suivis :
 Ajouter une variable... : permet d'accéder à la boîte de dialogue Configuration de suivi
contenant les Paramètres de variables (voir page 493).
 Supprimer variable : permet de supprimer la variable sélectionnée. Disponible uniquement s'il
existe au moins une variable de suivi.
 Visible : cette commande rend visible la variable sélectionnée. Disponible uniquement s'il existe
au moins une variable de suivi.
EIO0000000069 02/2018
489
Éditeur de suivi


Apperence... : permet d'accéder à la boîte de dialogue (voir page 502) Modifier paramètres
d'affichage. Vous pouvez y configurer l'apparence du graphique et le système de coordonnées.
Cette commande est grisée tant qu'une configuration n'est pas chargée.
Configuration... : permet d'accéder à la boîte de dialogue Configuration de suivi contenant les
Paramètres d'enregistrement (voir page 496).
Fonctionnalités
Pour exécuter le suivi, utilisez les commandes suivantes :
 Ajouter variable (voir SoMachine, Commandes de menu, Aide en ligne)
 Téléchargement de suivi (voir SoMachine, Commandes de menu, Aide en ligne)
 Démarrer / arrêter le suivi (voir SoMachine, Commandes de menu, Aide en ligne)
 Réinitialiser déclencheur (voir SoMachine, Commandes de menu, Aide en ligne)
Pour personnaliser l'affichage des graphiques, utilisez les commandes suivantes :
 Curseur (voir SoMachine, Commandes de menu, Aide en ligne)
 Zoomer (voir SoMachine, Commandes de menu, Aide en ligne)
 Reset View (voir SoMachine, Commandes de menu, Aide en ligne)
 Graduation automatique (voir SoMachine, Commandes de menu, Aide en ligne)
 Compresser (voir SoMachine, Commandes de menu, Aide en ligne)
 Étendre (voir SoMachine, Commandes de menu, Aide en ligne)
 Multicanal (voir SoMachine, Commandes de menu, Aide en ligne)
 Pour plus d'informations, consultez le chapitre (voir page 510) Opérations du clavier pour les
diagrammes de suivi.
Pour accéder aux suivis enregistrés sur le système d'exécution, utilisez les commandes
suivantes :
 Liste en ligne (voir SoMachine, Commandes de menu, Aide en ligne)
 Télécharger le suivi en amont (voir SoMachine, Commandes de menu, Aide en ligne)
Pour accéder aux suivis enregistrés sur le disque, utilisez les commandes suivantes :
 Enregistrer le suivi... (voir SoMachine, Commandes de menu, Aide en ligne)
 Charger le suivi... (voir SoMachine, Commandes de menu, Aide en ligne)
 Exporter une configuration de suivi symbolique (voir SoMachine, Commandes de menu, Aide
en ligne)
Mise en route
Pour commencer le suivi en mode en ligne, téléchargez la configuration de suivi sur le contrôleur
à l'aide de la commande Téléchargement de suivi. Les graphiques des variables de suivi
s'affichent dans la fenêtre de l'éditeur de suivi d'où vous pouvez les enregistrer dans un fichier
externe. Il est possible de recharger ce fichier dans l'éditeur. Voir aussi le chapitre Éditeur de suivi
en mode en ligne (voir page 509).
490
EIO0000000069 02/2018
Éditeur de suivi
Étape
Action
1
Connexion à l'application associée et exécution.
Résultat : l'application s'exécute sur le contrôleur.
2
Téléchargement du suivi
Résultat : les graphiques de suivi s'affichent immédiatement conformément à la configuration de
suivi.
3
Agencement des graphiques de suivi, enregistrement des données de suivi, arrêt/démarrage du
suivi.
Exemple
L'éditeur de suivi contient un exemple de suivi en mode en ligne. Quatre variables ont été
sélectionnées dans l'arborescence des variables située à droite de la boîte de dialogue en vue de
leur affichage.
Suivi en mode en ligne
EIO0000000069 02/2018
491
Éditeur de suivi
Sous-chapitre 24.2
Configuration de suivi
Configuration de suivi
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
492
Page
Paramètres de variables
493
Paramètres d'enregistrement
496
Paramètres avancés de suivi
500
Modifier les paramètres d'affichage
502
Représentation axe Y
507
EIO0000000069 02/2018
Éditeur de suivi
Paramètres de variables
Présentation
La boîte de dialogue Configuration de suivi contenant les Paramètres de variables s'affiche
lorsque vous sélectionnez une variable de suivi dans l'arborescence des suivis. Elle permet de
configurer les variables à suivre ainsi que leur affichage.
Boîte de dialogue Configuration de suivi avec les Paramètres de variables
Les variables de suivi sont affichées sous forme d'arborescence dans la partie gauche de la
fenêtre. Le premier nœud porte le nom du suivi.
Ajout et suppression d'une variable de suivi
Pour ajouter une variable dans l'arborescence de suivi ou en supprimer une, utilisez les
commandes situées sous l'arborescence des suivis :
Commande
Description
Ajouter variable
Permet de créer une entrée anonyme dans l'arborescence des
suivis.
Dans la partie droite de la boîte de dialogue, les paramètres de la
nouvelle variable sont prêts à être configurés.
Supprimer variable
Permet de supprimer la variable sélectionnée ainsi que la
configuration associée..
EIO0000000069 02/2018
493
Éditeur de suivi
Définition et modification des paramètres de variables
Pour choisir les paramètres de variables, sélectionnez la variable souhaitée dans l'arborescence
des suivis. Les paramètres actuels sont affichés dans la partie droite de la fenêtre de configuration
de suivi. Pour modifier les paramètres de variables par la suite, sélectionnez l'entrée de variable
dans l'arborescence des suivis et passez de nouveau par la boîte de dialogue Paramètres de
variables.
Paramètre
Description
Variable
Entrez le nom (chemin) du signal pour indiquer quel signal sera suivi.
Un signal valide est une variable IEC, une propriété, une référence, le contenu du
pointeur ou un élément de tableau de l'application. Types autorisés : tous les types
IEC de base, sauf STRING, WSTRING ou ARRAY. Les énumérations sont également
autorisées, même si le type de base est différent de STRING, WSTRING ou ARRAY.
Cliquez sur le bouton ... pour ouvrir l'aide à la saisie dans laquelle vous pouvez obtenir
une entrée valide.
Une liste s'affiche lorsque vous cliquez sur le paramètre Variable : des contrôleurs qui
prennent en charge le suivi des paramètres. Pour suivre un paramètre d'équipement,
sélectionnez l'élément Paramètre dans la liste. Vous pouvez ensuite en rechercher
un avec l'aide à la saisie. Modifiez ou vérifiez les paramètres actuels de la variable.
Les paramètres des équipements sont pris en charge uniquement lorsque le
composant CmpTraceMgr est utilisé. Si des paramètres d'équipement sont utilisés
pour des variables de suivi (ou de déclenchement), il est impossible d'activer l'option
Créer module de suivi pour visualisation.
NOTE : Si CmpTraceMgr est utilisé pour le suivi, une Propriété (voir page 176)
utilisée comme variable de suivi (ou de déclenchement) doit obtenir l'attribut de
compilateur Surveillance des attributs (voir page 602).
Couleur
Dans la liste de sélection des couleurs, sélectionnez la couleur d'affichage de la
courbe de suivi de la variable.
Type de ligne
Indiquez la façon dont les échantillons seront connectés dans le graphique. Utilisez
Ligne pour de grands volumes de données. Cette valeur est par ailleurs utilisée par
défaut.
Ligne
Les échantillons sont connectés à une ligne (valeur par défaut).
Niveau
Les échantillons sont connectés sous forme d'escalier, soit une ligne horizontale
jusqu'à l'horodatage de l'échantillon suivant, suivie d'une ligne verticale jusqu'à la
valeur de l'échantillon suivant.
Aucun
Les échantillons ne sont pas connectés.
Point
Les échantillons sont tracés sous forme de points (valeur par défaut).
Croix
Les échantillons sont tracés sous forme de croix.
Aucun
Les échantillons ne sont pas affichés.
Type de point
Indiquez la façon dont les valeurs elles-mêmes seront tracées dans le graphique.
Activer la limite inférieure
494
Si cette option est activée, le graphique de suivi s'affiche dans la couleur définie dans
le champ Couleur dès que la variable dépasse la valeur définie dans le champ Limite
inférieure.
EIO0000000069 02/2018
Éditeur de suivi
Paramètre
Description
Limite inférieure
Si la valeur de la variable entrée ici est inférieure et que l'option Activer la limite
inférieure est activée, les valeurs de la courbe prennent les couleurs définies.
Couleur
Couleur de la limite inférieure activée.
Activer la limite supérieure
Si cette option est activée, le graphique de suivi s'affiche dans la couleur définie dans
le champ Couleur dès que la variable dépasse la valeur définie dans le champ Limite
supérieure.
Limite supérieure
Si la valeur de la variable entrée ici est supérieure et que l'option Activer la limite
supérieure est activée, les valeurs de la courbe prennent les couleurs définies.
Couleur
Couleur de la limite supérieure activée.
Apparence...
Affiche la boîte de dialogue Représentation axe Y. Elle permet de définir l'affichage
de la fenêtre de suivi pour l'axe Y configuré (couleurs et type de défilement) pour
chaque variable. Ces paramètres sont utilisés lorsque le diagramme de suivi s'affiche
dans un affichage multicanal.
Sélection multiple des variables
Les raccourcis clavier Maj+clic de la souris ou Ctrl+clic de la souris permettent de sélectionner
plusieurs variables en vue de leur modification. Les modifications apportées dans la boîte de
dialogue Paramètres de variables s'appliquent à toutes les variables sélectionnées. Il en va de
même avec les raccourcis Maj+Flèche pointant vers le haut/bas ou Ctrl+Flèche pointant vers le
haut/bas.
Sélection multiple dans la boîte de dialogue Configuration de suivi
EIO0000000069 02/2018
495
Éditeur de suivi
Paramètres d'enregistrement
Présentation
La boîte de dialogue Configuration de suivi contenant les Paramètres d'enregistrement apparaît
lorsque vous exécutez la commande Configuration... ou lorsque vous double-cliquez sur le nom
du suivi en haut de l'arborescence des suivis. La commande de configuration est également
disponible dans le menu contextuel de l'arborescence des suivis située à droite de la fenêtre
principale de l'éditeur de suivi.
NOTE : Les paramètres définis dans la boîte de dialogue Configuration de suivi contenant les
Paramètres d'enregistrement sont valides pour toutes les variables du graphique de suivi.
Informations de base sur le déclenchement
Dans la plupart des cas, il n'est pas souhaitable de commencer le suivi et l'affichage des signaux
d'entrée de façon aléatoire, comme immédiatement après la mesure précédente ou lorsque
l'utilisateur appuie sur le bouton de démarrage. Le plus souvent, il est préférable d'effectuer le suivi
à partir de l'activation d'un déclencheur pour le nombre d'enregistrements (après déclenchement)
configurés. Ce déclenchement doit être défini dans la présente boîte de dialogue.
Le déclenchement des signaux d'entrée peut s'effectuer comme suit :
configuration d'une variable de déclenchement ;
 configuration d'une condition d'enregistrement ;
 ou les deux.

496
EIO0000000069 02/2018
Éditeur de suivi
Définition et modification des paramètres d'enregistrement (déclencheur)
Boîte de dialogue Configuration de suivi avec les Paramètres d'enregistrement
Paramètre
Description
Activer déclencheur
Sélectionnez cette case à cocher pour activer le système de déclenchement. Il est
possible de l'activer et de la désactiver indépendamment des paramètres situés
dessous. Si le système de déclenchement est désactivé, le suivi s'exécute librement.
EIO0000000069 02/2018
497
Éditeur de suivi
Paramètre
Description
Variable déclencheur
Définissez une variable. Définissez le signal qui tiendra lieu de déclencheur en
entrant son nom (et chemin).
Déclencheur valide : variable IEC, propriété, référence, pointeur, élément de tableau
de l'application ou expression. Types autorisés : tous les types IEC de base, sauf
STRING, WSTRING ou ARRAY. Les énumérations sont également autorisées,
même si le type de base est différent de STRING, WSTRING ou ARRAY. Le contenu
d'un pointeur n'est pas un signal valide. Cliquez sur le bouton ... pour ouvrir l'aide à
la saisie dans laquelle vous pouvez obtenir une entrée valide.
Une liste s'affiche lorsque vous cliquez sur le paramètre Variable déclencheur : des
contrôleurs qui prennent en charge les paramètres d'équipement comme
déclencheurs. Pour utiliser un paramètre d'équipement comme déclencheur,
sélectionnez l'élément Paramètre de déclencheur dans la liste. Ouvrez l'aide à la
saisie à l'aide du bouton ... et sélectionnez des paramètres traçables. Les paramètres
disponibles sur le système figurent sous Éléments. Vous pouvez également saisir les
noms des paramètres directement dans la zone de texte ou les copier et les coller (à
partir d'une autre configuration). Les paramètres des équipements sont pris en
charge uniquement lorsque le gestionnaire de suivi est utilisé.
NOTE : Si CmpTraceMgr est utilisé pour le suivi, une Propriété (voir page 176)
utilisée comme variable de suivi (ou de déclenchement) doit obtenir l'attribut de
compilateur Surveillance des attributs (voir page 602).
Front de déclencheur
–
positif
Événement déclencheur sur le front montant de la variable de déclenchement
booléenne. Ou dès que la valeur de la variable de déclenchement analogique définie
dans le champ Niveau déclenchement est atteinte par une exécution ascendante.
négatif
Événement déclencheur sur le front descendant de la variable de déclenchement
booléenne. Ou dès que la valeur de la variable de déclenchement analogique définie
dans le champ Niveau déclenchement est atteinte par une exécution descendante.
les deux
Événement déclencheur sur les conditions décrites pour les options positif et négatif.
Post-déclencheur
Entrez le nombre d'enregistrements par signal de suivi enregistrés après l'activation
du déclencheur.
Valeur par défaut : 50
Plage : 0 à (232-1)
Niveau déclenchement
Entrez la valeur d'activation du déclencheur.
L'option Front de déclencheur permet d'indiquer si le déclencheur est activé sur un
front montant ou descendant de la variable de déclenchement. Il doit être défini si et
seulement si la variable utilisée comme variable de déclenchement est analogique
(variable de type numérique, telle que LREAL ou INT).
Entrez directement une valeur. Une constante GVL ou une valeur ENUM est
autorisée si son type est convertible en type de variable de déclenchement.
Si le code IEC est utilisé, vous pouvez également entrer une expression IEC
aléatoire d'un type pouvant être converti en même type que celui de variable de
déclenchement.
Valeur par défaut : – (vide)
498
EIO0000000069 02/2018
Éditeur de suivi
Paramètre
Description
Tâche
Dans la liste des tâches disponibles, sélectionnez celle dans laquelle a lieu la capture
des signaux d'entrée.
Condition d'enregistrement
Si vous souhaitez commencer l'enregistrement par une condition, entrez une
variable dans ce champ. Si le suivi démarre avant, par exemple, en appuyant sur le
bouton de démarrage, et que la valeur TRUE est associée à cette variable, la capture
des données commence et le graphique du suivi est affiché.
Si CmpTraceMgr est utilisé, la condition d'enregistrement doit correspondre à une
variable de type BOOL ou d'accès binaire. Le contenu d'un pointeur ne constitue pas
une entrée valide. Les propriétés sont également prises en charge.
Si le code IEC est utilisé, il est également possible d'entrer une expression IEC
aléatoire de type BOOL.
Commentaire
Entrez un commentaire sur l'enregistrement actuel.
Résolution
Entrez une résolution de l'horodatage du suivi en ms ou en μs.
Pour chaque signal capturé, des paires de valeur et d'horodatage sont enregistrées
et transmises au système de programmation. Les horodatages transmis sont relatifs
et font référence au début du suivi.
Si le cycle du suivi est de 1 ms ou moins, il est recommandé d'exprimer la résolution
de l'horodatage en μs. Cette option est possible uniquement lorsqu'un gestionnaire
de suivi est disponible sur le contrôleur.
Créer un enregistrement
persistant
Définissez cette option si la configuration du suivi et le dernier contenu des tampons
de suivi RTS doivent être enregistrés de façon persistante sur l'équipement cible.
Cette option est possible uniquement lorsqu'un gestionnaire de suivi est actif sur le
contrôleur.
Apparence...
Affiche la boîte de dialogue (voir page 507) Représentation axe Y. Vous pouvez y
configurer l'affichage de la fenêtre de suivi pour l'enregistrement configuré actuel,
comme les axes, les couleurs et le type de défilement.
Avancé...
Cliquez sur ce bouton pour accéder à la boîte de dialogue (voir page 500)
Paramètres avancés de suivi. Elle permet de définir des paramètres
supplémentaires pour le déclencheur de suivi.
NOTE : Pour capturer et afficher un signal de suivi sur une base temporelle différente, vous devez
effectuer une configuration d'enregistrement dans un objet du suivi distinct.
EIO0000000069 02/2018
499
Éditeur de suivi
Paramètres avancés de suivi
Présentation
La boîte de dialogue Paramètres avancés de suivi apparaît lorsque vous cliquez sur le bouton
Avancé... dans la boîte de dialogue Configuration de suivi contenant les Paramètres
d'enregistrement.
Boîte de dialogue Paramètres avancés de suivi
Un intervalle de temps apparaît en regard de toutes les valeurs fournies dans les enregistrements
ou dans les cycles (par exemple, 1m39s990ms). L'intervalle de temps des tampons contient le
tampon dans son intégralité. Si la tâche n'est pas définie, si elle n'est pas cyclique ou ne constitue
pas une tâche système, son temps de cycle est inconnu. Dans ce cas, il est impossible de calculer
la période qui n'apparaît donc pas à droite du champ.
Description des paramètres
500
Paramètre
Description
Fréquence d'actualisation (ms)
Les paires de données capturées (valeur avec horodatage) du suivi
sont enregistrées dans le tampon de l'éditeur de suivi selon cet
intervalle de temps.
Plage : 150 ms à 10000 ms
Valeur par défaut : 500 ms
Si le gestionnaire de suivi est utilisé, les paires de données sont
transférées selon cet intervalle du système d'exécution vers le
système de programmation.
Si le gestionnaire de suivi n'est pas utilisé, les données sont
transmises au système de programmation toutes les 200 ms.
EIO0000000069 02/2018
Éditeur de suivi
Paramètre
Description
Taille de la mémoire tampon de
l'éditeur de suivi (enregistrements)
Entrez la taille de la mémoire tampon du suivi en nombre
d'échantillons (enregistrement). Elle doit être supérieure ou égale à
deux fois la taille de la mémoire tampon du système d'exécution.
Plage : 1 à 107
Mesure à chaque n-ième cycle
Dans la liste, sélectionnez un intervalle de temps (en cycles de
tâches) pour la capture du signal d'entrée.
Valeur par défaut et valeur minimale : 1 (soit une mesure à chaque
cycle)
Taille de la mémoire tampon du
système d'exécution recommandé
(enregistrements)
Le nombre d'enregistrements recommandé dans la mémoire
tampon pour chaque signal de suivi est affiché. Cette valeur est
calculée à partir du temps de cycle de la tâche, du délai
d'actualisation et de la valeur du champ Mesure à chaque n-ième
cycle. Ceci signifie qu'une mémoire tampon est affectée à chaque
variable de suivi.
NOTE : La taille de la mémoire tampon est exprimée en
enregistrements et une mémoire tampon est créée pour chaque
variable de suivi.
Remplacer la taille de la mémoire
tampon recommandée avec
EIO0000000069 02/2018
Lorsque cette option est sélectionnée, la valeur saisie ici est utilisée,
plutôt que la valeur par défaut de la taille de la mémoire tampon.
Exemple : plage : 10 à la taille de la mémoire tampon de l'éditeur de
suivi
501
Éditeur de suivi
Modifier les paramètres d'affichage
Présentation
La boîte de dialogue Modifier les paramètres d'affichage apparaît lorsque vous cliquez sur le
bouton Apparence... dans la boîte de dialogue Configuration de suivi contenant les Paramètres
d'enregistrement.
Les paramètres suivants définissent l'apparence du système de coordonnées et des axes X/Y
associés. Les paramètres de l'axe Y sont utilisés lorsque le diagramme de suivi s'affiche dans un
affichage de canal unique. Dans les affichages multicanaux, les paramètres définis dans la boîte
de dialogue Représentation axe Y sont utilisés.
Les paramètres de l'axe X/Y (définis dans la partie gauche) et le système de coordonnées sont
appliqués immédiatement au système de coordonnées affichées à droite.
Les boutons suivants permettent de gérer les paramètres :
502
Bouton
Description
Réinitialiser
Cette commande permet de réinitialiser l'apparence par défaut.
Utiliser par défaut
Cette commande permet de définir l'apparence actuelle comme
apparence par défaut. Elle est utilisée lors de la configuration d'un
nouveau suivi ou d'une nouvelle variable.
EIO0000000069 02/2018
Éditeur de suivi
Onglet Axe X
Onglet Axe X de la boîte de dialogue Modifier les paramètres d'affichage
Paramètre
Description
Mode d'affichage
EIO0000000069 02/2018
Sélectionnez le mode d'affichage.
Auto
Si cette option est activée, l'axe de temps et dimensionné automatiquement
en fonction du contenu de la mémoire tampon de l'éditeur de suivi
(voir page 500). Le contenu actuel de la mémoire tampon de suivi s'affiche
sous forme de diagramme. Il est inutile de définir d'autres entrées.
Longueur fixe
Si cette option est activée, la longueur de l'intervalle affiché sur l'axe de
temps est fixe.
Définissez cette longueur à l'aide du paramètre Longueur. L'échelle est
également ajustée en fonction de la longueur. Le graphique défile
automatiquement jusqu'à une plage visible. Un intervalle de temps apparaît
donc dans le diagramme avec la longueur configurée et les dernières
données associées. Le nombre de valeurs correspond aux valeurs
enregistrées. Dès que de nouvelles données sont enregistrées, l'affichage
défile.
Fixe
Si cette option est activée, l'intervalle d'affichage sur l'axe X est défini par la
valeur minimale et la valeur maximale.
503
Éditeur de suivi
Paramètre
Description
Minimum
Cette valeur définit la valeur minimale affichée sur l'axe de temps.1
Maximum
Cette valeur définit la valeur maximale affichée sur l'axe de temps.1
Longueur
Cette valeur définit la longueur de l'intervalle affiché sur l'axe de temps.1
Grille
Si cette option est activée, une grille s'affiche. Sélectionnez la couleur des
lignes de la grille dans la liste.
Graduations
–
Distance fixe
Activez cette case à cocher pour mettre à l'échelle l'axe avec des distances
données.
Distance
Entrez une distance positive. L'axe X représente le temps avec par
défaut 1s.
Subdivisions
Police
1
504
Entrez un nombre raisonnable de subdivisions pour chaque distance.
Ouvre la boîte de dialogue standard permettant de définir la police pour
l'affichage du suivi.
Il est inutile de faire précéder les entrées relatives au temps du préfixe # comme c'est le cas avec le code IEC.
Exemple de saisies de temps possibles : 2s, 1ms ou 1m20s14ms. Pour les microsecondes, utilisez l'unité us, par
exemple 122ms500us. La résolution de l'axe de temps détermine également les valeurs utiles.
EIO0000000069 02/2018
Éditeur de suivi
Onglet Axe Y
Onglet Axe Y de la boîte de dialogue Modifier paramètres d'affichage.
Paramètre
Description
Mode d'affichage
Sélectionnez le mode d'affichage.
Auto
Lorsque cette option est activée, l'axe Y est automatiquement mis à l'échelle en fonction
des valeurs capturées. Aucune autre entrée ne doit être définie.
Fixe
Lorsque cette option est activée, la section affichée de l'axe Y est définie par les valeurs
minimale et maximale.
Minimum
Cette valeur définit la valeur minimale affichée de l'axe Y.
Maximum
Cette valeur définit la valeur maximale affichée de l'axe Y.
Grille
Si cette option est activée, une grille s'affiche. Sélectionnez la couleur des lignes de la
grille dans la liste.
Description
Si cette option est activée, le texte saisi dans le champ est associé à l'axe Y.
Graduations
–
EIO0000000069 02/2018
505
Éditeur de suivi
Paramètre
Description
Distance Activez cette case à cocher pour mettre à l'échelle l'axe avec des distances données.
fixe
Distance Entrez une distance positive.
Par défaut : 1
Subdivisi Entrez un nombre (de 1 à 10) de subdivisions pour chaque distance.
ons
Police
Cliquez sur ce bouton pour accéder à la boîte de dialogue standard permettant de définir
la police de l'affichage du suivi.
Paramètres du système de coordonnées
506
Paramètre
Description
Couleur d'arrière-plan
Choisissez la couleur d'arrière-plan du système de coordonnées
dans la liste. Cette couleur est utilisée tant que le diagramme n'est
pas sélectionné dans la fenêtre de suivi.
Couleur de sélection
Choisissez la couleur d'arrière-plan du système de coordonnées
dans la liste. Cette couleur est utilisée aussi longtemps que le
diagramme est sélectionné dans la fenêtre de suivi.
EIO0000000069 02/2018
Éditeur de suivi
Représentation axe Y
Présentation
La boîte de dialogue Représentation axe Y apparaît lorsque vous cliquez sur le bouton
Apparence... dans la boîte de dialogue Configuration de suivi contenant les Paramètres de
variables.
Les paramètres suivants définissent l'apparence de l'axe Y. Ils sont utilisés lorsque le diagramme
de suivi apparaît dans un affichage multicanal.
Boîte de dialogue Représentation axe Y
Paramètre
Description
Mode d'affichage
Sélectionnez le mode d'affichage.
Auto
Lorsque cette option est activée, l'axe Y est automatiquement mis à
l'échelle en fonction des valeurs capturées. Aucune autre entrée ne
doit être définie.
Fixe
Lorsque cette option est activée, la section affichée de l'axe Y doit
être définie par les valeurs minimale et maximale.
Minimum
Cette valeur définit la valeur minimale affichée de l'axe Y.
Maximum
Cette valeur définit la valeur maximale affichée de l'axe Y.
Grille
Si cette option est activée, une grille s'affiche. Sélectionnez la
couleur des lignes de la grille dans la liste.
Description
Si cette option est activée, le texte saisi dans le champ est associé
à l'axe Y.
Graduations
–
EIO0000000069 02/2018
507
Éditeur de suivi
Paramètre
Police
508
Description
Distance fixe
Activez cette case à cocher pour mettre à l'échelle l'axe avec des
distances données.
Distance
Entrez une distance positive.
Par défaut : 1
Subdivisions
Entrez un nombre de subdivisions pour chaque distance.
Ouvre la boîte de dialogue standard permettant de définir la police
pour l'affichage du suivi.
EIO0000000069 02/2018
Éditeur de suivi
Sous-chapitre 24.3
Éditeur de suivi en mode en ligne
Éditeur de suivi en mode en ligne
Éditeur de suivi en mode en ligne
Présentation
Si un suivi est en cours d'exécution sur l'équipement, la boîte de dialogue de suivi Liste en ligne
(voir SoMachine, Commandes de menu, Aide en ligne) le signale.
Téléchargement du suivi
Pour commencer le suivi en mode en ligne, procédez au téléchargement explicite du suivi sur le
contrôleur à l'aide de la commande du menu (voir SoMachine, Commandes de menu, Aide en
ligne) Suivi → Téléchargement de suivi pendant que l'application est connectée. Les graphiques
des signaux de suivi s'affichent dans la fenêtre de l'éditeur du suivi.
Lors des connexions à l'application et des déconnexions sans la modifier, les suivis s'exécutent
sans nouveau téléchargement.
En cas de modification du code de l'application, le sort des suivis dépend du mode de connexion :
Se connecter avec changement en ligne ou Se connecter sans changement : l'exécution des
suivis se poursuit.
 Se connecter avec téléchargement : les suivis sur le contrôleur sont supprimés et doivent être
téléchargés de nouveau si nécessaire.

Modification en ligne de la configuration du graphique de suivi
La boîte de dialogue Configuration du suivi contenant les Paramètres d'enregistrement et la boîte
de dialogue Configuration de suivi contenant les Paramètres de variables sont accessibles en
mode en ligne et permettent d'apporter un certain nombre de modifications à la configuration du
suivi pendant son exécution. Si l'opération s'avère impossible, lors de la modification du nom du
signal de suivi, par exemple, le suivi est arrêté et il est nécessaire de procéder à un nouveau
téléchargement.
Navigation en ligne du graphique de suivi
La plage affichée des valeurs des variables de suivi capturées ne dépend pas uniquement de la
configuration du suivi. Il est également possible de la réorganiser avec les fonctionnalités de
défilement et de zoom disponible dans le menu Suivi, dans la barre d'outils ou à partir de
raccourcis. Pour plus d'informations sur la navigation dans le diagramme de suivi, consultez le
chapitre Raccourcis clavier (voir page 510).
EIO0000000069 02/2018
509
Éditeur de suivi
Sous-chapitre 24.4
Opérations du clavier pour les diagrammes de suivi
Opérations du clavier pour les diagrammes de suivi
Raccourcis clavier
Présentation
Le tableau suivant décrit les actions avec le clavier et la souris :
Actions
Avec le clavier
Se déplacer horizontalement dans Aucun curseur de trace :
 FLÈCHE VERS LA
le graphique de trace, le long de
l'axe de temps
GAUCHE/DROITE
 Pour les plus grandes
distances : CTRL + FLÈCHE
VERS LA GAUCHE/DROITE
Avec la souris
Utilisez le glisser-déposer. Le
curseur de la souris est affiché de
façon différente.
1 ou 2 curseurs de trace :
 ALT + FLÈCHE VERS LA
GAUCHE/DROITE
 Pour les plus grandes
distances :
CTRL + ALT + FLÈCHE VERS
LA GAUCHE/DROITE
Se déplacer verticalement dans le
graphique de trace, le long de
l'axe Y
FLÈCHE VERS LE HAUT/BAS
Pour les plus grandes distances :
CTRL + FLÈCHE VERS LE
HAUT/BAS
Effectuer un zoom sur un rectangle –
(fenêtre) sélectionné à l'aide de la
souris
510
Utilisez CTRL + glisser-déposer.
Utilisez la commande Zoomer
(voir SoMachine, Commandes de
menu, Aide en ligne).
Déplacer le curseur de trace noir
FLÈCHE VERS LA
GAUCHE/DROITE
Pour les plus grandes distances :
CTRL + FLÈCHE VERS LA
GAUCHE/DROITE
Cliquez sur le triangle noir du
curseur de trace, faites-le glisser le
long de l'axe X et déposez-le.
Déplacer le curseur de trace gris
MAJ + FLÈCHE VERS LA
Cliquez sur le triangle gris du
GAUCHE/DROITE
curseur de trace, faites-le glisser le
Pour les plus grandes distances : long de l'axe X et déposez-le.
CTRL + MAJ + FLÈCHE VERS LA
GAUCHE/DROITE
EIO0000000069 02/2018
Éditeur de suivi
Actions
Avec le clavier
Compresser l'axe de temps
–
En mode multicanaux, les axes de
temps de tous les graphiques sont
compressés.
Étendre l'axe de temps
+
En mode multicanaux, les axes de
temps de tous les graphiques sont
étendus.
Avec la souris
Utilisez la molette de la souris.
Vous pouvez aussi utiliser la
commande Compresser
(voir SoMachine, Commandes de
menu, Aide en ligne).
Utilisez la molette de la souris.
Vous pouvez aussi utiliser la
commande Étendre
(voir SoMachine, Commandes de
menu, Aide en ligne).
Compresser l'axe Y
En mode multicanaux, les axes Y
de tous les graphiques sont
compressés.
CTRL + –
CTRL + molette de la souris
Étendre l'axe Y
En mode multicanaux, l'axe Y des
graphiques sélectionnés est
compressé.
CTRL + +
CTRL + molette de la souris
Sélection du prochain graphique
situé en dessous, en mode
multicanaux
TAB
Cliquez sur un graphique qui n'est
pas déjà sélectionné.
EIO0000000069 02/2018
511
Éditeur de suivi
512
EIO0000000069 02/2018
SoMachine
Editeur de configuration de symbole
EIO0000000069 02/2018
Chapitre 25
Editeur de configuration de symbole
Editeur de configuration de symbole
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Editeur de configuration de symbole
514
Configuration de symbole
517
Ajout d'une configuration de symbole
518
EIO0000000069 02/2018
513
Editeur de configuration de symbole
Editeur de configuration de symbole
Présentation
La fonctionnalité de configuration de symbole vous permet de créer des descriptions de symboles.
Les symboles et les variables qu'ils représentent deviennent alors accessibles par des applications
externes, telles que Vijeo Designer ou le serveur OPC.
Pour configurer des symboles pour une application, double-cliquez sur le noeud Configuration de
symbole dans Outils. La vue de l'éditeur de configuration de symbole s'affiche.
Editeur de configuration de symbole
L'éditeur contient un tableau. Selon le filtre défini, il présente les variables disponibles, ou
uniquement celles déjà sélectionnées pour la configuration de symbole. A cet effet, les POU ou les
bibliothèques concernés sont répertoriés dans la colonne Symboles. Vous pouvez les développer
afin d'afficher les variables individuelles.
514
EIO0000000069 02/2018
Editeur de configuration de symbole
Description des éléments
Le bouton Afficher, disponible dans la barre d'outils située au-dessus du tableau, permet de définir
les filtres suivants afin de limiter le nombre de variables affichées :
Filtre
Description
Non configurés issus du projet
Même les variables qui n'ont pas encore été ajoutées à la
configuration de symbole, mais qui sont disponibles à cet effet dans
le projet, sont présentées.
Non configurés issus de bibliothèques Même les variables de bibliothèques qui n'ont pas encore été
ajoutées à la configuration de symbole, mais qui sont disponibles à
cet effet dans le projet, sont présentées.
Symboles exportés via attribut
Ce paramètre est actif lorsque seules les variables déjà
configurées sont affichées (voir les deux filtres décrits ci-dessus).
Il entraîne également l'affichage de ces variables, déjà
sélectionnées pour obtenir des symboles par
{attribute 'symbol' := 'read'} dans leur déclaration. Ces
symboles s'affichent en grisé. La colonne Attribut contient le droit
d'accès actuellement défini pour la variable par le pragma. Voir la
description des droits d'accès ci-dessous.
Pour modifier les droits d'accès d'un élément sélectionné, cliquez sur le symbole dans la colonne
Droits d'accès. A chaque clic de souris, le symbole change de définition : lecture+écriture
écriture seule
, lecture seule
,
.
La colonne Maximum indique le droit maximal pouvant être défini.
La colonne Commentaire présente les éventuels commentaires qui ont été ajoutés à la déclaration
de la variable.
Avec la propriété de POU Toujours lier, un objet non compilé peut être réinterprété et téléchargé
sur le contrôleur. Si cette propriété est définie dans l'onglet Générer de la boîte de dialogue
Propriétés de l'objet sélectionné, toutes les variables déclarées dans cet objet sont disponibles,
même si ce dernier n'est pas référencé par un autre code. En outre, vous pouvez utiliser le pragma
(attribut linkalways) (voir page 600) pour rendre les variables non compilées disponibles dans la
configuration de symbole.
Les variables configurées pour être exportées mais qui ne sont pas actuellement valides dans
l'application (parce que leur déclaration a été supprimée, par exemple) s'affichent en rouge. Cela
s'applique également au nom de POU ou de bibliothèque concerné.
La colonne Type indique également les types de données alias, comme MY_INT : INT. Pour une
variable déclarée avec le type de données MY_INT, où MY_INT est déclaré comme suit :
TYPE MY_INT : INT; END_TYPE.
EIO0000000069 02/2018
515
Editeur de configuration de symbole
Pour obtenir des symboles pour une variable d'un type de données structuré, comme pour les
autres variables, vous devez commencer par activer l'élément dans la colonne Symboles. Cette
opération entraîne l'exportation des symboles dans le fichier de symboles, pour tous les membres
de la structure. Ce fichier peut alors contenir de très nombreuses entrées, qui ne sont pas toutes
utiles. Vous pouvez aussi ne sélectionner que des variables spécifiques. Pour ce faire, utilisez la
boîte de dialogue Configuration de symbole pour type de données. Cliquez sur le bouton ... dans
la colonne Membres pour ouvrir cette boîte de dialogue. Pour les types imbriqués, cette boîte de
dialogue contient un bouton permettant d'afficher une boîte de dialogue de configuration de
symbole pour un autre type de données.
La vue de l'éditeur est actualisée automatiquement lors de la compilation. La barre d'outils propose
un bouton Compiler permettant d'accéder rapidement à cette fonction.
Le bouton Paramètres de la barre d'outils permet d'activer l'option Inclure des commentaires dans
XML. Les commentaires affectés aux variables sont alors également exportés vers le fichier de
symboles.
NOTE : n'activez pas l'option Inclure des commentaires dans XML pour les projets utilisant Vijeo
Designer. Sinon, Vijeo Designer ne fonctionnera pas correctement, voire se bloquera totalement.
Par défaut, un fichier de symboles est créé avec une génération de code. Ce fichier est transféré
vers l'équipement lors du téléchargement suivant. Pour créer ce fichier sans effectuer le téléchargement, utilisez la commande Créer code, disponible par défaut dans le menu Compiler.
NOTE : Les variables incluses dans une liste de variables globales (GVL) ne sont disponibles dans
la configuration de symbole que si au moins une d'entre elles est utilisée dans le code de
programmation.
Si vous utilisez un équipement qui prend en charge un fichier d'application distinct pour la
configuration de symbole (voir aussi le chapitre Configuration de symbole (voir page 517)), un
bouton Télécharger est disponible dans la barre d'outils. Vous pouvez l'utiliser pour lancer un
téléchargement immédiat du fichier <nom application>._Symbols en cas de modification de la
configuration de symbole en mode en ligne.
516
EIO0000000069 02/2018
Editeur de configuration de symbole
Configuration de symbole
Présentation
La configuration de symbole permet de créer des symboles dotés de droits d'accès spécifiques.
Ainsi, les variables d'un projet deviennent accessibles de façon externe, par exemple via Vijeo
Designer. La description des symboles est disponible dans un fichier XML (fichier symbole) situé
dans le répertoire du projet. Ce fichier est téléchargé sur le contrôleur, avec l'application.
Information sur les symboles
Les symboles définis pour une application sont exportés vers un fichier XML dans le répertoire du
projet (fichier symbole) lorsque l'application est téléchargée sur le contrôleur. Ce fichier est nommé
selon la syntaxe suivante :
<nom du projet>.<nom de l'équipement>.<nom de l'application>.xml
Exemple : proj_xy.PLC1.application.xml
NOTE : Si le téléchargement sur le contrôleur est impossible, vous pouvez créer le fichier de
configuration de symbole en exécutant la commande Créer code.
Ensuite, les informations sur les symboles sont téléchargées sur le contrôleur, avec l'application.
En fonction de la description de l'équipement, elles sont incluses dans l'application, ou une
application enfant distincte est générée. Celle-ci portera aussi le nom <nom de
l'application>._Symbols dans l' affichage Applications de l'éditeur d'équipement (voir page 125).
Si la configuration de symbole a été modifiée en mode en ligne, vous pouvez la recharger sur le
contrôleur en cliquant sur le bouton Télécharger dans la fenêtre de l'éditeur (voir page 515).
En ce qui concerne le nombre maximal d'applications sur un contrôleur, l'application de symbole
doit être gérée comme une application normale.
EIO0000000069 02/2018
517
Editeur de configuration de symbole
Ajout d'une configuration de symbole
Conditions requises
Les variables qui seront échangées entre le contrôleur et les (multiples) équipements HMI à l'aide
du SoMachine protocole (voir SoMachine, Introduction) transparent doivent être publiées dans le
contrôleur au moyen de la configuration de symbole. Elles seront alors disponibles en tant que
variables SoMachine dans Vijeo Designer.
Définition d'une configuration de symbole
Pour rendre la configuration de symbole disponible, ajoutez l'objet de configuration de symbole à
l'application dans l'arborescence Outils comme indiqué au paragraphe Ouverture de la
configuration de symbole. Le système inclura ainsi automatiquement la bibliothèque
IECVarAccess.library dans le Gestionnaire de bibliothèques.
Vous pouvez définir les variables à exporter comme symboles dans l'éditeur de configuration de
symbole (voir page 514) ou via des pragmas (symbole d'attribut (voir page 618)), qui doivent être
ajoutés à la déclaration des variables.
NOTE : les variables d'une liste de variables globales (GVL) seront uniquement disponibles dans
la configuration de symbole si au moins une d'entre elles est utilisée dans le code de
programmation.
Une autre possibilité est offerte par l'éditeur SFC : vous pouvez définir les indicateurs d'élément
implicitement créés dans les propriétés d'élément (voir page 349) pour l'exportation vers la
configuration de symbole.
Le nom d'un symbole créé par la configuration de symbole est composé sur la base de la syntaxe
suivante :
<nom de l'application>.<Nom de la POU>.<nom de la variable>
Exemples :
MyApplication.PLC_PRG.a
MyApplication.GVL.a
Pour accéder à la variable, définissez complètement le nom du symbole.
518
EIO0000000069 02/2018
Editeur de configuration de symbole
Ouverture de la configuration de symbole
Pour ouvrir la configuration de symbole, procédez comme suit :
Etape
Action
1
Sélectionnez le nœud Application dans l'arborescence Outils, cliquez sur le
bouton plus vert et sélectionnez la commande Ajouter d'autres objets →
Configuration de symbole....
Résultat : la boîte de dialogue Add Symbol configuration s'affiche.
2
Dans la boîte de dialogue Add Symbol configuration, entrez un Nom pour la
configuration de symbole dans la zone de texte.
3
Cliquez sur le bouton Ajouter.
Résultat : un nœud Configuration de symbole est créé sous le nœud Application
dans l'arborescence Outils. La Configuration de symbole s'affiche à droite.
NOTE : Un seul nœud de configuration de symbole peut être créé pour chaque équipement.
Pour plus d'informations sur l'échange de variables entre le contrôleur et la partie HMI, consultez
le chapitre SoMachine Echange de données HMI-contrôleur (voir page 521).
EIO0000000069 02/2018
519
Editeur de configuration de symbole
520
EIO0000000069 02/2018
SoMachine
Échange de données entre le contrôleur et l'IHM
EIO0000000069 02/2018
Chapitre 26
Échange de données entre le contrôleur et l'IHM de SoMachine
Échange de données entre le contrôleur et l'IHM de SoMachine
Contenu de ce chapitre
Ce chapitre contient les sujets suivants :
Sujet
Page
Définition de variable unique SoMachine
522
Publication de variables dans la partie contrôleur
526
Sélection de variables dans la partie IHM
528
Publication de variables dans la partie IHM
529
Paramétrage du support physique
531
Performances de communication lors de l'échange de données entre le contrôleur et l'IHM
532
EIO0000000069 02/2018
521
Échange de données entre le contrôleur et l'IHM
Définition de variable unique SoMachine
Présentation
Lorsque vous publiez des variables dans SoMachine, celles-ci sont automatiquement mises à
disposition dans l'application IHM Vijeo Designer.
Pour échanger des variables avec le protocole SoMachine, procédez comme suit :
Créez des variables dans la partie contrôleur.
 Publiez les variables en les définissant en tant que Symboles dans la partie contrôleur. Elle sont
alors disponibles dans la partie IHM sous la forme de variables SoMachine.
 Configurez la connexion physique (configurée automatiquement par SoMachine).

NOTE : La dernière étape n'est pas nécessaire pour les automates XBTGC parce qu'ils peuvent
communiquer avec leurs propres variables de contrôle.
Désactivation de l'exportation automatique des symboles vers Vijeo Designer
Par défaut, SoMachine exporte automatiquement les variables définies en tant que Symboles vers
l'application IHM Vijeo Designer.
Une fois les symboles transférés vers Vijeo Designer, il n'est généralement pas nécessaire de
réaliser le transfert chaque fois que vous appelez Vijeo Designer. Si vous ajoutez ou modifiez par
la suite des symboles dans votre application SoMachine après avoir transféré initialement les
symboles, vous pouvez transférer les symboles vers Vijeo Designer manuellement comme vous
le souhaitez. Pour gagner du temps quand vous ouvrez Vijeo Designer, vous pouvez désactiver le
transfert automatique des symboles en procédant comme suit :
Etape
522
Action
1
Sélectionnez la commande Options... dans le menu Outils.
Résultat : la boîte de dialogue Options apparaît.
2
Sélectionnez l'entrée Vijeo-Designer dans la liste située sur la gauche.
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Etape
Action
3
Sur la droite, activez la case à cocher Désactiver l'exportation des symboles.
4
Cliquez sur OK pour fermer la boîte de dialogue.
NOTE : l'activation de la fonction Désactiver l'exportation des symboles arrête l'exportation
automatique des variables SoMachine définies en tant que Symboles vers Vijeo Designer. Pour
réaliser ce transfert manuellement, cliquez avec le bouton droit sur le nœud Configuration de
symbole dans la fenêtre Appareils et exécutez la commande Exporter les symboles vers VijeoDesigner. Si vous n'effectuez pas ce transfert manuel, Vijeo Designer peut ne pas afficher les bons
symboles qui, à leur tour, risquent d'entraîner des erreurs dans le projet.
EIO0000000069 02/2018
523
Échange de données entre le contrôleur et l'IHM
AVERTISSEMENT
COMPORTEMENT IMPRÉVU DE L'ÉQUIPEMENT
Exécutez la commande "Exporter les symboles vers Vijeo Designer" si vous avez activé l'option
"Désactiver l'exportation des symboles" avant de commencer à travailler dans Vijeo Designer.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Types de variables pour l'échange de données SoMachine - IHM
Le tableau suivant fournit la liste des types de variables utilisés dans les échanges SoMachine IHM :
Type de variable dans
SoMachine
Type de variable dans Vijeo
Designer
Commentaire
BOOL
BOOL
--
REAL
Entier
--
WORD
UINT
--
DWORD
UDINT
--
SINT
Entier
--
INT
INT
--
DINT
DINT
--
USINT
Entier
--
UINT
UINT
--
UDINT
UDINT
--
REAL
REAL
--
STRING
STRING
--
WSTRING
STRING
WSTRING est pris en charge dans Vijeo Designer
comme un type STRING général. Cela signifie que
vous pouvez échanger soit uniquement des variables
STRINGS soit uniquement des variables WSTRINGS
avec l'IHM. Il n'est possible d'utiliser ces deux types
de variables en même temps. Si vous utilisez le type
WSTRING, toutes les chaînes doivent de ce type.
Indiquez au pilote Vijeo Designer que toutes les
chaînes doivent être gérées au format UNICODE
WSTRING comme suit :
Sélectionnez le nœud SoMachineNetwork ou
SoMachineCombo dans l'arborescence Navigateur
de Vijeo Designer et réglez le paramètre Encodage de
chaîne sur la valeur Unicode.
524
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Type de variable dans
SoMachine
Type de variable dans Vijeo
Designer
Commentaire
Tableau
–
Dans Vijeo Designer, vous pouvez uniquement
référencer les éléments d'un tableau, et non le
tableau dans son ensemble.
Exemple : votre tableau est constitué d'instances
SINT appelées mesValeurs. Dans Vijeo Designer,
vous pouvez référencer mesValeurs[0] ou
mesValeurs[5] et inscrire ces valeurs dans une
variable sur le contrôleur IHM.
Les tableaux ne doivent pas contenir plus de
2 048 éléments. Si vous essayez d'utiliser des
tableaux plus grands dans Vijeo Designer, vous
recevrez un message d'erreur.
DUT
–
Dans Vijeo Designer, vous pouvez uniquement
référencer les éléments d'un DUT, et non le DUT dans
son ensemble. Ce comportement est similaire à celui
des tableaux.
Types de variables non pris en charge
Les types de variables suivants sont pris en charge pour l'échange de données SoMachine - IHM :
tous les formats de nombres entiers de 64 bits
 LREAL
 tous les formats d'heure et de date
 les tableaux basés sur des valeurs non nulles : vous ne pouvez pas importer un tableau défini
(par exemple, myArray[1..100]).
 les tableaux de tableaux : vous ne pouvez pas importer de tableau ayant un tableau comme
type d'élément, tel que ARRAY [0..9] OF ARRAY [0..9] OF INT. En revanche, vous
pouvez utiliser des tableaux pluridimensionnels, tels que ARRAY [0..9, 0..9] OF INT.

NOTE : Les variables issues des structures PLC_R de la bibliothèque PLCSystem ne sont pas
partageables à l'aide de la commande Configuration de symbole avec l'application Vijeo Designer
de cibles IHM (notamment des contrôleurs IHM).
NOTE : Ne partagez pas les références à une variable structurée dans l'éditeur de configuration
de symbole, car leurs valeurs ne s'affichent pas correctement sur l'IHM.
Pour plus d'informations sur les types de variables susceptibles d'être utilisés dans les échanges
de données SoMachine - IHM, consultez l'aide en ligne de Vijeo Designer.
Longueur des identifiants
Dans Vijeo Designer, la longueur maximale du nom de symbole est limitée à 32 caractères.
EIO0000000069 02/2018
525
Échange de données entre le contrôleur et l'IHM
Publication de variables dans la partie contrôleur
Présentation
Publiez les variables dans la partie contrôleur de l'application SoMachine via l'éditeur
Configuration des symboles ou dans la vue Variables (voir page 34) du catalogue de logiciels
d'une instance POU.
Publication de variables dans l'éditeur Configuration des symboles
Pour publier des variables au sein de l'éditeur Configuration des symboles, procédez comme suit :
Étape
Action
1
Créez un nœud Configuration des symboles sous le nœud Application de l'arborescence des outils,
comme décrit dans le chapitre Ajout d'une configuration de symbole (voir page 518).
2
Double-cliquez sur le nœud Configuration de symboles pour ouvrir l'éditeur Configuration des symboles.
3
Dans l'éditeur Configuration des symboles, sélectionnez les variables élémentaires que vous souhaitez
publier pour la communication avec un ou plusieurs terminaux IHM en sélectionnant ou en
désélectionnant la case à cocher correspondante dans la colonne Symboles :
Vous pouvez également attribuer des autorisations d'accès en lecture et en écriture à chaque variable
individuellement dans la colonne Droits d'accès. Pour plus d’informations, reportez-vous à la description
de l'éditeur de configuration des symboles (voir page 514).
Remarque : seules les variables sur les types de données élémentaires peuvent être échangées avec
des terminaux IHM.
4
Pour valider vos paramètres, cliquez sur le lien Télécharger dans l'éditeur Configuration de symbole.
NOTE : Le mécanisme de publication consomme une charge de 50 Ko dans le contrôleur. Chaque
variable publiée consomme 11 octets dans l'application d'automate.
526
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Publication de variables dans la vue Variables du catalogue de logiciels
Pour publier les variables dans la vue Variables du catalogue de logiciels (voir page 34),
procédez comme suit :
Étape
Action
1
Ouvrez la vue Variables du catalogue de logiciels (voir page 34).
2
Pour publier une variable, cochez la case respective dans la colonne Publier.
NOTE : Assurez-vous que le POU des variables sélectionnées est appelé dans une tâche. Sinon,
les variables sélectionnées ne seront pas publiées.
EIO0000000069 02/2018
527
Échange de données entre le contrôleur et l'IHM
Sélection de variables dans la partie IHM
Sélection de variables
Les variables qui ont été publiées dans la partie automate sont directement disponibles dans la
partie IHM.
Dans l'Editeur d'expressions de Vijeo Designer, sélectionnez l'onglet SoMachine pour accéder
directement aux variables publiées dans SoMachine.
Pour plus d'informations, consultez l'aide en ligne de Vijeo Designer.
528
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Publication de variables dans la partie IHM
Types de variables pris en charge
Les types de variables suivants peuvent être publiés dans Vijeo Designer afin de les rendre
disponibles pour l'ensemble du projet SoMachine :
 BOOL
 DINT
 INT
 UINT
 UDINT
 Entier
 REAL
 STRING
Procédure
Pour publier les types de variables mentionnés ci-dessus, procédez comme suit :
Étape
Action
1
Dans l'Vijeo Designeréditeur de variables, sélectionnez celles que vous souhaitez publier.
2
Cliquez avec le bouton droit sur les variables sélectionnées et exécutez la commande Déplacer vers
SoMachine dans le menu contextuel.
3
Dans la boîte de dialogue Déplacer vers SoMachine, ouvrez les sous-dossiers des équipements définis
dans SoMachine pour voir les niveaux auxquels les variables sont définis (POU ou GVL).
Résultat : la boîte de dialogue Déplacer vers SoMachine apparaît.
EIO0000000069 02/2018
529
Échange de données entre le contrôleur et l'IHM
Étape
4
Action
Sélectionnez la POU ou la GVL à laquelle vous souhaitez ajouter les variables Vijeo Designer
sélectionnées et cliquez sur OK.
Résultat : les variables sélectionnées ont été déplacée vers la POU ou la GVL SoMachine sélectionnée
et sont disponibles dans l'ensemble du projet SoMachine.
530
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Paramétrage du support physique
Présentation
L'échange de données d'exécution entre le contrôleur et l'IHM est réalisé sur différents supports,
selon le matériel sélectionné.
Exemple de configuration
Les paramètres par défaut ci-dessous conviennent aux communications entre le M238 et un écran
IHM à travers une ligne série RS485 en utilisant un câble XBTZ9008 (ligne série SubD-RJ45).
Configuration du M238 avec un écran IHM :
Configure de la ligne série du contrôleur M238
Paramètre
Valeur
Support physique
RS485
Débit en bauds
115200
Parité
Aucune
Bits de données
8
Bits d'arrêt
1
Configuration du gestionnaire d'E/S du panneau IHM à l'aide d'un pilote : SoMachine - réseau doté
d'au moins un Scan-Group (pour plus d'informations, consultez l'aide en ligne de Vijeo Designer).
Paramètre
Valeur
Support physique
RS485
Débit en bauds
115200
Parité
Aucune
Bits de données
8
Bits d'arrêt
1
Nom d'équipement
nom de l'équipement du contrôleur
(disponible dans la boîte de dialogue
Paramètres de communication)
Configuration de XBTGC :
Équipement
Configuration
aucune configuration requise
Ecran IHM
Gestionnaire d'E/S
Pilote
Pilote
SoMachine - Liste modifiable dotée d'au
moins un Scan-Group
EIO0000000069 02/2018
531
Échange de données entre le contrôleur et l'IHM
Performances de communication lors de l'échange de données entre le contrôleur et
l'IHM
Présentation
La vitesse de communication entre le contrôleur et l'IHM dépend en grande partie du nombre de
variables échangées. Elle a une incidence sur le délai requis pour afficher les valeurs sur les
panneaux IHM lorsqu'une connexion contrôleur-IHM est établie, ainsi que sur le délai
d'actualisation des variables.
Ce chapitre donne les valeurs de référence obtenues dans des conditions optimales. Les valeurs
effectives dépendent des performances globales de l'application du contrôleur (par exemple, la
tâche de communication responsable de l'échange des données est exécutée avec une priorité
basse).
Pour l'échange de données à l'aide de SoMachine via Ethernet, ce chapitre précise le nombre de
variables autorisées pour atteindre des performances de transmission satisfaisantes. Avec une
ligne série, l'utilisation d'Ethernet permet d'accroître les performances.
Mesures d'amélioration des performances de communication
Les mesures suivantes permettent d'améliorer les performances de communication :
Dans les propriétés de groupe de scrutation ou d'équipement de l'IHM, définissez le paramètre
Vijeo Designer Fréquence de scrutation sur Rapide.
 Limitez le nombre de variables par panneau IHM, car seules les variables du panneau actif sont
actualisées. Il est conseillé de créer plusieurs panneaux IHM associés à un nombre réduit de
variables dans Vijeo Designer, plutôt qu'un seul panneau affichant beaucoup de variables.
 Ajoutez dans la configuration de symbole uniquement les variables utilisées dans l'IHM.

532
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Délai d'affichage des valeurs une fois la connexion contrôleur-IHM établie, en fonction du nombre de
variables
Le graphique suivant indique les valeurs de référence mesurées pour le délai d'affichage des
valeurs sur les panneaux IHM suite à une connexion avec SoMachine via Ethernet (après le
téléchargement d'applications, par exemple). Ces valeurs sont représentatives des performances
des contrôleurs XBTGT HMI Controller ou M258 Logic Controller. Elles ont été relevées en
environnement non industriel, avec un nombre plus ou moins élevé de variables.
Délai typique d'établissement d'une connexion et d'affichage des valeurs sur le panneau IHM :
1
2
3
4
Délai en secondes
Nombre de variables
XBTGT2330 + M258
XBTGT4330 + M258
EIO0000000069 02/2018
533
Échange de données entre le contrôleur et l'IHM
Délai d'actualisation des variables sur le panneau IHM, en fonction du nombre de variables
Le graphique suivant indique les valeurs de référence mesurées pour le délai d'actualisation des
variables suite à une connexion avec SoMachine via Ethernet entre l'IHM XBTGT et les
contrôleurs M258, en environnement non industriel et avec un nombre plus ou moins élevé de
variables.
Délai typique d'actualisation des variables sur l'IHM :
1
2
3
4
Délai en secondes
Nombre de variables
XBTGT2330 + M258
XBTGT4330 + M258
Suggestions fournies par Vijeo Designer relatives aux variables
L'aide en ligne de Vijeo Designer fournit les conseils suivants concernant l'utilisation des variables
dans le logiciel Vijeo Designer :
Chapitre Création de variables → A propos des variables et des adresses de périphérique →
Source : interne et externe :


En fonction de son type, une cible peut être associée à 8 000 ou 12 000 variables au maximum.
Les conteneurs de tableau et de structure (les nœuds de groupe) sont également comptabilisés
comme des variables. Une variable de bloc est aussi considérée comme une variable.
Vous pouvez utiliser jusqu'à 800 variables par panneau.
Chapitre Annexe → Spécifications Runtime :
534
EIO0000000069 02/2018
Échange de données entre le contrôleur et l'IHM
Nombre de variables par panneau (limite) :
Contrôleur
Nombre maximal de variables par panneau :
Série iPC
2 500
Autres types de cibles, sauf iPC
800
Nombre de variables par cible (limite) :
Contrôleur
Nombre maximal de variables
 iPC*
12 000
 Série XBTGTW
 XBTGC
8 000
 XBTGT
 XBTGH
 HMIGTO
 HMISTO
 HMISTU
 Série HMISCU
Série XBTGK
*
8 000
Pour iPC : en cas d'utilisation de variables persistantes (variables d'alarme et de journalisation des
données, par exemple), la limite est fixée à 8 000 variables par cible iPC.
Chapitre Erreurs → Liste de messages → Messages d'erreur de l'Editeur → 1300 - 1999→
Erreur 1301 :
Erreur 1301 : [Cible] [nom cible] trop de variables. Le nombre limite de variables est [8000].
NOTE : L'aide en ligne de Vijeo Designer précise qu'un tableau ne doit pas dépasser
2 048 éléments au total (reportez-vous au chapitre Création de variables → Variables et types de
données). Cette contrainte limite la taille des variables de tableau (à un ou plusieurs entrées) qui
sont partagées via la configuration de symbole de SoMachine. Vous pouvez vous en affranchir en
partageant un tableau de données DUT (par exemple, ARRAY[0..99] OF DUT_30, où DUT_30
correspond à un type de données défini par l'utilisateur et qui contient 30 variables INT distinctes,
soit 3 000 variables au total). Dans tous les cas, l'erreur 1301 est renvoyée dès que le nombre
maximal de variables par cible (8 000 ou 12 000) est atteint.
EIO0000000069 02/2018
535
Échange de données entre le contrôleur et l'IHM
536
EIO0000000069 02/2018
SoMachine
Référence de programmation
EIO0000000069 02/2018
Partie VII
Référence de programmation
Référence de programmation
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
27
Déclaration de variables
539
28
Types de données
623
29
Instructions de programmation
649
30
Opérateurs
661
31
Opérandes
755
EIO0000000069 02/2018
537
Référence de programmation
538
EIO0000000069 02/2018
SoMachine
Déclaration de variables
EIO0000000069 02/2018
Chapitre 27
Déclaration de variables
Déclaration de variables
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
27.1
Déclaration
540
27.2
Types de variable
557
27.3
Types de méthode
568
27.4
Instructions Pragma
573
27.5
Pragmas d'attribut
585
27.6
Fonctionnalité Smart Coding
621
EIO0000000069 02/2018
539
Déclaration de variables
Sous-chapitre 27.1
Déclaration
Déclaration
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
540
Page
Informations générales
541
Recommandations relatives à la dénomination des identificateurs
544
Initialisation des variables
549
Déclaration
550
Mode raccourcis
551
Déclaration d'une adresse AT
552
Mots clés
553
EIO0000000069 02/2018
Déclaration de variables
Informations générales
Présentation
Vous pouvez déclarer des variables :
dans la vue Variables du catalogue de logiciels (voir page 33),
 dans l'éditeur de déclaration d'un POU (voir page 398),
 à partir de la boîte de dialogue Déclarer une variable (voir page 550),
 dans un éditeur de DUT,
 dans un éditeur de GVL.

Le type (ou domaine de validité dans l'éditeur de déclaration tabulaire) des variables à déclarer est
indiqué par les mots clés délimitant la déclaration d'une ou plusieurs variables. Dans l'éditeur de
déclaration textuel (voir page 398), la déclaration des variables est généralement délimitée par
VAR et END_VAR.
Pour connaître les autres domaines de validité de déclaration de variables, reportez-vous aux mots
clés suivants :
 VAR_INPUT
 VAR_OUTPUT
 VAR_IN_OUT
 VAR_GLOBAL
 VAR_TEMP
 VAR_STAT
 VAR_EXTERNAL
 VAR_CONFIG
Les mots clés de type de variable peuvent être remplacés par des mots clés d'attribut
(voir page 562).
Exemple : RETAIN (VAR_INPUT RETAIN)
Syntaxe
Syntaxe pour la déclaration d'une variable :
<Identificateur> {AT <adresse>}:<type de données> {:=<initialisation>};
Les parties entre accolades {} sont facultatives.
Identificateur
L'identificateur correspond au nom de la variable.
Tenez compte des informations suivantes lors de la définition d'un identificateur :
Les espaces et caractères spéciaux sont interdits.
 Aucune distinction n'est faite entre les majuscules et les minuscules (VAR1, Var1 et var1
représentent la même variable).
 Le trait de soulignement est reconnu (A_BCD et AB_CD sont deux identificateurs distincts).
N'utilisez pas plus d'un trait de soulignement par ligne.

EIO0000000069 02/2018
541
Déclaration de variables


La longueur est illimitée.
Usage multiple (voir recommandations au paragraphe suivant)
Reportez-vous également aux conseils du chapitre Recommandations relatives à la dénomination
des identificateurs (voir page 544).
Usage multiple des identificateurs (espaces de noms)
Voici les règles liées à l'usage multiple des identificateurs :
 L'identificateur créé ne doit pas être identique à un mot clé.
 Il est interdit de dupliquer un identificateur localement.
 Un même identificateur peut être utilisé plusieurs fois au niveau global. Ainsi, une variable
locale peut avoir le même nom qu'une variable globale. Dans ce cas, la priorité revient à la
variable locale du POU.
 Un même nom peut servir à identifier deux variables définies dans des listes de variables
globales (GVL) différentes. Dans ce cas, tenez compte des fonctions d'extension IEC 61131-3
suivantes :
 Opérateur de domaine de validité global : un chemin d'instance commençant par un point (.)
ouvre un domaine de validité global. Lorsqu'une variable locale (ivar, par exemple) porte le
même nom qu'une variable globale, cette dernière est désignée par .ivar.
 Il est possible d'utiliser un nom de liste de GVL comme espace de noms pour les variables
incluses. Vous pouvez déclarer des variables sous le même nom dans des GVL distinctes.
Pour accédez à chaque variable, vous devrez alors faire précéder son nom par celui de la
liste correspondante.
Exemple
globlist1.ivar := globlist2.ivar;
(* la variable ivar de la liste globlist2 dans la bibliothèque lib1 est copiée vers ivar
dans la GVL globlist1 *)
 Pour accéder aux variables d'une GVL figurant dans une bibliothèque incluse, utilisez la
syntaxe <espace de noms de la bibliothèque>.<nom de la GVL>.<variable>.
Exemple :
globlist1.ivar := lib1.globlist1.ivar
(* la variable ivar de la liste globlist1 dans la bibliothèque lib1 est copiée vers ivar
dans la GVL globlist1 *)

542
L'espace de noms d'une bibliothèque est défini après inclusion de cette dernière via le
gestionnaire de bibliothèques. Par conséquent, vous pouvez accéder à un module ou à une
variable de bibliothèque via la syntaxe <espace de noms de la
bibliothèque>.<nommodule|nomvariable>. Dans le cas de bibliothèques imbriquées, indiquez
successivement les espaces de noms associés.
Exemple : pour accéder au module fun de la bibliothèque Lib1, Lib1 étant référencé par
Lib0, utilisez la syntaxe Lib0.Lib1.fun, comme illustré ci-après.
ivar := Lib0.Lib1.fun(4, 5); (* la valeur renvoyée par fun est copiée vers la variable
ivar dans le projet *)
EIO0000000069 02/2018
Déclaration de variables
NOTE : Dès lors que vous cochez la case Afficher tous les symboles IEC dans le projet, comme
si cette référence avait été directement intégrée ici dans la boîte de dialogue Propriétés de la
bibliothèque Lib référencée, le module fun est aussi directement accessible via Lib0.fun.
AT <adresse>
Le mot clé AT permet de lier directement la variable à une adresse définitive (voir page 552).
Dans les blocs fonction, vous pouvez également indiquer des variables avec des instructions
d'adresse incomplète. Pour que ces variables puissent être utilisées comme instance locale, leur
configuration doit inclure une entrée en ce sens.
Type
Type de données (voir page 624) valide, éventuellement étendu par une syntaxe :=< initialisation>
(voir page 549).
Instructions Pragma
L'ajout d'instructions pragma (voir page 573)dans la partie déclaration d'un objet permet d'affecter
la génération de code à différentes fins.
Astuces
Vous pouvez aussi déclarer automatiquement (voir page 550) les variables.
Le mode raccourcis (voir page 551) accélère le processus de déclaration.
EIO0000000069 02/2018
543
Déclaration de variables
Recommandations relatives à la dénomination des identificateurs
Présentation
Les identificateurs sont définis :
lors de la déclaration de variables (nom de variable),
 lors de la déclaration de types de données définis par l'utilisateur,
 lors de la création de POU (fonctions, blocs fonction, programmes).

Outre les informations générales à prendre en compte lors de la définition d'un identificateur
(reportez-vous au chapitre Informations générales sur la déclaration de variables (voir page 541)),
respectez les recommandations suivantes afin de garantir autant que possible l'unicité des noms :
 Noms de variables (voir page 544)
 Noms de variables dans les bibliothèques (voir page 547)
 Types de données définis par l'utilisateur (DUT) dans les bibliothèques (voir page 547)
 Fonctions, blocs fonction, programmes (POU) et actions (voir page 547)
 POU dans les bibliothèques (voir page 548)
 Noms de visualisations (voir page 548)
Noms de variables
Dans la mesure du possible, respectez la notation hongroise lors de la dénomination de variables
au sein d'applications et de bibliothèques.
Attribuez un nom significatif court à chaque variable. Il s'agira du nom standard. Chaque mot
constituant ce nom doit commencer par une majuscule, les autres lettres étant en minuscules
(exemple : FileSize).
Type de données
Limite inférieure
Limite supérieure
Quantité
d'informations
Préfixe
Commentaire
BOOL
FALSE
TRUE
1 bit
x*
–
b
réservé
BYTE
–
–
8 bits
by
chaîne de bits, ne
convient pas aux
opérations
arithmétiques
WORD
–
–
16 bits
w
chaîne de bits, ne
convient pas aux
opérations
arithmétiques
* Le préfixe « x » est volontairement attribué aux variables booléennes de manière à les différencier des variables de
type BYTE, mais aussi pour plus de lisibilité par un programmeur IEC (reportez-vous à la section relative à l'adressage
des variables %IX0.0).
544
EIO0000000069 02/2018
Déclaration de variables
Type de données
Limite inférieure
Limite supérieure
Quantité
d'informations
Préfixe
Commentaire
DWORD
–
–
32 bits
dw
chaîne de bits, ne
convient pas aux
opérations
arithmétiques
LWORD
–
–
64 bits
lw
ne convient pas aux
opérations
arithmétiques
SINT
–128
127
8 bits
si
–
USINT
0
255
8 bits
usi
–
INT
–32 768
32 767
16 bits
i
–
UINT
0
65 535
16 bits
ui
–
DINT
–2 147 483 648
2 147 483 647
32 bits
di
–
UDINT
0
4 294 967 295
32 bits
udi
–
–2
63
2 -1
64 bits
li
–
0
264-1
64 bits
uli
–
REAL
–
–
32 bits
r
–
LREAL
–
–
64 bits
lr
–
STRING
–
–
–
s
–
TIME
–
–
–
tim
–
TIME_OF_DAY
–
–
–
tod
–
LINT
ULINT
63
DATE_AND_TIME
–
–
–
dt
–
DATE
–
–
–
date
–
ENUM
–
–
16 bits
e
–
POINTER
–
–
–
p
–
ARRAY
–
–
–
a
–
* Le préfixe « x » est volontairement attribué aux variables booléennes de manière à les différencier des variables de
type BYTE, mais aussi pour plus de lisibilité par un programmeur IEC (reportez-vous à la section relative à l'adressage
des variables %IX0.0).
Déclaration simple
Exemples de déclarations simples :
bySubIndex: BYTE;
sFileName: STRING;
udiCounter: UDINT;
Déclaration imbriquée
EIO0000000069 02/2018
545
Déclaration de variables
Exemple de déclaration imbriquée, où les préfixes sont juxtaposés les uns après les autres suivant
l'ordre des déclarations :
pabyTelegramData: POINTER TO ARRAY [0..7] OF BYTE;
Instances de blocs fonction et variables de types de données définis par l'utilisateur
Un préfixe servant de raccourci pour le nom du bloc fonction ou du type de données (sdo, par
exemple) est utilisé dans les instances de blocs fonction et les variables de types de données
définis par l'utilisateur.
Exemple
cansdoReceivedTelegram: CAN_SDOTelegram;
TYPE CAN_SDOTelegram :
(* prefix: sdo *)
STRUCT
wIndex:WORD;
bySubIndex:BYTE;
byLen:BYTE;
aby: ARRAY [0..3] OF BYTE;
END_STRUCT
END_TYPE
Constantes locales
Les constantes locales portent le préfixe c, suivi d'un trait de soulignement, du préfixe de type et
du nom de la variable.
Exemple
VAR CONSTANT
c_uiSyncID: UINT := 16#80;
END_VAR
Variables et constantes globales
Les variables globales portent le préfixe g_, tandis que les constantes globales portent le préfixe
gc_.
Exemple
VAR_GLOBAL
g_iTest: INT;
END_VAR
VAR_GLOBAL CONSTANT
gc_dwExample: DWORD;
END_VAR
546
EIO0000000069 02/2018
Déclaration de variables
Noms de variables dans les bibliothèques
Structure
Reportez-vous à la description ci-dessus concernant les noms de variables. Pour accéder à une
variable dans le code d'application, vous devez utiliser l'espace de noms de la bibliothèque en tant
que préfixe.
Exemple
g_iTest: INT; (declaration)
CAN.g_iTest (implementation, call in an application program
Types de données définis par l'utilisateur (DUT) dans les bibliothèques
Structure
Chaque nom de type de données structure correspond à une description significative courte (par
exemple, SDOTelegram) de la structure en question.
Exemple (dans la bibliothèque associée à l'espace de noms CAL) :
TYPE Day :(
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY);
Déclaration :
eToday: CAL.Day;
À utiliser dans l'application :
IF eToday = CAL.Day.MONDAY THEN
NOTE : n'oubliez pas d'indiquer l'espace de noms avec des DUT ou des énumérations déclarées
au sein de bibliothèques.
Fonctions, blocs fonction, programmes (POU) et actions
Un nom significatif court désignant le POU (SendTelegram, par exemple) est utilisé comme
préfixe pour les noms de fonctions, blocs fonction et programmes. Tout comme pour les variables,
chaque mot constituant le nom du POU doit commencer par une majuscule, les autres lettres étant
indiquées en minuscules. Il est conseillé de combiner un verbe et un substantif pour former le nom
du POU.
Exemple
FUNCTION_BLOCK SendTelegram (* prefix: canst *)
EIO0000000069 02/2018
547
Déclaration de variables
Dans la partie déclaration, décrivez-vous brièvement le POU sous forme de commentaire. Les
entrées et sorties doivent également être indiquées en commentaires. Pour les blocs fonction,
ajoutez le préfixe des instances de configuration juste après le nom.
Actions
Les actions ne portent pas de préfixe. Seules les actions devant exclusivement être appelées en
interne, c'est-à-dire par le POU lui-même, commencent par prv_.
Pour assurer la compatibilité avec les versions précédentes du logiciel, chaque fonction doit être
associée à un paramètre au minimum. N'utilisez pas de structures comme valeurs renvoyées dans
les fonctions externes.
POU dans les bibliothèques
Structure
Les règles de dénomination des actions s'appliquent également aux méthodes. Indiquez en
commentaires (en anglais) les entrées possibles de la méthode. Ajoutez une brève description de
la méthode dans la déclaration. Les noms d'interfaces doivent commencer par la lettre I (par
exemple, ICANDevice).
NOTE : n'oubliez pas d'indiquer l'espace de noms avec des POU déclarés au sein de
bibliothèques.
Noms de visualisations
Chaque visualisation doit porter un nom unique au sein du projet, sous peine de générer des
anomalies si les visualisations venaient à changer.
548
EIO0000000069 02/2018
Déclaration de variables
Initialisation des variables
Valeur d'initialisation par défaut
La valeur d'initialisation 0 est appliquée par défaut à toutes les déclarations. Vous pouvez
cependant ajouter vos propres valeurs d'initialisation dans la déclaration de chaque variable et
type de données.
Valeurs d'initialisation définies par l'utilisateur
L'opérateur d'attribution := permet d'appeler une valeur d'initialisation définie par l'utilisateur,
laquelle doit correspondre à une expression ST valide. Vous pouvez donc définir cette valeur à
l'aide de valeurs constantes ou encore de variables et fonctions. Si vous choisissez une variable,
veillez à ce qu'elle soit déjà initialisée.
Exemples d'initialisations de variable valides :
VAR
var1:INT := 12;
* Integer variable with initial value of
12. *
x : INT := 13 + 8;
* Integer value defined an expression wit
h literal values.*
y : INT := x + fun(4);
* Integer value defined by an expression
containing a function call. NOTE: Be sure that any variables used in
the variable initialization have already been defined. *
z : POINTER TO INT := ADR(y); * POINTER is not described by the IEC6113
1-3:
Integer value defined by an address function; NOTE: The pointer will
not be initialized if the declaration is modified online. *
END_VAR
Informations complémentaires
Pour plus d'informations, reportez-vous aux descriptions suivantes :
 Initialisation de tableaux (voir page 638)
 Initialisation de structures (voir page 641)
 Initialisation d'une variable avec un type de sous-zone (voir page 645)
NOTE : Les variables des listes de variables globales (GVL) sont initialisées avant les variables
locales d'un POU.
EIO0000000069 02/2018
549
Déclaration de variables
Déclaration
Types de déclaration
Comme décrit dans ce chapitre, les variables peuvent être déclarées soit manuellement via
l'éditeur de déclaration (voir page 398) textuel ou tabulaire, soit automatiquement.
Déclaration automatique d'une variable
Dans la boîte de dialogue Options, catégorie Éditeur de texte → Modifier, vous pouvez faire en
sorte que la boîte de dialogue Déclarer une variable s'ouvre après indication d'une chaîne non
déclarée dans la partie implémentation d'un éditeur et validation par la touche Entrée. Cette boîte
de dialogue permet de déclarer la variable (voir page 541).
Déclaration manuelle d'une variable
Pour ouvrir manuellement la boîte de dialogue Déclarer une variable, effectuez l'une des
opérations suivantes :
 Exécutez la commande Déclarer une variable, disponible par défaut dans le menu Modifier.
 Utilisez la combinaison de touches Maj + F2.
Si vous sélectionnez une variable déjà déclarée avant d'ouvrir la boîte de dialogue Déclarer une
variable, vous pouvez alors modifier cette déclaration.
550
EIO0000000069 02/2018
Déclaration de variables
Mode raccourcis
Présentation
Le mode raccourcis est pris en charge par l'éditeur de déclaration (voir page 398) et les autres
éditeurs de texte permettant d'effectuer des déclarations.
Vous pouvez l'activer grâce à la combinaison de touches Ctrl + Entrée à la fin d'une ligne de
déclaration.
Ce mode propose des raccourcis qui évitent de saisir entièrement la déclaration.
Raccourcis pris en charge
Les raccourcis suivants sont pris en charge :
Tous les identificateurs, jusqu'au dernier identificateur de la ligne, deviennent des identificateurs de déclaration de variable.
 Le dernier identificateur de la ligne détermine le type de déclaration.

Dans ce contexte, les remplacements suivants sont réalisés :
B ou BOOL
est remplacé par
BOOL
I ou INT
INT
R ou REAL
REAL
S ou string
STRING





Lorsque ces règles n'ont pas permis de définir de type, le type BOOL est automatiquement
appliqué. Le type ne dépend donc pas du dernier identificateur (voir exemple 1).
Chaque constante, selon le type de déclaration, devient une valeur d'initialisation ou une chaîne
(voir exemples 2 et 3).
Une adresse (dans %MD12, par exemple) est étendue par le mot clé AT (voir exemple 4).
Tout texte précédé d'un point virgule (;) devient un commentaire (voir exemple 4).
Tous les autres caractères de la ligne sont ignorés (voir point d'exclamation dans l'exemple 5).
Exemples
N° d'exemple
Raccourci
Déclaration générée
1
A
A: BOOL;
2
A B I 2
A, B: INT := 2;
3
ST S 2; A string
ST:STRING(2); (* A string *
)
4
X %MD12 R 5 Real Number
X AT %MD12: REAL := 5.0;(*
Real Number *)
5
B !
B: BOOL;
EIO0000000069 02/2018
551
Déclaration de variables
Déclaration d'une adresse AT
Présentation
Pour lier une variable de projet à une adresse définitive, utilisez la vue Mappage E/S de
l'équipement, au niveau de la configuration du contrôleur (éditeur d'appareil). Une autre méthode
consiste à indiquer cette adresse directement dans la déclaration de la variable.
Syntaxe
<identificateur> AT <adresse> : <type de données>;
Le mot clé AT doit être suivi d'une adresse valide. Pour plus d'informations, reportez-vous à la
section Adresses (voir page 771). Des chevauchements sont possibles avec le mode d'adressage
par octets.
Cette déclaration permet d'attribuer un nom significatif à une adresse. Tout changement affectant
un signal entrant ou sortant doit nécessairement être effectué de manière centralisé (par exemple,
dans la déclaration).
Tenez compte des points suivants au moment de sélectionner une variable à attribuer à une
adresse :
 Les variables nécessitant une entrée ne sont pas accessibles en écriture. Dans le cas contraire,
le compilateur les intercepte et détecte une erreur.
 Les déclarations d'adresse AT sont réservées aux variables locales et globales. Il est impossible
de les utiliser pour les variables d'entrée et de sortie des POU.
 Les déclarations d'adresse AT ne sont pas autorisées dans les listes de variables persistantes.
 En cas d'utilisation de déclarations d'adresse AT avec les membres d'une structure ou d'un bloc
fonction, toutes les instances accèdent au même emplacement de mémoire que la structure ou
le bloc fonction en question. Cela correspond aux variables statiques des langages de
programmation classiques, comme le langage C.
 La cible détermine également la disposition de la mémoire des structures.
Exemples
xCounterHeat7 AT %QX0.0: BOOL;
xLightCabinetImpulse AT %IX7.2: BOOL;
xDownload AT %MX2.2: BOOL;
Remarque
Les variables booléennes attribuées à une adresse de type BYTE, WORD ou DWORD occupent
1 octet avec la valeur TRUE ou FALSE, et pas seulement le premier bit situé après le décalage.
Explication : après déclaration, les valeurs booléennes correspondent à 8 bits. Par conséquent,
lorsqu'elles sont écrites dans d'autres types de variable, les 8 bits suivent eux aussi.
552
EIO0000000069 02/2018
Déclaration de variables
Mots clés
Présentation
Saisissez les mots clés en majuscules dans les éditeurs.
Les chaînes suivantes sont réservées comme mots clés. Vous ne pouvez pas les utiliser comme
identificateurs de variable ou de POU :
 ABS
 ACOS
 ACTION (pour le format d'exportation seulement)
 ADD
 ADR
 AND
 ANDN
 ARRAY
 ASIN
 AT
 ATAN
 BITADR
 BOOL
 BY
 BYTE
 CAL
 CALC
 CALCN
 CASE
 CONSTANT
 COS
 DATE
 DINT
 DIV
 DO
 DT
 DWORD
 ELSE
 ELSIF
 END_ACTION (pour le format d'exportation seulement)
 END_CASE
 END_FOR
 END_FUNCTION (pour le format d'exportation seulement)
 END_FUNCTION_BLOCK (pour le format d'exportation seulement)
 END_IF
 END_PROGRAM (pour le format d'exportation seulement)
 END_REPEAT
 END_STRUCT
EIO0000000069 02/2018
553
Déclaration de variables













































554
END_TYPE
END_VAR
END_WHILE
EQ
EXIT
EXP
EXPT
FALSE
FOR
FUNCTION
FUNCTION_BLOCK
GE
GT
IF
INDEXOF
INT
JMP
JMPC
JMPCN
LD
LDN
LE
LINT
LN
LOG
LREAL
LT
LTIME
LWORD
MAX
METHOD
MIN
MOD
MOVE
MUL
MUX
NE
NOT
OF
OR
ORN
PARAMS
PERSISTENT
POINTER
PROGRAM
EIO0000000069 02/2018
Déclaration de variables













































R
READ_ONLY
READ_WRITE
REAL
REFERENCE
REPEAT
RET
RETAIN
RETC
RETCN
RETURN
ROL
ROR
S
SEL
SHL
SHR
SIN
SINT
SIZEOF
SUPER
SQRT
ST
STN
STRING
STRUCT
SUPER
SUB
TAN
THEN
THIS
TIME
TO
TOD
TRUE
TRUNC
TYPE
UDINT
UINT
ULINT
UNTIL
USINT
VAR
VAR_ACCESS (réservé à des usages spécifiques, selon le matériel)
VAR_CONFIG
EIO0000000069 02/2018
555
Déclaration de variables












VAR_EXTERNAL
VAR_GLOBAL
VAR_IN_OUT
VAR_INPUT
VAR_OUTPUT
VAR_STAT
VAR_TEMP
WHILE
WORD
WSTRING
XOR
XORN
Les opérateurs de conversion répertoriés dans l'aide à la saisie sont également considérés comme
des mots clés.
556
EIO0000000069 02/2018
Déclaration de variables
Sous-chapitre 27.2
Types de variable
Types de variable
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Types de variable
558
Mots-clés d'attribut pour les types de variable
562
Configuration des variables - VAR_CONFIG
566
EIO0000000069 02/2018
557
Déclaration de variables
Types de variable
Présentation
Ce chapitre fournit des informations supplémentaires concernant les types de variable suivants :
VAR variables locales (voir page 558)
 VAR_INPUT variables d'entrée (voir page 558)
 VAR_OUTPUT variables de sortie (voir page 558)
 VAR_IN_OUT variables d'entrée et de sortie (voir page 559)
 VAR_GLOBAL variables globales (voir page 559)
 VAR_TEMP variables temporaires (voir page 560)
 VAR_STAT variables statiques (voir page 560)
 VAR_EXTERNAL variables externes (voir page 561)

Variables locales - VAR
Toutes les variables locales d'un POU sont déclarées (voir page 541) entre les mots clés VAR et
END_VAR. Aucune connexion externe n'existe, c'est-à-dire qu'elles ne peuvent pas être écrites
depuis l'extérieur.
Il est possible d'ajouter un attribut (voir page 562) à une variable VAR.
Exemple
VAR
iLoc1:INT; (* 1. Local Variable*)
END_VAR
Variables d'entrée - VAR_INPUT
Toutes les variables d'entrée d'un POU sont déclarées (voir page 541) entre les mots clés
VAR_INPUT et END_VAR. La valeur des variables peut donc être fournie avec un appel, à la
position d'appel.
Il est possible d'ajouter un attribut (voir page 562).
Exemple
VAR_INPUT
iIn1:INT (* 1. Inputvariable*)
END_VAR
Variables de sortie - VAR_OUTPUT
Toutes les variables de sortie d'un POU sont déclarées entre les mots clés VAR_OUTPUT et
END_VAR. Ces valeurs sont donc transmises au POU à l'origine de l'appel.
Il est possible d'ajouter un attribut (voir page 562) à une variable VAR_OUTPUT.
Exemple
558
EIO0000000069 02/2018
Déclaration de variables
VAR_OUTPUT
iOut1:INT; (* 1. Outputvariable*)
END_VAR
Variables de sortie dans les fonctions et méthodes :
Conformément à la norme IEC 61131-3 version 2, les fonctions (et les méthodes) peuvent
disposer de sorties supplémentaires. Vous pouvez attribuer ces dernières dans l'appel de la
fonction, comme illustré ci-dessous.
Exemple
fun(iIn1 := 1, iIn2 := 2, iOut1 => iLoc1, iOut2 => iLoc2);
Variables d'entrée et de sortie - VAR_IN_OUT
Toutes les variables d'entrée et de sortie d'un POU sont déclarées (voir page 541) entre les mots
clés VAR_IN_OUT et END_VAR.
NOTE : la valeur des variables IN_OUT transmises varie (variable transmise comme pointeur,
appel par référence). Cela signifie que la valeur d'entrée de ces variables n'est pas constante. Par
conséquent, même les variables VAR_IN_OUT d'un bloc fonction ne peuvent pas être lues ni
écrites directement de l'extérieur via la syntaxe <FBinstance>.<InOutVariable>.
NOTE : n'attribuez pas de symboles de type bit (tels que %MXaa.b ou des variables BOOL
associées à une adresse de type bit) à des paramètres VAR_IN_OUT BOOL de blocs fonction.
Sinon, ces attributions seront signalées comme une erreur Compiler dans la vue (voir SoMachine,
Commandes de menu, Aide en ligne) Messages.
Exemple
VAR_IN_OUT
iInOut1:INT; (* 1. Inputoutputvariable *)
END_VAR
Variables globales - VAR_GLOBAL
Vous pouvez déclarer des variables normales, des constantes et des variables externes ou
rémanentes qui seront appelées variables globales dans tout le projet. Les variables globales sont
à déclarées à partir des listes de variables globales (GVL). Pour ajouter une GVL, exécutez la
commande Ajouter un objet (disponible par défaut dans le menu Projet).
Déclarez les variables localement entre les mots clés VAR_GLOBAL et END_VAR.
Il est possible d'ajouter un attribut (voir page 562) à une variable VAR_GLOBAL.
Les variables globales sont précédées d'un point (par exemple, .iGlobVar1).
Pour obtenir des informations détaillées sur l'usage multiple des noms de variables, l'opérateur de
domaine de validité global dot (.) et les espaces de noms, reportez-vous au chapitre Opérateur
de domaine de validité global (voir page 751).
EIO0000000069 02/2018
559
Déclaration de variables
Les variables globales ne peuvent être déclarées qu'au sein de GVL, qui servent à gérer les
variables globales d'un projet. Pour ajouter une GVL, exécutez la commande Ajouter un objet
(disponible par défaut dans le menu Projet).
NOTE : Lorsqu'une variable définie localement dans un POU porte le même nom qu'une variable
globale, la priorité revient à la variable locale.
NOTE : Les variables globales sont initialisées avant les variables locales des POU.
Variables temporaires - VAR_TEMP
Cette fonction correspond à une extension de la norme IEC 61131-3.
Les variables temporaires sont (ré)initialisées à chaque appel du POU. Une variable VAR_TEMP
ne peut être déclarée que dans un programme ou un bloc fonction. En outre, ce type de variable
n'est accessible que depuis le corps du POU du programme ou du bloc fonction.
Déclarez les variables localement entre les mots clés VAR_TEMP et END_VAR.
NOTE : Vous pouvez utiliser une variable VAR_TEMP à la place d'une variable VAR afin de limiter
l'espace mémoire occupé par un POU (au sein d'un bloc fonction si la variable ne sert que
temporairement, par exemple).
Variables statiques - VAR_STAT
Cette fonction correspond à une extension de la norme IEC 61131-3.
Les variables statiques peuvent être utilisées dans des blocs fonction, des méthodes et des
fonctions. Déclarez-les localement entre les mots clés VAR_STAT et END_VAR. Ces variables sont
initialisées au premier appel du POU correspondant.
À l'instar des variables globales, les variables statiques conservent leur valeur en cas de fermeture
de la fenêtre du POU dans lequel elles sont déclarées. Elles sont partagées entre les POU dans
lesquels elles sont déclarées (par exemple, plusieurs instances de blocs fonction, fonctions ou
méthodes partagent la même variable statique). Vous pouvez les utiliser par exemple comme
compteur dans une fonction afin de comptabiliser le nombre d'appels de fonction.
Il est possible d'ajouter un attribut (voir page 562) à une variable VAR_STAT.
560
EIO0000000069 02/2018
Déclaration de variables
Variables externes - VAR_EXTERNAL
Il s'agit des variables globales importées dans le POU.
Déclarez-les localement entre les mots clés VAR_EXTERNAL et END_VAR, ainsi que dans la liste
de variables globales (GVL). Les déclarations au niveau local et global doivent être identiques. Si
la variable globale n'existe pas, un message s'affichera.
NOTE : Définir des variables externes n'est pas une obligation. Ces mots clés permettent d'assurer
la compatibilité avec la norme IEC 61131-3.
Exemple
VAR_EXTERNAL
iVarExt1:INT; (* 1st external variable *)
END_VAR
EIO0000000069 02/2018
561
Déclaration de variables
Mots-clés d'attribut pour les types de variable
Présentation
Vous pouvez ajouter les mots-clés d'attribut suivants à la déclaration (voir page 541) du type de
variable, afin de spécifier la portée :
 RETAIN : consultez Variables conservées (voir page 562)
 PERSISTENT : consultez Variables persistantes (voir page 563)
 CONSTANT : consultez Constantes - CONSTANT (voir page 564), littéraux saisis
(voir page 565)
Variables rémanentes - RETAIN, PERSISTENT
Les variables rémanentes peuvent conserver leur valeur tout au long de la période d'exécution du
programme habituel. Déclarez-les comme des variables conservées ou, pour davantage de
rigueur, comme des variables persistantes.
La déclaration détermine le degré de résistance d'une variable rémanente en cas de réinitialisations, de téléchargements ou de redémarrage du contrôleur. Dans les applications, la
combinaison des deux indicateurs rémanents est principalement utilisée (reportez-vous aux
Variables persistantes (voir page 563)).
NOTE : une déclaration VAR PERSISTENT est interprétée de la même manière qu'une
VAR PERSISTENT RETAIN ou VAR RETAIN PERSISTENT.
NOTE : utilisez la commande (voir SoMachine, Commandes de menu, Aide en ligne) Ajouter tous
les chemins d'instance pour placer les variables déclarées comme persistantes dans l'objet
Persistent list.
Variables conservées
Les variables déclarées comme variables conservées sont stockées dans une zone de mémoire
non volatile. Pour déclarer ce type de variable, utilisez le mot-clé RETAIN dans la partie de
déclaration d'un POU ou dans une liste de variables globales.
Exemple
VAR RETAIN
iRem1 : INT; (* 1. Retain variable*)
END_VAR
L'utilisation d'interfaces ou de blocs fonction non issus des bibliothèques de configuration système
génère des exceptions système qui risquent de rendre le contrôleur inopérant et de nécessiter un
redémarrage.
562
EIO0000000069 02/2018
Déclaration de variables
AVERTISSEMENT
COMPORTEMENT INATTENDU DE L'EQUIPEMENT


N'utilisez pas les interfaces hors de la bibliothèque SystemConfigurationItf dans la section
(VAR_RETAIN) du programme.
N'utilisez pas les blocs fonction hors de la bibliothèque SystemConfiguration dans la section
VAR_RETAIN du programme.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Les variables conservées gardent leur valeur même après un arrêt imprévu du contrôleur ou après
un cycle d'alimentation normal du contrôleur (ou lors de l'exécution de la commande En ligne
Reset Warm). Au redémarrage du programme, les valeurs conservées seront de nouveau traitées.
Les autres variables (non conservées) sont nouvellement initialisées, soit avec leurs valeurs
d'initialisation actuelles, soit avec leurs valeurs d'initialisation par défaut (si aucune valeur d'initialisation n'a été déclarée).
Par exemple, vous pouvez utiliser une valeur conservée lorsqu'une opération, telle que le
comptage des pièces dans une machine de production, doit se poursuivre après une coupure de
courant.
Les variables conservées sont toutefois réinitialisées lors de l'exécution de la commande En ligne
Reset origin et, contrairement aux variables persistantes, lors de l'exécution de la commande En
ligne Reset cold ou pendant le téléchargement d'une application.
NOTE : Seules les variables spécifiques définies comme VAR RETAIN sont stockées dans la
mémoire non volatile. Toutefois, les variables locales définies comme VAR RETAIN dans les
fonctions ne sont PAS stockées dans la mémoire non volatile. La définition locale de VAR RETAIN
dans les fonctions n'a aucun effet.
Variables persistantes
Les variables persistantes sont identifiées par le mot-clé PERSISTENT
(VAR_GLOBAL PERSISTENT). Elles sont uniquement réinitialisées lors de l'exécution de la
commande En ligne Reset origin. Contrairement aux variables conservées, elles gardent leurs
valeurs après un téléchargement.
NOTE : N'utilisez pas la déclaration AT avec VAR PERSISTENT.
Exemple d'application :
Un compteur des heures de fonctionnement, qui doit poursuivre le comptage même après une
coupure de courant ou un téléchargement. Reportez-vous au tableau synoptique relatif au
comportement des variables rémanentes (voir page 564).
EIO0000000069 02/2018
563
Déclaration de variables
Vous pouvez uniquement déclarer des variables persistantes dans une liste de variables globales
spécifique pour les variables persistantes de type d'objet, qui est attribuée à une application. Vous
ne pouvez ajouter qu'une seule liste de ce type à une application.
NOTE : Une déclaration avec VAR_GLOBAL PERSISTENT produit le même résultat qu'une
déclaration avec VAR_GLOBAL PERSISTENT RETAIN ou VAR_GLOBAL RETAIN PERSISTENT.
Comme les variables conservées, les variables persistantes sont stockées dans une zone de
mémoire distincte.
Exemple
VAR_GLOBAL PERSISTENT RETAIN
iVarPers1 : DINT; (* 1. Persistent+Retain Variable App1 *)
bVarPers : BOOL; (* 2. Persistent+Retain Variable App1 *)
END_VAR
NOTE : Les variables persistantes ne peuvent être déclarées que dans l'objet Persistent list. Si
elles sont déclarées ailleurs, elles se comporteront comme des variables conservées et seront
signalées comme une erreur Build détectée dans la vue Messages. (Les variables conservées
peuvent être déclarées dans les listes de variables globales ou dans les POU.)
Lors de chaque rechargement de l'application, la liste de variables persistantes sur le contrôleur
est comparée à celle du projet. La liste sur le contrôleur est identifiée par le nom de l'application.
En cas d'incohérences, vous serez invité à réinitialiser toutes les variables persistantes
(voir SoMachine, Commandes de menu, Aide en ligne) de l'application. Une incohérence peut
résulter de l'attribution d'un nouveau nom, d'une suppression ou d'autres modifications des
déclarations existantes qui figurent dans la liste.
NOTE : Examinez attentivement toutes les modifications effectuées dans la partie de déclaration
de la liste de variables persistantes et les effets des résultats sur la réinitialisation.
Vous pouvez ajouter de nouvelles déclarations uniquement à la fin de la liste. Lors d'un téléchargement, celles-ci seront détectées comme nouvelles, ce qui évite de réinitialiser toute la liste. Si
vous modifiez le nom ou le type de données d'une variable, la déclaration est considérée comme
nouvelle et déclenche une réinitialisation de la variable après la nouvelle modification en ligne ou
le nouveau téléchargement.
Comportement des variables rémanentes
Veuillez consulter le Guide de programmation spécifique à votre contrôleur pour plus
d'informations sur le comportement des variables rémanentes.
Constantes - CONSTANT
Les constantes sont identifiées par le mot-clé CONSTANT. Vous pouvez les déclarer localement ou
globalement.
Syntaxe
VAR CONSTANT<identificateur>:<type> := <initialisation>;END_VAR
564
EIO0000000069 02/2018
Déclaration de variables
Exemple
VAR CONSTANT
c_iCon1:INT:=12; (* 1. Constant*)
END_VAR
Reportez-vous aux chapitre Opérandes (voir page 755) pour obtenir la liste des constantes
possibles.
Littéraux saisis
Lors de l'utilisation de constantes IEC, le plus petit type de données possible est utilisé. Si un autre
type de données doit être utilisé, vous devez recourir aux littéraux saisis sans qu'il soit nécessaire
de déclarer explicitement les constantes. Pour ce faire, la constante sera fournie avec un préfixe
déterminant le type.
Syntaxe
<type>#<literal>;
<type>
spécifie le type de donnée souhaité
Entrées possibles : BOOL, SINT, USINT, BYTE, INT, UINT, WORD,
DINT, UDINT, DWORD, REAL, LREAL
Ecrivez le type en lettres majuscules.
<literal>
spécifie la constante
Entrez les données correspondant au type de données spécifié sous
<type>.
Exemple
iVar1:=DINT#34;
Si la constante ne peut pas être convertie vers le type cible sans perte de données, un message
est émis.
Vous pouvez utiliser les littéraux saisis partout où des constantes normales peuvent être utilisées.
Constantes en mode En ligne
Tant que le paramètre par défaut Replace constants (Fichier → Paramètres du projet → Compile
options) est activé, les constantes en mode En ligne ont un symbole
qui précède la valeur dans
la colonne Valeur de la déclaration ou de la vue affichée. Dans ce cas, elles sont inaccessibles,
par exemple en forçage ou en écriture.
EIO0000000069 02/2018
565
Déclaration de variables
Configuration des variables - VAR_CONFIG
Présentation
La configuration des variables permet de mapper des variables de bloc fonction sur l'image de
process, au niveau des E/S de l'équipement. Inutile alors de définir l'adresse définitive dès la
déclaration de la variable du bloc fonction. Dans ce cas, l'adresse (voir page 771) définitive est
attribuée une fois pour l'ensemble des instances de blocs fonction, dans une liste VAR_CONFIG
globale.
Pour ce faire, vous pouvez attribuer des adresses incomplètes aux variables de bloc fonction
déclarées entre les mots clés VAR et END_VAR. Identifiez ces adresses au moyen d'un astérisque.
Syntaxe de l'identificateur
<identificateur> AT %<I|Q>* : <type de données>
Exemple d'utilisation d'adresses partiellement définies :
FUNCTION_BLOCK locio
VAR
xLocIn AT %I*: BOOL := TRUE;
xLocOut AT %Q*: BOOL;
END_VAR
Dans cet exemple, 2 variables d'E/S locales sont définies : une variable d'entrée locale (%I*) et
une variable de sortie locale (%Q*).
Procédez comme suit pour définir les adresses dans la configuration de variables d'une liste de
variables globales (GVL) :
Étape
Action
1
Exécutez la commande Ajouter un objet.
2
Ajoutez un objet Liste de variables globales (GVL) dans l'arborescence
Équipements.
3
Déclarez les variables d'instance avec adresses définitives entre les mots clés
VAR_CONFIG et END_VAR.
Tenez compte des points suivants lors de la définition des adresses :
Indiquez le chemin d'instance complet des variables d'instance, et séparez les différents POU
et noms d'instances par un point.
 Dans la déclaration, saisissez une adresse d'une classe (entrée/sortie) identique à celle de
l'adresse incomplète (%I*, %Q*) dans le bloc fonction.
 Vérifiez que le type de données corresponde à la déclaration dans le bloc fonction.

Syntaxe du chemin variable d'instance
<chemin variable d'instance> AT %<I|Q><emplacement> : <type de données>;
566
EIO0000000069 02/2018
Déclaration de variables
Les variables de configuration dont le chemin d'instance est incorrect (car instance inexistante)
sont signalées comme erreurs. Une erreur est aussi détectée lorsqu'une variable d'instance
attribuée à une adresse incomplète n'est associée à aucune configuration d'adresse définitive.
Exemple de configuration de variables
Supposons que le bloc fonction locio (voir exemple précédent) soit défini dans un programme :
PROGRAM PLC_PRG
VAR
locioVar1: locio;
locioVar2: locio;
END_VAR
Voici une configuration de variables correcte :
VAR_CONFIG
PLC_PRG.locioVar1.xLocIn AT %IX1.0 : BOOL;
PLC_PRG.locioVar1.xLocOut AT %QX0.0 : BOOL;
PLC_PRG.locioVar2.xLocIn AT %IX1.0 : BOOL;
PLC_PRG.locioVar2.xLocOut AT %QX0.3 : BOOL;
END_VAR
NOTE : toute modification au niveau des E/S mappées directement apparaît immédiatement sur
l'image de process. En revanche, vous devez patienter jusqu'à la fin de la tâche en question pour
voir les modifications de variables mappées via VAR_CONFIG.
EIO0000000069 02/2018
567
Déclaration de variables
Sous-chapitre 27.3
Types de méthode
Types de méthode
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
568
Page
Méthodes FB_init et FB_reinit
569
Méthode FB_exit
572
EIO0000000069 02/2018
Déclaration de variables
Méthodes FB_init et FB_reinit
FB_Init
La méthode FB_init sert à réinitialiser un bloc fonction ou une structure. Bien que FB_init
puisse être déclaré explicitement pour les blocs fonction, la méthode sera toujours disponible
implicitement.
La méthode FB_init contient un code d'initialisation pour le bloc fonction ou la structure, tel que
déclaré dans la partie déclaration de l'objet correspondant. En cas de déclaration explicite de la
méthode init, celle-ci contient le code d'initialisation implicite. Le programmeur a la possibilité de
compléter le code d'initialisation.
NOTE : lorsque le programme atteint le code d'initialisation défini par l'utilisateur, le bloc fonction
ou la structure est déjà complètement initialisé(e) grâce au code d'initialisation implicite.
Un téléchargement déclenche l'appel de la méthode init pour chaque instance de bloc fonction
déclarée et chaque variable de type structure.
NOTE : la commande Changement en ligne remplace les valeurs d'initialisation par celles définies
précédemment.
Pour plus d'informations sur la séquence d'appel en cas d'héritage, consultez le paragraphe
correspondant dans le chapitre Méthode FB_exit (voir page 572).
Pour savoir s'il est possible de définir une méthode d'instance de bloc fonction à appeler automatiquement suite à une initialisation via FB_init, reportez-vous au chapitre Attribut call_after_init
(Attribute call_after_init) (voir page 589).
Interface de la méthode init
METHOD fb_init : BOOL
VAR_INPUT
bInitRetains : BOOL; // if TRUE, the retain variables are initialized
(warm start / cold start)
bInCopyCode : BOOL; // if TRUE, the instance afterwards
gets moved into the copy code (online change)
END_VAR
La valeur renvoyée est sans conséquences.
NOTE : vous pouvez aussi considérer une méthode de sortie et la séquence d'exécution résultante
(reportez-vous au chapitre Méthode FB_exit (voir page 572)).
Entrée définie par l'utilisateur
La méthode init permet de déclarer des entrées de bloc fonction supplémentaires, qui seront
attribuées au niveau de la déclaration d'une instance de bloc fonction.
Exemple de méthode init pour un bloc fonction serialdevice :
EIO0000000069 02/2018
569
Déclaration de variables
METHOD PUBLIC FB_init : bool
VAR_INPUT
bInitRetains : BOOL; // Initialization of the retain variables
bInCopyCode : BOOL; // Instance moved into copy code
nCOMnum : INT; // Input: number of the COM interface to listen at
END_VAR
Déclaration du bloc fonction serialdevice :
com1: serialdevice (nCOMnum:=1);
com0: serialdevice (nCOMnum:=0);
Exemple de méthode FB_init pour une structure DUTxy :
Structure DUTxy
TYPE DUTxy
STRUCT
a: INT
b: INT
c: INT
END_STRUCT
END_TYPE
:
:= 10;
:= 11;
:= 12;
Appel de fb_init à des fins de réinitialisation :
PROGRAM PLC_PRG
VAR
dutTest: DUTxy;
xInit: BOOL:=FALSE;
END_VAR
IF xinit THEN // if xinit is set TRUE, then the
reinitialization via fb_init to the values as defined in DUTxy will be
done
dutTest.FB_Init(TRUE,TRUE);
ELSE
dutTest.a := 1;
dutTest.b := 2;
dutTest.c := 3;
END_IF
570
EIO0000000069 02/2018
Déclaration de variables
FB_reinit
Une méthode FB_reinit déclarée pour une instance de bloc fonction sera appelée après copie
de l'instance en question. C'est le cas lors d'un changement en ligne après modification de la
déclaration du bloc fonction. La méthode déclenche alors la réinitialisation du nouveau module
d'instance créé par le code de copie. Vous pouvez souhaiter une réinitialisation pour écrire les
données de l'instance d'origine dans la nouvelle instance copiée, tout en conservant les valeurs
d'initialisation initiales. La méthode FB_reinit n'a pas d'entrées. Contrairement à la méthode
FB_init elle doit être déclarée explicitement. Vous souhaitez réinitialiser l'implémentation
basique d'un bloc fonction ? Dans ce cas, appelez explicitement FB_reinit pour ce POU.
La méthode FB_reinit n'a pas d'entrées.
Pour plus d'informations sur la séquence d'appel en cas d'héritage, consultez le paragraphe
correspondant dans le chapitre Méthode FB_exit (voir page 572).
EIO0000000069 02/2018
571
Déclaration de variables
Méthode FB_exit
Présentation
La méthode FB_exit est spécialement destinée à un bloc fonction. Elle doit être déclarée
explicitement (aucune déclaration implicite). Lorsqu'elle existe, la méthode exit est appelée pour
toutes les instances déclarées du bloc fonction avant un nouveau téléchargement, lors d'une
réinitialisation ou à l'occasion d'un changement en ligne pour toutes les instances déplacées ou
supprimées.
Interface de la méthode FB_exit
Il existe un seul paramètre obligatoire :
METHOD fb_exit : BOOL
VAR_INPUT
bInCopyCode : BOOL; // if TRUE, the exit method is called
for exiting an instance that is copied afterwards (online change).
END_VAR
Vous pouvez également considérer la méthode FB_init (voir page 569) et la séquence d'exécution
suivante :
1
méthode exit :
quitter l'ancienne
instance
old_inst.fb_exit(bInCopyCode := TRUE);
2
méthode init :
initialiser la nouvelle
instance
new_inst.fb_init(bInitRetains := FALSE, bInCopyCode := TRUE);
3
copier les valeurs du copy_fub(&old_inst, &new_inst);
bloc fonction (code de
copie)
Héritage
En outre, en cas d'héritage, la séquence d'appel suivante s'applique (en supposant que les POU
SubFB EXTENDS MainFB et SubSubFB EXTENDS SubFB soient utilisés pour ce listage) :
fbSubSubFb.FB_Exit(...);
fbSubFb.FB_Exit(...);
fbMainFb.FB_Exit(...);
fbMainFb.FB_Init(...);
fbSubFb.FB_Init(...);
fbSubSubFb.FB_Init(...);
Avec la méthode FB_reinit, la séquence suivante s'applique :
fbMainFb.FB_reinit(...);
fbSubFb.FB_reinit(...);
fbSubSubFb.FB_Init(...);
572
EIO0000000069 02/2018
Déclaration de variables
Sous-chapitre 27.4
Instructions Pragma
Instructions Pragma
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Instructions Pragma
574
Pragmas de message
576
Pragmas conditionnels
578
EIO0000000069 02/2018
573
Déclaration de variables
Instructions Pragma
Vue d'ensemble
Une instruction pragma permet d'affecter les propriétés d'une ou plusieurs variables pour influer
sur le processus de compilation ou précompilation (préprocesseur). Cela signifie que l'instruction
pragma influence la génération du code.
NOTE : les pragmas disponibles ne reflètent pas exactement les directives du préprocesseur C.
Considérées comme des instructions normales, elles doivent être ajoutées aux mêmes positions
que les instructions.
Un pragma peut déterminer si une variable sera initialisée, surveillée, ajoutée à une liste de
paramètres ou à la liste de symboles (voir page 618), ou bien masquée dans le gestionnaire de
bibliothèques. Il peut forcer l'émission de messages pendant la génération. Les pragmas
conditionnels permettent de définir le traitement réservé à la variable, en fonction de conditions
spécifiques. Ces pragmas peuvent aussi servir de définitions dans les propriétés de génération
d'un objet particulier.
Ajoutez le pragma sur une ligne distincte, ou en tant que texte complémentaire sur une ligne
d'implémentation ou d'éditeur de déclaration. Dans l'éditeur FBD/LD/IL, exécutez la commande
Insérer une étiquette, puis remplacez le texte par défaut Label: par le pragma dans la zone de
texte qui s'affiche. Si vous souhaitez définir une étiquette et un pragma, ajoutez le pragma en
premier.
L'instruction pragma est entre accolades.
Syntaxe
{ <texte d'instruction> }
L'accolade ouvrante peut être ajoutée immédiatement après un nom de variable. Les accolades
ouvrante et fermante doivent figurer sur la même ligne.
574
EIO0000000069 02/2018
Déclaration de variables
Informations complémentaires
En fonction du type et du contenu du pragma, le pragma agit sur l'instruction qui suit, puis sur
toutes les autres, jusqu'à ce que l'une des conditions suivantes soit remplie :
 Il se termine par un pragma approprié.
 Le même pragma est exécuté avec différents paramètres.
 Le programme a atteint la fin du code.
Dans ce contexte, le terme « code » désigne une partie déclaration ou implémentation, une liste
de variables globales ou une déclaration de type.
NOTE : les instructions Pragma font la distinction entre majuscules et minuscules.
Si le compilateur ne parvient pas à interpréter le texte d'instruction, le pragma est intégralement
considéré comme un commentaire et ignoré.
Reportez-vous aux types de pragma suivants :





Pragmas de message (voir page 576)
Pragmas d'obsolescence (voir page 614)
Pragmas d'attribut (voir page 586)
Pragmas conditionnels (voir page 578)
Pragmas de symbole (voir page 618)
EIO0000000069 02/2018
575
Déclaration de variables
Pragmas de message
Présentation
Les pragmas de message servent à forcer les messages renvoyés dans la vue Messages
(disponible par défaut dans le menu Modifier) lors de la compilation du projet.
Vous pouvez ajouter l'instruction pragma sur une ligne existante ou sur une ligne distincte dans
l'éditeur de texte d'un POU. Les pragmas de message figurant dans des sections non définies du
code d'implémentation sont ignorés au moment de la compilation du projet. Pour plus
d'informations, reportez-vous à l'exemple accompagnant la description de l'identificateur défini, au
chapitre Pragmas conditionnels (voir page 578).
Types de Pragmas de message
Il existe quatre types de pragmas de message :
Pragma
Icône
Type de message
{text 'chaîne de texte'}
–
texte
La chaîne de texte indiquée s'affichera.
{info 'chaîne de texte'}
information
La chaîne de texte indiquée s'affichera.
{warning digit 'chaîne de texte'}
alerte
La chaîne de texte indiquée s'affichera.
Contrairement au pragma d'obsolescence
(voir page 614) global, cette alerte est
explicitement définie en local.
{error 'chaîne de texte'}
erreur
La chaîne de texte indiquée s'affichera.
NOTE : dans le cas des messages de type information, alerte et erreur, la commande Message
suivant permet d'atteindre la position source du message (là où le pragma est inséré dans un
POU). L'opération est impossible avec le type texte.
Exemple de déclaration et d'implémentation dans l'éditeur ST
VAR
ivar : INT; {info 'TODO: should get another name'}
bvar : BOOL;
arrTest : ARRAY [0..10] OF INT;
i:INT;
END_VAR
arrTest[i] := arrTest[i]+1;
ivar:=ivar+1;
{warning 'This is an alert'}
{text 'Part xy has been compiled completely'}
576
EIO0000000069 02/2018
Déclaration de variables
Résultat dans la vue Messages :
EIO0000000069 02/2018
577
Déclaration de variables
Pragmas conditionnels
Présentation
Le langage étendu ST (ExST) prend en charge plusieurs instructions Pragma (voir page 574), qui
affectent la génération du code lors de la compilation ou précompilation.
Le code d'implémentation pris en compte pour la compilation varie en fonction des conditions
suivantes :
 Un type de données ou une variable spécifique a-t-il été déclaré ?
 Un attribut spécifique est-il associé à un type ou une variable ?
 Une variable est-elle associée à un type de données spécifique ?
 Un POU ou une tâche spécifique est-il disponible ou fait-il partie de l'arborescence d'appels, etc.
NOTE : Un POU ou une GVL déclaré dans l'arborescence POU ne peut pas utiliser de pragma
{define...} déclaré au sein d'une application. Les définitions des applications n'affectent que
les interfaces insérées sous l'application correspondante.
578
{define identifier string}
Lors du prétraitement, toutes les instances suivantes de
l'identificateur sont remplacées par la séquence indiquée de
jetons, dans le cas où la chaîne de jeton n'est pas vide (ce qui
est autorisé et clairement défini). L'identificateur reste défini et
dans le domaine de validité jusqu'à la fin de l'objet ou jusqu'à ce
qu'une directive {undefine} annule sa définition. Usage :
compilation conditionnelle (voir page 579).
{undefine identifier}
La définition de l'identifier au sein du préprocesseur (par
{define}, voir première ligne du présent tableau) est
supprimée ; l'identificateur n'est donc plus défini. Lorsque
l'identificateur indiqué n'est pas défini, ce pragma est ignoré.
{IF expr}
...
{ELSIF expr}
...
{ELSE}
...
{END_IF}
Ces pragmas s'appliquent au processus de compilation
conditionnelle. Les expressions exprs doivent être constantes
lors de la compilation. Leur évaluation s'effectue selon leur ordre
d'affichage, jusqu'à ce que l'une des expressions renvoie une
valeur non nulle. Le texte associé à cette directive est alors
prétraité et compilé normalement, les autres étant ignorés. Les
sections doivent s'afficher dans un ordre bien spécifique. Notons
néanmoins que les sections elsif et else sont facultatives et
que la section elsif peut se répéter plus souvent de façon
arbitraire.
Vous pouvez utiliser plusieurs opérateurs de compilation
conditionnelle (voir page 579) au sein de l'expression constante
expr.
EIO0000000069 02/2018
Déclaration de variables
Opérateurs de compilation conditionnelle
L'expression constante expr d'un pragma de compilation conditionnelle ({if} ou {elsif}, voir
tableau précédent) accepte plusieurs opérateurs. La définition de ces opérateurs peut ne pas être
annulée ou revue via {undefine} ou {define}, respectivement. Vous pouvez aussi utiliser ces
expressions et la définition réalisée par {define} dans la zone de texte Compiler defines: de la
boîte de dialogue Propriétés d'un objet (Afficher → Propriétés → Compiler).
Les opérateurs suivants sont pris en charge :
 defined (identifier) (voir page 579)
 defined (variable:variable) (voir page 580)
 defined (type:identifier) (voir page 580)
 defined (pou:pou-name) (voir page 580)
 hasattribute (pou: pou-name, attribute) (voir page 581)
 hasattribute (variable: variable, attribute) (voir page 581)
 hastype (variable:variable, type-spec) (voir page 582)
 hasvalue (define-ident, char-string) (voir page 583)
 opérateur NOT (NOT operator) (voir page 584)
 opérateur AND (AND operator) (voir page 584)
 opérateur OR (OR operator) (voir page 584)
 operator (voir page 584)
defined (identifier)
Avec cet opérateur, l'expression prend la valeur TRUE lorsque l'identifier est défini via une
instruction {define} et que cette définition n'est pas annulée ultérieurement par une instruction
{undefine} . Sinon, elle prend la valeur FALSE.
Exemple d'opérateur defined (identifier) :
Prérequis : deux applications App1 et App2 existent. La variable pdef1 est déclarée dans App2,
mais pas dans App1.
{IF defined pdef1)}
(* this code is processed in App1 *)
{info 'pdef1 defined'}
hugo := hugo + SINT#1;
{ELSE}
(* the following code is only processed in application App2 *)
{info 'pdef1 not defined'}
hugo := hugo - SINT#1;
Un exemple de pragma de message (voir page 576) est également inclus :
Seules les informations pdef1 defined s'affichent dans la vue Messages lors de la compilation
de l'application, car pdef1 est défini. Le message pdef1 not defined s'affiche si pdef1 n'est pas
défini.
EIO0000000069 02/2018
579
Déclaration de variables
defined (variable:variable)
Lorsque l'opérateur s'applique à une variable, l'expression prend la valeur TRUE si la variable est
déclarée au sein du domaine de validité en cours. Sinon, elle prend la valeur FALSE.
Exemple d'opérateur defined (variable:variable) :
Prérequis : deux applications App1 et App2 existent. La variable g_bTest est déclarée dans
App2, mais pas dans App1.
{IF defined (variable:g_bTest)}
(* the following code is only processed in application App2 *)
g bTest := x > 300;
{END_IF}
defined (type:identifier)
Lorsque l'opérateur s'applique à un identificateur de type, l'expression prend la valeur TRUE si un
type portant ce nom est déclaré. Sinon, elle prend la valeur FALSE.
Exemple d'opérateur defined (type:identifier) :
Prérequis : deux applications App1 et App2 existent. Le type de données DUT est défini dans
App2, mais pas dans App1.
{IF defined (type:DUT)}
(* the following code is only processed in application App1 *)
bDutDefined := TRUE;
{END_IF}
defined (pou:pou-name)
Lorsque l'opérateur s'applique à un nom de POU, l'expression prend la valeur TRUE si un POU ou
une action portant ce nom est déclaré. Sinon, elle prend la valeur FALSE.
Exemple d'opérateur defined (pou: pou-name) :
Prérequis : deux applications App1 et App2 existent. Le POU CheckBounds est disponible dans
App2, mais pas dans App1.
{IF defined (pou:CheckBounds)}
(* the following code is only processed in application App1 *)
arrTest[CheckBounds(0,i,10)] := arrTest[CheckBounds(0,i,10)] + 1;
{ELSE}
(* the following code is only processed in application App2 *)
arrTest[i] := arrTest[i]+1;
{END_IF}
580
EIO0000000069 02/2018
Déclaration de variables
hasattribute (pou: pou-name, attribute)
Lorsque l'opérateur s'applique à un POU, l'expression prend la valeur TRUE si l'attribut
(attribute) en question est indiqué sur la première ligne de la déclaration des POU.
Exemple d'opérateur hasattribute (pou: pou-name, attribute):
Prérequis : deux applications App1 et App2 existent. La fonction fun1 est définie dans App1 et
App2, et possède un attribut vision dans App1 :
Définition de fun1 dans App1 :
{attribute 'vision'}
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR
Définition de fun1 dans App2 :
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR
Instruction Pragma
{IF hasattribute (pou: fun1, 'vision')}
(* the following code is only processed in application App1 *)
ergvar := fun1 ivar);
{END_IF}
hasattribute (variable: variable, attribute)
Lorsque l'opérateur s'applique à une variable, l'expression prend la valeur TRUE si l'attribut en
question est indiqué via l'instruction {attribute} sur une ligne précédant la déclaration de la
variable.
Exemple d'opérateur hasattribute (variable: variable, attribute) :
Prérequis : deux applications App1 et App2 existent. La variable g_globalInt est utilisée dans
App1 et App2, et possède un attribut DoCount dans App1 :
Déclaration de g_globalInt dans App1 :
EIO0000000069 02/2018
581
Déclaration de variables
VAR_GLOBAL
{attribute 'DoCount'}
g_globalInt : INT;
g_multiType : STRING;
END_VAR
Déclaration de g_globalInt dans App2 :
VAR_GLOBAL
g_globalInt : INT;
g_multiType : STRING;
END_VAR
Instruction Pragma
{IF hasattribute (variable: g_globalInt, 'DoCount')}
(* the following code line will only be processed in App1, because ther
e variable g_globalInt has got the attribute 'DoCount' *)
g_globalInt := g_globalInt + 1;
{END_IF}
hastype (variable:variable, type-spec)
Lorsque l'opérateur s'applique à une variable, l'expression prend la valeur TRUE si la variable
en question correspond au type (type-spec) indiqué. Sinon, elle prend la valeur FALSE.
Types de données disponibles pour type-spec
 ANY
 ANY_DERIVED
 ANY_ELEMENTARY
 ANY_MAGNITUDE
 ANY_BIT
 ANY_STRING
 ANY_DATE
 ANY_NUM
 ANY_REAL
 ANY_INT
 LREAL
 REAL
 LINT
 DINT
 INT
 SINT
 ULINT
 UDINT
 UINT
 USINT
582
EIO0000000069 02/2018
Déclaration de variables











TIME
LWORD
DWORD
WORD
BYTE
BOOL
STRING
WSTRING
DATE_AND_TIME
DATE
TIME_OF_DAY
Exemple d'opérateur hastype (variable: variable, type-spec) :
Prérequis : deux applications App1 et App2 existent. La variable g_multitype est déclarée dans
App1 sous le type LREAL, et dans l'application App2 sous le type STRING :
{IF (hastype (variable: g_multitype, LREAL))}
(* the following code line will be processed only in App1 *)
g_multitype := (0.9 + g_multitype) * 1.1;
{ELSIF (hastype (variable: g_multitype, STRING))}
(* the following code line will be processed only in App2 *)
g_multitype := 'this is a multitalent';
{END_IF}
hasvalue (define-ident, char-string)
Lorsque la variable (define-ident) est définie et possède la valeur indiquée (char-string),
l'expression prend la valeur TRUE. Sinon, elle prend la valeur FALSE.
Exemple d'opérateur hasvalue (define-ident, char-string) :
Prérequis : la variable test est utilisée dans les applications App1 et App2. Elle prend la valeur 1
dans App1 et la valeur 2 dans App2 :
{IF hasvalue(test,'1')}
(* the following code line will be processed in App1, because there var
iable test has value 1 *)
x := x + 1;
{ELSIF hasvalue(test,'2')}
(* the following code line will be processed in App1, because there var
iable test has value 2 *)
x := x + 2;
{END_IF}
EIO0000000069 02/2018
583
Déclaration de variables
Opérateur NOT - NOT operator
L'expression prend la valeur TRUE lorsque la valeur inversée de l'opérateur (operator) est
TRUE. L'opérateur (operator) correspond à l'un des opérateurs décrits dans ce chapitre.
Exemple d'opérateur NOT (NOT operator) :
Prérequis : deux applications App1 et App2 existent. Le POU PLC_PRG1 est utilisé dans App1 et
App2. Le POU CheckBounds est uniquement disponible dans App1 :
{IF defined (pou: PLC_PRG1) AND NOT (defined (pou: CheckBounds))}
(* the following code line is only executed in App2 *)
bANDNotTest := TRUE;
{END_IF}
Opérateur AND - AND operator
L'expression prend la valeur TRUE lorsque les deux opérateurs sont TRUE. L'opérateur
(operator) correspond à l'un des opérateurs répertoriés dans ce tableau.
Exemple d'opérateur AND (AND operator) :
Prérequis : deux applications App1 et App2 existent. Le POU PLC_PRG1 est utilisé dans les
applications App1 et App2. Le POU CheckBounds est uniquement disponible dans App1 :
{IF defined (pou: PLC_PRG1) AND (defined (pou: CheckBounds))}
(* the following code line will be processed only in applications App1,
because only there "PLC_PRG1" and "CheckBounds" are defined *)
bORTest := TRUE;
{END_IF}
OR operator
L'expression prend la valeur TRUE lorsque l'un des opérateurs est TRUE. L'opérateur (operator)
correspond à l'un des opérateurs décrits dans ce chapitre.
Exemple d'opérateur OR operator :
Prérequis : le POU PLC_PRG1 est utilisé dans les applications App1 et App2. Le POU
CheckBounds est uniquement disponible dans App1 :
{IF defined (pou: PLC_PRG1) OR (defined (pou: CheckBounds))}
(* the following code line will be processed in applications App1 and A
pp2, because both contain at least one of the POUs "PLC_PRG1" and "Chec
kBounds" *)
bORTest := TRUE;
{END_IF}
(operator)
(operator) englobe l'opérateur.
584
EIO0000000069 02/2018
Déclaration de variables
Sous-chapitre 27.5
Pragmas d'attribut
Pragmas d'attribut
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Pragmas d'attribut
586
Attributs définis par l'utilisateur
587
Attribute call_after_init
589
Attribute displaymode
590
Attribute ExpandFully
591
Attribute global_init_slot
593
Attribute hide
594
Attribute hide_all_locals
595
Attribute initialize_on_call
596
Attribute init_namespace
597
Attribute init_On_Onlchange
598
Attribute instance-path
599
Attribute linkalways
600
Attribute monitoring
602
Attribute namespace
606
Attribute no_check
608
Attribute no_copy
608
Attribute no-exit
609
Attribute no_init
610
Attribute no_virtual_actions
611
Attribute obsolete
614
Attribute pack_mode
615
Attribute qualified_only
616
Attribute reflection
617
Attribute subsequent
617
Attribute symbol
618
Attribute warning disable
620
EIO0000000069 02/2018
585
Déclaration de variables
Pragmas d'attribut
Présentation
Des pragmas d'attribut (voir page 574) peuvent être attribués à une signature afin d'affecter le
processus de compilation ou précompilation, c'est-à-dire la génération du code.
Il est possible de combiner des attributs définis par l'utilisateur (voir page 587) à des pragmas
conditionnels (voir page 578).
Les pragmas d'attribut standard prédéfinis sont les suivants :
 attribute displaymode (voir page 590)
 attribute ExpandFully (voir page 591)
 attribute global_init_slot (voir page 593)
 attribute hide (voir page 594)
 attribute hide_all_locals (voir page 595)
 attribute initialize_on_call (voir page 596)
 attribute init_namespace (voir page 597)
 attribute init_On_Onlchange (voir page 598)
 attribute instance-path (voir page 599)
 attribute linkalways (voir page 600)
 attribute monitoring (voir page 602)
 attribute namespace (voir page 606)
 attribute no_check (voir page 608)
 attribute no_copy (voir page 608)
 attribute no-exit (voir page 609)
 attribute noinit (voir page 610)
 attribute no_virtual_actions (voir page 611)
 attribute obsolete (voir page 614)
 attribute pack_mode (voir page 615)
 attribute qualified_only (voir page 616)
 attribute reflection (voir page 617)
 attribute subsequent (voir page 617)
 attribute symbol (voir page 618)
 attribute warning disable (voir page 620)
586
EIO0000000069 02/2018
Déclaration de variables
Attributs définis par l'utilisateur
Présentation
Vous avez la possibilité d'attribuer des pragmas d'attribut définis par l'application ou par l'utilisateur
de façon libre à des POU, des déclarations de type ou des variables. Cet attribut peut être interrogé
avant la compilation via des pragmas conditionnels (voir page 578).
Syntaxe
{attribute 'attribut'}
Cette instruction pragma s'applique à la déclaration de variable ou de POU qui suit.
Vous pouvez attribuer un attribut défini par l'utilisateur à :
un POU ou une action,
 une variable,
 un type de données.

Exemple applicable aux POU et actions
Attribut vision pour la fonction fun1 :
{attribute 'vision'}
FUNCTION fun1 : INT
VAR_INPUT
i : INT;
END_VAR
VAR
END_VAR
Exemple applicable aux variables
Attribut DoCount pour la variable ivar :
PROGRAM PLC_PRG
VAR
{attribute 'DoCount'};
ivar:INT;
bvar:BOOL;
END_VAR
EIO0000000069 02/2018
587
Déclaration de variables
Exemple applicable aux types
Attribut aType pour le type de données DUT_1 :
{attribute 'aType'}
TYPE DUT_1 :
STRUCT
a:INT;
b:BOOL;
END_STRUCT
END_TYPE
Pour en savoir plus sur l'utilisation des pragmas conditionnels, reportez-vous au chapitre Pragmas
conditionnels (voir page 578).
588
EIO0000000069 02/2018
Déclaration de variables
Attribute call_after_init
Présentation
Le pragma {attribute call_after_init} permet de définir une méthode appelée de façon
implicite après l'initialisation d'une instance de bloc fonction. Pour ce faire, l'attribut doit être
associé à la fois au bloc fonction et à la méthode d'instance à appeler (pour des performances
optimales). Il convient d'appeler la méthode après FB_Init (voir page 569) et après avoir appliqué
les valeurs de variable d'une expression d'initialisation dans la déclaration d'instance.
Cette fonctionnalité est prise en charge à partir de SoMachine V3.0.
Syntaxe
{attribute 'attribute call_after_init'}
Exemple
Avec la définition suivante :
{attribute 'call_after_init'}
FUNCTION_BLOCK FB
... <functionblock definition>
{attribute 'call_after_init'}
METHOD FB_AfterInit
... <method definition>
… la déclaration suivante :
inst : FB := (in1 := 99);
… déclenche le traitement du code dans l'ordre suivant :
inst.FB_Init();
inst.in1 := 99;
inst.FB_AfterInit();
FB_Afterinit permet donc d'indiquer l'action à effectuer suite à une initialisation définie par
l'utilisateur.
EIO0000000069 02/2018
589
Déclaration de variables
Attribute displaymode
Présentation
Le pragma {attribute displaymode} permet de définir le mode d'affichage d'une variable. Il
remplace le paramètre global de mode d'affichage de l'ensemble des variables de surveillance
défini via les commandes du sous-menu Mode d'affichage (disponible par défaut dans le menu En
ligne).
Ajoutez le pragma sur la ligne précédant la ligne de déclaration de la variable.
Syntaxe
{attribute 'displaymode':=<modeaffichage>}
Les définitions suivantes sont possibles :
Affichage au format binaire
{attribute 'displaymode':='bin'}
{attribute 'displaymode':='binary'}
Affichage au format décimal
{attribute 'displaymode':='dec'}
{attribute 'displaymode':='decimal'}
Affichage au format hexadécimal
{attribute 'displaymode':='hex'}
{attribute 'displaymode':='hexadecimal'}
Exemple
VAR
{attribute 'displaymode':='hex'}
dwVar1: DWORD;
END_VAR
590
EIO0000000069 02/2018
Déclaration de variables
Attribute ExpandFully
Présentation
Le pragma {attribute 'ExpandFully'} permet de proposer, dans la boîte de dialogue
Visualization Properties, l'ensemble des membres de tableaux utilisés comme variables d'entrée
pour les visualisations référencées.
Syntaxe
{attribute 'ExpandFully'}
Exemple
La visualisation visu est destinée à être insérée dans un cadre au sein de la visualisation
visu_main.
La variable d'entrée arr, définie dans l'éditeur d'interface de visu, pourra être attribuée ultérieurement dans la boîte de dialogue Propriétés du cadre au sein de visu_main.
Pour que les composants du tableau soient répertoriés dans la boîte de dialogue Propriétés,
insérez l'attribut ExpandFully dans l'éditeur d'interface de visu, juste avant arr.
Déclaration de l'éditeur d'interface de visu :
VAR_INPUT
{attribute 'ExpandFully'}
arr : ARRAY[0..5] OF INT;
END_VAR
EIO0000000069 02/2018
591
Déclaration de variables
Boîte de dialogue Propriétés résultante du cadre dans visu_main :
592
EIO0000000069 02/2018
Déclaration de variables
Attribute global_init_slot
Présentation
Le pragma {attribute 'global_init_slot'} n'est applicable qu'aux signatures. Par
défaut, l'initialisation des variables d'une liste de variables globales est libre. Cependant, certaines
situations exigent de fixer un ordre bien précis, lorsque les variables d'une liste globale font
référence à des variables d'une autre liste. Dans ce cas, le pragma permet de définir l'ordre de
l'initialisation globale.
Syntaxe
{attribute 'global_init_slot' := '<valeur>'}
Remplacez l'espace réservé <valeur> par un entier déterminant l'ordre d'initialisation de la
signature. La valeur par défaut est 50 000. Avec une valeur inférieure, l'initialisation a lieu plus tôt.
La séquence d'initialisation des signatures est indéfinie lorsque ces dernières possèdent un
attribut global_init_slot de valeur identique.
Exemple
Considérons un projet comportant deux listes de variables globales GVL_1 et GVL_2.
La variable globale A appartient à la liste de variables globales GVL_1 :
{attribute 'global_init_slot' := '300'}
VAR_GLOBAL
A : INT:=1000;
END_VAR
Les valeurs initiales des variables B et C de GVL_2 dépendent de la variable A.
{attribute'global_init_slot' := '350'}
VAR_GLOBAL
B : INT:=A+1;
C : INT:=A-1;
END_VAR
En définissant l'attribut 'global_init_slot' de GVL_1 sur 300, c'est-à-dire l'ordre d'initialisation le plus faible, vous assurez la définition de l'expression A+1 lors de l'initialisation de B.
EIO0000000069 02/2018
593
Déclaration de variables
Attribute hide
Présentation
Le pragma {attribute hide} permet d'exclure les variables, voire des signatures complètes,
de la fonctionnalité d'affichage des composants (voir page 621), de l'Aide à la saisie ou la partie
Déclaration du mode en ligne. Seule la variable située immédiatement après le pragma est
masquée.
Syntaxe
{attribute 'hide'}
Pour masquer toutes les variables locales d'une signature, utilisez le pragma attribute
hide_all_locals (voir page 595).
Exemple
Le bloc fonction myPOU est implémenté avec l'attribut :
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
{attribute 'hide'}
a_invisible: BOOL;
a_visible: BOOL;
END_VAR
VAR_OUTPUT
b:INT;
END_VAR
Deux instances du bloc fonction myPOU sont définies dans le programme principal :
PROGRAM PLC_PRG
VAR
POU1, POU2: myPOU;
END_VAR
Lors de l'attribution d'une valeur d'entrée à POU1, la fonctionnalité d'affichage des composants
(voir page 621) (accessible en saisissant POU1 dans la partie implémentation de PLC_PRG) affiche
les variables d'entrée a et a_visible (ainsi que la variable de sortie b). La variable d'entrée
masquée a_invisible n'est pas affichée.
594
EIO0000000069 02/2018
Déclaration de variables
Attribute hide_all_locals
Présentation
Le pragma {attribute 'hide_all_locals'} permet d'éviter l'affichage de toutes les
variables locales d'une signature dans la fonctionnalité de listage des composants (voir page 621)
ou l'aide à la saisie. Vous obtenez le même résultat qu'en attribuant l'attribut hide (voir page 594)
à chaque variable locale.
Syntaxe
{attribute 'hide_all_locals'}
Exemple
Le bloc fonction myPOU est implémenté avec l'attribut :
{attribute 'hide_all_locals'}
FUNCTION_BLOCK myPOU
VAR_INPUT
a:INT;
END_VAR
VAR_OUTPUT
b:BOOL;
END_VAR
VAR
c,d:INT;
END_VAR
Deux instances du bloc fonction myPOU sont définies dans le programme principal :
PROGRAM PLC_PRG
VAR
POU1, POU2: myPOU;
END_VAR
Lors de l'attribution d'une valeur d'entrée à POU1, la fonctionnalité de listage des composants
(voir page 621) (accessible en saisissant POU1 dans la partie implémentation de PLC_PRG) affiche
les variables a et b. Les variables locales masquées c et d ne s'affichent pas.
EIO0000000069 02/2018
595
Déclaration de variables
Attribute initialize_on_call
Présentation
Le pragma {attribute initialize_on_call} peut être attribué à des variables d'entrée.
Chaque appel d'un bloc fonction déclenche l'initialisation de l'entrée correspondante portant cet
attribut. Lorsqu'une entrée attend un pointeur et que ce dernier a été supprimé suite à un
changement en ligne, l'entrée est définie sur NULL.
Syntaxe
{attribute 'initialize_on_call'}
596
EIO0000000069 02/2018
Déclaration de variables
Attribute init_namespace
Présentation
Une variable de type STRING ou WSTRING, déclarée avec le pragma
{attribute init_namespace} dans une bibliothèque, sera initialisée avec l'espace de noms
de cette dernière. Pour plus d'informations, reportez-vous à la section relative à la gestion des
bibliothèques (voir SoMachine, Fonctions et bibliothèques - Guide de l'utilisateur).
Syntaxe
{attribute 'init_namespace'}
Exemple
Le bloc fonction POU est fourni avec tous les attributs requis :
FUNCTION_BLOCK POU
VAR_OUTPUT
{attribute 'init_namespace'}
myStr: STRING;
END_VAR
Une instance fb du bloc fonction POU est définie dans le programme principal PLC_PRG :
PROGRAM PLC_PRG
VAR
fb:POU;
newString: STRING;
END_VAR
newString:=fb.myStr;
La variable myStr sera initialisée avec l'espace de noms actuel (MyLib.XY, par exemple). Cette
valeur sera attribuée à la variable newString dans le programme principal.
EIO0000000069 02/2018
597
Déclaration de variables
Attribute init_On_Onlchange
Présentation
Le pragma {attribute 'init_on_onlchange'} permet d'initialiser une variable à chaque
changement en ligne.
Syntaxe
{attribute 'init_on_onlchange' }
598
EIO0000000069 02/2018
Déclaration de variables
Attribute instance-path
Présentation
Le pragma {attribute instance-path} peut être attribué à une variable locale de type
chaîne. Celle-ci sera initialisée avec le chemin de l'arborescence Applications du POU auquel elle
appartient. Pour appliquer ce pragma, vous devez obligatoirement attribuer le pragma attribute
reflection (voir page 617) au POU correspondant et le pragma attribute noinit (voir page 610) à la
variable de type chaîne.
Syntaxe
{attribute 'instance-path'}
Exemple
Supposons que le bloc fonction POU suivant inclue l'attribut 'reflection' :
{attribute 'reflection'}
FUNCTION_BLOCK POU
VAR
{attribute 'instance-path'}
{attribute 'noinit'}
str: STRING;
END_VAR
Une instance myPOU du bloc fonction POU est appelée dans le programme principal PLC_PRG :
PROGRAM PLC_PRG
VAR
myPOU:POU;
myString: STRING;
END_VAR
myPOU();
myString:=myPOU.str;
Après initialisation de l'instance myPOU, la variable str de type chaîne se voit attribuer le chemin
de l'instance myPOU (PLCWinNT.Application.PLC_PRG.myPOU, par exemple). Ce chemin
sera attribué à la variable myString dans le programme principal.
NOTE : la longueur des variables de type chaîne n'est pas limitée (et peut même dépasser
255 caractères). Par contre, si elle est attribuée à une variable de longueur inférieure, la chaîne
sera tronquée (en partant de la fin).
EIO0000000069 02/2018
599
Déclaration de variables
Attribute linkalways
Présentation
Le pragma {attribute 'linkalways'} permet de marquer des POU du compilateur, de
sorte qu'ils soient toujours inclus dans les informations de compilation. Les options incluant ce
pragma sont systématiquement compilés et téléchargés dans le contrôleur. Cette option ne
s'applique qu'aux POU et listes de variables globales (GVL) figurant dans une application ou dans
des bibliothèques au sein d'une application. Elle génère le même résultat que l'option de
compilateur Toujours lier.
Syntaxe
{attribute 'linkalways'}
Les variables sélectionnables dans l'éditeur de configuration de symbole dépendent des POU
marqués.
Exemple
La liste de variables globales GVLMoreSymbols est implémentée avec l'attribut 'linkalways' :
{attribute 'linkalways'}
VAR_GLOBAS
g_iVar1: INT;
g_iVar2: INT;
END_VAR
Grâce à ce code, les symboles de GVLMoreSymbols peuvent être sélectionnés dans la
configuration de symbole.
600
EIO0000000069 02/2018
Déclaration de variables
Éditeur de Configuration de symbole
EIO0000000069 02/2018
601
Déclaration de variables
Attribute monitoring
Présentation
Ce pragma d'attribut permet de surveiller les propriétés et résultats d'appel de fonction dans la vue
en ligne de l'éditeur IEC ou dans une liste de surveillance.
Surveillance des propriétés
Ajoutez le pragma sur la ligne précédant la définition de la propriété. Le nom, le type et la valeur
des variables de la propriété s'affichent alors dans la vue en ligne du POU associé à la propriété,
ou dans une liste de surveillance. Il est également possible de forcer les variables de la propriété
au moyen de valeurs prédéfinies.
Exemple de propriété définie pour la surveillance des variables
Exemple de vue surveillance
Surveillance de la valeur actuelle des variables de propriété
Il existe deux manières de surveiller la valeur actuelle des variables de propriété. Prenez soin de
sélectionner l'attribut qui convient pour obtenir la valeur souhaitée. Tout dépend si des opérations
applicables aux variables sont implémentées dans la propriété :
1. Pragma {attribute 'monitoring':=}'variable'
Une variable implicite est créée pour la propriété. Elle prend la valeur actuelle de la propriété à
chaque appel de méthode set ou get par l'application. La dernière valeur enregistrée dans cette
variable implicite est surveillée.
602
EIO0000000069 02/2018
Déclaration de variables
Syntaxe
{attribute 'monitoring':='variable'}
2. Pragma {attribute 'monitoring':='call'}
Cet attribut est réservé aux propriétés renvoyant des pointeurs ou des types de données simples,
et non aux types structurés.
La valeur à surveiller est récupérée via un appel direct de la propriété : le service de surveillance
du système d'exécution appelle la méthode get, déclenchant ainsi l'exécution de la fonction de la
propriété.
NOTE : Si vous optez pour ce type de surveillance au lieu d'utiliser une variable intermédiaire (voir
1. Pragma), tenez compte des conséquences possibles si des opérations applicables à la variable
sont implémentées dans la propriété.
Syntaxe
{attribute 'monitoring':='call'}
Surveillance des résultats d'un appel de fonction
La surveillance des appels de fonction convient pour n'importe quelle valeur constante pouvant
être interprétée en tant que valeur numérique de 4 octets (INT, SHORT et LONG, par exemple).
Pour les autres paramètres d'entrée (BOOL, par exemple), préférez une variable à un paramètre
constant. Ajoutez le pragma {attribute 'monitoring':='call'} sur la ligne précédant la
déclaration de la fonction. Vous pouvez ensuite surveiller la variable renvoyée dans la vue en ligne
du POU dans lequel une variable se voit attribuer le résultat d'un appel de fonction. Dans le même
objectif, la variable peut aussi être ajoutée à une liste de surveillance. Pour que la variable soit
immédiatement disponible dans une vue de surveillance, exécutez la commande Add watchlist.
Exemple 1 : fonctions FUN2 et FUN_BOOL2 avec attribut 'monitoring'
EIO0000000069 02/2018
603
Déclaration de variables
Exemple 2 : appel des fonctions FUN2 et FUN_BOOL2 dans un POU du programme
Exemple 3 : appels de fonction en mode en ligne
604
EIO0000000069 02/2018
Déclaration de variables
Surveillance des variables via l'appel implicite d'une fonction externe
La surveillance des variables via l'appel implicite d'une fonction externe est soumise aux conditions
suivantes :
 La fonction est marquée par {attribute 'monitoring' := 'call'}.
 L'option Toujours lier est activée pour la fonction.
 La variable est marquée par
{attribute 'monitoring_instead' := 'MyExternalFunction(a,b,c)'}.
 Les valeurs a,b,c sont des entiers qui correspondent aux paramètres d'entrée de la fonction
à appeler.
NOTE : Les fonctions ne peuvent être ni écrites, ni forcées. Il est possible d'implémenter un
forçage implicite en ajoutant un paramètre d'entrée supplémentaire à la fonction servant
d'indicateur de forçage interne.
NOTE : La surveillance des fonctions n'est pas prise en charge sur le système d'exécution
compact.
EIO0000000069 02/2018
605
Déclaration de variables
Attribute namespace
Présentation
Combiné au pragma attribute symbol (voir page 618), le pragma {attribute namespace} vous
permet de redéfinir l'espace de noms des variables du projet. Vous pouvez l'appliquer à des POU
complets, comme des GVL ou des programmes, mais pas à des variables individuelles. Les
variables concernées seront exportées avec la nouvelle définition d'espace de noms vers un fichier
de symboles. Une fois celui-ci téléchargé, elles seront disponibles sur le contrôleur.
Cette option vous permet en outre d'accéder à des variables à partir de POU ou de visualisations
qui, à l'origine, étaient associés à un espace de noms différent. Par exemple, vous pouvez
exécuter une visualisation SoMachine précédente dans un environnement SoMachine ultérieur.
Pour plus d'informations, reportez-vous à la description de la configuration de symbole. Un
nouveau fichier de symboles est créé suite au téléchargement du projet ou à un changement en
ligne. Ce fichier est téléchargé sur le contrôleur, avec l'application.
Syntaxe
{attribute 'namespace' := '<espacenoms>'}
Exemple de remplacement d'espace de noms pour les variables d'un programme
{attribute 'namespace':='prog'}
PROGRAM PLC_PRG
VAR
{attribute 'symbol' := 'readwrite'}
iVar:INT;
bVar:BOOL;
END_VAR
Auparavant accessible via App1.PLC_PRG.ivar, la variable iVar est désormais associée à
l'espace de noms prog.ivar.
Autres exemples de remplacement
Espace de noms
d'origine
Variable
Remplacement de l'espace de noms
Accès à la variable au
sein du projet en cours
App1.Lib2.GVL2
Var07
{attribute 'namespace':=''}
.Var07
App1.GVL2
Var02
{attribute 'namespace':='Ext''}
Ext.Var02
App1.GVL2.FB1
Var02
{attribute 'namespace':='App1.GVL2' App1.GVL2.Var02
'}
Les remplacements du tableau ci-dessus génèrent les entrées suivantes dans le fichier de
symboles :
606
EIO0000000069 02/2018
Déclaration de variables
<NodeList>
<Node name="">
<Node name="Var07" type="T_INT" access="ReadWrite">
</Node>
</NodeList>
<NodeList>
<Node name="Ext">
<Node name="Var02 " type="T_INT" access="ReadWrite"></Node>
</Node>
</NodeList>
<NodeList>
<Node name="App1">
<Node name="GVL2">
<Node name="Var02 " type="T_INT" access="ReadWrite"></Node>
</Node>
</Node>
</NodeList>
EIO0000000069 02/2018
607
Déclaration de variables
Attribute no_check
Présentation
Le pragma {attribute no_check} peut être ajouté à un POU pour vérifications implicites afin
d'empêcher qu'il soit appelé. Les fonctions de vérification pouvant avoir un impact sur les
performances, appliquez cet attribut aux POU souvent appelés ou déjà approuvés.
Syntaxe
{attribute 'no_check'}
Attribute no_copy
Présentation
En règle générale, un changement en ligne implique de réattribuer des instances (de POU, par
exemple). La valeur des variables appartenant aux instances est copiée.
En revanche, en cas d'ajout d'un pragma {attribute no_copy} à une variable, cette dernière
n'est pas copiée lors d'un changement en ligne, mais initialisée. Cette solution convient avec une
variable locale de type pointeur, qui indique une variable réellement concernée par le changement
en ligne (et dont l'adresse est modifiée).
Syntaxe
{attribute 'no_copy'}
608
EIO0000000069 02/2018
Déclaration de variables
Attribute no-exit
Présentation
Lorsqu'un bloc fonction contient une méthode exit (voir page 572), le fait d'attribuer le pragma
{attribute no-exit} à cette instance de bloc fonction permet d'éviter qu'elle soit appelée.
Syntaxe
{attribute 'symbol'= 'no-exit'}
Exemple
La méthode exit FB_Exit est ajoutée à un bloc fonction appelé POU :
Deux variables de type POU sont instanciées dans le programme principal PLC_PRG :
PROGRAM PLC_PRG
VAR
POU1 : POU;
{attribute 'symbol' := 'no-exit'}
POU2 : POU;
END_VAR
Lorsque la variable bInCopyCode devient TRUE dans POU1, la méthode de sortie FB_Exit est
appelée, déclenchant alors la sortie d'une instance copiée par la suite (changement en ligne). La
valeur de la variable bInCopyCode est sans incidence sur POU2.
EIO0000000069 02/2018
609
Déclaration de variables
Attribute no_init
Vue d'ensemble
Les variables fournies avec le pragma {attribute no_init} ne sont pas initialisées
implicitement. Le pragma appartient à la variable déclarée après.
Syntaxe
{attribute 'no_init'}
Autre possibilité
{attribute 'no-init'}
{attribute 'noinit'}
Exemple
PROGRAM PLC_PRG
VAR
A : INT;
{attribute 'no_init'}
B : INT;
END_VAR
En cas de réinitialisation de l'application associée, la variable A de type entier est remise
implicitement à 0. La variable B, quant à elle, conserve sa valeur.
610
EIO0000000069 02/2018
Déclaration de variables
Attribute no_virtual_actions
Présentation
Cet attribut convient aux blocs fonction dérivés d'un bloc fonction de base implémenté en langage
SFC et respectant le processus SFC principal de la classe de base. Les actions appelées se
comportent virtuellement comme les méthodes. Cela signifie que les actions de la classe de base
peuvent être remplacées par des implémentations spécifiques associées aux classes dérivées.
Pour éviter que l'action de la classe de base soit remplacée, vous pouvez attribuer le pragma
{attribute 'no_virtual_actions'} à cette classe.
Syntaxe
{attribute 'no_virtual_actions'}
Exemple
Dans l'exemple suivant, le bloc fonction POU_SFC fournit la classe de base à étendre via le bloc
fonction POU_child.
L'ajout du mot clé SUPER permet à la classe dérivée POU_child d'appeler le processus de la
classe de base implémentée en langage SFC.
EIO0000000069 02/2018
611
Déclaration de variables
L'implémentation de processus illustrée ici se limite à l'étape initiale. Elle est suivie par une étape
avec action d'étape associée ActiveAction concernée par l'attribution des variables de sortie :
an_int:=an_int+1;
// counting the action calls
test_act:='father_action'; // writing string variable test_act
METH();
// Calling method METH for writing string var
iable test_meth
Au niveau de la classe dérivée POU_child, l'action d'étape est remplacée par une implémentation
spécifique de ActiveAction. La différence par rapport à l'implémentation d'origine : la chaîne
'child_action' est attribuée à la variable test_act, au lieu de 'father_action'.
De la même manière, la méthode METH (qui attribue la chaîne 'father_method' à la variable
test_meth dans la classe de base) est remplacée de sorte que test_meth se voit désormais
attribuer 'child_method'.
Le programme principal PLC_PRG exécute des appels répétés vers Child (une instance de
POU_child). Comme prévu, la valeur réelle de la chaîne de sortie fait état de l'appel à l'action et
de la méthode de classe dérivée :
612
EIO0000000069 02/2018
Déclaration de variables
Le comportement diffère lorsque la classe de base est précédée de l'attribut
'no_virtual_actions' :
{attribute 'no_virtual_actions'}
FUNCTION_BLOCK POU_SFC...
La méthode METH sera toujours remplacée par son implémentation au sein de la classe dérivée.
Cependant, dorénavant, tout appel de l'action d'étape déclenchera un appel de l'action
ActiveAction de la classe de base. Aussi, test_act est attribué à la chaîne
'father_action'.
EIO0000000069 02/2018
613
Déclaration de variables
Attribute obsolete
Présentation
Vous pouvez ajouter un pragma d'obsolescence (obsolete) à une définition de type de données
afin de déclencher une alerte définie par l'utilisateur lors de la compilation, à condition que le type
de données en question (structure, bloc fonction, etc.) soit utilisé dans le projet. Servez-vous de
cette alerte pour indiquer que le type de données n'est plus utilisé.
Contrairement à un pragma de message (voir page 576) local, cette alerte est spécifiée dans la
définition et s'applique donc globalement à toutes les instances du type de données.
Cette instruction pragma s'applique à la ligne en cours ou à la ligne suivante (si ajoutée sur une
ligne distincte).
Syntaxe
{attribute 'obsolete' := 'texte défini par l'utilisateur'}
Exemple
Le pragma d'obsolescence est ajouté dans la définition du bloc fonction fb1 :
{attribute 'obsolete' := 'datatype fb1 not valid!'}
FUNCTION_BLOCK fb1
VAR_INPUT
i:INT;
END_VAR
...
Le fait d'utiliser fb1 comme type de données dans une déclaration (fbinst: fb1;, par exemple)
déclenche l'alerte suivante au moment de la compilation du projet :
'datatype fb1 not valid'
614
EIO0000000069 02/2018
Déclaration de variables
Attribute pack_mode
Présentation
Le pragma {attribute 'pack_mode'} permet de définir le mode de compactage d'une
structure de données lors de son attribution. Définissez cet attribut avant la structure de données,
de sorte qu'il agisse sur le compactage de la structure toute entière.
Syntaxe
{attribute 'pack_mode' := '<valeur>'}
Remplacez l'espace réservé <valeur> entre apostrophes droites par l'une des valeurs suivantes :
Valeur
Mode de compactage attribué
0
alignement (aucun espace vide dans la mémoire)
1
alignement sur 1 octet (similaire à l'alignement)
2
alignement sur 2 octets (espace vide maximal dans la mémoire : 1 octet)
4
alignement sur 4 octets (espace vide maximal dans la mémoire : 3 octets)
8
alignement sur 8 octets (espace vide maximal dans la mémoire : 7 octets)
Exemple
{attribute 'pack_mode' := '1'}
TYPE myStruct:
STRUCT
Enable: BOOL;
Counter: INT;
MaxSize: BOOL;
MaxSizeReached: BOOL;
END_STRUCT
END_TYPE
Une variable de type myStruct est instanciée en mode alignement.
Si son composant Enable est associé à l'adresse 0x0100, il est suivi de Counter à l'adresse
0x0101, MaxSize à l'adresse 0x0103 et MaxSizeReached à l'adresse 0x0104.
Avec pack_mode=2, Counter se situe à l'adresse 0x0102, MaxSize à l'adresse 0x0104 et
MaxSizeReached à l'adresse 0x0105.
NOTE : L'attribut est aussi applicable aux POU. Dans ce cas, faites attention aux éventuels
pointeurs internes du POU.
EIO0000000069 02/2018
615
Déclaration de variables
Attribute qualified_only
Présentation
Lorsque le pragma {attribute 'qualified_only'} précède une liste de variables globales,
les variables de la liste ne sont accessibles que via le nom de variable globale (par exemple,
gvl.g_var). Ceci est valable même pour les variables de type énumération. Cela peut être utile
pour éviter un conflit de nom avec les variables locales.
Syntaxe
{attribute 'qualified_only'}
Exemple
Supposons que la liste de variables globales suivante (GVL) soit fournie avec l'attribut
'qualified_only' :
{attribute 'qualified_only'}
VAR_GLOBAL
iVar:INT;
END_VAR
Dans le POU PLC_PRG, la variable globale doit être appelée à l'aide du préfixe GVL, comme illustré
ci-après :
GVL.iVar:=5;
L'appel incomplet suivant de la variable renvoie une erreur :
iVar:=5;
616
EIO0000000069 02/2018
Déclaration de variables
Attribute reflection
Présentation
Le pragma {attribute 'reflection'} est associé aux signatures. Pour des performances
optimales, cet attribut doit obligatoirement figurer dans les POU incluant l'attribut instance-path
(instance-path attribute (voir page 599)).
Syntaxe
{attribute 'reflection'}
Exemple
Consultez l'exemple (voir page 599) de pragma attribute instance-path.
Attribute subsequent
Présentation
Le pragma {attribute 'subsequent'} permet de forcer l'attribution consécutive de variables,
à un emplacement spécifique dans la mémoire. En cas de modifications, la liste complète sera
attribuée à un nouvel emplacement. Ce pragma est utilisé dans les programmes et les listes de
variables globales (GVL).
Syntaxe
{attribute 'subsequent'}
NOTE : Lorsque la liste inclut une variable RETAIN, elle est intégralement conservée en mémoire.
NOTE : Une erreur de compilateur est renvoyée en présence d'une variable VAR_TEMP avec
attribut subsequent dans un programme.
EIO0000000069 02/2018
617
Déclaration de variables
Attribute symbol
Présentation
Le pragma {attribute 'symbol'} permet de définir les variables à prendre en charge dans
la configuration de symbole.
Les variables subissent les opérations d'exportation suivantes :
Exportation en tant que symboles dans une liste de symboles
 Exportation vers un fichier XML dans le répertoire de projet
 Exportation vers un fichier invisible et disponible sur le système cible, accessible de l'extérieur
(via un serveur OPC, par exemple)

Les variables fournies avec cet attribut sont téléchargées sur le contrôleur, et ce même si elles
n'ont pas été configurées ou ne s'affichent pas dans l'éditeur de configuration de symbole.
NOTE : La configuration de symbole doit figurer en tant qu'objet sous l'application correspondante
dans l'arborescence Outils.
Syntaxe
{attribute 'symbol' := 'none' | 'read' | 'write' | 'readwrite'}
Seuls les symboles issus de programmes ou de listes de variables globales sont accessibles. Pour
accéder à un symbole, vous devez indiquer son nom complet.
La définition du pragma peut être attribuée à des variables spécifiques ou à l'ensemble des
variables déclarées dans un programme.
 Dans le cas d'une variable spécifique, insérez le pragma sur la ligne précédant la déclaration
de la variable.
 Lorsque toutes les variables de la partie déclaration d'un programme sont concernées, insérez
le pragma sur la première ligne de l'éditeur de déclaration. Dans ce cas, vous avez la possibilité
de modifier les paramètres de certaines variables en ajoutant explicitement un pragma.
Les paramètres de pragma suivants définissent l'accès au symbole :
 'none'
 'read'
 'write'
 'readwrite'
En l'absence de paramètre, le paramètre par défaut 'readwrite' s'applique.
618
EIO0000000069 02/2018
Déclaration de variables
Exemple
Dans la configuration suivante, les variables A et B sont exportées avec un accès en lecture et
écriture. La variable D est exportée avec un accès en lecture.
{attribute 'symbol' := 'readwrite'}
PROGRAM PLC_PRG
VAR
A : INT;
B : INT;
{attribute 'symbol' := 'none'}
C : INT;
{attribute 'symbol' := 'read'}
D : INT;
END_VAR
EIO0000000069 02/2018
619
Déclaration de variables
Attribute warning disable
Présentation
Le pragma warning disable permet de supprimer des alertes. Pour que l'alerte s'affiche,
utilisez le pragma warning restore.
Syntaxe
{warning disable <ID compilateur>}
Chaque alerte et erreur détectée par le compilateur porte un ID unique, indiqué au début de la
description.
Exemples de messages de compilateur
------ Build started: Application: Device.Application -----typify code ...
C0196: Implicit conversion from unsigned Type 'UINT' to signed Type 'IN
T' : possible change of sign
Compile complete -- 0 errors
Exemple
VAR
{warning disable C0195}
test1 : UINT := -1;
{warning restore C0195}
test2 : UINT := -1;
END_VAR
Dans cet exemple, une alerte est détectée pour test2, mais pas pour test1.
620
EIO0000000069 02/2018
Déclaration de variables
Sous-chapitre 27.6
Fonctionnalité Smart Coding
Fonctionnalité Smart Coding
Smart Coding
Présentation
Lorsque des identificateurs (variables ou instances de bloc fonction) peuvent être saisis (dans les
éditeurs de langage IEC 61131-3 ou les fenêtres Surveillance, Suivi, Visualisation), la fonctionnalité smart coding est disponible. Vous pouvez personnaliser (activer/désactiver) cette dernière
dans la section Codage intelligent de la boîte de dialogue Outils → Options.
Prise en charge de l'insertion d'identificateurs
La fonctionnalité smart coding permet d'insérer un identificateur valide :
Si vous insérez, à un emplacement pouvant accueillir un identificateur global, un point (.) au lieu
de l'identificateur, une zone de sélection s'affiche et répertorie les variables globales
actuellement disponibles. Vous pouvez sélectionner un élément et appuyer sur la touche Entrée
pour l'insérer après le point. L'élément est également inséré si vous double-cliquez dessus dans
la liste.
 Si vous saisissez une instance de bloc fonction ou une variable structurée suivie d'un point (.),
une zone de sélection s'affiche et répertorie les variables d'entrée et de sortie des composants
du bloc fonction ou de la structure. Vous pouvez sélectionner l'élément souhaité et appuyer sur
la touche Entrée, ou double-cliquer dessus dans la liste pour l'insérer.
 Dans l'éditeur ST, si vous saisissez une chaîne, puis appuyez sur Ctrl + Espace, une zone de
sélection s'affiche et répertorie les POU et variables globales du projet. Le premier élément de
la liste, commençant par la chaîne indiquée, est sélectionné. Appuyez sur la touche Entrée pour
l'insérer dans le programme.

EIO0000000069 02/2018
621
Déclaration de variables
Exemples
La fonctionnalité smart coding propose des composants de structure :
La fonctionnalité smart coding propose les composants d'un bloc fonction :
622
EIO0000000069 02/2018
SoMachine
Types de données
EIO0000000069 02/2018
Chapitre 28
Types de données
Types de données
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
28.1
Informations générales
624
28.2
Types de données standard
625
28.3
Extensions de la norme IEC
628
28.4
Types de données définis par l'utilisateur
636
EIO0000000069 02/2018
623
Types de données
Sous-chapitre 28.1
Informations générales
Informations générales
Types de données
Présentation
Lors de l'étape de programmation dans SoMachine, vous pouvez utiliser des types de données
standard (voir page 625), des types de données définis par l'utilisateur (voir page 636) ou des
instances de blocs fonction. Chaque identificateur est attribué à un type de données précis, qui
détermine l'espace mémoire réservé et le type de valeurs enregistré.
624
EIO0000000069 02/2018
Types de données
Sous-chapitre 28.2
Types de données standard
Types de données standard
Types de données standard
Présentation
SoMachine prend en charge tous les types de données (voir page 624) conformes à la norme
IEC61131-3.
Ce chapitre décrit les types de données suivants :
BOOL (voir page 625)
 Entier (voir page 625)
 REAL / LREAL (voir page 626)
 STRING (voir page 627)
 Types de données d'horodatage (voir page 627)

Notez également que plusieurs types de données d'extension de la norme (voir page 628) sont
également pris en charge et que vous pouvez ajouter vos propres types de données définis par
l'utilisateur (voir page 636).
BOOL
Les variables de type BOOL prennent la valeur TRUE (1) ou FALSE (0). 8 bits sont réservés dans
la mémoire.
Pour plus d'informations, reportez-vous au chapitre Constantes BOOL (voir page 757).
NOTE : des vérifications implicites permettent de valider la conversion des types de variable
(reportez-vous au chapitre POU pour vérifications implicites (voir page 188)).
Entier
Le tableau répertorie les types de données entier disponibles. Chaque type couvre une plage de
valeurs spécifique soumise aux restrictions suivantes.
Type de données
Limite inférieure
Limite supérieure
Espace mémoire
BYTE
0
255
8 bits
WORD
0
65 535
16 bits
DWORD
0
4 294 967 295
32 bits
LWORD
0
2
64 bits
SINT
–128
127
8 bits
USINT
0
255
8 bits
EIO0000000069 02/2018
64-1
625
Types de données
Type de données
Limite inférieure
Limite supérieure
Espace mémoire
INT
–32 768
32 767
16 bits
UINT
0
65 535
16 bits
DINT
–2 147 483 648
2 147 483 647
32 bits
UDINT
0
4 294 967 295
32 bits
LINT
ULINT
–2
63
2 -1
64 bits
0
264-1
64 bits
63
NOTE : la conversion d'un type de taille élevée vers un type de taille inférieure risque d'entraîner
une perte d'informations.
Pour plus d'informations, reportez-vous à la description des constantes numériques
(voir page 763).
NOTE : des vérifications implicites permettent de valider la conversion des types de variable
(reportez-vous au chapitre POU pour vérifications implicites (voir page 188)).
REAL / LREAL
Les types de données REAL et LREAL sont appelés types à virgule flottante. Ils représentent des
nombres rationnels. 32 bits de mémoire sont réservés pour le type REAL, contre 64 bits pour le
type LREAL.
Plage de valeurs du type REAL :
1,401e-45…3,403e+38
Plage de valeurs du type LREAL :
2,2250738585072014e-308…1,7976931348623158e+308
NOTE : la prise en charge du type de données LREAL dépend de l'équipement cible. Consultez la
documentation correspondante pour savoir si le type 64 bits LREAL est converti en REAL à la
compilation (éventuellement avec perte d'informations) ou persiste.
NOTE : prenons le cas d'une conversion d'une valeur de type REAL ou LREAL en SINT, USINT,
INT, UINT, DINT, UDINT, LINT ou ULINT. Si le nombre réel converti est situé hors de la plage de
valeurs de l'entier, le résultat sera indéfini et dépendra du système cible. Il existe cependant une
exception. Pour éviter que le code dépende de la cible, vous pouvez gérer les valeurs hors plage
via l'application. Si le nombre REAL/LREAL appartient à la plage de valeurs de l'entier, la
conversion fonctionnera à l'identique sur tous les systèmes.
L'attribution de i1 := r1; renvoie une erreur. Par conséquent, la remarque précédente
s'applique avec les opérateurs de conversion (voir page 707), comme dans l'exemple suivant :
i1 := REAL_TO_INT(r1);
Pour plus d'informations, reportez-vous au chapitre Constantes REAL/LREAL (opérandes)
(voir page 764).
626
EIO0000000069 02/2018
Types de données
NOTE : des vérifications implicites permettent de valider la conversion des types de variable
(reportez-vous au chapitre POU pour vérifications implicites (voir page 188)).
STRING
Une variable de type STRING peut contenir n'importe quelle chaîne de caractères. La taille
indiquée dans la déclaration détermine l'espace mémoire à réserver pour la variable et correspond
au nombre de caractères constituant la chaîne. Cette indication figure soit entre parenthèses, soit
entre crochets. En l'absence de cette information, la taille par défaut de 80 caractères est utilisée.
Généralement, la longueur de la chaîne n'est pas limitée. Cependant, les fonctions de chaîne ne
peuvent traiter que les chaînes comprises entre 1 et 255 caractères. Lorsque la chaîne d'initialisation dépasse la taille indiquée pour le type de variable, elle est tronquée (de droite à gauche).
NOTE : une variable de type STRING nécessite un espace mémoire de 1 octet par
caractère + 1 octet supplémentaire. À titre d'exemple, la déclaration "STRING[80]" nécessite
81 octets.
Exemple de déclaration d'une chaîne de 35 caractères :
str:STRING(35):='This is a String';
Pour plus d'informations, reportez-vous aux chapitres WSTRING (voir page 630) et Constantes
STRING (opérandes) (voir page 765).
NOTE : des vérifications implicites permettent de valider la conversion des types de variable
(reportez-vous au chapitre POU pour vérifications implicites (voir page 188)).
Types de données d'horodatage
Les types de données TIME, TIME_OF_DAY (TOD en abrégé), DATE et DATE_AND_TIME (DT
en abrégé) sont traités en interne comme le type DWORD. L'heure est exprimée en millisecondes
avec les types TIME et TOD. Minuit (00:00) est utilisé comme heure de départ pour TOD. Avec les
types DATE et DT, l'heure est exprimée en secondes à compter du 1er janvier 1970 minuit (00:00).
Pour plus d'informations, reportez-vous aux descriptions suivantes :
 Types de données (voir page 624)
 LTIME (voir page 629) : extension de la norme IEC 61131-3, disponible sous forme de type de
données d'heure de 64 bits
 Constantes TIME (voir page 758)
 Constantes DATE (voir page 760)
 Constantes DATE_AND_TIME (voir page 761)
 Constantes TIME_OF_DAY (voir page 762)
NOTE : des vérifications implicites permettent de valider la conversion des types de variable
(reportez-vous au chapitre POU pour vérifications implicites (voir page 188)).
EIO0000000069 02/2018
627
Types de données
Sous-chapitre 28.3
Extensions de la norme IEC
Extensions de la norme IEC
Présentation
Ce chapitre répertorie les types de données pris en charge par SoMachine, en plus des types IEC
61131-3.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
628
Page
UNION
629
LTIME
629
WSTRING
630
BIT
630
Références
631
Pointeurs
633
EIO0000000069 02/2018
Types de données
UNION
Présentation
Vous pouvez déclarer des unions, une extension de la norme IEC 61131-3 , dans des types définis
par l'utilisateur.
Les composants d'une union respectent le même décalage. Ils occupent donc le même
emplacement de stockage. Dans la définition d'union suivante, par exemple, l'attribution de
name.a a également une incidence sur name.b.
Exemple
TYPE name: UNION
a : LREAL;
b : LINT;
END_UNION
END_TYPE
LTIME
Présentation
L'extension de la norme IEC 61131-3 LTIME est prise en charge comme base de temps pour les
temporisateurs haute résolution. Le type de données LTIME (64 bits) affiche une résolution en
nanosecondes.
Syntaxe
LTIME#<déclaration heure>
La déclaration de l'heure peut inclure l'unité (comme pour la constante TIME) :
us : microsecondes
 ns : nanosecondes

Exemple
LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
À comparer avec le type TIME (32 bits) affichant une résolution en millisecondes (voir page 627)
EIO0000000069 02/2018
629
Types de données
WSTRING
Présentation
Ce type de données chaîne correspond à une extension de la norme IEC 61131-3.
Disponible au format Unicode, contrairement au type STRING standard (ASCII), ce type nécessite
2 octets par caractère + 2 octets d'espace mémoire supplémentaires (contre 1 octet à chaque fois
pour le type STRING).
Exemple
wstr:WSTRING:="This is a WString";
Pour plus d'informations, reportez-vous aux descriptions suivantes :
 STRING (voir page 627)
 Constantes STRING (voir page 765) (opérandes)
BIT
Présentation
Le type de données BIT est réservé à certaines variables de structures (voir page 641). La valeur
est soit TRUE (1), soit FALSE (0).
Occupant 1 bit d'espace mémoire, un élément BIT vous permet d'adresser des bits uniques d'une
structure par rapport à un nom (pour en savoir plus, reportez-vous au paragraphe Accès aux bits
de structures (voir page 642)). Les éléments de type bit déclarés de manière consécutive sont
combinés dans des octets. L'espace mémoire occupé peut être optimisé, contrairement aux types
BOOL (voir page 625) nécessitant systématiquement 8 bits. En revanche, l'accès aux bits est bien
moins rapide. Aussi, le type de données BIT convient si vous devez enregistrer plusieurs valeurs
booléennes dans un format compact.
630
EIO0000000069 02/2018
Types de données
Références
Présentation
Ce type de données correspond à une extension de la norme IEC 61131-3.
Une référence est un alias d'objet, qui peut être écrit ou lu via des identificateurs. Contrairement à
un pointeur, la valeur indiquée est attribuée directement, la référence et la valeur définies étant
fixes. Définissez l'adresse de la référence à l'aide d'une opération d'attribution distincte.
L'opérateur __ISVALIDREF permet de vérifier que la référence indique une valeur valide
(différente de 0). Pour plus d'informations, reportez-vous au paragraphe Vérification de la validité
des références plus loin dans ce chapitre.
Syntaxe
<identificateur> : REFERENCE TO <type de données>
Exemple de déclaration
ref_int : REFERENCE TO INT;
a : INT;
b : INT;
ref_int est désormais disponible comme alias pour les variables de type INT.
Exemple d'utilisation
ref_int REF= a;
ref_int := 12;
b := ref_int * 2;
ref_int REF= b;
ref_int := a / 2;
ref_int REF= 0;
(* ref_int now points to a *)
(* a now has value 12 *)
(* b now has value 24 *)
(* ref_int now points to b *)
(* b now has value 6 *)
(* explicit initialization of the reference *)
NOTE : il est impossible de déclarer des références de type REFERENCE TO REFERENCE,
ARRAY OF REFERENCE ou POINTER TO REFERENCE.
Vérification de la validité des références
L'opérateur __ISVALIDREF permet de vérifier que la référence indique une valeur valide
(différente de 0).
Syntaxe
<boolean variable> := __ISVALIDREF(identifier, declared with type <REFE
RENCE TO <datatype>);
<boolean variable> will be TRUE, if the reference points to a valid val
ue, FALSE if not.
Exemple
EIO0000000069 02/2018
631
Types de données
Déclaration
ivar : INT;
ref_int : REFERENCE TO INT;
ref_int0: REFERENCE TO INT;
testref: BOOL := FALSE;
Implémentation
ivar := ivar +1;
ref_int REF= hugo;
ref_int0 REF= 0;
testref := __ISVALIDREF(ref_int);
(* will be TRUE, because ref_int po
ints to ivar, which is unequal 0 *)
testref0 := __ISVALIDREF(ref_int0); (* will be FALSE, because ref_int0
is set to 0 *)
632
EIO0000000069 02/2018
Types de données
Pointeurs
Présentation
Les pointeurs sont disponibles en tant qu'extension de la norme IEC 61131-3.
Les pointeurs permettent d'enregistrer des adresses de variables, programmes, blocs fonction,
méthodes et fonctions tandis qu'un programme d'application est en cours d'exécution. Ils peuvent
indiquer n'importe lequel de ces objets et n'importe quel type de données (voir page 624), même
des types définis par l'utilisateur (voir page 637). Vous avez à disposition une fonction de
vérification implicite des pointeurs, comme expliqué ci-dessous dans le paragraphe Fonction
CheckPointer (voir page 635).
Syntaxe d'une déclaration de pointeur
<identificateur>: POINTER TO <type de données | bloc
fonction | programme | méthode | fonction>;
Le déréférencement d'un pointeur revient à obtenir la valeur actuellement enregistrée à l'adresse
indiquée. Pour ce faire, vous devez ajouter l'opérateur de contenu ^ (caret ASCII ou accent
circonflexe) (voir page 704) après l'identificateur du pointeur (pt^ dans l'exemple ci-dessous).
L'opérateur d'adresse (address operator (voir page 703)) ADR permet d'attribuer l'adresse d'une
variable à un pointeur.
Exemple
VAR
pt:POINTER TO INT; (* of pointer pt *)
var_int1:INT := 5; (* declaration of variables var_int1 and var_int2 *
)
var_int2:INT;
END_VAR
pt := ADR(var_int1); (* address of var_int1 is assigned to pointer pt *
)
var_int2:= pt^;
(* value 5 of var_int1 gets assigned to var_int2 v
ia dereferencing of pointer pt; *)
Fonction Pointeurs
SoMachine prend aussi en charge les pointeurs de fonction. Ces derniers peuvent être transmis à
des bibliothèques externes. En revanche, il est impossible d'appeler un pointeur de fonction dans
une application du système de programmation. Ce pointeur est attendu par la fonction permettant
d'exécuter l'enregistrement des fonctions Callback (fonction de bibliothèque système). Selon le
rappel à enregistrer, la fonction correspondante est appelée implicitement par le système
d'exécution (sur un arrêt, par exemple). Pour activer un tel appel système (système d'exécution),
définissez les propriétés correspondantes (disponibles par défaut sous Afficher → Propriétés… →
Compiler) au niveau de l'objet fonction.
EIO0000000069 02/2018
633
Types de données
L'opérateur (voir page 703) ADR est applicable aux noms de fonctions, de programmes, de blocs
fonction et de méthodes. Dans la mesure où un changement en ligne peut déplacer des fonctions,
le résultat ne correspond non pas à l'adresse de la fonction, mais à celle d'un pointeur indiquant la
fonction. Cette adresse reste valide tant que la fonction existe sur la cible.
L'exécution de la commande Changement en ligne peut modifier le contenu des adresses.
ATTENTION
POINTEUR INCORRECT
Vérifiez la validité des pointeurs lors de leur utilisation sur les adresses et de l'exécution de la
commande Changement en ligne.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
Accès par index aux pointeurs
L'accès par index [] aux variables de type POINTER, STRING (voir page 627) et WSTRING
(voir page 630) est autorisé. Il s'agit d'une extension de la norme IEC 61131-3.




pint[i] renvoie le type de données de base.
L'accès par index aux pointeurs correspond à une opération arithmétique :
Lorsque l'accès par index est appliqué à une variable de type pointeur, le décalage pint[i]
est égal à (pint + i * SIZEOF(base type))^. L'accès par index entraîne également le
déréférencement implicite du pointeur. Le résultat correspond au type de base du pointeur.
pint[7] n'est pas égal à (pint + 7)^ (pint[7] does not equate to (pint + 7)^).
Lorsque l'accès par index est appliqué à une variable de type STRING, le caractère situé au
décalage index-expr est renvoyé. Le résultat est de type BYTE. str[i] renvoie le i-ème
caractère de la chaîne au format SINT (ASCII).
Lorsque l'accès par index est appliqué à une variable de type WSTRING, le caractère situé au
décalage index-expr est renvoyé. Le résultat est de type WORD. wstr[i] renvoie le i-ème
caractère de la chaîne au format INT (Unicode).
NOTE : vous pouvez aussi utiliser des références (voir page 631). Contrairement aux pointeurs,
celles-ci affectent directement une valeur.
634
EIO0000000069 02/2018
Types de données
Fonction CheckPointer
La fonction de vérification implicite CheckPointer permet de vérifier l'accès aux pointeurs en
cours d'exécution. Elle est appelée avant chaque accès à l'adresse d'un pointeur. La procédure
consiste à ajouter l'objet POU pour vérifications implicites à l'application. Pour ce faire, cochez la
case correspondant au type CheckPointer, sélectionnez un langage d'implémentation, puis
confirmez vos paramètres en cliquant sur Ouvrir. La fonction de vérification s'ouvre alors dans
l'éditeur du langage d'implémentation sélectionné. La partie déclaration est prédéfinie, quel que
soit votre choix. Vous ne pouvez pas la modifier, sauf pour ajouter des variables locales
supplémentaires. Par contre, il n'existe aucune implémentation par défaut de CheckPointer,
contrairement aux autres fonctions de vérification.
NOTE : aucun appel implicite de la fonction de vérification n'est disponible pour le pointeur THIS.
Modèle :
Partie déclaration :
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckPointer : POINTER TO BYTE
VAR_INPUT
ptToTest : POINTER TO BYTE;
iSize : DINT;
iGran : DINT;
bWrite: BOOL;
END_VAR
Partie implémentation (incomplète) :
// No standard way of implementation. Fill your own code here
CheckPointer := ptToTest;
Sur appel, les paramètres d'entrée suivants sont transmis à la fonction :
 ptToTest : adresse cible du pointeur
 iSize : taille de la variable référencée. iSize correspond à un type compatible avec les
entiers et doit être suffisamment élevé pour inclure la taille maximale pouvant être enregistrée
à cette adresse de pointeur.
 iGran : granularité de l'accès, soit le type de données non structuré de taille la plus élevée
dans la variable référencée. iGran correspond à un type compatible avec les entiers.
 bWrite : type d'accès (TRUE= accès en écriture, FALSE= accès en lecture). bWrite doit être
de type BOOL.
En cas de résultat positif, la vérification renvoie le pointeur d'entrée non modifié (ptToTest).
EIO0000000069 02/2018
635
Types de données
Sous-chapitre 28.4
Types de données définis par l'utilisateur
Types de données définis par l'utilisateur
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
636
Page
Types de données définis
637
Tableaux
638
Structures
641
Énumérations
643
Types de sous-zone
645
EIO0000000069 02/2018
Types de données
Types de données définis
Présentation
Vous avez la possibilité de définir des types de données spéciaux au sein d'un projet, en plus des
types de données standard.
Pour ce faire, vous devez créer des objets DUT (type de données) dans les arborescences POU
ou Équipements, ou bien dans la partie déclaration d'un POU.
Pour garantir l'unicité des noms d'objets, reportez-vous au chapitre Recommandations relatives à
la dénomination des identificateurs (voir page 544).
Il existe différents types de données définis par l'utilisateur :
 tableaux (voir page 638)
 structures (voir page 641)
 énumérations (voir page 643)
 types de sous-zone (voir page 645)
 références (voir page 631)
 pointeurs (voir page 633)
EIO0000000069 02/2018
637
Types de données
Tableaux
Présentation
Les champs à une, deux et trois dimensions (tableaux) sont pris en charge comme types de
données élémentaires. Les tableaux peuvent être définis dans la partie déclaration d'un POU et
dans les listes de variables globales. Vous pouvez aussi prévoir des vérifications implicites des
limites (voir page 639).
Syntaxe
<Nom_Tableau>:ARRAY [<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF <Type d'élément>
ll1, ll2, ll3 indiquent la limite inférieure de la plage du champ.
ul1, ul2 et ul3 indiquent la limite supérieure de la plage du champ.
La plage est constituée de valeurs de type entier.
Exemple
Card_game: ARRAY [1..13, 1..4] OF INT;
Initialisation de tableaux
Exemple d'initialisation complète d'un tableau
arr1 : ARRAY [1..5] OF INT := [1,2,3,4,5];
arr2 : ARRAY [1..2,3..4] OF INT := [1,3(7)]; (* short for 1,7,7,7 *)
arr3 : ARRAY [1..2,2..3,3..4] OF INT := [2(0),4(4),2,3];
(* short for 0,0,4,4,4,4,2,3 *)
Exemple d'initialisation d'un tableau de structure
Définition de la structure
TYPE STRUCT1
STRUCT
p1:int;
p2:int;
p3:dword;
END_STRUCT
END_TYPE
Initialisation du tableau
ARRAY[1..3] OF STRUCT1:= [(p1:=1,p2:=10,p3:=4723),(p1:=2,p2:=0,p3:=299)
,(p1:=14,p2:=5,p3:=112)];
Exemple d'initialisation partielle d'un tableau
arr1 : ARRAY [1..10] OF INT := [1,2];
638
EIO0000000069 02/2018
Types de données
Les éléments sans valeur pré-attribuée sont initialisés sur la valeur initiale par défaut de type de
base. Dans l'exemple précédent, les éléments arr1[6]...arr1[10] sont donc initialisés sur 0.
Accès aux composants d'un tableau
Pour accéder aux composants d'un tableau à deux dimensions, procédez comme suit :
<Nom_Tableau>[Index1,Index2]
Exemple :
Card_game [9,2]
Fonctions de vérification des limites d'un tableau
Pour pouvoir accéder correctement à un élément de tableau en cours d'exécution, la fonction
CheckBounds doit être disponible dans l'application. Aussi, vous devez ajouter l'objet POU pour
vérifications implicites à l'application via l'option Ajouter un objet → POU pour vérifications
implicites. Cochez la case correspondant au type CheckBounds. Sélectionnez un langage
d'implémentation. Confirmez vos paramètres en cliquant sur Ouvrir. La fonction CheckBound
s'ouvre alors dans l'éditeur du langage d'implémentation sélectionné. La partie déclaration est
prédéfinie, quel que soit votre choix. Vous ne pouvez pas la modifier, sauf pour ajouter des
variables locales supplémentaires. L'éditeur ST suggère une implémentation par défaut de la
fonction, que vous pouvez modifier si besoin.
Pour traiter les dépassements de limites, cette fonction de vérification a besoin d'une méthode
spécifique, comme la définition d'un indicateur d'erreur ou le réglage de l'index, par exemple. La
fonction est appelée implicitement après l'attribution d'une variable de type ARRAY.
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L'ÉQUIPEMENT
Ne modifiez pas la partie déclaration d'une fonction de vérification implicite.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Exemple d'utilisation de la fonction CheckBounds
La fonction de vérification est implémentée par défaut comme suit :
Partie déclaration
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckBounds : DINT
VAR_INPUT
index, lower, upper: DINT;
END_VAR
Partie implémentation
EIO0000000069 02/2018
639
Types de données
// Implicitly generated code : Only an Implementation suggestion
IF index < lower THEN
CheckBounds := lower;
ELSIF index > upper THEN
CheckBounds := upper;
ELSE
CheckBounds := index;
END_IF
Sur appel, la fonction reçoit les paramètres d'entrée suivants :
 index : index d'élément du champ
 lower : limite inférieure de la plage du champ
 upper : limite supérieure de la plage du champ
Tant que l'index se situe dans la plage, il est renvoyé. Dans le cas contraire, c'est la limite
supérieure ou inférieure de la plage du champ qui est renvoyée, selon le dépassement détecté.
Dépassement de la limite supérieure du tableau a
L'exemple suivant illustre un dépassement de la limite supérieure du tableau a :
PROGRAM PLC_PRG
VAR a: ARRAY[0..7] OF BOOL;
b: INT:=10;
END_VAR
a[b]:=TRUE;
Dans ce cas, l'appel implicite de la fonction CheckBounds précédant l'attribution fait passer
l'index 10 à la valeur de limite supérieure 7. La valeur TRUE est alors attribuée à l'élément a[7]
du tableau. La fonction CheckBounds vous permet ainsi de résoudre les tentatives d'accès en
dehors de la plage du champ.
640
EIO0000000069 02/2018
Types de données
Structures
Présentation
La boîte de dialogue Ajouter un objet permet de créer des structures dans un projet sous forme
d'objets DUT (types de données).
Une structure commence par les mots clés TYPE et STRUCT, et se termine par END_STRUCT et
END_TYPE.
Syntaxe
TYPE <structurename>:
STRUCT
<declaration of variables 1>
...
<declaration of variables n>
END_STRUCT
END_TYPE
Reconnu dans tout le projet, le type <structurename> est utilisé comme un type de données
standard.
Les structures imbriquées sont autorisées, à la seule condition que les variables ne soient pas
attribuées à des adresses (déclaration AT interdite).
Exemple
Exemple de définition de structure Polygonline :
TYPE Polygonline:
STRUCT
Start:ARRAY [1..2] OF INT;
Point1:ARRAY [1..2] OF INT;
Point2:ARRAY [1..2] OF INT;
Point3:ARRAY [1..2] OF INT;
Point4:ARRAY [1..2] OF INT;
End:ARRAY [1..2] OF INT;
END_STRUCT
END_TYPE
Initialisation de structures
Exemple :
Poly_1:polygonline := ( Start:=[3,3], Point1:=[5,2], Point2:=[7,3], Poi
nt3:=[8,5], Point4:=[5,7], End:= [3,5]);
Il est impossible d'initialiser des structures avec des variables. Pour consulter un exemple d'initialisation d'un tableau de structure, reportez-vous au chapitre Tableaux (voir page 638).
EIO0000000069 02/2018
641
Types de données
Accès aux composants d'une structure
La syntaxe suivante permet d'accéder aux composants d'une structure :
<nomstructure>.<nomcomposant>
Le composant Start de la structure Polygonline illustrée précédemment est accessible via
Poly_1.Start.
Accès aux bits de structures
BIT (voir page 630) est un type de données spécial réservé aux structures. Occupant 1 bit
d'espace mémoire, il vous permet d'adresser des bits uniques d'une structure par rapport à un
nom.
TYPE <structurename>:
STRUCT
<bitname bit1> : BIT;
<bitname bit2> : BIT;
<bitname bit3> : BIT;
...
<bitname bitn> : BIT;
END_STRUCT
END_TYPE
La syntaxe suivante permet d'accéder aux composants BIT d'une structure :
<nomstructure>.<nombit>
NOTE : Il est impossible d'utiliser des références et des pointeurs de variables BIT. Par ailleurs,
les variables BIT sont interdites dans les tableaux.
642
EIO0000000069 02/2018
Types de données
Énumérations
Présentation
Une énumération est un type défini par l'utilisateur constitué d'un certain nombre de constantes de
type chaîne, appelées valeurs d'énumération.
Les valeurs d'énumération, même celles déclarées dans un POU, sont reconnues globalement
dans tout le projet.
La boîte de dialogue Ajouter un objet permet de créer une énumération dans un projet sous forme
d'objet DUT.
NOTE : La déclaration d'une énumération locale n'est possible que dans TYPE.
Syntaxe
TYPE <identificateur> (<enum_0>,<enum_1>, ...,<enum_n>) |<type données base>;END_TYPE
Une variable de type <identificateur> peut prendre l'une des valeurs d'énumération <enum_..> et
sera initialisée sur la première valeur. Ces valeurs sont compatibles avec les nombres entier, ce
qui signifie que vous pouvez leur appliquer des opérations, comme avec les variables de type
entier. Il est possible d'attribuer un nombre x à la variable. Si aucune valeur d'initialisation n'est
indiquée dans la déclaration, l'énumération commence à partir de 0. Au moment de l'initialisation,
veillez à ce que les valeurs initiales s'incrémentent sur la ligne des composants. La validité du
nombre est vérifiée lors de l'exécution.
Exemple
TYPE TRAFFIC_SIGNAL: (red, yellow, green:=10); (* The initial value fo
r each of the colors is red 0, yellow 1, green 10 *)
END_TYPE
TRAFFIC_SIGNAL1 : TRAFFIC_SIGNAL;
TRAFFIC_SIGNAL1:=0; (* The value of the traffic signal is "red" *)
FOR i:= red TO green DO
i := i + 1;
END_FOR;
Première extension de la norme IEC 61131-3
Pour désambiguïser l'accès à une constante de type énumération, vous pouvez utiliser le nom de
type des énumérations (comme opérateur de domaine de validité (voir page 752)).
La même constante peut donc être reprise dans plusieurs énumérations.
Exemple
Définition de deux énumérations
EIO0000000069 02/2018
643
Types de données
TYPE COLORS_1: (red, blue);
END_TYPE
TYPE COLORS_2: (green, blue, yellow);
END_TYPE
Utilisation de la valeur d'énumération blue dans un POU
Déclaration
colorvar1 : COLORS_1;
colorvar2 : COLORS_2;
Implémentation
(* possible: *)
colorvar1 := colors_1.blue;
colorvar2 := colors_2.blue;
(* not possible: *)
colorvar1 := blue;
colorvar2 := blue;
Seconde extension de la norme IEC 61131-3
Le type de données de base de l'énumération peut être défini explicitement (INT par défaut).
Exemple
Le type de données de base de l'énumération BigEnum doit être DINT:
TYPE BigEnum : (yellow, blue, green:=16#8000) DINT;
END_TYPE
644
EIO0000000069 02/2018
Types de données
Types de sous-zone
Présentation
Un type de sous-zone est un type défini par l'utilisateur (voir page 637) dont la plage de valeurs
correspond à un sous-ensemble du type de données de base. Vous pouvez aussi prévoir des
vérifications implicites des limites de plage (voir page 646).
Vous pouvez soit effectuer la déclaration dans un objet DUT, soit déclarer une variable directement
avec un type de sous-zone.
Syntaxe
Syntaxe de déclaration en tant qu'objet DUT :
TYPE <name>: <Inttype> (<ug>..<og>) END_TYPE;
<name>
identificateur IEC valide
<inttype>
type de données, parmi les suivants : SINT, USINT, INT, UINT, DINT, UDINT, BYTE,
WORD, DWORD (LINT, ULINT, LWORD)
<ug>
constante, compatible avec le type de base, qui définit la limite inférieure des types de
sous-zone
Cette limite inférieure est comprise dans la plage.
<og>
constante, compatible avec le type de base, qui définit la limite supérieure des types de
sous-zone
Cette limite supérieure est comprise dans la plage.
Exemple
TYPE
SubInt : INT (-4095..4095);
END_TYPE
Déclaration directe d'une variable avec un type de sous-zone
VAR
i : INT (-4095..4095);
ui : UINT (0..10000);
END_VAR
Un message s'affiche lorsqu'une valeur attribuée à un type de sous-zone (dans la déclaration ou
l'implémentation) n'appartient pas à cette plage (i:=5000 dans l'exemple de déclaration cidessus, par exemple).
EIO0000000069 02/2018
645
Types de données
Fonctions de vérification des limites de plage
Pour pouvoir vérifier les limites de plage en cours d'exécution, la fonction CheckRangeSigned ou
CheckRangeUnsigned doit être disponible dans l'application. La boîte de dialogue Ajouter un
objet permet d'ajouter l'objet POU pour vérifications implicites à l'application. Cochez la case
correspondant au type CheckRangeSigned ou CheckRangeUnsigned. Sélectionnez un langage
d'implémentation. Confirmez vos paramètres en cliquant sur Ouvrir. La fonction en question
s'ouvre alors dans l'éditeur du langage d'implémentation sélectionné. La partie déclaration est
prédéfinie, quel que soit votre choix. Vous ne pouvez pas la modifier, sauf pour ajouter des
variables locales supplémentaires. L'éditeur ST suggère une implémentation par défaut de la
fonction, que vous pouvez modifier si besoin.
Cette fonction de vérification vise à traiter correctement les dépassements de sous-zone, en
définissant un indicateur d'erreur ou en changeant la valeur, par exemple. La fonction est appelée
implicitement après l'attribution d'une variable de type de sous-zone.
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L'ÉQUIPEMENT
Ne modifiez pas la partie déclaration d'une fonction de vérification implicite.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Exemple
L'attribution d'une variable appartenant à un type de sous-zone signé implique d'appeler
implicitement CheckRangeSigned. Cette fonction qui sert à limiter une valeur à la plage admise
est implémentée par défaut comme suit :
Partie déclaration :
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckRangeSigned : DINT
VAR_INPUT
value, lower, upper: DINT;
END_VAR
Partie implémentation :
// Implicitly generated code : Only an Implementation suggestion
IF (value < lower) THEN
CheckRangeSigned := lower;
ELSIF(value > upper) THEN
CheckRangeSigned := upper;
ELSE
CheckRangeSigned := value;
END_IF
646
EIO0000000069 02/2018
Types de données
Sur appel, la fonction reçoit les paramètres d'entrée suivants :
 value : valeur à attribuer au type de plage
 lower : limite inférieure de la plage
 upper : limite supérieure de la plage
Tant qu'elle appartient à la plage valide, la valeur attribuée est renvoyée par la fonction. Dans le
cas contraire, c'est la limite supérieure ou inférieure de la plage qui est renvoyée, selon le
dépassement détecté.
L'attribution i:=10*y est désormais remplacée implicitement par :
i := CheckRangeSigned(10*y, -4095, 4095);
Admettons que y soit égal à 1000. La variable i ne sera pas attribuée à 10*1 000=10 000 (comme
avec l'implémentation d'origine), mais à la limite supérieure de la plage, soit 4 095.
Il en va de même pour la fonction CheckRangeUnsigned.
NOTE : En l'absence de fonction CheckRangeSigned et CheckRangeUnsigned, les types de
sous-zone ne sont pas vérifiés en cours d'exécution. Dans ce cas, la variable i peut prendre à tout
moment n'importe quelle valeur comprise entre –32 768 et 32 767.
EIO0000000069 02/2018
647
Types de données
648
EIO0000000069 02/2018
SoMachine
Instructions de programmation
EIO0000000069 02/2018
Chapitre 29
Instructions de programmation
Instructions de programmation
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
29.1
Conventions de dénomination
650
29.2
Préfixes
652
EIO0000000069 02/2018
649
Instructions de programmation
Sous-chapitre 29.1
Conventions de dénomination
Conventions de dénomination
Informations générales
Création de noms d'indicateur
Pour chaque indicateur, choisissez une description courte et pertinente (en anglais) qui servira de
nom de base. Le nom de base doit être explicite. Chaque mot constituant le nom de base doit
commencer par une majuscule, les autres lettres étant indiquées en minuscules (exemple :
FileSize). Ce nom de base reçoit des préfixes de domaine de validité et de propriétés.
Dans la mesure du possible, l'indicateur ne doit pas dépasser 20 caractères. Cette valeur est
fournie à titre indicatif. Vous pouvez utiliser plus ou moins de caractères si besoin.
Les noms constitués d'abréviations de termes standard (TP, JK-FlipFlop, etc.) ne doivent pas
contenir plus de trois lettres majuscules consécutives.
Distinction des majuscules et minuscules
Pour une meilleure lisibilité des indicateurs dans le programme IEC, vous pouvez distinguer les
majuscules et minuscules, en particulier pour les préfixes.
NOTE : le compilateur ne distingue pas les majuscules et minuscules.
Caractères valides
Les indicateurs peuvent comporter les lettres, chiffres et caractères spéciaux suivants :
0…9, A…Z, a…z
Un trait de soulignement, faisant office de séparateur, permet de bien distinguer les préfixes.
Reportez-vous à la section du préfixe souhaité pour connaître la syntaxe correspondante.
Les traits de soulignement sont interdits dans le nom de base.
650
EIO0000000069 02/2018
Instructions de programmation
Exemples
Indicateur recommandé
Indicateurs déconseillés
diState
diSTATE
xInit
x_Init
diCycleCounter
diCyclecounter
lrRefVelocity
lrRef_Velocity
c_lrMaxPosition
clrMaxPosition
FC_PidController
FC_PIDController
EIO0000000069 02/2018
651
Instructions de programmation
Sous-chapitre 29.2
Préfixes
Préfixes
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
652
Page
Éléments des préfixes
653
Ordre des préfixes
654
Préfixe de domaine de validité
655
Préfixe de type de données
656
Préfixe de propriété
658
Préfixe de POU
659
Préfixe d'espace de noms
660
EIO0000000069 02/2018
Instructions de programmation
Éléments des préfixes
Présentation
Les préfixes sont utilisés pour affecter des noms par fonction.
Les éléments de préfixe suivants sont disponibles :
Élément de préfixe
Utilisation
Préfixe de portée
Portée des variables et des [portée]_[indicateur]
constantes
G_diFirstUserFault
Préfixe de type de données
Identification du type de
données des variables et
des constantes
xEnable
Préfixe de propriété
Identification des propriétés [propriété]_[indicateur]
des variables et des
constantes
c_iNumberOfAxes
Préfixe de POU
Identification du type de
[POU]_[indicateur]
mise en œuvre du POU : en
tant que fonction, bloc
fonction ou programme
FB_VisuController
Préfixe d'espace de noms
Pour les POU, des types de [espace de
données, les variables et
noms].[identificateur]
les constantes déclarées
dans une bibliothèque
TPL.G_dwErrorCode
(voir page 655)
(voir page 656)
(voir page 658)
(voir page 659)
(voir page 660)
EIO0000000069 02/2018
Syntaxe
[type][indicateur]
Exemple
653
Instructions de programmation
Ordre des préfixes
Présentation
Les indicateurs contiennent le préfixe de domaine de validité et le préfixe de type. Le préfixe de
propriété devra être défini en fonction de la propriété des variables (pour les constantes, par
exemple). Les bibliothèques sont associées à un préfixe d'espace de noms supplémentaire.
Ordre obligatoire
Respectez obligatoirement l'ordre suivant :
[domaine de validité][propriété][_][type][identificateur]
Un trait de soulignement (_) sépare les préfixes de domaine de validité et de propriété des préfixes
de type.
Exemple
Gc_dwErrorCode
diCycleCounter
: DWORD;
: DINT;
Les bibliothèques sont associées à un préfixe d'espace de noms supplémentaire :
[espace de noms].[domaine de validité][propriété][_][type][identificateur]
Exemple
ExampleLibrary.Gc_dwErrorCode
Unités organisationnelles de programme (POU) indépendantes
utilisez un trait de soulignement pour séparer les préfixes d'unité organisationnelle de programme
(fonction, bloc fonction, programme) des identificateurs :
[POU][_][identificateur]
Exemple
FB_MotionCorrection
Utilisez le préfixe d'espace de noms supplémentaire pour les bibliothèques :
[espace de noms].[POU][_][identificateur]
Les préfixes d'espace de noms sont séparés des préfixes de POU par un point (.).
Exemple
ExampleLibrary.FC_SetError()
654
EIO0000000069 02/2018
Instructions de programmation
Unités organisationnelles de programme (POU) dépendantes
Les méthodes, les actions et les propriétés sont considérées comme des POU dépendants. Ces
derniers sont utilisés à un niveau inférieur par rapport aux POU indépendants.
Les méthodes et les actions ne portent aucun préfixe.
Les propriétés reçoivent le préfixe de type de la valeur renvoyée.
Exemple
PROPERTY lrVelocity : LREAL
Préfixe de domaine de validité
Présentation
Ce préfixe indique le domaine de validité des variables et constantes (variable locale ou globale,
ou constante).
Les variables globales sont signalées par la lettre majuscule G_, le préfixe de propriété c étant
ajouté aux constantes globales. Le préfixe est à chaque fois suivi d'un trait de soulignement.
NOTE : En outre, les variables globales et constantes de bibliothèques doivent être identifiées à
l'aide de l'espace de noms de la bibliothèque en question.
Préfixe de domaine de
validité
Type
Utilisation
Exemple
pas de préfixe
VAR
variable locale
xEnable
G_
VAR_GLOBAL
variable globale
G_diFirstUserFault
Gc_
VAR_GLOBAL CONSTANT
constante globale
Gc_dwErrorCode
Exemple
VAR_GLOBAL CONSTANT
Gc_dwExample : DWORD := 16#0000001A;
END_VAR
Accédez à la variable globale d'une bibliothèque associée à l'espace de noms INF :
INF.G_dwExample := 16#0000001A;
EIO0000000069 02/2018
655
Instructions de programmation
Préfixe de type de données
Types de données standard
Le préfixe de type de données identifie le type de données des variables et des constantes.
NOTE : le préfixe de type de données peut aussi être composite, par exemple pour les pointeurs,
les références et les tableaux. Le pointeur ou le tableau est répertorié en premier, suivi du préfixe
du type de pointeur ou du type de tableau.
Les préfixes de type de données standard IEC 61131-3 ainsi que les préfixes d'extension
correspondant à la norme sont répertoriés dans le tableau.
Préfixe de type de données Type
656
x
Utilisation (emplacement mémoire)
Exemple
BOOL
booléen (8 bits)
xName
by
BYTE
séquence de bits (8 bits)
byName
w
WORD
séquence de bits (16 bits)
wName
dw
DWORD
séquence de bits (32 bits)
dwName
lw
LWORD
séquence de bits (64 bits)
lwName
si
SINT
entier court (8 bits)
siName
i
INT
entier (16 bits)
iName
di
DINT
entier double (32 bits)
diName
li
LINT
entier long (64 bits)
liName
uli
ULINT
entier long (64 bits)
uliName
usi
USINT
entier court (8 bits)
usiName
ui
UINT
entier (16 bits)
uiName
udi
UDINT
entier double (32 bits)
udiName
r
REAL
nombre à virgule flottante (32 bits)
rName
lr
LREAL
nombre double à virgule flottante (64 bits)
lrName
dat
DATE
date (32 bits)
datName
t
TOD
heure (32 bits)
tName
dt
DT
date et heure (32 bits)
dtName
tim
TIME
durée (32 bits)
timName
ltim
LTIME
durée (64 bits)
ltimName
s
STRING
chaîne de caractères ASCII
sName
ws
WSTRING
chaîne de caractères unicode
wsName
p
pointeurs
pointeur
pxName
r
référence
référence
rxName
a
tableau
champ
axName
e
énumération
type de liste
eName
EIO0000000069 02/2018
Instructions de programmation
Préfixe de type de données Type
Utilisation (emplacement mémoire)
Exemple
st
struct
structure
stName
if
interface
interface
ifMotion
ut
union
union
uName
fb
bloc fonction
bloc fonction
fbName
Exemples
piCounter: POINTER TO INT;
aiCounters: ARRAY [1..22] OF INT;
paiRefCounter: POINTER TO ARRAY [1..22] OF INT;
apstTest
: ARRAY[1..2] OF POINTER TO ST_MotionStructure;
rdiCounter : REFERENCE TO DINT;
ifMotion
: IF_Motion;
EIO0000000069 02/2018
657
Instructions de programmation
Préfixe de propriété
Présentation
Le préfixe de propriété identifie les propriétés de variables et constantes.
Type de
préfixe
Utilisation
Syntaxe
Exemple
c_
VAR CONSTANT
constante locale
c_xName
r_
VAR RETAIN
variable rémanente de type
conservée
r_xName
p_
VAR PERSISTENT
variable rémanente de type
persistante
p_xName
rp_
VAR PERSISTENT
variable rémanente de type
conservée persistante
rp_xName
i_
VAR_INPUT
paramètre d'entrée d'un POU
i_xName
q_
VAR_OUTPUT
paramètre de sortie d'un POU
q_xName
iq_
VAR_IN_OUT
paramètre d'entrée/sortie d'un
POU
iq_xName
ati_
AT %IX x.y AT %IB z AT %IW k
variable d'entrée devant écrire
dans la zone d'entrée IEC
ati_x0_0MasterEncode
rInitOK
atq_
AT %QX x.y AT %QB z AT %QW k
variable de sortie devant écrire
dans la zone de sortie IEC
atq_w18AxisNotDone
atm_
AT %MX x.y AT %MB z AT %MW k
variable de marqueur devant écrire atm_w19ModuleNotRead
y
dans la zone de marqueur IEC
NOTE :
Les constantes ne doivent pas être déclarées comme RETAIN ou PERSISTENT.
 Ne déclarez aucune variable RETAIN dans les POU. Cela gère la totalité du POU dans la zone
de mémoire conservée.

Exemples de variables avec déclaration d'adresse AT
Le type de la variable cible est également indiqué dans le nom de la variable avec déclaration
d'adresse AT. Il fait office de préfixe de type.
ati_xEncoderInit AT %IX0.0 : BOOL;
atq_wAxisNotDone AT %QW18 : WORD;
atm_wModuleNotReady AT %MW19 : WORD;
NOTE : Vous pouvez également attribuer une variable à une adresse dans la boîte de dialogue de
mappage d'un équipement, au niveau de la configuration du contrôleur (éditeur d'appareil).
Reportez-vous à la documentation de l'équipement pour savoir s'il propose cette boîte de dialogue.
658
EIO0000000069 02/2018
Instructions de programmation
Préfixe de POU
Présentation
Les POU suivants sont définis dans la norme IEC 61131-3 :







fonction
bloc fonction
programme
structure de données
type de liste
union
interface
L'indicateur comporte un préfixe de POU et un nom aussi court que possible (par exemple,
FB_GetResult). Comme pour une variable, la première lettre de chaque mot du nom de base
doit être en majuscule. Écrivez le reste en minuscules. Formez un nom de POU composé
comprenant un verbe et un substantif.
Le préfixe est écrit avec un trait de soulignement avant le nom et identifie le type de POU à partir
du tableau :
Préfixe de
POU
Type
Utilisation
Exemple
SR_
PROGRAM
programme
SR_FlowPackerMachine
FB_
FUNCTION_BLOCK
blocs fonction
FB_VisuController
FC_
FUNCTION
fonctions
FC_SetUserFault
ST_
STRUCT
structure de données
ST_StandardModuleInterface
ET_
Enumeration
type de liste
ST_StandardModuleInterface
UT_
UNION
union
UT_Values
IF_
INTERFACE
interface
IF_CamProfile
EIO0000000069 02/2018
659
Instructions de programmation
Préfixe d'espace de noms
Présentation
L'espace de noms d'une bibliothèque est indiqué dans le gestionnaire de bibliothèques. Il doit
correspondre à un acronyme court (PacDriveLib -> PDL). Ne modifiez pas l'espace de noms par
défaut d'une bibliothèque.
Vous pouvez tout à fait réserver un espace de noms non équivoque pour vos propres
bibliothèques. Pour cela, contactez votre responsable Schneider Electric.
Exemple
Une fonction FC_DoSomething() figure dans les bibliothèques TestlibraryA (espace de noms
TLA) et TestlibraryB (espace de noms TLB). Chaque fonction est accessible via le préfixe d'espace
de noms correspondant.
Dans le cas où les deux bibliothèques appartiennent au même projet, l'appel suivant déclenche
une erreur lors de la compilation :
FC_DoSomething();
Dans ce cas, il convient d'indiquer clairement le POU à appeler.
TLA.FC_DoSomething();
TLB.FC_DoSomething();
660
EIO0000000069 02/2018
SoMachine
Opérateurs
EIO0000000069 02/2018
Chapitre 30
Opérateurs
Opérateurs
Présentation
SoMachine prend en charge tous les opérateurs IEC. Contrairement aux fonctions standard, ces
opérateurs sont reconnus implicitement dans tout le projet.
Les opérateurs suivants sont également acceptés, en plus de ceux définis par la norme IEC :
ANDN
 ORN
 XORN
 SIZEOF (reportez-vous au chapitre Opérateurs arithmétiques (voir page 662))
 ADR
 BITADR
 opérateur de contenu (reportez-vous au chapitre Opérateurs d'adresse (voir page 702))
 opérateurs de domaine de validité (voir page 751) spécifiques

Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
30.1
Opérateurs arithmétiques
662
30.2
Opérateurs sur chaînes de bits
676
30.3
Opérateurs de décalage de bits
681
30.4
Opérateurs de sélection
689
30.5
Opérateurs de comparaison
695
30.6
Opérateurs d'adresse
702
30.7
Opérateur d'appel
706
30.8
Opérateurs de conversion de type
707
Fonctions numériques
726
30.10
30.9
Opérateurs d'extension IEC
739
30.11
Opérateur d'initialisation
753
EIO0000000069 02/2018
661
Opérateurs
Sous-chapitre 30.1
Opérateurs arithmétiques
Opérateurs arithmétiques
Présentation
Les opérateurs suivants sont définis par la norme IEC1131-3 et sont disponibles :
ADD
 MUL
 SUB
 DIV
 MOD
 MOVE

Un opérateur d'extension de la norme existe en sus :
 SIZEOF
Un débordement positif de l'opération arithmétique peut se produire lors la valeur résultante est
située hors de la plage du type de données affecté à la variable de résultat. En conséquence, des
valeurs faibles peuvent être écrites dans la machine au lieu de valeurs élevées, et vice versa.
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L'ÉQUIPEMENT
Pour éviter tout débordement positif de l'opération arithmétique, veillez à vérifier les opérandes
et résultats des opérations mathématiques.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
662
Page
ADD
663
MUL
665
SUB
667
DIV
669
MOD
672
MOVE
674
SIZEOF
675
EIO0000000069 02/2018
Opérateurs
ADD
Vue d'ensemble
Opérateur IEC servant à additionner des variables.
Types autorisés
BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME
 TIME_OF_DAY(TOD)
 DATE
 DATE_AND_TIME(DT)

Les types de données d'horodatage peuvent être combinés comme suit :
TIME+TIME=TIME
 TOD+TIME=TOD
 DT+TIME=DT

Dans l'éditeur FBD/LD, l'opérateur ADD correspond à une zone extensible. Cela signifie que vous
pouvez utiliser une zone pour plusieurs entrées, au lieu d'une série de zones ADD concaténées.
La commande Insérer une entrée de module permet d'ajouter des entrées supplémentaires, sans
limite de nombre.
Exemple en langage IL
LD
7
ADD
2
ADD
4
ADD
7
ST
iVar
Exemple en langage ST
var1 := 7+2+4+7;
EIO0000000069 02/2018
663
Opérateurs
Exemple en langage FBD
1. Série de zones ADD
2. Zone ADD étendue
3. Zone ADD avec paramètres EN/ENO
664
EIO0000000069 02/2018
Opérateurs
MUL
Vue d'ensemble
Opérateur IEC servant à multiplier des variables.
Types autorisés
BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME

Les variables TIME peuvent être multipliées par des variables de type entier.
Dans l'éditeur FBD/LD, l'opérateur MUL correspond à une zone extensible. Cela signifie que vous
pouvez utiliser une zone pour plusieurs entrées, au lieu d'une série de zones MUL concaténées.
La commande Insérer une entrée de module permet d'ajouter des entrées supplémentaires, sans
limite de nombre.
Exemple en langage IL
LD
7
MUL
2
4
7
ST
Var1
,
,
Exemple en langage ST
var1 := 7*2*4*7;
EIO0000000069 02/2018
665
Opérateurs
Exemple en langage FBD
1. Série de zones MUL
2. Zone MUL étendue
3. Zone MUL avec paramètres EN/ENO
666
EIO0000000069 02/2018
Opérateurs
SUB
Vue d'ensemble
Opérateur IEC servant à soustraire une variable d'une autre variable.
Types autorisés
BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME
 TIME_OF_DAY(TOD)
 DATE
 DATE_AND_TIME(DT)

Les types de données d'horodatage peuvent être combinés comme suit :
TIME–TIME=TIME
 DATE–DATE=TIME
 TOD–TIME=TOD
 TOD–TOD=TIME
 DT-TIME=DT
 DT-DT=TIME

Les valeurs TIME négatives ne sont pas définies.
EIO0000000069 02/2018
667
Opérateurs
Exemple en langage IL
LD
7
SUB
2
ST
Var1
Exemple en langage ST
var1 := 7-2;
Exemple en langage FBD
668
EIO0000000069 02/2018
Opérateurs
DIV
Vue d'ensemble
Opérateur IEC servant à diviser une variable par autre variable.
Types autorisés
BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT
 REAL
 LREAL
 TIME

Les variables TIME peuvent être divisées par des variables de type entier.
Exemple en langage IL
Le résultat dans Var1 est 4.
LD
DIV
ST
8
2
Var1
Exemple en langage ST
var1 := 8/2;
EIO0000000069 02/2018
669
Opérateurs
Exemple en langage FBD
1. Série de zones DIV
2. Zone DIV unique
3. Zone DIV avec paramètres EN/ENO
Une division par zéro ne génère pas la même erreur en fonction du système cible. Elle peut
entraîner l'arrêt du contrôleur ou bien ne pas être détectée.
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L'ÉQUIPEMENT
Pour éviter une division par zéro dans le code de programmation, servez-vous des fonctions de
vérification décrites dans ce document ou écrivez vos propres vérifications.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
NOTE : Pour plus d'informations sur les fonctions de vérification implicite, reportez-vous au
chapitre POU pour vérifications implicites (voir page 188).
Fonctions de vérification
Les fonctions de vérification suivantes permettent de vérifier la valeur du diviseur afin d'éviter une
division par 0 et, le cas échéant, de les adapter :
 CheckDivInt
 CheckDivLint
 CheckDivReal
 CheckDivLReal
Pour plus d'informations sur l'insertion de la fonction, consultez la description de la fonction
(voir page 188) POU pour vérifications implicites.
670
EIO0000000069 02/2018
Opérateurs
Les fonctions de vérification sont appelées automatiquement avant chaque division trouvée dans
le code de l'application.
Pour une implémentation de la fonction CheckDivReal, consultez l'exemple ci-dessous.
Implémentation par défaut de la fonction CheckDivReal
Partie déclaration
// Implicitly generated code : DO NOT EDIT
FUNCTION CheckDivReal : REAL
VAR_INPUT
divisor:REAL;
END_VAR
Partie implémentation :
// Implicitly generated code : only an suggestion for implementation
IF divisor = 0 THEN
CheckDivReal:=1;
ELSE
CheckDivReal:=divisor;
END_IF;
L'opérateur DIV utilise la sortie de la fonction CheckDivReal comme diviseur. La division par 0
étant interdite, dans l'exemple suivant, la fonction CheckDivReal remplace la valeur
d'initialisation 0 du diviseur d par 1 avant l'opération de division. Le résultat de la division est donc
égal à 799.
PROGRAM PLC_PRG
VAR
erg:REAL;
v1:REAL:=799;
d:REAL;
END_VAR
erg:= v1 / d;
EIO0000000069 02/2018
671
Opérateurs
MOD
Vue d'ensemble
Opérateur IEC servant à effectuer une division modulo entre deux variables
Types autorisés
BYTE
 WORD
 DWORD
 LWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 LINT
 ULINT

Cette fonction fournit le reste entier de la division.
Une division par zéro ne génère pas la même erreur en fonction du système cible. Elle peut
entraîner l'arrêt du contrôleur ou bien ne pas être détectée.
AVERTISSEMENT
FONCTIONNEMENT INATTENDU DE L'ÉQUIPEMENT
Pour éviter une division par zéro dans le code de programmation, servez-vous des fonctions de
vérification décrites dans ce document ou écrivez vos propres vérifications.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
NOTE : Pour plus d'informations sur les fonctions de vérification implicite, reportez-vous au
chapitre POU pour vérifications implicites (voir page 188).
672
EIO0000000069 02/2018
Opérateurs
Exemple en langage IL
Le résultat dans Var1 est 1.
LD
MOD
ST
9
2
Var1
Exemple en langage ST
var1 := 9 MOD 2;
Exemple en langage FBD
EIO0000000069 02/2018
673
Opérateurs
MOVE
Vue d'ensemble
Opérateur IEC servant à attribuer une variable à une autre variable d'un type de données
approprié.
L'opérateur MOVE convient pour tous les types de données.
Étant donné que l'opérateur MOVE apparaît sous la forme d'une zone dans les éditeurs graphiques
FBD, LD et CFC, la fonctionnalité EN/ENO (déverrouillage) peut également s'appliquer à
l'attribution de variables.
Exemple en langage CFC avec la fonction EN/ENO
var1 n'est affecté à var2 que si en_i est TRUE.
Exemple en langage IL
Résultat : var2 prend la valeur de var1.
LD
MOVE
ST
var1
var2
Le code suivant renvoie le même résultat :
LD
ST
var1
var2
Exemple en langage ST
ivar2 := MOVE(ivar1);
Le code suivant renvoie le même résultat :
ivar2 := ivar1;
674
EIO0000000069 02/2018
Opérateurs
SIZEOF
Vue d'ensemble
Cet opérateur arithmétique n'est pas défini par la norme IEC 61131-3.
Il sert à déterminer le nombre d'octets requis par la variable x donnée.
L'opérateur SIZEOF renvoie une valeur non signée. Le type de valeur renvoyée est adapté à la
taille constatée de la variable x.
Valeur renvoyée par SIZEOF(x)
Type de données de la constante utilisée
implicitement correspondant à la taille
identifiée
0 ≤ taille de x < 256
USINT
256 ≤ taille de x < 65 536
UINT
65 536 ≤ taille de x < 4 294 967 296
UDINT
4 294 967 296 ≤ taille de x
ULINT
Exemple en langage ST
var1 := SIZEOF(arr1);
(* d.h.: var1:=USINT#10; *)
Exemple en langage IL
Le résultat est égal à 10.
arr1:ARRAY[0..4] OF INT;
Var1:INT;
LD
arr1
SIZEOF
ST
Var1
EIO0000000069 02/2018
675
Opérateurs
Sous-chapitre 30.2
Opérateurs sur chaînes de bits
Opérateurs sur chaînes de bits
Présentation
Les opérateurs sur chaînes de bits suivants sont définis par la norme IEC1131-3 et sont
disponibles :
 AND (voir page 677)
 OR (voir page 678)
 XOR (voir page 679)
 NOT (voir page 680)
Les opérateurs suivants ne sont pas définis par la norme et ne sont pas disponibles :
 ANDN
 ORN
 XORN
Les opérateurs sur chaînes de bits servent à comparer les bits de deux opérandes ou plus.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
676
Page
AND
677
OR
678
XOR
679
NOT
680
EIO0000000069 02/2018
Opérateurs
AND
Vue d'ensemble
Opérateur de chaîne de bits IEC servant à réaliser une opération AND bit à bit sur des opérandes
de type bit.
Si chaque bit d'entrée est sur 1, le bit résultant est aussi sur 1. Sinon, il est égal à 0.
Types autorisés
 BOOL
 BYTE
 WORD
 DWORD
 LWORD
Exemple en langage IL
Le résultat dans Var1 est 2#1000_0010.
Var1:BYTE;
LD
AND
ST
2#1001_0011
2#1000_1010
var1
Exemple en langage ST
var1 := 2#1001_0011 AND 2#1000_1010
Exemple en langage FBD
EIO0000000069 02/2018
677
Opérateurs
OR
Vue d'ensemble
Opérateur de chaîne de bits IEC servant à réaliser une opération OR bit à bit sur des opérandes
de type bit.
Si un bit d'entrée au moins est sur 1, le bit résultant est aussi sur 1. Sinon, il est égal à 0.
Types autorisés
BOOL
 BYTE
 WORD
 DWORD
 LWORD

Exemple en langage IL
Le résultat dans var1 est 2#1001_1011.
var1:BYTE;
LD
OR
ST
2#1001_0011
2#1000_1010
Var1
Exemple en langage ST
Var1 := 2#1001_0011 OR 2#1000_1010
Exemple en langage FBD
678
EIO0000000069 02/2018
Opérateurs
XOR
Vue d'ensemble
Opérateur de chaîne de bits IEC servant à réaliser une opération XOR bit à bit sur des opérandes
de type bit.
Si un seul bit d'entrée est sur 1, le bit résultant est aussi sur 1. Il est égal à 0 lorsque les deux bits
d'entrée, ou aucun, sont sur 1.
Types autorisés
BOOL
 BYTE
 WORD
 DWORD
 LWORD

NOTE : L'opérateur XOR permet d'ajouter des entrées supplémentaires. En présence de plus de
deux entrées, l'opération XOR s'applique aux deux premières entrées. Le résultat obtenu est
ensuite combiné à l'entrée 3 via une nouvelle opération XOR, et ainsi de suite. Par conséquent,
avec un nombre impair d'entrées, le bit résultant est égal à 1.
Exemple en langage IL
Le résultat est égal à 2#0001_1001.
Var1:BYTE;
LD
XOR
ST
2#1001_0011
2#1000_1010
var1
Exemple en langage ST
Var1 := 2#1001_0011 XOR 2#1000_1010
Exemple en langage FBD
EIO0000000069 02/2018
679
Opérateurs
NOT
Vue d'ensemble
Opérateur de chaîne de bits IEC servant à réaliser une opération NOT bit à bit sur un opérande de
type bit.
Si le bit d'entrée est sur 0, le bit résultant est sur 1, et inversement.
Types autorisés
BOOL
 BYTE
 WORD
 DWORD
 LWORD

Exemple en langage IL
Le résultat dans Var1 est 2#0110_1100.
Var1:BYTE;
LD
NOT
ST
2#1001_0011
var1
Exemple en langage ST
Var1 := NOT 2#1001_0011
Exemple en langage FBD
680
EIO0000000069 02/2018
Opérateurs
Sous-chapitre 30.3
Opérateurs de décalage de bits
Opérateurs de décalage de bits
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
SHL
682
SHR
684
ROL
685
ROR
687
EIO0000000069 02/2018
681
Opérateurs
SHL
Vue d'ensemble
Opérateur IEC servant à effectuer un décalage bit à bit vers la gauche d'un opérande.
erg:= SHL (in, n)
in : opérande à décaler vers la gauche.
n : nombre de bits de décalage de in vers la gauche.
NOTE : lorsque n dépasse la largeur du type de données, le remplissage des opérandes BYTE,
WORD, DWORD et LWORD dépend du système cible. Certains systèmes ajoutent des zéros (0),
d'autres n MOD <register width>.
NOTE : le type de données de la variable d'entrée détermine le nombre de bits à utiliser pour
l'opération arithmétique. Avec une constante comme variable d'entrée, c'est le type de données
de taille la plus faible qui est considéré. L'opération arithmétique ne dépend en aucune manière
du type de données de la variable de sortie.
Exemples
L'exemple suivant illustre les différents résultats de erg_byte et erg_word en notation
hexadécimale. Le résultat dépend du type de données de la variable d'entrée (BYTE ou WORD),
bien que les variables d'entrée in_byte et in_word aient les mêmes valeurs.
Exemple en langage ST
PROGRAM shl_st
VAR
in_byte : BYTE:=16#45; (* 2#01000101 )
in_word : WORD:=16#0045; (* 2#0000000001000101 )
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=SHL(in_byte,n); (* Result is 16#14, 2#00010100 *)
erg_word:=SHL(in_word,n); (* Result is 16#0114, 2#0000000100010100 *)
682
EIO0000000069 02/2018
Opérateurs
Exemple en langage FBD
Exemple en langage IL
LD
in_byte
SHL
2
ST
erg_byte
EIO0000000069 02/2018
683
Opérateurs
SHR
Vue d'ensemble
Opérateur IEC servant à effectuer un décalage bit à bit vers la droite d'un opérande.
erg:= SHR (in, n)
in : opérande à décaler vers la droite.
n : nombre de bits de décalage de in vers la droite.
NOTE : lorsque n dépasse la largeur du type de données, le remplissage des opérandes BYTE,
WORD, DWORD et LWORD dépend du système cible. Certains systèmes ajoutent des zéros (0),
d'autres n MOD <register width>.
Exemples
L'exemple suivant illustre les différents résultats, en notation hexadécimale, de l'opération
arithmétique en fonction du type de variable d'entrée (BYTE ou WORD).
Exemple en langage ST
PROGRAM shr_st
VAR
in_byte : BYTE:=16#45; (* 2#01000101 )
in_word : WORD:=16#0045; (* 2#0000000001000101 )
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=SHR(in_byte,n); (* Result is 16#11, 2#00010001 *)
erg_word:=SHR(in_word,n); (* Result is 16#0011, 2#0000000000010001 *)
Exemple en langage FBD
Exemple en langage IL
LD
in_byte
SHR
2
ST
erg_byte
684
EIO0000000069 02/2018
Opérateurs
ROL
Vue d'ensemble
Opérateur IEC servant à effectuer une rotation bit à bit d'un opérande vers la gauche.
erg:= ROL (in, n)
Types de données autorisés
 BYTE
 WORD
 DWORD
 LWORD
in est décalé n fois vers la gauche d'une position équivalant à un bit, le bit le plus à gauche étant
réinséré à droite.
NOTE : le type de données de la variable d'entrée détermine le nombre de bits à utiliser pour
l'opération arithmétique. Avec une constante comme variable d'entrée, c'est le type de données
de taille la plus faible qui est considéré. L'opération arithmétique ne dépend en aucune manière
du type de données de la variable de sortie.
Exemples
L'exemple suivant illustre les différents résultats de erg_byte et erg_word en notation
hexadécimale. Le résultat dépend du type de données de la variable d'entrée (BYTE ou WORD),
bien que les variables d'entrée in_byte et in_word aient les mêmes valeurs.
Exemple en langage ST
PROGRAM rol_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45;
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=ROL(in_byte,n); (* Result is 16#15 *)
erg_word:=ROL(in_word,n); (* Result is 16#0114 *)
EIO0000000069 02/2018
685
Opérateurs
Exemple en langage FBD
Exemple en langage IL
LD
in_byte
ROL
n
ST
erg_byte
686
EIO0000000069 02/2018
Opérateurs
ROR
Vue d'ensemble
Opérateur IEC servant à effectuer une rotation bit à bit d'un opérande vers la droite.
erg:= ROR (in, n)
Types de données autorisés
 BYTE
 WORD
 DWORD
 LWORD
in est décalé n fois vers la droite d'une position équivalant à un bit, le bit le plus à gauche étant
réinséré à gauche.
NOTE : le type de données de la variable d'entrée détermine le nombre de bits à utiliser pour
l'opération arithmétique. Avec une constante comme variable d'entrée, c'est le type de données
de taille la plus faible qui est considéré. L'opération arithmétique ne dépend en aucune manière
du type de données de la variable de sortie.
Exemples
L'exemple suivant illustre les différents résultats de erg_byte et erg_word en notation
hexadécimale. Le résultat dépend du type de données de la variable d'entrée (BYTE ou WORD),
bien que les variables d'entrée in_byte et in_word aient les mêmes valeurs.
Exemple en langage ST
PROGRAM ror_st
VAR
in_byte : BYTE:=16#45;
in_word : WORD:=16#45;
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=ROR(in_byte,n); (* Result is 16#51 *)
erg_word:=ROR(in_word,n); (* Result is 16#4011 *)
EIO0000000069 02/2018
687
Opérateurs
Exemple en langage FBD
Exemple en langage IL
LD
in_byte
ROR
n
ST
erg_byte
688
EIO0000000069 02/2018
Opérateurs
Sous-chapitre 30.4
Opérateurs de sélection
Opérateurs de sélection
Présentation
Vous pouvez aussi utiliser des opérateurs de sélection avec les variables.
Pour plus de clarté, les exemples fournis dans ce document se limitent aux opérateurs constante
suivants :
 SEL (voir page 690)
 MAX (voir page 691)
 MIN (voir page 692)
 LIMIT (voir page 693)
 MUX (voir page 694)
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
SEL
690
MAX
691
MIN
692
LIMIT
693
MUX
694
EIO0000000069 02/2018
689
Opérateurs
SEL
Vue d'ensemble
Opérateur de sélection binaire IEC.
G détermine si IN0 ou IN1 est affecté à OUT.
OUT := SEL(G, IN0, IN1) signifie :
OUT := IN0;
OUT := IN1;
si G=FALSE
si G=TRUE
Types de données autorisés :
IN0, IN1, OUT) : tout type de données
G : BOOL
Exemple en langage IL
LD TRUE
SEL 3,4
(* IN0 = 3, IN1 =4 *)
ST Var1 (* result is 4 *)
LD FALSE
SEL 3,4
ST Var1 (* result is 3 *)
Exemple en langage ST
Var1:=SEL(TRUE,3,4); (* result is 4 *)
Exemple en langage FBD
Remarque
NOTE : lorsque IN1 est TRUE, l'expression précédant IN0 n'est pas traitée. lorsque IN2 est
FALSE, l'expression précédant IN0 n'est pas traitée.
690
EIO0000000069 02/2018
Opérateurs
MAX
Vue d'ensemble
Opérateur de sélection IEC servant à exécuter une fonction maximum.
L'opérateur MAX renvoie la plus grande des deux valeurs.
OUT := MAX(IN0, IN1)
Les variables IN0, IN1 et OUT peuvent être de n'importe quel type.
Exemple en langage IL
Le résultat est égal à 90.
LD
MAX
MAX
MAX
ST
90
30
40
77
Var1
Exemple en langage ST
Var1:=MAX(30,40); (* Result is 40 *)
Var1:=MAX(40,MAX(90,30)); (* Result is 90 *)
Exemple en langage FBD
EIO0000000069 02/2018
691
Opérateurs
MIN
Vue d'ensemble
Opérateur de sélection IEC servant à exécuter une fonction minimum
L'opérateur MIN renvoie la plus petite des deux valeurs.
OUT := MIN(IN0, IN1)
Les variables IN0, IN1 et OUT peuvent être de n'importe quel type.
Exemple en langage IL
Le résultat est égal à 30.
LD
MIN
MIN
MIN
ST
90
30
40
77
Var1
Exemple en langage ST
Var1:=MIN(90,30); (* Result is 30 *);
Var1:=MIN(MIN(90,30),40); (* Result is 30 *);
Exemple en langage FBD
692
EIO0000000069 02/2018
Opérateurs
LIMIT
Vue d'ensemble
Opérateur de sélection IEC servant à exécuter une opération de limitation.
OUT := LIMIT(Min, IN, Max) means:
OUT := MIN (MAX (IN, Min), Max)
Le résultat doit être compris entre la limite supérieure Max et la limite inférieure Min. Si IN dépasse
la limite Max, LIMIT renvoie Max. Si IN est inférieur à la limite Min, le résultat est Min.
Les variables IN et OUT peuvent être de n'importe quel type.
Exemple en langage IL
Le résultat est égal à 80.
LD
LIMIT
ST
90
30
80
Var1
,
Exemple en langage ST
Var1:=LIMIT(30,90,80); (* Result is 80 *);
EIO0000000069 02/2018
693
Opérateurs
MUX
Vue d'ensemble
Opérateur de sélection IEC servant à exécuter une opération de multiplexage.
OUT := MUX(K, IN0,...,INn)) signifie :
OUT := INk
Les variables IN0, ...,INn et OUT peuvent être de n'importe quel type.
K doit être de type BYTE, WORD, DWORD, LWORD, SINT, USINT, INT, UINT, DINT, LINT, ULINT
ou UDINT.
MUX sélectionne la Kème valeur parmi un groupe.
Exemple en langage IL
Le résultat est égal à 30.
LD
MUX
ST
0
30
40
50
60
70
80
Var1
,
,
,
,
,
Exemple en langage ST
Var1:=MUX(0,30,40,50,60,70,80); (* Result is 30 *);
NOTE : Pour une exécution plus rapide, l'expression précédant une entrée autre que INk n'est pas
traitée. Ces expressions sont traitées uniquement en mode simulation, avec toutes les autres
expressions.
694
EIO0000000069 02/2018
Opérateurs
Sous-chapitre 30.5
Opérateurs de comparaison
Opérateurs de comparaison
Présentation
Les opérateurs suivants sont définis par la norme IEC1131-3 et sont disponibles :
GT (voir page 696)
 LT (voir page 697)
 LE (voir page 698)
 GE (voir page 699)
 EQ (voir page 700)
 NE (voir page 701)

Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
GT
696
LT
697
LE
698
GE
699
EQ
700
NE
701
EIO0000000069 02/2018
695
Opérateurs
GT
Vue d'ensemble
Opérateur de comparaison servant à réaliser une opération Supérieur à
L'opérateur booléen GT renvoie la valeur TRUE lorsque la valeur du premier opérande est
supérieure à celle du second.
Les opérandes peuvent appartenir à n'importe quel type de données de base.
Exemple en langage IL
Le résultat est FALSE.
LD
GT
ST
20
30
Var1
Exemple en langage ST
VAR1 := 20 > 30;
Exemple en langage FBD
696
EIO0000000069 02/2018
Opérateurs
LT
Vue d'ensemble
Opérateur de comparaison servant à réaliser une opération Inférieur à
L'opérateur booléen LT renvoie la valeur TRUE lorsque la valeur du premier opérande est
inférieure à celle du second.
Les opérandes peuvent appartenir à n'importe quel type de données de base.
Exemple en langage IL
Le résultat est TRUE.
LD
LT
ST
20
30
Var1
Exemple en langage ST
VAR1 := 20 < 30;
Exemple en langage FBD
EIO0000000069 02/2018
697
Opérateurs
LE
Vue d'ensemble
Opérateur de comparaison servant à réaliser une opération Inférieur ou égal à
L'opérateur booléen LE renvoie la valeur TRUE lorsque la valeur du premier opérande est
inférieure ou égale à celle du second.
Les opérandes peuvent appartenir à n'importe quel type de données de base.
Exemple en langage IL
Le résultat est TRUE.
LD
LE
ST
20
30
Var1
Exemple en langage ST
VAR1 := 20 <= 30;
Exemple en langage FBD
698
EIO0000000069 02/2018
Opérateurs
GE
Vue d'ensemble
Opérateur de comparaison servant à réaliser une opération Supérieur ou égal à
L'opérateur booléen GE renvoie la valeur TRUE lorsque la valeur du premier opérande est
supérieure ou égale à celle du second.
Les opérandes peuvent appartenir à n'importe quel type de données de base.
Exemple en langage IL
Le résultat est TRUE.
LD
GE
ST
60
40
Var1
Exemple en langage ST
VAR1 := 60 >= 40;
Exemple en langage FBD
EIO0000000069 02/2018
699
Opérateurs
EQ
Vue d'ensemble
Opérateur de comparaison servant à réaliser une opération Égal à
L'opérateur booléen EQ renvoie la valeur TRUE lorsque les opérandes sont égaux.
Les opérandes peuvent appartenir à n'importe quel type de données de base.
Exemple en langage IL
Le résultat est TRUE.
LD
EQ
ST
40
40
Var1
Exemple en langage ST
VAR1 := 40 = 40;
Exemple en langage FBD
700
EIO0000000069 02/2018
Opérateurs
NE
Vue d'ensemble
Opérateur de comparaison servant à réaliser une opération Différent de
L'opérateur booléen NE renvoie la valeur TRUE lorsque les opérandes sont différents.
Les opérandes peuvent appartenir à n'importe quel type de données de base.
Exemple en langage IL
LD
40
NE
40
ST
Var1
Exemple en langage ST
VAR1 := 40 <> 40;
Exemple en langage FBD
EIO0000000069 02/2018
701
Opérateurs
Sous-chapitre 30.6
Opérateurs d'adresse
Opérateurs d'adresse
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
702
Page
ADR
703
Opérateur de contenu
704
BITADR
705
EIO0000000069 02/2018
Opérateurs
ADR
Vue d'ensemble
Cet opérateur d'adresse n'est pas défini par la norme IEC 61131-3.
ADR renvoie l'adresse (voir page 771) de son argument dans un élément DWORD. Cette adresse
peut être attribuée à un pointeur (voir page 633) au sein du projet.
NOTE : SoMachine vous permet d'appliquer l'opérateur ADR aux noms de fonction, de programme,
de bloc fonction et de méthode.
Sachez qu'il est possible de transmettre des pointeurs de fonction à des bibliothèques externes
(reportez-vous au chapitre Pointeurs (voir page 633)). En revanche, vous ne pouvez pas appeler
un pointeur de fonction dans SoMachine. Pour activer un appel système (système d'exécution),
définissez les propriétés d'objet correspondantes (dans le menu Afficher → Propriétés… →
Compiler) au niveau de l'objet fonction.
Exemple en langage ST
dwVar:=ADR(bVAR);
Exemple en langage IL
LD
bVar
ADR
ST
dwVar
Remarques concernant les changements en ligne
Il arrive que la commande Changement en ligne déplace des variables dans la mémoire. En cas
de changement en ligne, vous êtes averti de la nécessité éventuelle de procéder à une copie.
Une fois décalées, les variables POINTER risquent de pointer vers des emplacements incorrects
dans la mémoire. Par conséquent, vérifiez qu'aucun pointeur n'est conservé d'un cycle à l'autre,
mais réattribué à chaque cycle.
AVERTISSEMENT
COMPORTEMENT INATTENDU DE L'EQUIPEMENT
Attribuez la valeur des variables de type POINTER TO avant sa première utilisation dans un
POU, ainsi qu'à chaque cycle suivant.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
NOTE : les variables POINTER TO de fonctions et de méthodes ne doivent pas être renvoyées à
l'élément appelant la fonction, ni transmises à des variables globales.
EIO0000000069 02/2018
703
Opérateurs
Opérateur de contenu
Vue d'ensemble
Cet opérateur d'adresse n'est pas défini par la norme IEC 61131-3. Vous pouvez déréférencer un
pointeur en ajoutant l'opérateur de contenu ^ (accent circonflexe ASCII) après son identificateur.
Exemple en langage ST
pt:POINTER TO INT;
var_int1:INT;
var_int2:INT;
pt := ADR(var_int1);
var_int2:=pt^;
Remarques concernant les changements en ligne
L'exécution de la commande Changement en ligne peut modifier le contenu des adresses.
ATTENTION
POINTEUR INCORRECT
Vérifiez la validité des pointeurs lors de leur utilisation sur les adresses et de l'exécution de la
commande Changement en ligne.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
704
EIO0000000069 02/2018
Opérateurs
BITADR
Vue d'ensemble
Cet opérateur d'adresse n'est pas défini par la norme IEC 61131-3.
BITADR renvoie le décalage de bits au sein du segment dans un élément DWORD. La valeur de
décalage varie selon que l'option Adressage par octets est activée ou non dans les paramètres du
système cible.
Le demi-octet de poids fort de l'élément DWORD indique la zone mémoire :
Mémoire : 16x40000000
Entrée : 16x80000000
Sortie : 16xC0000000
Exemple en langage ST
VAR
var1 AT %IX2.3:BOOL;
bitoffset: DWORD;
END_VAR
bitoffset:=BITADR(var1); (* Result if byte addressing=TRUE: 16x80000013
, if byte addressing=FALSE: 16x80000023 *)
Exemple en langage IL
LD
Var1
BITADR
ST
bitoffset
Remarques concernant les changements en ligne
L'exécution de la commande Changement en ligne peut modifier le contenu des adresses.
ATTENTION
POINTEUR INCORRECT
Vérifiez la validité des pointeurs lors de leur utilisation sur les adresses et de l'exécution de la
commande Changement en ligne.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
EIO0000000069 02/2018
705
Opérateurs
Sous-chapitre 30.7
Opérateur d'appel
Opérateur d'appel
CAL
Vue d'ensemble
Opérateur IEC servant à appeler un bloc fonction ou un programme.
En langage IL, CAL permet d'appeler une instance de bloc fonction. Les variables faisant office de
variables d'entrée sont à placer entre parenthèses juste après le nom de l'instance de bloc
fonction.
Exemple
L'instance Inst d'un bloc fonction est appelée, avec les variables d'entrée Par1 et Par2 respectivement sur 0 et TRUE.
CAL INST(PAR1 := 0, PAR2 := TRUE)
706
EIO0000000069 02/2018
Opérateurs
Sous-chapitre 30.8
Opérateurs de conversion de type
Opérateurs de conversion de type
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Fonctions de conversion de type
708
Conversions de BOOL_TO
709
Conversions de TO_BOOL
712
Conversion entre des types numériques entiers
714
Conversions REAL_TO / LREAL_TO
715
Conversions TIME_TO / TIME_OF_DAY
717
Conversions DATE_TO / DT_TO
719
Conversions de STRING_TO
721
TRUNC
723
TRUNC_INT
724
Conversions ANY_..._TO
725
EIO0000000069 02/2018
707
Opérateurs
Fonctions de conversion de type
Présentation
Il est interdit de convertir implicitement un type de taille élevée en un type de taille inférieure (INT
en BYTE ou DINT en WORD, par exemple). Pour cela, vous devez effectuer des conversions de
type spécifiques. En fait, vous pouvez convertir n'importe quel type élémentaire en un autre type
élémentaire.
Syntaxe
<type.élém1>_TO_<type.élém2>
NOTE : la chaîne issue d'une conversion ...TO_STRING est justifiée à gauche. Elle est tronquée
par la droite pour peu que sa définition soit trop courte.
Les conversions de type suivantes sont prises en charge :
Conversions BOOL_TO (voir page 709)
 Conversions TO_BOOL (voir page 712)
 Conversions entre types numériques entiers (voir page 714)
 Conversions REAL_TO-/ LREAL_TO (voir page 715)
 Conversions TIME_TO/TIME_OF_DAY (voir page 717)
 Conversions DATE_TO/DT_TO (voir page 719)
 Conversions STRING_TO (voir page 721)
 TRUNC (voir page 723) (conversion en DINT)
 TRUNC_INT (voir page 724)
 ANY_NUM_TO_<type de données numérique>
 Conversions ANY_..._TO (voir page 725)

708
EIO0000000069 02/2018
Opérateurs
Conversions de BOOL_TO
Définition
Opérateur IEC servant à convertir un type BOOL en n'importe quel autre type.
Syntaxe
BOOL_TO_<type de données>
Résultats de la conversion
L'état de l'opérande détermine le résultat de la conversion des types numériques et chaîne.
État de l'opérande
Résultat pour les types
numériques
Résultat pour les types
chaîne
TRUE
1
TRUE
FALSE
0
FALSE
Exemples en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
i:=BOOL_TO_INT(TRUE);
1
str:=BOOL_TO_STRING(TRUE);
TRUE
t:=BOOL_TO_TIME(TRUE);
T#1ms
tof:=BOOL_TO_TOD(TRUE);
TOD#00:00:00.001
dat:=BOOL_TO_DATE(FALSE);
D#1970
dandt:=BOOL_TO_DT(TRUE);
DT#1970-01-01-00:00:01
EIO0000000069 02/2018
709
Opérateurs
Exemples en langage IL
Exemples en langage IL avec résultats de conversion :
Exemple
Résultat
LD
BOOL_TO_INT
ST
TRUE
LD
BOOL_TO_STRI...
ST
TRUE
LD
BOOL_TO_TIME
ST
TRUE
LD
BOOL_TO_TOD
ST
TRUE
LD
BOOL_TO_DATE
ST
FALSE
LD
BOOL_TO_DT
ST
TRUE
1
i
TRUE
str
T#1ms
t
TOD#00:00:00.001
tof
D#1970-01-01
dandt
DT#1970-01-01-00:00:01
dandt
Exemple en langage FBD
Exemples en langage FBD avec résultats de conversion :
Exemple
Résultat
1
TRUE
T#1ms
710
EIO0000000069 02/2018
Opérateurs
Exemple
Résultat
TOD#00:00:00.001
D#1970-01-01
DT#1970-01-01-00:00:01
EIO0000000069 02/2018
711
Opérateurs
Conversions de TO_BOOL
Définition
Opérateur IEC servant à convertir un type de variable autre en type BOOL.
Syntaxe
<data type>_TO_BOOL
Résultats de la conversion
Avec un opérande différent de 0, le résultat est TRUE. Sinon, il est FALSE.
Lorsque l'opérande est TRUE, le résultat est TRUE pour les variables de type STRING. Sinon, il
est FALSE.
Exemples en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
b := BYTE_TO_BOOL(2#11010101);
TRUE
b := INT_TO_BOOL(0);
FALSE
b := TIME_TO_BOOL(T#5ms);
TRUE
b := STRING_TO_BOOL('TRUE');
TRUE
Exemples en langage IL
Exemples en langage IL avec résultats de conversion :
Exemple
712
Résultat
LD
BYTE_TO_BOOL
ST
213
LD
INT_TO_BOOL
ST
0
LD
TIME_TO_BOOL
ST
T#5ms
LD
STRING_TO_BOOL
ST
TRUE
TRUE
b
FALSE
b
TRUE
b
TRUE
b
EIO0000000069 02/2018
Opérateurs
Exemple en langage FBD
Exemples en langage FBD avec résultats de conversion :
Exemple
Résultat
TRUE
FALSE
TRUE
TRUE
EIO0000000069 02/2018
713
Opérateurs
Conversion entre des types numériques entiers
Définition
Conversion d'un type numérique entier en un autre type numérique
Syntaxe
<INT data type>_TO_<INT data type>
Pour plus d'informations sur le type de données entier, reportez-vous au chapitre Types de
données standard (voir page 625).
Résultats de la conversion
Lorsque le nombre à convertir dépasse la limite de plage, ses premiers octets sont ignorés.
Exemple en langage ST
si := INT_TO_SINT(4223); (* Result is 127 *)
Enregistré en tant que variable SINT, l'entier 4223 (16#107f au format hexadécimal) s'affiche sous
la forme 127 (16#7f au format hexadécimal).
Exemple en langage IL
LD
INT_TO_SINT
ST
4223
si
Exemple en langage FBD
714
EIO0000000069 02/2018
Opérateurs
Conversions REAL_TO / LREAL_TO
Définition
Opérateur IEC servant à convertir une variable de type REAL ou LREAL en un autre type.
La valeur est arrondie au nombre entier supérieur ou inférieur le plus proche, et convertie dans le
nouveau type de variable.
Les types de variable suivants font exception à cette règle :
STRING
 BOOL
 REAL
 LREAL

Résultats de la conversion
Prenons le cas de la conversion d'une valeur de type REAL ou LREAL en SINT, USINT, INT, UINT,
DINT, UDINT, LINT ou ULINT. Si le nombre réel converti est en dehors de la plage de valeurs de
cet entier, le résultat est indéfini et peut entraîner une exception au niveau du contrôleur.
NOTE : vérifiez d'éventuels dépassements de plage par l'application et assurez-vous que la valeur
REAL ou LREAL respecte les limites de l'entier cible avant d'effectuer la conversion.
Lors d'une conversion en type STRING, gardez à l'esprit que le nombre total de chiffres ne doit
pas dépasser 16. Si le nombre (L)REAL dépasse cette limite, le 16e chiffre est arrondi. Si la
définition de la valeur STRING est trop courte, le résultat est tronqué à droite.
Exemple en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
i := REAL_TO_INT(1.5);
2
j := REAL_TO_INT(1.4);
1
i := REAL_TO_INT(-1.5);
–2
j := REAL_TO_INT(-1.4);
–1
EIO0000000069 02/2018
715
Opérateurs
Exemple en langage IL
LD
REAL_TO_INT
ST
2.75
i
Exemple en langage FBD
716
EIO0000000069 02/2018
Opérateurs
Conversions TIME_TO / TIME_OF_DAY
Définition
Opérateur IEC servant à convertir une variable de type TIME ou TIME_OF_DAY en un autre type.
Syntaxe
TIME_TO_<type de données>
TOD_TO_<type de données>
Résultats de la conversion
L'heure est d'abord enregistrée dans une valeur interne DWORD exprimée en millisecondes (à
partir de minuit pour la variable TIME_OF_DAY), puis convertie.
Une variable de type STRING renvoie une constante d'heure.
Exemples en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
str := TIME_TO_STRING(T#12ms);
T#12ms
dw := TIME_TO_DWORD(T#5m);
300000
si := TOD_TO_SINT(TOD#00:00:00.012);
12
Exemples en langage IL
Exemples en langage IL avec résultats de conversion :
Exemple
Résultat
LD
TIME_TO_STRI...
ST
T#12ms
LD
TIME_TO_DWORD
ST
T#300000ms
LD
TIME_TO_SINT
ST
TOD#00:00:00.012
EIO0000000069 02/2018
T#12ms
str
300000
dw
12
si
717
Opérateurs
Exemple en langage FBD
718
EIO0000000069 02/2018
Opérateurs
Conversions DATE_TO / DT_TO
Définition
Opérateur IEC servant à convertir une variable de type DATE ou DATE_AND_TIME en un autre
type.
Syntaxe
DATE_TO_<type de données>
DT_TO_<type de données>
Résultats de la conversion
La date est d'abord enregistrée dans une valeur interne DWORD exprimée en secondes (à partir
du 1er janvier1970), puis convertie.
Une variable STRING renvoie une constante de date.
Exemples en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
b := DATE_TO_BOOL(D#1970-01-01);
FALSE
i := DATE_TO_INT(D#1970-01-15);
29952
byt := DT_TO_BYTE(DT#1970-01-15-05:05:05);
129
str := DT_TO_STRING(DT#1998-02-13-14:20);
DT#1998-02-13-14:20
Exemples en langage IL
Exemples en langage IL avec résultats de conversion :
Exemple
Résultat
LD
DATE_TO_BOOL
ST
D#1970-01-01
LD
DATE_TO_INT
ST
D#1970-01-01
LD
DATE_TO_BYTE
ST
D#1970-01-15-05:05:
b
29952
i
129
byt
LD
D#1998-02-13-14:20
DATE_TO_STRI...
ST
str
EIO0000000069 02/2018
FALSE
'DT#1998-02-13-14:20'
719
Opérateurs
Exemple en langage FBD
720
EIO0000000069 02/2018
Opérateurs
Conversions de STRING_TO
Définition
Opérateur IEC servant à convertir un type de variable STRING en un type différent.
Syntaxe
STRING_TO_<type de données>
Spécification des valeurs
Spécifiez l'opérateur de type STRING correspondant à la norme IEC61131-3. La valeur doit
correspondre à une constante (valeur littérale) (voir page 564) valide du type cible. Ceci vaut pour
la spécification de valeurs exponentielles, de valeurs infinies, de préfixes, du trait de soulignement
("_") et de la virgule. Un nombre peut être suivi de caractères supplémentaires, comme dans
l'exemple 23xy. En revanche, aucun caractère n'est autorisé avant un nombre.
L'opérande doit représenter une valeur valide du type de données cible.
NOTE : si le type de données de l'opérande ne correspond pas au type cible ou si la valeur
dépasse la plage du type de données cible, le résultat dépend du type de processeur et n'est pas
défini.
La conversion d'un type plus important en un type plus petit peut entraîner la perte d'informations.
ATTENTION
PERTE DE DONNEES
Lors de la conversion de types de données discordants ou d'une valeur d'un type plus important
que le type cible, faites en sorte que le résultat soit validé dans l'application.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
Exemple en langage IL
Exemple
Résultat de la conversion
LD 'TRUE'
STRING_TO_BOOL
ST b
TRUE
EIO0000000069 02/2018
721
Opérateurs
Exemples en langage ST
Exemple
Résultat de la conversion
b := STRING_TO_BOOL('TRUE');
TRUE
w := STRING_TO_WORD('abc34');
0
w := STRING_TO_WORD('34abc');
34
t := STRING_TO_TIME('T#127ms');
T#127ms
r := STRING_TO_REAL('1.234');
1.234
bv := STRING_TO_BYTE('500');
244
Exemple en langage FBD
Exemple
Résultat de la conversion
TRUE
722
EIO0000000069 02/2018
Opérateurs
TRUNC
Définition
Opérateur IEC servant à convertir une valeur REAL en valeur DINT. La partie entière de la valeur
est utilisée.
Le résultat de ces fonctions n'est pas défini si la valeur d'entrée n'est pas restituable en DINT ou
INT. Le comportement de ces valeurs d'entrée varie selon la plate-forme.
Exemples en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
diVar:=TRUNC(1.9);
1
diVar:=TRUNC(–1.4);
–1
Exemple en langage IL
LD
TRUNC
ST
EIO0000000069 02/2018
1.9
diVar
723
Opérateurs
TRUNC_INT
Définition
Opérateur IEC servant à convertir une valeur REAL en valeur INT. La partie entière de la valeur
est utilisée.
Le résultat de ces fonctions n'est pas défini si la valeur d'entrée n'est pas restituable en DINT ou
INT. Le comportement de ces valeurs d'entrée varie selon la plate-forme.
Exemples en langage ST
Exemples en langage ST avec résultats de conversion :
Exemple
Résultat
iVar:=TRUNC_INT(1.9);
1
iVar:=TRUNC_INT(-1.4);
–1
Exemple en langage IL
LD
TRUNC_INT
ST
724
1.9
iVar
EIO0000000069 02/2018
Opérateurs
Conversions ANY_..._TO
Définition
Conversion d'un type de données quelconque ou, plus précisément d'un type de données
numérique, en un autre type de données. Comme pour tout type de conversion, la taille de
l'opérande est à prendre en compte pour que la conversion aboutisse.
Syntaxe
ANY_NUM_TO_<type de données numérique>
ANY_TO_<type de données quelconque>
Exemple
Conversion d'une variable de type REAL en variable INT :
re : REAL := 1.234;
i : INT := ANY_TO_INT(re)
EIO0000000069 02/2018
725
Opérateurs
Sous-chapitre 30.9
Fonctions numériques
Fonctions numériques
Présentation
Ce chapitre décrit les opérateurs numériques IEC définis par la norme IEC 61131-3.
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
726
Page
ABS
727
SQRT
728
LN
729
LOG
730
EXP
731
SIN
732
COS
733
TAN
734
ASIN
735
ACOS
736
ATAN
737
EXPT
738
EIO0000000069 02/2018
Opérateurs
ABS
Définition
Opérateur numérique IEC servant à renvoyer la valeur absolue d'un nombre.
L'entrée et la sortie appartiennent à n'importe quel type de données numérique de base.
Exemple en langage IL
Le résultat dans i est 2.
LD
ABS
ST
–2
i
Exemple en langage ST
i:=ABS(–2);
Exemple en langage FBD
EIO0000000069 02/2018
727
Opérateurs
SQRT
Définition
Opérateur numérique IEC servant à renvoyer la racine carrée d'un nombre.
La variable d'entrée peut être de n'importe quel type de données numérique de base. La variable
de sortie doit être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 4.
LD
SQRT
ST
16
q
Exemple en langage ST
q:=SQRT(16);
Exemple en langage FBD
728
EIO0000000069 02/2018
Opérateurs
LN
Définition
Opérateur numérique IEC servant à renvoyer le logarithme naturel d'un nombre.
La variable d'entrée peut être de n'importe quel type de données numérique de base. La variable
de sortie doit être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 3,80666.
LD
LN
ST
45
q
Exemple en langage ST
q:=LN(45);
Exemple en langage FBD
EIO0000000069 02/2018
729
Opérateurs
LOG
Définition
Opérateur numérique IEC servant à renvoyer le logarithme d'un nombre en base 10.
La variable d'entrée peut être de n'importe quel type de données numérique de base. La variable
de sortie doit être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 2,49762.
LD
LOG
ST
314.5
q
Exemple en langage ST
q:=LOG(314.5);
Exemple en langage FBD
730
EIO0000000069 02/2018
Opérateurs
EXP
Définition
Opérateur numérique IEC servant à renvoyer la valeur exponentielle.
La variable d'entrée peut être de n'importe quel type de données numérique de base. La variable
de sortie doit être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 7,389056099.
LD
EXP
ST
2
q
Exemple en langage ST
q:=EXP(2);
Exemple en langage FBD
EIO0000000069 02/2018
731
Opérateurs
SIN
Définition
Opérateur numérique IEC servant à renvoyer le sinus d'un angle.
L'entrée définissant l'angle en radians peut être de n'importe quel type de données numérique de
base. La variable de sortie doit être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 0,479426.
LD
SIN
ST
0.5
q
Exemple en langage ST
q:=SIN(0.5);
Exemple en langage FBD
732
EIO0000000069 02/2018
Opérateurs
COS
Définition
Opérateur numérique IEC servant à renvoyer le cosinus d'un angle.
L'entrée définissant l'angle en minutes d'arc peut être de n'importe quel type de données
numérique de base. La variable de sortie doit être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 0,877583.
LD
COS
ST
0.5
q
Exemple en langage ST
q:=COS(0.5);
Exemple en langage FBD
EIO0000000069 02/2018
733
Opérateurs
TAN
Définition
Opérateur numérique IEC servant à renvoyer la tangente d'un nombre. La valeur est calculée en
minutes d'arc.
L'entrée peut être de n'importe quel type de données numérique de base. La variable de sortie doit
être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 0,546302.
LD
TAN
ST
0.5
q
Exemple en langage ST
q:=TAN(0.5);
Exemple en langage FBD
734
EIO0000000069 02/2018
Opérateurs
ASIN
Définition
Opérateur numérique IEC servant à renvoyer l'arc sinus (inverse de la fonction sinus) d'un nombre.
La valeur est calculée en minutes d'arc.
L'entrée peut être de n'importe quel type de données numérique de base. La variable de sortie doit
être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 0,523599.
LD
ASIN
ST
0.5
q
Exemple en langage ST
q:=ASIN(0.5);
Exemple en langage FBD
EIO0000000069 02/2018
735
Opérateurs
ACOS
Définition
Opérateur numérique IEC servant à renvoyer l'arc cosinus (inverse de la fonction cosinus) d'un
nombre. La valeur est calculée en minutes d'arc.
L'entrée peut être de n'importe quel type de données numérique de base. La variable de sortie doit
être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 1,0472.
LD
ACOS
ST
0.5
q
Exemple en langage ST
q:=ACOS(0.5);
Exemple en langage FBD
736
EIO0000000069 02/2018
Opérateurs
ATAN
Définition
Opérateur numérique IEC servant à renvoyer l'arc tangente (inverse de la fonction tangente) d'un
nombre. La valeur est calculée en minutes d'arc.
L'entrée peut être de n'importe quel type de données numérique de base. La variable de sortie doit
être de type REAL ou LREAL.
Exemple en langage IL
Le résultat dans q est 0,463648.
LD
ATAN
ST
0.5
q
Exemple en langage ST
q:=ATAN(0.5);
Exemple en langage FBD
EIO0000000069 02/2018
737
Opérateurs
EXPT
Définition
Opérateur numérique IEC servant à élever une variable à une puissance correspondant à une
autre variable.
OUT = IN1 élevé à IN2
L'entrée peut être de n'importe quel type de données numérique de base. La variable de sortie doit
être de type REAL ou LREAL.
Le résultat de cette fonction n'est pas défini si les conditions suivantes sont remplies :
 La base est négative.
 La base est zéro et l'exposant est ≤ 0.
Le comportement de ces valeurs d'entrée varie selon la plate-forme.
Exemple en langage IL
Le résultat est égal à 49.
LD
EXPT
ST
7
2
Var1
Exemple en langage ST
var1:=EXPT(7,2);
Exemple en langage FBD
738
EIO0000000069 02/2018
Opérateurs
Sous-chapitre 30.10
Opérateurs d'extension IEC
Opérateurs d'extension IEC
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Opérateurs d'extension IEC
740
__DELETE
741
__ISVALIDREF
743
__NEW
744
__QUERYINTERFACE
747
__QUERYPOINTER
749
Opérateurs de domaine de validité
751
EIO0000000069 02/2018
739
Opérateurs
Opérateurs d'extension IEC
Présentation
SoMachine prend en charge les opérateurs d'extension IEC suivants, en plus des opérateurs IEC :
ADR (voir page 703)
 BITADR (voir page 705)
 SIZEOF (voir page 675)
 __DELETE (voir page 741)
 __ISVALIDREF (voir page 743)
 __NEW (voir page 744)
 __QUERYINTERFACE (voir page 747)
 __QUERYPOINTER (voir page 749)
 opérateurs de domaine de validité (voir page 751)

740
EIO0000000069 02/2018
Opérateurs
__DELETE
Définition
Cet opérateur n'est pas défini par la norme IEC 61131-3.
NOTE : Pour des raisons de compatibilité, la version du compilateur SoMachine doit être
supérieure ou égale à 3.1.10.1.
Pour plus d'informations, consultez le tableau de correspondance des versions de compilateur
SoMachine/CoDeSys, dans le document Compatibilité et migration - Guide de l'utilisateur
(voir SoMachine - Compatibilité et migration, Guide utilisateur).
L'opérateur __DELETE libère la mémoire attribuée précédemment aux objets, à l'aide de opérateur
(voir page 744) __NEW.
L'opérateur __DELETE ne renvoie aucune valeur et son opérande reste à 0 après l'opération.
Activez l'option Utiliser l'allocation dynamique de mémoire dans la vue Options de création
d'application (Afficher → Propriétés… → Options de création d'application).
Syntaxe
__DELETE (<pointeur>)
Si le pointeur désigne un bloc fonction, la méthode FB_Exit dédiée est appelée avant que le
pointeur ne soit défini à NULL.
NOTE : utilisez le type de données du bloc fonction dérivé, et non celui du bloc fonction de base.
N'utilisez pas une variable de type POINTER TO BaseFB. En effet, si le bloc fonction de base
n'implémente aucune fonction FB_Exit, aucun bloc FB_Exit n'est appelé lors d'une prochaine
utilisation de __DELETE(pBaseFB).
EIO0000000069 02/2018
741
Opérateurs
Exemple
Dans l'exemple suivant, le bloc fonction FBDynamic est attribué dynamiquement via _NEW à partir
du POU PLC_PRG. Ce qui appelle la méthode FB_Init, dans laquelle un type DUT est attribué.
Lorsque __DELETE est appelée, le pointeur PLC_PRG du bloc fonction FB_Exit est appelé, ce
qui libère le type interne attribué.
FUNCTION_BLOCK FBDynamic
VAR_INPUT
in1, in2 : INT;
END_VAR
VAR_OUTPUT
out : INT;
END_VAR
VAR
test1 : INT := 1234;
_inc : INT := 0;
_dut : POINTER TO DUT;
END_VAR
out := in1 + in2;
METHOD FB_Exit : BOOL
VAR_INPUT
bInCopyCode : BOOL;
END_VAR
__Delete(_dut);
METHOD FB_Init : BOOL
VAR_INPUT
bInitRetains : BOOL;
bInCopyCode : BOOL;
END_VAR
_dut := __NEW(DUT);
METHOD INC : INT
VAR_INPUT
END_VAR
_inc := _inc + 1;
INC := _inc;
742
EIO0000000069 02/2018
Opérateurs
PLC_PRG(PRG)
VAR
pFB : POINTER TO FBDynamic;
bInit: BOOL := TRUE;
bDelete: BOOL;
loc : INT;
END_VAR
IF (bInit) THEN
pFB := __NEW(FBDynamic);
bInit := FALSE;
END_IF
IF (pFB <> 0) THEN
pFB^(in1 := 1, in2 := loc, out => loc);
pFB^.INC();
END_IF
IF (bDelete) THEN
__DELETE(pFB);
END_IF
__ISVALIDREF
Définition
Cet opérateur n'est pas défini par la norme IEC 61131-3.
Il permet de vérifier si une référence indique une valeur valide.
Pour savoir comment l'utiliser et pour consulter un exemple, reportez-vous à la description du type
de données Références (voir page 631).
EIO0000000069 02/2018
743
Opérateurs
__NEW
Définition
Cet opérateur n'est pas défini par la norme IEC 61131-3.
NOTE : Pour des raisons de compatibilité, la version du compilateur SoMachine doit être
supérieure ou égale à 3.1.10.1.
Pour plus d'informations, consultez le tableau de correspondance des versions de compilateur
SoMachine/CoDeSys, dans le document Compatibilité et migration - Guide de l'utilisateur
(voir SoMachine - Compatibilité et migration, Guide utilisateur).
L'opérateur __NEW attribue de la mémoire aux instances de bloc fonction ou aux tableaux ayant
des types de données standard. Il renvoie un pointeur de type approprié indiquant l'objet. Un
message s'affiche lorsque l'opérateur ne figure pas dans une attribution.
Activez l'option Utiliser l'allocation dynamique de mémoire dans la vue Options de création
d'application (Afficher → Propriétés… → Options de création d'application) pour utiliser l'opérateur
__NEW.
Si aucune mémoire n'a pu être attribuée, __NEW renvoie 0.
Pour annuler l'attribution, utilisez __DELETE.
Syntaxe
__NEW (<type>, [<taille>]
L'opérateur crée un objet de type <type> et renvoie un pointeur vers ce <type>. L'initialisation
de l'objet est appelée après sa création. Une valeur 0 signifie que l'opération a échoué.
NOTE : utilisez le type de données du bloc fonction dérivé, et non celui du bloc fonction de base.
N'utilisez pas une variable de type POINTER TO BaseFB. En effet, si le bloc fonction de base
n'implémente aucune fonction FB_Exit, aucun bloc FB_Exit n'est appelé lors d'une prochaine
utilisation de __DELETE(pBaseFB).
Lorsque <type> est scalaire, l'opérande facultatif <length> doit être défini en sus. L'opérateur
crée alors un tableau des types scalaires de la taille indiquée.
Exemple
pScalarType := __New(ScalarType, length);
NOTE : en mode changement en ligne, il est impossible d'utiliser un code de copie pour des objets
créés dynamiquement.
Par conséquent, l'opérateur enable_dynamic_creation ne prend en charge que les blocs
fonction issus de bibliothèques (non modifiables) et des blocs fonction contenant l'attribut __NEW.
Un message s'affiche si un bloc fonction portant cet indicateur vient à changer, obligeant ainsi de
recourir à un code de copie.
NOTE : Le code d'attribution de la mémoire doit être non réentrant.
744
EIO0000000069 02/2018
Opérateurs
Un sémaphore (SysSemEnter) empêche l'attribution de mémoire par deux tâches simultanées.
Par conséquent, un usage intensif de __New risque d'augmenter la gigue.
Exemple avec un type scalaire :
TYPE DUT :
STRUCT
a,b,c,d,e,f : INT;
END_STRUCT
END_TYPE
PROGRAM PLC_PRG
VAR
pDut : POINTER TO DUT;
bInit: BOOL := TRUE;
bDelete: BOOL;
END_VAR
IF (bInit) THEN
pDut := __NEW(DUT);
bInit := FALSE;
END_IF
IF (bDelete) THEN
__DELETE(pDut);
END_IF
Exemple avec un bloc fonction :
{attribute 'enable_dynamic_creation'}
FUNCTION_BLOCK FBDynamic
VAR_INPUT
in1, in2 : INT;
END_VAR
VAR_OUTPUT
out : INT;
END_VAR
VAR
test1 : INT := 1234;
_inc : INT := 0;
_dut : POINTER TO DUT;
END_VAR
out := in1 + in2;
PROGRAM_PLC_PRG
VAR
pFB : POINTER TO FBDynamic;
loc : INT;
bInit: BOOL := TRUE;
bDelete: BOOL;
END_VAR
EIO0000000069 02/2018
745
Opérateurs
IF (bInit) THEN
pFB := __NEW(FBDynamic);
bInit := FALSE;
END_IF
IF (pFB <> 0) THEN
pFB^(in1 := 1, in2 := loc, out => loc);
pFB^.INC();
END_IF
IF (bDelete) THEN
__DELETE(pFB);
END_IF
Exemple avec un tableau :
PLC_PRG(PRG)
VAR
bInit: BOOL := TRUE;
bDelete: BOOL;
pArrayBytes : POINTER TO BYTE;
test: INT;
parr : POINTER TO BYTE;
END_VAR
IF (bInit) THEN
pArrayBytes := __NEW(BYTE, 25);
bInit := FALSE;
END_IF
IF (pArrayBytes <> 0) THEN
pArrayBytes[24] := 125;
test := pArrayBytes[24];
END_IF
IF (bDelete) THEN
__DELETE(pArrayBytes);
END_IF
746
EIO0000000069 02/2018
Opérateurs
__QUERYINTERFACE
Définition
Cet opérateur n'est pas défini par la norme IEC 61131-3.
Pendant l'exécution, __QUERYINTERFACE convertit une référence d'interface d'un type en un
autre type. L'opérateur renvoie un résultat de type BOOL. La valeur TRUE indique que la
conversion a abouti.
NOTE : pour des raisons de compatibilité, la définition de la référence à convertir doit être une
extension de l'interface de base __SYSTEM.IQueryInterface et vous devez utiliser le
compilateur 3.3.0.20 ou une version ultérieure.
Pour plus d'informations, reportez-vous à la table de mappage des versions de compilateur
SoMachine/CoDeSys, dans le document Compatibilité et migration - Guide de l'utilisateur
(voir SoMachine - Compatibilité et migration, Guide utilisateur).
Syntaxe
__QUERYINTERFACE(<ITF_Source>, < ITF_Dest>
Le premier opérande de l'opérateur doit être une référence d'interface ou une instance de bloc
fonction du type souhaité, et le second opérande, une référence d'interface. Après l'exécution de
__QUERYINTERFACE, le paramètre ITF_Dest contient une référence à l'interface voulue, si
l'objet référencé à partir de la source ITF implémente l'interface. Dans ce cas, la conversion
aboutit et l'opérateur renvoie TRUE. Sinon, il renvoie FALSE
Pour effectuer une conversion explicite, il faut que le paramètre ITF_Source et ITF Dest soient
une extension de l'interface __System.IQueryInterface. Cette interface est fournie
implicitement, sans bibliothèque.
Exemple
Exemple en langage ST :
INTERFACE ItfBase EXTENDS __System.IQueryInterface
METHOD mbase : BOOL
END_METHOD
INTERFACE ItfDerived1 EXTENDS ItfBase
METHOD mderived1 : BOOL
END_METHOD
INTERFACE ItfDerived2 EXTENDS ItfBase
METHOD mderived2 : BOOL
END_METHOD
FUNCTION_BLOCK FB1 IMPLEMENTS ItfDerived1
METHOD mbase : BOOL
mbase := TRUE;
END_METHOD
EIO0000000069 02/2018
747
Opérateurs
METHOD mderived1 : BOOL
mderived1 := TRUE;
END_METHOD
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB2 IMPLEMENTS ItfDerived2
METHOD mbase : BOOL
mbase := FALSE;
END_METHOD
METHOD mderived2 : BOOL
mderived2 := TRUE;
END_METHOD
END_FUNCTION_BLOCK
PROGRAMM POU
VAR
inst1 : FB1;
inst2 : FB2;
itfbase1 : ItfBase := inst1;
itfbase2 : ItfBase := inst2;
itfderived1 : ItfDerived1 := 0;
itfderived2 : ItfDerived2 := 0;
bTest1, bTest2, xResult1, xResult2: BOOL;
END_VAR
xResult1 := __QUERYINTERFACE(itfbase1, itfderived1); //
itfderived1 <> 0
// references the
xResult2 := __QUERYINTERFACE(itfbase1, itfderived2); //
, itfderived2 = 0
xResult3 := __QUERYINTERFACE(itfbase2, itfderived1); //
, itfderived1 = 0
xResult4 := __QUERYINTERFACE(itfbase2, itfderived2); //
, itfderived2 <> 0
// references the
748
xResult = TRUE,
instance inst1
xResult = FALSE
xResult = FALSE
xResult = FALSE
instance inst2
EIO0000000069 02/2018
Opérateurs
__QUERYPOINTER
Définition
Cet opérateur n'est pas défini par la norme IEC 61131-3.
Pendant l'exécution, __QUERYPOINTER attribue une référence d'interface à un pointeur non typé.
L'opérateur renvoie un résultat de type BOOL. La valeur TRUE indique que la conversion a abouti.
NOTE : pour des raisons de compatibilité, la définition de la référence d'interface doit être une
extension de l'interface de base __SYSTEM.IQueryInterface, et vous devez utiliser le
compilateur 3.3.0.20 ou version ultérieure.
Pour plus d'informations, reportez-vous à la table de mappage des versions de compilateur
SoMachine/CoDeSys, dans le document Compatibilité et migration - Guide de l'utilisateur
(voir SoMachine - Compatibilité et migration, Guide utilisateur).
Syntaxe
__QUERYPOINTER (<ITF_Source>, < Pointer_Dest>
Le premier opérande de l'opérateur doit être une référence d'interface ou une instance de bloc
fonction du type souhaité. Le second opérande doit être un pointeur non typé. Après exécution de
__QUERYPOINTER, le paramètre Pointer_Dest reçoit l'adresse de la référence d'interface
voulue. Dans ce cas, la conversion aboutit et l'opérateur renvoie TRUE. Sinon, il renvoie FALSE
Pointer_Dest n'est pas typé et peut être associé à n'importe quel type. Le choix du type revient
au programmeur. Par exemple, l'interface pourrait fournir une méthode renvoyant un code de type.
Pour effectuer une conversion explicite, ITF_Source doit être une extension de l'interface
__System.IQueryInterface. Cette interface est fournie implicitement, sans bibliothèque.
Exemple
TYPE KindOfFB
(FB1 := 1, FB2 := 2, UNKOWN := -1);
END_TYPE
INTERFACE Itf EXTENDS __System.IQueryInterface
METHOD KindOf : KindOfFB
END_METHOD
FUNCTION_BLOCK F_BLOCK_1 IMPLEMENTS ITF
METHOD KindOf : KindOfFB
KindOf := KindOfFB.FB1;
END_METHOD
FUNCTION_BLOCK F_BLOCK_2 IMPLEMENTS ITF
METHOD KindOf : KindOfFB
KindOf := KindOfFB.FB2;
END_METHOD
FUNCTION CAST_TO_ANY_FB : BOOL
VAR_INPUT
EIO0000000069 02/2018
749
Opérateurs
itf_in : Itf;
END_VAR
VAR_OUTPUT
pfb_1: POINTER TO F_BLOCK_1 := 0;
pfb_2: POINTER TO F_BLOCK_2 := 0;
END_VAR
VAR
xResult1, xResult2 : BOOL;
END_VAR
IF itf_in <> 0
CASE itf_in.KindOf OF
KindOfFB.FB1:
xResult1 := __QUERYPOINTER(itf_in, pfb_1);
KindOfFB.FB2 THEN
xResult2 := __QUERYPOINTER(itf_in, pfb_2);
END_CASE
END_IF
CAST_TO_ANY_FB := xResult1 OR xResult2;
750
EIO0000000069 02/2018
Opérateurs
Opérateurs de domaine de validité
Définition
Outre les opérateurs IEC, il existe plusieurs moyens de désambiguïser l'accès aux variables et
modules dont le nom est repris plusieurs fois dans le domaine de validité d'un projet.
Les opérateurs de domaine de validité suivants permettent de définir l'espace de noms approprié :
opérateur de domaine de validité global
 nom de liste de variables globales
 nom d'énumération
 espace de noms de bibliothèque

Opérateur de domaine de validité global
Un chemin d'instance commençant par un point (.) ouvre un domaine de validité global (espace de
noms). Par conséquent, lorsqu'une variable locale <varname> porte le même nom qu'une
variable globale, cette dernière est désignée par .<varname>.
Nom de liste de variables globales
Un nom de liste de variables globales peut être utilisé comme espace de noms pour les variables
de cette liste. Vous pouvez donc déclarer des variables sous le même nom dans plusieurs listes
de variables globales. Le fait de faire précéder le nom d'une variable de <global variable
list name>. permet d'accéder à la variable en question.
Syntaxe
<global variable list name>.<variable>
Exemple
Les listes de variables globales globlist1 et globlist2 contiennent chacune une variable
varx. Sur la ligne suivante, varx (de la liste globlist2) est copié dans varx (de la liste
globlist1) :
globlist1.varx := globlist2.varx;
Un message s'affiche lorsqu'un nom de variable déclaré dans plusieurs listes de variables globales
est référencé sans le nom de liste correspondant comme opérateur préfixe.
Espace de noms de bibliothèque
L'espace de noms de bibliothèque permet d'accéder explicitement aux composants de la
bibliothèque.
Exemple
Prenons l'exemple d'un projet contenant une bibliothèque (avec un module fun1) et un POU fun1
défini localement. Vous pouvez ajouter l'espace de noms (namespace) de la bibliothèque au nom
du module pour garantir l'unicité de l'accès.
EIO0000000069 02/2018
751
Opérateurs
Syntaxe
<namespace>.<module name> (lib1.fun1, par exemple)
Par défaut, l'espace de noms (namespace) et le nom d'une bibliothèque sont identiques. Vous
pouvez cependant changer l'espace de noms soit dans la section Informations de projet lors de la
création d'un projet de bibliothèque dans Informations de projet (disponible par défaut dans le
menu Projet), soit ultérieurement dans la boîte de dialogue Propriétés d'une bibliothèque du
gestionnaire de bibliothèques.
Exemple
La bibliothèque lib contient une fonction fun1. Une fonction fun1 est également déclarée dans
le projet. Par défaut, la bibliothèque lib est associée à l'espace de noms 'lib' :
res1 := fun(in := 12); // call of the project function fun
res2 := lib.fun(in := 12); // call of the library function fun
Nom d'énumération
Pour désambiguïser l'accès à une constante de type énumération, vous pouvez utiliser le nom de
type d'une énumération. La même constante peut donc être reprise dans plusieurs énumérations.
Le nom de l'énumération doit précéder le nom de la constante, et est séparé de ce dernier par un
point (.).
Syntaxe
<nom de l'énumération>.<nom de la constante>
Exemple
La constante Blue est un composant des énumérations Colors et Feelings.
color := Colors.Blue; // Access to enum value Blue in type Colors
feeling := Feelings.Blue; // Access to enum value Blue in type Feelings
752
EIO0000000069 02/2018
Opérateurs
Sous-chapitre 30.11
Opérateur d'initialisation
Opérateur d'initialisation
Opérateur INI
Vue d'ensemble
NOTE : L'opérateur INI est obsolète. La méthode FB_init remplace l'opérateur INI. Pour plus
d'informations sur la méthode FB_init, consultez le chapitre Méthodes FB_init, FB_reinit
(voir page 569). Néanmoins, vous pouvez encore utiliser cet opérateur pour assurer la
compatibilité avec les projets importés depuis des versions antérieures de SoMachine.
L'opérateur INI permet d'initialiser des variables conservées fournies par une instance de bloc
fonction dans le POU.
L'opérateur doit être attribué à une variable booléenne.
Syntaxe
<bool-variable> := INI(<instance_FB, TRUE|FALSE)
Lorsque le second paramètre de l'opérateur est défini sur TRUE, toutes les variables conservées
définies dans le bloc fonction FB sont initialisées.
Exemple en langage ST
fbinst représente l'instance du bloc fonction fb, dans laquelle une variable conservée retvar
est définie.
Déclaration dans le POU
fbinst:fb;
b:bool;
Partie implémentation
b := INI(fbinst, TRUE);
ivar:=fbinst.retvar (* => retvar gets initialized *)
Exemple d'appel de l'opérateur en langage FBD
EIO0000000069 02/2018
753
Opérateurs
754
EIO0000000069 02/2018
SoMachine
Opérandes
EIO0000000069 02/2018
Chapitre 31
Opérandes
Opérandes
Contenu de ce chapitre
Ce chapitre contient les sous-chapitres suivants :
Sous-chapitre
Sujet
Page
31.1
Constantes
756
31.2
Variables
767
31.3
Adresses
771
31.4
Fonctions
774
EIO0000000069 02/2018
755
Opérandes
Sous-chapitre 31.1
Constantes
Constantes
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
756
Page
Constantes BOOL
757
Constantes TIME
758
Constantes DATE
760
Constantes DATE_AND_TIME
761
Constantes TIME_OF_DAY
762
Constantes numériques
763
Constantes REAL/LREAL
764
Constantes STRING
765
Constantes typées/littéraux typés
766
EIO0000000069 02/2018
Opérandes
Constantes BOOL
Présentation
Les constantes BOOL correspondent aux valeurs logiques TRUE et FALSE.
Reportez-vous à la description du type de données BOOL (voir page 625).
EIO0000000069 02/2018
757
Opérandes
Constantes TIME
Présentation
Les constantes TIME permettent de commander les modules temporisateur standard. La
constante d'heure TIME (32 bits) est conforme à la norme IEC 61131-3. L'extension de la norme
LTIME est prise en charge comme base de temps pour les temporisateurs haute résolution. Le
type de données LTIME (64 bits) affiche une résolution en nanosecondes.
Syntaxe d'une constante TIME
t#<déclaration heure>
t# peut être remplacé par :
 T#
 time
 TIME
Les unités suivantes peuvent être utilisées pour la déclaration de l'heure, dans l'ordre indiqué. En
revanche, vous n'êtes pas tenu de toutes les utiliser.
 d : jours
 h : heures
 m : minutes
 s : secondes
 ms : millisecondes
Exemples de constantes TIME valides dans une attribution ST :
Exemple
Description
TIME1 := T#14ms;
–
TIME1 := T#100S12ms;
(* Le composant supérieur peut dépasser sa
limite *)
TIME1 := t#12h34m15s;
–
Exemples de constantes non valides
758
Exemple
Description
TIME1 := t#5m68s;
(* limite dépassée au niveau d'un composant
inférieur *)
TIME1 := 15ms;
(* T# manquant *)
TIME1 := t#4ms13d;
(* ordre de saisie incorrect *)
EIO0000000069 02/2018
Opérandes
Syntaxe d'une constante LTIME
LTIME#<déclaration heure>
La déclaration de l'heure peut inclure les unités autorisées pour les constantes TIME, plus les
unités suivantes :
 us : microsecondes
 ns : nanosecondes
Exemples de constantes LTIME valides dans une attribution ST :
LTIME1 := LTIME#1000d15h23m12s34ms2us44ns
LTIME1 := LTIME#3445343m3424732874823ns
Pour plus d'informations, reportez-vous à la description des types de données d'horodatage
(voir page 627).
EIO0000000069 02/2018
759
Opérandes
Constantes DATE
Présentation
Ces constantes permettent de saisir des dates.
Syntaxe
d#<déclaration date>
d# peut être remplacé par :
 D#
 date
 DATE
Saisissez la déclaration de date sous la forme <année-mois-jour>.
Les valeurs DATE sont traitées en interne comme des valeurs DWORD, et correspondent à la date
(en secondes) à partir du 01/01/1970, minuit.
Exemples
DATE#1996-05-06
d#1972-03-29
Pour plus d'informations, reportez-vous à la description des types de données d'horodatage
(TIME) (voir page 627).
760
EIO0000000069 02/2018
Opérandes
Constantes DATE_AND_TIME
Présentation
Combinées, les constantes DATE et TIME_OF_DAY forment une constante appelée
DATE_AND_TIME.
Syntaxe
dt#<déclaration date et heure>
dt# peut être remplacé par :
 DT#
 date_and_time
 DATE_AND_TIME
Saisissez la déclaration de date et heure sous la forme <année-mois-jour-heure:minute:seconde>.
Les secondes peuvent être des nombres réels. Cela signifie que vous pouvez indiquer des
fractions de seconde.
Les valeurs DATE_AND_TIME sont traitées en interne comme des valeurs DWORD, et
correspondent à la date et heure (en secondes) à partir du 01/01/1970, minuit.
Exemples
DATE_AND_TIME#1996-05-06-15:36:30
dt#1972-03-29-00:00:00
Pour plus d'informations, reportez-vous à la description des types de données d'horodatage
(TIME) (voir page 627).
EIO0000000069 02/2018
761
Opérandes
Constantes TIME_OF_DAY
Présentation
Ce type de constante permet d'enregistrer des heures au cours d'une journée.
Syntaxe
tod#<déclaration heure>
tod# peut être remplacé par :
 TOD#
 time_of_day#
 TIME_OF_DAY#
Saisissez la déclaration d'heure sous la forme <heure:minute:seconde>.
Les secondes peuvent être des nombres réels. Cela signifie que vous pouvez indiquer des
fractions de seconde.
Les valeurs TIME_OF_DAY sont traitées en interne comme des valeurs DWORD, et
correspondent à l'heure (en secondes) à partir de minuit.
Exemples
TIME_OF_DAY#15:36:30.123
tod#00:00:00
Pour plus d'informations, reportez-vous à la description des types de données d'horodatage
(TIME) (voir page 627).
762
EIO0000000069 02/2018
Opérandes
Constantes numériques
Présentation
Les valeurs numériques s'affichent sous forme de nombres binaires, octaux, décimaux ou
hexadécimaux. Les valeurs entières non décimales sont représentées par la base, suivie du signe
numérique (#), lui-même suivi de la constante entière. Les lettres A à F représentent les chiffres 10
à 15 dans les nombres hexadécimaux.
Il est possible d'insérer un trait de soulignement dans le nombre.
Exemples
14
(nombre décimal)
2#1001_0011
(nombre binaire)
8#67
(nombre octal)
16#A
(nombre hexadécimal)
Ces valeurs numériques peuvent appartenir aux types suivants :
BYTE
 WORD
 DWORD
 SINT
 USINT
 INT
 UINT
 DINT
 UDINT
 REAL
 LREAL

Il est impossible de convertir un type de variable de taille élevée en un type de taille inférieure.
Ainsi, une variable DINT ne peut pas servir de variable INT. Utilisez plutôt des fonctions de
conversion de type (voir page 708).
EIO0000000069 02/2018
763
Opérandes
Constantes REAL/LREAL
Présentation
Les constantes REAL et LREAL peuvent être indiquées sous forme de fractions décimales et
représentées avec un exposant. Pour ce faire, utilisez le format américain avec le point décimal.
NOTE : lorsque vous créez un bloc fonction avec une implémentation d'une fonction comprenant
une constante LREAL (comme IF_TouchProbe), insérez attribute monitoring (voir page 602).
Exemple :
{attribute 'monitoring' := 'call'}
PROPERTY CaptureValue : LREAL
Exemples
764
7.4
Et non 7,4
1.64e+009
Et non 1,64e+009
EIO0000000069 02/2018
Opérandes
Constantes STRING
Présentation
Une chaîne est une séquence de caractères quelconque. Les constantes STRING (voir page 627)
sont entourées d'apostrophes droites. Elles peuvent également comporter des espaces et des
caractères spéciaux (pour différentes langues, comme les accents et les umlauts), qui seront
traités comme les autres caractères.
Dans les chaînes, le signe dollar ($) suivi de deux nombres hexadécimaux est interprété comme
le code de caractères à 8 bits en hexadécimal.
Certaines combinaisons de caractères commençant par un dollar sont interprétées comme suit :
Combinaison saisie
Interprétation
$<deux nombres hexadécimaux>
code de caractères à 8 bits, en hexadécimal
$$
signe dollar
$'
apostrophe droite
$L ou $l
saut de ligne
$N ou $n
nouvelle ligne
$P ou $p
saut de page
$R ou $r
retour chariot
$T ou $t
tabulation
Exemples
'w1Wüß?'
' Abby and Craig '
':-)'
'costs ($$)'
EIO0000000069 02/2018
765
Opérandes
Constantes typées/littéraux typés
Présentation
Avec des constantes IEC, c'est généralement le type de données de taille la plus faible possible
qui est utilisé. Seule exception à cette règle : les constantes REAL/LREAL qui utilisent toujours le
type LREAL. Les littéraux typés (constantes typées) permettent d'utiliser un autre type de données
(au besoin), sans devoir déclarer explicitement les constantes. La constante est alors fournie avec
un préfixe déterminant le type.
Syntaxe
<Type>#<Literal>
<Type> indique le type de données souhaité. Valeurs acceptées :
 BOOL
 SINT
 USINT
 BYTE
 INT
 UINT
 WORD
 DINT
 UDINT
 DWORD
 REAL
 LREAL
Saisissez le type en majuscules.
<Literal> indique la constante. Les données saisies doivent correspondre au type indiqué sous
<Type>.
Exemple
var1:=DINT#34;
Un message est renvoyé lorsque la constante ne peut être convertie dans le type cible sans perte
de données.
Les littéraux typés peuvent être ajoutés là où les constantes normales sont acceptées.
766
EIO0000000069 02/2018
Opérandes
Sous-chapitre 31.2
Variables
Variables
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
Page
Variables
768
Adressage de bits de variables
769
EIO0000000069 02/2018
767
Opérandes
Variables
Présentation
Les variables peuvent être déclarées à différents endroits : localement dans la partie déclaration
d'un POU, dans une liste de variables globales (GVL), dans une liste de variables persistantes ou
dans le mappage d'E/S des équipements.
Pour savoir comment déclarer une variable, et connaître notamment les règles concernant
l'identificateur et l'usage multiple, reportez-vous au chapitre Déclaration de variables
(voir page 539).
Le type de données (voir page 623) de la variable détermine l'endroit où cette dernière peut être
utilisée.
Les variables disponibles sont accessibles via l'aide à la saisie.
Accès à des variables de tableaux, structures et POU
Le tableau répertorie les syntaxes permettant d'accéder à des tableaux, structures et POU :
Syntaxe
Éléments accessibles
<nom du tableau>[Index1, Index2]
composants de tableau (voir page 638) à
deux dimensions
<nom de la structure>.<nom de la variable>
variables de structure (voir page 641)
<nom du bloc fonction>.<nom de la variable> variables de bloc fonction et programme
768
EIO0000000069 02/2018
Opérandes
Adressage de bits de variables
Présentation
Il est possible d'accéder à chacun des bits d'une variable de type entier. Pour ce faire, vous devez
ajouter l'index du bit à adresser à la variable, en utilisant le point comme séparateur. Cet index peut
être associé à n'importe quelle constante. L'indexation part de 0.
Syntaxe
<nomvariable>.<indexbit>
Exemple
a : INT;
b : BOOL;
...
a.2 := b;
Le troisième bit de la variable a étant défini sur la valeur de la variable b, la variable a est égale à 3.
Lorsque l'index dépasse la largeur de bit de la variable, le message suivant s'affiche :
'Index '<n>' outside the valid range for variable '<var>'!'
L'adressage de bits est possible avec les variables appartenant aux types de données suivants :
 SINT
 INT
 DINT
 USINT
 UINT
 UDINT
 BYTE
 WORD
 DWORD
Lorsque le type de données ne prend pas en charge l'accès aux bits, le message suivant apparaît :
'Invalid data type '<type>' for direct indexing'
L'adressage de bits ne doit pas être utilisé avec une variable VAR_IN_OUT.
EIO0000000069 02/2018
769
Opérandes
Accès aux bits via une constante globale
Si vous avez déclaré une constante globale définissant l'index de bit, vous pouvez vous en servir
pour accéder à un bit.
Exemple d'accès à un bit via une constante globale et pour une variable :
1. Déclaration de la constante globale dans une liste de variables globales
La variable enable définit le bit auquel accéder :
VAR_GLOBAL CONSTANT
enable:int:=2;
END_VAR
2. Accès au bit pour une variable de type entier
Déclaration dans le POU :
VAR
xxx:int;
END_VAR
Accès aux bits pour des types de données BIT
Le type de données BIT est spécialement réservé aux structures. Pour plus d'informations,
reportez-vous au chapitre Accès aux bits de structures (voir page 642).
Exemple : accès aux bits pour des types de données BIT
Déclaration de la structure
TYPE ControllerData :
STRUCT
Status_OperationEnabled : BIT;
Status_SwitchOnActive : BIT;
Status_EnableOperation : BIT;
Status_Error : BIT;
Status_VoltageEnabled : BIT;
Status_QuickStop : BIT;
Status_SwitchOnLocked : BIT;
Status_Warning : BIT;
END_STRUCT
END_TYPE
Déclaration dans le POU
VAR
ControllerDrive1:ControllerData;
END_VAR
Accès aux bits
ControllerDrive1.OperationEnabled := TRUE;
770
EIO0000000069 02/2018
Opérandes
Sous-chapitre 31.3
Adresses
Adresses
Adresse
Remarques concernant les changements en ligne
L'exécution de la commande Changement en ligne peut modifier le contenu des adresses.
ATTENTION
POINTEUR INCORRECT
Vérifiez la validité des pointeurs lors de leur utilisation sur les adresses et de l'exécution de la
commande Changement en ligne.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
Présentation
Lors de l'indication d'une adresse, des séquences de caractères spécifiques définissent
l'emplacement dans la mémoire et la taille.
Syntaxe
%<préfixe zone mémoire><préfixe taille><nombre|.nombre|.nombre....>
Les préfixes de zone mémoire suivants sont pris en charge :
I
entrée (entrées physiques via le pilote d'entrée, capteurs)
Q
sortie (sorties physiques via le pilote de sortie, acteurs)
M
emplacement dans la mémoire
Les préfixes de taille suivants sont pris en charge :
X
bit unique
Aucun
bit unique
B
octet (8 bits)
W
mot (16 bits)
D
mot double (32 bits)
EIO0000000069 02/2018
771
Opérandes
Exemples
Exemple d'adresse
Description
%QX7.5
bit de sortie 7.5
%Q7.5
%IW215
mot d'entrée 215
%QB7
octet de sortie 7
%MD48
mot double à l'emplacement 48 dans la mémoire
%IW2.5.7.1
interprétation dépendante de la configuration de contrôleur
en cours (voir ci-dessous)
ivar AT %IW0: WORD;
déclaration de variable contenant une attribution d'adresse
Pour plus d'informations, reportez-vous au chapitre
Déclaration d'une adresse (voir page 552) AT.
Attribution d'adresses valides
Pour attribuer une adresse valide dans une application, veuillez indiquer les informations
suivantes :
 La position appropriée dans l'image de process correspondant à la zone mémoire à utiliser (I =
entrée, Q = sortie ou M = zone mémoire, comme indiqué dans le tableau ci-dessus)
 La taille souhaitée (X = bit, B = octet, W = mot, D = mot double, comme indiqué dans le tableau
d'exemple)
La configuration actuelle de l'équipement et les paramètres (structure matérielle, description de
l'équipement, paramètres d'E/S) jouent un rôle crucial. Sachez notamment que l'interprétation
d'une adresse de bit diffère selon que l'équipement utilise le mode d'adressage par octets ou IEC
orienté mots. Par exemple, dans un équipement avec adressage par octets, le premier élément de
l'adresse de bit %IX5.5 définit l'adresse de l'octet 5. Mais dans un équipement avec adressage
par mots, cela correspondrait au mot 5. A contrario, le mode d'adressage (par mots ou par octets)
ne dépend pas du type d'équipement : %IW5 et %IB5 adresseront toujours le mot 5 et l'octet 5,
respectivement.
En fonction de la taille et du mode d'adressage, il est possible d'adresser différentes cellules de la
mémoire via la même définition d'adresse.
Différences entre l'adressage par octets et l'adressage IEC orienté mots
Le tableau suivant établit un comparatif entre l'adressage par octets et l'adressage IEC orienté
mots pour les bits, octets, mots et mots doubles. Vous pouvez constater un chevauchement des
zones de mémoire en mode d'adressage par octets (voir exemple sous le tableau).
Concernant la notation des adresses de bit, le mode d'adressage IEC est systématiquement
orienté mots. Cela signifie que l'élément précédant le point correspond au numéro du mot et celui
situé après représente le numéro du bit.
772
EIO0000000069 02/2018
Opérandes
Comparatif entre les adressages par octets et orienté mots pour les tailles d'adresse D, W, B et
X:
DWords (mots doubles)/Words (mots)
adressage par
octets
adressage IEC
orienté mots
D0
W0
D0
D1
W1
–
…
W2
–
W3
–
W4
–
Bytes
(octets)
X (bits)
adressage par octets
adressage IEC orienté mots
B0
X0.7
…
X0.0
X0.7
…
–
B1
X1.7
…
X1.0
X0.15
…
X0.8
–
W1
B2
…
–
–
X1.7
…
X1.0
–
–
B3
–
–
–
X1.15
…
X1.8
D1
W2
B4
–
–
–
–
–
–
…
–
–
B5
–
–
–
–
–
–
–
–
–
W3
B6
–
–
–
–
–
–
–
–
–
–
B7
–
–
–
–
–
–
–
–
D2
W4
B8
–
–
–
–
–
–
–
–
…
–
…
–
–
–
–
–
–
–
–
…
–
…
–
–
–
–
–
–
–
–
…
–
…
–
–
–
–
–
–
D(n-3)
–
D(n/4)
…
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
W(n–1)
–
W(n/2)
–
–
–
–
–
–
–
–
–
–
–
Bn
Xn.7
…
Xn.0
X(n/2)
.15
…
X(n/2)
.8
W0
X0.0
n = numéro d'octet
Exemple de chevauchement de zones mémoire en mode d'adressage par octets :
 D0 contient B0...B3.
 W0 contient B0 et B1.
 W1 contient B1 et B2.
 W2 contient B2 et B3.
Pour résoudre le problème du chevauchement, n'utilisez pas W1 ni D1, D2, D3 dans le cadre de
l'adressage.
NOTE : En l'absence d'adresse de bit unique explicite, les valeurs booléennes sont attribuées bit
à bit. Par exemple, un changement de valeur varbool1 AT %QW0 affecte la plage
QX0.0...QX0.7.
EIO0000000069 02/2018
773
Opérandes
Sous-chapitre 31.4
Fonctions
Fonctions
Fonctions
Présentation
En langage ST, un appel de fonction peut servir d'opérande.
Exemple
Result := Fct(7) + 3;
Fonction TIME()
Cette fonction renvoie le temps écoulé (en millisecondes) depuis le démarrage du système.
Le type de données est TIME.
Exemple en langage IL
TIME
ST systime
(* Result for example: T#35m11s342ms *)
Exemple en langage ST
systime:=TIME();
774
EIO0000000069 02/2018
SoMachine
Modèles de SoMachine
EIO0000000069 02/2018
Partie VIII
Modèles de SoMachine
Modèles de SoMachine
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
32
Informations générales sur les modèles de SoMachine
777
33
Gestion des modèles d'équipement
791
34
Gestion des modèles de fonction
807
EIO0000000069 02/2018
775
Modèles de SoMachine
776
EIO0000000069 02/2018
SoMachine
Informations générales sur les modèles de SoMachine
EIO0000000069 02/2018
Chapitre 32
Informations générales sur les modèles de SoMachine
Informations générales sur les modèles de SoMachine
EIO0000000069 02/2018
777
Informations générales sur les modèles de SoMachine
Sous-chapitre 32.1
Modèles SoMachine
Modèles SoMachine
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
778
Page
Informations générales sur les modèles de SoMachine
779
Administration des modèles d'équipements SoMachine
782
EIO0000000069 02/2018
Informations générales sur les modèles de SoMachine
Informations générales sur les modèles de SoMachine
Présentation
SoMachine fournit des modèles qui facilitent l'adoption dans d'autres projets SoMachine d'options
particulières ou de fonctionnalités de visualisation développées pour un projet SoMachine
particulier. Ils aident à harmoniser l'utilisation des équipements de terrain et des fonctions
d'application dans les différents projets SoMachine.
Les types de modèles suivants sont disponibles :
Modèles d'équipement associés à un seul équipement de terrain ou module d'E/S
 Modèles de fonctions associés à une fonction d'application de haut niveau

SoMachine est fourni avec divers modèles, mais vous pouvez également en créer d'autres afin de
rendre certaines fonctionnalités disponibles dans d'autres projets.
Création de modèles
La procédure suivante s'applique à la tous les modèles SoMachine :
Étape
Action
1
Créez une fonctionnalité au sein d'un projet SoMachine et testez-la avec la matériel approprié
ou par simulation.
2
Enregistrez la fonctionnalité dans une bibliothèque de modèles.
3
Ouvrez un autre projet SoMachine et sélectionnez le modèle à partir de la bibliothèque de
modèles afin de rendre la fonctionnalité disponible pour ce projet.
Remarques générales
Lors de l'utilisation des modèles SoMachine, notez les points suivants :
 Les modèles ne sont pas associés à un contrôleur en particulier et peuvent donc être
disponibles sur tout contrôleur. Vérifiez que le contrôleur auquel vous ajoutez le modèle peut
exécuter la fonctionnalité incluse dans le modèle.
 Une fois le modèle installé, vous pouvez adapter librement les objets créés en fonction de vos
besoins.
 La fonction de modèle n'assure pas la prise en charge des applications Vijeo Designer ; les
applications IHM ne sont pas incluses dans les modèles SoMachine.
 Il est possible d'installer un modèle plusieurs fois sur le même équipement de contrôleur. Pour
éviter les conflits de noms lors de la création répétée des mêmes objets, ceux-ci sont renommés
automatiquement lors de l'installation. Pour plus d'informations, consultez la section Nommage
des objets du chapitre Ajout d'équipements à partir d'un modèle (voir page 796).
 Les types de données définies par l'utilisateur (DUT) ou les blocs fonction doivent être définis
dans une bibliothèque de blocs fonction s'ils doivent être utilisés dans des modèles.
 Les modèles ne prennent pas en charge l'utilisation de représentations directes de variables
(par exemple, %IX2.0).
EIO0000000069 02/2018
779
Informations générales sur les modèles de SoMachine
En revanche, vous pouvez utiliser des représentations directes avec une spécification
d'adresse incomplète (par exemple, %I*). Pour plus d'informations, reportez-vous au chapitre
Configuration des variables - VAR_CONFIG (voir page 566).
NOTE : Bien que cette forme d'espace réservé pour les adresses directes soit disponible, évitez
l'adressage direct dans vos programmes et utilisez l'adressage symbolique chaque fois et partout
où c'est possible.
SoMachine vous permet de programmer des instructions directement ou indirectement à l'aide de
paramètres. La méthode directe, ou adressage immédiat, utilise l'adresse directe d'un paramètre,
par exemple %IWx ou %QWx. La méthode indirecte, ou adressage symbolique, consiste à définir
des symboles pour ces paramètres, puis à utiliser ces symboles conjointement avec vos
instructions de programme.
Ces deux méthodes sont valides et acceptables, mais l'adressage symbolique offre certains
avantages, notamment en cas de modification ultérieure de la configuration. Lorsque vous
configurez les E/S et d'autres équipements pour votre application, SoMachine attribue automatiquement les adresses immédiates. Ensuite, si vous ajoutez ou supprimez des E/S ou d'autres
équipements, SoMachine intègre ces modifications dans la configuration en réattribuant les
adresses immédiates. Cette opération modifie les affectations par rapport à ce qu'elles étaient au
moment des modifications de la configuration.
Si vous avez déjà créé tout ou partie de votre programme à l'aide d'adresses immédiates, vous
devez tenir compte de cette modification dans vos instructions, vos blocs fonction, etc., en
changeant toutes les adresses immédiates réattribuées. En revanche, si vous utilisez des
symboles à la place d'adresses immédiates dans votre programme, cette opération n'est pas
nécessaire. Les symboles sont mis à jour automatiquement en fonction des nouvelles adresses
immédiates, dans la mesure où ils sont associés à l'adresse dans la boîte de dialogue Mappage
d'E/S de l'éditeur d'équipement correspondant, et non simplement à une déclaration AT dans le
programme lui-même.
AVERTISSEMENT
FONCTIONNEMENT IMPREVU DE L’EQUIPEMENT
Vérifiez et modifiez au besoin toutes les adresses d'E/S immédiates utilisées dans l'application
en cas de modification de la configuration.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des
dommages matériels.
NOTE : Utilisez systématiquement des symboles lors de la programmation, afin d'éviter les
importantes modifications du programme et de limiter l'introduction d'anomalies de programmation
en cas de modification de la configuration d'un programme par ajout ou suppression d'E/S ou
d'autres équipements.
780
EIO0000000069 02/2018
Informations générales sur les modèles de SoMachine
Modules d'E/S pris en charge
Les modèles de SoMachine peuvent inclure les modules d'E/S suivants :
TM2
 TM3
 TM5

Bus de terrain pris en charge
Les modèles de SoMachine peuvent inclure des équipements de terrain qui sont liés aux bus de
terrain suivants :
 CANopen
 Ligne sérieModbus (Modbus IO Scanner)
 Modbus TCP IO Scanner
 Collection générale de variateurs SoftMotion (LMC058)
 CANmotion
EIO0000000069 02/2018
781
Informations générales sur les modèles de SoMachine
Administration des modèles d'équipements SoMachine
Présentation
Les paragraphes suivants présentent la création ou la modification de modèles d'équipements ou
de fonctions nouveaux ou existants, ainsi que leur enregistrement sous forme de fichiers en vue
de leur transfert vers d'autres ordinateurs.
Bibliothèques de modèles
Les bibliothèques de modèles contiennent la définition de plusieurs modèles d'équipements ou de
fonctions.
Protection en écriture
Les bibliothèques de modèles standard incluses dans la livraison SoMachine sont protégées en
écriture, ce qui signifie qu'elles ne peuvent être ni supprimées, ni renommées.
NOTE : vous ne pouvez pas modifier les bibliothèques protégées en écriture (désinstallation de
modèles précis ou modification de leur nom), mais vous pouvez les désinstaller entièrement.
Administration des modèles
Pour administrer les modèles d'équipements ou de fonctions disponibles dans SoMachine,
sélectionnez Outils → Référentiel de modèles dans le SoMachine Logic Builder. Pour accéder au
Référentiel de modèles depuis SoMachine Central, ouvrez la boîte de dialogue Options système
en cliquant sur le bouton Options système sur la barre d'outils ou le bouton Paramètres sur l'écran
Versions. Dans la boîte de dialogue Options système, cliquez sur le bouton Référentiel de modèles
(voir SoMachine Central, Guide utilisateur).
782
EIO0000000069 02/2018
Informations générales sur les modèles de SoMachine
La boîte de dialogue Référentiel de modèles apparaît :
Dans la liste Emplacement, sélectionnez le type de modèles dans la zone Modèles installés :
 L'option <Tous emplacements de stockage> est sélectionné par défaut : tous les modèles
d'équipements et de fonctions disponibles sont affichés.
 L'option Hérité affiche les modèles d'équipements et de fonctions SoMachine V3.1 (s'ils sont
installés).
 L'option Utilisateur affiche uniquement les modèles d'équipements et de fonctions que vous
avez créés ou installés.
 L'option Système affiche les modèles d'équipements et de fonctions fournis par SoMachine.
Le chemin d'accès au répertoire où sont stockées les bibliothèques de modèles est affiché sous
le champ Emplacement.
La zone Modèles installés contient les modèles installés en deux groupes : Modèles d'équipement
et Modèles de fonction. Chaque bibliothèque de modèles peut contenir soit des modèles
d'équipements soit des modèles de fonctions.
EIO0000000069 02/2018
783
Informations générales sur les modèles de SoMachine
Installation des bibliothèques de modèles supplémentaires
Pour ajouter des bibliothèques de modèles à cette liste, procédez comme suit :
Étape
1
Action
Cliquez sur le bouton Installer dans la boîte de dialogue Référentiel de modèles.
Résultat : la boîte de dialogue Ouvrir un fichier s'ouvre.
2
Recherchez le dossier où est enregistré le fichier de bibliothèque de modèles à installer.
3
Sélectionnez le fichier de bibliothèque à installer et cliquez sur OK.
Résultat : la bibliothèque de modèles sélectionnée est installée et indiquée dans la boîte de
dialogue Référentiel de modèles avec les modèles d'équipements ou de fonctions qu'elle
contient.
Suppression des bibliothèques de modèles
Pour supprimer une bibliothèque de modèles, procédez comme suit :
Étape
Action
1
Dans la liste Modèles installés de la boîte de dialogue Référentiel de modèles, sélectionnez la
bibliothèque de modèles à supprimer.
2
Pour supprimer la bibliothèque de modèles sélectionnée, cliquez sur Désinstallaer.
Résultat : la bibliothèque de modèles sélectionnée est supprimée de l'installation.
Changement de nom des bibliothèques de modèles
Pour renommer une bibliothèque de modèles, procédez comme suit :
Étape
784
Action
1
Dans la liste Modèles installés de la boîte de dialogue Référentiel de modèles, sélectionnez la
bibliothèque de modèles à renommer.
2
Cliquez sur le nom de la bibliothèque de modèles que vous souhaitez renommer.
Résultat : Un s'affiche.
3
Saisissez le nouveau nom dans cette zone et appuyez sur Entrée ou quittez la zone de texte.
Résultat : la bibliothèque de modèles se voit désormais affecter le nouveau nom.
EIO0000000069 02/2018
Informations générales sur les modèles de SoMachine
Création d'une bibliothèque de modèles
Pour créer une bibliothèque de modèles, procédez comme suit :
Étape
Action
1
Pour créer une bibliothèque de modèles de fonctions, sélectionnez l'option Utilisateur ou <Tous
emplacements de stockage> dans la liste Emplacement.
2
Pour créer une bibliothèque de modèles d'équipements, sélectionnez l'option Modèles
d'équipement dans la liste Modèles installés et cliquez sur le bouton Créer une bibliothèque.
Résultat : une nouvelle bibliothèque de modèles dotée d'un nom par défaut est ajoutée au bas
de la section Modèles d'équipement de la liste Modèles installés.
Pour créer une bibliothèque de modèles de fonctions, sélectionnez le nœud Modèles de fonction
dans la liste Modèles installés et cliquez sur le bouton Créer une bibliothèque.
Résultat : une nouvelle bibliothèque de modèles dotée d'un nom par défaut est ajoutée au bas
de la section Modèles de fonction de la liste Modèles installés.
3
Renommez la nouvelle bibliothèque de modèles comme indiqué plus haut et incluez-y des
modèles de fonctions à l'aide, par exemple, des opérations de copier-coller décrites ci-après.
Enregistrement de bibliothèques de modèles sous forme de fichiers
Les bibliothèques de modèles qui contiennent des modèles d'équipements ou de fonctions sont
des fichiers XML propres à SoMachine.
Pour pouvoir les utiliser sur d'autres ordinateurs, procédez comme suit :
Étape
Action
1
Dans la liste Modèles installés, sélectionnez la bibliothèque de modèles à exporter.
2
Cliquez sur le bouton Enregistrer sous.
3
Dans la boîte de dialogue Enregistrer un fichier, accédez au dossier dans lequel vous souhaitez
enregistrer le fichier de bibliothèque de modèles.
4
Transférez le fichier de bibliothèque de modèles vers un autre ordinateur et installez-le à l'aide
du Référentiel de modèles.
Opérations de copier/coller appliquées aux bibliothèques de modèles
La boîte dialogue Référentiel de modèles prend aussi en charge les opérations copier/coller pour
les bibliothèques de modèles.
Pour copier une bibliothèque de modèles avec le modèle d'équipement ou de fonction qu'elle
contient, sélectionnez l'élément en question dans la liste Modèles installés et cliquez sur le bouton
Copier.
Sélectionnez à présent le nœud Modèles d'équipements ou Modèles de fonctions et cliquez sur le
bouton Coller pour insérer une copie de cette bibliothèque de modèles avec un nom par défaut
dans la liste modèles installés .
Remplacez le nom par défaut par un nom de votre choix.
EIO0000000069 02/2018
785
Informations générales sur les modèles de SoMachine
Opérations de copier/coller appliquées aux modèles
La boîte de dialogue Référentiel de modèles prend en charge l'opération copier et coller pour les
modèles d'équipements ou de fonctions.
Pour copier un modèle d'équipement ou de fonction, sélectionnez l'élément en question dans la
liste Modèles installés et cliquez sur le bouton Copier.
Vous pouvez à présent coller le modèle dans une bibliothèque de modèles, si celle-ci n'est pas
protégée en écriture.
Une bibliothèque peut uniquement être collée dans une bibliothèque de même type.
Si vous le souhaitez, remplacez le nom par défaut par un nom de votre choix.
Ajout d'informations supplémentaires aux modèles ou aux bibliothèques de modèles
La boîte de dialogue Référentiel de modèles permet d'entrer des informations supplémentaires
dans les modèles ou les bibliothèques de modèles.
Pour ajouter des informations, sélectionnez un modèle ou un modèle de bibliothèque dans la liste
Modèles installés et cliquez sur le bouton Propriétés.
786
EIO0000000069 02/2018
Informations générales sur les modèles de SoMachine
La boîte de dialogue Propriétés du modèle ou de la bibliothèque de modèles sélectionné(e)
s'ouvre.
Si la bibliothèque ou le modèle sélectionné(e) n'est pas protégé(e) en écriture, la boîte de dialogue
Propriétés contient les paramètres suivants, que vous pouvez modifier, ainsi que les boutons
correspondants :
Elément
Description
Zone Nom de modèle / Nom de
bibliothèque
Indique le nom du modèle ou de la bibliothèque de modèles auxquels ces
propriétés s'appliquent. Pour changer le nom, cliquez sur cette case de
texte et adaptez le nom à vos besoins.
EIO0000000069 02/2018
787
Informations générales sur les modèles de SoMachine
Elément
Description
Zone ID aide
Pour les modèles ou bibliothèques de modèles de Schneider Electric,
contient la référence à la description respective dans l'aide en ligne.
Si un document d'aide en ligne est disponible pour vos propres modèles,
vous pouvez entrer une référence complète à son emplacement dans
l'aide en ligne ou un mot clé correspondant à un index dans celle-ci.
Bouton Afficher l'aide
Ouvre le document d'aide en ligne spécifié dans la zone ID aide ou l'index
de recherche dans l'aide en ligne pour le mot clé spécifié dans la zone ID
aide.
Section Infos
–
Liste des langues
Contient les langues disponibles pour l'interface utilisateur graphique de
SoMachine. Si vous sélectionnez une langue, le contenu des éléments de
Commentaire, Description et Image qui en dépendent s'affichent dans la
langue sélectionnée.
Si aucun contenu linguistique spécifique n'est disponible, la langue par
défaut est le Français.
Bouton Importation à partir Affiche une boîte de dialogue Ouvrir standard. Permet de rechercher un
du fichier
fichier XML renfermant le contenu localisé des éléments Commentaire,
Description et Image dépendants de la langue. La structure de ce fichier
XML doit suivre les indications contenues dans l'exemple (voir page 789).
Zone Commentaire
Permet de saisir un texte court (par exemple pour donner un aperçu du
contenu et de l'objectif du modèle ou de la bibliothèque sélectionné(e)). Ce
texte est indiqué sous forme d'info-bulle lorsque vous sélectionnez les
bibliothèques de modèles dans SoMachine.
Zone Description
Permet de saisir un texte long (par exemple pour donner une description
détaillée du contenu et de l'objectif du modèle ou de la bibliothèque
sélectionné(e)).
Paramètre Image
Bouton ...
Vous permet d'entrer un chemin d'accès à une image spécifique à la
langue.
Vous pouvez également cliquer sur le bouton ... pour rechercher le fichier
graphique.
Formats graphiques pris en charge :
 Bitmap : *.bmp
 JPEG : *.jpg
 Graphics Interchange Format : *.gif
 Icône : *.ico
Une fois que la photo a été spécifiée, elle s'affiche dans la boîte de
dialogue Propriétés.
Si vous cliquez sur OK, l'image est incorporée au modèle.
La case à cocher Lecture seule n'est disponible que pour les bibliothèques de modèles pour
indiquer si la bibliothèque de modèles sélectionnée est en lecture seule. Il n'est pas possible de
changer l'état de la bibliothèque ici.
788
EIO0000000069 02/2018
Informations générales sur les modèles de SoMachine
Localisation des éléments dépendants de la langue
Vous pouvez localiser le contenu des éléments dépendants de la langue Commentaire,
Description et Image en important un fichier XML caractérisé par la structure suivante :
<?xml version="1.0" encoding="UTF-8"?>
<TemplateProperties>
<HelpId>SoMProg.chm::/SoMProg_D-SE-0001286.htm#D-SE-0001286.1</HelpId>
<PropertySet languageId = "en">
<Comment>This is a short description</Comment>
<Description>This is a long description</Description>
<ImageFile>PictureEnglish.jpg</ImageFile>
</PropertySet>
<PropertySet languageId = "de">
<Comment>Kurze Beschreibung</Comment>
<Description>Lange Beschreibung</Description>
<ImageFile>PictureGerman.jpg</ImageFile>
</PropertySet>
</TemplateProperties>
EIO0000000069 02/2018
789
Informations générales sur les modèles de SoMachine
790
EIO0000000069 02/2018
SoMachine
Gestion des modèles d'équipement
EIO0000000069 02/2018
Chapitre 33
Gestion des modèles d'équipement
Gestion des modèles d'équipement
EIO0000000069 02/2018
791
Gestion des modèles d'équipement
Sous-chapitre 33.1
Gestion des modèles d'équipements
Gestion des modèles d'équipements
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
792
Page
Informations générales sur les modèles d'équipements
793
Ajout d'équipements à partir d'un modèle
794
Création d'un modèle d'équipement sur la base d'équipements ou modules d'E/S de terrain
797
Visualisations adaptées à la création de modèles d'équipements
798
Informations supplémentaires sur l'intégration de la logique d'équipement dans les modèles
d'équipement
799
Procédure de création d'un modèle d'équipement
802
EIO0000000069 02/2018
Gestion des modèles d'équipement
Informations générales sur les modèles d'équipements
Informations générales sur l'usage des termes
La description suivant s'applique aux équipements de terrain et aux modules d'E/S, bien que le
terme d'équipement de terrain soit utilisé à titre générique pour plus de lisibilité.
Contenu des modèles d'équipements
Les modèles d'équipements sont liés à un équipement de terrain ou à un module d'E/S spécifique.
Ils contiennent les informations suivantes :
 Configuration du bus de terrain
 Logique de contrôle (programmation de contrôleur) (facultatif)
 Éléments de visualisation (programmation de la visualisation) (facultatif)
Utilisation des modèles d'équipements
Des modèles d'équipements existants sont enregistrés dans des bibliothèques de modèles.
Chaque bibliothèque de modèles contient la définition de plusieurs modèles d'équipements avec
une base commune (liés à la commande d'un moteur, par exemple).
Vous pouvez les sélectionner et les adapter facilement à vos différents projets SoMachine afin de
créer des équipements de terrain préconfigurés et prêts à l'emploi.
Création de modèles d'équipements
Afin de pouvoir réutiliser des équipements de terrain déjà configurés dans un projet SoMachine,
sauvegardez-les en tant que modèles d'équipements. Ces modèles incluent la programmation et
la visualisation de contrôleurs liées à l'équipement de terrain.
Versions des modèles d'équipements
Lors de la création d'un modèle d'équipement, une vérification est effectuée pour déterminer si la
description du périphérique à créer existe déjà. Si tel n'est pas le cas, l'équipement est automatiquement mis à jour vers la dernière version, s'il en existe une plus récente.
EIO0000000069 02/2018
793
Gestion des modèles d'équipement
Ajout d'équipements à partir d'un modèle
Présentation
Les modèles d'équipements sont liés à un équipement de bus de terrain spécifique. Ils contiennent
les informations suivantes :
 Configuration de l'équipement du bus de terrain
 Logique de contrôle (programmation de contrôleur) (facultatif)
 Éléments de visualisation (programmation de la visualisation) (facultatif)
Vous pouvez créer vos propres modèles d'équipements à partir du projet. Pour plus de détails,
consultez le chapitre Procédure de création d'un modèle d'équipement (voir page 802).
Ajouter un équipement à partir du modèle
SoMachine propose deux méthodes pour ajouter un appareil à partir d'un modèle :

Etape
794
Création d'un appareil à l'aide d'un modèle par glisser-déposer :
Action
1
Ouvrez la vue Equipements & modules du catalogue de matériels.
2
Dans la partie inférieure de la vue Equipements & modules, activez l'option Modèle d'équipement.
Résultat : les modèles d'équipements de terrain disponibles dans SoMachine s'affichent dans la vue
Equipements & modules.
3
Sélectionnez une entrée dans la vue Equipements & modules, déplacez-la dans l'arborescence des
équipements, puis déposez-la dans un sous-nœud de contrôleur adéquat.
Remarque : les sous-nœuds adéquats sont mis en évidence par SoMachine.
Résultat : la boîte de dialogue Ajouter un équipement à partir du modèle s'affiche.
EIO0000000069 02/2018
Gestion des modèles d'équipement
Etape
Action
4
Dans la boîte de dialogue Ajouter un équipement à partir du modèle, définissez le Nom d'appareil et
l'Adresse d'appareil si le bus de terrain requiert des adresses numériques. Si le modèle d'équipement
inclut la logique d'équipement, sélectionnez le programme (POU) dans lequel la logique sera insérée.
5
Cliquez sur le bouton OK.
Résultat : l'appareil est créé et paramétré selon le modèle de périphérique sélectionné, y compris les
écrans de visualisation en option et la logique de contrôle.

Etape
Création d'un appareil l'aide d'un modèle d'équipement via le menu contextuel :
Action
1
Ouvrez l'arborescence des équipements.
2
Cliquez avec le bouton droit sur le gestionnaire d'équipements de terrain et exécutez la commande
Ajouter un équipement à partir du modèle dans le menu contextuel.
Résultat : la boîte de dialogue Ajouter un équipement à partir du modèle s'affiche.
3
Dans la boîte de dialogue Ajouter un équipement à partir du modèle, sélectionnez le modèle
d'équipement à utiliser et renseignez les champs Nom d'appareil et Adresse d'appareil. Si le modèle
d'équipement inclut la logique d'équipement, sélectionnez le programme (POU) dans lequel la logique
sera insérée.
4
Cliquez sur le bouton OK.
Résultat : l'appareil est créé et paramétré selon le modèle de périphérique sélectionné, y compris les
écrans de visualisation en option et la logique de contrôle.
NOTE : la fonction Annuler / Rétablir n'est pas disponible pour la création des équipements de
terrain.
EIO0000000069 02/2018
795
Gestion des modèles d'équipement
Nommage des objets
Afin d'éviter les conflits de nom si le même modèle d'équipement est utilisé comme base pour créer
différents équipements de terrain, les conventions suivantes s'appliquent aux équipements de
terrain et aux objets qui leur sont associés (blocs fonctionnels, visualisation et variables) :
Si le nom de l'objet d'origine…
Alors…
Cas 1 :
contient le nom de l'équipement de terrain
d'origine,
cette partie de l'objet est remplacée par le nom du nouvel
équipement de terrain créé.
Exemple :
Le modèle d'équipement de terrain ATV1
contient une variable Var_ATV1_Input.
Pour un nouvel équipement Axis1 créé avec le modèle, la
nouvelle variable sera nommée Var_Axis1_Input.
Cas 2 :
ne contient pas le nom de l'équipement
d'origine,
le nom du nouvel équipement et un trait de soulignement
sont insérés dans le nom d'origine pour donner un nouveau
nom unique.
Exemple :
Le modèle d'équipement de terrain ATV1
contient une variable Var_Input1.
796
Pour un nouvel équipement Axis1 créé avec ce modèle, la
nouvelle variable sera nommée Var_Axis1_Input.
EIO0000000069 02/2018
Gestion des modèles d'équipement
Création d'un modèle d'équipement sur la base d'équipements ou modules d'E/S de
terrain
Présentation
Vous pouvez créer des modèles d'équipements basés sur des appareils ou de modules d'E/S de
terrain. La description suivant s'applique aux équipements de terrain et aux modules d'E/S, bien
que le terme d'équipement de terrain soit utilisé à titre générique pour plus de lisibilité.
Les paragraphes suivants indiquent:
Les critères qui doivent être remplis pour enregistrer un équipement de terrain ou un module
d'E/S, y compris la logique et la visualisation, en tant que modèle d'équipement :
 Les informations enregistrées dans le modèle d'équipement.

Conditions préalables pour les équipements de terrain
Les équipements de terrain doivent répondre aux critères ci-dessous pour pouvoir être enregistrés
en tant que modèles d'équipement :
 Les équipements de terrain doivent être liés aux bus terrain indiqués dans la liste des bus de
terrain pris en charge (voir page 781) ;
 le type d'équipement doit être installé dans le Référentiel d'appareils.
Conditions préalables pour les modules d'E/S
Seuls les modules d'E/S pris en charge (voir page 781) peuvent être sauvegardés en tant que
modèles d'équipement.
Conditions préalables relatives à l'application
Les modèles peuvent uniquement être créés à partir d'applications valides. Ici, valide signifie
qu'aucune erreur n'a été détectée durant le processus de Compilation.
Préalables à l'inclusion de logique d'équipement dans un modèle
Pour pouvoir inclure la logique d'équipement dans un modèle, cette logique doit contenir une ou
plusieurs sections de code qui échangent des données avec cet équipement de terrain. Cette
logique d'équipement doit être exécutée (ajoutée à une tâche ou appelée par un autre
programme). Sinon, la prise en compte n'a pas lieu lors de l'exécution de la commande Compiler.
Informations sur les équipements enregistrées dans les modèles d'équipements
Les informations suivantes sur les équipements de terrain sont enregistrées dans les modèles
d'équipements :
 Configuration des équipements
 affectation des E/S de l'équipement de terrain,
 Visualisations adaptées à l'équipement de terrain
 Logique d'équipement échangeant des données avec l'équipement de terrain
EIO0000000069 02/2018
797
Gestion des modèles d'équipement
Visualisations adaptées à la création de modèles d'équipements
Présentation
Chaque modèle d'équipement peut être associé à une ou plusieurs visualisations Logic Builder.
Les types de visualisations pris en charge sont décrits comme suit.
Visualisations prises en charge
SoMachine assure la prise en charge des deux types de visualisations :
Visualisations ordinaires
 Visualisations modulaires utilisant des cadres

Les visualisations utilisant des cadres ont une flexibilité et une modularité supérieures.
Visualisations ordinaires
Les visualisations sans cadre sont basées sur un seul objet de visualisation, créé pour
l'équipement d'E/S.
SoMachine référence les données de l'équipement d'E/S dans les propriétés des éléments visuels.
Lorsque vous créez un équipement en fonction de ce modèle d'équipement, SoMachine remplace
directement les variables dans les propriétés des éléments visuels.
Visualisations utilisant des cadres
Une visualisation utilisant des cadres se construit à partir d'un écran principal qui peut être intégré
à d'autres visualisations, plusieurs petites visualisations pouvant se combiner comme des modules
dans des zones prédéfinies de l'écran principal (cadres).
Sur l'écran principal, un objet cadre est placé comme objet rectangulaire en tant que contenant.
Vous pouvez affecter une autre visualisation à un tel conteneur.
La visualisation intégrée peut alors être utilisée comme interface pour accéder en interne aux
éléments visuels.
Pour plus d'informations, consultez la section Programmation avec SoMachine → Visualisation de
l'aide en ligne SoMachine.
Pour utiliser les visualisations intégrées dans les modèles d'équipement, définissez une interface
incluant les définitions de toutes les variables associées à la connexion à l'équipement d'E/S ou
au bloc fonctionnel pour chaque module de visualisation. Lorsque vous créez un équipement à
partir de ce modèle, SoMachine adapte les espaces réservés des visualisations intégrées en
fonction du nom de l'équipement d'E/S créé.
NOTE : Toutes les visualisations utilisant des cadres et tous les blocs fonction liés à l'équipement
d'E/S doivent être définis dans une bibliothèque pour que SoMachine puisse les trouver.
798
EIO0000000069 02/2018
Gestion des modèles d'équipement
Informations supplémentaires sur l'intégration de la logique d'équipement dans les
modèles d'équipement
Présentation
Vous pouvez inclure une logique d'équipement dans un modèle d'équipement si cette logique
contient une ou plusieurs sections de code échangeant des données avec cet équipement de
terrain de l'une des façons suivantes :



Une section de code utilise une nouvelle variable définie dans le mappage d'E/S de
l'équipement de terrain.
Une section de code et le mappage d'E/S de l'équipement de terrain utilisent une variable
commune définie dans une liste de variables globales (GVL) ou un programme de contrôleur
contenu dans l'application à laquelle appartient la section de code.
NOTE : Si vous utilisez des structures ou des tableaux, assurez-vous qu'ils ne sont associés
qu'à un seul équipement de terrain.
Une section de code et l'équipement de terrain utilisent une variable fixe spécifique à
l'équipement (par exemple, les variables axis-ref utilisées avec les variateurs Altivar ou
Lexium).
Appels interconnectés de sections de code
Les sections de code sont constituées d'une séquence d'appels interconnectés de blocs fonction,
de fonctions et d'opérateurs.
S'il existe une des relations suivantes entre les appels individuels, ceux-ci sont considérés comme
connectés :
 Il existe une connexion graphique entre les appels individuels en CFC, FBD et LD.
 Une variable est connectée à la sortie d'un appel et à l'entrée de l'autre appel.
 Un appel utilise le paramètre de l'autre appel.
Sélection individuelle des blocs fonction
Vous pouvez sélectionner individuellement les blocs fonction inclus dans ces sections de code qui
échangent des données avec l'équipement de terrain à inclure dans le modèle d'équipement. Ceci
permet de créer différents modèles d'équipements fournissant différentes fonctions pour le même
équipement de terrain.
NOTE : Le type de bloc fonction doit être défini dans une bibliothèque.
Inclusion d'expressions dans les modèles d'équipement
Les expressions, ainsi que les variables utilisées dans ces expressions, connectées aux
paramètres d'un bloc fonction, d'une fonction ou d'un opérateur, sont automatiquement
enregistrées dans le modèle d'équipement.
EIO0000000069 02/2018
799
Gestion des modèles d'équipement
Pratiques générales pour la création de logique d'équipement
N'incluez que la logique d'équipement simple dans un modèle d'équipement.
De cette façon, les sections de code fonctionnent de manière identique même si elles sont créées
dans différents langages IEC.
NOTE : Pour une logique d'équipement complexe, créez plutôt un modèle de fonction.
Pratiques générales pour la création de logique d'équipement en FBD/LD
Evitez les éléments de détection de front parce qu'ils n'existent pas dans d'autres langages IEC.
Si possible, utilisez plutôt les blocs fonction R_TRIG ou F_TRIG.
Pratiques pour la création de logique d'équipement en CFC
Utilisez la commande Ordre d'exécution → Trier par flux de données pour ordonner les éléments
CFC appartenant à la même section de code en fonction de leur position dans le flux de données.
Ceci offre une meilleure compatibilité avec les autres langages IEC.
Prévoyez de l'espace (dans le sens horizontal) entre les éléments CFC individuels, car, suite aux
changements de noms, les noms des variables sont étendus lors de la création d'un équipement
à partir d'un modèle.
Exemple de logique d'équipement
La figure ci-dessous présente un exemple courant de section de code pour un équipement d'E/S
distribué Advantys OTB dans une application de convoyage :
800
EIO0000000069 02/2018
Gestion des modèles d'équipement
La section de code est constituée des blocs fonction suivants :
Nom
Type
Fonction
InOTB_Conv20
Bloc d'entrée
Conversion des données provenant de
l'OTB au format exigé par le bloc de
commande
Conv20
Bloc de commande
Traitement des données
OutOTB_Conv20
Bloc de sortie
Conversion des données provenant du
bloc de commande au format exigé par
l'OTB
Les variables InByte1_Conv20, InByte2_Conv20 et OutByte_Conv20 sont définies dans le
mappage d'E/S de l'OTB. Ceci signifie que la section de code échange des données avec
l'équipement OTB. Elle peut donc être intégrée dans le modèle d'équipement.
EIO0000000069 02/2018
801
Gestion des modèles d'équipement
Procédure de création d'un modèle d'équipement
Présentation
Les paragraphes suivants indiquent la procédure à réaliser pour enregistrer des équipements de
bus de terrain répondant aux critères définis dans la section Création d'un modèle d'équipement à
partir d'équipements de bus terrain (voir page 797).
Procédure d'enregistrement d'un équipement de terrain comme modèle
Pour enregistrer un équipement de terrain en tant que modèle d'équipement, procédez comme
suit :
Étape
802
Action
1
Cliquez avec le bouton droit sur l'équipement de terrain à enregistrer comme
modèle d'équipement dans l'arborescence des équipements.
2
Sélectionnez la commande Enregistrer en tant que modèle dans le menu
contextuel.
Résultat : SoMachine génère automatiquement l'application. Une fois le
processus de compilation terminé, la boîte de dialogue Enregistrer en tant que
modèle apparaît.
3
Définissez le nouveau modèle d'équipement dans la boîte de dialogue
Enregistrer en tant que modèle, comme indiqué ci-dessous.
4
Cliquez sur OK pour fermer la boîte de dialogue Enregistrer en tant que modèle
et créer le modèle d'équipement.
EIO0000000069 02/2018
Gestion des modèles d'équipement
Boîte de dialogue Enregistrer en tant que modèle
La boîte de dialogue Enregistrer en tant que modèle contient les paramètres suivants :
1
2
3
4
5
6
indique le type d'équipement de terrain qui a servi de de base au modèle d'équipement
indique le type de bus de terrain de l'équipement
nom du modèle d'équipement qui sera créé (au départ nom de l'équipement de bus terrain d'origine)
sélectionnez la bibliothèque de modèle à laquelle le modèle d'équipement sera ajouté
sélectionnez les blocs fonction et les visualisations à enregistrer avec le modèle d'équipement
Bouton Propriétés pour ajouter des informations supplémentaires au nouveau modèle d'équipement
Définition d'un nom pour le nouveau modèle d'équipement
Utilisez la zone de texte Nom du modèle pour définir le nom du modèle d'équipement.
Par défaut, cette zone de texte inclut le nom de l'équipement de terrain sélectionné.
Vous pouvez soit saisir un nom au choix dans cette zone de texte, soit cliquer sur le bouton ... afin
de sélectionner et de remplacer l'un des modèles d'équipements figurant dans les listes
disponibles.
EIO0000000069 02/2018
803
Gestion des modèles d'équipement
Sélection de la bibliothèque de modèles
Pour sélectionner l'une des bibliothèques de modèles précédemment installées ou créées dans
laquelle vous souhaitez stocker votre nouveau modèle d'équipement, procédez comme suit :
Étape
Action
1
Dans la boîte de dialogue Enregistrer en tant que modèle, cliquez sur le bouton ... jouxtant la zone
de texte Bibliothèque de modèles.
Résultat : la boîte de dialogue Sélectionner la bibliothèque de modèles apparaît.
2
La boîte de dialogue Sélectionner la bibliothèque de modèles affiche toutes les bibliothèques de
modèles qui ont été sélectionnées pour le projet en cours ou qui ont été créées. Les bibliothèques
de modèles non protégées ne sont pas affichées.
Pour ajouter le nouveau modèle d'équipement à l'une de ces bibliothèques de modèles,
sélectionnez l'entrée adéquate et cliquez sur OK.
Sélection des blocs fonction
Pour sélectionner les instances de bloc fonction à inclure dans le modèle d'équipement, procédez
comme suit :
Étape
Action
1
Dans la boîte de dialogue Enregistrer en tant que modèle, cliquez sur le bouton ... à droite de la
zone de texte Blocs fonctionnels.
Résultat : la boîte de dialogue Sélectionner les blocs fonction apparaît.
La boîte de dialogue Sélectionner un bloc fonction affiche toutes les instances de bloc fonction
contenus dans la logique d'équipement du champ appareil (voir page 799).
2
Cochez la case en regard d'un bloc fonctionnel individuel pour sélectionner cette option dans le
modèle d'équipement.
Sinon, cochez la case d'un nœud racine pour sélectionner tous les éléments situés sous ce nœud.
3
Cliquez sur le bouton OK.
Sélection des visualisations
Pour sélectionner les visualisations à inclure dans l'équipement de terrain, procédez comme suit :
Étape
804
Action
1
Dans la boîte de dialogue Enregistrer en tant que modèle, cliquez sur le bouton ... à droite de la
zone de texte Visualisations.
Résultat : la boîte de dialogue Sélectionner les visualisations apparaît.
La boîte de dialogue Sélectionner les visualisations affiche les visualisations liées à l'équipement
de terrain ou à un des blocs fonction sélectionnés.
2
Cochez la case en regard d'une visualisation individuelle pour sélectionner cette option dans le
modèle d'équipement.
Sinon, cochez la case d'un nœud racine pour sélectionner tous les éléments situés sous ce nœud.
3
Cliquez sur le bouton OK.
EIO0000000069 02/2018
Gestion des modèles d'équipement
Ajout d'Informations supplémentaires au nouveau modèle d'équipement
Pour ajouter d'autres informations au nouveau modèle d'équipement, cliquez sur le bouton
Properties.... La boîte de dialogue Propriétés s'ouvre. Vous pouvez y saisir des informations
complémentaires sur modèle d'équipement. Du fait que la boîte de dialogue est identique pour les
modèles d'équipements et les bibliothèques de modèles, reportez-vous à la description indiquée
dans le chapitre Ajout d'informations supplémentaires aux modèles ou aux bibliothèques de
modèles (voir page 786).
EIO0000000069 02/2018
805
Gestion des modèles d'équipement
806
EIO0000000069 02/2018
SoMachine
Gestion des modèles de fonction
EIO0000000069 02/2018
Chapitre 34
Gestion des modèles de fonction
Gestion des modèles de fonction
EIO0000000069 02/2018
807
Gestion des modèles de fonction
Sous-chapitre 34.1
Gestion des modèles de fonctions
Gestion des modèles de fonctions
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
808
Page
Informations sur les modèles de fonctions
809
Ajout de fonctions à partir d'un modèle
810
Fonctions d'application à utiliser comme base lors de la création de modèles de fonctions
817
Procédure de création d'un modèle de fonction
820
EIO0000000069 02/2018
Gestion des modèles de fonction
Informations sur les modèles de fonctions
Contenu des modèles de fonctions
Les modèles de fonctions représentent le contrôle dédié et la fonctionnalité de visualisation
associés à une fonction application.
Les modèles de fonctions peuvent comprendre les éléments suivants :
 Un ou plusieurs programmes IEC
 Un ou plusieurs équipements de terrain ou modules d'E/S utilisés par la fonction d'application
 Une ou plusieurs visualisations permettant de visualiser la fonction d'application
 Une ou plusieurs listes de variables globales
 Une ou plusieurs variables globales pouvant être partagées avec d'autres fonctions
d'application
 Une ou plusieurs traces
 Un ou plusieurs tableaux CAM
 Une ou plusieurs variables d'E/S à mapper à une voie d'E/S
 Un ou plusieurs paramètres de modèle
Utilisation des modèles de fonctions
Les bibliothèques de modèles contiennent des modèles de fonctions prêts à l'emploi. Chaque
bibliothèque de modèles comprend la définition de plusieurs modèles de fonctions ayant une base
commune (tous les modèles associés aux applications d'emballage, par exemple).
Vous pouvez les sélectionner et les adapter facilement à vos différents projets SoMachine afin de
créer des fonctions d'application prêtes à l'emploi.
Création de modèles de fonctions
Pour réutiliser dans un autre projet SoMachine une fonction d'application déjà créée, vous pouvez
enregistrer celle-ci sous la forme d'un modèle de fonction.
Lorsque vous enregistrez le modèle de fonction, choisissez la bibliothèque de modèles dans
laquelle vous souhaitez le stocker.
Versions des modèles de fonctions
Lors de la création d'un modèle de fonction, le système vérifie s'il existe une description de
l'équipement a créer. Si ce n'est pas le cas, l'équipement est automatiquement mis à jour vers la
dernière version disponible.
EIO0000000069 02/2018
809
Gestion des modèles de fonction
Ajout de fonctions à partir d'un modèle
Procédure
SoMachine offre deux façons d'ajouter une fonction à partir d'un modèle de fonction :
Pour ajouter une fonction d'application à partir d'un modèle de fonction via une opération Glisserdéplacer, procédez comme suit :
Etape
Action
1
Ouvrez la vue Macros du Catalogue de logiques.
2
Sélectionnez un modèle de fonction dans la vue Macros, faites-le glisser vers l'arborescence
Applications, puis déposez-le sur le nœud Application approprié ou dans un dossier situé sous
le nœud Application.
Remarque : les nœuds appropriés sont mis en surbrillance par SoMachine.
Résultat : la boîte de dialogue Ajouter une fonction à partir du modèle s'ouvre.
Pour ajouter une fonction d'application à partir d'un modèle de fonction via un menu contextuel,
procédez comme suit :
Etape
810
Action
1
Ouvrez l'arborescence Applications.
2
Effectuez un clic droit sur un nœud Application ou un dossier situé sous le nœud Application,
puis exécutez la commande Ajouter une fonction à partir du modèle dans le menu contextuel.
Résultat : la boîte de dialogue Ajouter une fonction à partir du modèle s'affiche.
EIO0000000069 02/2018
Gestion des modèles de fonction
Boîte de dialogue Ajouter une fonction à partir du modèle
La boîte de dialogue Ajouter une fonction à partir du modèle fournit les éléments suivants pour
configurer votre fonction :
EIO0000000069 02/2018
811
Gestion des modèles de fonction
Elément
Description
Zone de texte Nom de fonction
Saisissez un nom pour le nouveau dossier de cette application et les
éléments qu'il contient.
Modèle de fonction
Cliquez sur le bouton ... et sélectionnez un modèle de fonction dans la
boîte de dialogue Sélectionner le modèle de fonction.
Table Equipements d'E/S
Contient le nom du futur équipement de terrain. Vous ne pouvez pas
modifier ce nom.
Type d'équipement
Indique le type de l'équipement de terrain. Vous ne pouvez pas
modifier cette cellule.
Type de bus de terrain
Indique le type de bus de terrain de l'équipement de terrain. Vous ne
pouvez pas modifier cette cellule.
Maître
Contient le maître du bus de terrain auquel l'équipement de terrain est
connecté. S'il y a plusieurs maîtres, vous pouvez en sélectionner un
dans la liste.
Adresse
Initialement vide. Pour les équipements de terrain sur des bus de
terrain qui nécessitent des adresses numériques (ligne série Modbus
et CANopen), cliquez sur le bouton ... à droite du champ et attribuezleur l'adresse souhaitée.
Table Mappage d'E/S
Répertorie les variables d'E/S qui font partie du modèle de fonction.
Elle vous permet de les mapper aux voies d'E/S des équipements et
modules existants.
Nom
Contient le nom de la variable d'E/S qui doit être mappée à une voie
d'E/S.
Type de données
Indique le type de données de la voie d'E/S à laquelle la variable d'E/S
était initialement mappée.
Mappage
Cliquez sur le bouton ... pour ouvrir la boîte de dialogue Sélectionner
le mappage d'E/S. Elle vous permet de sélectionner une voie d'E/S à
laquelle vous pouvez mapper la variable sélectionnée.
Une fois que la variable a été mappée à une voie d'E/S, ce champ
Mappage contient l'adresse d'entrée ou de sortie de la voie d'E/S à
laquelle la variable est mappée.
Description
Contient une description de la variable d'E/S.
Table Paramètres
812
–
Nom de l'équipement
Répertorie les paramètres de modèle inclus dans le modèle de
fonction.
Objet
Indique le nom de la GVL ou du programme où la variable est définie.
Vous ne pouvez pas modifier ce champ.
Nom
Contient le nom de la variable. Vous ne pouvez pas modifier cette
cellule.
Type de données
Indique le type de données de la variable. Vous ne pouvez pas
modifier cette cellule.
EIO0000000069 02/2018
Gestion des modèles de fonction
Elément
Description
Default
Indique la valeur par défaut de la variable. Il s'agit de la valeur initiale
de la variable au moment où le modèle a été créé. Vous ne pouvez pas
modifier cette cellule.
Nouvelle valeur
Modifiez cette cellule si vous souhaitez attribuer une nouvelle valeur à
la variable. Si vous laissez cette cellule vide, la valeur Default est
utilisée pour cette variable.
Entrez une valeur valide pour le type de donnée spécifié.
Description
Contient une description de la variable.
Bouton OK
Confirmez vos paramètres en cliquant sur le bouton OK.
Résultat : SoMachine vérifie que les paramètres sont corrects et
insère la nouvelle fonction d'application en tant que nœud distinct sous
le nœud Application ou affiche un message de détection d'erreur.
Boîte de dialogue Sélectionner le mappage d'E/S
La boîte de dialogue Sélectionner le mappage d'E/S permet de mapper à une voie d'E/S une
variable sélectionnée dans la boîte de dialogue Ajouter une fonction à partir du modèle.
Elle répertorie les voies d'E/S disponibles dans une structure d'arborescence similaire à
l'arborescence Equipements. Le nœud racine est le contrôleur. Le système affiche uniquement les
voies d'E/S dont le type de données correspond à celui de la nouvelle variable.
2 types de données sont compatibles s'ils ont des noms de type identiques ou s'il s'agit de types
de données IEC élémentaires de même taille.
Exemple :
UINT --> INT autorisé
UDINT --> INT non autorisé
EIO0000000069 02/2018
813
Gestion des modèles de fonction
Affichez les sous-nœuds en cliquant sur les signes plus.
La boîte de dialogue Sélectionner le mappage d'E/S contient les colonnes suivantes :
814
Colonne
Description
Voie
Contient la structure d'arborescence. Chaque équipement est représenté par le
nom d'équipement et l'icône d'équipement. Chaque voie d'E/S est représentée
par le nom de voie.
Adresse
Contient l'adresse d'entrée/sortie qui correspond à la voie d'E/S.
Mappage
Contient la variable d'E/S qui est actuellement mappée à la voie d'E/S.
Description
Contient la description de la voie d'E/S.
EIO0000000069 02/2018
Gestion des modèles de fonction
Mettez en œuvre les pratiques suivantes pour mapper des variables aux voies d'E/S :
 Mappez aux voies d'E/S toutes les variables fournies par le modèle de fonction.
 Vous pouvez mapper une variable d'E/S d'un modèle de fonction à une voie d'E/S qui comporte
déjà un mappage. Le mappage existant est remplacé.
 Tous les mappages qui conduisent à plusieurs attributions de variables sur la même voie d'E/S
ne sont pas autorisés.
Objets créés
Le modèle de fonction crée les objets suivants dans votre projet :
Objet
Description
Dossier racine
Un dossier est créé sous le nœud Application de la vue Equipements ; son nom dépend
de celui défini dans la zone de texte Nom de la fonction.
Equipements de
terrain
Les équipements de terrain inclus dans le modèle de fonction sont créés en utilisant des
noms qui respectent les règles de nommage et sont connectés au maître du bus de
terrain. Le mappage des E/S est ajusté automatiquement si nécessaire.
Visualisations
Les visualisations qui sont incluses dans le modèle de fonction sont créées sous le
dossier racine en utilisant des noms qui respectent les règles de nommage. Les
propriétés de la visualisation sont ajustées automatiquement.
Programmes
Les programmes qui sont inclus dans le modèle de fonction sont créés sous le dossier
racine en utilisant des noms qui respectent les règles de nommage. Les noms de ces
objets dans le programme faisant partie du modèle de fonction sont ajustés
automatiquement.
Suivis
Les suivis qui sont inclus dans le modèle de fonction sont créés sous le dossier racine
en utilisant des noms qui respectent les règles de nommage et peuvent être utilisés
pour suivre des variables appartenant à la fonction d'application.
Tables CAM
Les tables CAM qui sont incluses dans le modèle de fonction sont créées sous le
dossier racine en utilisant des noms qui respectent les règles de nommage. Elles sont
nécessaires uniquement si la fonction d'application comprend des équipements
SoftMotion.
Configuration de
tâche
La configuration de tâche est ajustée selon les besoins par le modèle de fonction.
Listes de variables Les listes de variables globales qui sont incluses dans le modèle de fonction sont
globales
créées sous le dossier racine en utilisant des noms qui respectent les règles de
nommage.
Variables externes Les variables globales dont les listes n'appartiennent pas au modèle de fonction sont
restaurées dans leur liste d'origine comme suit :
 S'il n'existe aucune liste de variables globales portant le nom d'origine sous
l'application, elle est créée automatiquement.
 S'il n'existe aucune variable globale portant le nom d'origine dans cette liste de
variables globales, elle est créée automatiquement.
Si le type de variable globale est incorrect, SoMachine génère un message de détection
d'erreur.
EIO0000000069 02/2018
815
Gestion des modèles de fonction
Objet
Description
Variables
persistantes
Les variables persistantes sont restaurées dans la liste des variables correspondante
de l'application, comme suit :
 S'il n'existe aucune liste de variables persistantes sous l'application, elle est créée
automatiquement avec son nom d'origine.
 S'il n'existe aucune variable portant le nom d'origine dans la liste de variables
persistantes, elle est créée automatiquement.
Si le type de variable persistante est incorrect, SoMachine génère un message.
Tous les objets créés avec l'instanciation du modèle de fonction sont répertoriés dans le volet
Messages.
Nommage des objets
Pour éviter les conflits de nommage si vous instanciez le même modèle de fonction plusieurs fois
sur le même équipement de contrôleur, les conventions de nommage suivantes sont appliquées
aux fonctions d'application et aux objets associés :
Si le nom de l'objet d'origine...
Alors…
Cas 1 :
contient le nom de la fonction d'application,
cette partie de l'objet est remplacée par le nom de la
nouvelle fonction d'application créée.
Exemple :
La fonction d'application d'origine du modèle Axis
contient un programme Axis_Init.
Si une fonction d'application Axis1 est créée avec
ce modèle, le nouveau programme est nommé
Axis1_Init.
Cas 2 :
ne contient pas le nom de la fonction d'application,
le nom de la nouvelle fonction d'application et un trait
de soulignement sont insérés dans le nom d'origine
pour donner un nouveau nom unique.
Exemple :
La fonction d'application d'origine Axis contient un
programme InitProg.
Si une fonction d'application Axis1 est créée avec
ce modèle de fonction, le nouveau programme est
nommé Axis1_InitProg.
NOTE : utilisez plutôt des noms courts pour les fonctions d'application, afin qu'ils soient affichés
en entier.
816
EIO0000000069 02/2018
Gestion des modèles de fonction
Fonctions d'application à utiliser comme base lors de la création de modèles de
fonctions
Présentation
Les paragraphes suivants répertorient :
les critères à remplir pour enregistrer, en tant que modèle de fonction, une fonction d'application
avec les équipements de terrain, les modules d'E/S et les visualisations qui lui sont associés ;
 les informations enregistrées dans le modèle de fonction.

Définition des fonctions d'application en tant que modèles de fonctions
Vous pouvez enregistrer des fonctions d'application en tant que modèles de fonctions en
effectuant un clic droit sur un sous-nœud de votre nœud Application dans l'arborescence
Applications. Vous pouvez également créer votre propre modèle dans la vue Macros en
sélectionnant des objets individuels pour votre modèle. Ces 2 procédures sont décrites dans le
chapitre chapitre Procédure de création d'un modèle de fonction (voir page 820).
Conditions préalables relatives à l'application
Les modèles peuvent uniquement être créés à partir d'applications valides. Ici, valide signifie
qu'aucune erreur n'a été détectée durant le processus de compilation.
Conditions préalables à l'enregistrement d'une fonction d'application en tant que modèle de fonction
Pour enregistrer une fonction d'application en tant que modèle de fonction, il est nécessaire
d'exécuter d'abord tous les programmes qu'elle comprend.
Cela signifie qu'ils doivent répondre à l'un des critères suivants :
Ils doivent être ajoutés à une tâche.
 Ils doivent être appelés par un autre programme.

Sinon, ils ne seront pas pris en compte lors de l'exécution de la commande Compiler.
Variables d'E/S dans les modèles de fonctions
Une variable d'E/S est une variable mappée à une voie d'E/S d'un équipement de terrain. Elle est
enregistrée dans le modèle de fonction si les conditions suivantes sont remplies :
 La variable d'E/S est utilisée par tout programme ou toute visualisation figurant dans le modèle
de fonction
 L'équipement de terrain ou module d'E/S auquel la variable d'E/S est mappée ne peut pas être
inclus dans le module de fonction.
Vous pouvez mapper une variable d'E/S qui est enregistrée dans le modèle de fonction à une voie
d'E/S existante lorsqu'une fonction d'application est créée à partir du modèle de fonction
(voir page 811).
La variable d'E/S a une description qui s'affiche dans la boîte de dialogue Ajouter une fonction à
partir du modèle.
EIO0000000069 02/2018
817
Gestion des modèles de fonction
Cette description est créée comme suit :
 Si la variable d'E/S a été nouvellement créée dans l'onglet Mappage d'E/S de l'éditeur
d'équipement (voir page 153), la description est extraite de la description de la voie d'E/S (ceci
ne s'applique que si la description d'origine a été modifiée).
 Si la variable d'E/S fait référence à une variable existante, la description est extraite du
commentaire de cette variable.
Paramètres de modèle
Un paramètre de modèle est une variable dont la valeur initiale est ajustable.
Exemple : lorsqu'un équipement est utilisé via un block fonction de communication, vous devez
attribuer l'adresse de l'équipement à ce bloc fonction en tant que paramètre d'entrée. Pour pouvoir
définir cette adresse, connectez une variable au bloc fonction et définissez-la en tant que
paramètre de modèle.
Une variable peut devenir un paramètre de modèle si les conditions suivantes sont remplies :
La variable est définie dans un programme ou une liste de variables globales figurant dans le
modèle de fonction.
 La variable a un type de données simple (BOOL, tout type de données numérique, tout élément
STRING, les types d'alias basés sur un type de données simple).
 La valeur initiale de la variable est explicitement définie en tant que valeur littérale.

Toutes les variables qui respectent ces conditions peuvent être sélectionnées en tant que
paramètre de modèle lors de l'enregistrement du modèle de fonction (voir page 824).
Si une variable a été sélectionnée en tant que paramètre de modèle, la valeur initiale de cette
variable peut être ajustée lorsqu'une nouvelle fonction d'application est créée à partir du modèle
de fonction (voir page 811).
Objets enregistrés dans les modèles de fonctions
Les objets suivants sont enregistrés dans les modèles de fonctions :
Tous les programmes se trouvant directement dans le dossier de fonction d'application ainsi
que leurs sous-objets
 Toutes les listes de variables globales se trouvant directement dans le dossier de fonction
d'application
 Toutes les visualisations se trouvant directement dans le dossier de fonction d'application
 Tous les tableaux CAM se trouvant directement dans le dossier de fonction d'application
 Toutes les traces se trouvant directement dans le dossier de fonction d'application
 Tous les équipements de terrain et modules d'E/S utilisés par un programme ou une
visualisation figurant dans le modèle de fonction
 Toutes les variables globales dont les listes de variables ne font pas partie du modèle de
fonction mais qui sont utilisées par tout programme ou visualisation appartenant au modèle de
fonction
 Toutes les variables persistantes utilisées par tout programme ou visualisation appartenant au
modèle de fonction

818
EIO0000000069 02/2018
Gestion des modèles de fonction
NOTE : les autres types d'objets ne sont pas enregistrés dans le modèle de fonction (même s'ils
sont enregistrés dans le dossier de la fonction d'application). Utilisez uniquement les blocs fonction
et les types de données stockés dans une bibliothèque.
EIO0000000069 02/2018
819
Gestion des modèles de fonction
Procédure de création d'un modèle de fonction
Présentation
SoMachine offre deux façons de créer un modèle de fonction :
Dans la vue Macros via la boîte de dialogue Créer un modèle.
 Dans l'arborescence Applications via la boîte de dialogue Enregistrer en tant que modèle de
fonction.

Les paragraphes suivants indiquent les étapes à suivre pour enregistrer, en tant que modèles des
fonctions, des fonctions d'application déjà disponibles répondant aux critères spécifiée à la section
Fonctions d'application à utiliser comme base lors de la création de modèles de fonctions.
(voir page 817)
Procédure via la vue Macros
La procédure via la vue Macros vous permet de créer votre propre modèle de fonction en
sélectionnant des éléments par une opération de glisser-déplacer :
Étape
820
Action
1
Dans la vue Macros, développez la section Mon modèle.
2
Sélectionnez le nœud Mon modèle, puis cliquez sur le bouton plus vert.
Résultat : un nouveau nœud ayant le nom par défaut LIB1 est inséré sous le nœud Mon modèle.
EIO0000000069 02/2018
Gestion des modèles de fonction
Étape
Action
3
Sélectionnez le nœud LIB1, puis cliquez sur le bouton plus vert.
Résultat : la boîte de dialogue Créer un modèle s'affiche.
4
Dans l'onglet Modèle de fonction de la boîte de dialogue Créer un modèle, entrez un Nom pour votre
modèle de fonction.
Faites glisser les éléments que vous souhaitez inclure dans le modèle de fonction depuis l'arborescence
Applications vers la zone Eléments de l'onglet Modèle de fonction. les éléments répertoriés dans cette
zone sont insérés dans votre modèle de fonction.
NOTE : Les éléments doivent appartenir à la même application.
EIO0000000069 02/2018
821
Gestion des modèles de fonction
Étape
5
Action
L'onglet Paramètres de la boîte de dialogue Créer un modèle affiche les variables incluses dans les
éléments que vous avez sélectionnés dans l'onglet Modèle de fonction.
Dans la liste de variables, sélectionnez celles que vous souhaitez déclarer comme paramètres de modèle
en cochant la case de la variable ou d'un nœud.
822
6
L'onglet Propriétés de la boîte de dialogue Créer un modèle vous permet d'ajouter des informations
supplémentaires au modèle de fonction.
Vous pouvez insérer un lien dans l'aide en ligne de ce modèle de fonction. La boîte de dialogue vous
permet d'ajouter d'autres informations textuelles pouvant être localisées et vous pouvez ajouter un
graphique illustrant ce modèle de fonction. Pour obtenir une description de ces paramètres, reportezvous au chapitre Ajout d'informations supplémentaires pour les modèles ou les bibliothèques de modèles
(voir page 786).
7
Cliquez sur le bouton Enregistrer le modèle.
EIO0000000069 02/2018
Gestion des modèles de fonction
Procédure via l'arborescence Applications
Pour enregistrer en tant que modèle une fonction d'application déjà disponible, procédez comme
suit :
Étape
Action
1
Effectuez un clic droit sur un sous-dossier de votre nœud Application dans l'arborescence Applications.
2
Sélectionnez la commande Enregistrer en tant que modèle de fonction dans le menu contextuel.
Résultat : SoMachine crée automatiquement l'application. Une fois le processus de création terminé avec
succès, la boîte de dialogue Enregistrer en tant que modèle de fonction s'affiche.
3
Définissez le nouveau modèle de fonction comme indiqué ci-dessous.
4
Cliquez sur OK pour fermer la boîte de dialogue Enregistrer en tant que modèle et créer le modèle de
fonction.
Résultat : SoMachine vérifie si le modèle de fonction peut être créé et affiche un message indiquant que
le modèle de fonction a été créé correctement ou indique les erreurs détectées.
Attribution d'un nom de modèle
Dans la zone de texte Nom du modèle de la boîte de dialogue Enregistrer en tant que modèle de
fonction, définissez le nom sous lequel le modèle de fonction est stocké dans la bibliothèque de
modèles. Par défaut, cette zone de texte contient le nom du dossier où se trouve votre fonction
d'application dans l'arborescence Applications mais vous pouvez adapter ce nom à vos besoins
spécifiques.
EIO0000000069 02/2018
823
Gestion des modèles de fonction
Sélection de la bibliothèque de modèles
Pour sélectionner l'une des bibliothèques de modèles précédemment installées ou créées pour
stocker votre nouveau modèle de fonction, procédez comme suit :
Étape
Action
1
Dans la boîte de dialogue Enregistrer en tant que modèle de fonction, cliquez sur le bouton ... situé juste
à côté de la zone de texte Bibliothèque de modèles.
Résultat : la boîte de dialogue Sélectionner la bibliothèque de modèles apparaît.
2
La boîte de dialogue Sélectionner la bibliothèque de modèles< affiche toutes les bibliothèques de
modèles qui ont été sélectionnées pour le projet en cours ou qui ont été créées. Les bibliothèques
protégées en écriture ne sont pas affichées.
Pour ajouter un nouveau modèle de fonction à l'une de ces bibliothèques de modèles, sélectionnez une
entrée et cliquez sur OK.
Sélection de variables en tant que paramètres
Vous pouvez définir des variables du modèle de fonction en tant que paramètres de modèle
(voir page 818).
Pour définir des variables du modèle de fonction en tant que paramètres de modèle, procédez
comme suit :
Étape
824
Action
1
Dans la boîte de dialogue Enregistrer en tant que modèle de fonction, cliquez sur le bouton ... situé à
droite de la zone de texte Paramètres.
Résultat : la boîte de dialogue Sélectionner des variables comme paramètres s'affiche.
Elle répertorie les variables qui sont définies dans l'application sélectionnée.
2
Cochez la case d'une variable afin de la sélectionner en tant que paramètre de modèle pour le modèle
de fonction.
Vous pouvez également cocher la case d'un nœud racine pour sélectionner tous les éléments présents
sous ce nœud.
3
Cliquez sur le bouton OK.
Résultat : les variables sélectionnées sont répertoriées dans la zone de texte Paramètres de la boîte de
dialogueEnregistrer en tant que modèle de fonction.
Elles sont affichées dans la table Paramètres de la boîte de dialogue Ajouter une fonction à partir du
modèle dans laquelle vous pouvez attribuer de nouvelles valeurs à ces paramètres.
EIO0000000069 02/2018
Gestion des modèles de fonction
Remplacement d'un modèle de fonction existant
Pour remplacer un modèle de fonction existant par la fonction d'application sélectionnée, procédez
comme suit :
Étape
Action
1
Dans la boîte de dialogue Enregistrer en tant que modèle de fonction, cliquez sur le bouton ... situé juste
à côté de la zone de texte Nom du modèle.
2
Recherchez le modèle de fonction déjà disponible à remplacer.
3
Sélectionnez le modèle de fonction à remplacer.
Résultat : le nom de ce modèle de fonction est inséré dans la zone de texte Nom du modèle et le nom de
la bibliothèque de modèles dans laquelle il est stocké est inséré dans la zone de texte Bibliothèque de
modèles.
4
Cliquez sur OK pour fermer la boîte de dialogue Enregistrer en tant que modèle de fonction et remplacer
le modèle de fonction sélectionné par la nouvelle fonction d'application.
Ajout d'Informations supplémentaires au nouveau modèle de fonction
Pour ajouter des informations supplémentaires au nouveau modèle de fonction, cliquez sur le
bouton Propriétés.... La boîte de dialogue Propriétés s'ouvre. Elle vous permet d'entrer des
informations supplémentaires pour le modèle de fonction. Puisque la boîte de dialogue est
identique pour les modèles d'équipement et les bibliothèques de modèles, consultez la description
fournie dans le chapitre Ajout d'informations supplémentaires pour les modèles ou les
bibliothèques de modèles (voir page 786).
EIO0000000069 02/2018
825
Gestion des modèles de fonction
826
EIO0000000069 02/2018
SoMachine
Dépannage et FAQ
EIO0000000069 02/2018
Partie IX
Dépannage et FAQ
Dépannage et FAQ
Contenu de cette partie
Cette partie contient les chapitres suivants :
Chapitre
Titre du chapitre
Page
35
Générique - Dépannage et FAQ
829
36
Accès aux contrôleurs - Dépannage et FAQ
841
EIO0000000069 02/2018
827
Dépannage et FAQ
828
EIO0000000069 02/2018
SoMachine
Générique - Dépannage et FAQ
EIO0000000069 02/2018
Chapitre 35
Générique - Dépannage et FAQ
Générique - Dépannage et FAQ
EIO0000000069 02/2018
829
Générique - Dépannage et FAQ
Sous-chapitre 35.1
Questions les plus fréquentes
Questions les plus fréquentes
Contenu de ce sous-chapitre
Ce sous-chapitre contient les sujets suivants :
Sujet
830
Page
Comment activer et configurer des entrées analogiques dans CANopen ?
831
Pourquoi le SoMachine processus de démarrage est-il parfois plus lent ?
833
Comment gérer les raccourcis et les menus ?
834
Comment augmenter la limite de mémoire disponible pour SoMachine sur les systèmes
d'exploitation 32 bits ?
836
Comment réduire la consommation de mémoire de SoMachine ?
837
Comment améliorer les performances de génération de SoMachine ?
838
Que faire en cas de problèmes avec le Scrutateur d'E/S Modbussur une ligne série ?
839
Que faire si la communication avec ma liste de variables de réseau (NVL) est interrompue ?
840
Que faire si un téléchargement multiple échoue sur un contrôleur IHM ?
840
EIO0000000069 02/2018
Générique - Dépannage et FAQ
Comment activer et configurer des entrées analogiques dans CANopen ?
Présentation
Cette section fournit des instructions sur l'activation des entrées analogiques conformément à la
norme CANopenen définissant le SDO (Service Data Object) 6423 sur la valeur 1.
Procédure
Étape
Action
1
Double-cliquez sur l'entrée de l'équipement CANopen analogique dans la fenêtre Appareils.
2
Dans l'onglet Appareil distant CANopen de l'éditeur, activez l'option Activer réglage expert.
Résultat : des onglets supplémentaires sont affichés et des informations sont insérées dans l'onglet
Service Data Object.
EIO0000000069 02/2018
831
Générique - Dépannage et FAQ
Étape
832
Action
3
Ouvrez l'onglet Service Data Object et cliquez sur le bouton Nouveau....
Résultat : la boîte de dialogue Sélectionner entrée dans répertoire d’objet apparaît.
4
Dans la liste des objets, sélectionnez l'objet 6423, saisissez 1 dans le champ Valeur et cliquez sur OK.
Résultat : la transmission des entrées analogiques sur le bus CANopen est activée. A présent, vous
pouvez configurer les paramètres des valeurs analogiques comme cela est décrit dans le manuel de
votre équipement.
EIO0000000069 02/2018
Générique - Dépannage et FAQ
Pourquoi le SoMachine processus de démarrage est-il parfois plus lent ?
Présentation
Outre la configuration du PC, plusieurs autres conditions peuvent augmenter la durée nécessaire
au démarrage de SoMachine :
Phase d'initialisation
Performances de démarrage
Premier démarrage après
l'installation de SoMachine
Lors du premier démarrage après l'installation de SoMachine, le logiciel crée
son environnement de travail sur le PC. Cette opération n'est effectuée
qu'une seule fois, mais elle ralentit considérablement le premier démarrage.
Premier démarrage après le
redémarrage du PC
Après le redémarrage du PC, la durée de démarrage de SoMachine peut être
plus longue que d'habitude car Microsoft Windows a besoin de temps en
arrière-plan pour lancer les services nécessaires à l'exécution de SoMachine.
Cette opération peut ralentir le processus de démarrage, mais elle est
incontournable.
Démarrages suivants
Les utilisateurs constatent de meilleures performances de démarrage lorsque
le système a été démarré avant sur le PC.
EIO0000000069 02/2018
833
Générique - Dépannage et FAQ
Comment gérer les raccourcis et les menus ?
Présentation
Les menus et raccourcis du logiciel SoMachine dépendent de l'état en cours, c'est-à-dire de la
fenêtre ou de l'éditeur ouvert.
Vous pouvez adapter les menus et raccourcis à vos préférences spécifiques ou charger les menus
et raccourcis SoMachine ou CoDeSys standard comme indiqué dans les sections ci-dessous.
Personnalisations des raccourcis et des menus
Vous pouvez adapter les raccourcis et les menus en fonction de besoins en choisissant Outils →
Personnaliser.
Rétablissement des raccourcis et des menus SoMachine standard
Pour rétablir les raccourcis et les menus SoMachine standard (après les avoir personnalisés),
procédez comme suit :
Etape
Action
1
Exécutez la commande Personnaliser du menu Outils.
Résultat : la boîte de dialogue Personnaliser apparaît.
2
Dans la boîte de dialogue Personnaliser, cliquez sur le bouton Charger....
Résultat : la boîte de dialogue Charger le menu apparaît.
3
Dans la boîte de dialogue Charger le menu, recherchez le dossier Program Files\Schneider
Electric\SoMachine Software\V4.0\LogicBuilder\Settings, sélectionnez le fichier
Standard.opt.menu et cliquez sur Ouvrir.
Résultat : la boîte de dialogue Personnaliser contient à présent les paramètres SoMachine
standard.
4
Pour charger ces paramètres standard dans l'interface utilisateur de SoMachine, cliquez sur
OK.
Adoption des raccourcis et des menus CoDeSys standard
Pour importer les raccourcis et les menus CoDeSys dans l'interface utilisateur SoMachine,
procédez comme suit :
Etape
834
Action
1
Exécutez la commande Personnaliser du menu Outils.
Résultat : la boîte de dialogue Personnaliser apparaît.
2
Dans la boîte de dialogue Personnaliser, cliquez sur le bouton Charger.
Résultat : la boîte de dialogue Charger le menu apparaît.
EIO0000000069 02/2018
Générique - Dépannage et FAQ
Etape
Action
3
Dans la boîte de dialogue Charger le menu, recherchez le dossier ...\Program Files\Schneider
Electric\SoMachine Software\V4.0\LogicBuilder\Settings\OriginalCoDeSys, sélectionnez le
fichier Standard.opt.menu et cliquez sur Ouvrir.
Résultat : la boîte de dialogue Personnaliser contient à présent les paramètres CoDeSys.
4
Pour charger ces paramètres CoDeSys dans l'interface utilisateur de SoMachine, cliquez sur
OK.
NOTE : les menus et raccourcis du logiciel SoMachine diffèrent selon la fenêtre ou l'éditeur
affiché(e).
Développement des menus
Les menus principaux et contextuels de SoMachine peuvent être affichés sous forme réduite ou
sous forme développée. En mode réduit, les commandes désactivées ou rarement utilisées sont
masquées. Pour afficher toutes les options d'un menu, cliquez sur la flèche
menu concerné.
située en cas du
Pour afficher systématiquement les menus sous forme développée, activez l'option Toujours
afficher les menus complets dans la boîte de dialogue Outils → Options → Propriétés.
EIO0000000069 02/2018
835
Générique - Dépannage et FAQ
Comment augmenter la limite de mémoire disponible pour SoMachine sur les
systèmes d'exploitation 32 bits ?
Présentation

Manuels associés