M-Bus lectura de datos con un S7 1200

M-Bus (Meter-Bus) es una norma europea (EN 13757-2 capa física y de enlace, EN 13757-3 capa de aplicación) para la lectura remota de contadores de gas o electricidad. M-Bus es también utilizable para otros tipos de contadores de consumo.

El M-Bus fue desarrollado para satisfacer la necesidad de un sistema para la creación de redes y lectura remota de contadores de servicios públicos, por ejemplo, para medir el consumo de gas o de agua en el hogar.

M-Bus lectura de datos con un S7 1200

No nos es posible leer directamente des del S7 1200 con alguna tarjeta especial, la mayoría de autómatas del mercado no disponen de una tarjeta de comunicación M-bus, por lo que tendremos que utilizar algún adaptador o Gateway para poder leer los datos de un esclavo M-Bus.

En este ejemplo vamos a utilizar un conversor M-bus / Modbus TCP IP, ya que el S7 1200 lleva el Modbus TCP IP integrado en toda su gama, el Gateway que utilizaremos es el HD67044-B2-20 de ADFWEB, este conversor nos permitirá enlazar desde 20 esclavos M-Bus en el modelo más pequeño hasta 250 esclavos el modelo superior:

s7-1200-M-bus

En primer lugar debemos programar el conversor para que nos lea los valores que queramos del esclavo M-bus, estos valores los debemos mapear a direcciones Modbus TCP IP para luego leerlas del PLC, para programar este mapeado necesitaremos un software especial del fabricante del conversor, el SW67044, que se puede descargar de la web http://www.adfweb.com/ , en el mismo manual del conversor viene muy bien especificado como programar el conversor por lo que no entraremos en detalle de como programarlo, el concepto básico es que debemos de mapear los valores que luego leeremos en el PLC.

Lectura de datos desde el S7 1200

Para leer los datos que nos entrega el Gateway de M-Bus a Modbus, utilizaremos la función de lectura de Modbus TCP-IP que nos proporciona Siemens para el autómata S7 1200, esta función se llama MB_CLIENT:

read_modbus_mbus

 

En este ejemplo podemos observar los siguientes parámetros importantes:

REQ: Cada cuando queremos leer los datos Modbus.

CONNECT_ID: Número de la conexión establecida

IP_OCTET_1: la dirección IP del Gateway Modbus – M-Bus

IP_PORT: Puerto Modbus, por defecto es el 502

MB_MODE: Lectura o escritura.

MB_DATA_ADDR: Dirección Modbus inicial de lectura, en este ejemplo es la 40002

MB_DATA_LEN: Longitud de datos a leer.

MB_DATA_PTR: Array donde escribirá los datos leídos.

Por tanto ejecutando cíclicamente este FB podemos leer los datos del bus M-BUS y los podremos consultar en el array de salida, la longitud de los cuales deberá ser definida en MB_DATA_LEN.

 

 

Leer datos avanzados de un esclavo I.O Link con un PLC S7 1200

Una vez instalado un bus I.O Link con diferentes esclavos en un PLC S7 1200, podemos leer algunos de sus datos simplemente consultando en las direcciones de entrada o salida asignadas a ese modulo, ahora bien si lo que queremos es un diagnostico mucho más amplio de cada esclavo podemos leer esos datos con una librería de Siemens que nos permite leer cíclicamente esos datos de diagnóstico.

Leer datos avanzados de un esclavo I.O Link con un PLC S7 1200

Para poder acceder a los datos avanzados en un bus I.O Link podemos utilizar la librería de Siemens IO_LINK_CALL_1200, en este ejemplo el FB50001, la llamada a este bloque requiere de una serie de parámetros para acceder al módulo esclavo que deseamos:

llamada-fb_io_link_call_1200

Algunos parámetros de entrada importantes son:

 

REQ: Petición de lectura del bus, se puede poner una base de tiempo y leer los datos cíclicamente.

ID: El identificador de Hardware, es decir donde tenemos instalado en master IO-Link

CAP: Acces point de la función IO_LINK_CALL normalmente a 227

RD_WR: Lectura o escritura operación, lectura = 1

PORT: Puerto del IO-Link al que queremos acceder.

IOL_INDEX: Dirección donde queremos leer los datos de diagnóstico del esclavo, debemos consultar el manual del esclavo para saber estas direcciones.

LEN: Longitud de datos es caso de modo escritura.

RECORD_IOL_DATA: Donde leemos o escribimos los datos del bus.

 

Los datos recogidos del diagnóstico de los esclavos los podemos encontrar el RECORD_IOL_DATA, un puntero hacia un DB donde podamos consultar o escribir los datos que queramos.

Dependerá de cada esclavo donde encontrar los datos de diagnóstico que nos interesen por tanto es necesario consultar el manual de cada esclavo, en este ejemplo se leen los datos de un analizador de fases SIRIUS 3UG4815 Line Monitoring Relay for IO-Link:

 bits-diagnostico-io-link

 

 

Como crear un FB en Sysmac Studio de Omron

La plataforma Sysmac Studio nos permite crear bloques de función como la mayoría de PLC del mercado, vamos a ver como se crea un simple FB en Sysmac Studio.

En este ejemplo voy a crear un temporizador que le llamare FB_TON.

Como crear un FB en Sysmac Studio de Omron

En bloques de función añadimos una nueva función, luego debemos de indicar las entradas y salidas del bloque, estas se definen en una misma área, en el campo entrada/salida definiremos si es una entrada o una salida:

crear-fb-sysmac-studio-omron

Luego definimos las variables internas del FB, en el apartado Internas:

crear-fb-sysmac-studio-omron-2

Seguidamente ya podemos programar la lógica de nuestro FB, en este caso es un simple temporizador, siempre que se desee se puede añadir o eliminar variables internas, de entrada o de salida:

crear-fb-sysmac-studio-omron-3

El siguiente paso sería probar nuestro FB realizando una llamada, debemos de crear una instancia para este FB con una variable de tipo FB_TON:

crear-fb-sysmac-studio-omron-4

Para visualizar online una instancia de un FB basta con abrirlo desde el punto donde se llama, de esa manera veremos la visualización online de la instancia llamada.