Escribir datos en el esclavo o leer datos desde el esclavo
Códigos de función disponibles (con ejemplos de programación)
SYS_MODBUS_03_READ_HOLDING_REGISTER
SYS_MODBUS_04_READ_INPUT_REGISTERS
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.
Entrada
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
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
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
Dirección de inicio (0–65535). El tipo de dirección depende del comando especificado en FunctionCode*.
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
Dirección de origen en el maestro para los datos que se escribirán en el esclavo.
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 … |
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.
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.
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.
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)
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).
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:
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).
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:
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.
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)
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.
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)
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
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:
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
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)
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).
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:
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.