Jak sterować silnikami za pomocą krok/kierunek???

Rozmowy dotyczące oprogramowania sterującego maszynami CNC i sterowników CNC obrabiarek numerycznych

Autor tematu
ambrosius
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 205
Rejestracja: 01 paź 2008, 20:47
Lokalizacja: Wielkopolska

Jak sterować silnikami za pomocą krok/kierunek???

#1

Post napisał: ambrosius » 25 mar 2009, 22:48

Witam. Spędziłem cały wieczór i nie znalazłem odpowiedzi. Szukam funkcji (najlepiej w Delphi) (pomijamy problemy z przerywaniem z win xp)

Prosił bym o kawałek kodu który by mi sterował silnikiem, LPT podpięte na płytce SSk-MB1, sterownik md4052, sterownik ustawiony na 2000 kroków na obrót.

Jak napisać aby obrócić silnik np. 400 kroków w lewo i prawo. (albo cały obrót przy takim mikrokroku) Najlepiej w delphi (łącznie z otwarciem portu itd.) Jak opanować te sygnały krok i kierunek

Będę wdzięczny za pomoc.



Tagi:


szakal140
Czytelnik forum poziom 2 (min. 20)
Czytelnik forum poziom 2 (min. 20)
Posty w temacie: 2
Posty: 27
Rejestracja: 12 sie 2004, 03:51
Lokalizacja: krakĂłw

#2

Post napisał: szakal140 » 27 kwie 2009, 16:48

hmm xD
no wiec :D

zalozmy ze mamy funkcje outport(char adres, char data);

Kod: Zaznacz cały

static char adres = 0x378

void krec(int ilosc, bool kierunek) 
{ 

bool state = true; 

int data1 = 0; /// 00000000
int data2 = 1; /// dla 8 bitowego portu to bedzie chyba 2 pin 00000010
int kier; 

if(kierunek) 
   kier = 1 /// dla 8 bitowego portu: 00000001
                /// jesli  kierunek prawy (umownie - nie czepiac sie) 
else if(!kierunek) 
   kier = 0 /// dla 8 bitowego portu: 00000000 jesli kierunek lewy

   for(int i = 0 ; i < ilosc) 
   { 
      if(state){ 
         outport(adres, (char)(kier+data1) ); 
         state = false; 

      } 
      if(!state){ 
         outport(aders, (char)(kier+data2) ); 
         state = true; 

      } 
   } 


} 
nooo mniej wiecej cos nw te klocki. Ogolnie nic skomplikowanego. Mam nadzieje ze Ci to pomoze.


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#3

Post napisał: Leoo » 27 kwie 2009, 20:01

Funkcja "krec" jest odrobinę za krótka.
Tu nie chodzi o zwykłe wygenerowanie impulsów. Silnik nie może nagle wykonać 400 kroków na pełnej prędkości bo zgubi krok. Musi się rozpędzać a przed zatrzymaniem hamować tzn. porusza się po określonej rampie.
Funkcja musi czytać zmienną globalną określającą przyśpieszenie i częstotliwość maksymalną.
To jest problem.
Może Kolega określić z jaką prędkością będą generowane impulsy?


Autor tematu
ambrosius
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 205
Rejestracja: 01 paź 2008, 20:47
Lokalizacja: Wielkopolska

#4

Post napisał: ambrosius » 27 kwie 2009, 22:54

Dziękuje za odpowiedzi. Kod na pewno spróbuje wykorzystać.


Leoo masz jakiś pomysł jak zrobić rozpędzanie i hamowanie silnikiem??? trzeba zastosować jakieś opóźnienie w pętli czy jak???


Chciałbym zastosować krokówki (pewnie będa mocniejsze na m880) do napędu takich małych taśmociągów do sortowania, życie trzeba sobie ułatwiać, dlatego się zastanawiam czy idzie zrobić tak aby np.

1)krańćówka 1 zostaje wciśnięta
2)wtedy silnik obraca sie o jeden obrót
3)po jakimś czasie krancówka zostaje zwolniona (silnik nadal stoi)
4)krancówka zostaje wciśnieta
5)i silnik znów jeden obrót itd....

to by było by idealne rozwiązanie.

Jak badać czy krańcówka jest wciśnięta czy nie???
jak to zrealizować za pomocą płytki SSk-MB1 lub podobnej???


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#5

Post napisał: Leoo » 28 kwie 2009, 00:03

Silnik krokowy nie jest przeznaczony do napędu taśmociągów ze względu na niewielką sprawność ale czasem jest "wygodniejszy".
Pisanie softu na PC do sterowania STEP/DIR jest trudne. W tym jednak wypadku nie widzę takiej konieczności. Jest program TURBOCNC, który praktycznie można uruchomić z dyskietki pod DOS na przestarzałym PC. Na dodatek jest to soft obsługujący maszyny CNC. Wystarczy napisać kawałek kodu G, który w pętli będzie realizował określone zadanie.
Oczywiście można zainwestować w sterownik PLC i uniezależnić się od PC ale przynajmniej na czas sprawdzenia działania maszyny warto ściągnąć TURBOCNC.


Autor tematu
ambrosius
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 205
Rejestracja: 01 paź 2008, 20:47
Lokalizacja: Wielkopolska

#6

Post napisał: ambrosius » 28 kwie 2009, 00:28

Leoo pisze:Silnik krokowy nie jest przeznaczony do napędu taśmociągów ze względu na niewielką sprawność ale czasem jest "wygodniejszy".
Pisanie softu na PC do sterowania STEP/DIR jest trudne. W tym jednak wypadku nie widzę takiej konieczności. Jest program TURBOCNC, który praktycznie można uruchomić z dyskietki pod DOS na przestarzałym PC. Na dodatek jest to soft obsługujący maszyny CNC. Wystarczy napisać kawałek kodu G, który w pętli będzie realizował określone zadanie.
Oczywiście można zainwestować w sterownik PLC i uniezależnić się od PC ale przynajmniej na czas sprawdzenia działania maszyny warto ściągnąć TURBOCNC.
Wiem ze silniczek ma małą sprawność,ale mi wystarczają, sprawdzałem już na machu silniczek 3,1Nm już dawał radę, a jak bym włożył 4,5Nm to już wogóle bajka by była. Sterować programem jak mach czy wpomniany turbocnc da się, tylko czy można ustawić aby dany kod był wykonywany w zależności od krańcówki ?? (czy jest wciśnięta czy nie)??

czytałem Trochę o dostępie do LPT, są jakieś sterowniki do obsługi na niższym przerywaniu czy coś. Coś bym kombinował aby nie gubił kroków. Poza tym zgubienie kroku czy dwóch na taśmociągu nie będzie jakoś strasznie odczuwalne bo załączał by się dopiero przy wciśnięciu krańcówki....

O PLC też myślałem, ale taśmociągu nie używam stale, tylko sezonowo czasami, dlatego lepszym rozwiązaniem by było sterowanie na cnc, bo sterownik bym odpinał od maszyny i wpinał tam (nie używał bym 2 maszyn jednocześnie). Jedyne co by zostało w maszynie to 3 silniki które nie są jakoś strasznie drogie. Dobry sterownik wiadomo ze kosztuje trochę.


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#7

Post napisał: Leoo » 28 kwie 2009, 09:16

ambrosius pisze:1)krańćówka 1 zostaje wciśnięta
2)wtedy silnik obraca sie o jeden obrót
3)po jakimś czasie krancówka zostaje zwolniona (silnik nadal stoi)
4)krancówka zostaje wciśnieta
5)i silnik znów jeden obrót itd....
Czyli sterujemy jednym silnikiem za pomocą jednej krańcówki?

Programy sterujące muszą sprawdzać stan wejść LPT, choćby w celu ustalenia pozycji Home czy limit za pomocą krańcówek. W jednym z wątków opisana była metoda obsługi głowicy obrotowej z użyciem makr w Mach z zastosowaniem zewnętrznego enkodera na 3 bitach.


Autor tematu
ambrosius
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 205
Rejestracja: 01 paź 2008, 20:47
Lokalizacja: Wielkopolska

#8

Post napisał: ambrosius » 28 kwie 2009, 10:30

witam. tak jeden silnik, jedna krańcówka.
a czy nie można tego sprawdzać za pomocą funkcji analogicznej do outport czyli inport?


Leoo
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 4
Posty: 4017
Rejestracja: 15 lis 2006, 22:01
Lokalizacja: Tarnobrzeg

#9

Post napisał: Leoo » 28 kwie 2009, 11:49

ambrosius pisze:a czy nie można tego sprawdzać za pomocą funkcji analogicznej do outport czyli inport?
Jasne, że można. Proszę skompilować kod zaproponowany przez kolegę szakal140 i poeksperymentować.


Autor tematu
ambrosius
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 5
Posty: 205
Rejestracja: 01 paź 2008, 20:47
Lokalizacja: Wielkopolska

#10

Post napisał: ambrosius » 28 kwie 2009, 13:47

oki, jak znajdę chwile czasu to po eksperymentuje i dam znać jakie są efekty.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Ogólne Dyskusje na Temat Systemów Sterowania CNC”