Strona 1 z 2
Jak sterować silnikami za pomocą krok/kierunek???
: 25 mar 2009, 22:48
autor: ambrosius
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.
: 27 kwie 2009, 16:48
autor: szakal140
hmm xD
no wiec
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.
: 27 kwie 2009, 20:01
autor: Leoo
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?
: 27 kwie 2009, 22:54
autor: ambrosius
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???
: 28 kwie 2009, 00:03
autor: Leoo
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.
: 28 kwie 2009, 00:28
autor: ambrosius
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ę.
: 28 kwie 2009, 09:16
autor: Leoo
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.
: 28 kwie 2009, 10:30
autor: ambrosius
witam. tak jeden silnik, jedna krańcówka.
a czy nie można tego sprawdzać za pomocą funkcji analogicznej do outport czyli inport?
: 28 kwie 2009, 11:49
autor: Leoo
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ć.
: 28 kwie 2009, 13:47
autor: ambrosius
oki, jak znajdę chwile czasu to po eksperymentuje i dam znać jakie są efekty.