adamssson napisał: Szczegóły? Proszę bardzo...
...na początek chce zbudować miniaturę tego co robi KUKA... czyli 2 ramiona na obrotnicy (narazie bez przegubu i chwytaka), całkowita wysokość by wynosiła maksymalnie 20cm (mały ciężar konstrukcji, małe momenty, silniczki itd. itp), myślałem o wykorzystaniu do napędu silniczków na prąd stały zespolonych z przekładniami ślimakowymi i czujnikiem położenia, ale mam problem ze sterowaniem tego (sterownik).
Druga koncepcja sterowania (mi mniej odpowiada) to silniki krokowe, ale jak już mnie ktoś tu przekonywał... raczej mało to rozwojowe ze względu na duże masy i niskie momenty krokowców (uważam że ma rację) - próba zbudowania czegoś większego będzie się wiązała z koniecznością zmiany koncepcji sterowania.
To jest mimo wszystko spory temat. Trudno w tym pomóc, pisząc "hobbystycznie" na forum. Ale kilka podpowiedzi - czemu nie?
1. Podziel sobie sterowanie na część sterującą (logiczną) i wykonawczą.
Część wykonawcza dla silników prądu stałego będą stanowiły serwonapędy np. typu "mostek H" (opisywane na forum); oddzielny serwonapęd dla każdego silnika, prędkość zadawana np. napięciem 0-10V, kierunek obrotów przełączany (lub prędkość zadawana napięciem -10V-+10V; znak napięcia odpowiada za kierunek obrotów).
2. Część sterująca.
Wyjścia (co najmniej):
- dla każdego serwonapędu: wyjście analogowe z prędkością zadaną; ewentualnie wyjście binarne z zezwoleniem na jazdę; binarne zwolnienie hamulców (jeśli występują)
- wyjście binarne załączenie napięcia wykonawczego (zasilania mostków H)
- wyjścia binarne sygnalizacja pracy robota (po uważaniu)
Wejścia (co najmniej):
- dla każdej osi ruchu: położenie osi (analogowe) + ewentualnie pozycja bazowa (binarne).
- jeżeli robot ma obrabiać element jadący, to położenie elementu jadącego (analogowe) + pozycja początkowa śledzenia elementu (binarne); jeżeli element stacjonarny, to element w pozycji "do obróbki" (binarne)
- załączenie robota (binarne)
- zezwolenie na pracę robota (binarne)
- rozkaz wykonania programu jazdy (binarne); + ewentualnie nr programu (analogowe)
- opcjonalny (binarny) przełącznik trybu pracy robota (automatyka - ręczny)
- opcjonalnie dla każdej osi ruchu przycisk jazdy do przodu + przycisk jazdy do tyłu w trybie ręcznym (binarne)
Dodano po 31 [minuty]: Dodatkowo - sygnał kalibracji (robot w pozycji bazowej) i ewentualnie rozkaz powrotu robota do pozycji bazowej
3. Algorytm sterowania:
Program jazdy jest możliwy w trybie automatycznym, zaczyna się rozkazem startu w pozycji bazowej i kończy w pozycji bazowej.
Na program składa się n punktów - pozycji robota, do których kolejno dojeżdża robot. Definicja każdego punktu składa się z pozycji zadanych w każdej osi (sterowanie osiowe - łatwiejsze w oprogramowaniu od sterowania końcem ramienia w np. przestrzeni XYZ) + pozycja elementu (jeżeli element jedzie) lub czas od początku ruchu (jeżeli element stoi).
Realizacja programu:
Wymuszeniem, dla którego oblicza się zadaną pozycję robota, jest bieżąca pozycja elementu, lub stan licznika czasu. Na tej podstawie określa się pomiędzy którymi punktami i w jakiej (proporcjonalnie) odległości między nimi powinien znajdować się robot. Dalej z proporcji (aproksymacja liniowa) oblicza się pozycję zadaną w każdej osi. Następnie sprawdza się dla każdej osi z osobna pozycję aktualną i liczy odchyłkę. Na podstawie odchyłki określa się prędkość zadaną dla danej osi.
V/zadana/ = V/poprzednia/ +k*odchyłka
(to taki prymitywny regulator PI. Wzmocnienie k trzeba dobrać doświadczalnie dla każej osi. Można zrobić lepszy regulator cyfrowy, ale trzeba wiedzieć, jak...).
Jeżeli jest zezwolenie na ruch, to prędkość obliczoną przesyła się do elementów wykonawczych i inkrementuje licznik czasu. Jeżeli nie ma zezwolenia, przesyła się prędkość 0 i nie inkrementuje licznika. I tak aż do osiągnięcia ostatniego punktu.
Tempem inkrementacji licznika czasu można uzyskać regulację prędkości robota (jak w Kebie - ustawisz 0% - to robot stanie, ustawisz 10% - będzie jechał wolno, 100% - będzie jechał szybko).
To taki najprostszy schemat oprogramowania sterującego. Oczywiście - trzeba to obudować interfejsem z użytkownikiem i urządzeniami zewnętrznymi, obsługą awarii, możliwością zdefiniowania i wyboru programu, procedurami bezpieczeństwa itd. Ale to są już dalsze "zabawy", jak całość w ogóle ruszy.