Różnice między wybraną wersją a wersją aktualną.
Poprzednia rewizja po obu stronachPoprzednia wersjaNowa wersja | Poprzednia wersja | ||
projekty:symulacjarakiety [2025/05/08 00:24] – administrator | projekty:symulacjarakiety [2025/05/16 17:30] (aktualna) – administrator | ||
---|---|---|---|
Linia 1: | Linia 1: | ||
- | ======= Sumulacja Rakiety w programie SimStructure ======= | + | ~~NOTOC~~ |
- | {{: | + | ======= Symulacja: kontrolera PID w programie SimStructure ======= |
+ | |||
+ | {{: | ||
pliki: | pliki: | ||
Linia 8: | Linia 10: | ||
* {{ : | * {{ : | ||
- | ===== 1. Deklaracja zmiennych ===== | + | Fajny symulator do nauki zasad działania kontrolera PID: https:// |
+ | |||
+ | Autor programu SimStructure: | ||
+ | |||
+ | Źródło: | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | ===== Założenie ===== | ||
+ | |||
+ | Symulacja ma pokazać zastosowanie kontrolera PID w rakiecie która ma mieć kompensację zmian przyspieszenia oraz ustawienia kątowego. Symulacja jest wykonana w dwóch wymiarach i obliczenia są wykonywane w dwóch wymiarach. | ||
+ | |||
+ | ===== Deklaracja zmiennych ===== | ||
< | < | ||
- | | + | desired_y – zadana wartość wysokości (initialnie 10). |
- | | + | error_y – różnica między wartością zadaną a aktualną. |
- | | + | kp_y, kd_y, ki_y – współczynniki regulatora PID dla osi y (proporcjonalny, |
- | | + | s_y, thrust, t1_angle – sygnały służące do dalszego przetwarzania i wizualizacji. |
- | | + | i_y – wewnętrzny akumulator (całkujący) regulatora. |
- | ===== 2. Regulator PID dla osi _Y ===== | + | ===== Regulator PID dla osi _Y ===== |
< | < | ||
- | | + | Linia < |
- | | + | Obliczenie błędu: |
- | ;error_y: Różnica między wysokością zadaną a bieżącą (p1.y). | + | ;error_y: Różnica między wysokością zadaną a bieżącą (p1.y). |
- | | + | Całkowanie błędu: |
- | ;i_y: Proste całkowanie przez przypisanie błędu (może być rozszerzone o sumowanie w pętli). | + | ;i_y: Proste całkowanie przez przypisanie błędu (może być rozszerzone o sumowanie w pętli). |
- | | + | Wyjście regulatora: |
- | ;t1.thrust = faktor_saturacji × (P · error – D · prędkość + I · całka). | + | ;t1.thrust = faktor_saturacji × (P · error – D · prędkość + I · całka). |
- | | + | Skalowanie sygnału siły ciągu (thrust) dzieleniem przez 100 000, by uzyskać odpowiednie jednostki/ |
- | ===== 3. Regulator PID dla kąta ===== | + | ===== Regulator PID dla kąta ===== |
< | < | ||
Linia 46: | Linia 60: | ||
</ | </ | ||
- | | + | a – błąd kąta: różnica między kątem referencyjnym (pi) a aktualnym (b1.heading w radianach), plus korekta z klawiatury (przyciski " |
- | | + | kp_a, kd_a, ki_a – współczynniki PID dla kąta. |
- | | + | angle_err – skalowany błąd kąta do wizualizacji. |
- | | + | i_a – całka błędu kąta (tu zaledwie a/10, nie sumująca). |
- | | + | Obliczenie wyjścia regulatora kąta: |
- | ;t1.angle = P · a – D · obrót + I · i_a | + | ;t1.angle = P · a – D · obrót + I · i_a |
- | | + | t1_angle – dodatkowe skalowanie sygnału kąta. |
- | ===== 4. Wizualizacja i wykresy ===== | + | ===== Wizualizacja i wykresy ===== |
< | < | ||
- | | + | Funkcja < |
- | + | ||
- | Kilka wywołań < | + | |
- | wartość siły ciągu | + | Kilka wywołań < |
- | aktualny kąt (b1.heading), | + | wartość siły ciągu (t1.thrust), |
- | błąd | + | aktualny |
- | wartość całki | + | błąd kąta (a), |
- | < | + | wartość całki błędu osi y (i_y). |
- | s_y – sygnał | + | < |
- | thrust | + | s_y – sygnał błędu wysokości, |
- | angle_err | + | thrust |
- | t1_angle | + | angle_err |
+ | t1_angle – sygnał wyjściowy regulatora kąta. | ||
+ | ===== Pełen kod sterowania ===== | ||
Kod: | Kod: |