Índice
Introducción
Las principales razones por el uso de Modbus es que se trata de un protocolo de comunicación público y gratuito, es fácil de implementar, requiere poco desarrollo y maneja bloques de datos sin restricciones. Puede obtener más información en el siguiente enlace.
Mediante el propio Miniserver y nuestra Modbus Extension es posible integrar en el sistema Loxone dispositivos Modbus compatibles. El Miniserver, a través de su conexión Ethernet, implementa la comunicación Modbus TCP/IP, mientras nuestra Modbus Extension implementa la comunicación Modbus RTU.
Nuestra Modbus Extension trabaja como maestro del bus Modbus RTU y puede conectar hasta 32 dispositivos esclavos Modbus RTU. Puede obtener más información en el siguiente enlace.
Programación
La programación de dispositivos Modbus es en parte igual para Modbus TCP/IP y Modbus RTU. Sólo hay diferencias en la configuración de los parámetros de comunicación, por lo que le remitimos a la información del Modbus Server y a la configuración de la Modbus Extension para configurar correctamente la comunicación.
Dentro de un bus Modbus podemos tener varios dispositivos, por lo que la primera acción va a ser añadir y configurar correctamente cada uno de estos dispositivos.
Añadir dispositivo Modbus
Una vez tenemos el hardware que necesitamos (Modbus Extension o Modbus Server) añadido y configurado en el árbol de periferia, nos colocamos encima de ella en el árbol de periferia y pulsamos en la flecha del botón Añadir Dispositivo Modbus de la barra de herramientas y seleccionamos Dispositivo Modbus.
Esta acción nos insertará un nuevo dispositivo Modbus en el árbol de periferia, con una serie de propiedades que deberemos ajustar.
La propiedad que deberemos configurar adecuadamente es la dirección Modbus del dispositivo Modbus. Esta propiedad es la que identifica de forma única el dispositivo en cuestión dentro del bus Modbus. Debe asegurarse que la dirección Modbus debe ser la misma configurada en su proyecto del Loxone Config, que la del dispositivo. Para saber cómo configurar la dirección Modbus en el dispositivo deberá encontrarlo en el propio manual del dispositivo.
En el árbol de periferia, debajo del dispositivo Modbus tendremos los sensores (para leer datos del dispositivo Modbus) y los actuadores (para escribir datos al dispositivo Modbus) pertinentes desde el Miniserver.
Sensores Modbus
Los sensores Modbus permiten leer un registro de un dispositivo Modbus conectado al bus. El registro puede ser digital o analógico, y para ello se usan distintos comandos Modbus. Para obtener más información de la especificación del protocolo Modbus diríjase al siguiente enlace.
Loxone soporta los siguientes comandos Modbus de lectura para señales digitales:
Comando | Tipo | Descripción |
1 | Read coil status | Lectura de estado de registros de memoria de 1 bit |
2 | Read input status | Lectura de estado de entradas digitales |
El estándar Modbus establece que un registro es de 16 bits. Loxone soporta la lectura y escritura de registros de 16 y 32 bits. Loxone soporta los siguientes Comandos Modbus de lectura para señales analógicas:
Comando | Tipo | Descripción |
3 | Read holding register | Lectura de un registro de memoria de 16 o 32 bits |
4 | Read input register | Lectura de un registro de entrada de 16 o 32 bits |
Para añadir sensores Modbus y poder leer registros del dispositivo Modbus, deberá colocarse encima de Sensores del dispositivo Modbus correspondiente del árbol de periferia, y pulsar en Sensor digital y/o Sensor analógico.
Una vez se ha añadido el sensor Modbus, deben ajustarse sus propiedades. Junto con las propiedades más comunes de todos los objetos del Loxone Config, tenemos las propiedades específicas relacionadas con la comunicación Modbus.
Vamos a describir cada uno de ellas detenidamente, por lo que necesitará tener a mano el manual y la tabla de registros Modbus del dispositivo Modbus del fabricante. En ella debe encontrar información esencial sobre la comunicación Modbus que necesita para la programación.
- Dirección de E/S: es la dirección de memoria que se quiere leer del dispositivo Modbus. Todos los registros de datos que tiene el dispositivo Modbus deben estar listados en una tabla, de tal forma que indique para cada dirección de memoria, la variable de la cual se trata, sus unidades y el tipo de datos o formato que utiliza.
- Comando: el comando Modbus que acepta el dispositivo Modbus. Debe comprobarse en el manual del dispositivo Modbus qué comandos Modbus acepta el propio dispositivo, y configurar la propiedad en consecuencia. Para la lectura, debe comprobar si el dispositivo acepta los comandos 1 y 2 (para señales digitales) y los comandos 3 y 4 (para señales analógicas).
- Tipo de datos: aquí debe definirse el formato que se usa para el registro de lectura. Un registro Modbus puede ser de 16 o 32 bits, que se utilizan para representar un valor analógico. Este valor analógico puede ser sin signo (sin números negativos), con signo, etc… La tabla de registros Modbus debe especificar el formato que se usa para representar el valor del registro.
Tipo de datos | Tipo de datos (Inglés) | Otras descripciones |
Entero sin signo de 16 bits | Unsigned integer | WORD, UINT, UINT16 |
Entero con signo de 16 bits | Signed integer | INT, INT16 |
Entero sin signo de 32 bits | Unsigned integer 32 bits | DWORD, UINT32 |
Entero con signo de 32 bits | Signed integer 32 bits | DINT, INT32 |
Coma flotante de 32 bits | Floating point | REAL, FLOAT, IEEE754 |
- 2 registros para 32-bit: aparte de especificar en la propiedad Tipo de datos que usamos un valor de 32 bits, debemos especificarlo aquí también seleccionando esta opción. Cuando trabajamos con registros Modbus de 32 bits y marcamos esta opción, lo que se está haciendo es leer la dirección Modbus del registro que se haya configurado en Dirección de E/S y la siguiente. Por ejemplo: si queremos leer un registro de 32 bits en la dirección 20, vamos a leer el registro Modbus 20 y 21.
- Orden de registro: cuando trabajamos con registros de 32 bits, que son 2 registros de 16 bits, podemos encontrarnos que el registro de 16 bits de mayor peso sea la dirección de memoria más baja, y el registro de 16 bits de menor peso sea la dirección de memoria más alta. Esta representación se llama Big endian y puede ser que en el manual del dispositivo Modbus no se especifique. En este caso, cuando leamos el valor del registro Modbus vamos a obtener valores muy erróneos.
- Orden de bytes: lo mismo podemos encontrarnos con los bytes del registro (8 bits). Si el fabricante no nos indica el formato (little endian o big endian) y leemos valores erróneos del registro, podemos marcar esta opción para girar los bytes entre sí.
- Tiempo de ciclo: tiempo de ciclo entre dos peticiones de lectura del registro Modbus. Para no inestabilizar la instalación el tiempo de ciclo mínimo es de 5 segundos. Aquí debe definirse un tiempo de ciclo coherente con el tipo de dato que se quiera obtener, para no saturar el bus de datos. Por ejemplo: si queremos leer la potencia consumida de un contador de consumo, con un tiempo de ciclo de 10 segundos es suficiente.
Otras propiedades interesantes a usar en los sensores Modbus es la corrección. Estas propiedades nos permiten hacer el escalado de un registro de lectura a las unidades físicas de la variable. Por ejemplo: si el fabricante en su manual nos indica que nos proporciona la potencia consumida como un entero con signo de 16 bits y con dos decimales, podemos configurar la corrección de la siguiente forma para obtener la variable con el valor corregido.
Actuadores Modbus
Los actuadores Modbus permiten escribir un registro hacia un dispositivo Modbus conectado al bus. El registro puede ser digital o analógico, y para ello se usan distintos comandos Modbus. Para obtener más información de la especificación del protocolo Modbus diríjase al siguiente enlace.
Loxone soporta los siguientes comandos Modbus de escritura para señales digitales:
Comando | Tipo | Descripción |
5 | Write single coil | Escritura de un bit |
15 | Write multiple coils | Escritura de un bit |
El estándar Modbus establece que un registro es de 16 bits. Loxone soporta la lectura y escritura de registros de 16 y 32 bits. Loxone soporta los siguientes Comandos Modbus de escritura para señales analógicas:
Comando | Tipo | Descripción |
6 | Preset single register | Escritura de un registro de 16 o 32 bits |
16 | Preset multiple registers | Escritura de un registro de 16 o 32 bits |
Aunque los comandos Modbus 15 y 16 según el estándar Modbus sirven para escribir varios bits o registros, por la forma de trabajar del sistema Loxone solo se escribe un bit o registro.
Para añadir actuadores Modbus y poder escribir registros del dispositivo Modbus, deberá colocarse encima de Actuadores del dispositivo Modbus correspondiente del árbol de periferia, y pulsar en Actuador digital y/o Actuador analógico.
Una vez se ha añadido el actuador Modbus, deben ajustarse sus propiedades. Junto con las propiedades más comunes de todos los objetos del Loxone Config, tenemos las propiedades específicas relacionadas con la comunicación Modbus.
Vamos a describir cada uno de ellas detenidamente, por lo que necesitará tener a mano el manual y la tabla de registros Modbus del dispositivo Modbus del fabricante. En ella debe encontrar información esencial sobre la comunicación Modbus que necesita para la programación.
- Dirección de E/S: es la dirección de memoria que se quiere escribir del dispositivo Modbus. Todos los registros de datos que tiene el dispositivo Modbus deben estar listados en una tabla, de tal forma que indique para cada dirección de memoria, la variable de la cual se trata, sus unidades y el tipo de datos o formato que utiliza.
- Comando: el comando Modbus que acepta el dispositivo Modbus. Debe comprobarse en el manual del dispositivo Modbus qué comandos Modbus acepta el propio dispositivo, y configurar la propiedad en consecuencia. Para la escritura, debe comprobar si el dispositivo acepta los comandos 5 y 6 (para señales digitales) y los comandos 15 y 16 (para señales analógicas).
- Envío cíclico: si se configura con un valor distinto a 0, son los segundos entre enviar dos mensajes con el valor del registro Modbus. Si se deja a 0, el envío se realizará cada vez que el valor del registro Modbus cambie.
Dispositivos predefinidos
El Loxone Config incorpora una serie de plantillas predefinidas de dispositivos Modbus que han sido probadas y testeadas por Loxone, y que también pueden tomarse como ejemplo. Todas estas plantillas las va a encontrar en el desplegable del botón Añadir Dispositivo Modbus en Dispositivos predefinidos.
Existen multitud de plantillas para distintos tipo de dispositivos: contadores eléctricos, inversores de fotovoltaica, pasarelas de aire acondicionado, etc… En el siguiente video puede ver como insertar un dispositivo predefinido.
También puede añadir más sensores y actuadores Modbus a los dispositivos predefinidos que haya incorporado en su proyecto. Para ello, consulte la tabla de registros Modbus del manual del fabricante del dispositivo y añada los sensores y/o actuadores Modbus que desee.
Crear una nueva plantilla
A parte de los dispositivos predefinidos que ya incorpora nuestro software Loxone Config, puede crearse sus propias plantillas. Para ello, deberá crear un dispositivo Modbus y añadir todos los sensores y actuadores Modbus que quiera leer y escribir en el dispositivo.
Una vez creado el dispositivo Modbus e introducidos todos sus sensores y actuadores Modbus debe colocarse encima de él y pulsando el botón derecho del ratón se le desplegará la opción de guardar plantilla.
Se abrirá una nueva ventana donde indica la ubicación en su ordenador de las plantillas (no modificable), las plantillas existentes y un cuadro de texto donde deberá indicar la descripción (o nombre) de la plantilla que está creando. Pulse en el botón Almacenar para guardar la plantilla en su ordenador. En el siguiente video puede ver el proceso.
Si quiere reutilizar sus propias plantillas, le recomendamos que guarde una copia del fichero xml y al instalar una nueva versión del Loxone Config importe dichos ficheros en la versión actual del Loxone Config.
Ejemplos
La Modbus Extension abre las puertas a la integración de una multitud enorme de dispositivos Modbus existentes en el mercado. Los ejemplos que vamos a mostrar, son los ejemplos más requeridos en los proyectos de Loxone, que son la integración de contadores de electricidad y pasarelas de aire acondicionado.
Ejemplo 1
La integración de varios contadores eléctricos Modbus es muy fácil y rápido usando nuestros contadores eléctricos. Puede obtener información de nuestro modelo monofásico en este enlace, e información del modelo trifásico en este otro enlace.
En el ejemplo, se ilustra cómo realizar la programación para obtener los datos de consumo general de la vivienda, consumo de la parte de climatización y la parte de iluminación. El bloque de función Contador Consumo nos permite visualizar y graficar los respectivos consumos.
Descargar archivo del proyecto: kb_es_ejemplo_ModbusExtension_01.zip
Ejemplo 2
Otro de los casos más solicitados en el proyecto de control de una vivienda es la integración de las máquinas de aire acondicionado. por este motivo, existen varias plantillas disponibles en el Loxone Config.
La comunicación con el sistema Loxone con máquinas de aire acondicionado específicas se realiza a través de pasarelas de comunicación Modbus hacia el protocolo específico del fabricante de la máquina de aire acondicionado. Deberá consultar con el fabricante de la máquina de aire la disponibilidad de dicha pasarela para su modelo de máquina de aire acondicionado.
En el ejemplo, siguiendo con la filosofía de Loxone de que el sistema funcione de forma automática, se realiza el control de clima de un espacio con una máquina de aire acondicionado de forma totalmente automática, con el bloque de función Control Clima.
Descargar archivo del proyecto: kb_es_ejemplo_ModbusExtension_02.zip
Solución de problemas
Si nos encontramos con problemas con la comunicación de un dispositivo Modbus en particular, el problema puede provenir de varias causas. Siga la siguiente guía para intentar encontrar una solución.
Problemas de comunicación
La primera causa de que la comunicación Modbus no funcione correctamente es que los telegramas que envía la Modbus Extension no lleguen a su destino, al dispositivo Modbus en particular. Para intentar solucionar el problema, siga el siguiente procedimiento:
- Verificar la comunicación del Loxone Link para asegurar que la comunicación entre el Miniserver y la Modbus Extension es correcta. Para ello, el Miniserver y la Modbus Extension deben parpadear en verde. También debe verificar que las versiones de firmware son correctas. Para ello, vaya a Estado de los dispositivos y compruebe que el Miniserver y todas las Extensions aparezcan de color verde.
- Verificar la comunicación Modbus entre la Modbus Extension y el dispositivo Modbus. Algunos dispositivos Modbus incorporan algunos LED para indicar el envío y la recepción de telegramas Modbus. Si el LED de recepción de telegrama Modbus se enciende, es que el dispositivo Modbus está recibiendo el telegrama. Si el dispositivo Modbus no tiene ningún LED para hacer esta comprobación, podemos usar la ventana Monitor que se activa con el botón Información Depuración del menú Diagnósticos. Puede obtener más información del Monitor y de la Información Depuración en el siguiente enlace.
-
- Conéctese al Miniserver con el Loxone Config y vaya al menú Diagnósticos para pulsar sobre Información Depuración. Le aparecerá la ventana de Configuración de depuración, en la cual, para la situación actual, deberá configurar todos los filtros a Off excepto el Link, que deberá dejarlo en Información. Active la casilla Monitor y pulse en el botón de Cerrar de la ventana.
-
- Le aparecerá la ventana Monitor y dependiendo del tamaño de su instalación debería aparecerle más o menos telegramas. Lo que se está visualizando son todas las comunicaciones que hay en el bus Loxone Link. Si tenemos varias Extensions vamos a tener bastante cantidad de telegramas, por lo que deberemos añadir un filtro para visualizar sólo las comunicaciones que provienen de la Modbus Extension. Para ello, copie el número de serie de la Modbus Extension y añadelo en el cuadro de texto del Filtro de la ventana Monitor.
-
- Con el filtro aplicado, sólo va a visualizar los telegramas de la Modbus Extension. Si tiene más de una Modbus Extension ponga el número de serie de la Modbus Extension que en aquel momento quiera analizar. Si no hay comunicación entre la Modbus Extension y el dispositivo Modbus va a visualizar unos mensajes del tipo: LNK Debug Modbus No Response ….
-
- Si este fuera el caso, debería revisar la configuración completa de la Modbus Extension y del dispositivo Modbus. Asegurarse de que la Modbus Extension y el dispositivo Modbus trabajen a la misma velocidad de transmisión, bits de stop, paridad y están configurados a la misma dirección Modbus. Recuerde que la dirección Modbus es única para cada dispositivo Modbus esclavo que hay en el bus Modbus y que debe cargar los cambios en el Miniserver para que tenga en cuenta los cambios.
-
- Si continúa sin funcionar la comunicación, debería revisar el cableado del bus Modbus, asegurándose de que los cables hacen buena conexión en las bornas (para asegurar la conexión es mejor desconectar y volver a realizar la conexión en la borna).
-
- Revise también que el último dispositivo Modbus del bus Modbus incorpora la resistencia de 120 ohmios (sea internamente en la propia configuración del equipo o bien con una resistencia externa). Recuerde que el bus Modbus es un bus en serie que nace en la Modbus Extension y finaliza en el último dispositivo con dicha resistencia.
-
- Revise también que está manteniendo la polaridad en el bus. Puede encontrar dos nomenclaturas en los dispositivos Modbus. Cómo A y B, o cómo + y –. Normalmente la correspondencia es la siguiente: A (+), y B (-).
-
- Si continúa sin comunicación, le queda probar el dispositivo Modbus fuera de la instalación, conectado solo a una Modbus Extension y repitiendo la configuración en un proyecto totalmente nuevo en el Loxone Config. Si así tampoco funciona la comunicación, póngase en contacto con el servicio técnico del fabricante del dispositivo Modbus para verificarlo.
Seguidamente le dejamos un vídeo como resumen para que vea cómo debe configurar el Loxone Config y activar el Monitor.
Problemas de direccionamiento
Si obtenemos un mensaje distinto en la ventana Monitor, del tipo “Invalid address” tampoco obtendremos comunicación con el dispositivo Modbus, pero el fallo es otros distinto. En la ventana Monitor obtendrá unos mensajes parecidos a éstos:
Puede obtener más información de cómo activar la ventana de Monitor en el siguiente enlace, o puede ver el proceso particular para las comunicaciones Modbus en esta misma página.
Este telegrama de error nos está diciendo que estamos intentando leer o escribir en una dirección de E/S del Modbus que no es correcta o no existe. Puede seguir la siguiente guía para intentar solucionar el problema:
- Revise la dirección Modbus de los registros que está intentando leer o escribir para compararlos con la tabla de registros Modbus. Verifique si la tabla está en base 0 o en base 1 y modifique las direcciones en consecuencia. Recuerde que en Loxone las direcciones de E/S están en base 0. Puede ver más información en esta misma página.
- Revise la documentación del manual del dispositivo Modbus o póngase en contacto con el fabricante del dispositivo Modbus para revisar exactamente qué direcciones Modbus son realmente. Puede encontrar algunos manuales que no son muy explícitos al respecto.
Problemas de formato
Si consigue tener comunicaciones y leer datos del dispositivo Modbus, puede darse el caso que los datos sean erróneos, o valores “imposibles”. En este caso el problema está en el formato que interpretamos los datos recibidos.
En el manual del dispositivo Modbus del fabricante deberá especificar el formato de los datos en cada uno de los registros de la tabla Modbus. Puede encontrar más información en esta misma página.
Si no fuera el caso, y no sabe en qué tipo de formato se le entregan los datos, sólo le quedará la solución de ir probando distintas configuraciones. Le damos algunas pistas de cómo proceder:
- Pruebe sin y con signo. Primero intente de cambiar el tipo de datos sin signo o con signo, sea de 16 o 32 bits, de un solo Sensor Modbus. Recuerde de cargar en el Miniserver cada cambio que realice, y esperar el tiempo de ciclo que haya definido en el registro Modbus para comprobar la nueva lectura.
- Active la propiedad Orden de registro para aquellos registros Modbus de 32 bits. Recuerde de cargar en el Miniserver cada cambio que realice, y esperar el tiempo de ciclo que haya definido en el registro Modbus para comprobar la nueva lectura.
- Active la propiedad Orden de bytes como última opción. Recuerde de cargar en el Miniserver cada cambio que realice, y esperar el tiempo de ciclo que haya definido en el registro Modbus para comprobar la nueva lectura.
Normalmente, una vez puede leer el valor de un registro Modbus de forma correcta, el resto de registros de la tabla Modbus tienen el mismo tipo de datos (para los manuales del fabricante que no indique el tipo de datos a usar).
Configure el resto de registros de la tabla Modbus con las mismas propiedades del formato de lectura de los datos.
En el caso de escrituras de registros Modbus, el formato de los datos que quieren escribirse normalmente es el mismo que el formato que se usa en las lecturas de dicho dispositivo Modbus. Pruebe primero en un actuador Modbus de escribir un registro Modbus y después de comprobar su buen funcionamiento configure el resto.