Modbus TCP S7-1200
Modbus TCP S7-1200
Modbus TCP 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”
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
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
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:
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