IOT

Arduino pompa kontrolü+ STONE HMI ekranı

Bıçak akıllı düzenleme sistemi, çeşitli büyük, orta ve küçük hidroelektrik santrallerinin ve pompa istasyonlarının ana kontrol sisteminde kullanılan patentli bir teknolojidir. Bu proje, günlük parametreleri ve gerçek zamanlı bıçak dozajını, çıkış gücünü, anlık akış ve diğer bilgileri operasyon etkisi ekranı olarak görüntülemek için insan-makine arayüzü olarak güvenilir seri endüstriyel dokunmatik ekranı kullanır. Ayrıca çalışma durumu logu ve arıza alarm formu da planlanmış olup, standby butonu ayrılmıştır. Proje, veri gösterimi ve slayt gösterim gösterimi için seri dokunmatik ekranı kullanır. Aksesuarlar aşağıdaki gibidir:  

  1. STVI056WT-01 seri dokunmatik ekran ve STONE adaptör kartı V1.2;  
  2. Uyumlu Arduino kontrol panosu;  

Akıllı bıçak düzenleyici kontrol sisteminin arayüz fonksiyonunun kısa açıklaması.  

Ana sayfada, ilgili hidroelektrik santral sistemine, pompa istasyonu kontrol sistemine ve kullanıcı kılavuzu arayüzüne (yedek düğmelerle) girmek için basılabilen üç düğme vardır. Kullanıcı kılavuzu arayüzü, aşağıdaki şekilde gösterildiği gibi demo sisteminin çerçevesini gösterir:

(Enlegi Blade Akıllı Ayar Kontrol Gösterim Yazılımının ana arayüzü)

Hidroelektrik santralinin kontrol sisteminin arayüzünde, başlatma ve durdurma düğmeleri ve durum, derecelendirme (nominal voltaj, nominal güç ve nominal hız dahil) ve kontrol değeri (pervane kanadının hatve açısı ve çıkış gücü dahil) gösterimi vardır. Ek olarak, başka sayfa atlama düğmeleri de olabilir (ana sayfa, çalışma koşulu günlüğü, arıza alarmı ve diğer bekleme düğmeleri gibi). Çalışma durumu günlüğü ve arıza alarmı sayfasında bu sayfaya dönmek için geri düğmesi olabilir. Aşağıdaki diyagram:

           (Hidroelektrik santralinin akıllı kontrol ekranı arayüzü)

Pompa istasyonu kontrol sistemi arayüzü fonksiyon açıklaması. Aşağıdaki diyagram:

                            (Pompa istasyonu kontrol sisteminin fonksiyon arayüzü)

Pompa istasyonunun fonksiyonel arayüzünde, mod değiştirilebilir ve gerçek simüle edilmiş parametreleri (kanat dozajı, anlık akış hızı, çıkış gücü gibi) ve diğerlerini görüntülemek için tüm sistemin güç kaynağı açılıp kapatılabilir. arayüzler değiştirilebilir (çalışma durumu günlüğü, arıza alarm raporu gibi). Aynı zamanda sistem değerleri (toplam kanat sayısı, nominal güç, ayarlanan debi) de görüntülenebilir. Çalışma koşulu günlüğü (içerik sipariş numarası, oluşum süresi, olay ayrıntıları, notlar), arıza alarmı (içerikler sipariş numarası, oluşum süresi, alarm ayrıntıları, alarm kodu vb. olabilir), diğer arayüzler de olabilir. iki arabirimde bir geri dönüş düğmesi olabilir, pompa istasyonu işlevsel arabirimine dönebilir.  

Çalışma fikri:  

Seri port ekranı, insan-makine arayüzü görevi görür ve Arduino geliştirme kartı ile iletişim kurar. Kart, dokunmatik ekranın düğme komutlarını kabul eder ve verileri senkronize ekran için seri port dokunmatik ekrana iletir. Kaydırıcı ölçeği, güç değişikliklerini dinamik olarak görüntülemek için tasarlanmıştır. Güç anahtarı, güç bıçağı, mod anahtarı ve mod bıçağı simgeleri, ICON dosyaları oluşturmak ve güç kaynağı ile modun eylem efektlerini canlandırmak için tasarlanmıştır. Ek olarak, Arduino demo programında, çıkış verilerinin simülasyonunu kontrol etmek ve gerçek miktar penceresini seri port ekranına çıkarmak için güç kaynağı ve modunun durumunu elde etmek için talimatları okumak için değişken bellek kullanılır.  

İş adımları:  

  1. Donanım kurulumu;  
  2. A) Arduino geliştirme kartını ve USB'yi seri port dönüştürme kartına bağlayın;  
  3. B) Bağlayın TAŞ dokunmatik ekran USB seri bağlantı noktası indirme kartı ve USB'den seri bağlantı noktasına adaptör kartı ile;  
  4. C) Seri port ekranını ve Arduino geliştirme kartı güç kaynağını bağlayın;  

3, seri komut hata ayıklama ve ardından pompa istasyonu kontrolü ve hidroelektrik istasyonu kontrol gösteri işlevleri elde etmek için programlama yoluyla.  

 Ardından, belirli geliştirme sürecini belgeleyin.

İlk olarak, donanım bağlantısını kurun.  

Tüm parçaları çalışma prosedürlerine göre iyi bir şekilde bağlayın:

Ardından, ICON gösterge resmini yapın.  

Bu projede kullanılan düğmeler ve bıçak İKONLARI şu şekilde yapılmıştır:  

(Pompa istasyonu kontrol anahtarı, bıçak animasyonu ICON dosyası 8. ICO listesi göz atma şeması)

STONE TOOL BOX (GUI Tasarım yazılımı) menü çubuğunda, Simge Aracı iletişim kutusunu açmak için Araç (T) menüsü altındaki Simge oluşturma Aracı'na tıklayın. Simge görüntü yolunu seçmek için iletişim kutusunun altındaki "görüntü yolunu seç"e tıklayın. STONE TOOL BOX (GUI Tasarım yazılımı) platformu tarafından tanınan “.ico” dosyasını oluşturma yolundaki BMP dosyalarını paketlemek için “ICON dosyası oluştur” düğmesine tıklayın. İçe aktarılan”.ico” sıkıştırılmış dosyadaki ICON listesini görüntülemek için “Önizleme” düğmesine tıklayın.  

BMP Simgesini canlandırmak için düğme, yukarıdaki gibi piksel (Üretilmiş Değişken Simge kontrolü, aynı konumun boyutu aynı olmalıdır), pompa istasyonu kontrolü 8 resimleri aynı klasöre keser. Ardından STONE TOOL BOX (GUI Design yazılımı) ekranının sol tarafında bulunan Icon sayfa kartını seçin ve “Icon List” altındaki “Add Icon” butonunu kullanarak sıkıştırılmış 7. Ico dosyasına ekleyin. Hidroelektrik santralinin kontrol anahtarı durumuna ait 6 resmin tamamını başka bir klasöre koyun ve 1-6 sırasına göre düzenleyin. “6. Ico” dosyası ve ardından ekranın sol tarafında STONE TOOL BOX (GUI Tasarım yazılımı) ekranında, Simge sayfa kartını seçin ve sıkıştırılmış “6. "Simge Listesi" altındaki "Simge Ekle" düğmesini kullanarak "Ico" dosyası.  

Şimdi görüntü Simgesini STONE TOOL BOX'a (GUI Tasarım yazılımı) aktarın ve işlev düğmesini yapın.  

Animasyon işlevini gerçekleştirmek için bu projede 9 değişkenli animasyon icon.wmv yöntemi hala benimsenmiştir. Parametre ayarının ekran görüntüsü aşağıdaki gibidir:  

            (Hidroelektrik santralinin Değişken ICON'unun nitelik şeması)

Soldan sağa, hidroelektrik santrali işlev sayfasının üç değişkeninin ICON parametre Ayarları: başlatma, durdurma ve durum. Bellek adresleri aynı (0x0039) ve veri aralıkları aynıdır, bu nedenle değişiklikleri senkronize edilir. Simge dosyaları 6'dır. Ico ve karşılık gelen Simge seri numaraları, gerçek duruma göre seçilen sırasıyla 1 ve 2, 3 ve 4, 6 ve 5'tir.  

Düğme durumu animasyon efekti, artan düğmeler aracılığıyla elde edilir. Aşağıdaki şekil, soldaki artırma düğmesinin ve sağdaki ayrım düğmesinin parametrelerini göstermektedir. Adres, her ikisi de Değişken İKON ile aynı olan 0x0039'dur.

(Aynı bellek adresine sahip artımlı düğmenin nitelik şeması)

(Pompa istasyonunun düğme bıçağı durumunun değişken ICON öznitelik şeması)

Soldan sağa, pompa istasyonu işlev sayfasının dört değişkeninin ICON parametre Ayarları: güç düğmesi, güç bıçağı, mod bıçağı ve mod düğmesi. Burada her iki Icon dosyası da 8.ICO'dur ve veri aralığı aynıdır, bunların hafıza adresi senkron olarak değiştirilecektir.  

Düğme durumu animasyonları da artımlı düğmelerle uygulanır. Aşağıdaki şekilde güç kaynağı azaltma butonunun sol tarafı ve mod arttırma butonunun sağ tarafı güç kaynağı azaltma butonunun parametreleridir. Adresler yukarıdaki Değişken SİMGESİ ile aynıdır; sırasıyla 0x0009 ve 0x000A. Bu, bir pinpon düğmesinin limit işleme modundan daha fazlasıdır.

(Pompa istasyonu düğme durumunun artımlı düğme öznitelik şeması Değişken SİMGESİ Aynı bellek adresine sahip Değişken)

Ek olarak, pompa istasyonunun çıkış gücü, aşağıdaki şekilde gösterildiği gibi kayan bir simge kullanılarak görüntülenir:

Parametre özellikleri şunlardır:

(Pompa istasyonunun çıkış gücünün kayan simgesi — Kaydırıcı ölçeğinin özellik kutusu)

Bu Kaydırıcı ölçeği kontrolünün simgesi, resmi DEMO 24.ico'da çağrılır. 24.ico dosyasını ekleme yöntemi yukarıdakiyle aynıdır. Bu Slider Scale kontrolünün hafıza adresi 0x0180 olup, MCU programında 82 komutu ile yazılabilir (yukarıdaki resimde gösterildiği gibi, aralık 0-100 olarak ayarlanmıştır) ikonun pozisyonunu değiştirmek için.  

Özellikle bu projedeki güç kaynağı ve mod butonlarının durumu seri port ekranının 0x0009, 0x000A ve 0x0039 hafıza adreslerinden 83 komutu ile okunur. 

Kullanılan talimatlar aşağıdaki gibidir:  

A5 5A 04 83 00 09 02  

Seri port ekranının geri bildirimi aşağıdaki gibidir:  

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

Aşağıdaki 00 01, 2x0'un 0009 baytlık verileridir, 00 02, 2x0A'nın 000 baytlık verileridir.  

0x0039 talimatını şu şekilde okuyun:  

A5 5A 04 83 00 39 01  

Seri bağlantı noktası ekranının geri bildirimi:  

A5 5A 06 83 00 39 01 00 01 veya  

A5 5A 06 83 00 39 01 00 02  

Yazılacak beş veri adresi vardır: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Burada yaprak dozaj adresi, 0 baytlık 0020 bitlik bir tam sayı olan 2x2'dir. Seri port üzerinden dokunmatik ekrana iletilebilir.  

11'i dokunmatik ekran veri değişken ekranına geçirmek için, aşağıdaki komutu kullanın:  

A5 5A 05 82 00 20 00 0B  

Programlama hata ayıklama.  

Kod aşağıdaki gibidir:  

/*

  frank8

  STONE ve arduino COMM,enlaiji yepian sistemi.

  Bir LED'i bir saniye süreyle yanar, ardından bir saniye süreyle tekrar tekrar söner.

  0x0020 adresi, YePian sayısının adresidir;

  0x0160 adresi artık LiuLiang'ın adresidir;

  0x0180 adresi, Bengzhan çıkış gücünün adresidir;

  0x0260 adresi, Jiejujiao'nun adresidir;

  0x0280 adresi, su çıkış gücünün adresidir;

  0x0009 adresi bengzhan güç anahtarıdır;

  0x000A adresi bengzhan modu anahtarıdır;

  0x0039 adresi su gücü anahtarıdır.

  Bu örnek kod, frank dosyasındadır. 20210611

 */

// Pin 13, çoğu Arduino kartına bağlı bir LED'e sahiptir.

// Bir isim ver:

int led = 13;

int iYePian = 0; //0x0020 YePian sayısı için!

int iGongLu = 0; //0x0180 için GongLu!

int iLiuLiang = 0; //0x0160 Şimdi LiuLiang!

int iJiao = 0; // JieJuJiao için 0x0260!

int iGongLuWater = 0; //0x0280 Su GongLu için! değer 0-50000!

int iLed = 1; //gecikme süresi num.

int iNum = 0 ; // karakter sayısı ile oku.

int iNum2 = 0; //ShuiDianZhan için karakter num2'de oku!

int iPower = 2; //anahtar heykel 0x0009

int iMode = 2; //anahtar heykel 0x000A

int iPowerWater = 2; //anahtar heykel 0x0039

// sıfırlama düğmesine bastığınızda kurulum rutini bir kez çalışır:

geçersiz kurulum () {                

  // dijital pini bir çıktı olarak başlatın.

  pinMode(led, ÇIKIŞ);     

  Seri.başla(115200); // Seri iletişim fonksiyonunu açın ve seri portun açılmasını bekleyin  

while (!Seri) {

    ; // seri bağlantı noktasının bağlanmasını bekleyin. Sadece Leonardo için gerekli

  }  

}

// döngü rutini sonsuza kadar tekrar tekrar çalışır:

geçersiz döngü () {

  int inChar;

    if (iLed == 900) {     

//——- 0x0009 ve 0x000A değerini oku———- 

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Serial.write(0x04); //uzunluk

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

            Serial.write(0x00); // bengzhan güç anahtarının adresi!

            Serial.write(0x09); // bengzhan güç anahtarının adresi!

            Serial.write(0x02); // 0x0009(güç) ve 0x000A(mod)

//———TAŞ dönüş değeri “A5 5A 08 83 00 09 02 00 01 00 02” olacaktır——

     }

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

    if (iLed == 800) {     

//——- 0x0039 değerini oku———- 

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Serial.write(0x04); //uzunluk

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

            Serial.write(0x00); // ShuiDianZhan Güç tuşunun adresi!

            Serial.write(0x39); // ShuiDianZhan güç anahtarının adresi!

            Serial.write(0x01); // 0x0039(güç tuşu) 

//———TAŞ dönüş değeri “A5 5A 06 83 00 39 01 00 01” olacaktır——

     }

  // Seri port tarafından gönderilen mesajı okuyun:

  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)) {  

      iSayı = 4 ;

      eğer(iPower != 1){

          iGüç = 1 ; //açık!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iSayı = 4 ;

      iGüç = 2 ; //Kapat!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iSayı = 0 ;

      iMode = 1 ; //Mod İyi!

   }

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

      iSayı = 0 ;

      iModu = 2 ; //Mod KAPALI!

      if(iPower == 1)iGongLu = 60 ; //GongLu %60 olarak ayarlandı!

   }

  //——————0x0009 ve 0x000A anahtarı okundu tamam! iPower\iMode tamam!—————————-

   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 ; //açık!       

          iJiao = 0;

          iGongLuSu = 0 ;

      }

   }

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

      iNum2 = 0;

      iPowerWater = 2 ; //Kapat!

   }

  //——————0x0039 anahtar oku tamam! iPowerWater tamam!—————————-

  gecikmesi (1); 

  += 1;   

  if (iLed == 500) {  

      digitalWrite(led, YÜKSEK); // LED'i aç (YÜKSEK voltaj seviyesidir)

                  //gecikme(500); // bir saniye bekleyin, Aralık:200-2000

           if(iPower == 1) { 

               iYePian += 1; //aralık:1-20

               iLiuLiang += 1; //aralık:1-20

               if(iMode == 1) iGongLu += 5; //aralık:1-20

           }   

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

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

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

           if(iPowerWater == 2) { 

               iJiao += 1; //aralık:1-20

               iGongLuWater += 2; //aralık:1-20

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuSu = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, DÜŞÜK); // voltajı DÜŞÜK yaparak LED'i kapatın

                  //gecikme(500); // bir saniye bekleyin, aralık:200-2000

      led = 1;

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Seri.write(0x05);

            Seri.write(0x82);

            Serial.write(0x00); // YePian'ın adresi

            Serial.write(0x20); // YePian'ın adresi

            Seri.write(0x00);

            Seri.write(iYePian);

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Seri.write(0x05);

            Seri.write(0x82);

            Serial.write(0x01); // GongLu'nun adresi

            Serial.write(0x80); // GongLu'nun adresi

            Seri.write(0x00);

            Seri.write(iGongLu);

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Seri.write(0x05);

            Seri.write(0x82);

            Serial.write(0x01); // LiuLiang'ın adresi

            Serial.write(0x60); // LiuLiang'ın adresi

            Serial.write(iLiuLiang); //LiuLiang 2800–3200'dür

            Seri.write(0x80);            

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Seri.write(0x05);

            Seri.write(0x82);

            Serial.write(0x02); // ShuiDianZhan JieJuJiao'nun adresi

            Serial.write(0x60); // ShuiDianZhan JieJuJiao'nun adresi

            Seri.write(0x00);

            Seri.write(iJiao);

            Serial.write(0xA5); //"A5" 165'tir

            Serial.write(0x5A); //”5A” 90'dır

            Seri.write(0x05);

            Seri.write(0x82);

            Serial.write(0x02); // ShuiDianZhan çıkış Gücünün adresi

            Serial.write(0x80); // ShuiDianZhan çıkış Gücünün adresi;

            Serial.write(iGongLuWater); //ShuiDianZhan çıkış gücü 0–32000

            Seri.write(0x00);            

  }    

Son olarak, videoyu çevrimiçi olarak kaydedin. 

Güç kaynağını ve iletişimi bağlayın, Arduino geliştirme kartını seri port iletişimine bağlayın, seri port ekranında hidroelektrik istasyonu ve pompa istasyonunun fonksiyonel arayüzünü gözlemleyin, efekti kontrol etmek için düğmeye dokunun ve simgeyi kaydırın ve veriler normaldir .  

Kaynak: Plato Data Intelligence