2 projektowanie oprogramowania systemowego
Architektura 2.1μC / OS-II
μC / OS-II to przenośny, wszczepialny ROM, obciążalny, prewencyjny wielozadaniowy system operacyjny w czasie rzeczywistym z wysoką wydajnością wykonania, niewielką powierzchnią, dobrą wydajnością w czasie rzeczywistym i skalowalnością. Funkcje, najmniejsze jądro może być skompilowane do 2KB. μC / OS-II jest napisany w języku C i języku asemblera. Większość kodu jest napisana w C. Tylko kilka kodu ściśle związanych z procesorem jest napisanych w języku asemblerowym. μC / OS-II zawiera tylko podstawowe funkcje, takie jak planowanie zadań, zarządzanie zadaniami, zarządzanie czasem, zarządzanie pamięcią, komunikacja pomiędzy zadaniami i synchronizacja.
Przypisanie zadań w systemie 2.2μC / OS-II
Po pomyślnym przeniesieniu systemu μC / OS-II do STM32F107 programowanie oparte na μC / OS-II odbywa się poprzez podzielenie dużej aplikacji na stosunkowo niezależne zadania. Priorytet każdego zadania jest zdefiniowany, a jądro μC / OS-II planuje i zarządza tymi zadaniami.
Ideą projektowania oprogramowania jest zapewnienie prędkości silnika i pozycji kierowniczej przekładni kierowniczej przez port szeregowy zgodnie z rzeczywistą pracą robota. Prędkość silnika jest porównywana z ustawioną wartością enkodera inkrementalnego, a sterowanie w pętli zamkniętej realizowane jest za pomocą algorytmu PID prędkości. Położenie układu kierowniczego polega głównie na tym, że enkoder wartości bezwzględnej podaje aktualną pozycję, a prędkość urządzenia sterującego jest dostosowywana zgodnie z wymaganiami czasu działania. Funkcje realizowane przez oprogramowanie systemu sterowania silnikiem tego robota obsługującego są następujące:
◆ Górna maszyna podaje prędkość silnika, kąt skrętu i czas działania;
◆ Wymaga ciągłej regulacji prędkości silnika oraz dobrych osiągów statycznych i dynamicznych. Prędkość nie jest zliczana przez algorytm PI.
◆ Wymaga, aby układ kierowniczy szybko osiągnął określony kąt, a sprzężenie zwrotne pozycji służy jako regulacja zadanej prędkości urządzenia sterowego;
◆ Ma określoną funkcję ochrony przed zwarciem. Gdy silnik jest zablokowany, prąd jest zbyt duży, a przekładnia kierownicza dotyka wyłącznika krańcowego, wymagane jest zatrzymanie modułu przemiennika częstotliwości.
Aby powyższe funkcje mogły zostać zaimplementowane, projekt aplikacji można podzielić na następujące zadania:
1 Uruchom zadanie. Zainicjuj system, utwórz początkowy stan silnika, a następnie usuń się i uruchom uśpienie.
2 zadania ochrony silnika i urządzenia sterowego. Służy do reagowania na zewnętrzne przerwanie, gdy aktywny jest wyłącznik nadprądowy lub krańcowy. Po wprowadzeniu stanu przerwania wysyłany jest semafor zadania. Program zadaniowy wykrywa, że semafor jest prawidłowy i odpowiada na zadane zadanie i zatrzymuje wysyłanie. Priorytet zadania ustawiony jest na poziom 0.
3 zadania komputera hosta. Służy on do sterowania maszyną i urządzeniem sterowniczym na górnej maszynie, a priorytet zadania ustawiony jest na poziom 1. Kiedy zostanie wygenerowany rejestr danych z komputera hosta, zostanie wygenerowane przerwanie, które wyśle odebrany bajt do buforuj i zwolnij semafor danego zadania komputera hosta; po wykryciu semafora zadanie zostanie rozpoczęte, a odpowiedni bajt zostanie wykonany. Informacje są przetwarzane na odpowiednią informację o prędkości silnika i pozycji układu kierowniczego, aby przypisać wartości do odpowiednich zmiennych.
4 zadanie kontroli prędkości silnika. W przypadku regulacji prędkości silnika w zamkniętej pętli priorytet zadania jest ustawiony na poziom 2.
5 zadań sterowania urządzeniem sterowym. Służy do sterowania urządzeniem sterowym, aby osiągnąć określone położenie w określonym czasie, a priorytet zadania jest ustawiony na poziom 3.
2.3 Uruchom zadanie
W głównym programie, przed wywołaniem innych zadań μC / OS-II, najpierw wywołaj funkcję inicjalizacji systemu OSInit (), aby zainicjować wszystkie zmienne i struktury danych μC / OS-II; w tym samym czasie, ustanowienia bezczynnego zadania OS_TaskIdle (), to zadanie jest zawsze w stanie gotowości; wywołaj funkcję OSTaskCreate (), aby ustalić zadanie uruchamiania; wywołaj OSStart (), przenieś kontrolę do jądra μC / OS-II, uruchom wielozadaniowość.
Zadanie uruchomienia jest tworzone w głównym programie, który ma trzy główne funkcje:
1 dla inicjalizacji systemu (moduł wyjściowy PWM, port szeregowy, moduł ADC, funkcja przerwania poziomu wejściowego, timer).
2 Ustal ilość sygnału używanego przez system.
3 ustalić inne zadania systemu.
Na koniec wywołaj OSTaskDel (OS_PRIO_SELF), aby usunąć samego siebie i uruchomić zadanie do uśpienia. Główny przebieg zadań programu pokazano na rysunku 4.
2.4 zadanie kontroli prędkości silnika
Za każdym razem, gdy enkoder inkrementalny generuje przerwanie zewnętrzne, semafor zadania jest wydawany w stanie przerwania. Program zadania wykrywa, że semafor jest prawidłowy i odpowiada na zadanie. Zadanie realizuje sterowanie w pętli zamkniętej, mierząc aktualną prędkość silnika i dane porównanie prędkości. Przepływ zadań sterowania prędkością silnika pokazano na rysunku 5.
2.5 zadanie sterowania urządzeniem sterowym
Sterowanie serwo generuje czas odniesienia przez timer, wysyła semafor za każdym ustalonym czasem, a zadanie zostanie wykonane jeden raz. Zadanie sterowania serwomechanizmem porównuje pozycję zmierzoną przez enkoder absolutny z zadaną pozycją i dostosowuje prędkość serwomotoru do pozostałego czasu. Przebieg zadania sterowania serwomechanizmem pokazano na rysunku 6.
3 systemowy interfejs elektromechaniczny
Urządzenie sterowe robota składa się z reduktora 30: 1 podłączonego do silnika prądu stałego. Enkoder położenia absolutnego jest połączony z urządzeniem sterowym i wysyła sygnał kąta urządzenia sterującego do płytki sterowania napędem. Dwa wałki przedniego koła robota połączone są drążkiem transmisyjnym. Jeden z wałów jest połączony z przekładnią kierowniczą za pomocą pasa transmisyjnego, tak że gdy obraca się przekładnia kierownicza, pas transmisyjny napędza drążek transmisyjny, aby zapewnić, że dwa koła przednie mogą się obracać synchronicznie. Silnik z napędem na tylne koła jest silnikiem prądu stałego, który jest bezpośrednio połączony z enkoderem inkrementalnym. Po zmniejszeniu stopnia redukcji o 25: 1 reduktor, tylne koło jest napędzane mechanicznym mechanizmem różnicowym. Sygnały z enkodera inkrementującego są również przesyłane na płytkę sterowania napędem. Strukturę układu elektromechanicznego pokazano na rysunku 7.
Wniosek
W niniejszym dokumencie opracowano konstrukcję sprzętu do sterowania silnikiem i serwo robota manipulacyjnego. System operacyjny μC / OS-II działający w czasie rzeczywistym został z powodzeniem wbudowany w STM32F107, a eksperyment zamkniętego obiegu silnika i przekładni kierowniczej został zakończony. Wykorzystując charakterystykę wielozadaniowego działania kontrolera rdzeniowego Cortex-M3 w czasie rzeczywistym i systemu μC / OS-II, zapewnia on podstawę oprogramowania i sprzętu do późniejszego przechwytywania obrazu z robota i śledzenia nawigacji. Jeśli istniejący algorytm PI zostanie poprawiony, a prędkość obrotowa silnika i podwójna regulacja w pętli zamkniętej zostaną osiągnięte, charakterystyka silnika robota będzie lepsza, a perspektywa zastosowania robota obsługowego będzie szersza.





