Está en la página 1de 6

Descripción MB_SERVER (S7-1200, S7-1500)

Descripción MB_SERVER

Descripción
La instrucción "MB_SERVER" permite la comunicación como servidor Modbus TCP a
través de una conexión PROFINET. La instrucción "MB_SERVER" permite procesar solici-
tudes de conexión de un cliente Modbus TCP, recibir y procesar solicitudes de Modbus y
enviar mensajes de respuesta.
Para el S7-1200 con versión de firmware V4.0 puede utilizarse la instrucción "MB_SERV-
ER" hasta la versión de librería V3.1 inclusive. Con el S7-1200 (a partir de la versión V4.1
del firmware) y el S7-1500 puede utilizarse la instrucción "MB_SERVER" de todas las ver-
siones de librería.
La conexión puede realizarse a través de la interfaz local de la CPU o CM/CP.
Para utilizar esta instrucción no se requiere ningún módulo de hardware adicional.
ATENCIÓN
Nota de seguridad
Tenga en cuenta que todos los clientes de la red tienen acceso de lectura y escritura a la
memoria imagen de proceso de las entradas y salidas y al bloque de datos o al área de
marcas definido por el registro de retención de Modbus.
Para evitar que personas no autorizadas lleven a cabo procesos de lectura y escritura,
es posible restringir el acceso a una dirección IP. No obstante, tenga en cuenta que la
dirección habilitada también ofrece acceso a personas no autorizadas.

Conexiones múltiples a servidor


Pueden establecerse conexiones múltiples a servidor. Gracias a ello, una sola CPU puede
aceptar conexiones de varios clientes Modbus TCP al mismo tiempo.
Un servidor Modbus TCP puede admitir varias conexiones TCP (el número máximo de
conexiones depende de la CPU utilizada).
El total de conexiones de una CPU, incluidos los clientes Modbus TCP y los servidores, no
debe exceder el número máximo de conexiones admitido.
Las conexiones Modbus TCP también pueden ser utilizadas conjuntamente por instancias
de "MB_CLIENT" y/o "MB_SERVER".
Para las conexiones de servidor deben respetarse las siguientes reglas:
• Cada conexión "MB_SERVER" debe utilizar un DB de instancia unívoco.
• Cada conexión "MB_SERVER" debe utilizar una ID de conexión unívoca.
Para cada DB de instancia de la instrucción debe utilizarse la correspondiente ID de
conexión. Las ID de conexión y los DB de instancia se agrupan por pares y deben ser
unívocos para cada conexión.
• Para cada conexión debe llamarse separadamente la instrucción "MB_SERVER".

Parámetros
La tabla siguiente muestra los parámetros de la instrucción "MB_SERVER":

-1-
Descripción MB_SERVER (S7-1200, S7-1500)

Parámetro Declaración Tipo de da- Descripción


tos

La instrucción "MB_SERVER" establece una conex-


ión pasiva con un módulo interlocutor. El servidor
reacciona a una solicitud de conexión de la direc-
ción IP indicada en el SDT "TCON_IP_v4" en el par-
ámetro CONNECT.
Este parámetro permite controlar cuándo se acep-
DISCON- tará una solicitud de conexión:
Input BOOL
NECT • 0: Si no hay ninguna conexión establecida, se es-
tablece una conexión pasiva.
• 1: Inicialización del establecimiento de la conex-
ión. Si la entrada esta activada, no se ejecutan
otras operaciones. Tras deshacer la conexión cor-
rectamente, el parámetro STATUS devuelve el
valor 0003.
Puntero al registro de retención Modbus de la in-
strucción "MB_SERVER"
MB_HOLD_REG debe remitir siempre a un área de
memoria mayor de dos bytes.
El registro de retención contiene los valores a los
MB_HOLD_ VAR- que está autorizado a acceder un cliente Modbus
InOut
REG IANT mediante las funciones Modbus 3 (lectura), 6 (escri-
tura), 16 (escritura múltiple) y 23 (escritura y lectura
en una orden).
Utilice como registro de retención un bloque de da-
tos global de acceso optimizado o el área de memo-
ria de marcas.
Puntero hacia la estructura de la descripción de la
conexión
Se pueden utilizar las siguientes estructuras (SDT):
• TCON_IP_v4: contiene todos los parámetros de
direccionamiento necesarios para establecer una
conexión programada. De forma estándar es
0.0.0.0 (cualquier dirección IP), pero también se
puede indicar una dirección IP determinada de
VAR- modo que el servidor solo reaccione a las peti-
CONNECT InOut
IANT ciones de dicha dirección. Si se utiliza
TCON_IP_v4, la conexión se establece al llamar
la instrucción "MB_SERVER".
• TCON_Configured (solo con S7-1500): contiene
los parámetros de direccionamiento de una con-
exión configurada. En caso de utilizar
TCON_Configured, la conexión se establece una
vez que la CPU haya cargado la configuración
hardware.
"New Data Ready":
NDR Output BOOL • 0: No hay datos nuevos
• 1: El cliente Modbus ha escrito datos nuevos

-2-
Descripción MB_SERVER (S7-1200, S7-1500)

"Data Read":
DR Output BOOL • 0: No se han leído datos
• 1: El cliente Modbus ha leído datos
Si se produce un error durante una llamada de la in-
strucción "MB_SERVER", la salida del parámetro
ERROR Output BOOL
ERROR se pone a "1". La causa detallada del error
se muestra en el parámetro STATUS.
STATUS Output WORD Información de estado detallada de la instrucción.

Nota
Uso de la función Modbus 23 en la instrucción "MB_SERVER"
La instrucción "MB_SERVER" soporta el uso de la función Modbus 23, con la que, en
una petición, pueden escribirse datos en un registro de parada y leerse datos de dicho
registro; en cambio, la instrucción "MB_CLIENT" NO soporta esta función y devuelve un
código de error.
Asimismo, tenga en cuenta que, en una petición que contenga tanto un acceso de lec-
tura como un acceso de escritura, el acceso de escritura se ejecutará antes que el acce-
so de lectura.

Encontrará más información sobre los tipos de datos válidos en "Vista general de los ti-
pos de datos válidos".

Variables estáticas de MB_SERVER en la versión de la instrucción V4.2


En la tabla siguiente se describen las variables estáticas del bloque de datos de instancia
de la instrucción "MB_SERVER" que se pueden utilizar en el programa. A la variable
HR_Start_Offset se puede acceder en escritura. A las demás variables se puede acceder
en lectura para vigilar el estado del Modbus.

Variable Tipo de da- Valor de ar- Descripción


tos ranque

HR_Start_Off- Asignar la dirección inicial del registro de retención


WORD 0
set de Modbus.
Dirección inicial del área de direccionamiento per-
QB_Start WORD 0 mitida para las salidas que pueden escribirse (bytes
de 0 a 65535)
Número de bytes de salida que puede escribir el
maestro Modbus.
Ejemplo:
QB_Count WORD 0xFFFF QB_Start=0 y QB_Count=10: Pueden escribirse los
bytes de salida de 0 a 9.
QB_Count=0: No puede escribirse ningún byte de
salida.
Re-
WORD 0 Número total de peticiones recibidas por el servidor.
quest_Count
Server_Mes- Número total de mensajes recibidos para el servi-
WORD 0
sage_Count dor en cuestión.
Xmt_Rcv_Cou Contador para contar el número de transferencias
WORD 0
nt en las que se ha producido un error. El contador so-

-3-
Descripción MB_SERVER (S7-1200, S7-1500)

lo se incrementa cuando se recibe una solicitud


Modbus no válida.
Contador para contar el número de errores específi-
Excep-
WORD 0 cos de Modbus que dan lugar a un mensaje de er-
tion_Count
ror en "MB_CLIENT".
Contador de eventos para registrar el número de
Suc-
WORD 0 peticiones que el servidor ha podido ejecutar cor-
cess_Count
rectamente.
Indica si la conexión con el cliente asignado está
Connected BOOL FALSE establecida o no: TRUE = conectado, FALSE = no
conectado.

Reproducir las direcciones Modbus en la memoria imagen de proceso


La instrucción "MB_SERVER" permite a las funciones Modbus entrantes (1, 2, 4, 5 y 15)
acceder directamente en lectura y escritura a la memoria imagen de proceso de las entra-
das y salidas de la CPU (usando los tipos de datos BOOL y WORD).
En las CPU S7-1200, el espacio de direcciones es 1 Kbyte tanto para la memoria imagen
de proceso de las entradas como para la memoria imagen de proceso de las salidas, y 32
Kbyte para las CPU S7-1500.
La tabla siguiente muestra el área de direcciones de las funciones Modbus indicadas ante-
riormente.

Función Modbus

Código de
Función Área de datos Espacio de direcciones
función
01 Leer: bits Output 0 a 65.535
02 Leer: bits Input 0 a 65.535
04 Leer: WORD Input 0 a 65.535
05 Escribir: Bit Output 0 a 65.535
15 Escribir: bits Output 0 a 65.535
Las solicitudes Modbus entrantes con los códigos de función 3, 6, 16 y 23 escriben o leen
los registros de retención de Modbus (el registro de retención debe especificarse en el par-
ámetro MB_HOLD_REG).

Ejemplo: Direccionamiento a través de variable estática HR_Start_Offset


Las direcciones del registro de retención de Modbus empiezan en 0 (visto desde el
MB_CLIENT en 40.001). Estas direcciones corresponden al espacio de direcciones del
área de memoria de la CPU para el registro de retención. También es posible definir la var-
iable HR_Start_Offset de modo que el registro de retención de Modbus reciba una direc-
ción de inicio distinta de 0.
Ejemplo: El registro de retención empieza en la MW100 y tiene una longitud de 100
WORD. Con un valor de offset en el parámetro HR_Start_Offset, la dirección de inicio del
registro de retención se desplaza de 0 a 20. Todo direccionamiento del registro de reten-
ción por debajo de la dirección 20 y por encima de la dirección 119 da lugar a un error.

HR_Start_Offset Dirección Mínimo Máximo

-4-
Descripción MB_SERVER (S7-1200, S7-1500)

Dirección Modbus
0 99
0 (WORD)
Dirección de la CPU MW100 MW298
Dirección Modbus
20 119
20 (WORD)
Dirección de la CPU MW100 MW298

Funciones Modbus
La tabla siguiente contiene todas las funciones Modbus que soporta la instrucción
"MB_SERVER".

Código de Descripción
función

01 Leer bits de salida


02 Leer bits de entrada
03 Leer registros de parada
04 Leer palabras de entrada
05 Escribir un bit de salida
06 Escribir un registro de retención
Función de diagnóstico:
• Prueba de eco (subfunción 0x0000): La instrucción "MB_SERVER" recibe
una palabra de datos y la devuelve inalterada al cliente Modbus.
08 • Inicializar el contador de eventos (subfunción 0x000A): La instrucción
"MB_SERVER" inicializa los siguientes contadores de eventos: "Suc-
cess_Count", "Xmt_Rcv_Count", "Exception_Count", "Server_Mes-
sage_Count" y "Request_Count".
Función de diagnóstico: Tomar contador de eventos de la comunicación
Durante la comunicación, la instrucción "MB_SERVER" utiliza un contador
de eventos interno para registrar el número de peticiones de lectura y escri-
tura correctas que se envían al servidor Modbus.
11
El contador de eventos no se incrementa en las funciones 8 u 11. Lo mismo
se aplica a las solicitudes que tengan como consecuencia un error de comu-
nicación, por ejemplo en el caso de un error de protocolo (p. ej. el código de
función en la orden Modbus recibida no es compatible).
15 Escribir bits de salida
16 Escribir registro de retención
23 Escribir registros de parada y leer registros de parada con un Request

Ejemplo
Encontrará un proyecto de ejemplo para la comunicación Modbus TCP entre dos CPU
S7-1500 en el portal de Siemens Industry Online Support, con la ID de artículo 94766380.
En este ejemplo se utilizan dos funciones de Modbus. Para cada función Modbus se esta-
blece una conexión Modbus TCP a través de una pareja de bloques Modbus (MB_CLIENT
y MB_SERVER).

-5-
Descripción MB_SERVER (S7-1200, S7-1500)

Consulte también
Diferencia entre las instrucciones que funcionan síncronamente y las que funcionan
asíncronamente (S7-1200, S7-1500)

-6-

También podría gustarte