Se pueden configurar canales Modbus de lectura y escritura, que se puede añadir, o no, a la lista de canales preconfigurados Easy Client.
Las herramientas para hacer esto las encontramos en el apartado “Crear canal”. Aquí encontramos tres bloques, para crear el canal, para escribir en él o para leer en él.
Configuración del canal #
El bloque “Crear canal Modbus RTU” establece un canal Modbus de comunicación que puede ser de lectura o escritura, esto se define mas adelante.
Hay que tener en cuenta que el número del canal va aumentando secuencialmente a medida que se colocan bloques.
El bloque anterior dispone de un apartado tras los signos “//”.
Rellenarlo es optativo, ya que nos vale solo para recordarnos el número que se le va a asignar a este canal, es un comentario, no configura nada.
Ejemplo de configuración desde cero #
Creación de 3 canales con las siguientes características:
- Canal llamado pulsador1 en la dirección 0
- Canal denominado entradaAnalogica en la dirección 1
- Canal denominado servo en la dirección 2
Solución:
También podemos dejar el comentario sin rellenar:
Es importante recalcar que, si cambiamos el orden y colocamos, por ejemplo, el bloque con el canal “servo” encima del resto, aunque no cambiemos el comentario, los canales asignados cambiarán, quedando de la siguiente forma:
Siendo:
- La dirección 0 para el canal servo
- La dirección 1 para el canal pulsador1
- La dirección 2 para el canal entradaAnalogica
Aquí los comentarios estarían informando mal de la dirección asignada, que recordamos, es secuencial en orden de colocación de los bloques. De forma correcta quedaría así:
Ejemplo de configuración añadiendo canales nuevos a Easy Client #
Si lo que se desea es ampliar el número de canales ya existentes en la modalidad RTU Easy Client, simplemente hay que añadirlos teniendo en cuenta cuántos canales existen ya. Es decir, no se parte de cero.
Por ejemplo, añadamos a la versión Easy Client los tres canales del caso expuesto anteriormente:
Debemos fijarnos en cuántos canales hay definidos en el modo Easy Client (23 a la fecha de edición de este manual), y añadir los canales que deseemos, pero a partir del último ya configurado. De esta forma:
- Canal llamado pulsador en la dirección 24
- Canal denominado entradaAnalogica en la dirección 25
- Canal denominado servo en la dirección 26
Envío de datos por Modbus a un software #
El siguiente bloque envía los datos que se conecten a él.
Recordamos que al tratarse de Modbus RTU solo pueden ser números enteros positivos hasta el 65.535, dado que el tamaño máximo es de una palabra (16 bits), es decir 2^16.
Se pueden conectar sensores y actuadores, disponibles en el apartado “Sensores y actuadores”:
En el apartado del configurador “Programación directa Ladder / Elementos Ladder”, se encuentran bloques que permiten leer estados de entradas y escribir estados de salidas. Se irán ampliando a media que avance el proyecto.
En la siguiente imagen se incluye un programa en el que se crean tres canales y se envía la lectura de la entrada analógica del GPIO39 por uno de ellos.
Lectura de datos por Modbus #
El siguiente bloque permite tomar datos del Esp32 y enviarlos por Modbus en el canal que se indique. En el siguiente ejemplo se envían por el canal “servo”.
Igual que en la escritura de datos, se pueden recibir datos que controlen actuadores, salidas, etc. Estos elementos los encontramos en los mismos apartados descritos en el punto 3.3: “Sensores y actuadores” y “Programación directa Ladder / Elementos Ladder”.
Un ejemplo de esto sería el siguiente, continuando con el ejemplo de los apartados anteriores:
Ejemplos completos de esto
Configuración de los canales Modbus en Codesys #
Como decimos, en la versión Easy Client damos una configuación de canales que permite comenzar a trabajar directamente. Sin embargo, se puede adaptar o cambiar completamente.
Para ello, aconsejamos abrir un archivo de trabajo de Codesys facilitado por Microdesys, que ya tiene la comunicación configurada, eliminar los canales que vienen creados, si vas a crear los tuyos desde cero, o añadir los que se deseen insertar.
Tras eliminar los canales, o crear una nueva conexión, se procede a crear los nuevos canales. Para ello, hay que hacer click en “Agregar canal”, como se muestra en la siguiente imagen:
Tras esto, siguiendo con el ejemplo anterior configurado para la placa Esp32, procedemos a crear tres canales:
- Canal llamado pulsador1 en la dirección 0 -> Canal de lectura de datos porcedentes de la placa Esp32.
- Canal denominado entradaAnalogica en la dirección 1-> Canal de lectura de datos porcedentes de la placa Esp32.
- Canal denominado servo en la dirección 2 -> Canal de escritura de datos que se envían a la placa Esp32.
El resultado final será el siguiente:
Lectura de información desde Codesys u otro Maestro #
En el apartado anterior se han creado tres canales que recordamos:
- Canal llamado pulsador1 en la dirección 0 -> Canal de lectura de datos porcedentes de la placa Esp32.
- Canal denominado entradaAnalogica en la dirección 1-> Canal de lectura de datos porcedentes de la placa Esp32.
- Canal denominado servo en la dirección 2 -> Canal de escritura de datos que se envían a la placa Esp32.
En la misma pantalla (Modbus_Slave), si hacemos click sobre la pestaña de asignación de E/S, podemos ver las direcciones asignadas a los canales creados:
- Canal llamado pulsador1 en la dirección 0 -> Lectura en la entrada %IW0
- Canal denominado entradaAnalogica en la dirección 1-> Lectura en la entrada %IW1
Si configuramos la placa como se explica en el apartado 3.1, podríamos leer el estado de un potenciómetro, por ejemplo, y moverlo a una variable:
Envío de información a Codesys u otro Maestro #
En el apartado 3.4 se han creado tres canales que recordamos:
- Canal llamado pulsador1 en la dirección 0 -> Canal de lectura de datos porcedentes de la placa Esp32.
- Canal denominado entradaAnalogica en la dirección 1-> Canal de lectura de datos porcedentes de la placa Esp32.
- Canal denominado servo en la dirección 2 -> Canal de escritura de datos que se envían a la placa Esp32.
En la misma pantalla (Modbus_Slave), si hacemos click sobre la pestaña de asignación de E/S, podemos ver las direcciones asignadas a los canales creados.
Hay uno de salida de datos:
- Canal denominado servo en la dirección 2 -> Escritura en la salida %QW0
Ejemplo
En el siguiente programa, si se acciona el pulsador virtual “pulsador1” se envía el valor 180 a través de la dirección 2 Modbus RTU, y si se acciona “pulsador2”, se envía un 10:
Si recordamos el programa de configuración ejemplo que se ha propuesto en el apartado 3.3, posicionaremos un servomotor en los ángulos 180 grados y 10 grados.