Bloque de funciones ModbusServer

Presentación

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.

Códigos funcionales admitidos

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.

Representación gráfica

G-SE-0043454.1.gif-high.gif

 

 

Parámetros

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.

Códigos de retorno

En esta tabla se muestran los valores de los códigos de retorno de la biblioteca SE_ModbusT­CP_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.

Lista de constantes globales

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.