Problem z G38

Dyskusje dotyczące działania obsługi programu LinuxCNC

Autor tematu
routerr
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 3
Posty: 6
Rejestracja: 30 wrz 2012, 23:29
Lokalizacja: Gdańsk

Problem z G38

#1

Post napisał: routerr » 20 lut 2015, 01:04

Witam

Napisałem podprogramy do pomiaru długości narzędzia i wyznaczania środka materiału. I tak jak pierwszy działał bez zarzutu tak wyznaczanie środka powoduje dziwny błąd.

Maszyna najpierw sprawdza gdzie jest powierzchnia materiału a następnie go mierzy.
problem w tym że po pierwszym G38.4 Z2 F20 wszystkie G38 zmieniają (chyba) wartość na F20 i pomiary trwają niemiłosiernie długo (mimo że np G38.3 ma przypisany F1200)
Każdy następny podprogram zachowuje się tak samo "G38" muli pomaga tylko reset programu.

Co że tak powiem "schrzaniłem" może jakoś inaczej deklaruje się F dla G38?

I pytanie przy okazji: Jak zmusić LinuxCNC do wyświetlenia okienka dialogowego z pytaniem np o #<promien_max> przy każdym wywołany podprogramu żeby nie trzeba było co chwilę edytować pliku?

Kod: Zaznacz cały

o<srodek_zew> sub

G21

G90 (pozycja bezwzględna)

#<promien_max>= 30.0  (maksymalny promień otworu - zakres badania) 
#<start_x>=#<_x> (punkt początkowy X aktualny) 
#<start_y>=#<_y> (punkt początkowy Y aktualny)
#<start_z>=#<_z> (punkt początkowy Z aktualny)
#<speed_1>=1000.0
#<spped_odjazd> = 20.0


G91 (pozycjonowanie przyrostowe)
G38.3 Z-10 F#<speed_1>
G38.4 Z2 F#<spped_odjazd> (koniec szukania powierzchni materiału)
G90 (pozycja bezwzględna)
#<material_z>=#<_z> (zapisanie pozycji Z)

(najazd na prawa krawędź)
G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>+#<promien_max>]y[#<start_y>]
G93 G0 Z[#<material_z>-1] (dojazd poniżej powierzchni materiału)

(pomiar)
G91 (pozycjonowanie przyrostowe)
G38.2 X-[#<promien_max>] F#<speed_1>(test -X krawedzi otworu) 
G38.4 X2 F#<spped_odjazd>
#<prawy_x>=#<_x>
G38.2 X-[#<promien_max>] F#<speed_1>(test -X krawedzi otworu) 
G38.4 X2 F#<speed_1>


G90 (pozycja bezwzględna)
G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>]y[#<start_y>]
G93 G0 x[#<start_x>-#<promien_max>]y[#<start_y>]
G93 G0 Z[#<material_z>-1]

(pomiar krawędzi)
G91 (pozycjonowanie przyrostowe)
G38.2 X[#<promien_max>] F#<speed_1>(test -X krawędzi otworu) 
G38.4 X-2 F#<spped_odjazd>
#<lewy_x>=#<_x>
G38.2 X[#<promien_max>] F#<speed_1>(test -X krawędzi otworu) 
G38.4 X-2 F#<speed_1>

G90 (pozycja bezwzględna)

G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>]y[#<start_y>]


(najazd na top krawędź)
G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>]y[#<start_y>+#<promien_max>] (na top krawędź)
G93 G0 Z[#<material_z>-1]

(pomiar krawędzi)
G91 (pozycjonowanie przyrostowe)
G38.2 y-[#<promien_max>] F#<speed_1>(test -X krawędzi otworu) 
G38.4 y2 F#<spped_odjazd>
#<top_y>=#<_y>
G38.2 y-[#<promien_max>] F#<speed_1>(test -X krawędzi otworu) 
G38.4 y2 F#<speed_1>
G90 (pozycja bezwzględna)
G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>]y[#<start_y>]

(najazd na bottom krawędź)
G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>]y[#<start_y>-#<promien_max>] (na bottom krawędź)
G93 G0 Z[#<material_z>-1]
(pomiar krawędzi)
G91 (pozycjonowanie przyrostowe)
G38.2 y[#<promien_max>] F#<speed_1>(test -X krawędzi otworu) 
G38.4 y-2 F#<spped_odjazd>
#<bottom_y>=#<_y>
G38.2 y[#<promien_max>] F#<speed_1>(test -X krawędzi otworu) 
G38.4 y-2 F#<speed_1>
G90 (pozycja bezwzględna)
G93 G0 Z[#<start_z>]
G93 G0 x[#<start_x>]y[#<start_y>]


(obliczenia)
G93 G0 x[[#<prawy_x>+#<lewy_x>]/2.0]y[[#<top_y>+#<bottom_y>]/2.0]Z[#<material_z>]

o<srodek> endsub


Pozdrawiam Michał



Awatar użytkownika

andmar2005
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 190
Rejestracja: 15 sie 2009, 08:55
Lokalizacja: kujawsko-pomorski
Kontakt:

#2

Post napisał: andmar2005 » 20 lut 2015, 20:31

sprawdź to - ne pisałem tego gdzieś w sieci jest


If GetOemLed (825) <> 0 Then 'sprawdzanie stanu sondy
Code "(Płyta próby jest uziemiona sprawdź połączenie i spróbuj ponownie)"
Else
FeedCurrent = GetOemDRO(818) 'bieżące ustawienia
XCurrent = GetDro(0)
YCurrent = GetDro(1)

Code "G4 P1" 'Pauza 1 sek
Code "F400" 'Niska prędkość obrotów


Rem

XNew = XCurrent - 300
Code "G31 X" &XNew
While IsMoving()
Wend
XPos1 = GetVar(2000)

Code "G0 X" &XCurrent
While IsMoving()
Wend

Rem 'Sonda w dół

XNew = XCurrent + 300
Code "G31 X" &XNew
While IsMoving()
Wend
XPos2 = GetVar(2000)

XCenter = (XPos1 + XPos2) / 2
Code "G0 X" &XCenter
While IsMoving()
Wend

Rem

YNew = YCurrent + 300
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos1 = GetVar(2001)

Code "G0 Y" &YCurrent
While IsMoving()
Wend

Rem 'Sonda w dół

YNew = YCurrent - 300
Code "G31 Y" &YNew
While IsMoving()
Wend
YPos2 = GetVar(2001)

YCenter = (YPos1 + YPos2) / 2
Code "G0 Y" &YCenter
While IsMoving()
Wend

Code "G4 P1"
While IsMoving()
Wend


Rem ' dokładny obmiar x
Code "G0 X" &XPos1 + 5
Code "F100"
While IsMoving()
Wend
Code " G91"
Code "G31 X-50"
While IsMoving()
Wend
Code " G90"
XPos3 = GetVar(2000)
Code "G0 X" &XCenter
Rem
Code "G0 X" &XPos2 - 5
While IsMoving()
Wend
Code " G91"
Code "G31 X+50"
While IsMoving()
Wend
Code " G90"
XPos4 = GetVar(2000)

XCenter2 = (XPos3 + XPos4) / 2
Code "G0 X" &XCenter2
While IsMoving()
Wend

Rem 'dokładny obmiar y odtąd w dół ma byc wszedzie Y
Code "G0 Y" &YPos1 - 5
While IsMoving()
Wend
Code " G91"
Code "G31 Y+50"
While IsMoving()
Wend
Code " G90"
YPos3 = GetVar(2001)
Code "G0 Y" &YCenter
While IsMoving()
Wend
Rem
Code "G0 Y" &YPos2 + 5
While IsMoving()
Wend
Code " G91"
Code "G31 Y-50"
While IsMoving()
Wend
Code " G90"
YPos4 = GetVar(2001)

YCenter2 = (YPos3 + YPos4) / 2
Code "G0 Y" &YCenter2
While IsMoving ()
Wend




Code "F" &FeedCurrent 'przywrócić początkową wartość obrotów
End If


Autor tematu
routerr
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 3
Posty: 6
Rejestracja: 30 wrz 2012, 23:29
Lokalizacja: Gdańsk

#3

Post napisał: routerr » 20 lut 2015, 20:48

Czy to nie jest skrypt do mach-a?

Awatar użytkownika

andmar2005
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 2
Posty: 190
Rejestracja: 15 sie 2009, 08:55
Lokalizacja: kujawsko-pomorski
Kontakt:

#4

Post napisał: andmar2005 » 20 lut 2015, 21:10

no do macha - morze coś Cię nakieruje do rozwiązania problemu


Autor tematu
routerr
Nowy użytkownik, używaj wyszukiwarki
Nowy użytkownik, używaj wyszukiwarki
Posty w temacie: 3
Posty: 6
Rejestracja: 30 wrz 2012, 23:29
Lokalizacja: Gdańsk

#5

Post napisał: routerr » 20 lut 2015, 22:51

no męczę się z tym już od kilku dni
Zauważyłem też że jak wykonuję potem dalej program potrafi wywalić mi błąd że błędny parametr F ale niema gdzie i w jakiej linii jak wtedy roszę program ponownie to program zachowuje się prawidłowo do

G38.4 Z2 F#<spped_odjazd> ( G38.4 Z2 F20.0)

Po tej linii wszystkie G38 zwalniają do F20 mimo że mają inną deklarację :sad:

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „LinuxCNC (dawniej EMC2)”