FP_MODBUS_MASTER

Écrire des données vers l’esclave ou lire des données de l’esclave

Utilisez cette instruction pour écrire des données d’un maitre vers un esclave ou pour lire les données d’un esclave via le port de communication avec le protocole Modbus RTU, selon les paramètres définis dans les registres système du port utilisé. Le maître et l’esclave doivent être définis avec le même protocole.

Paramètres

Entrée

Port (WORD, INT, UINT)

Indique les ports de communication (selon le type d’API) :

  • Port COM, par ex. SYS_COM0_PORT

  • Port Ethernet, par ex. SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU, par ex. 16#xx01 (xx = numéro du connecteur) dans COM01

SlaveAddress (WORD, INT, UINT)

Numéro de station de l’esclave

  • Pour FP7 uniquement :

    • Codes fonction 05, 06, 15, 16 : 0–247

      Avec un module de communication série (SCU) et lorsque "0" est spécifié pour le numéro de station esclave, un transfert global est exécuté. Dans ce cas, il n’y a pas de message réponse de la station esclave.

    • Codes fonction 01, 02, 03, 04 : 1-247

  • Pour les autres automates :

    • Codes fonction 05, 06, 15, 16 : 0–99

      Lorsque "0" est spécifié pour le numéro de station esclave, un transfert global est exécuté. Dans ce cas, il n’y a pas de message réponse de la station esclave.

    • Codes fonction 01, 02, 03, 04 : 1-99

Défini sur 1, si SYS_ETHERNET_USER_CONNECTION_xx est appliquée à l’entrée Port

FunctionCode* (WORD, INT, UINT)

SYS_MODBUS_01_READ_COIL

SYS_MODBUS_02_READ_INPUT

SYS_MODBUS_03_READ_HOLDING_REGISTER

SYS_MODBUS_04_READ_INPUT_REGISTERS

SYS_MODBUS_05_FORCE_COIL

SYS_MODBUS_06_PRESET_REGISTER

SYS_MODBUS_15_FORCE_COILS

SYS_MODBUS_16_PRESET_REGISTERS

StartRegister (WORD, INT, UINT)

Adresse de départ (0–65535). Le type d’adresse dépend de la commande spécifiée par FunctionCode*.

NumberOfRegisters* (WORD, INT, UINT)

Nombre de bits ou de mots de transmission.

  • 1 pour les codes fonction 05, 06

  • 1–2040 pour les codes fonction 01, 02

  • 2–2040 pour le code fonction 15

  • 1–127 pour les codes fonction 03, 04

  • 2–127 pour le code fonction 16

MasterData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

Adresse source sur le maître pour les données à écrire vers l’esclave.

Sortie

Result (WORD, INT, UINT)

Pour FP7 uniquement : Vous trouverez une description de tous les codes d’erreur dans le tableau des codes d’erreur de communication Modbus/MEWTOCOL.

Pour les autres automates : défini sur 0

Chronogramme

  1.  (1) Drapeau "Effacer pour envoi" de la communication maître, par ex. sys_bIsEthernetUserConnection1MasterCommunication
  2.  (2) Vérifier que le drapeau "Effacer pour envoi" de la communication maître est TRUE et que le drapeau d’envoi de la communication maître est FALSE
  3.  (3) Drapeau d’envoi de la communication maître, par ex. sys_bIsEthernetUserConnection1MasterCommunicationActive

    Envoi en cours : Drapeau d’envoi de la communication maître est TRUE

    Envoi terminé : Drapeau d’envoi de la communication maître est FALSE

  4.  (4) Exécuter cette instruction
  5.  (5) Drapeau "Envoi terminé" de la communication maître, par ex. sys_bIsEthernetUserConnection1CommunicationError

    Exécution terminée normalement : FALSE

    Exécution terminée anormalement : TRUE

  6.  (6) Envoyer les données
  7.  (7) Traitement de la réponse reçue

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si les données de l’esclave ou du maître sont en dehors de la plage d’adresses disponible.
  • Si le mode de communication n’est pas défini sur MEWTOCOL-COM Maître/Esclave ou Modbus RTU Maître/Esclave.
  • Si le port COM sélectionné requiert une cassette de communication qui n’a pas été installée.
sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si les données de l’esclave ou du maître sont en dehors de la plage d’adresses disponible.
  • Si le mode de communication n’est pas défini sur MEWTOCOL-COM Maître/Esclave ou Modbus RTU Maître/Esclave.
  • Si le port COM sélectionné requiert une cassette de communication qui n’a pas été installée.

Exemple

SYS_MODBUS_01_READ_COIL

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Dans le cas particulier où l’esclave connecté est un automate Panasonic configuré en tant qu’esclave Modbus RTU via le registre système, un ou plusieurs bits sont lus à partir de :

  • Y (Sortie)

  • R (Drapeaux internes)

Exemple

Exécution de la commande Modbus 01 : lecture d’1 bit à partir d’un esclave Modbus à partir du registre de départ 56 défini par la variable StartRegister. Ce bit est ensuite sauvegardé dans le maître à partir de l’adresse définie par la variable bBool2. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, le registre de départ 56 correspond à la sortie Y38 (3*16+8=56).

SYS_MODBUS_02_READ_INPUT

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Dans le cas particulier où l’esclave connecté est un automate Panasonic configuré en tant qu’esclave Modbus RTU via le registre système, un ou plusieurs bits sont lus à partir de :

  • X (Entrée)

Exemple

Exécution de la commande Modbus 02 : lecture d’1 bit à partir d’un esclave Modbus à partir du registre de départ 66 défini par la variable StartRegister. Ce bit est ensuite sauvegardé dans le maître à partir de l’adresse définie par la variable bBool2. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, le registre de départ 66 correspond à l’entrée X42 (4*16+2=66).

SYS_MODBUS_03_READ_HOLDING_REGISTER

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Dans le cas particulier où l’esclave connecté est un automate Panasonic configuré en tant qu’esclave Modbus RTU via le registre système, un ou plusieurs bits sont lus à partir de :

  • DT (registres de données)

Exemple

Exécution de la commande Modbus 03 : lecture de 2 mots à partir d’un esclave Modbus à partir du registre de départ 100 défini par la variable StartRegister. Ces 2 mots sont ensuite sauvegardés dans le maître Modbus 2 à partir de l’adresse définie par la variable rCount2. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, le registre de départ 100 correspond au registre de données DT100.

Nombre maximum de registres : 127

SYS_MODBUS_04_READ_INPUT_REGISTERS

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Dans le cas particulier où l’esclave connecté est un automate Panasonic configuré en tant qu’esclave Modbus RTU via le registre système, un ou plusieurs bits sont lus à partir de :

  • WL0–WL127 (Drapeaux de liaison)

  • LD0–LD256 (Registres de liaison)

Exemple

Exécution de la commande Modbus 04 : lecture de 7 mots à partir d’un esclave Modbus à partir du registre de départ 2018 défini par la variable StartRegister. Les 7 mots sont ensuite sauvegardés dans le maître à partir de LD25 défini par la variable MasterData. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, le registre de départ 2018 correspond au registre de liaison LD18.

Nombre maximum de registres : 127

SYS_MODBUS_05_FORCE_COIL

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Si l’esclave connecté est un automate Panasonic en mode Modbus RTU, un ou plusieurs bits sont écrits dans :

  • Y (Sortie)

  • R (Drapeaux internes)

Exemple

Exécution de la commande Modbus 05 : écriture d’1 bit dans un esclave Modbus à partir de l’adresse WY1 définie par la variable MasterData. Ce bit est ensuite sauvegardé dans un esclave Modbus à partir du registre de départ 35 défini par la variable StartRegister. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, l’adresse 35 correspond à la sortie Y23 (2*16+3=35).

Lorsque plusieurs bits sont écrits, utilisez la constante SYS_MODBUS_15_FORCE_COILS

Nombre maximum de registres : 1

SYS_MODBUS_06_PRESET_REGISTER

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Si l’esclave connecté est un automate Panasonic en mode Modbus RTU, un ou plusieurs bits sont écrits dans :

  • DT (registres de données)

Exemple

Exécution de la commande Modbus 06 : écriture d’1 mot dans un esclave Modbus à partir de l’adresse DT14 définie par la variable MasterData. Ce mot est ensuite sauvegardé dans l’esclave Modbus à partir du registre de départ 21 défini par la variable StartRegister. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, le registre de départ 21 correspond au registre de données DT21.

Lorsque plusieurs bits sont écrits, utilisez la constante SYS_MODBUS_15_FORCE_COILS

Nombre maximum de registres : 1

SYS_MODBUS_15_FORCE_COILS

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Si l’esclave connecté est un automate Panasonic en mode Modbus RTU, un ou plusieurs bits sont écrits dans :

  • Y (Sortie)

  • R (Drapeaux internes)

Exemple

Exécution de la commande Modbus 15 : écriture de 64 bits dans un esclave Modbus à partir de l’adresse WY1 définie par la variable MasterData. Les 64 bits sont ensuite sauvegardés dans l’esclave Modbus à partir du registre de départ 48 défini par la variable StartRegister. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, l’adresse 48 correspond à la sortie Y30 (3*16=48).

SYS_MODBUS_16_PRESET_REGISTERS

Lorsque vous affectez cette constante au paramètre d’entrée FunctionCode*, la commande Modbus correspondante est exécutée.

Si l’esclave connecté est un automate Panasonic en mode Modbus RTU, un ou plusieurs bits sont écrits dans :

  • DT (registres de données)

Exemple

Exécution de la commande Modbus 16 : écriture de données dans un esclave Modbus à partir de l’adresse définie par la variable rCount1. Ces données sont ensuite sauvegardées dans l’esclave Modbus 2 à partir du registre de départ 100 défini par la variable StartRegister. L’adresse de l’esclave est convertie en une adresse spécifique au dispositif en fonction des caractéristiques Modbus du dispositif.

Si l’esclave connecté est un automate Panasonic, le registre de départ 100 correspond au registre de données DT100.

Nombre maximum de registres : 127

Modifié le : 2024-10-23Commentaires sur cette pageAssistance téléphonique