Na wstępie przypomnę rysunek z pierwszej części:
A teraz trochę matematyki… łuki, cięciwy i takie tam… w każdym razie nam się przyda poniższy wzór:
gdzie:
ł – długość łuku, przy czym dla kąta Alfa długość ta jest równa odcinkowi a (patrz rys.)
α – kąt rozwarcia łuku (Alfa)
R – promień łuku
Z tego wynika:
Po przekształceniu i uproszczeniu:
Albo jeszcze inaczej, wyciągając pewne stałe:
, gdzie:
Dobrze. Mamy kąt i co dalej?
Jak łatwo zauważyć z rysunku, dla każdego punktu na powierzchni walcowej można utworzyć trójkąt prostokątny o przeciwprostokątnej R, dlatego też używając prostych równań trygonometrycznych możemy określić współrzędne w układzie kartezjańskim:
, gdzie
Należy zaznaczyć, że cały czas rozpatrujemy układ w którym osią główną powierzchni walcowej jest oś X, oraz że Y0,Z0 są współrzędnymi osi środkowej powierzchni walcowej.
Nadszedł czas na napisanie procedury, ale najpierw przypomnę kształt i podstawowe wymiary przykładowej litery:
Jeszcze małe wytłumaczenie:
W zasadzie należy używać parametrów Q z przedziału powyżej 1000, niższe są używane przez standardowe funkcje i cykle TNC. Parametr Q jest parametrem globalnym, jego deklaracja, bądź zmiana może wpłynąć na przebieg innych części programu.
Powyższa zasada nie tyczy się zastosowanych tu parametrów QL, są to, jak sama nazwa wskazuje, parametry lokalne i nie są dziedziczone poza obrębem danego programu.
W poniższym przykładzie zastosowałem funkcje pozwalające na skalowanie i pozycjonowanie litery, zasada jest banalnie prosta:
- Skalowanie odbywa się poprzez pomnożenie współrzędnej przez współczynnik, tu jest to parametr Q1008.
- Pozycjonowanie odbywa się poprzez dodanie wartości przesunięć do odpowiednich współrzędnych, oczywiście już po przeskalowaniu. W naszym przykładzie są to odpowiednio Q1006 dla współrzędnej X, oraz Q1007 dla współrzędnej Y.
Wysokości bezpieczne, pierwsza i druga, oraz głębokość skrawania podawane są w stosunku do powierzchni walca, program sam wylicza odpowiednie wartości w stosunku do zera układu, uwzględniając promień obrabianej powierzchni walcowej.
A teraz już długo wyczekiwany listing:
;--- parametry globalne
Q1000= ;promień walca
Q1001= ;bezpieczna wysokość
Q1002= ;głębokość skrawania
Q1003= ;posuw zagłębiania
Q1004= ;posuw roboczy
Q1005= ;druga bezpieczna wysokość
Q1006= ;X offset
Q1007= ;Y offset
Q1008= ;wielkość czcionki w mm
;--- przeliczenie parametrów podstawowych
QL100=Q1000+Q1002 ;promień na głębokości
QL101=Q1000+Q1001 ;bezpieczna wysokość do środka promienia
QL102=Q1000+Q1005 ;druga bezpieczna wysokość do środka promienia
Q2=(PI/180)*QL100
LBL "G"
;---punkt początkowy X=0.56, Y=1
QL1=(0.56*Q1008)+Q1006 ;X
QL2=QL100*(SIN(((1*Q1008)+Q1007)/Q2)) ;Y
L X+QL1 Y+QL2 R0 FMAX ;punkt początkowy
;---zjazd na głębokość
L Z+QL101 R0 FMAX
QL1=QL100*(COS(((1*Q1008)+Q1007)/Q2)) ;Z
L Z+QL1 R0 FQ1003 ;głębokość zależna od pozycji
;---poziomo do X=0.2
QL1=(0.2*Q1008)+Q1006
L X+QL1 Y+QL2 R0 FQ1004
;---łuk do X=0, Y=0.8
QL1=0 ;kąt początkowy
LBL 1
QL1=QL1+5 ;przyrost kąta
QL2=((0.2*Q1008)+Q1006)-(0.2*Q1008*SIN(QL1)) ;X
QL3=QL100*(SIN((((0.8*Q1008)+Q1007)+(0.2*Q1008*COS(QL1)))/Q2)) ;Y
QL4=QL100*(COS((((0.8*Q1008)+Q1007)+(0.2*Q1008*COS(QL1)))/Q2)) ;Z
L X+QL2 Y+QL3 Z+QL4 R0 FQ1004
CALL LBL 1 REP 17
;---pionowo do Y=0.2
QL1=(0.8*Q1008)+Q1007
LBL 2
QL1=QL1-(0.05*Q1008)
QL2=QL100*(SIN(QL1/Q2)) ;Y
QL3=QL100*(COS(QL1/Q2)) ;Z
L X+Q1006 Y+QL2 Z+QL3 R0 FQ1004
CALL LBL 2 REP 11
;---łuk do X=0.2, Y=0
QL1=0 ;kąt początkowy
LBL 3
QL1=QL1+5 ;przyrost kąta
QL2=((0.2*Q1008)+Q1006)-(0.2*Q1008*COS(QL1)) ;X
QL3=QL100*(SIN((((0.2*Q1008)+Q1007)-(0.2*Q1008*SIN(QL1)))/Q2)) ;Y
QL4=QL100*(COS((((0.2*Q1008)+Q1007)-(0.2*Q1008*SIN(QL1)))/Q2)) ;Z
L X+QL2 Y+QL3 Z+QL4 R0 FQ1004
CALL LBL 3 REP 17
;---poziomo do X=0.56
QL1=(0.56*Q1008)+Q1006 ;X
QL2=QL100*(SIN(Q1007/Q2)) ;Y
L X+QL1 Y+QL2 R0 FQ1004
;---pionowo do Y=0.56
QL1=Q1007
LBL 4
QL1=QL1+(0.056*Q1008)
QL2=(0.56*Q1008)+Q1006 ;X
QL3=QL100*(SIN(QL1/Q2)) ;Y
QL4=QL100*(COS(QL1/Q2)) ;Z
L X+QL2 Y+QL3 Z+QL4 R0 FQ1004
CALL LBL 4 REP 9
;---poziomo do X=0.4
QL1=(0.4*Q1008)+Q1006 ;X
L X+QL1 Y+QL3 R0 FQ1004
;---wycofanie na bezpieczną wysokość
L Z+QL102 R0 FMAX
LBL 0 ;koniec LBL „G”
Analizując powyższy przykład łatwo zauważyć, że jest on stosunkowo prosty i można w nim wyodrębnić trzy powtarzające się procedury: prosta pozioma, prosta pionowa, oraz łuk, który jest najbardziej skomplikowaną procedurą.
Dalsza analiza doprowadziłaby do stwierdzenia, że zastosowałem tu „kwadraturę koła” - składam wymagane łuki z kolejnych bardzo krótkich, prostych odcinków. Zastosowane uproszczenie podyktowane jest kompatybilnością z większością maszyn – niektóre, zwłaszcza starsze maszyny, nie pracują w 3D, lecz w 2.5D, przez co nie są zdolne do płynnego wykonania krzywych poza płaszczyznami podstawowymi, a nawet poza jedną, główną płaszczyzną roboczą.
W kolejnej części trzeba się będzie zabrać za poskładanie tego całego bałaganu do kupy, czyli czekają nas operacje na ciągach znaków, oraz poszukiwanie sposobu na dodanie znaków niestandardowych np.: polskich znaków diakrytycznych, znaków alfabety greckiego, czy znaków towarowych.
PS. W razie wątpliwości, czy pytań, zawsze można pisać.
Brak komentarzy:
Prześlij komentarz
Do "Januszy biznesu". Wszelkie komentarze noszące znamiona reklamy (link do strony firmowej, nazwa użytkownika będąca nazwą bądź adresem firmy itp.) będą niezwłocznie usuwane.
Bardzo mi przykro. Prośba nie poskutkowała. Wyłączam komentarze. Ewentualne pretensje kierować do "Januszy biznesu".
Uwaga: tylko uczestnik tego bloga może przesyłać komentarze.