İçindekiler:
- Adım 1: Giriş
- Adım 2: Gerçek Panonun Tanımı:
- Adım 3: Hangi Sıra Programlanacak? SFC ve Durum Şeması
- Adım 4: Arduino IDE 1.6.X ile Programlama
- Adım 5: YAKINDU ile Programlama
- Adım 6: AdvancedHMI ile Denetleyin
- 7. Adım: Unigo Evolution ile Denetleyin
- Adım 8: Sonuç
Video: Arduino PLC 32 I/O+Durum Makinesi+SCADA veya HMI: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Arduino ile endüstriyel bir sistemi programlamanın, kontrol etmenin ve denetlemenin birçok yolu.
Adım 1: Giriş
Bu talimatta şunlarla ilgileneceğim:
Butonlar, anahtarlar ve LED'ler dahil olmak üzere bir tür makineye bağlı bir arduinoyu programlamak için 2 yöntem
1- SM kitaplığı (State Machine) kullanan arduino 1.6.x IDE ile ilk yöntem
2- Eclipse ortamı ile oluşturulmuş bir durum diyagramı editörü projesi olan Yakindu'yu kullanan ikinci yöntem: durum makinenizi çiziyorsunuz ve Arduino kartına aktarılacak kodu üretiyor.
İle birlikte
Bir SCADA veya çalışan sanal HMI ile makineyi denetlemenin 2 yolu:
1- Android 4.4 altında: Unigo Evolution, yalnızca ekrana yerleştirilecek öğeleri ve modbus TCP'yi içermeyen ücretsiz bir uygulama
2-Windows 8 altında: Visual Studio 2013'e ihtiyaç duyan ücretsiz bir AdvancedHMI projesi, bir ekrana ve modbus TCP'ye yerleştirilecek kod ve öğe yok
Böylece fonksiyonel dizilerinizi bir SFC ile çizersiniz (otomasyonda: Sıralı Fonksiyon Şeması), bir durum şemasına çevirirsiniz (çok daha yakın), programlarsınız (Yakindu veya Arduino SM lib) ve sonra bir SCADA (Unigo) ile denetlersiniz. android veya AdvancedHMI Windows).
Adım 2: Gerçek Panonun Tanımı:
şematik:
Ben bir Arduino UNO kartı kullandım, klon değil çünkü Yakındu herhangi bir klona sadece UNO ve Mega kart gönderemiyor.
MCP23S17 (2x16 G/Ç) gibi 2 SPI genişleticiye sahip 32 dijital G/Ç'ye ve MCP4921 gibi 2 SPI DAC ile 2 analog 12 bit çıkışa (gerçek analog PWM filtreli değil) sahip olabilirim.
Ethernet kalkanını ben çizmedim ama sisteminizi denetlemek için buna ihtiyacınız var: bu nedenle 4, 10, 11, 12 ve 13 pinleri başka hiçbir şey için kullanılmamalı ve açıkçası 0 ve 1 pinleri yalnızca RX TX için kullanılmamalıdır.
Gerçek tahta resimleri:
8 buton gereklidir:
- Manüel mod için 4 adet: her ledde ışık için bir adet
- 1 acil durdurma için: basıldığında normal moddasınız, bırakın: acil durum
- 1, serbest bırakıldığında her bir ledin sıralı ışığını açıp kapatan otomatik mod için: manuel mod, her bir led'i sırasız kontrol etmek için
- Otomatik modda RUN için 1
- Otomatik modda STOP için 1
İstediğinizi simüle etmek için 4 led (röle, vana…)
Programlarda kullandığım her buton ve ledin adını veriyorum.
Adım 3: Hangi Sıra Programlanacak? SFC ve Durum Şeması
Sistemin ne yapması gerektiğini açıklamak için çok basit bir SFC yaptım.
3 SFC gereklidir:
- Acil durum moduna geçmek veya çıkmak için SFCsecu, diğerlerini başlatan ana SFC'dir
- SFCsecu tarafından başlatılan SFC otomatik manuel, otomatik moda veya manuel moda ulaşabilirsiniz
- SFC çalıştırma durdurma, tarama ve biri DCY (RUN) veya FCY (STOP) düğmesine bastığında ezberleme
Bu SFC, sözde çoklu işlemde çalışıyor.
Sonra onları bir durum şemasına çeviriyorum:
- 2 diğer köleyi başlatan bir ana makine (Acil Durum)
- DCY ve FCY'yi taramak ve ezberlemek için bir köle
- otomatik veya manuel moda ulaşmak için bir köle
Başka bir şey: DCY'ye bastığınızda analog çıkışı bir scada üzerinde sanal bir trimer ile çalıştırabilirsiniz, FCY'ye bastığınızda analog çıkışlar 0V'a düşer.
Durum şeması, arduino'yu programlamanıza yardımcı olur.
Adım 4: Arduino IDE 1.6. X ile Programlama
Önceki diyagramları çevirmek için size kodu veriyorum. Sana da vereceğim 3 ek kütüphaneye ihtiyacım vardı.
Hangi pinleri ne için kullandığınızı anlamak için adres tablosuna ve modbus karşılık gelen adresleri kaydeder.
Adım 5: YAKINDU ile Programlama
Önce ücretsiz proje sürümü 2.9'u (pro değil) şuradan indirin:
www.itemis.com/en/yakindu/state-machine/
Ardından, sağlanan öğreticiyi izleyin: Programı en son indirdiğim zamana kıyasla, yalnızca "xxxconnector.cpp" dosyasının farklı bölümlerinin adlarının tamamlanması için bazı değişiklikler var.
Resimler: durum makinesinin çizimi, projedeki klasörün görünümü ve arduino'dan içe aktarılan kütüphaneleri, geçişler/durumlar ve gerçek girişler/çıkışlar arasında bağlantı kurmak için "xxxconnector.cpp" görünümü kurulu veya SCADA'lar.
Size otomatik olarak oluşturulan çalışma alanınıza aktarmanız gereken projeyi veriyorum.
Ayrıca sağlananlar: Yakindu'ya içe aktarmak için gerekli kütüphaneler ve öğreticide açıklanan bazı değişiklikler.
Adım 6: AdvancedHMI ile Denetleyin
İlk önce Visual studio Express 2013 veya daha fazlasını şuradan indirin:
www.microsoft.com/fr-fr/download/details.a…
Ardından AdvancedHMI projesini şuradan indirin:
sourceforge.net/projects/advancedhmi/?SetF…
Çizdiğim (ilgili modbus register adresleri ile) ve kodsuz programlanmış SCADA'nın resimlerini, değiştirilmiş projeyi ve kısa bir eğitim veriyorum.
7. Adım: Unigo Evolution ile Denetleyin
Android 4.4 (kit kat) ve 7 inç ekrana sahip bir android cihazına ihtiyacınız var.
Size çizdiğim SCADA'nın resimlerini (ve ilgili modbus kayıt adreslerini) ve Unigo'yu kullanmak için kısa bir öğretici, koda gerek yok, dahili cihazınızda oluşturulan UniGOPictures klasörüne koymak için endüstriyel ışıkların ve düğmelerin resimlerini içeren bir klasör veriyorum. Uygulamaya ve projeye göre SD.
Adım 8: Sonuç
2 farklı programlama yöntemini ve 2 farklı denetleme yöntemini bir araya getirmek çok büyük bir görevdi. Her şekilde becerilere alışmak başlangıçta zordur. Ama şimdi çalışıyor ve bir kez anlaşıldığında, artık daha karmaşık sistemleri kontrol edebilirsiniz.
Archie'ye (AdvancedHMI), RenéB2'ye (Yakindu) ve Mikael Andersson'a (Unigo Evolution) ve böyle bir "teknoloji fırtınası" projesi yapmama izin veren arduino kütüphanesi geliştiricilerine, dünya çapındaki birçok öğreticiye çok teşekkürler.
Sans eux j'aurais peut être souffert d'un duygu d'incomplétude infinie dökün l'éternité. J'exagère un peu.
Mutlu öğreticiler.