La transaction MODBUS d'une cellule est déclenchée par la présence des balises de lecture et d'écriture suivantes et une adresse de transaction sur 16 bits :
Pratiquement tous les éléments représentatifs de PLCLink pour une variable peuvent utiliser le mode Modbus disponible de facto dans la plupart des automates.
L'adresse 16 bits pour la transaction Modbus est dans la balise de lecture ou d'écriture :
N'inventez pas d'autre syntaxe, le tag IB ou OB et l'adresse sont indispensable, la liste possible des préfixes est plus bas et le tableau donne la correspondance de l'adresse modbus qui sera effective.
En exploitation le protocole du ModBus/IP passe par le port 502 sur Internet, il faut donc que votre iPhone soit sur le même réseau que l'automate ou que votre routeur dispose d'une règle de routage du port 502 (TCP et UDP) vers votre automate. Ne cherchez pas à modifier le port 502 PLCLink utilise ce port par défaut analogie avec un navigateur qui utilise le port 80 pour vous fournir des pages.
Avec un routage vous pouvez donc accéder de n'importe où à votre automate.
C'est l'usage normal de PLCLink avec les automates type WAGO qui utilisent la notation IEC1131, voir plus bas le table exacte des affectations mémoire et entrée sorties - utilisable presque uniquement avec les WAGO.
L'usage de cette notation est plus simple en Modbus car certaines zones n'ont pas la même adresse en écriture et en lecture
un décalage de 512 (0x0200) est à prévoir par exemple :
QW0 utilise l'adresse modbus 512 = (0x200) en écriture mais 0 (0x0000) en écriture (pas toujours utilisable en ecriture).
C'est l'usage plus délicat car vous devez connaître l'adresse décimale de la transaction ModBus, cette adresse n'est pas nécessairement la même en lecture ou en écriture pour la même variable sur le WAGO. Pour un autre type d'automate l'usage du mode décimal permet d'éviter une translation automatique de la part de PLCLink.
Vous décidez le l'usage d'un WORD ou d'un BIT en ajoutant un point décimal et suivi du numéro de bit concerné.
Le bit suivant est en <IB>12288.1</IB>. Le calcul est le suivant :
Adresse modbus = partie décimale x 16 + partie fractionnaire.
C'est le modèle d'utilisation ModBus le plus universel pour les PLC n'utilisant pas le mode IEC1131. L'adresse est simple 0x1234 et la transaction porte sur un WORD fonction FC3 ou FC16, l'adresse est composée avec un point décimal et la transaction porte sur un bit fonction FC1 ou FC15.
Calcul modbus = partie décimale + partie fractionnaire.
Ce calcul ne semble pas conforme, à vérifier, en cas de doute utilisez le mode décimal.
On ne dispose pas de solution pour la lecture d'un double mot.
L'usage de la notation IEC implique une adresse ModBus associée, exemple :
MW0 fera un transfert mémoire à l'adresse ModBus : 0x3000 soit 12288.
Avec IX, IW et QX, QW l'adresse associée n'est pas la même pour une lecture qu'avec une écriture.
Vous devez composez avec les adresses pour votre automate si besoin. l'usage direct en décimal ou en hexadécimal étant toujours possible.
Les seules adresses IEC utilisables dans PLCLink sont :
Le symbole (MX etc..) avec deux lettres est nécessaire sinon l'adresse décimale est utilisée.
exemple : MW0 sera 12288 mais M0 sera 0 (erreur d'écriture). Ce symbole décide aussi de la
véritable adresse utilisée en fonction du tableau ci-dessus. N'inventez pas d'autres
symboles ils ne seront pas utilisés.
Utiliser la simple notation décimale pour éviter les erreurs, la version suivante utilisera aussi la notation hexadécimale pour les WORD et les BITS. Le support des LONG (D) et des REAL n'est pas encore au programme, vous devez composer avec CodeSys pour obtenir une information exploitable.
La mantisse donne l'adresse effective, MW0 commence donc en mémoire à 12288, MW1 = 12289 etc...
L'écriture MX0.1 est valide pour désigner un bit et une opération associée.
L'écriture MW0.1.2 n'est pas supportée, reportez la valeur de l'unité modbus "1" sur le tag <unitID>
ATTENTION : L'adresse Modbus et l'adresse utilisé par CodeSys peuvent différer, certaines cartes introduisent un décalage dans la nomination des adresses. En Modbus sur Wago la règle de l'adresse fonction de la position physique de la carte semble s'appliquer toujours.
La règle pour obtenir l'adresse exploitable en ModBus sur PLCLink est simple, il faut suivre l'ordre
naturel des cartes de la gauche vers la droite.
Il y a une table pour les entrées et une table pour les sorties.
Le contrôleur commence par placer dans la table d’entrée les données correspondant aux entrées analogiques
et aux bornes spécifiques (comptage rapide, interfaces séries, etc.). Ces données sont placées dans l’ordre
des bornes, en partant du contrôleur, et en allant vers la borne finale. Viennent ensuite les bits
correspondant aux entrées TOR. Ces bits sont concaténés dans le mot suivant.
le dernier mot occupé par les bornes d’entrées analogiques et les bornes spécifiques.
Si le nombre de bits occupés par les entrées TOR dépasse 16 bits,
un nouveau mot est automatiquement commencé.
Le principe est identique pour les sorties.
Extrait descriptif : Adresses exemple
On utilisera la dénomination symbolique QW, MW etc... sans ajouter le %.
Sur le site WAGO :
http://www.wago.com/wagoweb/documentation/app_note/a4707/a470700f.pdf
PLCLink permet l'enregistrement des transactions. On ajoute une balise <modbuslog> dans la room pour toutes les transactions de la room.
Si la balise est incluse au niveau supérieur <rooms> toutes les transactions sont enregistrées.
La balise comporte le nom de fichier de log, c'est du texte avec séparation des champs par une virgule, la
meilleure extension est .csv
Vous devez choisir le séparateur décimal en fonction de l'application de relecture, sur Excel (Fr) utilisez une virgule comme séparateur
pour une intégration facile. Certain tableur nécessite un point décimal.
Vous sélectionnez le séparateur des nombres dans les préférences de l'application.
2012-01-01 17:06:11 +0000;S:000300000006000300010001 2012-01-01 17:06:11 +0000;S:000100000006000300000001 2012-01-01 17:06:11 +0000;S:000200000006000300020001 2012-01-01 17:06:11 +0000;S:000000000006000300000001 2012-01-01 17:06:12 +0000;R:00030000000500030259DC 2012-01-01 17:06:12 +0000;R:0001000000050003020740 2012-01-01 17:06:12 +0000;R:0000000000050003020740 2012-01-01 17:06:12 +0000;R:0002000000050003020030
On trouve la date et l'heure de la transaction et l'indicateur "S" pour une demande et "R" pour la réception.
L'exemple montre 4 demandes successives, le premier mot est une référence : 0x0003, 0x0001, 0x0002, 0x0000
Les demandes de lecture d'un mot 'opération FC3 = 0x03' sur : 0x0001, 0x0000, 0x0002, 0x0000 soit IW1, IW0, IW2, IW0
Les réponses sont préfixés par la même référence que la demande, les réponses n'arrivent pas nécessairement dans l'ordre.
La présence de la balise <modbuslog> avec le nom du fichier de log fait apparaître une case à la fin du tableau. La case active permet
l'affichage du fichier.
Ce fichier est exportable par e-mail ou vers une autre application.
Par défaut c'est le mode utilisé pour les demandes modBus.
Dans une room, chaque item avec un lien modBus réalise une demande de lecture avec un identifiant destiné à la bonne case d'affichage,
certain automates sont peu performants sur ce point, la réponse n'arrive jamais si des demandes multiples sont cumulées.
Les PLC Wago ne posent pas de soucis avec le cumul des demandes asynchrones, extrait d'un log avec 6 demandes en attente sur un Wago 750-841 :
2012-01-03 14:20:09 +0000;S:0BBA00000006000102040001 2012-01-03 14:20:09 +0000;S:0BB800000006000102020001 2012-01-03 14:20:09 +0000;S:0BBD00000006000102070001 2012-01-03 14:20:09 +0000;S:0BBB00000006000102050001 2012-01-03 14:20:09 +0000;S:0BB900000006000102030001 2012-01-03 14:20:09 +0000;S:0BBC00000006000102060001 2012-01-03 14:20:09 +0000;R:0BBD0000000400010100 2012-01-03 14:20:09 +0000;R:0BB80000000400010101 2012-01-03 14:20:09 +0000;R:0BBA0000000400010101 2012-01-03 14:20:09 +0000;R:0BBB0000000400010101 2012-01-03 14:20:09 +0000;R:0BB90000000400010100 2012-01-03 14:20:09 +0000;R:0BBC0000000400010100
Le préfixe indique la correspondance de la réponse avec la demande, sur certains automates Scheider certaines réponses n'arrivent pas. Il faut alors limiter le nombre de demandes dans une <room>, le mode synchrone modBus est spécifiquement implémenté pour résoudre ce problème.
Pour obtenir ce mode il faut placer un tag <mbsynchrone> dans <setting>
Voici un extrait des transactions synchrones sur un automate Télémécanique (Schneider):
2012-01-19 13:14:47 +0000;S:000000000006000300000001 2012-01-19 13:14:47 +0000;R:0000000000050003020000 2012-01-19 13:14:47 +0000;S:000500000006000300050001 2012-01-19 13:14:47 +0000;R:0005000000050003020000 2012-01-19 13:14:48 +0000;S:000300000006000300030001 2012-01-19 13:14:48 +0000;R:0003000000050003020000 2012-01-19 13:14:48 +0000;S:000100000006000300010001 2012-01-19 13:14:49 +0000;R:0001000000050003020000 2012-01-19 13:14:49 +0000;S:000400000006000300040001 2012-01-19 13:14:49 +0000;R:0004000000050003020000 2012-01-19 13:14:49 +0000;S:000200000006000300020001 2012-01-19 13:14:49 +0000;R:0002000000050003020000
Respectivement on trouve des opérations de lecture '03' sur les adresses modBus 0x0000, 0x0005, 0x0003, 0x0001, 0x0004, 0x0002 et les réponses associées. La demande suivante n'est effective qu'après réception de la réponse.
contact : index