IOT

Control de bomba Arduino + pantalla STONE HMI

El sistema de regulación inteligente de la hoja es una tecnología patentada, que se utiliza en el sistema de control principal de varias centrales hidroeléctricas y estaciones de bombeo grandes, medianas y pequeñas. Este proyecto utiliza la confiable pantalla táctil industrial en serie como interfaz hombre-máquina para mostrar los parámetros diarios y la dosificación de la hoja en tiempo real, la potencia de salida, el flujo instantáneo y otra información, como la pantalla del efecto de operación. Además, también se planifican el registro de condiciones de trabajo y el formulario de alarma de falla, y el botón de espera está reservado. El proyecto utiliza la pantalla táctil en serie para la visualización de datos y la visualización de indicación de diapositivas. Los accesorios son los siguientes:  

  1. STVI056WT-01 pantalla táctil en serie y placa adaptadora STONE V1.2;  
  2. Placa de control Arduino a juego;  

Breve descripción de la función de interfaz del sistema de control de regulación de la cuchilla inteligente.  

Hay tres botones en la página de inicio, que se pueden presionar para ingresar al sistema de la estación hidroeléctrica correspondiente, el sistema de control de la estación de bombeo y la interfaz de la guía del usuario (con botones de repuesto). La interfaz de la guía del usuario muestra el marco del sistema de demostración, como se muestra en la siguiente figura:

(Interfaz de inicio del software de demostración de control de ajuste inteligente Enlegi Blade)

En la interfaz del sistema de control de la central hidroeléctrica, hay botones de inicio y parada y visualización del estado, la clasificación (incluida la tensión nominal, la potencia nominal y la velocidad nominal) y el valor de control (incluido el ángulo de paso de la pala de la hélice y la potencia de salida). Además, también puede haber otros botones de salto de página (como página de inicio, registro de condiciones de trabajo, alarma de falla y otros botones de espera). En el registro de condiciones de trabajo y la página de alarma de falla, puede haber un botón de retroceso para regresar a esta página. El siguiente diagrama:

           (Interfaz de visualización de control inteligente de la central hidroeléctrica)

Descripción de la función de la interfaz del sistema de control de la estación de bombeo. El siguiente diagrama:

                            (Interfaz de función del sistema de control de la estación de bombeo)

En la interfaz funcional de la estación de bombeo, el modo se puede cambiar y la fuente de alimentación de todo el sistema se puede encender y apagar para mostrar los parámetros simulados reales (como la dosis de la cuchilla, el caudal inmediato, la potencia de salida) y otros Las interfaces se pueden cambiar (como registro de condiciones de trabajo, informe de alarma de falla). Al mismo tiempo, también se pueden mostrar los valores del sistema (número total de palas, potencia nominal, caudal establecido). Otras interfaces también pueden tener, como el registro de condiciones de trabajo (el contenido puede ser número de pedido, hora de ocurrencia, detalles de evento, notas), alarma de falla (el contenido puede ordenarse número, hora de ocurrencia, detalles de alarma, código de alarma, etc.), el dos interfaces pueden tener un botón de retorno, pueden regresar a la interfaz funcional de la estación de bombeo.  

Idea de trabajo:  

La pantalla del puerto serie sirve como interfaz hombre-máquina y se comunica con la placa de desarrollo Arduino. La placa acepta los comandos de los botones de la pantalla táctil y transmite datos a la pantalla táctil del puerto serie para una visualización sincrónica. La escala deslizante está diseñada para mostrar los cambios de potencia de forma dinámica. Los íconos del interruptor de encendido, la cuchilla de potencia, el interruptor de modo y la cuchilla de modo están diseñados para generar archivos ICON y animar los efectos de acción de la fuente de alimentación y el modo. Además, en el programa de demostración de Arduino, la memoria variable se usa para leer instrucciones para obtener el estado de la fuente de alimentación y el modo, a fin de controlar la simulación de los datos de salida y enviar la ventana de cantidad real a la pantalla del puerto serie.  

Pasos de trabajo:  

  1. Configuración de hardware;  
  2. A) Conecte la placa de desarrollo Arduino y el USB a la placa de conversión del puerto serie;  
  3. B) Conecte el Pantalla táctil STONE con la placa de descarga del puerto serie USB y la placa adaptadora de puerto USB a serie;  
  4. C) Conecte la pantalla del puerto serie y la fuente de alimentación de la placa de desarrollo Arduino;  

3, a través de la depuración de comandos en serie y luego la programación para lograr el control de la estación de bombeo y las funciones de demostración del control de la estación hidroeléctrica.  

 A continuación, documente el proceso de desarrollo específico.

Primero, configure la conexión de hardware.  

Haga un buen trabajo conectando todas las piezas de acuerdo con los procedimientos de trabajo:

A continuación, cree la imagen del indicador ICON.  

Los botones y los ICONOS de cuchillo utilizados en este proyecto están hechos de la siguiente manera:  

(Interruptor de control de la estación de bombeo, archivo ICONO de animación de cuchillo 8. Diagrama de exploración de lista ICO)

En la barra de menú de STONE TOOL BOX (software de diseño de GUI), haga clic en Herramienta de generación de iconos en el menú Herramienta (T) para que aparezca el cuadro de diálogo Herramienta de iconos. Haga clic en "elegir la ruta de la imagen" en la parte inferior del cuadro de diálogo para seleccionar la ruta de la imagen del icono. Haga clic en el botón "Generar archivo ICON" para empaquetar los archivos BMP en la ruta para generar el archivo ".ico" reconocido por la plataforma STONE TOOL BOX (software de diseño GUI). Haga clic en el botón "Vista previa" para ver la lista de ICONOS en el archivo comprimido ".ico" importado.  

Botón para animar el icono BMP, píxel como el anterior (control de icono variable producido, el tamaño de la misma posición debe ser el mismo), control de la estación de bombeo 8 imágenes cortadas en la misma carpeta. Luego, en el lado izquierdo de la pantalla STONE TOOL BOX (software de diseño de GUI), seleccione la tarjeta de la página de iconos y agréguela al archivo 7. Ico comprimido usando el botón "Agregar icono" debajo de "Lista de iconos". Coloque las 6 imágenes del estado del interruptor de control de la central hidroeléctrica en otra carpeta y organícelas en orden 1-6. Cree el “6. Ico ”, y luego en el lado izquierdo del CAJA DE HERRAMIENTAS DE PIEDRA (software de diseño GUI) pantalla, seleccione la tarjeta de la página de iconos y agregue el “6. Ico ”usando el botón“ Agregar icono ”debajo de“ Lista de iconos ”.  

Ahora importe el icono de la imagen en STONE TOOL BOX (software de diseño GUI) y haga el botón de función.  

El método de 9-variable-animation icon.wmv todavía se adopta en este proyecto para realizar la función de animación. La captura de pantalla de la configuración de parámetros es la siguiente:  

            (Diagrama de atributos del ICONO variable de la central hidroeléctrica)

De izquierda a derecha están los parámetros de ICONO Configuración de las tres variables de la página de función de la central hidroeléctrica: inicio, parada y estado. Sus direcciones de memoria se establecen en la misma (0x0039) y sus rangos de datos son los mismos, por lo que sus cambios están sincronizados. Los archivos de iconos son 6. Ico, y los números de serie de iconos correspondientes son 1 y 2, 3 y 4, 6 y 5 respectivamente, que se seleccionan de acuerdo con el estado real.  

El efecto de animación del estado del botón se logra mediante botones incrementales. La siguiente figura muestra los parámetros del botón de incremento a la izquierda y el botón de descriminación a la derecha. La dirección es 0x0039, ambas iguales a las del ICONO variable.

(Diagrama de atributos del botón incremental con la misma dirección de memoria)

(Diagrama de atributos de ICONO variable del estado de la cuchilla del botón de la estación de bombeo)

De izquierda a derecha están los parámetros de ICONO Configuración de las cuatro variables de la página de función de la estación de bombeo: botón de encendido, cuchillo de potencia, cuchillo de modo y botón de modo. Aquí, ambos archivos Icon son 8.ICO, y su rango de datos es el mismo, en el que la dirección de memoria de los mismos se cambiará sincrónicamente.  

Las animaciones del estado de los botones también se implementan con botones incrementales. En la siguiente figura, el lado izquierdo del botón de reducción de suministro de energía y el lado derecho del botón de incremento de modo son los parámetros del botón de reducción de suministro de energía. Las direcciones son las mismas que las del ICONO de variable anterior, respectivamente 0x0009 y 0x000A. Este es más que el modo de procesamiento límite de un botón de ping-pong.

(Diagrama de atributos de botón incremental del estado del botón de la estación de bombeo Variable ICONO Variable con la misma dirección de memoria)

Además, la potencia de salida de la estación de bombeo se muestra mediante un icono deslizante, como se muestra en la siguiente figura:

Sus atributos de parámetro son:

(Icono deslizante de la potencia de salida de la estación de bombeo - cuadro de propiedades de la escala deslizante)

El icono de este control de escala Slider se llama en la DEMO oficial 24.ico. El método para agregar el archivo 24.ico es el mismo que el anterior. La dirección de memoria de este control Slider Scale es 0x0180, que se puede escribir en el programa MCU con la instrucción 82 (como se muestra en la imagen de arriba, el rango se establece en 0-100) para cambiar la posición del icono.  

En particular, el estado de la fuente de alimentación y los botones de modo en este proyecto se lee desde la dirección de memoria 0x0009, 0x000A y 0x0039 de la pantalla del puerto serie a través de la instrucción 83. 

Las instrucciones utilizadas son las siguientes:  

A5 5A 04 83 00 09 02  

La retroalimentación de la pantalla del puerto serie es la siguiente:  

A5 5A 08 83 00 09 02 00 01 00 02  

El siguiente 00 01 son datos de 2 bytes de 0x0009, 00 02 son datos de 2 bytes de 0x000A.  

Lea la instrucción 0x0039 como:  

A5 5A 04 83 00 39 01  

La retroalimentación de la pantalla del puerto serie es:  

A5 5A 06 83 00 39 01 00 01 o  

A5 5A 06 83 00 39 01 00 02  

Hay cinco direcciones de datos para escribir: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

En donde, la dirección de dosificación de la hoja es 0x0020, un número entero de 2 bits de 2 bytes. Se puede transmitir a la pantalla táctil a través del puerto serie.  

Para pasar 11 a la pantalla de variables de datos de la pantalla táctil, usa el siguiente comando:  

A5 5A 05 82 00 20 00 0B  

Programación de depuración.  

El código es el siguiente:  

/*

  frank8

  STONE y arduino COMM, sistema enlaiji yepian.

  Enciende un LED durante un segundo, luego se apaga durante un segundo, repetidamente.

  La dirección 0x0020 es la dirección del número de YePian;

  La dirección 0x0160 es la dirección de ahora LiuLiang;

  La dirección 0x0180 es la dirección de Bengzhan outpower;

  La dirección 0x0260 es la dirección de Jiejujiao;

  La dirección 0x0280 es la dirección de salida de agua;

  La dirección 0x0009 es la tecla de encendido bengzhan;

  La dirección 0x000A es la tecla de modo bengzhan;

  La dirección 0x0039 es la tecla de potencia de agua.

  Este código de ejemplo está en el archivo de frank. 20210611

 */

// El pin 13 tiene un LED conectado en la mayoría de las placas Arduino.

// Dale un nombre:

led int = 13;

int iYePian = 0; // ¡0x0020 para el número de YePian!

int iGongLu = 0; // ¡0x0180 para The GongLu!

int iLiuLiang = 0; // ¡0x0160 para el ahora LiuLiang!

int iJiao = 0; // 0x0260 para The JieJuJiao!

int iGongLuWater = 0; // ¡0x0280 para The Water GongLu! ¡el valor es 0-50000!

int iLed = 1; // tiempo de retraso num.

int iNum = 0; // leer en char num.

int iNum2 = 0; // ¡lee el char num2 para ShuiDianZhan!

int iPower = 2; // estatua clave 0x0009

int iMode = 2; // estatua clave 0x000A

int iPowerWater = 2; // estatua clave 0x0039

// la rutina de configuración se ejecuta una vez cuando presiona restablecer:

configuración nula () {                

  // inicializa el pin digital como salida.

  pinMode (led, SALIDA);     

  Serial.begin (115200); // Abra la función de comunicación serial y espere a que se abra el puerto serial  

while (! Serial) {

    ; // espera a que se conecte el puerto serie. Necesario solo para Leonardo

  }  

}

// la rutina del ciclo se repite una y otra vez para siempre:

bucle vacío () {

  int en Char;

    si (iLed == 900) {     

// ——- leer 0x0009 y 0x000A valor ———- 

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x04); //largo

            Serial.write (0x83); // ¡leer!

            Serial.write (0x00); // dirección de la tecla de encendido bengzhan!

            Serial.write (0x09); // dirección de la tecla de encendido bengzhan!

            Serial.write (0x02); // 0x0009 (potencia) y 0x000A (modo)

// ——— El valor de retorno de STONE será "A5 5A 08 83 00 09 02 00 01 00 02" ——

     }

/ * ——————————————————————————- * /     

    si (iLed == 800) {     

// ——- leer el valor 0x0039 ———- 

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x04); //largo

            Serial.write (0x83); // ¡leer!

            Serial.write (0x00); // ¡Dirección de la tecla de encendido ShuiDianZhan!

            Serial.write (0x39); // ¡Dirección de la tecla de encendido ShuiDianZhan!

            Serial.write (0x01); // 0x0039 (tecla de encendido) 

// ——— El valor de retorno de STONE será "A5 5A 06 83 00 39 01 00 01" ——

     }

  // Leer el mensaje enviado por el puerto serie:

  if (Serial.available ()> 0) {inChar = Serial.read (); }

  if (inChar == 0x09) {iNum = 1; }

  if ((inChar == 0x02) && (iNum == 1)) {iNum = 2; }

  if ((inChar == 0x00) && (iNum == 2)) {iNum = 3; }

  if ((inChar == 0x01) && (iNum == 3)) {  

      iNum = 4;

      si (iPower! = 1) {

          iPower = 1; //¡encendido!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

   if ((inChar == 0x02) && (iNum == 3)) {  

      iNum = 4;

      iPower = 2; //¡apagado!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

   if ((inChar == 0x00) && (iNum == 4)) {iNum = 5; }

   if ((inChar == 0x01) && (iNum == 5)) {  

      iNum = 0;

      iMode = 1; // ¡El modo es bueno!

   }

   if ((inChar == 0x02) && (iNum == 5)) {  

      iNum = 0;

      iMode = 2; // ¡El modo está APAGADO!

      si (iPower == 1) iGongLu = 60; // ¡GongLu está configurado al 60%!

   }

  // —————— ¡Las claves 0x0009 y 0x000A se leen bien! iPower \ iMode ok! —————————-

   if (inChar == 0x39) {iNum2 = 1; }

  if ((inChar == 0x01) && (iNum2 == 1)) {iNum2 = 2; }

  if ((inChar == 0x00) && (iNum2 == 2)) {iNum2 = 3; }

  if ((inChar == 0x01) && (iNum2 == 3)) {  

      iNum2 = 0;

      if (iPowerWater! = 1) {

          iPowerWater = 1; //¡encendido!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

   if ((inChar == 0x02) && (iNum2 == 3)) {  

      iNum2 = 0;

      iPowerWater = 2; //¡apagado!

   }

  // —————— ¡Tecla 0x0039 leer bien! iPowerWater ok! —————————-

  retraso (1); 

  iLed + = 1;   

  si (iLed == 500) {  

      digitalWrite (led, ALTO); // enciende el LED (ALTO es el nivel de voltaje)

                  // retraso (500); // espera un segundo, rango: 200-2000

           si (iPower == 1) { 

               iYePian + = 1; // rango: 1-20

               iLiuLiang + = 1; // rango: 1-20

               si (iMode == 1) iGongLu + = 5; // rango: 1-20

           }   

           si (iYePian> = 14) {iYePian = 10; }   

           si (iGongLu> = 70) {iGongLu = 50; }   

           si (iLiuLiang> = 14) {iLiuLiang = 10; }   

           si (iPowerWater == 2) { 

               iJiao + = 1; // rango: 1-20

               iGongLuWater + = 2; // rango: 1-20

           }   

           si (iJiao> = 60) { 

               iJiao = 0; 

               iGongLuAgua = 0; 

           }   

  }    

  if (iLed> = 1000) {    

      digitalWrite (led, BAJO); // apaga el LED haciendo que el voltaje sea BAJO

                  // retraso (500); // espera un segundo, rango: 200-2000

      LED = 1;

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x00); // dirección de YePian

            Serial.write (0x20); // dirección de YePian

            Serial.write (0x00);

            Serial.write (iYePian);

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x01); // dirección de GongLu

            Serial.write (0x80); // dirección de GongLu

            Serial.write (0x00);

            Serial.write (iGongLu);

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x01); // dirección de LiuLiang

            Serial.write (0x60); // dirección de LiuLiang

            Serial.write (iLiuLiang); // LiuLiang tiene 2800–3200

            Serial.write (0x80);            

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // dirección de ShuiDianZhan JieJuJiao

            Serial.write (0x60); // dirección de ShuiDianZhan JieJuJiao

            Serial.write (0x00);

            Serial.write (iJiao);

            Serial.write (0xA5); // ”A5 ″ es 165

            Serial.write (0x5A); // "5A" es 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // dirección de ShuiDianZhan out Power

            Serial.write (0x80); // dirección de ShuiDianZhan out Power;

            Serial.write (iGongLuWater); // ShuiDianZhan out Powe es 0–32000

            Serial.write (0x00);            

  }    

Finalmente, grabe el video en línea. 

Conecte la fuente de alimentación y la comunicación, conecte la placa de desarrollo Arduino a la comunicación del puerto serie, observe la interfaz funcional de la estación hidroeléctrica y la estación de bombeo en la pantalla del puerto serie, toque el interruptor para verificar el efecto y deslice el icono y los datos son normales .  

Fuente: Platón Data Intelligence