F145F146_MODBUS_MASTER

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

Codes fonctions disponibles (avec exemples de programmation)

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

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 (0–255).

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–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.

Remarques

  • Au lieu d’utiliser cette instruction F, nous recommandons d’utiliser l’instruction FP7 correspondante : FP_MODBUS_MASTER

  • Contrairement aux autres instructions F145 ou F146, la commande Modbus requise peut être directement définie par le paramètre FunctionCode*.

  • Les instructions F145 ou F146 ne peuvent être exécutées que si aucune des instructions n’est active. Évaluez le drapeau "F145/F146 non active" dans votre programme pour vérifier l’état des instructions.

  • L’instruction F145 n’envoie qu’une requête de transmission des données à l’esclave. La procédure elle-même a lieu en fin de cycle.

  • Évaluez le drapeau "F145/F146 erreur" pour vérifier si la transmission a été exécutée normalement ou si une erreur est apparue.

  • En cas de diffusion (broadcasting, SlaveAddress définie sur 0), veillez à ce que la transmission ne soit exécutée qu’après que la durée du cycle maximale s’est écoulée.

  • L’instruction F145 ou F146 ne peut pas être exécutée si l’adresse de destination est un drapeau interne spécial (à partir de R9000) ou un registre spécial de données (à partir de DT9000/DT90000) ou un registre fichier FL.

  • Commandes prises en charge par le maître :

    Code fonction

    Constante système

    Registre de départ

    Nombre de registres

    Adresses Modbus (en fonction de l’esclave Modbus)

    01

    SYS_MODBUS_01_ READ_COIL

    0–65535

    1–2040

    000001–065536

    02

    SYS_MODBUS_02_ READ_INPUT

    0–65535

    1–2040

    100001–165536

    03

    SYS_MODBUS_03_ READ_HOLDING_ REGISTER

    0–65535

    1–127

    400001–465536

    04

    SYS_MODBUS_04_ READ_INPUT_ REGISTERS

    0–65535

    1–127

    300001–365536

    5

    SYS_MODBUS_05_ FORCE_COIL

    0–65535

    1

    000001–065536

    6

    SYS_MODBUS_06_ PRESET_REGISTER

    0–65535

    1

    400001–465536

    15

    SYS_MODBUS_15_ FORCE_COILS

    0–65535

    2–2040

    000001–065536

    16

    SYS_MODBUS_16_ PRESET_REGISTERS

    0–65535

    2–127

    400001–465536

  • Caractéristiques Modbus pour les automates Panasonic :

    Adresse de la zone Modbus

    Nom de la mémoire Modbus

    Type de mémoire

    Adresse API Panasonic

    000001 …

    COIL

    1 bits

    Y0 …

    002049 …

    R0 …

    100001 …

    INPUT

    1 bits

    X0 …

    400001 …

    HOLDING_REGISTER

    16 bits

    DT0 …

    300001 …

    INPUT_REGISTERS

    16 bits

    WL0 …

    302001 …

    LD0 …

Conseil

Pour en savoir plus sur les plages d’adresses Modbus et les plages d’adresses prises en charge par les automates Panasonic, veuillez consulter le Manuel d’utilisation de l’automate. Si l’adresse Modbus est en dehors de l’intervalle pris en charge, une erreur est renvoyée.

FP-X0, module de communication multiple : Pour en savoir plus, consulter le manuel correspondant disponible en téléchargement sur notre site Internet.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • 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 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 DDT100.

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 DDT100.

Nombre maximum de registres : 127

Modifié le : 2024-12-04Commentaires sur cette pageAssistance téléphonique