IOT

Kontrol pompa Arduino + tampilan BATU HMI

Sistem pengaturan cerdas blade adalah teknologi yang dipatenkan, yang digunakan dalam sistem kontrol arus utama berbagai stasiun pembangkit listrik tenaga air dan stasiun pompa besar, sedang dan kecil. Proyek ini menggunakan layar sentuh industri serial yang andal sebagai antarmuka manusia-mesin untuk menampilkan parameter harian dan dosis blade waktu nyata, daya keluaran, aliran instan, dan informasi lainnya, sebagai tampilan efek operasi. Selain itu, log kondisi kerja dan formulir alarm kesalahan juga direncanakan, dan tombol siaga dicadangkan. Proyek ini menggunakan layar sentuh serial untuk tampilan data dan tampilan indikasi slide. Aksesorisnya adalah sebagai berikut:  

  1. STVI056WT-01 layar sentuh serial dan papan adaptor BATU V1.2;  
  2. Papan kontrol Arduino yang cocok;  

Deskripsi singkat tentang fungsi antarmuka sistem kontrol pengatur blade cerdas.  

Ada tiga tombol di halaman beranda, yang dapat ditekan untuk masuk ke sistem pembangkit listrik tenaga air yang sesuai, sistem kontrol stasiun pompa, dan antarmuka panduan pengguna (dengan tombol cadangan). Antarmuka panduan pengguna menunjukkan kerangka sistem demo, seperti yang ditunjukkan pada gambar berikut:

(Antarmuka rumah dari Enlegi Blade Intelligent Adjustment Control Demonstration Software)

Pada antarmuka sistem kontrol pembangkit listrik tenaga air, ada tombol mulai dan berhenti dan tampilan status, peringkat (termasuk tegangan pengenal, daya pengenal, dan kecepatan pengenal) dan nilai kontrol (termasuk Sudut pitch bilah baling-baling dan daya keluaran). Selain itu, dapat juga ada tombol lompat halaman lainnya (seperti halaman beranda, log kondisi kerja, alarm kesalahan, dan tombol siaga lainnya). Dalam log kondisi kerja dan halaman alarm kesalahan, mungkin ada tombol kembali untuk kembali ke halaman ini. Diagram di bawah ini:

           (Antarmuka tampilan kontrol cerdas dari pembangkit listrik tenaga air)

Deskripsi fungsi antarmuka sistem kontrol stasiun pompa. Diagram di bawah ini:

                            (Antarmuka fungsi sistem kontrol stasiun pompa)

Dalam antarmuka fungsional stasiun pompa, mode dapat diubah dan catu daya seluruh sistem dapat dinyalakan dan dimatikan untuk menampilkan parameter simulasi aktual (seperti dosis blade, laju aliran langsung, daya keluaran), dan lainnya antarmuka dapat diaktifkan (seperti log kondisi kerja, laporan alarm kesalahan). Pada saat yang sama, nilai sistem (jumlah total blade, daya terukur, laju aliran yang disetel) juga dapat ditampilkan. Antarmuka lain juga dapat memiliki, seperti log kondisi kerja (konten dapat dipesan nomor, waktu kejadian, detail acara, catatan), alarm kesalahan (konten dapat dipesan nomor, waktu kejadian, detail alarm, kode alarm, dll.), dua antarmuka dapat memiliki tombol kembali, dapat kembali ke antarmuka fungsional stasiun pompa.  

Ide kerja:  

Layar port serial berfungsi sebagai antarmuka manusia-mesin dan berkomunikasi dengan papan pengembangan Arduino. Papan menerima perintah tombol layar sentuh dan mengirimkan data ke layar sentuh port serial untuk tampilan sinkron. Skala slider dirancang untuk menampilkan perubahan daya secara dinamis. Ikon sakelar daya, bilah daya, sakelar mode, dan bilah mode dirancang untuk menghasilkan file ICON dan menghidupkan efek aksi catu daya dan mode. Selain itu, dalam program demo Arduino, memori variabel digunakan untuk membaca instruksi untuk mendapatkan status catu daya dan mode, sehingga dapat mengontrol simulasi data keluaran dan menampilkan jendela kuantitas aktual ke layar port serial.  

Langkah kerja:  

  1. Menyiapkan perangkat keras;  
  2. A) Hubungkan papan pengembangan Arduino dan USB ke papan konversi port serial;  
  3. B) Hubungkan layar sentuh BATU dengan papan unduhan port serial USB dan papan adaptor port USB ke port serial;  
  4. C) Hubungkan layar port serial dan catu daya papan pengembangan Arduino;  

3, melalui debugging perintah serial, dan kemudian pemrograman untuk mencapai kontrol stasiun pompa dan fungsi demonstrasi kontrol stasiun tenaga air.  

 Selanjutnya, dokumentasikan proses pengembangan spesifik.

Pertama, atur koneksi perangkat keras.  

Lakukan pekerjaan yang baik untuk menghubungkan semua bagian sesuai dengan prosedur kerja:

Selanjutnya buat gambar indikator ICON.  

Tombol dan IKON pisau yang digunakan dalam proyek ini dibuat sebagai berikut:  

(Sakelar kontrol stasiun pompa, file ICON animasi pisau 8. Diagram penelusuran daftar ICO)

Di bilah menu STONE TOOL BOX (perangkat lunak Desain GUI), klik Alat pembuat ikon di bawah menu Alat (T) untuk memunculkan kotak dialog Alat Ikon. Klik "pilih jalur gambar" di bagian bawah kotak dialog untuk memilih jalur gambar Ikon. Klik tombol "Hasilkan file ICON" untuk mengemas file BMP di jalur untuk Menghasilkan file ".ico" yang dikenali oleh platform STONE TOOL BOX (perangkat lunak Desain GUI). Klik tombol "Pratinjau" untuk melihat daftar ICON yang diimpor".ico "file terkompresi.  

Tombol untuk menganimasikan Ikon BMP, piksel seperti di atas (Kontrol Ikon Variabel yang Diproduksi, ukuran posisi yang sama harus sama), kontrol stasiun pompa 8 memotong gambar ke dalam folder yang sama. Kemudian, di sisi kiri layar STONE TOOL BOX (perangkat lunak Desain GUI), pilih kartu halaman Ikon dan Tambahkan ke file 7. Ico terkompresi menggunakan tombol "Tambah Ikon" di bawah "Daftar Ikon". Letakkan semua 6 gambar status sakelar kontrol pembangkit listrik tenaga air ke dalam folder lain dan atur dalam urutan 1-6. Buat "6. Ico”, lalu di sisi kiri file KOTAK ALAT BATU (perangkat lunak Desain GUI) layar, pilih kartu halaman Ikon dan Tambahkan zip “6. Ico" menggunakan tombol "Tambah Ikon" di bawah "Daftar Ikon".  

Sekarang impor Ikon gambar ke STONE TOOL BOX (perangkat lunak Desain GUI) dan buat tombol fungsi.  

Metode 9-variable-animation icon.wmv masih diadopsi dalam proyek ini untuk mewujudkan fungsi animasi. Tangkapan layar pengaturan parameter adalah sebagai berikut:  

            (Diagram atribut Variabel ICON pembangkit listrik tenaga air)

Dari kiri ke kanan adalah Pengaturan parameter ICON dari tiga variabel halaman fungsi pembangkit listrik tenaga air: mulai, berhenti, dan status. Alamat memorinya disetel sama (0x0039) dan rentang datanya sama, sehingga perubahannya disinkronkan. File ikon adalah 6. Ico, dan nomor seri Ikon yang sesuai masing-masing adalah 1 dan 2, 3 dan 4, 6 dan 5, yang dipilih sesuai dengan keadaan sebenarnya.  

Efek animasi status tombol dicapai melalui tombol tambahan. Gambar berikut menunjukkan parameter tombol kenaikan di sebelah kiri dan tombol dekriminasi di sebelah kanan. Alamatnya adalah 0x0039, keduanya sama dengan ICON Variabel.

(Diagram atribut tombol inkremental dengan alamat memori yang sama)

(Diagram atribut ICON variabel status pisau kancing stasiun pompa)

Dari kiri ke kanan adalah Pengaturan parameter ICON dari empat variabel halaman fungsi stasiun pompa: tombol daya, pisau daya, pisau mode, dan tombol mode. Di sini, kedua file Ikon adalah 8.ICO, dan rentang datanya sama, di mana alamat memori yang sama akan diubah secara serempak.  

Animasi status tombol juga diimplementasikan dengan tombol tambahan. Pada gambar berikut, sisi kiri tombol pengurangan catu daya dan sisi kanan tombol kenaikan mode adalah parameter tombol pengurangan catu daya. Alamatnya sama dengan Variable ICON diatas, masing-masing 0x0009 dan 0x000A. Ini lebih dari batas mode pemrosesan tombol ping-pong.

(Diagram atribut tombol tambahan status tombol stasiun pompa Variabel ICON Variabel dengan alamat memori yang sama)

Selain itu, daya keluaran stasiun pompa ditampilkan menggunakan ikon geser, seperti yang ditunjukkan pada gambar di bawah ini:

Atribut parameternya adalah:

(Ikon geser daya keluaran stasiun pompa — kotak properti skala Slider)

Ikon kontrol skala Slider ini disebut dalam DEMO 24.ico resmi. Cara menambahkan file 24.ico sama seperti di atas. Alamat memori kontrol Skala Slider ini adalah 0x0180, yang dapat ditulis dalam program MCU dengan instruksi 82 ​​(seperti yang ditunjukkan pada gambar di atas, rentang diatur ke 0-100) untuk mengubah posisi ikon.  

Secara khusus, status catu daya dan tombol mode dalam proyek ini dibacakan dari alamat memori 0x0009, 0x000A dan 0x0039 dari layar port serial melalui instruksi 83. 

Instruksi yang digunakan adalah sebagai berikut:  

A5 5A 04 83 00 09 02  

Umpan balik layar port serial adalah sebagai berikut:  

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

00 01 berikut adalah data 2byte dari 0x0009, 00 02 adalah data 2byte dari 0x000A.  

Baca instruksi 0x0039 sebagai:  

A5 5A 04 83 00 39 01  

Umpan balik dari layar port serial adalah:  

A5 5A 06 83 00 39 01 00 01 atau  

A5 5A 06 83 00 39 01 00 02  

Ada lima alamat data untuk menulis: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Dimana, alamat dosis daun adalah 0x0020, bilangan bulat 2-bit sebesar 2 byte. Itu dapat ditransmisikan ke tampilan layar sentuh melalui port serial.  

Untuk meneruskan 11 ke tampilan variabel data layar sentuh, gunakan perintah berikut:  

A5 5A 05 82 00 20 00 0B  

Pemrograman debugging.  

Kodenya adalah sebagai berikut:  

/*

  frank8

  BATU dan arduino COMM, sistem enlaiji yepian.

  Menyalakan LED selama satu detik, lalu mati selama satu detik, berulang kali.

  Alamat 0x0020 adalah alamat dari jumlah YePian;

  Alamat 0x0160 adalah alamat sekarang LiuLiang;

  Alamat 0x0180 adalah alamat outpower Bengzhan;

  Alamat 0x0260 adalah alamat Jiejujiao;

  Alamat 0x0280 adalah alamat water outpower;

  Alamat 0x0009 adalah kunci daya bengzhan;

  Alamat 0x000A adalah kunci mode bengzhan;

  Alamat 0x0039 adalah kunci daya air.

  Contoh kode ini ada di file frank. 20210611

 */

// Pin 13 memiliki LED yang terhubung di sebagian besar papan Arduino.

// beri nama:

int dipimpin = 13;

int iYePian = 0; //0x0020 untuk Jumlah YePian!

int iGongLu = 0; //0x0180 untuk GongLu!

int iLiuLiang = 0; //0x0160 untuk LiuLiang sekarang!

int iJiao = 0; // 0x0260 untuk JieJuJiao!

int iGongLuWater = 0; //0x0280 untuk GongLu Air! nilainya 0-50000!

int iLed = 1; // jumlah waktu tunda.

int iNum = 0 ; //baca di char num.

int iNum2 = 0; //baca di char num2 untuk ShuiDianZhan!

int iPower = 2; //patung kunci 0x0009

int iMode = 2; //patung kunci 0x000A

int iPowerWater = 2; //patung kunci 0x0039

// rutinitas pengaturan berjalan sekali saat Anda menekan reset:

batal penyiapan () {                

  // inisialisasi pin digital sebagai output.

  pinMode (dipimpin, OUTPUT);     

  Serial.begin(115200); // Buka fungsi komunikasi serial dan tunggu hingga port serial terbuka  

sementara (!Serial) {

    ; // tunggu port serial terhubung. Dibutuhkan hanya untuk Leonardo

  }  

}

// rutinitas loop berjalan berulang-ulang selamanya:

void loop () {

  int diChar;

    if (iLed == 900) {     

//——- membaca nilai 0x0009 dan 0x000A———- 

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x04); //panjang

            Serial.tulis (0x83); // Baca!

            Serial.tulis (0x00); // alamat kunci daya bengzhan!

            Serial.tulis (0x09); // alamat kunci daya bengzhan!

            Serial.tulis (0x02); // 0x0009(daya) dan 0x000A(mode)

//———Nilai pengembalian BATU akan menjadi “A5 5A 08 83 00 09 02 00 01 00 02”——

     }

/*-----------------------------------------*/     

    if (iLed == 800) {     

//——- baca nilai 0x0039———- 

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x04); //panjang

            Serial.tulis (0x83); // Baca!

            Serial.tulis (0x00); // alamat kunci daya ShuiDianZhan!

            Serial.write(0x39); // alamat kunci daya ShuiDianZhan!

            Serial.write(0x01); // 0x0039(tombol daya) 

//———nilai pengembalian BATU akan menjadi “A5 5A 06 83 00 39 01 00 01”——

     }

  // Baca pesan yang dikirim oleh port 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)) {  

      jumlah = 4;

      jika(iPower != 1){

          iPower = 1 ; //nyalakan!

          iLiuliang = 10 ;

          iGong Lu = 50 ;

          iYePian = 10 ;         

      }

   }

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

      jumlah = 4;

      iPower = 2 ; //matikan!

      iLiuliang = 0 ;

      iGong Lu = 0 ;

      iYePian = 0 ;

   }

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

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

      jumlah = 0;

      iMode = 1 ; //Modenya Bagus!

   }

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

      jumlah = 0;

      iMode = 2 ; //Mode MATI!

      if(iPower == 1)iGongLu = 60 ; //GongLu disetel 60%!

   }

  //——————0x0009 dan 0x000A kunci baca 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 ;

      jika(iPowerWater != 1){

          iPowerWater = 1 ; //nyalakan!       

          iJiao = 0;

          iGongLuAir = 0 ;

      }

   }

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

      iNum2 = 0 ;

      iPowerWater = 2 ; //matikan!

   }

  //——————0x0039 kunci baca ok! iPowerWater oke!——————————-

  penundaan (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite (dipimpin, TINGGI); // nyalakan LED (TINGGI adalah level tegangan)

                  //tunda(500); // tunggu sebentar, Rentang:200-2000

           jika(iPower == 1) { 

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

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

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

           }   

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

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

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

           if(iPowerWater == 2) { 

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

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

           }   

           jika(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuAir = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite (dipimpin, RENDAH); // matikan LED dengan membuat tegangan LOW

                  //tunda(500); // tunggu sebentar, kisaran:200-2000

      iLed = 1;

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x05);

            Serial.tulis (0x82);

            Serial.tulis (0x00); // alamat YePian

            Serial.tulis (0x20); // alamat YePian

            Serial.tulis (0x00);

            Serial.write(iYePian);

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x05);

            Serial.tulis (0x82);

            Serial.write(0x01); // alamat GongLu

            Serial.write(0x80); // alamat GongLu

            Serial.tulis (0x00);

            Serial.write(iGongLu);

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x05);

            Serial.tulis (0x82);

            Serial.write(0x01); // alamat LiuLiang

            Serial.write(0x60); // alamat LiuLiang

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

            Serial.tulis (0x80);            

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x05);

            Serial.tulis (0x82);

            Serial.tulis (0x02); // alamat ShuiDianZhan JieJuJiao

            Serial.tulis (0x60); // alamat ShuiDianZhan JieJuJiao

            Serial.tulis (0x00);

            Serial.write(iJiao);

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

            Serial.tulis (0x5A); //”5A” adalah 90

            Serial.tulis (0x05);

            Serial.tulis (0x82);

            Serial.tulis (0x02); // alamat ShuiDianZhan out Power

            Serial.tulis (0x80); // alamat ShuiDianZhan out Power;

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

            Serial.tulis (0x00);            

  }    

Terakhir, rekam video secara online. 

Hubungkan catu daya dan komunikasi, hubungkan papan pengembangan Arduino ke komunikasi port serial, amati antarmuka fungsional pembangkit listrik tenaga air dan stasiun pompa pada layar port serial, sentuh sakelar untuk memeriksa efeknya, dan geser ikon dan datanya normal .  

Sumber: Plato Data Intelligence