Вы находитесь на странице: 1из 11

Cliente Modbus TCP/IP S7-1200

Crear un proyecto y seleccionar un PLC (según el PLC físico que se tenga), dependiendo del
firmware del PLC será la versión del bloque a utilizar, se comenzará con la versión 4.0
Al agregar el dispositivo se le debe asignar una IP dentro de rango con respecto al equipo que
se desea leer

Luego se debe ir a bloques de programa y agregar un bloque de función FC (se le debe asignar
un nombre y el lenguaje de programación)
En el bloque de función creado (para este caso “Cliente”), se debe agregar un bloque de cliente
modbus “MB_CLIENT” (se arrastra hasta el segmento), al cual se le verá la versión a utilizar,
versión que depende del PLC que la pueda soportar

Una vez agregado al segmento, pedirá que se cree un bloque de datos dedicado a MB_CLIENT,
donde se guardarán parámetros operativos de esta función, a este bloque de datos se le da un
nombre y luego click en “Aceptar”

Al quedar enlazado el bloque de datos con el bloque operativo MB_CLIENT quedará de la


siguiente manera en el segmento

Marcará error al no haber ninguna configuración, luego se verá las entradas de esta función
Para definir la IP del equipo y guardar los datos a leer, se debe crear un bloque de datos dedicado
a esta tarea, para eso se selecciona un bloque DB, al cual se le asigna un nombre (en este caso
“Datos”) y click en “Aceptar”

Dentro de este bloque se debe crear una variable del tipo estructura (Struct), dentro de ella
crear una variable para configuración de la comunicación del tipo “TCON_IP_v4” que está
dedicada para esta función, donde se leve configurar en “InterfaceId” el valor 64 por el puerto
local a utilizar, en ID el valor 16#2 por la identificación del equipo a leer, dirección que es única,
en “ActiveEstablished” se debe dejar en “TRUE” (establecimiento activo de la comunicación
(solicita conexión por puertos bien conocidos), de lo contrario se comunica de manera pasiva) y
en “RemoteAdress”, que se debe expandir, se coloca el número IP, que en este caso es el
“192.168.0.21”, y finalmente en “RemotePort” se debe colocar el valor 502 por ser el puerto
Modbus TCP/IP por defecto.
Luego, fuera de la variable de configuración, pero dentro de la variable de tipo estructura, crear
una variable del tipo arreglo, en este caso se denominó “Lecturas” y en tipo se le escribe
“Array[0..4] of Word”, es decir, Array[inicio..fin] of Word, para este caso de 0 a 4 se crean 5
palabras dentro de este arreglo para leer variables de un equipo remoto.
Se debe compilar luego de llenar el bloque de datos para que sea considerado su contenido
dentro del equipo a comunicar (en este caso el PLC S7-1200)
Luego de la creación del bloque de datos para configuración y lectura, se debe configurar de
forma correcta el bloque MB_CLIENT, para esto, en REQ se le debe asignar el valor TRUE, es
decir, se solicita comunicación modbus, en DISCONECT se le debe colocar FALSE, debido a que
no se quiere tener inactiva esta conexión, luego en MB_MODE se le debe asignar el valor 0 (0
lectura, 1 escritura de una palabra y 2 escritura de una o más palabras, para este caso sólo sirve
el valor 0), en MB_DATA_ADDR se coloca la dirección inicial a leer en el equipo remoto, para
este caso el HR 40001 (registro de retención 40001), en MB_DATA_LEN se debe colocar la
cantidad de palabras a leer con respecto a la dirección inicial ya mencionada, para este caso sólo
se leerá una palabra del equipo remoto (valor 1).
En MB_DATA_PTR se debe colocar la variable donde se guardarán las lecturas realizadas desde
el equipo remoto, según el bloque de datos que se creó se le indica que debe ser el arreglo de
palabras creado para este fin, y finalmente en CONNECT se le deben indicar los parámetros de
configuración del dispositivo remoto, parámetros que quedaron guardados en la variable de tipo
TCON_IP_v4 llamada “Config”.
Con esto el PLC estaría en condiciones le leer datos modbus por su puerto profinet

Lo último que va quedando es llamar desde el bloque Main(OB1) el bloque de función para que
pueda ejecutarse la instrucción modbus, de lo contrario, aunque el PLC esté en modo RUN, la
instrucción no se ejecutará

Con esto ya está en condiciones de ser cargado el programa al PLC para luego probarlo
Una vez transferido el programa al PLC, se ingresa al bloque de función FC para ver cómo se
comporta lo programado, si todo está bien configurado, el bloque MB_CLIENT quedará en verde
al verlo Online, en caso contrario, si algo causa conflicto el bloque se verá inactivo con un
contorno con línea segmentada de color azul

Al ver el bloque de datos en modo Online, se verá cómo se realiza la lectura desde el equipo
remoto, respondiendo ante cambios en la señal que está transmitiendo el equipo ya
comunicado.
Versión antigua de MB_CLIENT

Para configurar la versión antigua de la instrucción MB_CLIENT se procede de manera similar a


la anteriormente vista, se crea un bloque de datos, pero sólo con el arreglo de palabras para la
lectura, los parámetros de IP y puerto se configuran en la misma función

Al crear el bloque de datos para guardar las lecturas por modbus, se debe ingresar a sus
propiedades y desmarcar en Atributos la opción “Acceso optimizado al bloque”, de lo contrario
el bloque estará con error en su funcionamiento
Una vez hecho este paso, se declara la variable del tipo arreglo de palabras para guardar la
información leída desde el equipo remoto, tal como se hizo en el bloque de datos para la versión
4.0
Luego se procede a la parametrización de la instrucción con valores similares a la de la versión
4.0

De esta forma, al transferir programa, se podrá ver en funcionamiento la captación de datos a


través de modbus TCP al ver Online el bloque de datos creado con este fin
Si ocurre algún problema con el funcionamiento o la configuración del bloque, quedará en color
azul y su contorno con una línea segmentada

Para saber cuál es el problema, se debe acceder al bloque de datos que se crea de forma
inmediata a la implementación de esta instrucción, y en “Status” se verá el código del error o
problema, el cual se puede buscar en la ayuda del software.
Para este caso, el error que aparece es el 16#818C, estado que se busca en la ayuda entregando
el siguiente resultado:

- El puntero del parámetro MB_DATA_PTR señala a un bloque de datos optimizado.


Utilice un bloque de datos con acceso estándar o un área de memoria
- Rebase de tiempo en el parámetro BLOCKED_PROC_TIMEOUT (ver variables estáticas
de la instrucción). Se ha rebasado el límite de 55 segundos

El error se debe al no desactivar el acceso optimizado al bloque de datos para la captación de


información por la instrucción modbus MB_CLIENT, con lo cual, corrigiendo este parámetro, no
debería haber problemas su funcionamiento

Acceder a un bit de una palabra


Si el equipo remoto está guardando estados de entradas o salidas en una palabra específica y
estos datos se quieren utilizar en el equipo local para una acción de control, se debe ingresar a
un bit específico que contiene esa información booleana, para hacerlo, se debe ir al bloque de
datos y tomar la palabra de interés, luego se escribirle .X(número de bit), con lo cual se le indica
a la variable que el elemento (contacto o bobina) hará uso de este parámetro
Bibliografía para el acceso a un bit:

https://support.industry.siemens.com/cs/document/57374718/%C2%BFc%C3%B3mo-se-
puede-acceder-bit-a-bit-byte-a-byte-palabra-a-palabra-y-de-manera-simb%C3%B3licalica-a-
los-tipos-de-datos-no-estructurados-en-step-7-(tia-portal)-?dti=0&lc=es-WW

Вам также может понравиться