mach3+enkoder
zatrzymanie posuwu na podstawie odczytu z enkodera
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 26
- Posty: 48
- Rejestracja: 17 cze 2012, 00:46
- Lokalizacja: zach pom
- Kontakt:
Re: mach3+enkoder
i tu się mylisz- makro qqaza działa. ty też miałeś troche racji bo pokrycia odczytów od czasu do czasu się rozjeżdzają o setke. podczas realizacji programu mam na myśli gcody- pojawia się co jakiś czas odchył o 0,01 ale po jakimś czasie jeden licznik dogania drugi i wskazania się pokrywają. i tak cały czas pier__li.jedyne co jest kłopotliwe to fakt zę jeżeli zatrzymasz program gdy jest odchyłka (ta jedna setka) to kasująć licznik zera materiału na liczniku enkodera zostaje błąd w postaci tej jednej setki. trzeba więc pilnować obu liczników .można to też załatwić programowo ale to jest już inny temat. kłopotliwe jest również to zę jak się zgubi krok to nie idzie skasować błędu bo macro pump prubkóje i wyżóca błąd. myślałem też nad tym żeby wywoływać i kończyć prace makra gcodem zeby działało tylko kiedy frezuje ale to nie jest profesjonalne rozwiązanie. jeszcze jedna uwaga jeżeli ustawisz enkoder w fazie z silnikiem to rozbieżności odczytów zdażają sie bardzo żadko. trzeba go ruszyć o piczy kłak i już cieszy oko. po co tak niepotrzebnie rozbudowywać program który działa i to dobrze.po co komu pozycja macha i pozycja enkodera stan zabazowania osi? włanczasz macha zerujesz liczniki i frezujesz. qqaza makro pilnuje dopuszczalnego błędu odchyłów -który sam określasz. można się popisywać pisząc macro tylko po co jak sprawdzają się proste rozwiązania. trzeba przyznać że masz fantazje. gdy byś ty napisał to makro to nikt by się nie połapał jak działa. qqaz zrobił to tak że nawet jak potafie przełożyć je na normalny język. na razie co prawda bawiłem się jadną osią, ale z pozostałymi nie będzie problemu. a teraz zabawie się w adwokata qqaza. możesz go poprasić o adres i wysłąć mu tą obiecaną skrzynke- bo to jemu należy się nagroda za pomysł i prostotę w realizacji założonego celu. a zapomiałem - ty nie dotrzymujesz słowa
Dodane 1 godzina 35 minuty 53 sekundy:
i te programy które mi podesłałeś miały ci pomóc skąpletować te obowiązkowe dane? to ciekawe
Dodane 1 godzina 35 minuty 53 sekundy:
i te programy które mi podesłałeś miały ci pomóc skąpletować te obowiązkowe dane? to ciekawe
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 26
- Posty: 48
- Rejestracja: 17 cze 2012, 00:46
- Lokalizacja: zach pom
- Kontakt:
Re: mach3+enkoder
lepi nasz racje makro musi być bardziej rozbudowane. ubzdurałem sobie że kod musi być prosty i bezrozumnie się tego trzymałem. nie dopuszczałem innej ewentualności.za awanturę przepraszam.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 11
- Posty: 2347
- Rejestracja: 28 sty 2007, 16:12
- Lokalizacja: Łódź
Re: mach3+enkoder
Trochę lepiej
widziałbym to tak
1) Po właczeniu należy maszynę zahołmować
Koniecznie z klawisza ekranu gdyż w nim będzie zaszyta procedura zerowania enkodera osi
2)Usermled(1001)-ma zapamiętać że pozycjonowanie nastąpiło i odczyt enkodera jest prawidłowy
Zapamiętanie stanu jako zapalenie jakiegoś kontrolnego leda np userled(1001) dla osi x
Następne userled(1002) (1003)..(1009) dla następnych osi.
3) Userled(1011) - wprowadzić kontrolę zgodności wszystkich osi
to będzie wskaźnik dla użytkownika
4) Userled(1012) kontrola zezwolenia od strony użytkownika
Zapalisz leda to działa, zgasisz to zadziałanie makra jest wstrzymane
Można zrobić to tak że uruchomienie RUN z automatu załącza aktywność leda i makro program będzie mogło zatrzymać o ile w trakcie realizacji nie wyłaczysz go klawiszem na ekranie.
Klawisz może być typu toogle - przełącza swieci/nie świeci.
5) klawisz ręcznej synchronizacji licznika enkodera z licznikiem osi
Naciskasz i na enkoderze masz wpisany stan osi - proste wymuszenie zgodności w każdym momencie.
Co wpisać:
do ekranu maszyny wstaw odpowiednie ledy (pkt 2,3,4) i DRO enkoderów.
Wstaw własne klawisze (pkt 4,5) i popraw treść hołma.
6) klawisz Refallhome zawiera:
DoButton( 24 )
DoButton( 23 )
DoButton( 22 )
DoButton( 25 )
dopisz między linijkami odpowiednio:
DoButton( 24 )' pozycjonowanie osi Z
if getoemled(809) then ' led osi Z świeci na zielono
SetOEMDro(31,0)' wyzerowanie enkodera osi Z
Setuserled(1003,1)' led synchro osi Z świeci
end if
DoButton( 23 ) - odpowiednio dla X
.
.
.
DoButton( 22 ) - odpowiednio dla Y
.
.
.
DoButton( 25 )
klawisz hołma poprawiony.
7) Wstaw klawisz z pkt 5) - ręczne zsynchronizowanie
treść klawisza:
a=getoemdro(83) ' odczytanie wartości maszynowej osi X
setoemdro(29,a) ' wpisanie wartości do licznika enkodera - jest zgodność
setuserled(1001,1) ' zapalenie leda bo jest oś X zsynchronizowana
tak samo dla Y i Z
klawisz ręcznej synchronizacji zrobiony
Wstaw klawisz z pkt 4) - zezwolenie działania
treść klawisza:
if getuserled(1012) then ' led pali/nie pali
setuserled(1012,0) ' zgaś leda
else
setuserled(1012,1) ' zapal leda
end if
klawisz przełaczania zezwolenia na działąnie makra zrobiony.
Chyba będzie działął również podczas wykonywania Gkodu - nie wiem, sprawdzisz.
8.) Teraz treść makropump
uchyb= stała ( albo wartość ze swojego wstawionego jakiegoś DRO na ekranie którego zawartość możęsz przecież edytować tak jak każdą oś)
if getuserled(1001) and getuserled(1002) and getuserled(1003) then
setuserled(1011,1) 'wszystkie osie OK
else
setuserled(1011,0)
end if ' nie wiem po co to powyżej ale będzie widać na ekranie ...
if getuserled(1012) then ' można sprawdzać
a=getoemdro(29)
b=getoemdro(83)
c=a-b
if Abs(c)>uchyb then
dooembutton(1003)
setuserled(1001,0) ' zgaś leda Xsynchro bo się rozjechało
message("no i du**")
sleep 1000
end if ' C
if.... dla następnej osi.
.
end if ' C
if.... dla następnej osi
.
end if ' C
end if '(1012)
chyba wszystko, doceń, półgodziny pisałem.
widziałbym to tak
1) Po właczeniu należy maszynę zahołmować
Koniecznie z klawisza ekranu gdyż w nim będzie zaszyta procedura zerowania enkodera osi
2)Usermled(1001)-ma zapamiętać że pozycjonowanie nastąpiło i odczyt enkodera jest prawidłowy
Zapamiętanie stanu jako zapalenie jakiegoś kontrolnego leda np userled(1001) dla osi x
Następne userled(1002) (1003)..(1009) dla następnych osi.
3) Userled(1011) - wprowadzić kontrolę zgodności wszystkich osi
to będzie wskaźnik dla użytkownika
4) Userled(1012) kontrola zezwolenia od strony użytkownika
Zapalisz leda to działa, zgasisz to zadziałanie makra jest wstrzymane
Można zrobić to tak że uruchomienie RUN z automatu załącza aktywność leda i makro program będzie mogło zatrzymać o ile w trakcie realizacji nie wyłaczysz go klawiszem na ekranie.
Klawisz może być typu toogle - przełącza swieci/nie świeci.
5) klawisz ręcznej synchronizacji licznika enkodera z licznikiem osi
Naciskasz i na enkoderze masz wpisany stan osi - proste wymuszenie zgodności w każdym momencie.
Co wpisać:
do ekranu maszyny wstaw odpowiednie ledy (pkt 2,3,4) i DRO enkoderów.
Wstaw własne klawisze (pkt 4,5) i popraw treść hołma.
6) klawisz Refallhome zawiera:
DoButton( 24 )
DoButton( 23 )
DoButton( 22 )
DoButton( 25 )
dopisz między linijkami odpowiednio:
DoButton( 24 )' pozycjonowanie osi Z
if getoemled(809) then ' led osi Z świeci na zielono
SetOEMDro(31,0)' wyzerowanie enkodera osi Z
Setuserled(1003,1)' led synchro osi Z świeci
end if
DoButton( 23 ) - odpowiednio dla X
.
.
.
DoButton( 22 ) - odpowiednio dla Y
.
.
.
DoButton( 25 )
klawisz hołma poprawiony.
7) Wstaw klawisz z pkt 5) - ręczne zsynchronizowanie
treść klawisza:
a=getoemdro(83) ' odczytanie wartości maszynowej osi X
setoemdro(29,a) ' wpisanie wartości do licznika enkodera - jest zgodność
setuserled(1001,1) ' zapalenie leda bo jest oś X zsynchronizowana
tak samo dla Y i Z
klawisz ręcznej synchronizacji zrobiony
Wstaw klawisz z pkt 4) - zezwolenie działania
treść klawisza:
if getuserled(1012) then ' led pali/nie pali
setuserled(1012,0) ' zgaś leda
else
setuserled(1012,1) ' zapal leda
end if
klawisz przełaczania zezwolenia na działąnie makra zrobiony.
Chyba będzie działął również podczas wykonywania Gkodu - nie wiem, sprawdzisz.
8.) Teraz treść makropump
uchyb= stała ( albo wartość ze swojego wstawionego jakiegoś DRO na ekranie którego zawartość możęsz przecież edytować tak jak każdą oś)
if getuserled(1001) and getuserled(1002) and getuserled(1003) then
setuserled(1011,1) 'wszystkie osie OK
else
setuserled(1011,0)
end if ' nie wiem po co to powyżej ale będzie widać na ekranie ...
if getuserled(1012) then ' można sprawdzać
a=getoemdro(29)
b=getoemdro(83)
c=a-b
if Abs(c)>uchyb then
dooembutton(1003)
setuserled(1001,0) ' zgaś leda Xsynchro bo się rozjechało
message("no i du**")
sleep 1000
end if ' C
if.... dla następnej osi.
.
end if ' C
if.... dla następnej osi
.
end if ' C
end if '(1012)
chyba wszystko, doceń, półgodziny pisałem.
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 26
- Posty: 48
- Rejestracja: 17 cze 2012, 00:46
- Lokalizacja: zach pom
- Kontakt:
Re: mach3+enkoder
qqaz dziękuje ci bardzo za makro, wyślij mi proszę swój adres na pw. lepi naprawde mi głupio że tak to wyszło. do tej pory oczy przecieram
jak patrze na kod qqaza.
jak patrze na kod qqaza.
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 26
- Posty: 48
- Rejestracja: 17 cze 2012, 00:46
- Lokalizacja: zach pom
- Kontakt:
Re: mach3+enkoder
działające i sprawdzone macro
uchyb= 0.2 'tutaj wstaw dopuszczalną wartość błedu
If getuserled(1001) And getuserled(1002) And getuserled(1003) Then
setuserled (1011,1)
Else
setuserled(1011,0)
end if
If getuserled(1012) Then ' mozna sprawdzić
a=getoemdro(29) ' - x enkoder
b=getoemdro(178) ' - offset x
c=a-b
If Abs(c) > uchyb Then 'warunek
dooembutton( 1003) ' przyciśnij guzik
setuserled(1001,0)
message("oś x zgubiła krok") ' wyświetl komunikat
Else
setuserled(1001,1)
End If
d=getoemdro(30) ' - y enkoder
e=getoemdro(179) ' - offset y
f=d-e 'warunek
If Abs(f) > uchyb Then
dooembutton( 1003)
setuserled(1002,0)
message("os y zgubiła krok")
Else
setuserled(1002,1)
End If
g=getoemdro(31) ' - z enkoder
h=getoemdro (180) ' - offset z
i=g-h 'warunek
If Abs(i) > uchyb Then
dooembutton( 1003)
setuserled(1003,0)
message("os z zgubiła krok")
Else
setuserled(1003,1)
End If
End If
zerowanie liczników
a= getoemdro( 83 )
setoemdro( 29,a )
setuserled( 1001,1 )
d=getoemdro ( 84 )
setoemdro( 30,d )
setuserled( 1002,1)
g= getoemdro( 85 )
setoemdro( 31,g)
setuserled( 1003,1 )
If getuserled(1001) And getuserled(1002) And getuserled(1003) Then
setuserled(1011,1)
message("")
End If
ważne!!!!! kable od enkoderów puściłem osobnym prowadnikiem przewodów bo gdy szły razem z kablami od silników nie działało
cała elektronika od enkoderów jest w odrębnej skrzynce. gdy sterowanie silników i enkoderów było w jednej skrzynce nie działało.
uchyb= 0.2 'tutaj wstaw dopuszczalną wartość błedu
If getuserled(1001) And getuserled(1002) And getuserled(1003) Then
setuserled (1011,1)
Else
setuserled(1011,0)
end if
If getuserled(1012) Then ' mozna sprawdzić
a=getoemdro(29) ' - x enkoder
b=getoemdro(178) ' - offset x
c=a-b
If Abs(c) > uchyb Then 'warunek
dooembutton( 1003) ' przyciśnij guzik
setuserled(1001,0)
message("oś x zgubiła krok") ' wyświetl komunikat
Else
setuserled(1001,1)
End If
d=getoemdro(30) ' - y enkoder
e=getoemdro(179) ' - offset y
f=d-e 'warunek
If Abs(f) > uchyb Then
dooembutton( 1003)
setuserled(1002,0)
message("os y zgubiła krok")
Else
setuserled(1002,1)
End If
g=getoemdro(31) ' - z enkoder
h=getoemdro (180) ' - offset z
i=g-h 'warunek
If Abs(i) > uchyb Then
dooembutton( 1003)
setuserled(1003,0)
message("os z zgubiła krok")
Else
setuserled(1003,1)
End If
End If
zerowanie liczników
a= getoemdro( 83 )
setoemdro( 29,a )
setuserled( 1001,1 )
d=getoemdro ( 84 )
setoemdro( 30,d )
setuserled( 1002,1)
g= getoemdro( 85 )
setoemdro( 31,g)
setuserled( 1003,1 )
If getuserled(1001) And getuserled(1002) And getuserled(1003) Then
setuserled(1011,1)
message("")
End If
ważne!!!!! kable od enkoderów puściłem osobnym prowadnikiem przewodów bo gdy szły razem z kablami od silników nie działało
cała elektronika od enkoderów jest w odrębnej skrzynce. gdy sterowanie silników i enkoderów było w jednej skrzynce nie działało.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 11
- Posty: 2347
- Rejestracja: 28 sty 2007, 16:12
- Lokalizacja: Łódź
Re: mach3+enkoder
Radzisz sobie i jest efekt. O to biega.
Ale podejrzewam że enkodery z wyjściem OC podłączyłeś bezpośrednio do wejść Macha, ewentualnie jeszcze jakiś opornik. Dlatego łapał zakłócenia.
Wszelkie takie powinny być łączone linią różnicową. Nawet gdy poziom zakłóceń jest wysoki i jeszcze się ujawnia to wtedy ładuje się 2x większy prąd w połączeniu i już nic nie przeszkadza. A w linię można też i 1A puścić - ciekawe co by być musiało aby taki sygnał zneutralizować . Przy zainstalowanych mocach maszyny te kilka watów więcej...
We frezarce połączenie głowicy - silnik wrzeciona na falowniku, napęd osi Z czyli silnik prądu stałego i jego enkoder (UHU tym steruje), krańcówki góra/dół i home idą razem w jednym prowadniku łańcuchowym. I nic, żadnych zakłóceń ani gadania że falownik "trudny"
I pod Machem2 już 15 lat chodzi.
Ale podejrzewam że enkodery z wyjściem OC podłączyłeś bezpośrednio do wejść Macha, ewentualnie jeszcze jakiś opornik. Dlatego łapał zakłócenia.
Wszelkie takie powinny być łączone linią różnicową. Nawet gdy poziom zakłóceń jest wysoki i jeszcze się ujawnia to wtedy ładuje się 2x większy prąd w połączeniu i już nic nie przeszkadza. A w linię można też i 1A puścić - ciekawe co by być musiało aby taki sygnał zneutralizować . Przy zainstalowanych mocach maszyny te kilka watów więcej...
We frezarce połączenie głowicy - silnik wrzeciona na falowniku, napęd osi Z czyli silnik prądu stałego i jego enkoder (UHU tym steruje), krańcówki góra/dół i home idą razem w jednym prowadniku łańcuchowym. I nic, żadnych zakłóceń ani gadania że falownik "trudny"
I pod Machem2 już 15 lat chodzi.
-
- Lider FORUM (min. 2000)
- Posty w temacie: 1
- Posty: 9319
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: mach3+enkoder
Zakłócenia indukują się na WSZYSTKICH przewodach, więc także na zasilaniu i masie. Żadne linie różnicowe, ani zwiększanie prądu nie pomoże, kiedy czujnik dostaje zakłócenia po zasilaniu i od tego głupieje.qqaz pisze: ↑04 lut 2023, 13:56Wszelkie takie powinny być łączone linią różnicową. Nawet gdy poziom zakłóceń jest wysoki i jeszcze się ujawnia to wtedy ładuje się 2x większy prąd w połączeniu i już nic nie przeszkadza. A w linię można też i 1A puścić - ciekawe co by być musiało aby taki sygnał zneutralizować . Przy zainstalowanych mocach maszyny te kilka watów więcej...
Poza tym masz rację.
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 26
- Posty: 48
- Rejestracja: 17 cze 2012, 00:46
- Lokalizacja: zach pom
- Kontakt:
Re: mach3+enkoder
nie wiem co zakłucało czy kable zasilające krokowce, czy kabel zasilający wrzeciono, czy też zasilanie z jednego źródła - sterowania i
enkoderów. teraz enkodery mają swój własny zasilacz i skrzynke a kable odrębny prowadnik przewodów - i działa.
Dodane 12 minuty 17 sekundy:
jezeli krańcówki będą działały na rozwarcie to zakłucenia nie będą im przeszkadzać, ale jeżeli stan wysoki będzie rozłanczał posówy to będzie pier...ić. przerabiałem temat stawania posuwów bez "przyczyny".
enkoderów. teraz enkodery mają swój własny zasilacz i skrzynke a kable odrębny prowadnik przewodów - i działa.
Dodane 12 minuty 17 sekundy:
jezeli krańcówki będą działały na rozwarcie to zakłucenia nie będą im przeszkadzać, ale jeżeli stan wysoki będzie rozłanczał posówy to będzie pier...ić. przerabiałem temat stawania posuwów bez "przyczyny".
-
- Lider FORUM (min. 2000)
- Posty w temacie: 11
- Posty: 2347
- Rejestracja: 28 sty 2007, 16:12
- Lokalizacja: Łódź
Re: mach3+enkoder
Pewnie teraz to może być irytujące ale te kalambury rebusów z makrem mogą być zastąpione kilkoma linijkami w tzw "mózgu" Macha - coś jak PLC ala drabinkowy.
Qq polega na tym że jest DRO które wprost udostępnia na bieżąco gotową różnicę pomiędzy wskazanymi licznikami. Tylko sprawdzić czy nie jest większe niż i wtedy...
Qq polega na tym że jest DRO które wprost udostępnia na bieżąco gotową różnicę pomiędzy wskazanymi licznikami. Tylko sprawdzić czy nie jest większe niż i wtedy...
-
Autor tematu - Sympatyk forum poziom 1 (min. 40)
- Posty w temacie: 26
- Posty: 48
- Rejestracja: 17 cze 2012, 00:46
- Lokalizacja: zach pom
- Kontakt: