F145F146_MODBUS_MASTER

Escribir datos en el esclavo o leer datos desde el esclavo

Códigos de función disponibles (con ejemplos de programación)

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

Usar esta instrucción para escribir datos de un maestro en un esclavo o para leer datos de un esclavo a través del puerto de comunicación utilizando el protocolo Modbus RTU, tal y como se define en los registros del sistema del puerto utilizado. Asegurarse de que el protocolo es el mismo para el maestro y el esclavo.

Parámetros

Entrada

Port (WORD, INT, UINT)

Especificar los puertos de comunicación (dependiendo del tipo de PLC):

  • Puerto COM, por ejemplo SYS_COM0_PORT

  • Puerto Ethernet, por ejemplo SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU por ejemplo 16#xx01 (xx = número de slot) en COM01

SlaveAddress (WORD, INT, UINT)

Número de estación del esclavo (0–255).

Ajustar a 1, si se aplica una SYS_ETHERNET_USER_CONNECTION_xx al Port de entrada

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)

Dirección de inicio (0–65535). El tipo de dirección depende del comando especificado en FunctionCode*.

NumberOfRegisters* (WORD, INT, UINT)

Número de bits o palabras de transmisión.

  • 1–2040 para los códigos de función 01, 02

  • 2–2040 para el código de función 15

  • 1–127 para los códigos de función 03, 04

  • 2–127 para el código de función 16

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

Dirección de origen en el maestro para los datos que se escribirán en el esclavo.

Observaciones

  • En lugar de utilizar esta instrucción F, se recomienda utilizar la instrucción FP7 correspondiente: FP_MODBUS_MASTER

  • Al contrario que en las otras instrucciones F145 ó F146, se puede indicar directamente en el parámetro FunctionCode* el comando Modbus requerido.

  • Las instrucciones F145 o F146 solo se pueden ejecutar si no está activa ninguna de las dos instrucciones. Evaluar la bandera "F145/F146 no activa" para comprobar el estado de las instrucciones.

  • La instrucción F145 solicita que se envíen datos al esclavo. El proceso real se lleva a cabo al final del ciclo de scan.

  • Evaluar la bandera "F145/F146 error" para comprobar si la transmisión se ha completado sin errores.

  • Cuando se realiza una difusión (SlaveAddress a 0), comprobar que se la transmisión solamente se ejecuta una vez alcanzado el máximo tiempo de ciclo de scan.

  • Las instrucciones F145 o F146 no se pueden ejecutar si la dirección destino es un relé interno especial (desde R9000), un registro de datos especial (desde DT9000/DT90000), o un fichero de datos FL.

  • Comandos soportados por el maestro:

    Código de función

    Constante del sistema

    Registro de inicio

    Número de registros

    Dirección Modbus (en función del esclavo 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

  • Especificaciones Modbus para los PLCs de Panasonic:

    Dirección del área Modbus

    Nombre de la memoria Modbus

    Tipo de memoria

    Dirección de los PLC de 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 …

Consejo

Consultar en el Manual de Usuario del PLC concreto las direcciones Modbus y los rangos de memoria soportados por los PLCs de Panasonic. Si las direcciones están fuera del rango soportado, se produce un error.

FP-X0, Multi-Communication Unit: Para obtener una información más detallada, consultar el manual correspondiente que puede encontrar en el centro de descargas de Internet.

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • Si los datos del esclavo o del maestro exceden el rango de direcciones disponibles.

  • Si el modo de comunicación no está configurado como MEWTOCOL-COM Maestro/Esclavo o Modbus RTU Maestro/Esclavo.

  • Si no esta instalado el casete de comunicaciones necesario para el puerto adicional (COM) seleccionado.

sys_bIsOperationErrorNonHold (pasa a TRUE para un ciclo de scan)
  • Si los datos del esclavo o del maestro exceden el rango de direcciones disponibles.

  • Si el modo de comunicación no está configurado como MEWTOCOL-COM Maestro/Esclavo o Modbus RTU Maestro/Esclavo.

  • Si no esta instalado el casete de comunicaciones necesario para el puerto adicional (COM) seleccionado.

Ejemplo

SYS_MODBUS_01_READ_COIL

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso especial de que el esclavo conectado sea un PLC de Panasonic configurado a través del registro del sistema en modo Modbus RTU esclavo, se leen uno o varios bits de:

  • Y (Salida)

  • R (Relés internos)

Ejemplo

Ejecutar el comando Modbus 01: lee el bit 1 de un esclavo Modbus comenzando por el registro de inicio 56 establecido por la variable StartRegister. A continuación, el comando almacena el bit 1 en el maestro comenzando en la dirección establecida por la variable bBool2. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, el registro inicial 56 se corresponde con la salida Y38 (3*16+8=56).

SYS_MODBUS_02_READ_INPUT

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso especial de que el esclavo conectado sea un PLC de Panasonic configurado a través del registro del sistema en modo Modbus RTU esclavo, se leen uno o varios bits de:

  • X (Entrada)

Ejemplo

Ejecutar el comando Modbus 02: lee el bit 1 de un esclavo Modbus comenzando por el registro de inicio 66 establecido por la variable StartRegister. A continuación, el comando almacena el bit 1 en el maestro comenzando en la dirección establecida por la variable bBool2. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, el registro inicial 66 se corresponde con la entrada X42 (4*16+2=66).

SYS_MODBUS_03_READ_HOLDING_REGISTER

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso especial de que el esclavo conectado sea un PLC de Panasonic configurado a través del registro del sistema en modo Modbus RTU esclavo, se leen uno o varios bits de:

  • DT (registros de datos)

Ejemplo

Ejecutar el comando Modbus 03: lee 2 palabras de un esclavo Modbus comenzando por el registro de inicio 100 establecido por la variable StartRegister. A continuación, el comando almacena las 2 palabras en el maestro Modbus 2 comenzando por la dirección establecida por la variable rCount2. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, el registro inicial 100 se corresponde con el registro de datos DDT100.

Número máximo de registros: 127.

SYS_MODBUS_04_READ_INPUT_REGISTERS

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso especial de que el esclavo conectado sea un PLC de Panasonic configurado a través del registro del sistema en modo Modbus RTU esclavo, se leen uno o varios bits de:

  • WL0–WL127 (Relés de enlace)

  • LD0–LD256 (Registros de enlace)

Ejemplo

Ejecutar el comando Modbus 04: lee 7 palabras de un esclavo Modbus comenzando por el registro de inicio 2018 establecido por la variable StartRegister. A continuación, el comando almacena las 7 palabras en el maestro, comenzando por el LD25 establecido por la variable MasterData. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, el registro inicial 2018 se corresponde con el registro de enlace LD18.

Número máximo de registros: 127.

SYS_MODBUS_05_FORCE_COIL

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso de que el esclavo sea un PLC de Panasonic en modo Modbus RTU, se escriben uno o varios bits en:

  • Y (Salida)

  • R (Relés internos)

Ejemplo

Ejecutar el comando Modbus 05: escribe el bit 1 en un esclavo Modbus comenzando por la dirección WY1 establecida por la variable MasterData. A continuación, el comando almacena el bit 1 en un esclavo Modbus comenzando por el registro inicial 35 establecido por la variable StartRegister. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, la dirección 35 se corresponde con la salida Y23 (2*16+3=35).

Cuando se escriban datos de varios bits utilizar la constante SYS_MODBUS_15_FORCE_COILS

Número máximo de registros: 1

SYS_MODBUS_06_PRESET_REGISTER

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso de que el esclavo sea un PLC de Panasonic en modo Modbus RTU, se escriben uno o varios bits en:

  • DT (registros de datos)

Ejemplo

Ejecutar el comando Modbus 06: escribe la palabra 1 en un esclavo Modbus comenzando en la dirección DT14 establecida por la variable MasterData. A continuación, el comando almacena la palabra 1 en el esclavo Modbus, comenzando por el registro inicial 21 establecido por la variable StartRegister. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, el registro inicial 21 se corresponde con el registro de datos DT21.

Cuando se escriban datos de varios bits utilizar la constante SYS_MODBUS_15_FORCE_COILS

Número máximo de registros: 1

SYS_MODBUS_15_FORCE_COILS

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso de que el esclavo sea un PLC de Panasonic en modo Modbus RTU, se escriben uno o varios bits en:

  • Y (Salida)

  • R (Relés internos)

Ejemplo

Ejecutar el comando Modbus 15: escribe 64 bits en un esclavo Modbus, comenzando por la dirección WY1 establecido por la variable MasterData. A continuación, el comando almacena los 64 bits en el esclavo Modbus comenzando por el registro inicial 48 establecido por la variable StartRegister. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, la dirección 48 se corresponde con la salida Y30 (3*16=48).

SYS_MODBUS_16_PRESET_REGISTERS

Cuando se asigna esta constante al parámetro de entrada FunctionCode*, se ejecuta el comando Modbus correspondiente.

En el caso de que el esclavo sea un PLC de Panasonic en modo Modbus RTU, se escriben uno o varios bits en:

  • DT (registros de datos)

Ejemplo

Ejecutar el comando Modbus 16: escribe los datos en un esclavo Modbus comenzando por la dirección establecida por la variable rCount1. A continuación, el comando almacena los datos en el esclavo Modbus 2 comenzando por el registro inicial 100 establecido por la variable StartRegister. La dirección del esclavo se traduce en una dirección específica del dispositivo dependiendo de las especificaciones Modbus de este.

Si el esclavo es un PLC de Panasonic, el registro inicial 100 se corresponde con el registro de datos DDT100.

Número máximo de registros: 127.

Modificado el: 2024-12-18Comentarios sobre esta páginaLínea directa de Panasonic