Beckhoff ADS
Relier des automates Beckhoff TwinCAT en ADS/AMS : la route AMS, le port du runtime, les chemins de symboles et les longueurs de lecture.
Le pilote Beckhoff ADS parle aux automates Beckhoff TwinCAT en ADS, le protocole d'automatisation TwinCAT porté par des routes AMS. Vous adressez les valeurs par leur chemin de symbole dans le programme de l'automate, si bien que ce que vous tapez est ce que le projet TwinCAT déclare. Ajoutez un équipement sous le pilote Beckhoff ADS dans le Connector ; le volet ne montre que les champs que ce protocole emploie.
Connexion
| Champ | Sens | Défaut |
|---|---|---|
| Hôte | L'adresse IP de l'automate. Son AMS Net Id est déduit de cette adresse sous la forme {ip}.1.1. Sauf si AMS Net Id de l'automate le nomme, l'AMS Net Id de l'automate est cette adresse suivie de .1.1 ; un nom est d'abord résolu en son adresse IPv4. |
vide |
| Port | Le port AMS du runtime visé : 851 est le runtime automate 1 de TwinCAT 3, et les runtimes TwinCAT 3 suivants se comptent à partir de là (852, 853, …). Un champ vide affiche 851 en gris et ce runtime est employé ; un équipement enregistré avec 0 se lit de la même façon. | 851 |
| IP locale (AMS) | L'adresse IP propre de cette station, dont son AMS Net Id est déduit sous la forme {ip}.1.1. Elle doit correspondre à la route AMS configurée sur l'automate. Un champ vide emploie l'adresse de cette station sur le réseau qui atteint l'automate, qu'il affiche en gris ; une valeur saisie dans le champ est employée à sa place. |
vide |
| AMS Net Id de l'automate | L'AMS Net Id propre de l'automate, pour un automate dont l'id n'est pas son adresse IP suivie de .1.1 : six nombres de 0 à 255 séparés par des points, tel que TwinCAT XAE le montre sous SYSTEM > Routes, onglet NetId Management, Target NetId. Un champ vide emploie l'adresse IPv4 de l'hôte suivie de .1.1, qu'il affiche en gris. Une valeur qui n'est pas un AMS Net Id laisse l'équipement déconnecté et dit quoi saisir. |
vide |
| Intervalle de scrutation (ms) | La période de lecture de tout l'équipement, pour les tags qui ne la remplacent pas. | 1 000 |
L'en-tête de l'équipement montre l'endpoint assemblé, par exemple
ads://192.168.0.1:192.168.0.50:851 (IP locale, IP de l'automate, port AMS). Chaque tag
peut régler son propre Intervalle de scrutation (ms) ; une valeur de tag à 0 retombe sur la
période de l'équipement.
ADS ne répond qu'aux stations pour lesquelles l'automate a une route AMS : Préparer l'automate dit quelle route ajouter et où.
Préparer l'automate
Un automate TwinCAT ne répond en ADS qu'à une station pour laquelle son routeur AMS a une route. Sans la route, le routeur accepte la connexion sur le port TCP 48898 puis la ferme ou ne répond jamais, et la connexion échoue même quand le chemin réseau est bon. Ajoutez une fois sur l'automate une route statique pour cette station :
| Champ de la boîte de dialogue Add Route de TwinCAT | Valeur |
|---|---|
| Nom : Route Name (Target) | Un nom quelconque ; l'avis propose le nom d'ordinateur de cette station. |
| Net id : AmsNetId | L'adresse de cette station suivie de .1.1, correspondant à ce que le pilote déduit d'IP locale (AMS). |
| Transport : Transport Type | Le transport TCP_IP |
| Adresse : Address Info | L'adresse de cette station, avec IP Address sélectionné. |
| Genre de route : Target Route et Remote Route | Static et None |
Dans TwinCAT XAE, choisissez l'automate comme système cible et ouvrez SYSTEM > Routes, onglet Static Routes, puis Add. Sur le bureau de l'automate lui-même, l'icône TwinCAT de la zone de notification ouvre la même liste par Router > Edit Routes.
L'adresse est celle de cette station sur le réseau qui atteint l'automate. Un ordinateur à plusieurs cartes réseau a une adresse sur chacune, et la route ne vaut que pour celle qu'elle nomme. Tant qu'IP locale (AMS) est vide, le pilote emploie l'adresse de la carte par laquelle Windows atteint l'automate, que le champ affiche en gris : c'est l'adresse que nomme la route. Une valeur saisie dans le champ est employée à sa place, et la route doit nommer celle-là.
Quand le routeur de l'automate refuse la station faute de route, la page de l'équipement le dit dans un avis qui prend la place de l'erreur du pilote : la route prête à ajouter (son nom, l'AMS Net Id de cette station, son adresse et le transport, chacun avec un bouton de copie) et l'endroit où TwinCAT l'ajoute. L'avis disparaît de lui-même dès que l'automate répond, et le journal et l'agent lisent la même route. Un port qui refuse la connexion ou reste muet est dit pour ce qu'il est, pas comme une route manquante.
La station adresse l'automate par son AMS Net Id, et le routeur de l'automate ne répond que pour le sien : un automate dont l'AMS Net Id n'est pas celui qu'emploie la station ne répond jamais non plus, ce qui ressemble exactement à une route manquante. Quand l'automate a déjà la route et ne répond toujours pas, vérifiez son AMS Net Id dans TwinCAT XAE sous SYSTEM > Routes, onglet NetId Management, Target NetId, et saisissez-le dans AMS Net Id de l'automate ; l'avis nomme celui qu'emploie la station.
Adressage
Un tag Beckhoff est adressé par deux champs de la carte Source de la valeur du tag :
| Champ | Sens | Valeurs acceptées | Défaut |
|---|---|---|---|
| Symbole | Le chemin de symbole de la variable dans le programme de l'automate. Obligatoire. | texte libre, par exemple MAIN.fValue |
vide |
| Longueur de lecture (octets, vide = automatique) | Combien d'octets transférer par lecture. Vide dimensionne la lecture depuis le type de donnée. | 1 et plus, ou vide | vide |
Le chemin de symbole est exactement ce que TwinCAT montre : les variables de programme sous
MAIN.fValue, les listes de variables globales sous GVL.MachineSpeed ou
GVL_Settings.rSetpoint. Le pilote résout le symbole par son nom sur l'automate
et lit ses octets bruts. Les longueurs de lecture automatiques sont :
| Type de donnée | Longueur de lecture automatique |
|---|---|
| Boolean | 1 octet |
| Int32 | 4 octets |
| Float | 4 octets |
| String | 16 octets |
Pour une String plus longue que 16 caractères, réglez la longueur de lecture pour couvrir la
taille déclarée (une STRING(80) TwinCAT a besoin de 80 octets de texte). La ligne
Adresse source (bus) en lecture seule de la carte Source de la valeur montre l'adresse assemblée au fil
de la saisie.
Une lecture que l'automate refuse, comme celle d'un symbole qu'il ne détient pas ou ne
laisse pas lire, laisse le tag sans valeur, et le motif du tag nomme le code d'erreur ADS
et ce qu'il signifie, par exemple ADS error 0x710 (no symbol by that name). La connexion
reste ouverte et les autres tags continuent de lire ; le motif disparaît à la prochaine
lecture à laquelle l'automate répond.
Types de donnée
Le sélecteur Type de donnée propose les quatre types que le pilote sait transporter :
| Type de donnée | Équivalent automate | Notes |
|---|---|---|
| Boolean | BOOL | 1 octet, non nul signifie vrai |
| Int32 | DINT | petit-boutiste, comme l'automate |
| Float | REAL | petit-boutiste, comme l'automate |
| String | STRING | du texte jusqu'au premier NUL du tampon de lecture |
L'ordre des octets est le petit-boutiste propre à l'automate et il est traité automatiquement ; il n'y a pas d'option d'ordre des octets. Une lecture String décode le tampon retourné jusqu'au premier terminateur NUL, si bien que le remplissage derrière une chaîne courte ne fuit jamais dans la valeur. Les autres largeurs TwinCAT (INT, LREAL, WORD, …) ne sont pas proposées : exposez une telle variable dans le programme de l'automate sous l'un des quatre types ci-dessus pour la lire ici.
Écritures
Les tags dont l'Accès est Lecture et écriture ou Écriture seule peuvent être écrits. Une écriture résout le même symbole et écrit les octets de la valeur : 1 octet pour Boolean, 4 octets pour Int32 et Float. Une écriture String pose toute la longueur de lecture du tag : les octets UTF-8 du texte devant et des zéros derrière, si bien qu'un texte plus court écrit par-dessus un plus long remplace la valeur entière et que rien de l'ancienne ne survit. Un texte qui ne tient pas dans la longueur déclarée est refusé avec la longueur nommée dans le journal, jamais tronqué à la taille. Un nouveau tag démarre en Lecture seule.
Une écriture que l'automate refuse, comme celle d'un symbole qu'il ne laisse pas
écrire, revient refusée avec le code d'erreur ADS et ce qu'il signifie, par exemple
ADS error 0x704 (the symbol may not be written), et la connexion reste ouverte.
Découverte
ADS n'a pas de découverte par diffusion dans ce pilote, si bien que le Connector n'affiche aucun bouton Découvrir. Ajoutez l'équipement et ses symboles à la main.
Bon à savoir
- La route AMS est la raison habituelle d'un premier échec de connexion : l'AMS
Net Id de la route sur l'automate doit être exactement l'IP de la station suivie de
.1.1, et la page de l'équipement donne toute la route à ajouter. - Le pilote demande à l'automate un handle pour chaque symbole une fois par connexion et
rend les handles quand la connexion se ferme. Après un téléchargement dans l'automate, un
handle que l'automate n'accepte plus est remplacé à la lecture suivante, si bien que le tag
continue de lire avec le nouveau programme ; un symbole que le téléchargement a renommé ou
retiré laisse son tag sans valeur, avec
ADS error 0x710 (no symbol by that name), jusqu'à ce que les noms correspondent de nouveau. - Un automate injoignable ne coûte rien au démarrage : l'équipement continue de réessayer en arrière-plan et ses tags se lisent en mauvaise qualité jusqu'à ce que la connexion s'établisse.