Siemens S7

Relier des automates Siemens S7 par S7comm : châssis et emplacement, zones mémoire, adressage typé par octet et par bit, et les types de donnée natifs.

Afficher en Markdown

Le pilote Siemens S7 parle à des automates Siemens S7 par S7comm, le protocole Step 7 classique porté par ISO-on-TCP. Il emploie un adressage absolu : zone 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 remplissez les champs ci-dessous; le volet ne montre que les champs que ce protocole emploie.

Connexion

Champ Sens Par 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 fixe. Deux zones de nombre sur une ligne : le châssis d'abord, l'emplacement ensuite. 0 / 0
Intervalle 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 en châssis 0, emplacement 0 ou 1; une CPU S7-300 typique est en châssis 0, emplacement 2; les châssis S7-400 varient selon la configuration. Un mauvais emplacement fait échouer la connexion plutôt que de lire de mauvaises données.

Chaque tag peut poser son propre intervalle de scrutation (ms); une valeur de 0 sur un tag retombe sur l'intervalle de l'équipement.

Adressage

Un tag S7 est adressé par des champs typés, non par une chaîne en texte libre. Le volet les montre dans la carte Source du tag :

Champ Sens Valeurs acceptées Par défaut
Zone La zone mémoire à lire. DataBlock, Merker, ProcessInput, ProcessOutput, Timer, Counter DataBlock
Numéro de DB Quel bloc de données, montré seulement quand la zone est DataBlock. 0 et au-delà 1
Octet de départ 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 au-delà 0
Bit (0 à 7) La position du bit dans l'octet de départ. Montré seulement pour les tags booléens. 0 à 7 0
Longueur maximale (vide = 254) Le maximum déclaré d'un STRING S7. Montré seulement pour les tags de texte hors des zones Timer et Counter. 1 et au-delà, 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 ou E), ProcessOutput les sorties de l'image du procédé (Q ou A), et Timer et Counter les zones de temporisations et de compteurs S7. Les temporisations et les compteurs sont adressés par numéro, non par octet : Timer avec le numéro 5 lit T5, et Counter avec le numéro 3 lit C3. La traduction des 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épart 12
DB1.DBX3.4 Booléen Zone DataBlock, numéro de DB 1, octet de départ 3, bit 4
DB2.DBW20 portant un INT Int16 Zone DataBlock, numéro de DB 2, octet de départ 20
MW10 Int16 Zone Merker, octet de départ 10
M10.3 Booléen Zone Merker, octet de départ 10, bit 3
IB2 Byte Zone ProcessInput, octet de départ 2
Q4.1 Booléen Zone ProcessOutput, octet de départ 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. Tout autre type est adressé à l'octet de départ, sur la largeur exacte de son type de donnée. La ligne en lecture seule Adresse source (bus) de la carte Source montre l'adresse assemblée au fil de vos modifications.

Types de donnée

Le type de donnée du tag décide du type natif S7 sur le bus. Les treize largeurs natives de 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 plus 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 de texte lit la disposition standard du STRING S7 : un octet de maximum déclaré, un octet de longueur courante, puis des caractères ASCII. La longueur maximale doit correspondre à la déclaration du STRING dans le bloc (vide veut dire le maximum S7 de 254); le pilote transfère la longueur maximale plus 2 octets par lecture. Un tag DateTime correspond à la structure DTL de la famille S7-1200 et S7-1500 (de l'année aux nanosecondes); l'ancien DATE_AND_TIME de 8 octets n'est pas offert.

É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 bit unique, 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 : le Connector ne montre donc aucun bouton Découvrir pour ce pilote. Ajoutez l'équipement et ses tags à la main.

Bon à savoir

  • Sur les CPU S7-1200 et S7-1500, l'adressage absolu de S7comm exige deux réglages dans le projet Siemens : Autoriser l'accès par 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 aucun décalage en octets à adresser.
  • Les zones Timer et Counter sont adressées par numéro, non 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 est un mot de 16 bits : associez-la donc à Int16; un type de donnée plus large ou plus étroit est refusé avec le tag nommé dans le journal, et les autres tags de l'équipement continuent de lire.
  • Un automate injoignable ne coûte rien au démarrage : l'équipement continue de réessayer en arrière-plan et ses tags lisent une mauvaise qualité jusqu'à ce que la connexion aboutisse.
  • Un câble débranché après la mise en ligne de l'équipement 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 : un seul tag mal saisi n'emporte donc jamais le reste de l'équipement avec lui.