Schneider Electric SoMachine - Fonctions Lecture/Ecriture Modbus et ASCII Mode d'emploi

Ajouter à Mes manuels
61 Des pages
Schneider Electric SoMachine - Fonctions Lecture/Ecriture Modbus et ASCII Mode d'emploi | Fixfr
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

Manuels associés