Programowanie urządzenia kontrolującego masowy przepływ gazu

0

Próbuję uaktualnić sterownik przepływu gazu, który musi być w stanie kontrolować natężenie przepływu trzech gazów niezależnie przez jedną linię wylotową do naszego systemu, i potrzebuję trochę porady na temat programowania. Używam arduino i kilku przetworników DAC, aby powiedzieć zawory elektromagnetyczne dozujące jak powinny być otwarte. Aktualny schemat konfiguracji znajduje się poniżej, ale w razie potrzeby mam do dyspozycji więcej czujników ciśnienia i czujników przepływu masy.

enter image description here

Rada moich kolegów zaleca użycie pętli PID dla każdego gazu. Byłoby to łatwe, szczególnie, że istnieje kod arduino już dostępny - jednak nie jestem przekonany, czy jest to konieczne, czy najlepsze rozwiązanie, ponieważ:

  1. W systemie prawie nie ma inercji, na przykład w przypadku bezwładności termicznej w piecu. Gdyby to był tylko jeden gaz, z jednym ciśnieniem wlotowym i jednym wylotem, wystarczy, że myślę, że część P PID.
  2. Natężenie przepływu każdego gazu zależy od różnicy ciśnień przed i za zaworem, która jest wtedy zależna od przepływu masy innych gazów i ciśnienia wylotowego, stąd PID może osiągnąć optymalny przepływ dla jednego gazu, ale w ten sposób zmienić natężenia przepływu innych gazów - pozostawiając oscylację w systemie. (ciśnienie w systemie na wylocie może się również nieznacznie zmieniać)

  3. Nie wiem, czy jest to możliwe, a jeśli tak, to w jaki sposób napisać pętlę PID dla jednoczesnych wielu wejść / wyjść.

Dlatego doceniłbym wszelkie pomysły lub rozwiązania, których nie byłem świadomy, jak mój program powinien sterować zaworami elektromagnetycznymi dozującymi?

P.S. Nie proszę nikogo o napisanie kodu dla mnie, ale po prostu podstawowa idea tego, jak powinienem to zrobić, byłaby świetna.

P.P.S. (Istnieje formuła natężenia przepływu gazu tutaj , więc przypuszczam, że mógłbyś spróbować opracować teoretycznie jaki optymalny sygnał do zaworów byłby oparty na pewnego rodzaju równoczesnym rozwiązaniu tej formuły dla trzech gazów, biorąc pod uwagę współczynniki tarcia dla wszystkich małych elementów i części w systemie i czynniki ekspansji dla poszczególnych mieszanin gazowych (nie sądzę, aby którekolwiek z butli gazowych były absolutnie czystymi mieszaninami) itd., ale sądzę, że możliwe jest, aby nie iść tutaj tak skomplikowane!)

Oliver Walters
źródło
Jaki jest cel monitorowania poszczególnych przepływów gazu? Więcej szczegółów na temat tego, co chciałbyś fizycznie osiągnąć, pomoże nam w tym.
J. Ari
1
Czy musisz mieć gazy bezpośrednio zasilające sztuczne płuca? Gdybyś mógł napełnić zbiornik balastowy przed płucem, mógłbyś niezależnie kontrolować przepływ każdego gazu. Musisz tylko upewnić się, że ciśnienie źródła każdego źródła gazu jest wystarczająco wysokie, aby pokonać dP rury i rosnące ciśnienie w zbiorniku. Czy modyfikacja ustawień jest w ogóle możliwa?
J. Ari
1
Każdy regulator przepływu masy, który widziałem, ma zawór po przepływomierz. Podejrzewam, że robią to, aby zapewnić, że licznik ma odpowiednie delta-p w poprzek dla prawidłowego działania (unika przepływu wstecznego, jeśli inne wejścia zmieniają swój przepływ i zwiększają ciśnienie).
Chris Knudsen
1
Brzmi to tak, jakbyś miał dostęp do zapasowych liczników i czujników. Więc dlaczego nie zaoszczędzić sporo wysiłku programistycznego i użyć równoległego przepływu masowego kontrolery zamiast?
Chris Knudsen
1
Można dozować do zbiornika ilość masy potrzebną do odtworzenia normalnego powietrza jednego składnika na raz. Masę i objętość można powiązać za pomocą równania stanu odpowiedniego dla temperatur i ciśnień w systemie.
J. Ari

Odpowiedzi:

1

Moim najlepszym wyborem byłoby dołączenie równoległych danych wejściowych:

Gas1(100psi) -> Flow Meter1 -> Valve1 -> Manifold Input1
Gas2 (100 psi) - & gt; Przepływomierz 2 - & gt; Zawór 2 - & gt; Wejście kolektora2
Gas3 (100psi) - & gt; Przepływomierz 3 - & gt; Valve3 - & gt; Wejście kolektora3
...gdzie:
  • Wybrałem „100 psi”, aby podkreślić, że ciśnienie wejściowe powinno być>> ciśnienie wyjściowe. Może być 50 psi, czy cokolwiek ...
  • Valve [n] jest kontrolowane przez twój spiffy kod Arduino pobierający Flow Meter [n] jako jego wejście.
  • Wszystkie wyjścia zaworu [n] trafiają do rozdzielacza, który skutecznie łączy wszystkie wejścia.
  • Wyjście kolektora (nie pokazano) łączy się ze sztucznym płucem.

Dodatkowo:

Manifold Output -> Lung -> Px Sensor
'| Zawór wylotowy

Strategia:

  • Otwórz zawór odpowietrzający.
  • Steruj zaworem proporcjonalnym [n], aby każdy gaz miał proporcjonalne wejście przepływu masowego. (W tym miejscu pojawia się spiffy software, więcej o tym później).
  • Pozwól, aby oczyszczanie pozostało otwarte, gdy wszystkie 3 gazy przepływają, aż do osiągnięcia stanu ustalonego.
  • Zamknij zawór odpowietrzający.
  • Monitoruj czujnik Px podczas narastania ciśnienia. W tle zachowaj odpowiednie proporcje przepływu.
  • Po osiągnięciu docelowego Px zamknij jednocześnie wszystkie zawory Valve [n].

Algorytm sterowania

Podejrzewam, że możesz uciec z prostym kontrolerem P. Zakładam, że nie przejmujesz się małymi błędami (nie powiedziałeś). Nie sądzę, że trzeba będzie przetwarzać dane czujnika ciśnienia w dowolne obliczenia. Jeśli jednak delta-p zacznie być zbyt mała, być może będziesz musiał zbudować system sterowania wyższego rzędu lub być może dane Px, aby skalować wyjścia zaworu, gdy delta-p spada. TBD.

Spędzisz 80% swojego czasu na prototypowanie 1 systemu sterowania do pracy. Następnie kolejne 80% czasu na integrację sprzętu.

Doprowadzenie zaworu proporcjonalnego do działania zgodnie z oczekiwaniami, cóż, to złota gęś. Stabilność będzie zależała od kilku rzeczy, ale makroskopowo byłbym zainteresowany:

  • Wartość Cv zaworu (Ahh, numery Cv. Oznacza różne rzeczy dla różnych ludzi i nic dla większości.) Czy zawory są odpowiednio ustawione dla pożądanych szybkości przepływu? Czy otwory zaworów są odpowiednie do wielkości przepływu i zakresu regulacji?
  • Ograniczenia Arduino. Kochamy Arduino. Są zabawne. Oni też są do dupy. Zwłaszcza gdy chcesz zrobić coś prawdziwego i naprawdę szybkiego. Postawiłbym pieniądze na pączki, żeby można było to wykorzystać do pracy z Arduino. Założę się również, że skończysz pracując nad ograniczonym ograniczeniem, którego możesz uniknąć, obracając własną elektronikę i programując w natywnym. Ale do diabła, fajnie. Części, a co ważniejsze Twój czas, są naprawdę tanie - więc czemu nie.
  • Czy to wszystko jest naprawdę stabilne w każdych warunkach? Wszyscy będą krzyczeć „Modeluj to!”. Zamiast tego po prostu spróbuj i dowiedz się. Kilkaset razy. To będzie dobre doświadczenie. Nawet jeśli weźmiesz trasę modelowania, nadal będziesz musiał wypróbować ją kilkaset razy, więc pozostaw drogie oprogramowanie do modelowania stażystom, gdzie będzie mniej szkód.

Kup zawór regulacyjny nadmiarowy o wartości 30 USD, na wypadek gdyby coś poszło nie tak. Nie ma potrzeby rozsadzać płuc biednego faceta.

To brzmi jak zabawny projekt.

Powodzenia!

Chris Knudsen
źródło
Dziękuję za to - nie przyszło mi do głowy, żeby „zakręcić moją własną elektronikę”, jak mówisz, nauczyłem się wszystkiego, co wiem za pomocą Arduinosa, ale może nadszedł czas, aby przejść do następnego poziomu! Wielkie dzięki
Oliver Walters