IOT

Controle de bomba Arduino + display STONE HMI

O sistema de regulação inteligente da lâmina é uma tecnologia patenteada, que é usada no sistema de controle de fluxo principal de várias estações hidrelétricas e estações de bombeamento de grande, médio e pequeno porte. Este projeto usa a tela de toque industrial serial confiável como a interface homem-máquina para exibir os parâmetros diários e dosagem da lâmina em tempo real, potência de saída, fluxo instantâneo e outras informações, como a exibição do efeito da operação. Além disso, o registro das condições de trabalho e o formulário de alarme de falha também são planejados e o botão standby é reservado. O projeto usa a tela de toque serial para exibição de dados e exibição de indicação de slide. Os acessórios são os seguintes:  

  1. STVI056WT-01 tela de toque serial e placa adaptadora STONE V1.2;  
  2. Placa de controle Arduino correspondente;  

Breve descrição da função de interface do sistema inteligente de controle de regulação da lâmina.  

Existem três botões na página inicial, que podem ser pressionados para entrar no sistema de estação hidrelétrica correspondente, sistema de controle de estação de bombeamento e interface do guia do usuário (com botões sobressalentes). A interface do guia do usuário mostra a estrutura do sistema de demonstração, conforme mostrado na figura a seguir:

(Interface inicial do software de demonstração de controle de ajuste inteligente Enlegi Blade)

Na interface do sistema de controle da usina hidrelétrica, existem botões de partida e parada e exibição de status, classificação (incluindo tensão nominal, potência nominal e velocidade nominal) e valor de controle (incluindo ângulo de inclinação da pá da hélice e potência de saída). Além disso, também pode haver outros botões de salto de página (como página inicial, registro de condição de trabalho, alarme de falha e outros botões de espera). No registro de condições de trabalho e na página de alarme de falha, pode haver um botão Voltar para retornar a esta página. O diagrama abaixo:

           (Interface de exibição de controle inteligente da estação hidrelétrica)

Descrição da função da interface do sistema de controle da estação de bombeamento. O diagrama abaixo:

                            (Interface de função do sistema de controle da estação de bombeamento)

Na interface funcional da estação de bombeamento, o modo pode ser alterado e a fonte de alimentação de todo o sistema pode ser ligada e desligada para exibir os parâmetros simulados reais (como dosagem da lâmina, taxa de fluxo imediata, potência de saída) e outros interfaces podem ser trocadas (como registro de condição de trabalho, relatório de alarme de falha). Ao mesmo tempo, os valores do sistema (número total de lâminas, potência nominal, taxa de fluxo definida) também podem ser exibidos. Outras interfaces também podem ter, como registro de condição de trabalho (o conteúdo pode ser pedido por número, tempo de ocorrência, detalhes do evento, notas), alarme de falha (o conteúdo pode ser pedido por número, tempo de ocorrência, detalhes de alarme, código de alarme, etc.), o duas interfaces podem ter um botão de retorno, podem retornar à interface funcional da estação de bombeamento.  

Ideia de trabalho:  

A tela da porta serial serve como interface homem-máquina e se comunica com a placa de desenvolvimento Arduino. A placa aceita comandos de botão da tela de toque e transmite dados para a tela de toque da porta serial para exibição síncrona. A escala do controle deslizante é projetada para exibir mudanças de potência dinamicamente. Os ícones do botão liga / desliga, botão liga / desliga, botão e modo são projetados para gerar arquivos ICON e animar os efeitos de ação da fonte de alimentação e do modo. Além disso, no programa de demonstração do Arduino, a memória variável é usada para ler as instruções para obter o estado da fonte de alimentação e do modo, de modo a controlar a simulação dos dados de saída e enviar a janela de quantidade real para a tela da porta serial.  

Etapas de trabalho:  

  1. Configurando o hardware;  
  2. A) Conecte a placa de desenvolvimento Arduino e USB à placa de conversão da porta serial;  
  3. B) Conecte o Tela sensível ao toque de PEDRA com a placa de download da porta serial USB e a placa adaptadora de porta serial USB;  
  4. C) Conecte a tela da porta serial e a fonte de alimentação da placa de desenvolvimento Arduino;  
  • Fez 3 interfaces de tela de porta serial, arquivo de ícone animado e escala deslizante e importou-os para a plataforma de desenvolvimento de tela STONE STONE TOOL BOX (software de design GUI);  

3, por meio de depuração de comando serial e, em seguida, programação para obter funções de demonstração de controle de estação de bombeamento e de controle de estação hidrelétrica.  

 Em seguida, documente o processo de desenvolvimento específico.

Primeiro, configure a conexão de hardware.  

Faça um bom trabalho ao conectar todas as peças de acordo com os procedimentos de trabalho:

Em seguida, faça a imagem do indicador ICON.  

Os botões e ÍCONES de faca usados ​​neste projeto são feitos da seguinte forma:  

(Chave de controle da estação de bombeamento, arquivo ICON de animação de faca 8. Diagrama de navegação da lista ICO)

Na barra de menus do STONE TOOL BOX (software de design GUI), clique em Icon generation Tool no menu Tool (T) para abrir a caixa de diálogo Icon Tool. Clique em “escolher o caminho da imagem” na parte inferior da caixa de diálogo para selecionar o caminho da imagem do ícone. Clique no botão “Gerar arquivo ICON” para empacotar os arquivos BMP no caminho para Gerar o arquivo “.ico“ reconhecido pela plataforma STONE TOOL BOX (software de design de GUI). Clique no botão “Visualizar“ para ver a lista do ÍCONE no arquivo compactado ”.ico“ importado.  

Botão para animar o ícone BMP, pixel como acima (controle do ícone da variável produzida, o tamanho da mesma posição deve ser o mesmo), controle da estação de bombeamento 8 imagens cortadas na mesma pasta. Em seguida, no lado esquerdo da tela STONE TOOL BOX (software de design GUI), selecione o cartão da página Ícone e adicione-o ao arquivo 7. Ico compactado usando o botão “Adicionar ícone” em “Lista de ícones”. Coloque todas as 6 fotos do estado da chave de controle da usina hidrelétrica em outra pasta e organize-as na ordem 1-6. Crie o “6. Arquivo Ico ”e, em seguida, no lado esquerdo do STONE TOOL BOX (software de design GUI) tela, selecione o cartão da página do ícone e adicione o compactado “6. Arquivo Ico ”usando o botão“ Adicionar ícone ”em“ Lista de ícones ”.  

Agora importe o ícone da imagem para o STONE TOOL BOX (software de design GUI) e crie o botão de função.  

O método de 9-variable-animation icon.wmv ainda é adotado neste projeto para realizar a função de animação. A captura de tela da configuração do parâmetro é a seguinte:  

            (Diagrama de atributos do ÍCONE Variável da estação hidrelétrica)

Da esquerda para a direita estão as configurações do parâmetro ICON das três variáveis ​​da página de função da estação hidrelétrica: iniciar, parar e estado. Seus endereços de memória são iguais (0x0039) e seus intervalos de dados são os mesmos, portanto, suas alterações são sincronizadas. Os arquivos de ícone são 6. Ico e os números de série do ícone correspondentes são 1 e 2, 3 e 4, 6 e 5, respectivamente, que são selecionados de acordo com o estado real.  

O efeito de animação do estado do botão é obtido por meio de botões incrementais. A figura a seguir mostra os parâmetros do botão de incremento à esquerda e do botão de descriminação à direita. O endereço é 0x0039, sendo que ambos são iguais aos do ICON da variável.

(Diagrama de atributos do botão incremental com o mesmo endereço de memória)

(Diagrama de atributo ICON variável do status da faca do botão da estação de bomba)

Da esquerda para a direita estão as configurações de parâmetro ICON das quatro variáveis ​​da página de função da estação de bomba: botão liga / desliga, faca motorizada, faca de modo e botão de modo. Aqui, os dois arquivos Icon são 8.ICO, e seu intervalo de dados é o mesmo, no qual o endereço de memória do mesmo será alterado de forma síncrona.  

As animações de estado dos botões também são implementadas com botões incrementais. Na figura a seguir, o lado esquerdo do botão de redução da fonte de alimentação e o lado direito do botão de incremento de modo são os parâmetros do botão de redução da fonte de alimentação. Os endereços são iguais aos do ICON da variável acima, respectivamente 0x0009 e 0x000A. Isso é mais do que o modo de processamento limite de um botão de pingue-pongue.

(Diagrama de atributo do botão incremental da variável ICON do estado do botão da estação de bomba com o mesmo endereço de memória)

Além disso, a potência de saída da estação de bombeamento é exibida usando um ícone deslizante, conforme mostrado na figura abaixo:

Seus atributos de parâmetro são:

(Ícone deslizante da potência de saída da estação de bombeamento - caixa de propriedades da escala deslizante)

O ícone deste controle de escala Slider é chamado no DEMO oficial 24.ico. O método para adicionar o arquivo 24.ico é o mesmo acima. O endereço de memória deste controle de escala deslizante é 0x0180, que pode ser escrito no programa MCU com instrução 82 (como mostrado na imagem acima, o intervalo é definido como 0-100) para alterar a posição do ícone.  

Em particular, o status da fonte de alimentação e dos botões de modo neste projeto são lidos a partir do endereço de memória 0x0009, 0x000A e 0x0039 da tela da porta serial por meio de 83 instruções. 

As instruções utilizadas são as seguintes:  

A5 5A 04 83 00 09 02  

O feedback da tela da porta serial é o seguinte:  

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

Os seguintes 00 01 são dados de 2 bytes de 0x0009, 00 02 são dados de 2 bytes de 0x000A.  

Leia a instrução 0x0039 como:  

A5 5A 04 83 00 39 01  

O feedback da tela da porta serial é:  

A5 5A 06 83 00 39 01 00 01 ou  

A5 5A 06 83 00 39 01 00 02  

Existem cinco endereços de dados para gravar: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Em que o endereço de dosagem foliar é 0x0020, um número inteiro de 2 bits de 2 bytes. Ele pode ser transmitido para a tela sensível ao toque através da porta serial.  

Para passar 11 para o display de variável de dados da tela sensível ao toque, use o seguinte comando:  

A5 5A 05 82 00 20 00 0B  

Depuração de programação.  

O código é o seguinte:  

/*

  frank8

  STONE e arduino COMM, sistema yepian enlaiji.

  Acende um LED por um segundo e depois apaga por um segundo, repetidamente.

  O endereço 0x0020 é o endereço de num de YePian;

  O endereço 0x0160 é o endereço de agora LiuLiang;

  O endereço 0x0180 é o endereço da potência externa de Bengzhan;

  O endereço 0x0260 é o endereço de Jiejujiao;

  O endereço 0x0280 é o endereço da saída de água;

  O endereço 0x0009 é a chave de força de bengjão;

  O endereço 0x000A é a chave do modo bengzhan;

  O endereço 0x0039 é a chave de energia da água.

  Este código de exemplo está no arquivo de frank. 20210611

 */

// O pino 13 tem um LED conectado na maioria das placas Arduino.

// dê um nome a ele:

led int = 13;

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

int iGongLu = 0; // 0x0180 para o GongLu!

int iLiuLiang = 0; // 0x0160 para o agora LiuLiang!

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

int iGongLuWater = 0; // 0x0280 para The Water GongLu! o valor é 0-50000!

int iLed = 1; // tempo de retardo num.

int iNum = 0; // ler em char num.

int iNum2 = 0; // ler em char num2 para ShuiDianZhan!

int iPower = 2; // estátua chave 0x0009

int iMode = 2; // estátua chave 0x000A

int iPowerWater = 2; // estátua chave 0x0039

// a rotina de configuração é executada uma vez quando você pressiona reset:

configuração nula () {                

  // inicializa o pino digital como uma saída.

  pinMode (led, OUTPUT);     

  Serial.begin (115200); // Abra a função de comunicação serial e aguarde a porta serial abrir  

while (! Serial) {

    ; // aguarde a conexão da porta serial. Necessário apenas para Leonardo

  }  

}

// a rotina de loop é executada indefinidamente:

loop vazio () {

  int emChar;

    if (iLed == 900) {     

// ——- leia o valor 0x0009 e 0x000A ———- 

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x04); //comprimento

            Serial.write (0x83); // leitura!

            Serial.write (0x00); // endereço da chave de força do bengjão!

            Serial.write (0x09); // endereço da chave de força do bengjão!

            Serial.write (0x02); // 0x0009 (energia) e 0x000A (modo)

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

     }

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

    if (iLed == 800) {     

// ——- leia o valor 0x0039 ———- 

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x04); //comprimento

            Serial.write (0x83); // leitura!

            Serial.write (0x00); // endereço da chave ShuiDianZhan Power!

            Serial.write (0x39); // endereço da chave de energia ShuiDianZhan!

            Serial.write (0x01); // 0x0039 (tecla de alimentação) 

// ——— O valor de retorno de PEDRA será “A5 5A 06 83 00 39 01 00 01“ ——

     }

  // Leia a mensagem enviada pela porta serial:

  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;

      if (iPower! = 1) {

          iPower = 1; //ligar!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iNum = 4;

      iPower = 2; //desligar!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iNum = 0;

      iMode = 1; // O modo é bom!

   }

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

      iNum = 0;

      iMode = 2; // O modo está DESLIGADO!

      if (iPower == 1) iGongLu = 60; // GongLu está definido para 60%!

   }

  // —————— chave 0x0009 e 0x000A lidas ok! 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; //ligar!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

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

      iNum2 = 0;

      iPowerWater = 2; //desligar!

   }

  // —————— chave 0x0039 lida ok! iPowerWater ok! —————————-

  atraso (1); 

  iLed + = 1;   

  if (iLed == 500) {  

      digitalWrite (led, HIGH); // liga o LED (HIGH é o nível de tensão)

                  // atraso (500); // aguarde um segundo, Intervalo: 200-2000

           if (iPower == 1) { 

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

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

               if (iMode == 1) iGongLu + = 5; // intervalo: 1-20

           }   

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

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

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

           if (iPowerWater == 2) { 

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

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

           }   

           if (iJiao> = 60) { 

               iJiao = 0; 

               iGongLuÁgua = 0; 

           }   

  }    

  if (iLed> = 1000) {    

      digitalWrite (led, BAIXO); // desligue o LED tornando a tensão BAIXA

                  // atraso (500); // aguarde um segundo, intervalo: 200-2000

      iLed = 1;

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x00); // endereço de YePian

            Serial.write (0x20); // endereço de YePian

            Serial.write (0x00);

            Serial.write (iYePian);

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x01); // endereço de GongLu

            Serial.write (0x80); // endereço de GongLu

            Serial.write (0x00);

            Serial.write (iGongLu);

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x01); // endereço de LiuLiang

            Serial.write (0x60); // endereço de LiuLiang

            Serial.write (iLiuLiang); // LiuLiang é 2800-3200

            Serial.write (0x80);            

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // endereço de ShuiDianZhan JieJuJiao

            Serial.write (0x60); // endereço de ShuiDianZhan JieJuJiao

            Serial.write (0x00);

            Serial.write (iJiao);

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

            Serial.write (0x5A); // ”5A” é 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // endereço de ShuiDianZhan out Power

            Serial.write (0x80); // endereço de ShuiDianZhan out Power;

            Serial.write (iGongLuWater); // ShuiDianZhan out Powe é 0-32000

            Serial.write (0x00);            

  }    

Finalmente, grave o vídeo online. 

Conecte a fonte de alimentação e a comunicação, conecte a placa de desenvolvimento do Arduino à comunicação da porta serial, observe a interface funcional da estação hidrelétrica e da estação de bombeamento na tela da porta serial, toque no interruptor para verificar o efeito e deslize o ícone e os dados estão normais .  

Fonte: Plato Data Intelligence