IOT

Управление насосом Arduino + дисплей STONE HMI

Система интеллектуального регулирования лопастей - это запатентованная технология, которая используется в основных системах управления различных крупных, средних и малых гидроэлектростанций и насосных станций. В этом проекте используется надежный серийный промышленный сенсорный экран в качестве человеко-машинного интерфейса для отображения ежедневных параметров и дозировки лезвия в реальном времени, выходной мощности, мгновенного расхода и другой информации в качестве отображения рабочего эффекта. Кроме того, также запланированы журнал рабочего состояния и форма аварийной сигнализации, а кнопка режима ожидания зарезервирована. В проекте используется последовательный сенсорный экран для отображения данных и отображения слайдов. Аксессуары следующие:  

  1. СТВИ056WT-01 последовательный сенсорный экран и плата адаптера STONE V1.2;  
  2. Соответствующая плата управления Arduino;  

Краткое описание интерфейсной функции интеллектуальной системы управления регулировкой лопастей.  

На главной странице есть три кнопки, которые можно нажать для входа в соответствующую систему гидроэлектростанции, систему управления насосной станцией и интерфейс руководства пользователя (с запасными кнопками). Интерфейс руководства пользователя показывает структуру демонстрационной системы, как показано на следующем рисунке:

(Домашний интерфейс демонстрационного программного обеспечения Enlegi Blade Intelligent Adjustment Control)

На интерфейсе системы управления гидроэлектростанцией имеются кнопки пуска и останова, а также отображение статуса, номинала (включая номинальное напряжение, номинальную мощность и номинальную скорость) и контрольного значения (включая угол наклона лопасти гребного винта и выходную мощность). Кроме того, могут быть и другие кнопки перехода по страницам (например, домашняя страница, журнал рабочих условий, аварийный сигнал и другие кнопки режима ожидания). На странице журнала рабочих условий и аварийной сигнализации может быть кнопка «Назад» для возврата на эту страницу. Схема ниже:

           (Интеллектуальный интерфейс дисплея управления гидроэлектростанцией)

Описание функций интерфейса системы управления насосной станцией. Схема ниже:

                            (Функциональный интерфейс системы управления насосной станцией)

В функциональном интерфейсе насосной станции можно изменять режим и включать и выключать питание всей системы для отображения фактических смоделированных параметров (таких как дозировка лопастей, немедленный расход, выходная мощность) и другие. интерфейсы могут быть переключены (например, журнал рабочего состояния, отчет о неисправностях). Одновременно могут отображаться системные значения (общее количество лопастей, номинальная мощность, установленный расход). Другие интерфейсы также могут иметь, например, журнал рабочих условий (содержимое может быть упорядочено по номеру, времени возникновения, деталям события, примечания), сигнализация неисправности (содержимое может быть заказано по номеру, времени возникновения, деталям сигнализации, кодам сигнализации и т. Д.), два интерфейса могут иметь кнопку возврата, могут возвращаться к функциональному интерфейсу насосной станции.  

Рабочая идея:  

Экран последовательного порта служит человеко-машинным интерфейсом и взаимодействует с платой разработки Arduino. Плата принимает команды кнопок сенсорного экрана и передает данные на сенсорный экран последовательного порта для синхронного отображения. Ползунок шкалы предназначен для динамического отображения изменений мощности. Иконки выключателя питания, ножа питания, переключателя режимов и ножа режимов предназначены для создания файлов ICON и анимации эффектов действия источника питания и режима. Кроме того, в демонстрационной программе Arduino переменная память используется для чтения инструкций для получения состояния источника питания и режима, чтобы управлять моделированием выходных данных и выводить окно фактического количества на экран последовательного порта.  

Шаги работы:  

  1. Настройка оборудования;  
  2. A) Подключите плату разработки Arduino и USB к плате преобразования последовательного порта;  
  3. Б) Подключите КАМЕННЫЙ сенсорный экран с платой загрузки последовательного порта USB и платой адаптера последовательного порта USB;  
  4. C) Подключите экран последовательного порта и блок питания платы разработки Arduino;  

3, с помощью последовательной отладки команд, а затем программирования для достижения функций управления насосной станцией и управления гидроэлектростанцией.  

 Затем задокументируйте конкретный процесс разработки.

Сначала настройте аппаратное соединение.  

Хорошо поработайте, соединяя все части в соответствии с рабочими процедурами:

Затем сделайте изображение индикатора ICON.  

Кнопки и ИКОНЫ ножа, используемые в этом проекте, выполнены следующим образом:  

(Переключатель управления насосной станцией, файл ICON анимации ножа 8. Схема просмотра списка ICO)

В строке меню STONE TOOL BOX (программное обеспечение для проектирования графического интерфейса пользователя) щелкните Инструмент создания значков в меню «Инструмент» (T), чтобы открыть диалоговое окно «Инструмент значков». Нажмите «Выбрать путь к изображению» в нижней части диалогового окна, чтобы выбрать путь к изображению значка. Нажмите кнопку «Сгенерировать файл ICON», чтобы упаковать файлы BMP по пути создания файла «.ico», распознаваемого платформой STONE TOOL BOX (программное обеспечение для проектирования графического интерфейса пользователя). Нажмите кнопку «Предварительный просмотр», чтобы просмотреть список значков в импортированном сжатом файле формата «.ico».  

Кнопка для анимации значка BMP, пиксель, как указано выше (элемент управления производимой переменной, размер той же позиции должен быть одинаковым), элемент управления насосной станцией 8 вырезает изображения в ту же папку. Затем в левой части экрана STONE TOOL BOX (программное обеспечение для проектирования графического интерфейса пользователя) выберите карточку страницы значков и добавьте ее в сжатый 7. ICO файл с помощью кнопки «Добавить значок» в разделе «Список значков». Поместите все 6 изображений состояния контрольного переключателя ГЭС в другую папку и расположите их в порядке 1-6. Создайте «6. Ico », а затем в левой части STONE TOOL BOX (программа для проектирования графического интерфейса пользователя) экрана, выберите карточку страницы значков и добавьте заархивированный «6. Ico »с помощью кнопки« Добавить значок »в разделе« Список значков ».  

Теперь импортируйте изображение Icon в STONE TOOL BOX (программное обеспечение GUI Design) и сделайте функциональную кнопку.  

В этом проекте все еще используется метод 9-переменных-анимации icon.wmv для реализации функции анимации. Снимок экрана настройки параметров выглядит следующим образом:  

            (Диаграмма атрибутов переменной ICON гидроэлектростанции)

Слева направо находятся параметры ЗНАЧОК Настройки трех переменных страницы функций гидроэлектростанции: запуск, остановка и состояние. Их адреса памяти устанавливаются одинаковыми (0x0039), и их диапазоны данных одинаковы, поэтому их изменения синхронизируются. Файлы значков - это 6. Ico, а соответствующие серийные номера значков - 1 и 2, 3 и 4, 6 и 5 соответственно, которые выбираются в соответствии с фактическим состоянием.  

Эффект анимации состояния кнопки достигается с помощью дополнительных кнопок. На следующем рисунке показаны параметры кнопки увеличения слева и кнопки удаления справа. Адрес 0x0039, оба совпадают с адресом переменной ICON.

(Диаграмма атрибутов инкрементной кнопки с тем же адресом памяти)

(Переменная диаграмма атрибутов ICON состояния кнопочного ножа насосной станции)

Слева направо находятся ЗНАЧОК параметров настройки четырех переменных страницы функций насосной станции: кнопка включения, нож питания, нож режима и кнопка режима. Здесь оба файла значков имеют номер 8.ICO, и их диапазон данных совпадает, при этом адрес их памяти будет изменяться синхронно.  

Анимация состояния кнопки также реализована с помощью дополнительных кнопок. На следующем рисунке левая сторона кнопки уменьшения мощности и правая сторона кнопки увеличения режима являются параметрами кнопки уменьшения мощности. Адреса такие же, как у указанной выше переменной ICON, соответственно 0x0009 и 0x000A. Это больше, чем предельный режим обработки кнопки пинг-понга.

(Инкрементальная диаграмма атрибутов кнопки состояния кнопки насосной станции Переменная ICON Переменная с тем же адресом памяти)

Кроме того, выходная мощность насосной станции отображается с помощью скользящего значка, как показано на рисунке ниже:

Его атрибуты параметров:

(Скользящий значок выходной мощности насосной станции - поле свойств шкалы слайдера)

Значок этого элемента управления шкалой Slider называется в официальной DEMO 24.ico. Метод добавления файла 24.ico такой же, как указано выше. Адрес памяти этого элемента управления Slider Scale - 0x0180, который можно записать в программе MCU с помощью инструкции 82 (как показано на рисунке выше, диапазон установлен от 0 до 100) для изменения положения значка.  

В частности, состояние кнопок питания и режимов в этом проекте считывается из адреса памяти 0x0009, 0x000A и 0x0039 экрана последовательного порта с помощью инструкции 83. 

Используемые инструкции следующие:  

А5 5А 04 83 00 09 02  

Обратная связь экрана последовательного порта выглядит следующим образом:  

А5 5А 08 83 00 09 02 00 01 00 02  

Следующий 00 01 - это 2-байтовые данные 0x0009, 00 02 - 2-байтовые данные 0x000A.  

Прочтите инструкцию 0x0039 как:  

А5 5А 04 83 00 39 01  

Отклик экрана последовательного порта:  

А5 5А 06 83 00 39 01 00 01 или  

А5 5А 06 83 00 39 01 00 02  

Существует пять адресов данных для записи: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

При этом адрес дозировки листьев равен 0x0020, 2-битному целому числу из 2 байтов. Его можно передать на сенсорный дисплей через последовательный порт.  

Чтобы передать 11 в отображение переменных данных на сенсорном экране, используйте следующую команду:  

А5 5А 05 82 00 20 00 0В  

Отладка программирования.  

Код выглядит следующим образом:  

/*

  frank8

  STONE и arduino COMM, система enlaiji yepian.

  Включает светодиод на одну секунду, а затем выключается на одну секунду несколько раз.

  Адрес 0x0020 - это адрес YePian;

  Адрес 0x0160 теперь является адресом LiuLiang;

  Адрес 0x0180 - это адрес Бенгжанской выносной электростанции;

  Адрес 0x0260 - это адрес Jiejujiao;

  Адрес 0x0280 - это адрес источника воды;

  Адрес 0x0009 - это ключ включения bengzhan;

  Адрес 0x000A - это ключ режима бенгжан;

  Адрес 0x0039 - это ключ подачи воды.

  Этот пример кода находится в файле frank. 20210611

 */

// К выводу 13 подключен светодиод на большинстве плат Arduino.

// даем ему имя:

инт светодиод = 13;

int iYePian = 0; // 0x0020 для числа YePian!

int iGongLu = 0; // 0x0180 для GongLu!

int iLiuLiang = 0; // 0x0160 для The now LiuLiang!

int iJiao = 0; // 0x0260 для JieJuJiao!

int iGongLuWater = 0; // 0x0280 для The Water GongLu! значение 0-50000!

int iLed = 1; // время задержки num.

int iNum = 0; // читать в char num.

int iNum2 = 0; // читать в char num2 для ShuiDianZhan!

int iPower = 2; // статуя ключа 0x0009

int iMode = 2; // статуя ключа 0x000A

int iPowerWater = 2; // статуя ключа 0x0039

// процедура установки запускается один раз при нажатии кнопки сброса:

void setup () {                

  // инициализируем цифровой вывод как выход.

  pinMode (светодиод, ВЫХОД);     

  Serial.begin (115200); // Открываем функцию последовательной связи и ждем, пока откроется последовательный порт  

while (! Serial) {

    ; // ждем подключения последовательного порта. Требуется только для Леонардо

  }  

}

// процедура цикла запускается снова и снова бесконечно:

void loop () {

  интервал inChar;

    if (iLed == 900) {     

// ——- читать значение 0x0009 и 0x000A ———- 

            Serial.write (0xA5); // ”A5 ″ равно 165

            Serial.write (0x5A); // «5A» равно 90

            Serial.write (0x04); //длина

            Serial.write (0x83); // читать!

            Serial.write (0x00); // адрес бенгжанского ключа питания!

            Serial.write (0x09); // адрес бенгжанского ключа питания!

            Serial.write (0x02); // 0x0009 (питание) и 0x000A (режим)

// ——— Возвращаемое значение STONE будет «A5 5A 08 83 00 09 02 00 01 00 02» ——

     }

/ * —-----     

    if (iLed == 800) {     

// ——- читать значение 0x0039 ———- 

            Serial.write (0xA5); // ”A5 ″ равно 165

            Serial.write (0x5A); // «5A» равно 90

            Serial.write (0x04); //длина

            Serial.write (0x83); // читать!

            Serial.write (0x00); // адрес ключа ShuiDianZhan Power!

            Serial.write (0x39); // адрес клавиши включения ShuiDianZhan!

            Serial.write (0x01); // 0x0039 (клавиша включения) 

// ——— Возвращаемое значение STONE будет «A5 5A 06 83 00 39 01 00 01» ——

     }

  // Чтение сообщения, отправленного последовательным портом:

  если (Serial.available ()> 0) {inChar = Serial.read (); }

  если (inChar == 0x09) {iNum = 1; }

  если ((inChar == 0x02) && (iNum == 1)) {iNum = 2; }

  если ((inChar == 0x00) && (iNum == 2)) {iNum = 3; }

  если ((inChar == 0x01) && (iNum == 3)) {  

      iNum = 4;

      if (iPower! = 1) {

          iPower = 1; //включить!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

   если ((inChar == 0x02) && (iNum == 3)) {  

      iNum = 4;

      iPower = 2; //выключить!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

   если ((inChar == 0x00) && (iNum == 4)) {iNum = 5; }

   если ((inChar == 0x01) && (iNum == 5)) {  

      iNum = 0;

      iMode = 1; // Режим хороший!

   }

   если ((inChar == 0x02) && (iNum == 5)) {  

      iNum = 0;

      iMode = 2; // Режим выключен!

      если (iPower == 1) iGongLu = 60; // GongLu установлен на 60%!

   }

  // —————— Ключ 0x0009 и 0x000A прочитан нормально! iPower \ iMode ok! —————————-

   если (inChar == 0x39) {iNum2 = 1; }

  если ((inChar == 0x01) && (iNum2 == 1)) {iNum2 = 2; }

  если ((inChar == 0x00) && (iNum2 == 2)) {iNum2 = 3; }

  если ((inChar == 0x01) && (iNum2 == 3)) {  

      iNum2 = 0;

      if (iPowerWater! = 1) {

          iPowerWater = 1; //включить!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

   если ((inChar == 0x02) && (iNum2 == 3)) {  

      iNum2 = 0;

      iPowerWater = 2; //выключить!

   }

  // —————— 0x0039 ключ прочитан нормально! iPowerWater в порядке! —————————-

  Задержка (1); 

  iLed + = 1;   

  if (iLed == 500) {  

      digitalWrite (светодиод, ВЫСОКИЙ); // включаем светодиод (HIGH - уровень напряжения)

                  // задержка (500); // ждем секунду, диапазон: 200-2000

           if (iPower == 1) { 

               iYePian + = 1; // диапазон: 1-20

               iLiuLiang + = 1; // диапазон: 1-20

               если (iMode == 1) iGongLu + = 5; // диапазон: 1-20

           }   

           если (iYePian> = 14) {iYePian = 10; }   

           если (iGongLu> = 70) {iGongLu = 50; }   

           если (iLiuLiang> = 14) {iLiuLiang = 10; }   

           if (iPowerWater == 2) { 

               iJiao + = 1; // диапазон: 1-20

               iGongLuWater + = 2; // диапазон: 1-20

           }   

           if (iJiao> = 60) { 

               ицзяо = 0; 

               iGongLuWater = 0; 

           }   

  }    

  if (iLed> = 1000) {    

      digitalWrite (светодиод, НИЗКИЙ); // выключаем светодиод, понижая напряжение

                  // задержка (500); // ждем секунду, диапазон: 200-2000

      iLED = 1;

            Serial.write (0xA5); // ”A5 ″ равно 165

            Serial.write (0x5A); // «5A» равно 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x00); // адрес YePian

            Serial.write (0x20); // адрес 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); // адрес GongLu

            Serial.write (0x80); // адрес 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); // адрес Люляна

            Serial.write (0x60); // адрес Люляна

            Serial.write (iLiuLiang); // Люлян - 2800–3200

            Serial.write (0x80);            

            Serial.write (0xA5); // ”A5 ″ равно 165

            Serial.write (0x5A); // «5A» равно 90

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // адрес ShuiDianZhan JieJuJiao

            Serial.write (0x60); // адрес 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); // адрес ShuiDianZhan Out Power

            Serial.write (0x80); // адрес ShuiDianZhan out Power;

            Serial.write (iGongLuWater); // ShuiDianZhan выходит из Powe 0–32000

            Serial.write (0x00);            

  }    

Наконец, запишите видео онлайн. 

Подключите источник питания и связь, подключите плату разработки Arduino к последовательному порту связи, наблюдайте за функциональным интерфейсом гидроэлектростанции и насосной станции на экране последовательного порта, коснитесь переключателя, чтобы проверить эффект, и сдвиньте значок, и данные в норме .  

Источник: Plato Data Intelligence.