Conecte LabVIEW a Cualquier PLC con Modbus

Actualizado el Oct 30, 2023

Ambiente

Software

  • LabVIEW
  • LabVIEW Datalogging and Supervisory Control Module

El software NI LabVIEW puede comunicarse con un controlador lógico programable (PLC) en una variedad de formas. Modbus es un protocolo de comunicación en serie publicado por Modicon en 1979 para comunicarse con PLC, y luego se extendió al protocolo TCP. Modbus se convirtió en uno de los protocolos de comunicaciones estándar de facto en la industria debido a su disponibilidad. En este tutorial, aprenda a usar LabVIEW para comunicarse con un PLC en red usando Modbus.

En este tutorial se usa el Módulo LabVIEW Datalogging and Supervisory Control (DSC). Este módulo incluye herramientas para registrar datos en una base de datos histórica en red, tendencias históricas y en tiempo real, administrar alarmas y eventos, conectar en red objetivos de LabVIEW Real-Time y dispositivos Modbus en un sistema completo y agregar seguridad a las interfaces de usuario. Con estas características, LabVIEW se convierte en un poderoso paquete HMI / SCADA para aplicaciones de control industrial.

Creación de un servidor de E / S maestro Modbus

En esta sección, creará una interfaz de LabVIEW para las direcciones Modbus llamada servidor de E / S. El servidor de E / S actualiza automáticamente LabVIEW con los valores actuales.

  1. En la ventana Getting Started de LabVIEW, haga clic en Archivo »Nuevo proyecto . Esto abre un nuevo proyecto de LabVIEW.
  2. Si la ventana de Ayuda contextual no está visible, presione Ctrl + H para mostrar la ventana. Mantenga esta ventana abierta para obtener información útil sobre los elementos que se encuentran debajo del cursor.
  3. En la ventana del Proyecto de LabVIEW, haga clic derecho en Mi Computadora y seleccione Nuevo »Servidor de E / S , como se muestra en la Figura 1.
Figura 1: Creación de un nuevo servidor de E / S a través del proyecto de LabVIEW
  1. Seleccione Modbus en la ventana Crear nuevo servidor de E / S y haga clic en Continuar .
  2. Seleccione Modbus Ethernet en el menú desplegable Modelo .

Figura 2: Configuración del servidor de E / S maestro Modbus
  1. Introduzca la dirección IP de su esclavo Modbus de destino en el campo de dirección IP . Si no sabe cómo determinar la dirección IP de una computadora, consulte esta página web: Enlace externo: Cómo encontrar información de IP . En este ejemplo, estamos ejecutando Modbus Slave en la misma computadora que el maestro, por lo que usamos la dirección IP del host local, 127.0.0.1.
  2. Seleccione Aceptar . Se crea automáticamente una biblioteca en la ventana del Explorador de proyectos para administrar el servidor de E / S.
  3. Guarde el proyecto como ModbusDemoProject y la biblioteca como ModbusDemoLibrary seleccionando Archivo »Guardar todo en la ventana del explorador de proyectos.


Vincular variables compartidas a direcciones Modbus a través del servidor de E / S

En esta sección, aprenderá a crear variables compartidas vinculadas a las direcciones Modbus, brindándole acceso nativo en LabVIEW a datos de PLC. Con la variable compartida puede compartir datos entre aplicaciones de LabVIEW en una sola computadora o en la red.

  1. Cree nuevas variables compartidas que estén vinculadas a las direcciones Modbus.
  1. Haga clic con el botón derecho en la ModbusDemoLibrary recién creada y seleccione Crear variables enlazadas ...
  2. En la ventana Create Bound Variables, expanda el árbol hasta Modbus1 para seleccionar el rango de direcciones deseado.
  3. Luego seleccione 000001-065535 y haga clic en Agregar rango . Deje el valor predeterminado de Elemento de datos como 000001 y Número de elementos como 1. Presione Aceptar .

Figura 3: Seleccione las direcciones Modbus para enlazar a variables compartidas
  1. Su ventana de configuración ahora debería tener la variable 000001 en la sección Variables agregadas .
  2. Haga clic en Aceptar . Esto crea una variable compartida que está vinculada a la dirección Modbus y la carga en el Editor de variables múltiples.
  3. En el Editor de variables múltiples, seleccione Listo . Esto agrega las nuevas variables compartidas a la biblioteca que se creó anteriormente.
  4. En el Explorador de proyectos, haga clic con el botón derecho en 000001 y seleccione Cambiar nombre . Cambie el nombre de la variable a Coil1.
Nota : El Módulo LabVIEW DSC mejora las variables compartidas al agregar la capacidad de registrar datos, alarmas y eventos directamente a una base de datos sin tener que escribir una aplicación LabVIEW.
  1. Implemente las variables compartidas haciendo clic con el botón derecho en ModbusDemoLibrary y seleccionando Implementar todo . Esto publica las variables compartidas y las pone a disposición en la red para otras computadoras.
Ahora tiene acceso a los datos Modbus de forma nativa en LabVIEW a través de las variables compartidas

Escribir en direcciones Modbus en LabVIEW

  1. Desde el Explorador de proyectos, haga clic derecho en Mi PC y seleccione Nuevo »VI . Esto crea un nuevo instrumento virtual o VI. Un VI se utiliza para crear una interfaz de usuario y un código gráfico ejecutable.
  2. Por defecto, verá el Panel Frontal, que es la interfaz de usuario del VI. LabVIEW tiene muchos componentes de interfaz de usuario integrados, como gráficos, diales, etc., que puede usar para crear una interfaz de usuario potente e intuitiva. Seleccione Ver »Paleta de controles o haga clic con el botón derecho en cualquier lugar del Panel frontal para abrir la paleta de Controles. Pase el mouse sobre las distintas categorías para explorar los componentes de la interfaz de usuario en LabVIEW.
  3. Seleccione un botón de la paleta de Controles seleccionando Express »Button & Switches» Push Button , y colóquelo en el Panel Frontal, como se muestra en las Figuras 4 y 5.

Figura 4: Seleccione un botón pulsador de la paleta de controles

Figura 5: Botón pulsador colocado en el panel frontal
  1. En el VI, seleccione Ventana »Mostrar diagrama de bloques o presione Ctrl + E para mostrar el diagrama de bloques. El diagrama de bloques es donde construye el comportamiento de su aplicación. Observe el icono en el diagrama de bloques, que representa el botón pulsador en el panel frontal. Al presionar el botón pulsador en el panel frontal, cambia el valor booleano pasado del terminal de iconos en el diagrama de bloques.
  2. En el Explorador de proyectos, expanda la biblioteca ModbusDemoLibrary y seleccione la variable compartida Coil1 .
  3. Arrastre y suelte la variable compartida Coil1 desde el Explorador de proyectos al diagrama de bloques del VI. La variable compartida actúa como fuente de datos para otros terminales en el diagrama de bloques.
  4. Haga clic con el botón derecho en la variable compartida Coil1 recién colocada y seleccione Modo de acceso »Escribir . Esto le permite escribir en lugar de leer desde la variable compartida
  5. Utilice la herramienta Connect Wire para conectar la variable compartida Coil1 al botón pulsador booleano haciendo clic en la variable compartida Coil1 y luego en el botón pulsador Booleano , como se muestra en la Figura 6.

Figura 6: Elementos del diagrama de bloques de cableado juntos

Ahora los datos fluyen desde el botón pulsador booleano a la variable compartida cuando el VI se está ejecutando.

  1. Abra la paleta de funciones seleccionando Ver »Paleta de funciones o haciendo clic derecho en cualquier lugar del diagrama de bloques. La paleta de funciones contiene cientos de funciones de análisis, funciones de control y estructuras para la programación gráfica.
  2. Seleccione un bucle while de la paleta Funciones navegando hasta Programación »Estructuras» Bucle while. Una vez que seleccione el ciclo while, su cursor aparecerá como se muestra en la Figura 7. Esto le permite envolver un ciclo while alrededor de una sección de código.

Figura 7: Selección de un bucle while

Figura 8: Cursor de bucle while
 
  1. Con el cursor de bucle while, coloque un bucle while alrededor de la variable compartida y el gráfico de forma de onda haciendo clic y arrastrando el cursor. Ahora cree un control de parada en el ciclo while haciendo clic derecho en la condición del ciclo y seleccionando Crear control . Esto coloca un botón Detener en su Panel Frontal que permite al usuario detener el VI.


Figura 9: Colocación de un bucle while alrededor de la variable y el control compartidos

El ciclo while hace que el código dentro de él se ejecute continuamente hasta que el usuario lo detenga o una lógica adicional en el VI.

  1. Como está ahora el ciclo while, se ejecutará lo más rápido posible. Se debe agregar un VI múltiple Wait until Next ms al bucle para que el bucle se ejecute cada cantidad establecida de segundos, en este caso 100ms.
Figura 10: Añadiendo tiempo al ciclo While
  1. Regrese al panel frontal seleccionando Ventana »Mostrar panel frontal o presionando Ctrl + E.
  2. Haga clic en el botón Ejecutar en la barra de herramientas para ejecutar el VI.

Figura 11: Botón Ejecutar
  1. Haga clic en Cerrar en la ventana Implementar … una vez que se complete la implementación. Cuando la aplicación comienza a ejecutarse, ahora puede alternar el botón pulsador entre verdadero y falso. Esto actualizará la variable compartida enlazada a Modbus en el motor de variable compartida con Verdadero o Falso

Figura 12: Panel frontal completo: control de una bobina Modbus
  1. ¡Felicidades! Accedió exitosamente a datos de PLC en su aplicación LabVIEW, por lo que puede incorporar potentes funciones de análisis y control en su solución.


Visualización de variables compartidas con Distributed System Manager

  1. En la ventana Explorador de proyectos, seleccione Herramientas »Administrador del sistema distribuido . Esto abre una ventana que puede usar para administrar sus variables compartidas de varias maneras (ver, implementar, anular la implementación, etc.).
  2. En el panel de árbol del Administrador de variables, expanda el elemento localhost en la categoría Mis sistemas. Ubique y expanda la biblioteca ModbusDemoLibrary y seleccione Coil1 para mostrar Auto View en el lado derecho de la ventana
  3. Ahora puede alternar el botón pulsador booleano de su panel frontal y ver el resultado en Distributed System Manager como en la Figura 13.

Figura 13: Visualización del valor de Coil1 en Distributed System Manager

Nota : El Administrador de sistemas distribuidos comenzó a distribuirse con LabVIEW 8.6. Las versiones anteriores de LabVIEW hicieron esto yendo a Tools »Shared Variable» Variable Manager y arrastrando las variables compartidas a la ventana Watched Variables :.


Visualización del valor de la bobina con un esclavo Modbus

En la primera sección del documento creamos un Modbus Master que escribe un valor booleano en una bobina Modbus. Este valor de bobina se almacena en una variable compartida que luego pudimos ver en el administrador del sistema distribuido. En la siguiente sección mostraremos cómo un esclavo Modbus puede leer el valor de la bobina que está actualizando el maestro. El Modbus Master que creamos en la parte uno busca un Modbus Slave en la dirección IP 127.0.0.1 (localhost). Por lo tanto, necesitamos crear un esclavo Modbus en su máquina local si queremos hablar a través de Modbus con nuestro maestro Modbus.

  1. En LabVIEW, abra NI Example Finder haciendo clic en Ayuda »Buscar ejemplos.
  2. En el Buscador de ejemplos de NI, busque Juegos de herramientas y módulos »Registro de datos y control de supervisión» Servidores de E / S, haga doble clic en Modbus Simulator.lvproj . Ver figura 16.

Figura 14: Modus Simulator en NI Example Finder
  1. Abra ModbusSimulator.vi del proyecto y luego ejecútelo.
  2. Ejecute su Modbus Master VI si no se está ejecutando actualmente. Cuando los dos están funcionando, puede ver que se enciende el LED Digital 1 en el Simulador Modbus, como en la figura 15.

Figura 15: Simulador Modbus ejecutándose y mostrando el valor real de Coil1
  1. Haga clic en Salir en Modbus Simulator y luego presione Ctrl + E para cambiar al diagrama de bloques.
  2. En el diagrama de bloques, observe que la dirección Modbus 000001 se lee con una variable compartida. Esta variable compartida está conectada al valor Coil1 del maestro Modbus.

Figura 16: Diagrama de bloques del simulador Modbus

Desafío extra

Para mejorar su comprensión de la relación entre Modbus Masters y Slaves, un desafío útil sería modificar su programa Modbus Master para leer y controlar el resto de los valores en el Modbus Simulator. Deberá agregar variables compartidas vinculadas al servidor de E / S Modbus en ModDemoProject.