Siemens S7
Relier des automates Siemens S7 en S7comm : châssis et emplacement, zones de mémoire, adressage typé par octet et par bit, et les types de donnée natifs.
Le pilote Siemens S7 parle aux automates Siemens S7 en S7comm, le protocole Step 7 classique porté par ISO-on-TCP. Il emploie l'adressage absolu (zone de mémoire, numéro de bloc de données, octet et bit), si bien qu'il fonctionne sans aucun export de symboles depuis le projet d'ingénierie. Ajoutez un équipement sous le pilote Siemens S7 dans le Connector et renseignez les champs ci-dessous ; le volet ne montre que les champs que ce protocole emploie.
Connexion
| Champ | Sens | Défaut |
|---|---|---|
| Hôte | L'adresse IP ou le nom d'hôte de la CPU (ou du module CP qui la précède). | vide |
| Châssis / Emplacement | Les numéros de châssis et d'emplacement de la CPU, tels que la configuration matérielle Siemens les définit. Deux zones de nombre sur une ligne : le châssis d'abord, l'emplacement ensuite. | 0 / 0 |
| Période de scrutation (ms) | La période de lecture de tout l'équipement, pour les tags qui ne la remplacent pas. | 1 000 |
Le port TCP est fixé à 102 (ISO-on-TCP), il n'y a donc pas de champ de port. L'en-tête
de l'équipement montre le point de terminaison assemblé, par exemple s7://192.168.0.2:0:1
(hôte, châssis, emplacement).
Le châssis et l'emplacement doivent correspondre au matériel : les CPU S7-1200 et S7-1500 répondent sur le châssis 0, emplacement 0 ou 1 ; une CPU S7-300 typique se trouve au châssis 0, emplacement 2 ; les châssis S7-400 varient avec la configuration. Un mauvais emplacement fait échouer la connexion plutôt que de lire de fausses données.
Chaque tag peut régler sa propre période de scrutation (ms) ; une valeur de tag à 0 retombe sur la période de l'équipement.
Adressage
Un tag S7 est adressé par des champs typés, pas par une chaîne en texte libre. Le volet les montre dans la carte Source du tag :
| Champ | Sens | Valeurs acceptées | Défaut |
|---|---|---|---|
| Zone | La zone de mémoire à lire. | DataBlock, Merker, ProcessInput, ProcessOutput, Timer, Counter |
DataBlock |
| Numéro de DB | Quel bloc de données, affiché seulement quand la zone est DataBlock. |
0 et plus | 1 |
| Octet de début | Le décalage en octets, dans la zone, où la valeur commence. Dans les zones Timer et Counter, la zone s'intitule Numéro de temporisation ou Numéro de compteur et demande le numéro de la temporisation ou du compteur à la place. |
0 et plus | 0 |
| Bit (0-7) | La position du bit dans l'octet de début. Affiché seulement pour les tags booléens. | 0-7 | 0 |
| Longueur maximale (vide = 254) | Le maximum déclaré d'une STRING S7. Affichée seulement pour les tags String hors des zones Timer et Counter. |
1 et plus, ou vide | vide |
Les zones correspondent à la notation Siemens habituelle : Merker est la mémoire de marqueurs (M),
ProcessInput les entrées de l'image du procédé (I/E), ProcessOutput les
sorties de l'image du procédé (Q/A), et Timer/Counter les zones de temporisations et de compteurs
S7. Les temporisations et les compteurs s'adressent par numéro, pas par octet : Timer avec
le numéro 5 lit T5, et Counter avec le numéro 3 lit C3. Pour traduire les
adresses absolues classiques :
| Adresse classique | Type de donnée | Champs à saisir |
|---|---|---|
DB5.DBD12 portant un REAL |
Float | Zone DataBlock, numéro de DB 5, octet de début 12 |
DB1.DBX3.4 |
Boolean | Zone DataBlock, numéro de DB 1, octet de début 3, bit 4 |
DB2.DBW20 portant un INT |
Int16 | Zone DataBlock, numéro de DB 2, octet de début 20 |
MW10 |
Int16 | Zone Merker, octet de début 10 |
M10.3 |
Boolean | Zone Merker, octet de début 10, bit 3 |
IB2 |
Byte | Zone ProcessInput, octet de début 2 |
Q4.1 |
Boolean | Zone ProcessOutput, octet de début 4, bit 1 |
T5 |
Int16 | Zone Timer, numéro de temporisation 5 |
C3 |
Int16 | Zone Counter, numéro de compteur 3 |
Un tag booléen lit et écrit exactement un bit sur le bus ; il ne réécrit jamais l'octet qui l'entoure. Tous les autres types sont adressés à l'octet de début avec la largeur exacte de leur type de donnée. La ligne Adresse source (bus) en lecture seule de la carte Source montre l'adresse assemblée au fil de la saisie.
Types de donnée
Le type de donnée du tag décide du type S7 natif sur le bus. Les treize largeurs natives S7 sont disponibles :
| Type de donnée | Type S7 | Taille sur le bus |
|---|---|---|
| Boolean | BOOL | 1 bit |
| SByte | SINT | 1 octet |
| Byte | USINT | 1 octet |
| Int16 | INT | 2 octets |
| UInt16 | UINT | 2 octets |
| Int32 | DINT | 4 octets |
| UInt32 | UDINT | 4 octets |
| Int64 | LINT | 8 octets |
| UInt64 | ULINT | 8 octets |
| Float | REAL | 4 octets |
| Double | LREAL | 8 octets |
| String | STRING | longueur maximale + 2 octets |
| DateTime | DTL | 12 octets |
Les valeurs sur plusieurs octets emploient automatiquement l'ordre gros-boutiste natif de S7 ; il n'y a pas d'option d'ordre des octets parce qu'aucune n'est nécessaire.
Un tag String lit la disposition STRING S7 standard : un octet de maximum déclaré, un octet de longueur courante, puis des caractères ASCII. La longueur maximale doit correspondre à la déclaration STRING du bloc (vide signifie le maximum S7 de 254) ; le pilote transfère longueur maximale + 2 octets par lecture. Un tag DateTime correspond à la structure DTL de la famille S7-1200/1500 (de l'année aux nanosecondes) ; l'ancien DATE_AND_TIME de 8 octets n'est pas proposé.
Écritures
Les tags dont l'accès est Lecture et écriture ou Écriture seule peuvent être écrits. Les écritures adressent la même zone, le même octet et le même bit que les lectures : une écriture booléenne pose son unique bit, tout le reste écrit les octets exacts du type. Un nouveau tag démarre en Lecture seule.
Découverte
S7comm n'a pas de découverte par diffusion, si bien que le Connector n'affiche aucun bouton Découvrir pour ce pilote. Ajoutez l'équipement et ses tags à la main.
Bon à savoir
- Sur les CPU S7-1200/1500, l'adressage absolu de S7comm exige deux réglages dans le projet Siemens : Autoriser l'accès via communication PUT/GET sur la CPU, et l'accès optimisé aux blocs désactivé sur chaque bloc de données que vous adressez. Un DB optimisé n'a pas de décalage en octets à adresser.
- Les zones Timer et Counter s'adressent par numéro, pas par décalage en octets : la zone demande la temporisation ou le compteur lui-même (T0, T1, T2 et C0, C1, C2). Chaque valeur tient sur un mot de 16 bits, associez-la donc à Int16 ; un type de donnée plus large ou plus étroit est refusé, le tag étant nommé dans le journal, et les autres tags de l'équipement continuent de se lire.
- 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.
- Un câble débranché après que l'équipement est en ligne est remarqué à la lecture suivante : l'équipement passe hors ligne, ses tags passent en mauvaise qualité, et il se reconnecte de lui-même une fois le réseau revenu. Une adresse que la CPU refuse ne fait pas cela, si bien qu'un tag mal saisi n'emporte jamais le reste de l'équipement avec lui.