Communication Modbus TCP avec automate Siemens sur TIA Portal
- Par automationsense
- Le 27/06/2015
- Dans Automatisme
- 4 commentaires
Sur Step7 TIA Portal,la communication en Modbus TCP se fait via les blocs MB_Server et MB_Client.MB_Server permet d'utiliser l'automate actuel comme serveur Modbus alors que MB_Client permet de l'utiliser en tant que client Modbus.Un Serveur Modbus est passif et attend une requête de la part du client,un client Modbus est actif,il collecte les données du serveur Modbus en envoyant des requêtes à celui ci.Pour configurer la liaison modbus TCP sur Step7 TIA Portal,il faut choisir un automate de type S7-1200 ou S7-1500.
I) Configuration en Serveur Modbus avec MB_Server
L'instruction "MB_SERVER" communique en tant que serveur Modbus TCP via la connexion PROFINET de la CPU S7-1200. Pour utiliser l'instruction, vous n'avez pas besoin de module matériel supplémentaire. L'instruction "MB_SERVER" traite les demandes de connexion d'un client Modbus TCP, reçoit les requêtes des fonctions Modbus et envoie les messages de réponse.
Dans la palette de droite, communication ----> Autres -----> Modbus TCP -----> MB_Server
Ce bloc comprend plusieurs paramètres :
Disconnect : L'instruction "MB_SERVER" établit une connexion passive avec un module partenaire, c'est-à-dire que le serveur réagit à chaque demande de connexion TCP provenant de chacune des adresses IP. Ce paramètre vous permet de commander le moment où une demande de connexion doit être acceptée .Ce paramètre est à 0 si une connexion passive est établie,le mettre à 1 permet de couper la liaison.
Connect_ID : Définit un ID à la liaison modbus (au choix)
IP_Port : Définit le port de connexion (généralement à 502)
MB_HOLD_REG : Définit le registre à lire ou sur lequel on va écrire (peut être un momento ou un DB)
NDR : A "1" si nouvelles données écrites par le client Modbus
DR : A "1" si données lues par le client Modbus
Error : A "1" s'il y' a erreur pendant la communication
Status : code erreur
II) Configuration comme client Mobus avec MB_Client
L'instruction "MB_CLIENT" communique en tant que client Modbus TCP via la connexion PROFINET de la CPU S7-1200. Pour utiliser l'instruction, vous n'avez pas besoin de module matériel supplémentaire. L'instruction "MB_CLIENT" vous permet d'établir une connexion entre le client et le serveur, d'envoyer des requêtes et de recevoir des réponses et de commander la coupure de la liaison du serveur Modbus TCP.Le MB_Client ne peut lire que 124 registres,pour lire plus,il faut faire un autre appel.
Dans la palette de droite, communication ----> Autres -----> Modbus TCP -----> MB_Client
Explication des paramètres du bloc MB_Client :
REQ : Il s'agit d'une entrée booléenne qui contrôle le moment où les requêtes de communication Modbus sont envoyées au serveur.Lorsque cette entrée est à "1", le bloc enverra en continu des requêtes au serveur avec les paramètres indiqués par les autres entrées.Si cette entrée passe à "0" au milieu d'une requête de communication, le bloc terminera cette requête, mais il n'enverra pas de nouvelle requête jusqu'à ce que REQ redevienne vraie.
DISCONNECT : Il s'agit d'une entrée booléenne qui contrôle la connexion au serveur Modbus. Cette entrée doit être à "0" pour que le client puisse communiquer avec le serveur.
MB_MODE : il s'agit d'une entrée de type USINT qui désigne le type de commande modbus (lecture,écriture ou diagnostic).Généralement, une valeur de 0 est utilisée pour lire les données du serveur, et une valeur de 1 ou 2 est utilisée pour envoyer (écrire) des données vers serveur.La répartition détaillée de ce paramètre, ainsi que les paramètres MB_DATA_ADDR et MB_DATA_LEN et leur correspondance avec les codes de fonction Modbus se trouvent dans la documentation du bloc (accessible en appuyant sur `F1` sur votre clavier pendant que le bloc MB_CLIENT est mis en surbrillance dans TIA Portail).
MB_DATA_ADDR : Ce pamamètre est de type UDINT,il permet de désigner l'adresse de début des données à lire ou à écrire.Ce paramètre est souvent égale à 40 001 pour les "Holding Register" , mais il peut varier en fonction de la configuration de vos données et de votre serveur.La répartition détaillée de ce paramètre, ainsi que les paramètres MB_MODE et MB_DATA_LEN et leur correspondance avec les codes de fonction Modbus se trouvent dans la documentation du bloc (accessible en appuyant sur `F1`)
MB_DATA_LEN : Ce paramètre est de type UINT.Il représente le nombre de bits ou de mots de données géré par la requête.
MB_DATA_PTR : Ce paramètre est de type VARIANT.C'est un pointeur qui pointe vers l'adresse où les données de communication modbus sont stockées.Vous pouvez utiliser pour ce paramètre un DB comprenant des tableaux de booléens ou de "words".Il est également possible d'utiliser une zone mémoire et de la référencer en utilisant le format ANY, "adresse P # bit" "type de données" "longueur".
CONNECT_ID : Ce paramètre peut être choisi arbitrairement, mais assurez-vous que chaque appel MB_CLIENT utilise un ID unique
IP_PORT : Ce paramètre désigne le port de connexion,vous pouvez le laisser à 502
IP_OCTET_1 à n : Ces paramètes désignent l'adresse IP du serveur modbus
Nous avons conçu une formation en ligne qui traite uniquement du bus industriel Modbus (généralités,variantes ASCII,RTU,TCP/IP etc...).Cette formation d'environ 2 heures composée de vidéos et de fiches PDF vous permettra de mieux comprendre l'architecture d'un réseau modbus et de pouvoir décortiquer très facilement des trames modbus pour des fins de maintenance ou de diagnostic.
Vous pouvez vous inscrire à cette formation en nous contactant via le formulaire ci-dessous.
Vous inscrire à la formation modbus pour les nuls
Commentaires
-
- 1. Hélo Le 09/12/2020
Bonjour,
j'ai l'impression que la communication Modbus de Siemens par MB_Server est limitée. On arrive à communiquer à partir d'une machine sous la même plan d'adressage IP, mais pas à travers notre réseau industriel (communication testée avec Modbus Poll et Modbus Doctor). Pourtant, pas de problème réseau (l'automate répond au ping), et pas de problème avec d'autres installation (hors Siemens) qui communiquent bien sur le même vLan en Modbus.
Ca ne semble pas adapté au développement d'un SCADA (hors suite Siemens) -
- 2. Bertrand Le 16/05/2017
Bonjour ,
J'aimerais faire communiqué un automate Siemens s7-1510 couple à une carte cp 1542 sp 1 à un automate Schneider tsx 57 en modbus tcp ip. Le problème le module mb server ne communique pas . J'ai déjà un s7-1200 qui communique avec mon automate tsx 57 et ca communique nikel . Je crois comprend pas pourquoi pour le s7 1500 .
Quelqu'un peu m'aider ? Merci -
- 3. automationsense Le 19/02/2016
Bonjour clément oui c'est possible regarde sur ce lien https://support.industry.siemens.com/cs/document/75312612/comment-utiliser-les-blocs-pour-la-communication-modbus-tcp-via-un-cp-industrial-ethernet-des-s7-300-et-s7-400-dans-step-7-professional-%28tia-portal%29-?dti=0&lc=fr-WW c'est expliqué -
- 4. clément Le 19/02/2016
Bonjour,
La communication par modbus est elle disponible sur la CPU-400 programmée avec STEP7 ?
Si oui comment procède t'on ?
Ajouter un commentaire