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.

Afficher en Markdown

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.