Witam
Jestem nowy na forum ... i właśnie zaczynam tak jak zapewne wielu z was od budowy swojej pierwsze maszyny cnc, i w końcu doszedłem do etapu tworzenia sterownika. Przetestowałem sobie już parę silniczków krokowych na sterowniku l287 i l298 (do testów zaprogramowałem sobie Atmege 32 na mojej płytce testowej i napisałem malutki program w gccu) i zacząłem się zastanawiać nad wyższa warstwą sterowania.
Oczywiści w typowych rozwiązaniach należało by użyć portu LPT i sprawa załatwiona ale ja takiego w swoim komputerze nie posiadam. Wiem ze są rozwiązania typu Smooth Stepper ale to rozwiązanie mi nie odpowiada.Mam inni pomysł lecz nie wiem czy jest on do zrealizowania, mianowice - chciałbym zrobić sterownik do osi XYZ i komunikować się z kompem za pomocą protokołu modbus, zaś na komputerze miał bym zainstalowany program Macha3 który ten protokół obsługuje.Tyle ze nie jestem pewnie czy obsługuje również obsługę osi XYZ ... Na stronach internetowych znalazłem jedynie obsługę urządzeń dodatkowych jak np tu: http://www.machsupport.com/videos.php lub tu: http://www.henriksplace.se/CNC/CNC_Mach3_modbus_1.html ale skoro twórcy Macha udostępnili SDK - można by samemu coś pokombinować i wtedy oczywiści należało by określić przeznaczenie poszczególnych rejestrów w sterowniku i de facto stworzyć własny standard. Jakie jest Wasze zdanie na ten temat?
Koncepcja sterowania
-
Autor tematu - Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 2
- Posty: 2
- Rejestracja: 31 mar 2009, 12:55
- Lokalizacja: Katowice
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 2
- Posty: 1701
- Rejestracja: 17 mar 2006, 08:57
- Lokalizacja: Gdańsk
Modbus kiepsko nadaje się do obsługi ruchu - no bo trzeba przewalić naprawdę dużo danych do trajketorii ruchu ( a struktura rejestrowa Modbusa jest raczej do mniejszej objętosciowo komunikacji).
Moim zdaniem tak się da zrobić tylko bardzo proste sterownie któe nie obsługuje przyspieszeń/hamowań w ruchu.
Moim zdaniem tak się da zrobić tylko bardzo proste sterownie któe nie obsługuje przyspieszeń/hamowań w ruchu.
-
Autor tematu - Nowy użytkownik, używaj wyszukiwarki
- Posty w temacie: 2
- Posty: 2
- Rejestracja: 31 mar 2009, 12:55
- Lokalizacja: Katowice
Zgadzam się z powyższym ale taka sytuacja ma miejsce w przypadku gdy przesyłamy dane do rejestrów dosłownie krok po kroku - czy może chodziło jeszcze o coś innego? Myślałem o tym żeby mój sterownik był na tyle autonomiczny aby sam sterował pojedynczymi krokami silników krokowych a program sterujący przesyłał by mu tylko kolejne instrukcje przemieszczenie wrzeciona na daną pozycje... w praktyce należano by utworzyć szereg rejestrów zawierających takie dane jak np:
Zmienne tylko do odczytu
0 [numer instrukcji]
1 [flaga wykonania instrukcji]
2 [pozycja początkowa X]
3 [pozycja początkowa Y]
4 [pozycja początkowa Z] - jeżeli instrukcja została wykonana pozycje korcowe zajmują miejsce funkcji początkowych (przy założeniu ze realizowane jest programowanie przyrostowe)
Zmienne do odczytu i do zapisu
0 [rodzaj interpolacji] np. 0 - obsługa jednej osi,1-interpolacja liniowa, interpolacja kołowa
1 [Stop]
2 [Reset]
3 [pozycja końcowa X] - pozycje podane w jednostkach kroków na jedną oś dla uproszczeniu obliczeń.
4 [pozycja końcowa Y]
5 [pozycja końcowa Z]
.. pozostałe zmienne potrzebne do obsługi poszczególnych rodzajów interpolacji
Tak więc sterownik realizował by interpolacje kołową i liniową 2D.
Na komputerze trzeba by w takim wypadku zaprogramować funkcje konwersji z G-kodu na mój protokół.
Zmienne tylko do odczytu
0 [numer instrukcji]
1 [flaga wykonania instrukcji]
2 [pozycja początkowa X]
3 [pozycja początkowa Y]
4 [pozycja początkowa Z] - jeżeli instrukcja została wykonana pozycje korcowe zajmują miejsce funkcji początkowych (przy założeniu ze realizowane jest programowanie przyrostowe)
Zmienne do odczytu i do zapisu
0 [rodzaj interpolacji] np. 0 - obsługa jednej osi,1-interpolacja liniowa, interpolacja kołowa
1 [Stop]
2 [Reset]
3 [pozycja końcowa X] - pozycje podane w jednostkach kroków na jedną oś dla uproszczeniu obliczeń.
4 [pozycja końcowa Y]
5 [pozycja końcowa Z]
.. pozostałe zmienne potrzebne do obsługi poszczególnych rodzajów interpolacji
Tak więc sterownik realizował by interpolacje kołową i liniową 2D.
Na komputerze trzeba by w takim wypadku zaprogramować funkcje konwersji z G-kodu na mój protokół.
-
- ELITA FORUM (min. 1000)
- Posty w temacie: 2
- Posty: 1701
- Rejestracja: 17 mar 2006, 08:57
- Lokalizacja: Gdańsk
Tak się też da - masz na pokładzie zmiennoprzecinkowy procesor sygnałowy ? I dużo pamięci aby przeliczyć kilka kroków do przodu ?
Mam taki soft i sterownik, ale większosć przeliczeń jest na PC - do procka idą wstępnie przygotowane wektory ruchu ( już stałoprzecinkowe, przeliczenia były robione na całym pliku).
Rada od kogos kto tę drogę przeszedł - zrób taki soft na PC. Niech na początku tylko wyswietla scieżkę - wtedy będziesz miał pojęcie ile trzeba mocy procka aby to wszystko działało.
Mam taki soft i sterownik, ale większosć przeliczeń jest na PC - do procka idą wstępnie przygotowane wektory ruchu ( już stałoprzecinkowe, przeliczenia były robione na całym pliku).
Rada od kogos kto tę drogę przeszedł - zrób taki soft na PC. Niech na początku tylko wyswietla scieżkę - wtedy będziesz miał pojęcie ile trzeba mocy procka aby to wszystko działało.