Bloque de funciones ModbusServer
El bloque de funciones ModbusServer forma parte de la biblioteca SE_ModbusTCP_Slave. Gestiona las peticiones de ModbusTCP de escribir y leer datos entre el controlador HMI SCU como servidor y los clientes Modbus. Puede dar servicio a un máximo de 10 conexiones cliente. El bloque de funciones opera en determinadas áreas de datos de HMI SCU que representan los registros de entrada y salida de Modbus.
El bloque de funciones ModbusServer se ejecuta en un POU asignado a una tarea y, por lo tanto, si el controlador está en la modalidad de detención, la tarea con el bloque de funciones ModbusServer no se ejecuta.
El ID de la unidad de ModbusServer es 255.
Se admiten los siguientes códigos funcionales:
Código funcional |
Descripción |
---|---|
3 (03 hex) o 4 (04 hex) |
Lectura de varios registros |
6 (06 hex) |
Escritura de registro único |
16 (10 hex) |
Escritura de varios registros |
23 (17 hex) |
Lectura/escritura de varios registros |
Pueden gestionarse hasta 10 conexiones cliente a la vez. Todas las peticiones de clientes se procesan dentro de un mismo ciclo del controlador; sin embargo, solo se procesa una petición por conexión cliente.
En esta tabla se describen las entradas del bloque de funciones:
Entrada |
Tipo |
Valor predeterminado |
Descripción |
---|---|---|---|
wPort |
WORD |
502 |
El puerto de servidor 502 es el predeterminado para Modbus1 |
pInputData |
POINTER TO WORD |
- |
Primera dirección de palabra de la tabla de datos de entrada. |
pOutputData |
POINTER TO WORD |
- |
Primera dirección de palabra de la tabla de datos de salida. |
uiInputDataSize |
UINT |
- |
Tamaño de la tabla de datos de entrada. |
uiOutputDataSize |
UINT |
- |
Tamaño de la tabla de datos de salida. |
xEnable |
BOOL |
FALSE |
Cuando es TRUE, se ejecuta el bloque de funciones. Los valores de las entradas del bloque de funciones pueden modificarse y sus salidas se actualizan continuamente. Cuando es FALSE, deja de ejecutarse el bloque de funciones y sus salidas se restablecen. |
xReset |
BOOL |
FALSE |
Cuando es TRUE, se vuelven a habilitar la comunicación y el bit de error. |
tTimeout |
UDINT |
0 |
Tiempo de espera de escritura de Modbus en ms. Si se agota el tiempo de espera, el bloque de funciones debe restablecerse para poder volver a habilitar la comunicación. |
1 El puerto 502 se utiliza como predeterminado para el protocolo Modbus TCP/IP. Si el protocolo Modbus TCP/IP (servidor o cliente) ya está configurado en Vijeo-Designer para el controlador, utilice otro puerto del bloque de funciones para la comunicación entre el servidor y los clientes. |
En esta tabla se describen las salidas del bloque de funciones:
Salida |
Tipo |
Valor predeterminado |
Descripción |
---|---|---|---|
xBusy |
BOOL |
- |
Cuando es TRUE, el bloque de funciones está atendiendo una petición de cliente. Cuando es FALSE, el bloque de funciones ha dejado de atender una petición de cliente. El bloque de funciones debe mantenerse en una tarea activa del programa de aplicación durante al menos tanto tiempo como xBusy sea TRUE. De lo contrario, las tablas de datos se establecen en 0 mientras que las salidas del bloque de funciones no varían. |
xError |
BOOL |
- |
Cuando es TRUE, indica que se ha detectado un error. La ejecución del bloque de funciones se ha detenido. El bloque de funciones debe restablecerse para volver a habilitar la comunicación. |
byClientConnections |
BYTE |
0 |
Número de conexiones activas. |
En esta tabla se muestran los valores de los códigos de retorno de la biblioteca SE_ModbusTCP_Slave que se envían a los clientes para varias peticiones erróneas, o como respuesta a operaciones realizadas correctamente:
Nombre |
Tipo |
Valor |
Descripción |
---|---|---|---|
RESPONSE_SUCCESS |
BYTE |
16#0 |
Comunicación establecida correctamente. |
ILLEGAL_FUNCTION |
BYTE |
16#1 |
El servidor no admite el código funcional. |
ILLEGAL_DATA_ADDRESS |
BYTE |
16#2 |
El servidor no admite el desplazamiento de registro. |
ILLEGAL_DATA_VALUE |
BYTE |
16#3 |
Valor incorrecto. |
SLAVE_DEVICE_FAILURE |
BYTE |
16#4 |
Se ha detectado un error en el dispositivo del servidor. |
ACKNOWLEDGE |
BYTE |
16#5 |
Respuesta del servidor a una petición de cliente válida. |
SLAVE_DEVICE_BUSY |
BYTE |
16#6 |
Respuesta del servidor a una petición de cliente enviada mientras ya había una operación en curso. |
GATEWAY_PATH_UNAVAILABLE |
BYTE |
16#A |
Se ha detectado un error al comunicarse a través de una pasarela (la pasarela está ocupada o mal configurada). |
GATEWAY_DEVICE_FAILED_TO_RESPOND |
BYTE |
16#B |
El dispositivo conectado a la pasarela no ha respondido. |
En esta tabla se muestra la lista de constantes globales (GCL) de la biblioteca SE_ModbusTCP_Slave:
Nombre |
Tipo |
Valor |
Descripción |
---|---|---|---|
MODBUS_TCP_MAXCLIENTS |
UINT |
10 |
GCL no editable que contiene el número máximo de conexiones activas. |