Schneider Electric SoMachine - Fonctions Lecture/Ecriture Modbus et ASCII Mode d'emploi
Ajouter à Mes manuels61 Des pages
▼
Scroll to page 2
of
61
SoMachine EIO0000000742 09/2016 SoMachine Fonctions Lecture/Ecriture Modbus et ASCII Guide de la bibliothèque PLCCommunication EIO0000000742.10 09/2016 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. Aucune partie de ce document ne peut être reproduite sous quelque forme ou par quelque moyen que ce soit, électronique, mécanique ou photocopie, sans autorisation préalable de Schneider Electric. Toutes les réglementations de sécurité pertinentes locales doivent être observé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. © 2016 Schneider Electric. Tous droits réservés. 2 EIO0000000742 09/2016 Table des matières Consignes de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . A propos de ce manuel. . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 1 Généralités sur les communications. . . . . . . . . . . . . . . . Fonctions de communication des contrôleurs . . . . . . . . . . . . . . . . . . . Paramètres génériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Chapitre 2 Types de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CommunicationErrorCodes : Codes des erreurs de communication . OperationErrorCodes : Codes des erreurs d'opération . . . . . . . . . . . . LinkNumber : Numéros des ports de communication . . . . . . . . . . . . . ObjectType : Types d'objets disponibles pour lecture/écriture . . . . . . ADDRESS : Adresse d'équipement externe . . . . . . . . . . . . . . . . . . . . ADDR_EXT : Extension d'adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . TCP_ADDR_EXT : Extension d'adresse pour équipements TCP . . . . Chapitre 3 Description des blocs fonction . . . . . . . . . . . . . . . . . . . . Annexes ADDM : convertir une chaîne en adresse . . . . . . . . . . . . . . . . . . . . . . . READ_VAR : lire les données sur un équipement Modbus. . . . . . . . . . WRITE_VAR : écrire des données sur un équipement Modbus . . . . . . WRITE_READ_VAR : lire et écrire des registres internes sur un équipement Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SINGLE_WRITE : écrire un registre sur un équipement Modbus . . . . SEND_RECV_MSG : envoyer et/ou recevoir des messages définis par l'utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ......................................... Annexe A Représentation des fonctions et blocs fonction . . . . . . . Différences entre une fonction et un bloc fonction . . . . . . . . . . . . . . . Utilisation d'une fonction ou d'un bloc fonction en langage IL . . . . . . . Utilisation d'une fonction ou d'un bloc fonction en langage ST . . . . . . Glossaire Index EIO0000000742 09/2016 ......................................... ......................................... 5 7 11 12 13 17 18 19 20 21 22 23 24 25 26 32 34 36 39 41 45 47 48 49 53 57 61 3 4 EIO0000000742 09/2016 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. EIO0000000742 09/2016 5 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. 6 EIO0000000742 09/2016 A propos de ce manuel Présentation Objectif du document Ce document décrit la bibliothèque PLCCommunication utilisée par les contrôleurs. Champ d'application Ce document a été actualisé pour le lancement de SoMachine V4.2. 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. Une attention particulière doit être prêtée aux implications des délais de transmission non prévus ou des pannes de la 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. EIO0000000742 09/2016 7 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 : 8 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 EIO0000000742 09/2016 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. EIO0000000742 09/2016 9 10 EIO0000000742 09/2016 SoMachine Généralités sur les communications EIO0000000742 09/2016 Chapitre 1 Généralités sur les communications Généralités sur les communications Introduction Les blocs de fonction de communication du contrôleur se trouvent dans la bibliothèque PLCCommunication. Cette bibliothèque est automatiquement ajoutée au gestionnaire de bibliothèques lors de l'ajout au projet d'un contrôleur avec connectivité Ethernet ou lors de l'ajout d'un gestionnaire Modbus ou ASCII à la ligne série d'un contrôleur. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page Fonctions de communication des contrôleurs 12 Paramètres génériques 13 EIO0000000742 09/2016 11 Généralités sur les communications Fonctions de communication des contrôleurs Introduction Cette section décrit le fonctionnement et la gestion des fonctions de communication des contrôleurs. Ces fonctions facilitent les communications entre des équipements spécifiques. La plupart d'entre elles sont destinées aux echanges Modbus. L'une de ces fonctions (SEND_RECV_MSG) est utilisée par un gestionnaire ASCII afin de gérer l'échange de données entre équipements faisant appel à des protocoles autres que Modbus. NOTE : Les fonctions de communication sont traitées de manière asynchrone par rapport à la tâche applicative qui a appelé la fonction. NOTE : Cette bibliothèque n'est pas prise en charge par l'ATV IMC Drive Controller. NOTE : N'utilisez pas les blocs fonction de la bibliothèque PLCCommunication sur une ligne série avec un scrutateur d'E/S Modbus configuré. Ceci perturbe les échanges du scrutateur d'E/S Modbus. NOTE : Le port Ethernet du contrôleur HMI SCU ne prend pas en charge la communication Modbus. NOTE : Le contrôleur HMI SCU n'autorise pas l'ajout du nœud Gestionnaire ASCII sous le nœud COM1. Blocs fonction disponibles Ce tableau décrit les blocs fonction de communication pouvant être utilisés par les contrôleurs : Fonction Description ADDM (voir page 26) Cette fonction récupère l'adresse de destination d'un équipement externe sous forme de chaîne, puis la convertit en structure ADDRESS. READ_VAR Cette fonction permet de lire des registres ou des bits standard sur un équipement Modbus. WRITE_VAR Cette fonction permet d'écrire des registres ou des bits standard sur un équipement Modbus. WRITE_READ_VAR Cette fonction permet de lire et d'écrire des registres ou des bits standard sur des équipements Modbus. SINGLE_WRITE Cette fonction permet d'écrire un registre unique sur un équipement externe. SEND_RECV_MSG Cette fonction envoie et reçoit des messages définis par l'utilisateur sur des supports sélectionnés, par exemple une ligne série (non prise en charge par les XBT GC, XBT GT, XBT GK et HMI SCU). (voir page 32) (voir page 34) (voir page 36) (voir page 39) (voir page 41) 12 EIO0000000742 09/2016 Généralités sur les communications Paramètres génériques Introduction Cette rubrique décrit la gestion et le fonctionnement des fonctions de communication des contrôleurs, en prenant comme exemple le bloc fonction READ_VAR. (La norme PLCopen définit les règles applicables aux blocs fonction.) NOTE : Ces paramètres sont communs à tous les blocs fonction PLCCommunication (à l'exception d'ADDM). Représentation graphique Les paramètres communs à tous les blocs fonction de la bibliothèque PLCCommunication s'affichent en surbrillance dans le graphique ci-dessous : Paramètres communs Ces paramètres sont partagés par plusieurs blocs fonction de la bibliothèque PLCCommunication : Entrée Type Commentaire Execute BOOL La fonction est exécutée sur le front montant de cette entrée. REMARQUE : lorsque l'entrée xExecute est définie sur TRUE lors du premier cycle de tâche en mode RUN après un redémarrage à froid ou à chaud, le front montant n'est pas détecté. Abort BOOL Abandonne l'opération en cours lors du front montant. Addr ADDRESS Adresse de l'équipement externe ciblé (il peut s'agir de la sortie du bloc fonction ADDM (voir page 26).) Timeout WORD Le timeout de l'échange est un multiple de 100 ms (0 pour l'infini). NOTE : Le paramètre Timeout time est réglé sur 1 s pour le HMI SCU et n'est pas configurable pour les blocs fonction de communication Modbus. REMARQUE : une opération du bloc fonction peut nécessiter plusieurs échanges. Le timeout s'applique à chaque échange entre le contrôleur et le modem. Ainsi, la durée totale d'exécution du bloc fonction peut s'avérer supérieure au timeout. EIO0000000742 09/2016 13 Généralités sur les communications Sortie Type Commentaire Done BOOL Le paramètre Done est défini sur TRUE lorsque la fonction s'est exécutée correctement. Busy BOOL Le paramètre Busy est défini sur TRUE lorsque la fonction est en cours d'exécution. Aborted BOOL Le paramètre Aborted est défini sur TRUE lorsque la fonction est annulée à l'aide de l'entrée Abort. Lorsque la fonction est annulée, CommError contient le code Canceled - 16#02 (échange interrompu à la demande de l'utilisateur). Error BOOL Le paramètre Error est défini sur TRUE lorsque la fonction est arrêtée suite à la détection d'une erreur. Lorsqu'une erreur est détectée, CommError et OperError permettent d'obtenir des informations sur celle-ci. CommError BYTE OperError DWORD Le paramètre CommError contient les codes des erreurs de communication (voir page 18). Le paramètre OperError contient les codes des erreurs d'opération (voir page 19). NOTE : Dès que la sortie Busy est remise à 0, une (et une seule) de ces trois sorties est définie sur 1 : Done Error Aborted Les blocs fonction nécessitent un front montant pour être déclenchés. Le bloc fonction doit d'abord visualiser l'entrée Execute avec la valeur False pour pouvoir détecter le front montant suivant. AVERTISSEMENT COMPORTEMENT IMPREVU DE L'EQUIPEMENT Effectuez toujours le premier appel d'un bloc fonction avec son entrée Execute définie sur FALSE afin que le front montant suivant soit détecté. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. 14 EIO0000000742 09/2016 Généralités sur les communications Exécution de la fonction La fonction est exécutée lors du front montant de l'entrée Execute. La sortie Busy est ensuite définie sur TRUE. La figure ci-dessous présente le comportement d'un bloc fonction lorsque l'opération est exécutée automatiquement (avec ou sans erreurs) : Note 1 : le bit Done ou Error est défini sur TRUE lors d'un cycle de tâche uniquement si Execute a déjà été redéfini sur FALSE à l'issue de l'opération. Annulation d'une fonction La figure ci-dessous présente l'annulation d'une fonction par l'application. Le front montant de l'entrée Abort annule la fonction en cours. En pareils cas, la sortie annulée est définie sur 1 et CommError contient le code Canceled - 16#02 (échange interrompu à la demande de l'utilisateur) : Note 1 : Le bit Abort est défini sur TRUE lors d'un cycle de tâche uniquement si Execute était déjà défini sur FALSE lorsque la demande d'abandon est survenue. EIO0000000742 09/2016 15 Généralités sur les communications 16 EIO0000000742 09/2016 SoMachine Types de données EIO0000000742 09/2016 Chapitre 2 Types de données Types de données Introduction Ce chapitre décrit les types de données utilisés par la bibliothèque PLCCommunication. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page CommunicationErrorCodes : Codes des erreurs de communication 18 OperationErrorCodes : Codes des erreurs d'opération 19 LinkNumber : Numéros des ports de communication 20 ObjectType : Types d'objets disponibles pour lecture/écriture 21 ADDRESS : Adresse d'équipement externe 22 ADDR_EXT : Extension d'adresse 23 TCP_ADDR_EXT : Extension d'adresse pour équipements TCP 24 EIO0000000742 09/2016 17 Types de données CommunicationErrorCodes : Codes des erreurs de communication Description du type énumération Le type énumération CommunicationErrorCodes contient des informations relatives aux diagnostics de communication, telles que les interruptions et les erreurs détectées. Les valeurs stockées sont les suivantes : 18 Enumérateur Valeur (hex.) Description CommunicationOK 00 L'échange est valide. TimedOut 01 L'échange a été interrompu sur expiration du délai. Canceled 02 L'échange a été interrompu à la demande de l'utilisateur (commande Abort). BadAddress 03 Le format d’adresse est incorrect. BadRemoteAddr 04 L'adresse distante est incorrecte. BadMgtTable 05 Le format de la table de gestion est incorrect. BadParameters 06 Les paramètres spécifiques sont incorrects. ProblemSendingRq 07 Un problème est survenu lors de l'envoi de la requête à la destination. RecvBufferTooSmall 09 La taille de la mémoire tampon de réception est insuffisante. SendBufferTooSmall 0A La taille de la mémoire tampon de transmission est insuffisante. SystemRessourceMissing 0B Une ressource du système fait défaut. BadTransactionNb 0C Le numéro de transaction est incorrect. BadLength 0E La longueur est incorrecte. ProtocolSpecificError FE Le code d'erreur d'opération contient un code propre au protocole. Refused FF Le message a été refusé. EIO0000000742 09/2016 Types de données OperationErrorCodes : Codes des erreurs d'opération Description du type énumération Le type énumération OperationErrorCodes contient des codes qui correspondent aux erreurs détectées. 00 Lorsque le code d'erreur de communication est 00 hex (transaction correcte), le type énumération OperationErrorCodes peut renvoyer les valeurs suivantes : Enumérateur Valeur (hex.) Description OperationOK 00 L'échange est valide. NotProcessed_or_Target ResourceMissing 01 La requête n'a pas été traitée. BadResponse 02 La réponse reçue est incorrecte. FF Lorsque le code d'erreur de communication est FF hex (message refusé), le type énumération OperationErrorCodes peut renvoyer les valeurs suivantes : Enumérateur Valeur (hex.) Description NotProcessed_or_Target ResourceMissing 01 Ressource du système cible absente. BadLength 05 La longueur est incorrecte. CommChannelErr 06 La voie de communication est associée à une erreur détectée. BadAddr 07 L'adresse est incorrecte. SystemResourceMissing 0B Une ressource du système fait défaut. TargetCommInactive 0C Une fonction de communication cible n'est pas active. TargetMissing 0D La cible est absente. ChannelNotConfigured 0F La voie n'est pas configurée. FE Lorsque le code d'erreur de communication est FE hex, le type énumération OperationErrorCodes contient le code de détection d'erreur propre au protocole. (Reportez-vous aux codes de détection d'erreur de votre protocole.) EIO0000000742 09/2016 19 Types de données LinkNumber : Numéros des ports de communication Description du type énumération LinkNumber est un type de données énumération qui définit la liste des ports de communication disponibles. Les valeurs stockées sont les suivantes : Enumérateur Valeur (hex.) Description USBConsole 00 port USB non disponible pour les échanges de communication COM1 01 COM 1 série (lien série intégré) COM2 02 COM 2 série EthEmbed 03 Lien Ethernet intégré CANEmbed 04 Lien CANopen intégré COM3 05 COM 3 série Si un module PCI série est installé, son lien est COM 2, quels que soient les emplacements PCI physiques utilisés. Si deux modules PCI sont installés, celui connecté aux emplacements PCI à gauche est COM 2, tandis que celui connecté aux emplacements PCI à droite est COM 3. 20 EIO0000000742 09/2016 Types de données ObjectType : Types d'objets disponibles pour lecture/écriture Description du type énumération Le type de données énumération ObjectType contient les types d'objets accessibles en lecture et/ou écriture. Le tableau ci-dessous donne la liste des valeurs de type de données, les types d'objet correspondants et les codes fonction de la requête Modbus associée à chaque bloc fonction : Fonctions de lecture/écriture et code fonction de requête Modbus associée Enumérateur Valeur (hex.) Type d'objet READ_VAR WRITE_VAR MW 00 Registre de maintien (16 bits) #3 (lecture des registres de sortie) #16 (écriture de #6 (écriture d'un plusieurs seul registre) registres) #23 (écriture-lecture de plusieurs registres) I 01 Sortie numérique (1 bits) #2 (lecture des entrées numériques) — — — Q 02 Bit interne ou sortie numérique (bobine) (1 bit) #1 (lecture des bits de sortie) #15 (écriture de — plusieurs bits de sortie) — IW 03 Registre d'entrée (16 bits) #4 (lecture des registres d'entrée) — — EIO0000000742 09/2016 SINGLE_WRITE — WRITE_READ_VAR 21 Types de données ADDRESS : Adresse d'équipement externe Description de la structure La structure de données ADDRESS contient une adresse d'équipement externe. Les variables stockées sont les suivantes : 22 Variable Type Description _Type BYTE Réservés _CliID BYTE Réservés Rack BYTE Numéro de rack (toujours 0) Module BYTE Numéro de module (toujours 0) Link LinkNumber Numéro du port de communication _ProtId BYTE Réservé (0 pour Modbus) AddrLen BYTE Longueur des variables Unitld et AddrExt (en octets) UnitId BYTE Numéro d'équipement (ex., adresse d'un esclave Modbus) AddrExt ADDR_EXT Contient une extension d'adresse sous la forme d'un tableau ou d'une structure spécifique (voir page 20) (voir page 23) EIO0000000742 09/2016 Types de données ADDR_EXT : Extension d'adresse Description d'union ADDR_EXT est un type de données UNION qui contient une extension d'adresse sous la forme d'un tableau ou d'une structure spécifique pour l'adresse TCP/IP. Les variables stockées sont les suivantes : Variable Type Description as_array ARRAY [0...7] OF BYTE Réservé (ouvert pour adressage de protocole différent) TcpAddr TCP_ADDR_EXT Structure pour les équipements TCP distants EIO0000000742 09/2016 23 Types de données TCP_ADDR_EXT : Extension d'adresse pour équipements TCP Description de la structure TCP_ADDR_EXT est un type de données structure qui contient une extension d'adresse pour des équipements TCP externes. Les variables stockées sont les suivantes : 24 Variable Type A Description BYTE Première valeur dans l'adresse IP A.B.C.D B BYTE Deuxième valeur dans l'adresse IP A.B.C.D C BYTE Troisième valeur dans l'adresse IP A.B.C.D D BYTE Dernière valeur dans l'adresse IP A.B.C.D port WORD numéro de port TCP (Modbus par défaut : 502) EIO0000000742 09/2016 SoMachine Description des blocs fonction EIO0000000742 09/2016 Chapitre 3 Description des blocs fonction Description des blocs fonction Introduction Ce chapitre décrit les blocs fonction de la bibliothèque PLCCommunication. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page ADDM : convertir une chaîne en adresse 26 READ_VAR : lire les données sur un équipement Modbus 32 WRITE_VAR : écrire des données sur un équipement Modbus 34 WRITE_READ_VAR : lire et écrire des registres internes sur un équipement Modbus 36 SINGLE_WRITE : écrire un registre sur un équipement Modbus 39 SEND_RECV_MSG : envoyer et/ou recevoir des messages définis par l'utilisateur 41 EIO0000000742 09/2016 25 Description des blocs fonction ADDM : convertir une chaîne en adresse Description de la fonction Le bloc fonction ADDM convertit une adresse cible représentée sous la forme d'une chaîne, en une structure ADDRESS. Vous pouvez utiliser cette structure ADDRESS comme une entrée dans un bloc fonction de communication. Représentation graphique ADDM - Description des paramètres Entrée/sortie Type Commentaire AddrTable ADDRESS Structure ADDRESS à créer par le bloc fonction. Entrée Type Commentaire Execute BOOL Exécute la fonction lors du front montant. Addr STRING Adresse de type STRING à convertir en type ADDRESS (voir détails ci-dessous). Sortie Type Commentaire Done BOOL Le paramètre Done est défini sur TRUE lorsque la fonction s'est exécutée correctement. NOTE : En cas d'annulation de l'opération avec l'entrée Abort, le paramètre Done n'est pas défini sur 1 (Aborted uniquement). Error BOOL Error est réglé sur TRUE lorsque la fonction s'arrête suite à la détection d'une erreur. Lorsqu'une erreur est détectée, CommError et OperError permettent d'obtenir des informations sur celle-ci. CommError BYTE Le paramètre CommError contient les codes des erreurs de communication (voir page 18). NOTE : Un front montant sur l'entrée Execute lance la conversion et renvoie une mise à jour instantanée de AddrTable. Cependant, lorsqu'une erreur est détectée (c'est-à-dire que la chaîne Addr est incorrecte), le paramètre AddrTable conserve la dernière valeur. 26 EIO0000000742 09/2016 Description des blocs fonction Pour déclencher les blocs fonction, il faut un front montant. Le bloc fonction doit d'abord visualiser l'entrée Execute avec la valeur FALSE pour pouvoir détecter le front montant suivant. AVERTISSEMENT COMPORTEMENT IMPREVU DE L'EQUIPEMENT Effectuez toujours le premier appel d'un bloc fonction avec son entrée Execute définie sur FALSE afin que le front montant suivant soit détecté. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Chaîne Addr pour le format d'adresse ASCII Pour l'adressage ASCII, seul le numéro du port de communication est nécessaire : '<communication port number>' Par exemple, utilisez la chaîne '2' pour envoyer un message défini par l'utilisateur sur la ligne série 2. Le tableau suivant décrit les champs dans la sortie ADDM pour le format d'adresse ASCII : Champ Type Valeur Exemple _Type BYTE Réservé inutilisé _CliID BYTE Réservé Non utilisé Rack BYTE Numéro de rack (toujours 0) 0 Module BYTE Numéro de module (toujours 0) 0 LinkNumber <communication port number> 2 Link (voir page 20) _ProtId BYTE Non utilisé Non utilisé AddrLen BYTE 0 0 UnitId BYTE Non utilisé Inutilisé AddrExt ADDR_EXT Non utilisé Non utilisé Chaîne d'adresse pour le format d'adresse Modbus série Pour l'adressage Modbus série, utilisez le port de communication et l'adresse de l'esclave cible (0 à 247) en les séparant par un point : '<communication port number>.<slave address>' Par exemple, utilisez cette syntaxe pour envoyer un message à l'esclave 8 sur la ligne série 1 : '1.8' EIO0000000742 09/2016 27 Description des blocs fonction La fonction ADDM remplit l'entrée/sortie AddrTable avec les valeurs suivantes : Champ Type Valeur Exemple _Type BYTE Réservé Non utilisé _CliID BYTE Réservé Non utilisé Rack BYTE Numéro de rack (toujours 0) 0 Module BYTE Numéro de module (toujours 0) 0 Link LinkNumber <communication port number> 2 _ProtId BYTE 0 pour Modbus 0 AddrLen BYTE 1 1 UnitID BYTE <slave address> 8 AddrExt ADDR_EXT Non utilisé Non utilisé (voir page 20) Chaîne d'adresse pour le format d'adresse Modbus TCP Adresse d'un esclave Modbus TCP standard Pour le format d'adresse d'un esclave Modbus TCP standard, le numéro du port de communication (3 pour le port Ethernet intégré) et l'adresse IP cible {A.B.C.D} (offset entre accolades) sont nécessaires : '<communication port number>{<IP address A.B.C.D>}' NOTE : Un esclave Modbus TCP standard utilise l'adresse Modbus 255 (la valeur UnitId par défaut). Cependant, en fonction de l'équipement, cette valeur peut varier (par exemple, un Tesys utilise l'adresse Modbus 1). Dans ce cas, ajoutez la valeur UnitId. Le port TCP 502 est utilisé par défaut. Vous pouvez utiliser un port non standard en ajoutant son numéro à l'adresse IP : '<communication port number A.B.C.D>{<IP address>:<port>}' Par exemple, si vous souhaitez envoyer un message à l'adresse IP de l'esclave Modbus TCP 502.3.168.1 avec le port TCP 502 standard, utilisez la chaîne suivante : '3{192.168.1.2}' La fonction ADDM remplit l'entrée/sortie AddrTable avec les valeurs suivantes : Champ Type Valeur Exemple _Type BYTE Réservé Non utilisé _CliID BYTE Réservé Non utilisé Rack BYTE Numéro de rack 0 Module BYTE Numéro de module 0 Link LinkNumber <communication port number> 3 28 (voir page 20) EIO0000000742 09/2016 Description des blocs fonction Champ Type Valeur Exemple _ProtId AddrLen BYTE 0 pour Modbus 0 BYTE Longueur des paramètres UnitID + AdrExt en octets 7 UnitId BYTE Adresse Modbus (255 par défaut) 255 AddrExt TCP_ADDR_EXT A 192 B 168 C 1 D 2 <port> (par défaut = 502) 502 Adresse d'un esclave Modbus série par le biais d'une passerelle Ethernet/Ligne série Vous pouvez également adresser un esclave Modbus par le biais d'une passerelle Ethernet/Ligne série : Vous devez inclure dans la requête le numéro du port de communication, l'adresse IP {A.B.C.D} de la passerelle (offset entre accolades avec ou sans port TCP) et l'adresse de l'esclave Modbus série (paramètre UnitId) : '<communication port number>{<IP address A.B.C.D>}<slave address>' Par exemple, si vous souhaitez envoyer un message à l'adresse 5 de l'esclave Modbus série par le biais d'une passerelle Ethernet/Ligne série à l'adresse IP 3.168.1.2 avec le port TCP 505 standard, utilisez la chaîne suivante :'3{192.168.1.2}5' La fonction ADDM remplit l'entrée/sortie AddrTable avec les valeurs suivantes : Champ Taille Valeur Exemple _Type BYTE Réservé Non utilisé _CliID BYTE Réservé Non utilisé Rack BYTE Numéro de rack 0 Module BYTE Numéro de module 0 Link LinkNumber <communication port number> 3 (voir page 20) EIO0000000742 09/2016 29 Description des blocs fonction Champ Taille Valeur Exemple _ProtId AddrLen BYTE 0 pour Modbus 0 BYTE Longueur des paramètres UnitID + AdrExt en octets 7 UnitId BYTE <Adresse de l'esclave> 5 AddrExt TCP_ADDR_EX T A 192 B 168 C 1 D 2 Numéro de port TCP (par défaut = 502) 502 Exemple Cet exemple présente la déclaration et l'utilisation du paramètre ADDM comme entrée du bloc fonction READ_VAR. La fonction ADDM convertit l'adresse de l'esclave 8 sur la ligne série 1 (chaîne '1.8') en adresse de type ADDRESS : 30 EIO0000000742 09/2016 Description des blocs fonction NOTE : La sortie Busy attribuée à la variable start permet l'exécution en continu de READ_VAR. A l'issue du premier cycle, la variable start doit être définie sur TRUE (par l'utilisateur en ligne ou l'application) pour que la lecture en continu soit lancée. Cet exemple ne détaille pas la gestion des erreurs de communication détectées. EIO0000000742 09/2016 31 Description des blocs fonction READ_VAR : lire les données sur un équipement Modbus Description de la fonction Le bloc fonction READ_VAR permet de lire des données sur un équipement externe utilisant le protocole Modbus. Représentation graphique Description des paramètres spécifiques du bloc fonction READ_VAR 32 Entrée Type Commentaire ObjType ObjectType Le paramètre ObjType indique le type d'objet à lire (MW, I, IW, Q) (voir page 21). FirstObj DINT Le paramètre FirstObj indique la valeur d'index du premier objet à lire. Quantity UINT Le paramètre Quantity indique le nombre d'objets à lire : 1 à 125 : registres (types MW et IW) 1 à 2000 : bits (types I et Q) Buffer POINTER TO BYTE Le paramètre Buffer indique l'adresse du tampon dans lequel les valeurs des objets sont stockées. La définition du pointeur associé nécessite l'utilisation de la fonction standard Addr. (Voir l'exemple ci-dessous.) Le tampon est un tableau qui reçoit les valeurs lues sur l'équipement. Par exemple, la lecture de quatre registres est stockée dans un tableau de quatre mots et la lecture de 32 bits nécessite un tableau de deux mots ou quatre octets, dont chaque bit est défini sur la valeur correspondante de l'équipement distant. EIO0000000742 09/2016 Description des blocs fonction NOTE : si vous exécutez un téléchargement multiple sur des contrôleurs IHM, et si des blocs fonction WRITE_VAR ou READ_VAR sont inclus dans l'application des contrôleurs, ceux-ci peuvent ne pas fonctionner correctement au démarrage à l'issue du téléchargement. L'IHM peut cesser de fonctionner et SoMachine peut perdre la connexion à l'équipement pendant 2 à 3 minutes. Sur les contrôleurs IHM, lorsque des blocs fonction READ_VAR ou WRITE_VAR sont utilisés et si les conditions ci-avant surviennent, redémarrez le contrôleur IHM ou attendez que l'IHM redevienne opérationnelle. Les paramètres d'entrée et de sortie communs à tous les blocs fonction de la bibliothèque PLCCommunication sont décrits dans une autre section (voir page 13). Exemple Ce POU (voir page 59) permet la lecture des registres internes 1 et 2 (MW1 et MW2) de l'esclave Modbus associé à l'adresse 8 sur la ligne série 1. La figure ci-dessous illustre la déclaration et l'utilisation de la fonction READ_VAR : NOTE : La sortie Busy attribuée à la variable start permet l'exécution en continu de ADDM et de READ_VAR. A l'issue du premier cycle, la variable start doit être définie sur TRUE (en ligne par l'utilisateur ou par l'application) pour lancer la lecture en continu. Cet exemple ne détaille pas la gestion des erreurs d'échange. EIO0000000742 09/2016 33 Description des blocs fonction WRITE_VAR : écrire des données sur un équipement Modbus Description de la fonction Le bloc fonction WRITE_VAR permet d'écrire des objets sur un équipement externe utilisant le protocole Modbus. Représentation graphique Description des paramètres spécifiques du bloc fonction WRITE_VAR Entrée Type ObjType Commentaire ObjectType ObjType décrit le ou les types d'objet à écrire (MW, Q) (voir page 21). FirstObj DINT Le paramètre FirstObj indique l'index du premier objet à écrire. Quantity UINT Le paramètre Quantity indique le nombre d'objets à lire : 1 à 123 : registres (type MW) 1 à 1968 : bits (type Q) Buffer POINTER TO BYTE Le paramètre Buffer indique l'adresse du tampon dans lequel les valeurs des objets sont stockées. Utilisez la fonction standard Addr pour définir le pointeur associé. (Voir l'exemple ci-dessous.) Le tampon est un tableau qui reçoit les valeurs écrites sur l'équipement. Par exemple, les valeurs écrites de quatre registres sont stockées dans un tableau de quatre mots et les valeurs écrites de 32 bits nécessitent un tableau de deux mots ou quatre octets, dont chaque bit est défini sur la valeur correspondante. NOTE : si vous exécutez un téléchargement multiple sur des contrôleurs IHM, et si des blocs fonction WRITE_VAR ou READ_VAR sont inclus dans l'application contrôleur, ceux-ci peuvent ne pas fonctionner correctement au démarrage à l'issue du téléchargement. L'IHM peut cesser de fonctionner et SoMachine peut perdre la connexion à l'équipement pendant 2 à 3 minutes. Sur les contrôleurs IHM, lorsque des blocs fonction READ_VAR ou WRITE_VAR sont utilisés et si les conditions ci-avant surviennent, redémarrez le contrôleur IHM ou attendez que l'IHM redevienne opérationnelle. 34 EIO0000000742 09/2016 Description des blocs fonction Les paramètres d'entrée et de sortie communs à tous les blocs fonction de la bibliothèque PLCCommunication sont décrits dans une autre section (voir page 13). AVERTISSEMENT INCOMPATIBILITE DES DONNEES ECHANGEES Vérifiez que les données échangées sont compatibles car les alignements de structures de données ne sont pas identiques pour tous les équipements. Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels. Exemple Ce POU permet d'écrire dans les sorties numériques/bits internes 0 à 9 (Q0 à Q9) d'un esclave Modbus à l'adresse 8 sur la ligne série 1 : NOTE : La sortie Busy attribuée à la variable start permet l'exécution en continu de ADDM et de WRITE_VAR. A l'issue du premier cycle, la variable start doit être définie sur TRUE (en ligne par l'utilisateur ou l'application) pour lancer la lecture/écriture en continu. Cet exemple ne détaille pas la gestion des erreurs d'échange. EIO0000000742 09/2016 35 Description des blocs fonction WRITE_READ_VAR : lire et écrire des registres internes sur un équipement Modbus Description de la fonction Cette fonction permet de lire et d'écrire des registres internes (de type MW uniquement) sur un équipement externe utilisant le protocole Modbus. Ces opérations de lecture et d'écriture s'effectuent au cours d'une transaction unique. L'opération d'écriture est exécutée en premier. La fonction WRITE_READ_VAR peut ensuite : écrire des registres internes consécutifs et les consulter immédiatement pour vérifier leurs valeurs ; écrire des registres internes consécutifs et en lire d'autres en une seule requête. Représentation graphique WRITE_READ_VAR - Description des paramètres Entrées Type Commentaire ObjType ObjectType Le paramètre ObjType indique le type d'objet à écrire et à lire (MW uniquement). FirstWriteObj DINT Le paramètre FirstWriteObj indique la valeur d'index du premier objet à écrire. WriteQuantity UINT Le paramètre WriteQuantity indique le nombre d'objets à écrire : 1 à 121 : registres (type MW) WriteBuffer POINTER TO BYTE Le paramètre WriteBuffer indique l'adresse du tampon dans lequel les valeurs des objets sont stockées. Utilisez la fonction standard Addr pour définir le pointeur associé. (Voir l'exemple ci-dessous.) Le tampon est un tableau qui reçoit les valeurs écrites sur l'équipement. 36 (voir page 21) EIO0000000742 09/2016 Description des blocs fonction Entrées Type Commentaire FirstReadObj DINT Le paramètre ReadFirstObj indique la valeur d'index du premier objet à lire. ReadQuantity UINT Le paramètre ReadQuantity indique le nombre d'objets à lire : 1 à 125 : registres (type MW) ReadBuffer POINTER TO BYTE Le paramètre ReadBuffer indique l'adresse du tampon dans lequel les valeurs des objets sont stockées. Utilisez la fonction standard Addr pour définir le pointeur associé. (Voir l'exemple ci-dessous.) Le tampon est un tableau qui reçoit les valeurs lues sur l'équipement. Les paramètres d'entrée et de sortie communs à tous les blocs fonction de la bibliothèque PLCCommunication sont décrits dans une autre section (voir page 13). EIO0000000742 09/2016 37 Description des blocs fonction Exemple Ce POU permet d'écrire dans les registres internes 1 et 2 (MW1 et MW2) et de lire les registres internes 3 et 4 (MW3 et MW4) d'un esclave Modbus à l'adresse 8 sur la ligne série 1 : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 PROGRAM Write_Read_Var_Example VAR SL1_Slave8_addr: ADDRESS; Address_Computation: ADDM; SendBuffer : ARRAY [0..1] OF WORD; ReceiveBuffer : ARRAY [0..1] OF WORD; start: BOOL; Value_to_write_to_MW1_slave8: WORD; Value_to_write_to_MW2_slave8: WORD; MW3_from_slave8: WORD; MW4_from_slave8: WORD; Write_MW1_MW2_and_Read_MW3_MW4_on_slave_8_on_SL1: WRITE_READ_VAR; END_VAR 1 2 MOVE Value_to_write_to_MW1_slave8 SendBuffer[0] MOVE Value_to_write_to_MW2_slave8 3 SL1_Slave8_addr start ‘1.8’ 4 SendBuffer[1] Address_Computation ADDM AddrTable Done Execute Error Addr CommError MOVE ReceiveBuffer[0] SL1_Slave8_addr 5 0bjecttype.MW 1 2 ADR (SendBuffer) 3 2 ADR (ReceiveBuffer) Write_MW1_MW2_and_Read_ MW3_MW4_on_slave_8_on_SL1 WRITE READ VAR Execute Done Abort Busy Addr Aborted Timeout Error 0bjType CommError FirstWrite0bj OperError WriteQuantity WriteBuffer FirstRead0bj ReadQuantity ReadBuffer start MW3_from_slave MOVE 5 ReceiveBuffer[1] MW4_from_slave NOTE : La sortie Busy attribuée à la variable start permet l'exécution en continu de ADDM et de WRITE_READ_VAR. A l'issue du premier cycle, la variable start doit être définie sur TRUE (par l'utilisateur en ligne ou l'application) pour que la lecture/écriture en continu soit lancée. Cet exemple ne détaille pas la gestion des erreurs d'échange. 38 EIO0000000742 09/2016 Description des blocs fonction SINGLE_WRITE : écrire un registre sur un équipement Modbus Description de la fonction Le bloc fonction SINGLE_WRITE permet d'écrire un registre interne unique sur un équipement Modbus externe. Représentation graphique SINGLE_WRITE - Description des paramètres Entrée Type Commentaire ObjType ObjectType ObjType décrit le type d'objet(s) à écrire (MW uniquement) (voir page 21). FirstObject DINT FirstObject indique la valeur d'index de l'objet à écrire. theWord WORD Cette entrée contient la valeur à écrire. Les paramètres d'entrée et de sortie communs à tous les blocs fonction de la bibliothèque PLCCommunication sont décrits dans une autre section (voir page 13). EIO0000000742 09/2016 39 Description des blocs fonction Exemple Ce POU permet d'écrire la valeur 12 dans le registre interne 1 (MW1) d'un esclave Modbus à l'adresse 8 sur la ligne série 1 : NOTE : La sortie Busy attribuée à la variable start permet l'exécution en continu de ADDM et de SINGLE_WRITE. A l'issue du premier cycle, la variable start doit être définie sur TRUE (par l'utilisateur en ligne ou par l'application) pour que la lecture/écriture en continu soit lancée. Cet exemple ne détaille pas la gestion des erreurs d'échange. 40 EIO0000000742 09/2016 Description des blocs fonction SEND_RECV_MSG : envoyer et/ou recevoir des messages définis par l'utilisateur Description de la fonction Le bloc fonction SEND_RECV_MSG permet d'envoyer et de recevoir des messages définis par l'utilisateur. Il envoie un message sur le support sélectionné (une ligne série, par exemple), puis attend une réponse. Vous pouvez également envoyer/recevoir un message sans attendre/envoyer de réponse. Cette fonction doit être utilisée avec un gestionnaire ASCII. Elle peut également être utilisée avec un gestionnaire Modbus si vous souhaitez envoyer une requête qui n'est pas mise en œuvre dans la bibliothèque de communication. Dans ce cas, vous devez créer la requête vous-même. Les XBT GC, XBT GT, XBT GK et HMI-SCU ne prennent pas en charge le bloc fonction SEND_RECV_MSG. Représentation graphique Description des paramètres spécifiques du bloc fonction SEND_RECV_MSG Entrée Type Commentaire QuantityToSend UINT Le paramètre QuantityToSend indique le nombre d'octets à envoyer. Limitation du contrôleur : M238/LMC078 : 252 octets M258/LMC058 : 1050 octets M241/M251 : 252 octets BufferToSend POINTER TO BYTE Le paramètre BufferToSend indique l'adresse du tampon (tableau d'octets) dans lequel le message à envoyer est stocké. La définition du pointeur associé nécessite l'utilisation de la fonction standard ADR. (Voir l'exemple cidessous.) Si elle est définie sur 0, la fonction est configurée uniquement pour la réception. EIO0000000742 09/2016 41 Description des blocs fonction Entrée Type Commentaire SizeRecvBuffer UINT Le paramètre SizeRecvBuffer indique la taille disponible (en octets) du tampon de réception. La taille des données reçues (en octets) est disponible dans la propriété interne de l'instance de bloc fonction (variable interne) : <nom de l'instance>.NbRecvBytes. Limitation du contrôleur : M238/LMC078 : 252 octets M258/LMC058 : 1050 octets M241/M251 : 252 octets BufferToRecv POINTER TO BYTE Le paramètre BufferToRecv indique l'adresse du tampon (tableau d'octets SizeRecvBuffer) dans lequel le message reçu est stocké. La définition du pointeur associé nécessite l'utilisation de la fonction standard ADR. (Voir l'exemple ci-dessous.) Si elle est définie sur 0, la fonction est configurée uniquement pour l'envoi. Pour les opérations d'envoi uniquement, l'échange s'achève (Busy remis à 0) lorsque toutes les données (y compris les possibles caractères de début et de fin) ont été envoyées à la ligne. Pour les opérations d'envoi/réception ou de réception uniquement, le système reçoit des caractères jusqu'à ce que la condition de fin soit remplie. Une fois celle-ci remplie, l'échange s'achève (Busy remis à 0). Les caractères reçus sont alors copiés dans le tampon de réception jusqu'aux caractères sizeRecvBuffer et la taille des données reçues (en octets) est disponible dans la propriété d'instance du bloc fonction (variable interne) : <nom de l'instance>.NbRecvBytes. L'entrée sizeRecvBuffer n'est pas une condition de fin. Les paramètres d'entrée et de sortie communs à tous les blocs fonction de la bibliothèque PLCCommunication sont décrits dans une autre section (voir page 13). 42 EIO0000000742 09/2016 Description des blocs fonction Les conditions de début et de fin des messages définis par l'utilisateur sont configurées dans la boîte de dialogue de configuration du gestionnaire ASCII : NOTE : Il n'y a aucun caractère de début et de fin dans l'exemple ci-dessus. La condition de fin de la trame reçue est un délai d'expiration de 250 ms. EIO0000000742 09/2016 43 Description des blocs fonction Exemple Ce POU ne permet que d'envoyer le message défini par l'utilisateur « hello » sur la ligne série 1 : NOTE : Un front montant sur la variable Start lance la conversion d'une adresse et l'envoi du message. 44 EIO0000000742 09/2016 SoMachine EIO0000000742 09/2016 Annexes EIO0000000742 09/2016 45 46 EIO0000000742 09/2016 SoMachine Représentation des fonctions et blocs fonction EIO0000000742 09/2016 Annexe A Représentation des fonctions et blocs fonction Représentation des fonctions et blocs fonction Présentation Chaque fonction peut être représentée dans les langages suivants : IL : (Instruction List) liste d'instructions ST : (Structured Text) littéral structuré LD : (Ladder Diagram) schéma à contacts FBD : Function Block Diagram (Langage à blocs fonction) CFC : Continuous Function Chart (Diagramme fonctionnel continu) Ce chapitre fournit des exemples de représentations de fonctions et blocs fonction et explique comment les utiliser dans les langages IL et ST. Contenu de ce chapitre Ce chapitre contient les sujets suivants : Sujet Page Différences entre une fonction et un bloc fonction 48 Utilisation d'une fonction ou d'un bloc fonction en langage IL 49 Utilisation d'une fonction ou d'un bloc fonction en langage ST 53 EIO0000000742 09/2016 47 Représentation des fonctions et blocs fonction Différences entre une fonction et un bloc fonction Fonction Une fonction : est une POU (Program Organization Unit ou unité organisationnelle de programme) qui renvoie un résultat immédiat ; est directement appelée par son nom (et non par une instance) ; ne conserve pas son état entre deux appels ; peut être utilisée en tant qu'opérande dans des expressions. Exemples : opérateurs booléens (AND), calculs, conversions (BYTE_TO_INT) Bloc fonction Un bloc fonction : est une POU qui renvoie une ou plusieurs sorties ; doit être appelé par une instance (copie de bloc fonction avec nom et variables dédiées). Chaque instance conserve son état (sorties et variables internes) entre deux appels à partir d'un bloc fonction ou d'un programme. Exemples : temporisateurs, compteurs Dans l'exemple, Timer_ON est une instance du bloc fonction TON : 48 EIO0000000742 09/2016 Représentation des fonctions et blocs fonction Utilisation d'une fonction ou d'un bloc fonction en langage IL Informations générales Cette partie explique comment mettre en œuvre une fonction et un bloc fonction en langage IL. Les fonctions IsFirstMastCycle et SetRTCDrift, ainsi que le bloc fonction TON, sont utilisés à titre d'exemple pour illustrer les mises en œuvre. Utilisation d'une fonction en langage IL La procédure suivante explique comment insérer une fonction en langage IL : Etape Action 1 Ouvrez ou créez un POU en langage IL (Instruction List, ou liste d'instructions). NOTE : La procédure de création d'un POU n'est pas détaillée ici. Pour plus d'informations, reportez-vous à la section Ajout et appel de POU (voir SoMachine, Guide de programmation). 2 Créez les variables nécessaires à la fonction. 3 Si la fonction possède une ou plusieurs entrées, chargez la première entrée en utilisant l'instruction LD. 4 Insérez une nouvelle ligne en dessous et : saisissez le nom de la fonction dans la colonne de l'opérateur (champ de gauche), ou utilisez l'Aide à la saisie pour choisir la fonction (sélectionnez Insérer l'appel de module dans le menu contextuel). 5 Si la fonction a plusieurs entrées et que l'Aide à la saisie est utilisée, le nombre requis de lignes est automatiquement créé avec ??? dans les champs situés à droite. Remplacez les ??? par la valeur ou la variable appropriée en fonction de l'ordre des entrées. 6 Insérez une nouvelle ligne pour stocker le résultat de la fonction dans la variable appropriée : saisissez l'instruction ST dans la colonne de l'opérateur (champ de gauche) et un nom de variable dans le champ situé à droite. Pour illustrer la procédure, utilisons les fonctions IsFirstMastCycle (sans paramètre d'entrée) et SetRTCDrift (avec paramètres d'entrée) représentées graphiquement ci-après : Fonction Représentation graphique sans paramètre d'entrée : IsFirstMastCycle EIO0000000742 09/2016 49 Représentation des fonctions et blocs fonction Fonction Représentation graphique avec paramètres d'entrée : SetRTCDrift En langage IL, le nom de la fonction est utilisé directement dans la colonne de l'opérateur : Fonction Représentation dans l'éditeur IL de POU de SoMachine Exemple IL d'une fonction sans paramètre d'entrée : IsFirstMastCycle 50 EIO0000000742 09/2016 Représentation des fonctions et blocs fonction Fonction Représentation dans l'éditeur IL de POU de SoMachine Exemple IL d'une fonction avec des paramètres d'entrée : SetRTCDrift Utilisation d'un bloc fonction en langage IL La procédure suivante explique comment insérer un bloc fonction en langage IL : Etape Action 1 Ouvrez ou créez un POU en langage IL (Instruction List, ou liste d'instructions). NOTE : La procédure de création d'un POU n'est pas détaillée ici. Pour plus d'informations, reportezvous à la section Ajout et appel de POU (voir SoMachine, Guide de programmation). 2 Créez les variables nécessaires au bloc fonction (y compris le nom de l'instance). 3 L'appel de blocs fonction nécessite l'utilisation d'une instruction CAL : Utilisez l'Aide à la saisie pour sélectionner le bloc fonction (cliquez avec le bouton droit et sélectionnez Insérer l'appel de module dans le menu contextuel). L'instruction CAL et les E/S nécessaires sont automatiquement créées. Chaque paramètre (E/S) est une instruction : Les valeurs des entrées sont définies à l'aide de « := ». Les valeurs des sorties sont définies à l'aide de « => ». 4 Dans le champ CAL de droite, remplacez les ??? par le nom de l'instance. 5 Remplacez les autres ??? par une variable ou une valeur immédiate appropriée. EIO0000000742 09/2016 51 Représentation des fonctions et blocs fonction Pour illustrer la procédure, utilisons le bloc fonction TON représenté graphiquement ci-après : Bloc fonction Représentation graphique TON En langage IL, le nom du bloc fonction est utilisé directement dans la colonne de l'opérateur : Bloc fonction Représentation dans l'éditeur IL de POU de SoMachine TON 52 EIO0000000742 09/2016 Représentation des fonctions et blocs fonction Utilisation d'une fonction ou d'un bloc fonction en langage ST Informations générales Cette partie décrit comment mettre en œuvre une fonction ou un bloc fonction en langage ST. La fonction SetRTCDrift et le bloc fonction TON sont utilisés à titre d'exemple pour illustrer les mises en œuvre. Utilisation d'une fonction en langage ST La procédure suivante explique comment insérer une fonction en langage ST : Etape Action 1 Ouvrez ou créez un POU en langage ST (Structured Text ou Littéral structuré). NOTE : La procédure de création d'un POU n'est pas détaillée ici. Pour plus d'informations, reportez-vous à la section Ajout et appel de POU (voir SoMachine, Guide de programmation). 2 Créez les variables nécessaires à la fonction. 3 Utilisez la syntaxe générale dans l'éditeur ST de POU pour la représentation en langage ST d'une fonction. La syntaxe générale est la suivante : RésultatFonction:= NomFonction(VarEntrée1, VarEntrée2, … VarEntréex); Pour illustrer la procédure, utilisons la fonction SetRTCDrift représentée graphiquement ciaprès : Fonction Représentation graphique SetRTCDrift La représentation en langage ST de cette fonction est la suivante : Fonction Représentation dans l'éditeur ST de POU de SoMachine SetRTCDrift PROGRAM MyProgram_ST VAR myDrift: SINT(-29..29) := 5; myDay: DAY_OF_WEEK := SUNDAY; myHour: HOUR := 12; myMinute: MINUTE; myRTCAdjust: RTCDRIFT_ERROR; END_VAR myRTCAdjust:= SetRTCDrift(myDrift, myDay, myHour, myMinute); EIO0000000742 09/2016 53 Représentation des fonctions et blocs fonction Utilisation d'un bloc fonction en langage ST La procédure suivante explique comment insérer un bloc fonction en langage ST : Etape Action 1 Ouvrez ou créez un POU en langage IL (Instruction List, ou liste d'instructions). NOTE : La procédure de création d'un POU n'est pas détaillée ici. Pour plus d'informations sur l'ajout, la déclaration et l'appel de POU, reportez-vous à la documentation (voir SoMachine, Guide de programmation) associée. 2 Créez les variables d'entrée, les variables de sortie et l'instance requises pour le bloc fonction : Les variables d'entrée sont les paramètres d'entrée requis par le bloc fonction. Les variables de sortie reçoivent la valeur renvoyée par le bloc fonction. 3 Utilisez la syntaxe générale dans l'éditeur ST de POU pour la représentation en langage ST d'un bloc fonction. La syntaxe générale est la suivante : BlocFonction_NomInstance(Entrée1:=VarEntrée1, Entrée2:=VarEntrée2,… Sortie1=>VarSortie1, Sortie2=>VarSortie2,…); Pour illustrer la procédure, utilisons le bloc fonction TON représenté graphiquement ci-après : Bloc fonction Représentation graphique TON 54 EIO0000000742 09/2016 Représentation des fonctions et blocs fonction Le tableau suivant montre plusieurs exemples d'appel de bloc fonction en langage ST : Bloc fonction Représentation dans l'éditeur ST de POU de SoMachine TON EIO0000000742 09/2016 55 Représentation des fonctions et blocs fonction 56 EIO0000000742 09/2016 SoMachine Glossaire EIO0000000742 09/2016 Glossaire A application Programme comprenant des données de configuration, des symboles et de la documentation. B bloc fonction Unité de programmation qui possède 1 ou plusieurs entrées et renvoie 1 ou plusieurs sorties. Les blocs fonction (FBs) sont appelés via une instance (copie du bloc fonction avec un nom et des variables dédiés) et chaque instance a un état persistant (sorties et variables internes) d'un appel au suivant. Exemples : temporisateurs, compteurs bus d'extension Bus de communication électronique entre des modules d'E/S d'extension et un contrôleur. C CFC Acronyme de continuous function chart, diagramme fonctionnel continu. Langage de programmation graphique (extension de la norme IEC 61131-3) basé sur le langage de diagramme à blocs fonction et qui fonctionne comme un diagramme de flux. Toutefois, il n'utilise pas de réseaux et le positionnement libre des éléments graphiques est possible, ce qui permet les boucles de retour. Pour chaque bloc, les entrées se situent à gauche et les sorties à droite. Vous pouvez lier les sorties de blocs aux entrées d'autres blocs pour créer des expressions complexes. configuration Agencement et interconnexions des composants matériels au sein d'un système, ainsi que les paramètres matériels et logiciels qui déterminent les caractéristiques de fonctionnement du système. contrôleur Automatise des processus industriels. On parle également de contrôleur logique programmable (PLC) ou de contrôleur programmable. E E/S Entrée/sortie EIO0000000742 09/2016 57 Glossaire F FB Acronyme de function block, bloc fonction. Mécanisme de programmation commode qui consolide un groupe d'instructions de programmation visant à effectuer une action spécifique et normalisée telle que le contrôle de vitesse, le contrôle d'intervalle ou le comptage. Un bloc fonction peut comprendre des données de configuration, un ensemble de paramètres de fonctionnement interne ou externe et généralement une ou plusieurs entrées et sorties de données. I IL INT Acronyme de instruction list, liste d'instructions. Un programme écrit en langage IL est composé d'instructions textuelles qui sont exécutées séquentiellement par le contrôleur. Chaque instruction comprend un numéro de ligne, un code d'instruction et un opérande (voir la norme IEC 61131-3). Abréviation de integer), nombre entier codé sur 16 bits. L langage en blocs fonctionnels Un des 5 langages de programmation de logique ou de commande pris en charge par la norme IEC 61131-3 pour les systèmes de commande. FBD est un langage de programmation orienté graphique. Il fonctionne avec une liste de réseaux où chaque réseau contient une structure graphique de zones et de lignes de connexion représentant une expression logique ou arithmétique, un appel de bloc fonction ou une instruction de retour. LD Acronyme de ladder diagram, schéma à contacts. Représentation graphique des instructions d'un programme de contrôleur, avec des symboles pour les contacts, les bobines et les blocs dans une série de réseaux exécutés séquentiellement par un contrôleur (voir IEC 61131-3). O octet Type codé sur 8 bits, de 00 à FF au format hexadécimal. P PLCopen Pour plus d'informations, reportez-vous à la section http://www.plcopen.org/. 58 EIO0000000742 09/2016 Glossaire POU Acronyme de program organization unit, unité organisationnelle de programme. Déclaration de variables dans le code source et jeu d'instructions correspondant. Les POUs facilitent la réutilisation modulaire de programmes logiciels, de fonctions et de blocs fonction. Une fois déclarées, les POUs sont réutilisables. programme Composant d'une application constitué de code source compilé qu'il est possible d'installer dans la mémoire d'un contrôleur logique. S ST Acronyme de structured text, texte structuré. Langage composé d'instructions complexes et d'instructions imbriquées (boucles d'itération, exécutions conditionnelles, fonctions). Le langage ST est conforme à la norme IEC 61131-3. V variable Unité de mémoire qui est adressée et modifiée par un programme. EIO0000000742 09/2016 59 Glossaire 60 EIO0000000742 09/2016 SoMachine Index EIO0000000742 09/2016 Index A ADDM bloc fonction, 26 ADDR_EXT types de données, 23 ADDRESS types de données, 22 B bloc fonction ADDM, 26 READ_VAR, 32 SEND_RECV_MSG, 41 SINGLE_WRITE, 39 WRITE_READ_VAR, 36 WRITE_VAR, 34 C CommunicationErrorCodes types de données, 18 F fonctions différences entre une fonction et un bloc fonction, 48 utilisation d'une fonction ou d'un bloc fonction en langage IL, 49 utilisation d'une fonction ou d'un bloc fonction en langage ST, 53 L LinkNumber types de données, 20 EIO0000000742 09/2016 O ObjectType types de données, 21 OperationErrorCodes types de données, 19 R READ_VAR bloc fonction, 32 S SEND_RECV_MSG bloc fonction, 41 SINGLE_WRITE bloc fonction, 39 T TCP_ADDR_EXT types de données, 24 types de données ADDR_EXT, 23 ADDRESS, 22 CommunicationErrorCodes, 18 LinkNumber, 20 ObjectType, 21 OperationErrorCodes, 19 TCP_ADDR_EXT, 24 W WRITE_READ_VAR bloc fonction, 36 WRITE_VAR bloc fonction, 34 61