Schneider Electric 170ENT11000 Communicateur Ethernet Mode d'emploi
Ajouter à Mes manuels38 Des pages
▼
Scroll to page 2
of
38
Modicon TSX Momentum Communicateur Ethernet Manuel de mise en oeuvre 870 USE 112 01 33000802.00 09/98 Breite: 178 mm Höhe: 216 mm Caractéristiques, illustrations, modifications Nous dégageons toute responsabilité concernant les caractéristiques et illustrations et nous réservons le droit de les modifier en fonction de l’évolution technique. Si vous avez des suggestions d’amélioration ou de modification ou si vous avez rencontrez des erreurs dans la présente documentation, veuillez remplir le formulaire figurant en fin de la documentation. Formation Afin d’utiliser au mieux les systèmes d’automatisation, nous vous conseillons un stage de formation chez Schneider Automation GmbH. Hotline (Numéros d’urgence) Voir en annexe les adresses de nos Services d’assistance technique. Marques déposées Les désignations utilisées dans le présent manuel pour les produits de Schneider Automation GmbH sont en général des marques déposées de Schneider Automation GmbH. Les autres noms de produits utilisés dans le présent manuel sont des marques déposées et/ou des marques des entreprises correspondantes. Microsoft et MS–DOS sont des marques déposées; ”Windows” est la désignation utilisée par la ”Microsoft Corporation” aux Etats Unis et dans d’autres pays. IBM est une marque déposée d’International Business Machines Corporation. Intel est une marque déposée d’Intel Corporation. Copyright Toute exploitation, reproduction ou divulgation, intégrale ou partielle, par quelque procédé que ce soit en utilisant des systèmes électroniques effectuée sans le consentement écrit de Schneider Automation GmbH est illicite. Toute traduction est interdite. © 1998 Schneider Automation GmbH. All rights reserved. Sommaire Sommaire Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Chapitre 1 TSX Momentum Communicateur Ethernet 170 ENT 110 00 . . . . . . . . . . . . . . . . . . 5 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.2 1.3 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.6 1.6.1 1.6.2 1.6.3 Présentation du produit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Présentation physique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Alimentation et contrôle des défauts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Mapping des données aux bornes d’E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Management du débit des données vers les embases d’E/S . . . . . . . . . . . . . . . . . 7 Spécifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Exemple: Données de temps d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Voyants de signalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Connexion au réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Connecteur réseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Etiquettes d’identification du réseau: Addresse global et adresse IP . . . . . . . . . 11 Mettre le communicateur en service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Initialisation et auto–tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Affectation d’une adresse Ethernet IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Identification de l’embase d’E/S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Stockage de l’adresse IP dans le communicateur . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Remplacement d’un communicateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Effacer l’adresse IP stockée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Couper l’alimentation et déconnecter le communicateur . . . . . . . . . . . . . . . . . . . . 15 Installer un nouveau communicateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Chapitre 2 Echanges de données avec le communicateur . . . . . . . . . . . . 17 2.1 2.1.1 2.1.2 2.1.3 20 Breite: 178 mm Höhe: 216 mm Registres Registres Registres Registres d’accès des échanges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 d’état . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 III Sommaire IV Chapitre 3 Programme de tests: Codes source . . . . . . . . . . . . . . . . . . . . . . 25 3.1 3.2 Source: response.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Source: test1.txt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 20 Information Attention: Pour les applications d’automatismes présentant des exigences de sécurité, les prescriptions s’y rapportant doivent être respectées. Les réparations sur les produits ne doivent pour des raisons de sécurité et de conservation des données système documentées, être effectuées que par le constructeur. 20 Breite: 178 mm Höhe: 216 mm 1 Information Terminologie Nota: Ce symbole sert à attirer l’attention de l’utilisateur sur des informations particulièrement importantes. Attention: Ce symbole signale les éventualités d’erreur les plus fréquentes. STOP Avertissement: Ce symbole signale les sources de danger pouvant être suivies de conséquences financières, d’effets nuisibles sur la santé et de toute autre conséquence grave. Expert: Ce symbole souligne des informations particulièrement détaillées, destinées exclusivement aux utilisateurs ayant suivi une formation très spécialisée. Ce type d’information peut être ignorée de l’utilisateur sans que la compréhension du texte et l’utilisation normale du produit en soient de quelque manière affectées. Conseil: Ce symbole est utilisé pour les conseils. Exemple Ce symbole est utilisé pour les exemples. Les figures sont annotées selon l’usage international approuvé par SI (Système International d’Unités). La notation utilisée pour les valeurs numériques est conforme à l’usage international ainsi qu’au SI (Système International d’Unités). Ce format de notation exige un espace entre les centaines et les milliers, et l’utilisation d’une virgule (par exemple: 12 345,67). 2 20 Information Bibliographie Documentations Embases pour TSX Momentum Ethernet TCP/IP Module User Guide (Language Anglais) Modbus Protocol Reference Guide (Language Anglais) 20 Breite: 178 mm Höhe: 216 mm Typ 870 USE 002 01 840 USE 107 00 PI–MBUS–300 3 Information 4 20 TSX Momentum Communicateur Ethernet 170 ENT 110 00 1 Ce communicateur peut être connecté à toute embase TSX Momentum pour créer un module fonctionnel d’embase d’E/S. Il offre la connexion directe au réseau Ethernet, permettant à un hôte Ethernet de communiquer avec les différents équipements branchés aux bornes de l’embase d’E/S. La Figure 1 montre un communicateur typique et une embase d’E/S. Vue de profil Communicateur Vue de face Embase Port de réseau Ethernet Communicateur Embase Figure 1 Communicateur avec embase TSX Momentum Ce chapitre décrit: H H H H H H 20 Breite: 178 mm Höhe: 216 mm la présentation du produit un exemple: temps d’exécution des données les voyants de signalisation la connexion au réseau la mise en service du communicateur le remplacement d’un communicateur 5 Communicateur Ethernet 1.1 Présentation du produit 1.1.1 Fonction Ce communicateur est installé sur toute embase TSX Momentum pour former un module d’E/S complet pouvant communiquer sur le réseau Ethernet. Un automate programmable, ou tout autre équipement hôte sur le réseau, peut alors acquérir les entrées et mettre à jour les sorties du process. Le communicateur communique avec des équipements hôtes utilisant Modbus Application Protocol avec paquets TCP/IP. Il supporte Ethernet II et les trames IEEE 802.3. Pour plus d’informations sur l’utilisation de Modbus Application Protocol avec TCP/IP, se référer au Manuel de mise en oeuvre Ethernet TCP/IP 840 USE 107 00. Plus de détails sur le protocole Modbus se trouvent dans Modbus Protocol Reference Guide, référence PI–MBUS–300. Les informations sur les applications et les câblages des embases d’E/S se trouvent dans le Manuel de mise en oeuvre des Embases TSX Momentum 870 USE 002 01. 1.1.2 Présentation physique Chaque communicateur se connecte au connecteur interne situé sur l’embase. Des clips maintiennent le communicateur en place et peuvent être ôtés avec un simple tournevis lorsque le communicateur doit être remplacé. L’étiquette d’identification se trouvant sur la face avant du communicateur (fournie avec l’embase d’E/S) sert à repérer les connexions des bornes de l’embase. Le communicateur est un équipement ouvert et doit être installé dans une armoire compatible avec le site de l’installation. 1.1.3 Alimentation et contrôle des défauts L’alimentation du communicateur et de l’embase est fournie par l’utilisateur sur le lieu du process. L’alimentation du communicateur est fournie par l’embase à laquelle il est connecté. Le communicateur surveille son alimentation et se met en défaut si l’alimentation n’est pas dans la zone de tolérance. 6 20 Communicateur Ethernet 1.1.4 Mapping des données aux E/S Les données d’E/S de l’embase sont affectées dans des registres au format IEC. Se référer au Manuel de mise en oeuvre des Embases TSX Momentum 870 USE 002 01 pour les affectations des embases d’E/S. 1.1.5 Management du débit des données vers les embases d’E/S Afin d’assurer un échange déterministe des messages d’E/S, le réseau doit être déterminé pour inclure seulement la machine hôte et les modules E/S. L’accès au réseau pour d’autres équipements, tels que des interfaces de programmation, peut causer des variations dans le chronométrage des messages d’E/S. 1.1.6 Spécifications Tableau 1 Spécification du réseau Description Interface Ethernet Tableau 2 Homologation Homologation UL 508 CAN/CSA C22.2NO.142 Marquage CE 20 Breite: 178 mm Höhe: 216 mm Spécification Conforme avec la connexion STP ou UTP 100 ohm. Etat Approuvé Approuvé Approuvé 7 Communicateur Ethernet 1.2 Exemple: Données de temps d’exécution Figure 2 montre l’exemple d’une boucle de régulation construite pour mesurer les temps d’exécution des données de deux embases d’E/S. Un PC hôte, effectuant le programme test, est connecté par Ethernet aux deux communicateurs montés sur les embases d’E/S T.O.R. Les bornes de l’embase de sorties sont directement câblées aux bornes de l’embase d’entrées. Un oscilloscope règle la transmission des signaux. Câblage PC hôte Programme test en cours Ethernet Oscilloscope Communicateur avec bornes d’entrées T.O.R. Communicateur avec bornes de sorties T.O.R. Figure 2 Exemple: temps d’exécution des données Le programme test est un circuit Java exécutant la séquence suivante: 1. lecture continue des bornes de l’embase d’entrées. 2. écriture d’une borne de sortie sur nouvelle condition (ON ou OFF). 3. basculement des sorties lorsque les entrées changent d’état. L’oscilloscope mesure la durée de l’état ON des sorties. 8 20 Communicateur Ethernet Temps mesuré ici ON OFF Figure 3 Mesure du temps d’exécution des données Tests conduits sur deux stations de travail NT séparées avec les configurations suivantes: H H 200 MHz, 96 MB RAM 100 MHz, 32 MB RAM Tableau 3 montre les temps d’exécution des données mesurées. Les résultats démontrent que le facteur majeur affectant les temps des données, est la vitesse d’exécution de la boucle sur l’hôte. Tableau 3 Résultas: Temps d’exécution des données Equipements sur le réseau 2 2 2 64 64 64 64 64 64 Chargement réseau 10% 40% 70% 10% 40% 70% 10% 40% 70% Temps Minimum 5 ms 5 ms 6 ms 6 ms 6 ms 6 ms 25 ms 25 ms 26 ms Temps maximum 9 ms 9 ms 9 ms 8 ms 12 ms 13 ms 30 ms 30 ms 30 ms Temps moyen 6.2 ms 6.2 ms 6.3 ms 6.8 ms 8.4 ms 8.2 ms 26.7 ms 26.7 ms 27.0 ms CPU hôte vitesse et RAM 200 MHz 96 MB 200 MHz 96 MB 200 MHz 96 MB 200 MHz 96 MB 200 MHz 96 MB 200 MHz 96 MB 100 MHz 32 MB 100 MHz 32 MB 100 MHz 32 MB Les codes Java, pour le programme test, sont indiqués au Chapitre 3. 20 Breite: 178 mm Höhe: 216 mm 9 Communicateur Ethernet 1.3 Voyants de signalisation Les deux voyants de signalisation, sur la face avant du communicateur, renseignent sur son état. Etat communicateur Activité réseau Figure 4 Voyants de signalisation Tableau 4 Voyant RUN: Etat du communicateur Voyant On (permanence) 3 flashes, puis Off 4 flashes, puis Off 5 flashes, puis Off 6 flashes, puis Off 7 flashes, puis Off 8 flashes, puis Off Clignotement constant Tableau 5 Voyant Clignotant Off 10 Etat Fonctionnement normal: présence d’alimentation fournie par l’embase, le communicateur est prêt à communiquer sur le réseau. Absence de liaison:Le câble de réseau n’est pas connecté ou est défectueux. Absence d’adresse MAC: L’adresse MAC du communicateur n’est pas affectée. Problème de hardware. Absence d’adresse IP: Le communicateur essaie d’obtenir une adresse IP d’un serveur BOOTP. Le programme exécutif interne du communicateur est démarré, mais ne peut pas initialiser l’embase d’E/S. Le communicateur a obtenu une adresse IP, mais ne possède pas de programme exécutif valide. Le programme exécutif a échoué pendant l’exécution. Le communicateur télécharge son programme exécutif. Voyant LAN ACT: Activité réseau Etat Fonctionnement normal: Le communicateur détecte l’activité réseau. le nombre de clignotements indique la quantité d’activité. Il peut être en permanence sur On si le réseau a une activité importante. Le communicateur ne détecte pas d’activité sur le réseau. 20 Communicateur Ethernet 1.4 Connexion au réseau 1.4.1 Connecteur réseau Le communicateur à une prise RJ–45 pour câble 10Base–T UTP/STP (paire torsadée blindée ou non). Le communicateur peut être directement branché sur le hub Ethernet. RJ–45 10Base–T pour Câble à paire torsadée blindée ou non (UTP/STP) Figure 5 Connecteur réseau 1.4.2 Etiquettes d’identification réseau: Adresse globale et adresse IP Le communicateur possède deux étiquettes d’identification sur les côtés. Une étiquette indique l’adresse globale IEEE (adresse MAC) du communicateur. L’autre indique son adresse de protocole Internet (adresse IP). L’installateur enregistre l’adresse globale et la transmet à l’administrateur réseau afin d’établir l’adresse IP pour le communicateur pendant le process BOOTP au démarrage. Lorsque l’adresse IP est affectée, l’administrateur réseau la transmet à l’installateur qui peut alors l’inscrire sur l’étiquette d’identification du communicateur. 20 Breite: 178 mm Höhe: 216 mm 11 Communicateur Ethernet Etiquettes d’identification sur les côtés Adresse global du communicateur Adresse IP du communicateur Figure 6 Etiquettes d’identification du communicateur: Adresse globale et adresse IP 12 20 Communicateur Ethernet 1.5 Mise en service du communicateur 1.5.1 Initialisation et auto–tests Lorsque le communicateur reçoit l’alimentation initiale de l’embase d’E/S à laquelle il est couplé, il exécute une initialisation interne et des auto–tests. Si les tests échouent, le voyant de signalisation RUN clignote pour indiquer la nature de l’échec, si cela est possible, et le communicateur reste hors ligne. Si les tests ont été réalisés avec succès, le communicateur essaie d’obtenir son adresse Ethernet IP. 1.5.2 Affectation d’une adresse Ethernet IP Généralités: Affectation d’adresse Un serveur BOOTP est nécessaire pour affecter une nouvelle adresse IP au communicateur. Après que le serveur ait affecté l’adresse IP, l’application peut donner un ordre au communicateur pour qu’il stocke l’adresse. Si le communicateur a stocké son adresse et est ré–initialisé (par ex. après une coupure de courant), le communicateur redemandera une adresse à un serveur BOOTP. Si un serveur répond avec une adresse, le communicateur utilisera cette adresse. Si aucun serveur ne répond, le communicateur reviendra à l’adresse stockée. Demande de l’adresse IP Après avoir terminé son initialisation, le communicateur demande son adresse Ethernet IP à un serveur BOOTP. Le communicateur utilise son adresse MAC avec le protocole BOOTP sur le réseau Ethernet. Réception de la réponse du serveur Le communicateur attendra la réponse du serveur BOOTP pendant dix secondes. Lorsque la réponse est reçue le communicateur utilisera cette adresse aussi longtemps qu’il restera sous tension. STOP 20 Breite: 178 mm Höhe: 216 mm Avertissement DANGER DE DOUBLON Des réactions imprévisibles peuvent apparaître sur votre réseau si deux ou plusieurs équipements ont la même adresse. Faites en sorte que ces équipements reçoivent une adresse propre. Le non respect de ces précautions peut causer des blessures sur les personnes ou des dommages sur les équipements. 13 Communicateur Ethernet Renouvellement de demande au serveur Si aucune réponse n’est reçue d’un serveur BOOTP, le communicateur réitérera sa demande six fois: trois fois en utlisant le type de trame Ethernet II, et trois fois en utilisant le type de trame 802.3. Le serveur ne donne aucune réponse (adresse IP stockée antérieurement) Si aucune des tentatives de demande d’adresse IP n’a abouti, et si une adresse a été antérieurement stockée par l’application avec une commande Modbus Write, le communicateur utilisera cette adresse. Le serveur ne donne aucune réponse (aucune adresse IP n’est stockée) Si le communicateur ne reçoit d’adresse d’aucun des serveurs desquels il a essayé d’obtenir une adresse IP, et s’il ne possède pas d’adresse stockée, il renouvellera sa demande BOOTP toutes les 30 secondes. Pendant ce temps le voyant de signalisation RUN clignotera en mode ‘demande’ (une séquence de 5 clignotements). 1.5.3 Identification de l’embase d’E/S Après que le communicateur ait reçu son adresse IP, il effectuera une procédure interne pour identifier l’embase d’E/S à laquelle il est couplé. Si la procédure échoue, le voyant de signalisation RUN clignotera en mode défaut (six flashes) et le communicateur restera hors ligne. Si l’embase d’E/S est identifiée avec succès, le communicateur sera prêt à communiquer en utilisant le protocole Modbus sous TCP/IP. 1.5.4 Stockage de l’adresse IP dans le communicateur Le communicateur posséde une zone de mémoire RAM non volatile pour stocker l’adresse IP. Si l’application demande au communicateur de conserver l’adresse IP actuelle, elle doit publier une commande Modbus Write pour écrire une valeur boléenne dans un registre spécifique du communicateur afin de pouvoir stocker l’adresse. Le statut par défaut du communicateur est de ne pas stocker d’adresse. Le paragraphe 2.1 décrit la façon de stocker l’adresse IP et de déterminer si une adresse à été antérieurement stockée 14 20 Communicateur Ethernet 1.6 Remplacement d’un communicateur 1.6.1 Effacer l’adresse IP stockée Avant de remplacer tout communicateur sonadresse IP doit être effacée. Le communicateur possède une mémoire RAM non volatile afin de stocker tous les paramètres qui lui sont assignés. Les paramètres sont retenus lorsque l’alimentation du communicateur est coupée, et restent en permanence dans le communicateur lorsqu’il est mis hors service. Si le communicateur est remis ultérieurement en service, il peut causer une activité non spécifiée sur le réseau. Par conséquence, tous les paramétres doivent être effacés avant de remplacer le communicateur. Le communicateur a un registre interne qui définit l’état boléen (mémorisé ou non) de ses paramètres IP. Le registre peut être lu par l’application et peut être écrit afin d’effacer les paramètres. STOP Avertissement DANGER DE DOUBLON Des réactions imprévisibles peuvent apparaître sur votre réseau si deux ou plusieurs équipements ont la même adresse. Avant de mettre tout communicateur hors service, il vous faut tout d’abord écrire un zéro logique dans le registre de stockage des paramètres afin d’effacer tous les paramètres stockés du communicateur. Cela réduira toutes les possibilités d’adresses IP multiples sur votre réseau le jour où le communicateur sera remis en service. Le non respect de ces précautions peut causer des blessures sur les personnes ou de dommages sur les équipements. Voir paragraphe 2.1 pour la description des registres du communicateur et la façon d’effacer les paramètres stockés. 1.6.2 Couper l’alimentation et déconnecter le communicateur Avant d’ôter le communicateur, couper l’alimentation de l’embase d’E/S. Puis débrancher le câble Ethernet, ôter alors le communicateur de l’embase. 20 Breite: 178 mm Höhe: 216 mm 15 Communicateur Ethernet 1.6.3 Installer un nouveau communicateur Monter le nouveau communicateur sur l’embase suivant les instructions fournies. Enregistrer la nouvelle adresse globale IEEE (MAC address) du communicateur, et l’utiliser pour configurer une adresse au protocale Internet (adresse IP) pour le communicateur. Le paragraphe 1.5 décrit la façon de mettre en service le communicateur en utilisant le protocole Ethernet BOOTP. 16 20 Echanges de données avec le communicateur H H H H 20 Breite: 178 mm Höhe: 216 mm Registres Registres Registres Registres 2 d’accès aux échanges de données de configuration d’état 17 Echanges de données avec le communicateur 2.1 Registres d’accès des échanges Chaque communicateur possède trois groupes de registres permettant la communication avec l’embase d’E/S. L’application accède aux registres pour transmettre des données d’entrées ou de sorties aux bornes de l’embase, pour mettre au point ou modifier la configuration du module, ou pour surveiller son état. Tous les registres peuvent être entrés comme références 4XXXX dans la fonction MSTR du programme application. 18 20 Echanges de données avec le communicateur REFERENCE INITIALE (Hex / Décimal) RESEAU ETHERNET TAILLE (Mots de 16 bits) REGISTRES DE DONNÉES Données d’entrées (lecture uniquement) 40001 / 400001 Suivant le type d’embase Données de sorties (écriture uniquement) 40001 / 400001 Suivant le type d’embase REGISTRES DE CONFIGURATION MODULE TIMEOUT 4F001 / 461441 (Lecture ou écriture) 1 MODULE OWNERSHIP (lecture ou écriture) 4F401 / 462465 6 SAUVEGARDE ADRESSE IP (Ecriture ou lecture) 4F411 / 462481 1 à écriture 2 à lecture REGISTRES D’ÉTAT ETAT DES MODULES (lecture uniquement) 4F801 / 463489 MODULE A EN–TETE ASCII (lecture uniquement) 4FC01 / 464513 13 Suivant le type d’embase Figure 7 Registres d’accès aux échanges du communicateur 2.1.1 Registres de données 40001 hex –– Donnés d’entrées ou de sorties La référence initiale 40001 est utilisée pour adresser les données d’entrée en provenance des capteurs et les données de sorties en direction des actionneurs. Les données sont transmises en format IEC. Le mapping entre les registres de données de l’automate et les bornes de l’embase d’E/S, est unique à chaque embase. Il est décrit en détails dans le Manuel de mise en oeuvre des embases TSX Momentum, 870 USE 002 01. 20 Breite: 178 mm Höhe: 216 mm 19 Echanges de données avec le communicateur 2.1.2 Registres de configuration 4F001 hex –– Temps de maintien des sorties La référence 4F001 spécifie la période pendant laquelle les sorties seront maintenues dans leur état actuel sil elles n’ont pas été mises á jour par une nouvelle commande Modbus Write. Si le temps imparti au module expire avant qu’un nouvel ordre d’écriture ne soit reçu, toutes les sorties sont initialisées à 0 (zéro). La taille de ce champs est d’un mot. La valeur du timeout est exprimée en unités de 10 millisecondes, avec un minimum de 30 (300 millisecondes) et un maximum de 6000 (60 secondes). La valeur par défaut est 100 (1 seconde). Le contenu des registres peut être lu avec une commande Modbus Read. 4F401 hex –– Atrtibution du privilège d’écriture Dès que le communicateur est alimenté, il donnera exclusivement le privilège d’écriture à la première station qui lui écrira en utilisant la commande Modbus Write. Le communicateur maintient une période interne de 60 secondes pour le traitement du privilège d’écriture et maintiendra ce privilège exclusivement à cette station aussi longtemps qu’elle continuera à lui écrire par intervalles de 60 secondes. La référence initiale 4F401 spécifie les adresses IP de trois stations supplémentaires pouvant posséder simultanément le privilège d’écriture au communicateur. Une station qui possède actuellement le privilége d’écriture peut écrire jusqu’à trois adresses IP (2 mots par adresses) à destination du communicateur à partir de la référence 4F401. Chacune de ces trois stations peut écrire au communicateur à partir de ces adresses enregistrées. Ceci permet à quatre stations de posséder le privilège d’écriture à destination du communicateur. Si les écritures, provenant d’une des trois stations privilégiées, continuent d’arriver dans des intervalles de 60 secondes, aucune autre station ne pourra écrire au communicateur. Lorsque le temps imparti est expiré n’importe quelle autre station peut lui écrire. Il est à noter que la période de 60-secondes de privilège d’écriture est indépendante du temps de maintien des sorties, et s’applique uniquement au privilége d’écriture. La période de 60 secondes est une valeur fixe et n’est pas accessible dans application. Toute station est en mesure de lire les données d’entrées ou les informations d’état provenant du communicateur. 20 20 Echanges de données avec le communicateur 4F411 hex –– Adresse IP sauvegardée Cette référence à un double but, suivant si le programme application sort une commande d’écriture Modbus Write ou une commande de lecture Modbus Read. Commande d’écriture Modbus: Sauvegarde ou effacement de l’adresse IP Pour une commande d’écriture Modbus la référence est traitée comme un registre d’un mot, le programme application écrivant un mot de donnée. La donnée Modbus Write peut être 1 ou 0 (zéro), le communicateur sauvegardant ou effaçant alors son adresse IP actuelle. Si une donnée 1 est entrée comme référence, le communicateur sauvegardera son adresse IP affectée actuellement dans sa mémoire RAM non volatile. Si une nouvelle initialisation a lieu et que le communicateur ne peut pas trouver de serveur BOOTP, il utilisera l’adresse mémorisée. STOP Avertissement DANGER DE DOUBLON Des réactions imprévisibles peuvent survenir sur votre réseau si deux ou plusieurs équipements ont la même adresse. Avant de mettre tout communicateur hors service, écrire tout d’abord un zéro logique dans le registre de stockage des paramètres, afin d’effacer tous les paramètres stockés dans le communicateur .Cela réduira toutes les possibilités d’adresses IP multiples sur votre réseau le jour où le communicateur sera remis en service. Le non respect de ces précautions peut causer des blessures sur les personnes ou des dommages sur les équipements. STOP Avertissement LE COMMUNICATEUR INITIALISE LORSQUE CES CONTENUS SONT MODIFIES Toute modification d’état du contenu de ces références force le communicateur à effectuer une nouvelle initialisation. Commande de lecture Modbus Read: Réception de l’adresse IP actuelle Pour une commande de lecture Modbus Read la référence est traitée comme un registre de deux mots, le programme application écrivant deux mots de donnée. Si le communicateur posséde des paramètres IP stockés dans sa mémoire RAM non volatile, il retournera son adresse IP actuelle à la commande de lecture Modbus Read en indiquant qu’il possède des paramètres stockés. Si les paramètres IP actuels ne sont pas sauvegardés, le communicateur les retourne tous (FFFFFFFF hex) à la commande Read. 20 Breite: 178 mm Höhe: 216 mm 21 Echanges de données avec le communicateur 2.1.3 Registres d’état 4F801 hex –– Bloc d’état de l’embase Ces registres fournissent des informations sur le niveau de révision des modules et sur les paramètres d’exploitation actuels. Le bloc est de 13 mots. Les registres peuvent être lus par l’application, mais ne peuvent pas être écrits. Tableau 6 Représentation des blocs d’état Référence (hex) 4F801 4F802 Désignation Signification Taille du bloc d’état (mots) Nombre de mots d’entrées de l’embase d’E/S Nombre de mots de sorties de l’embase d’E/S Code d’identification de l’embase Numéro de révision du communicateur 13 décimal suivant le type de l’embase 4F803 4F804 4F805 4F806 4F807 4F808 4F809 4F80A 4F80B 4F80C 4F80D 22 Taille du bloc en–tête ASCII (mots) Dernière adresse IP pour communiquer avec ce communicateur dans l’opération Modbus la plus récente (mot bas de 2 mots – voir 4F80D) Temps d’attribution du privilège restant Temps restant de maintien des sorties embase OK Valeur du dernier défaut de l’embase Compteur de défaut de l’embase Dernière adresse IP pour communiquer avec ce communicateur dans l’opération Modbus la plus récente (mot haut de 2 mots – voir 4F80D) suivant le type de l’embase suivant le type de l’embase Format: XR où: X = supérieur à 4 bits, toujours 0000 R = inférieur à 12 bits, définissant la révision en tant que caractères 3 hex. Exemple: 100 hex = Rév. 1..00 200 hex = Rév. 2.00 suivant le type de l’embase Suivant l’adresse de la station millisecondes millisecondes 8000 hex = OK 0000 hex = défectueuse suivant le type de l’embase Compte de défaut 0000 ... FFFF hex Suivant l’adresse de la station 20 Echanges de données avec le communicateur 4FC01 hex –– Bloc à en–tête ASCII du module Ces registres contiennent un texte de description du module au format ASCII. Les registres peuvent être lus mais non écrit par l’application. La taille du bloc dépend du type de l’embase à laquelle le communicateur est couplé. La taille minimum est de 64 octets de caractéres ASCII, correspondant à une longueur de 8 à 32 mots comme il est spécifié au mot 6 du bloc d’état du module (à la référence 4F806). Le bloc possède des étiquettes d’identification pour indiquer la quantité de mots d’entrées et de sorties, ainsi que le numéro d’identification de l’embase. Vous pouvez analyser les contenus du bloc pour extraire cette information dans votre application. Tableau 7 Représentation du bloc à en–tête ASCII Caractères ASCII ETHERNET 20 hex (32 décimal) IEC 20 hex (32 décimal) DIG: EXP: ANA: 20 hex (32 décimal) inlen=n 20 hex (32 décimal) outlen=n 20 hex (32 décimal) ID=0xnnnn Signification Identifie le communicateur Ethernet espace La donnée est transmise avec l’embase d’E/S en format IEC espace Embase T.O.R. (ID plage: XX00 ... XX7F hex) Embase expert (ID plage: XX80 ... XXBF hex) Embase analogique (ID plage: XXC0 ... XXFE hex) espace Mots d’entrée (n = nombre de mots, décimal) espace Mots de sortie (n = nombre de mots, décimal) espace Code d’identification de l’embase (nnnn = code ID, hex) Figure 8 montre un exemple de contenu de bloc à en–tête ASCII pour deux embases d’E/S. 20 Breite: 178 mm Höhe: 216 mm 23 Echanges de données avec le communicateur 170 ADM 350 00 (Embase 16 entrées T.O.R., 16 sorties T.O.R.) ETHERNET IEC DIG: inlen=1 outlen=1 ID=0x0002 Bits de donnée tranférés en format IEC Identification de l’embase Mots d’entrée: 1 Mots de sortie: 1 Embase T.O.R. 170 AAO 120 00 (Embase 4 sorties analogiques ) ETHERNET IEC ANA: inlen=0 outlen=5 ID=0x01C3 Bits de donnée transmises en format IEC Embase analogique Mots d’entrée: 0 Mots de sortie: 5 (inclus 1 mot de paramètre) Identification de l’embase Figure 8 Exemples: Bloc à en–tête ASCII 24 20 Programme de tests: Codes source H H 20 Breite: 178 mm Höhe: 216 mm 3 Source: response.java Source: test1.txt 25 Programme de tests: Codes source 3.1 Source: response.java Ce programme Java fournit la boucle de test de débit des données décrite au chapitre 1. Il lit le fichier test1.txt qui donne les adresses cibles et les commandes Modbus pour communiquer avec les communicateurs d’E/S. Le fichier contient: // response.java, 6/17/98. This is a variation of mbtest.java. This code // will send a (write) command to one address and a separate command (read) // to the second address. It will loop performing the read each time, but // only doing the write when the read command detects a change in the input // that was read. The loop counter is set as a constant. An improvement // would be to pass it in the command line. The purpose of this program // is to use an oscilloscope to measure the time elapsed between the input // going high, and the output responding to it. The IP addresses of the IO // modules, and the write and read commands are read from a text file. //–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– // mbtest.java 4/26/96 // minimal application to communicate and do performance measurement // to the Quantum Ethernet module using ASA registered TCP port and // MODBUS_ENCODING PDU format // variant 5/14/96 to allow comparison of responses to the same request from 2 targets // variant 5/24/96 to allow specification of independent addresses on the 2 targets // and to allow time delay in script // 11/11/97 generate ’usage:’ and handle blank lines as comment import java.io.* ; import java.net.* ; class mbtest { public static void main(String argv[]) { if (argv.length<1) { System.out.println(”usage: java mbtest scriptfile > reportfile\n”+ ”eg. java mbtest script.txt > result.txt”); } else try { 26 20 Programme de tests: Codes source int dolog = 1; int keybuf; long skipcnt; int ioCount; byte expect; int first; DataInputStream di = new DataInputStream(new FileInputStream(argv[0])); String cmd; // analyse ’target’ lines. Note must be followed by ’address’ // note this version of the program requires that the ’target’ // lines be the first 1 or 2 lines of the script String target; Socket es=null; OutputStream os=null; FilterInputStream is=null; cmd = di.readLine().trim(); if (cmd.startsWith(”target”)) { target = cmd.substring(6).trim(); System.out.println(”mbtest: connecting to ”+target); es = new Socket(target,502); os= es.getOutputStream(); is = new BufferedInputStream(es.getInputStream()); cmd = di.readLine().trim(); } String target2; Socket es2=null; OutputStream os2=null; FilterInputStream is2=null; if (cmd.startsWith(”target”)) { target2 = cmd.substring(6).trim(); System.out.println(”mbtest: connecting to ”+target2); es2 = new Socket(target2,502); os2= es2.getOutputStream(); is2 = new BufferedInputStream(es2.getInputStream()); cmd = di.readLine().trim(); } int address = 1; int address2 = 1; byte obuf[] = new byte[261]; byte obuf2[] = new byte[261]; byte ibuf[] = new byte[261]; 20 Breite: 178 mm Höhe: 216 mm 27 Programme de tests: Codes source byte ibuf2[] = new byte[261]; obuf[0] = 0; obuf[1] = 0; obuf[2] = 0; obuf[3] = 0; obuf[4] = 0; obuf2[0] = 0; obuf2[1] = 0; obuf2[2] = 0; obuf2[3] = 0; obuf2[4] = 0; for (;;) { if (cmd.startsWith(”;”)) { System.out.println(cmd); cmd = di.readLine().trim(); continue; } if (cmd.startsWith(”address2”)) { address2 = Integer.parseInt(cmd.substring(9)); cmd = di.readLine().trim(); continue; } if (cmd.startsWith(”address”)) { address = Integer.parseInt(cmd.substring(8)); address2 = address; cmd = di.readLine().trim(); continue; } if (cmd.startsWith(”quit”)) break; // handle script delay if (cmd.startsWith(”wait”)) { int delayTime = Integer.parseInt(cmd.substring(5)); if (delayTime < 0 || delayTime > 30000) { System.out.println(”mbtest: warning: invalid delay time – ”+delayTime+” – ignoring”); } else { Thread.sleep(delayTime); } cmd = di.readLine().trim(); continue; } 28 20 Programme de tests: Codes source if (os == null || os2 == null ) { System.out.println(”mbtestt: abort: no connection established to target”); break; } // now convert to a byte string // assume format is hex separated by whitespace int ix = 0; // output index = number of bytes found int sx = 0; // input index = substring position int l = cmd.length(); while (sx < l) { int ex; ex = cmd.indexOf(’ ’,sx); if (ex<0) ex = l; int bval = Integer.parseInt(cmd.substring(sx,ex), 16); obuf[7+ix++] = (byte) bval; sx = ex+1; } if (ix == 0) { // handle blank line as comment System.out.println(cmd); cmd = di.readLine().trim(); continue; } obuf[5] = (byte) (ix + 1); obuf[6] = (byte) address; //–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– // read the command for the second target //–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––– cmd = di.readLine().trim(); ix = 0; // output index = number of bytes found sx = 0; // input index = substring position l = cmd.length(); while (sx < l) { int ex; ex = cmd.indexOf(’ ’,sx); if (ex<0) ex = l; int bval = Integer.parseInt(cmd.substring(sx,ex), 16); obuf2[7+ix++] = (byte) bval; sx = ex+1; } 20 Breite: 178 mm Höhe: 216 mm 29 Programme de tests: Codes source if (ix == 0) { // handle blank line as comment System.out.println(cmd); cmd = di.readLine().trim(); continue; } obuf2[5] = (byte) (ix + 1); obuf2[6] = (byte) address; cmd = di.readLine().trim(); } // end of FOR loop reading the input text // purge the key buffer //for( ; ; ) { //keybuf = System.in.available(); //if( keybuf == 0 ) //break; //keybuf = System.in.read(); //} keybuf = System.in.available(); if( keybuf > 1 ) // { skipcnt = keybuf; // System.out.println(”skip: ”+keybuf ); do { System.in.read(); keybuf––; } while( keybuf > 1 ); } System.out.println(”Press any key to stop”); expect = 0x40; first = 1; // Now loop performing the IO for( ; ; ) { // loop doing IO //for( ioCount=0; ioCount < 500; ioCount++ ) { // loop doing IO int c = 0; int c2 = 0; int ix; keybuf = System.in.available(); if( dolog == 1 ) System.out.println(”keybuf = ”+keybuf ); if( keybuf >= 1 ) { keybuf = System.in.read(); 30 20 Programme de tests: Codes source break; } ix = (int)obuf[5] – 1; os.write(obuf,0,ix+7); c = is.read(ibuf,0,261); if (c<=0) { System.out.println(”mbtest: abort: detected unexpected close of channel”); break; } while (c<7 || c<(6 + (0xff & (int)(ibuf[5])))) { System.out.println(”mbtest: warning: response appears fragmented”); int cx = is.read(ibuf,c,261–c); if (cx<=0) { System.out.println(”mbtest: warning: response incomplete”); break; } c += cx; } // verify input length against fragmentation if (((int)(ibuf[5])&0xff) != (c–6)) { System.out.println(”mbtest: warning: response length mismatch”); } if( dolog == 1 ) { log_buf(obuf, ix+7, ”>”); log_buf(ibuf, c, ”<”); } // write to the second target, using the 2nd buffer // wait until the input has changed if ( first == 1 || ( ibuf[12] & 0x40 ) == expect ) { first = 0; ix = (int)obuf2[5] – 1; // if input bit 0x40 is on, turn on output bit 0x01 if( expect == 0x40 ) { expect = 0; obuf2[16] = (byte) (obuf2[16] & 0xbf); // bit 40 off obuf2[16] = (byte) (obuf2[16] | 0x01); // bit 01 on } else { expect = 0x40; obuf2[16] = (byte) (obuf2[16] | 0x40); // bit 40 on obuf2[16] = (byte) (obuf2[16] & 0xfe); // bit 01 off 20 Breite: 178 mm Höhe: 216 mm 31 Programme de tests: Codes source } os2.write(obuf2,0,ix+7); c2 = is2.read(ibuf2,0,261); if (c2<=0) { System.out.println(”mbtest: abort: detected unexpected close of channel”); break; } while (c2<7 || c2<(6 + (0xff & (int)(ibuf2[5])))) { System.out.println(”mbtest: warning: response appears fragmented”); int cx2 = is2.read(ibuf2,c2,261–c2); if (cx2<=0) { System.out.println(”mbtest: warning: response incomplete”); break; } c2 += cx2; } if (((int)(ibuf2[5])&0xff) != (c2–6)) { System.out.println(”mbtest: warning: response length mismatch”); } if( dolog == 1 ) { log_buf(obuf2, ix+7, ”>”); log_buf(ibuf2, c2, ”<”); } // check only the modbus response for equality (ignore address) //if (buf_diff(c, ibuf, c2, ibuf2)) { //System.out.println(”************* different”); //} } if( dolog == 1 ) System.out.println(); } // end of FOR loop doing IO } catch (Exception e) { System.out.println(”mbtest: unexpected exception:”+e); } } static boolean buf_diff(int c1, byte [] b1, int c2, byte [] b2) { // check only the modbus response for equality (ignore address) if (c1 != c2) return true; int i; for (i=7; i<c1; i++) { if (b1[i] != b2[i]) return true; 32 20 Programme de tests: Codes source } return false; } public static void log_buf(byte buf[], int len, String prefix) { System.out.print(prefix); int i; for (i=0; i<len; i++) { System.out.print(” ”+Integer.toString((buf[i]>>4)&0xf, 16)+ Integer.toString(buf[i]&0xf, 16)); } System.out.println(); } } 20 Breite: 178 mm Höhe: 216 mm 33 Programme de tests: Codes source 3.2 Source: test1.txt Ce fichier contient les adresses cibles des communicateurs d’E/S utilisées dans la boucle de test. Le serveur hôte doit les déterminer aux adresses IP des communicateurs. Ce fichier contient aussi les commandes d’entrées et sorties Modbus vers les communicateurs afin de lire les entrées de l’embase et d’écrire les sorties de l’embase. Le fichier contient: target eio4 target eio2 ; input command followed by output command 3 0 0 0 2 10 0 0 0 2 4 00 00 00 40 quit 34 20