FP_MODBUS_MASTER

Escribir datos en el esclavo o leer datos desde el esclavo

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

  • Para FP7 solamente:

    • Códigos de función 05, 06, 15, 16: 0–247

      Cuando se utiliza SCU y se especifica "0" para el número del esclavo, se ejecuta una transferencia global. En este caso, no hay mensaje de respuesta del esclavo.

    • Códigos de función 01, 02, 03, 04: 1-247

  • Para otros PLCs:

    • Códigos de función 05, 06, 15, 16: 0–99

      Cuando se especifica "0" para el número del esclavo, se ejecuta una transferencia global. En este caso, no hay mensaje de respuesta del esclavo.

    • Códigos de función 01, 02, 03, 04: 1-99

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 para los códigos de función 05, 06

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

Salida

Result (WORD, INT, UINT)

Para FP7 solamente: Para obtener una descripción de todos los códigos de error, consultar la tabla de códigos de error de comunicación Modbus/MEWTOCOL.

Para otros PLCs: ajustar a 0

Diagrama de tiempos

  1.  (1) Bandera "clear-to-send" (listo para envío) de la comunicación maestra, p. ej., sys_bIsEthernetUserConnection1MasterCommunication
  2.  (2) Comprobar que la bandera "clear-to-send (listo para envío) de la comunicación maestra es TRUE y verificar que la bandera de envío de la comunicación maestra es FALSE
  3.  (3) Bandera de envío de la comunicación maestra, p. ej., sys_bIsEthernetUserConnection1MasterCommunicationActive

    Durante el envío: Bandera de envío de la comunicación maestra es TRUE

    Envío realizado: Bandera de envío de la comunicación maestra es FALSE

  4.  (4) Ejecutar esta instrucción
  5.  (5) Bandera de envío realizado de la comunicación maestra, p. ej., sys_bIsEthernetUserConnection1CommunicationError

    Finalización normal: FALSE

    Finalización anormal: TRUE

  6.  (6) Envío de datos
  7.  (7) Procesamiento de la respuesta recibida

Banderas de error

sys_bIsOperationErrorHold (pasa a TRUE y permanece TRUE)
  • si el área especificada utilizando el modificador índice supera el límite.

  • 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 el área especificada utilizando el modificador índice supera el límite.

  • 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 DT100.

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

Número máximo de registros: 127.

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