▼
Scroll to page 2
of
949
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