Nie działająca kompensacja promienia freza

Dyskusje dotyczące programowania G-Code

Autor tematu
LABEL
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 52
Rejestracja: 03 maja 2013, 19:02
Lokalizacja: POLANDIA

Nie działająca kompensacja promienia freza

#1

Post napisał: LABEL » 01 wrz 2013, 21:42

Witam może ktoś pomoże napisałem program parametryczny na frezowanie łuków na promieniu koła i program działa dobrze ale gdy włączam blok N12 kompensację promienia wybija błąd (błędne dane ) parametry narzędzia podane , wielkość freza mieści się w konturze wiele prób negatywnie zakończonych i tak się zastanawiam czy program oparty na zasadzie skoków w ogóle może być kompensowany .Wyczerpałem literaturę instrukcji pronuma może ktoś to przerabiał czekam na opinię . Program poniżej:

%MPF16
(FREZOWANIE ŁUKÓW PO KOLE )
N1 G54 D200
N2 T1 D1
N3 M4
N4F100
N5 R1=PI/180*0 (KAT POCZATKOWY)
N6 R2=86.45 (PROMIEN OKRĘGU PODZIALOWA )
N7 R3=PI/180*27.692 (ODSTEP KATOWY )
N8 R4=13 (LICZBA ŁUKÓW )
N9 R5=0 (X SRODEK OKREGU)
N10 R6=0 (Y SRODEK OKREGU)
(przyporzadkowanie wartosci poczatkowych)
N12 G1 G42 G90 X120 Y0 F120 (DOJAZD)
N20 G1X=R2*COS(R1)+R5Y=R2*SIN(R1)+R6
(obliczenie i przyporzadkowanie do adresow osi)
N30R1=R1+R3
N32G17G90G2X=R2*COS(R1)+R5Y=R2*SIN(R1)+R6U100
N34 R1=R1+R3 R4=R4-1
N40 H3-32=R4=0
N42 G40 G1 X120 Y0
N50 M30


Jeżeli chcę pomóc to nie dopatruj się w tym intrygi ......Label .

Tagi:

Awatar użytkownika

silvesters
Specjalista poziom 1 (min. 100)
Specjalista poziom 1 (min. 100)
Posty w temacie: 1
Posty: 262
Rejestracja: 27 kwie 2008, 21:27
Lokalizacja: Z warsztatu

#2

Post napisał: silvesters » 02 wrz 2013, 06:58

Pronuma nie znam, ale możliwe że trzeba w linii z komendą G42 podać bezpośrednio numer korekcji promienia D. Drugą możliwością którą bym spróbował to obliczenia z linii N20 wyciągnął bym jako dwie osobne linie, a gotowe wyliczone parametry wstawił bym do X i Y.
A jak to by nie pomogło to osobiście zamiast obliczeń, wstawił bym dane liczbowe żeby zobaczyć czy maszyna ma problem z samym programem, nawet gdyby był on na liczbach, a później stopniowo dodawał bym obliczenia. Lecz mogę się mylić, tak jak pisałem znam iso, ale pronuma nigdy nie używałem.


Autor tematu
LABEL
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 52
Rejestracja: 03 maja 2013, 19:02
Lokalizacja: POLANDIA

#3

Post napisał: LABEL » 02 wrz 2013, 07:36

Dziękuję za rzeczową odpowiedź już sprawdzałem w linii z komendą G42 podać bezpośrednio numer korekcji promienia D i bez zmian . Obliczenia z linii N20 to blok zawierający ruch ale spróbuję go podzielić .
Dodam że do tej pory kompensację używałem w programach bez skoków i tylko liczbowych gdzie w treści nie było obliczeń i wszystko działało .
Spróbuję jeszcze dodać G4 F2 żeby sterownik miał więcej czasu na przeprowadzenie obliczeń już mu to kiedyś pomagało .
Chociaż jeszcze mnie zastanawia bo programy liczbowe mają zamknięty kontur i sterownik zaczytuje się dalej niż jeden blok szczególnie istotne to jest przy kompensacji gdzie obliczenia kompensacji są oparte na połączeniu dwóch bloków a w tym programie sterownik "widzi" tylko jeden blok i dopiero po jego wykonaniu odczytuje następny .
Jeżeli chcę pomóc to nie dopatruj się w tym intrygi ......Label .


GumiRobot
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 685
Rejestracja: 21 mar 2005, 18:51
Lokalizacja: Trójmiasto

#4

Post napisał: GumiRobot » 02 wrz 2013, 09:27

A gdzie się znajduje narzędzie przed ruchem z linii N12, warto by je ustawić wcześniej ruchem ustawczym G0 na pozycji umożliwiającej wejście na tor skompensowany.


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

#5

Post napisał: PiRo_man » 02 wrz 2013, 11:13

Na początek jedna uwaga:

Kod: Zaznacz cały

N5 R1=PI/180*0 (KAT POCZATKOWY) 
Równie dobrze możesz pod R1 od razu wpisać 0, bo i tak niezależnie od tego co jest wcześniej, jeśli przemnożysz przez 0, i tak wyjdzie 0.

Druga rzecz to jak wywołujesz tą makrodefinicję? Jako podprogram jakiegoś głównego programu?

W linii 12 wywala Ci błąd, ale to nie znaczy, że tej linii on dotyczy, może to być kolejna, lub któraś po niej. Moją uwagę zwróciły obliczenia, czy aby na pewno po określeniu osi stawia się znak "="? Na FANUCu wszelkie obliczenia zawiera się w nawiasach kwadratowych"[" i "]".

Ponownie nawiążę do FANUCa na którym korzystam z makrodefinicji. Da się wykonywać programy parametryczne z użyciem kompensacji narzędzia. U siebie napisałem już wiele makrodefinicji korzystających ze zmiennych, z użyciem kompensacji, i wszystko działa. Poza tym piszesz, że jeśli wpiszesz współrzędne na stałe, to kompensacja działa. To jest maszyna, robi to, co jej napiszesz (nie myśli tylko robi). Dla maszyny to bez znaczenia czy dostaje stałą współrzędną, czy wynik jakichś obliczeń.

Na razie jadę do Gliwic, także na razie nie mam czasu, jak przyjadę to napiszę Ci jakiś przykładowy program parametryczny.

Pozdrawiam
Ostatnio zmieniony 02 wrz 2013, 16:25 przez PiRo_man, łącznie zmieniany 1 raz.


GumiRobot
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 3
Posty: 685
Rejestracja: 21 mar 2005, 18:51
Lokalizacja: Trójmiasto

#6

Post napisał: GumiRobot » 02 wrz 2013, 11:52

Jeszcze jedno, w dialekcie PRONUM'a winno być:

N20 G1 XR2*COS(R1)+R5 YR2*SIN(R1)+R6

a jest

N20 G1 X=R2*COS(R1)+R5 Y=R2*SIN(R1)+R6


Autor tematu
LABEL
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 52
Rejestracja: 03 maja 2013, 19:02
Lokalizacja: POLANDIA

#7

Post napisał: LABEL » 02 wrz 2013, 16:18

Dodałem linijkę dojazdu N11 i zmieniłem na dialog pronuma (był trochę z sinumerika ) ale to nadal nie działa oczywiście wyłączając G42 wszystko śmiga .Za R1 można podać 0 a R5 i R6 chyba też na chwilę obecną niepotrzebne . Po sprawdzeniu ciekawe bez R5 i R6 idzie dobrze
podstawiając w obliczeniach za R1 od razu zero wybija błąd tak że tylko R1=0 jeszcze sprawdzę .
Program ma służyć do wywoływania bezpośredniego jak teraz i po modyfikacji jako podprogram .Na razie jest testowany jego konstrukcja jest prosta i zmierza jeszcze do uproszczeń . Dalsza jego budowa nie będzie miała sensu jeżeli kompensacja nie zadziała . W instrukcji pronuma nie podano programu z obliczeniami i kompensacją jest tylko przykład liczbowy . Z nawiasami też już było sprawdzane bo pronum nawiasów używa .
A więc na razie idziemy w kierunku że program ma błąd w zapisie .
Dzisiaj komputer z którego piszę idzie do przeglądu więc będę odcięty do jutra .


%MPF16
(FREZOWANIE ŁUKÓW PO KOLE )
N1 G54 D200
N2 T1 D1
N3 M4
N4F100
N5 R1=PI/180*0 (KAT POCZATKOWY)
N6 R2=86.45 (PROMIEN OKRĘGU PODZIALOWA )
N7 R3=PI/180*27.692 (ODSTEP KATOWY )
N8 R4=13 (LICZBA ŁUKÓW )
N9 R5=0 (X SRODEK OKREGU)
N10 R6=0 (Y SRODEK OKREGU)
(przyporzadkowanie wartosci poczatkowych)
N11 G0 X130 Y 0
N12 G1 G42 G90 X120 Y0 F120 (DOJAZD)
N20 G1XR2*COS(R1)+R5YR2*SIN(R1)+R6
(obliczenie i przyporzadkowanie do adresow osi)
N30R1=R1+R3
N32G17G90G2XR2*COS(R1)+R5YR2*SIN(R1)+R6U100
N34 R1=R1+R3 R4=R4-1
N40 H3-32=R4=0
N42 G40 G1 X120 Y0
N50 M30

_________________
Jeżeli chcę pomóc to nie dopatruj się w tym intrygi ......Label .


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

#8

Post napisał: PiRo_man » 02 wrz 2013, 17:04

No, mam teraz trochę więcej czasu, i na spokojnie prześledziłem jeszcze raz Twój kod, i muszę stwierdzić, że nie ma prawa Ci to działać.
LABEL pisze:N11 G0 X130 Y 0
W tej linii ustawiasz się na określony punkt.
LABEL pisze:N12 G1 G42 G90 X120 Y0 F120 (DOJAZD)
Dojeżdżasz z korekcją promienia do X120, czyli o 10 mniej niż pozycja początkowa (zakładam, że frezujesz to frezem o średnicy mniejszej niż 20).
LABEL pisze:N20 G1XR2*COS(R1)+R5YR2*SIN(R1)+R6
Tu zaś, z moich obliczeń wynika, że narzędziem przesuwasz się w tym samym kierunku co poprzednio (X wynosi w tym wypadku 86.45*1+0 czyli 86.45, Y natomiast 86.45*0+0, czyli 0.

Biorąc pod uwagę fakt, że narzędzie cały czas (podwójnie) porusza się w osi X, nie zmieniając przy tym współrzędnej Y, maszyna wywala błąd, bo gubi w tym momencie kontur po którym ma się poruszać, w tym przypadku staje się nie jasne czy jest to kontur zewnętrzny czy wewnętrzny.
LABEL pisze:N32G17G90G2XR2*COS(R1)+R5YR2*SIN(R1)+R6U100
Co to jest to U100 na końcu tej linii? Promień okręgu? Bo jeśli tak, to chyba nie powinien się różnić od R2, jeśli nie, to brakuje Ci tu przy interpolacji kołowej właśnie promienia łuku jaki chcesz wykonać, lub punktów środka okręgu.
LABEL pisze:N40 H3-32=R4=0
Tego też za cholerę nie potrafię zrozumieć.

Tak w ogóle to programy parametryczne powinny wyglądać trochę inaczej, ich budowa powinna wyglądać mniej więcej tak:

Kod: Zaznacz cały

G00 X#1 Y#2 (NAJAZD NA JAKIES PUNKTY POCZATKOWE) 
G01 Z-#3 F#5 (ZEJSCIE W OSI Z NA ZADANA WYSOKOSC) 
G42 Dxx X#1 Y#2 F#5 (PO OBLICZENIACH PRZESUNIECIE NARZEDZIA NA PUNKTY POCZATKOWE OKREGU) 
WHILE [#10 LT #11] DO1 (WYKONANIE PETLI FREZOWANIA PO OKREGU #10 - AKTUALNY KAT, #11 - KAT KONCOWY) 
(BTW: TA PETLE MOZNA WYKONAC NA DWA SPOSOBY) 
(...)(TU ZWIEKSZYC KAT I WYKONAC STOSOWNE OBLICZENIA PUNKTU KONCOWEGO LUKU) 
G02 X#1 Y#2 R#4 F#5 (PRZESUNIECIE NARZEDZIA NA PUNKTY KONCOWE LUKU) 
END1 (ZAKONCZYC PETLE ZE SPRAWDZENIEM WARUNKU WYKONANIA, CZYLI CZY AKTUALNY KAT JEST ROWNY KATOWI KONCOWEMU WYKONYWANEGO LUKU) 
G01 Z#3 F#5 (ODJAZD OD MATERIALU NA BEZPIECZNA WYSOKOSC) 
(...)(POZOSTALA CZESC KODU - OPCJONALNIE)
Zamiast Twoich zmiennych R(...) skorzystałem z oznaczenia zmiennych za pomocą #, moim zdaniem są trochę bardziej widoczne w kodzie, ale idea pozostała ta sama.


Autor tematu
LABEL
Sympatyk forum poziom 2 (min. 50)
Sympatyk forum poziom 2 (min. 50)
Posty w temacie: 5
Posty: 52
Rejestracja: 03 maja 2013, 19:02
Lokalizacja: POLANDIA

#9

Post napisał: LABEL » 03 wrz 2013, 20:26

Jestem ,

"LABEL napisał/a:
N40 H3-32=R4=0
Tego też za cholerę nie potrafię zrozumieć." Już tłumaczę jest to skok warunkowy wstecz R4>0 wg dialektu pronuma .

Tak zakładamy frez 10 mm.


"LABEL napisał/a:
N20 G1XR2*COS(R1)+R5YR2*SIN(R1)+R6
Tu zaś, z moich obliczeń wynika, że narzędziem przesuwasz się w tym samym kierunku co poprzednio (X wynosi w tym wypadku 86.45*1+0 czyli 86.45, Y natomiast 86.45*0+0, czyli 0.



Biorąc pod uwagę fakt, że narzędzie cały czas (podwójnie) porusza się w osi X, nie zmieniając przy tym współrzędnej Y, maszyna wywala błąd, bo gubi w tym momencie kontur po którym ma się poruszać, w tym przypadku staje się nie jasne czy jest to kontur zewnętrzny czy wewnętrzny. "

Wygląda na błąd to ja podstawiłem za R1=0 a w wersji oryginalnej tego programu było podstawione 10 stopni ( dzieło inżynierów sinumerika )podstawię 10 stopni i sprawdzę ponownie . Chociaż trochę dziwne że bez kompensacji działa .A po skoku już R1 nie jest 0 tylko R3 dodanie o kąt N30 R1=R1+R3



Poniżej wersja oryginalna wg dialektu sinumerika:

"
Dosuwanie do punktów na łuku koła:
Dane: kąt początkowy: 30° w R1
promień okręgu: 32 mm w R2
odstęp pozycji: 10° w R3
liczba punktów: 11 w R4
położenie środka okręgu w Z 50 mm w R5
położenie środka okręgu w X: 20 mm w R6
Rysunek 8-47 Dosuwanie do punktów na łuku koła
Rysunek 8-42 Dosuwanie do punktów na fragmencie okręgu
Przykład programowania
N10 R1=30 R2=32 R3=10 R4=11 R5=50 R6=20
;przyporządkowanie wartości początkowych
N20 MA1: G0 Z=R2*COS (R1)+R5 X=R2*SIN(R1)+R6
;obliczenie i przyporządkowanie do adresów osi
N30 R1=R1+R3 R4=R4-1
N40 IF R4>0 GOTOB MA1
N50 M2

Objaśnienie
W bloku N10 warunki początkowe zostają przyporządkowane odpowiednim parametrom
obliczeniowym. W N20 następuje obliczenie współrzędnych w X i Z i wykonanie.
W bloku N30 następuje zwiększenie R1 o kąt odstępu R3; R4 ulega zmniejszeniu
o 1. Jeżeli R4 > 0, następuje ponowne wykonanie N20, w przeciwnym przypadku N50
z zakończeniem programu.
"

U100 (znów dialekt pronuma ) to jeden z 13 promieni z połączeniami na promieniu R2 .

wczoraj trochę po przestawiałem parametry ,nawiasy i wychodzi że maszyna nie chce kontynuować kompensacji po skoku poniżej program na tylko dwa łuki ale z wyłączonym skokiem i taki kompensuje .
%MPF16
(FREZOWANIE LUKOW PO KOLE )
N1 G54 D200
N2 T1 D01
N3 M4
N4F100
N5 R1=PI/180*0 (KAT POCZATKOWY)
N6 R2=86 (PROMIEN OKRU PODZIALOWA )
N7 R3=(PI/180*R7) (ODSTEP KATOWY )
N8 R4=13 (LICZBA ŁUKÓW )
N9 (X SRODEK OKREGU)
N10 R6=0 (Y SRODEK OKREGU)
N11R7=(360/R4)
(przyporzadkowanie wartosci poczatkowych)
N12G0G90X150Y20
N14G1G42D01X120Y0F120 (DOJAZD)
N20G1XR2*COSR1 YR2*SINR1
N22
(obliczenie i przyporzadkowanie do adresow osi)
N30 R1=R1+R3
N31
N32G2XR2*COSR3 YR2*SINR3 U30
N33R5=R3+R3 R4=R4-1
N34G2XR2*COSR5YR2*SINR5U30
N36R3=R3+R3
N40 (H3-31=R4=0)
N42 G1G40 X120 Y0
N50 M30
Jeżeli chcę pomóc to nie dopatruj się w tym intrygi ......Label .


PiRo_man
Specjalista poziom 2 (min. 300)
Specjalista poziom 2 (min. 300)
Posty w temacie: 4
Posty: 329
Rejestracja: 23 sie 2010, 21:32
Lokalizacja: Świerklany

#10

Post napisał: PiRo_man » 03 wrz 2013, 23:04

Dobra, zacznijmy może od podstawy, bo odnoszę wrażenie, że nie za bardzo ogarniasz programy parametryczne, i rzucamy się wszyscy z motyką na słońce, a nie wiadomo w ogóle czy Twoja maszyna uwzględnia (jak sam wcześniej zauważyłeś) parametry podane jako punkty ruchu w poszczególnych osiach. Dla sprawdzenia napisz sobie jakiś prosty (BARDZO PROSTY!) kod, z parametrem, w tablicy narzędzi ustaw promień freza na pełną miarę (np. 10 mm) żeby się łatwiej liczyło, i sprawdź czy maszyna poprawnie wykona kod.

Przykład programu na podstawie tego co napisałeś:

Kod: Zaznacz cały

%MPF16 
(SAMPLE) 
N1 G54 D200
N2 T1 D01 
N3 M4 
N4 F100 
N5 R1=20
N12 G0 G90 X0 Y0
N14 G1 G41 D01 XR1 Y0 F120
N15 G1 XR1 YR1
N16 G1 X-R1 YR1
N17 G1 X-R1 Y-R1
N18 G1 XR1 Y-R1
N19 G1 XR1 Y0
N42 G1G40 X0 Y0 
N50 M30
W powyższym przykładzie narzędzie powinno (na współrzędnych absolutnych) znajdować się podczas tego objazdu profilu wewnętrznego odpowiednia na punktach (zaczynając od punktu dojazdy z korekcją - dla freza o promieniu 10 mm):

Kod: Zaznacz cały

N14 X10 Y0
N15 X10 Y10
N16 X-10 Y10
N17 X-10 Y-10
N18 X10 Y-10
N19 X10 Y0
N42 X0 Y0

Dwie uwagi, pierwsza, to co robi D200 w linii N1, skoro w linii N2 zmieniasz go na D01 (pomijam, że przy dojeździe z kompensacją (N14) ponownie ustawiasz parametr D...) Nie potrzebnie mieszasz sobie w programie.

Druga, to nie wiem jak pronum, ale mi to nie pasuje, że komentarze w programie są w okrągłych nawiasach, i w takiego samego typu nawiasach są podane parametry wg. których maszyna ma liczyć wartości sinusa i cosinusa.

Sprawdź i daj znać czy przeszło.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „G-CODE - programowanie”