W systemie zbiorników sprzężonych, jaka jest strategia kontroli, aby jednocześnie kontrolować poziom w wielu zbiornikach. W takim przypadku siłowniki wpływają na wiele zmiennych sterujących. System jest pokazany na tym schemacie
Zmienne, które należy kontrolować, to poziomy cieczy w każdym zbiorniku. Siłowniki to zawory na rurach oraz przepływ wlotowy q0. Problem polega na tym, że ten sam siłownik, np. V1, wpływa zarówno na h1, jak i h2. Próbowałem 3 różne PID dla każdego zbiornika. Każdy sterownik odbiera wysokość w odpowiednim zbiorniku i wysyła sygnał sterujący do odpowiedniego wylotu. Tak więc PID1 odbiera sygnał wejściowy h1 i steruje tylko V1; PID2 odbiera sygnał wejściowy h2 i steruje tylko V2 ...
Odpowiedzi:
Masz do czynienia z systemem z wieloma wejściami i wieloma wyjściami (MIMO), w którym to przypadku ogólnie nie możesz zastosować takich samych technik, jak w przypadku systemów z jednym wejściem i jednym wyjściem (SISO). Jeśli masz do czynienia z liniowym systemem niezmienniczym MIMO, możesz użyć czegoś zwanego macierzą względnego wzmocnienia, aby zobaczyć, jak dobrze działałoby podejście kontrolne SISO. Jednak w tym przypadku uważam, że masz do czynienia z układem nieliniowym, ale może być możliwe oddzielenie wejścia i wyjścia, a mianowicie poprzez kontrolowanie dopływu netto do każdego zbiornika. W tym celu zakładam na razie, że możesz wybrać natężenia przepływu , , i i że dynamikę można zapisać jakoq0 q1 q2 q3
więc dynamikę kombajnów można zapisać jako
gdzie i . Teraz poprzez zdefiniowanie wirtualnego wejścia takiego, że , wówczas każda para danych wejściowych i wyjściowych jest oddzielona. Do tego potrzebujemy → q =[ q 0 q 1 q 2 q 3 ]⊤ → vh⃗ =[h1h2h3]⊤ q⃗ =[q0q1q2q3]⊤ v⃗ h⃗ ˙=v⃗
które można rozwiązać dla za pomocą pseudo-odwrotności macierzy po lewej stronie. Można to zrobić na wiele sposobów, ale rozwiązanie minimalizujedajeq⃗ ∥q⃗ ∥
Teraz możesz używać normalnych metod sterowania SISO, takich jak PID, dla każdej pary - która doprowadziłaby do pożądanej wartości.hi vi h⃗
Jednak prawdopodobnie nie ma liniowej zależności między i , ale bardziej prawdopodobne jest coś takiego jak lub inna funkcja zależna od stanu nieliniowego. Jeśli znasz tę relację dokładniej, możesz wymyślić kontroler nieliniowy, w przeciwnym razie możesz wykonać sekwencyjne zamykanie pętli. Do sekwencyjnego zamykania pętli używasz do sterowania do pożądanej wartości zdefiniowanej przez z równania .qi Vi qi∝Vi(hi−hi+1)−−−−−−−−−−√ Vi qi v⃗ (4)
Jeśli masz trudniejszy sygnał odniesienia dla wysokości, być może będziesz musiał skorzystać z jeszcze bardziej zaawansowanych technik, takich jak kontrola predykcyjna modelu. Na przykład, gdy wysokości odniesienia są takie, że i ale system zaczyna od , wówczas początkowo nie będzie możliwe uzyskanie dodatniego dopływu do drugiego zbiornika i osiągnięcie pożądanych wysokości musi przez chwilę być większe niż , aby osiągnął swój cel.hr,1<hr,2 hr,2>hr,3 h1=h2=h3<hr,2 h1 h2 h2
źródło
Nie jestem osobą zajmującą się systemami sterowania, więc wybacz moje niezbyt systematyczne podejście.
Pierwszą rzeczą, którą powinieneś zrobić, to spróbować ręcznie wyregulować zawory na stałe q, aby osiągnąć pożądany poziom.
Kontrolowałbym q na podstawie średniej odchyleń wysokości od pożądanej wysokości w każdym zbiorniku. Jeśli ogólny poziom wody jest niższy niż pożądany, zwiększ q i odwrotnie.
Zmienną kontrolną dla zaworów powinna być różnica wysokości między dwoma kolejnymi zbiornikami: V1 jest kontrolowany dla h1-h2, te różnice wysokości obliczasz na podstawie pożądanych wysokości we wszystkich zbiornikach. Tylko zawór 3 jest sterowany bezpośrednio dla h3.
Spraw, aby pierwszy zawór był szybszy niż drugi, a drugi szybszy niż trzeci. Powinno to pomóc uniknąć oscylacji.
Mimo to obiecałem niesystematyczne podejście, oto kilka powodów: dla danego q istnieje związek między różnicą wysokości a tym, jak otwarty lub zamknięty jest zawór. Prawdopodobnie dlatego Twoja strategia nie zadziałała.
źródło