CNC Edward Dawidowicz
wstęp do programowania maszyn
      biuro@eande.com.pl




    CNC programowanie parametryczne cz.4

    temat: balustrada schodów

-------------------------------------------------------------------------------------------------------------------------

    Kolejnym przykładem samodzielnego programowania maszyny
    jest realizacja wypełnienia balustrady schodów.

    Zgodnie z oczekiwaniem klienta, wypełnienie miało zawierać motywy roślinne.
    Krawędzie konturów należało zfazować, a na płaszczyznach nanieść ryty.
    Oczywiście, te wymagania dotyczyły obydwu stron wypełnienia.
    Po zaakceptowaniu projektu, należało zabrać się do stworzenia programów realizujących dwustronną obróbkę.
    Najważniejszym zadaniem było stworzenie programów do dwustronnej obróbki krzywulców.
    Balustrada instalowana była na schodach z giętymi policzkami.
    Podobnie została zaprojektowana balustrada otworu, a wypełnienie stanowiło ciągłą zabudowę.
    Łączna długość wynosiła 10.5m, co dawało ok. 15m powierzchni. W tym 70% stanowiły krzywulce.
    .

    Na zrzucie ekranu pokazuję widok z góry i rozwinęcie widoku z boku.
    Producenci schodów wykorzystujący do ich wykonania maszyn CNC,
    z łatwością doliczą się 12 elementów wypełnień - krzywulców i 5 elementów płaskich.



    Do takiej konstrukcji należało stworzyć projekt wykonawczy.
    W tym miejscu muszę powiedzieć, że zaplanowałem wykonanie tych elementów
    jako obróbkę kontórów i rytów 3 - osiową dla elementów płaskichi i 5 - osiową dla krzywulców.
    Projekt musiał zatem zawierać linie - tory narzędzi.

    Na zdjęciach obróbka fazowań krawędzi.
    Widać wyrażnie, że narzędzie ustawione jest prostopadle do obrabianej powierzchni.

    Podobnie wygląda obróbka rytów.

    Kolejna obróbka - wycinanie konturu.

    Obróbka powierzchni zewnętrznej krzywulców, wykonywana była po obróbce strony wewnętrznej.


    Kolejności operacji:

    1. strona wewnętrzna

      - obróbka wewnętrznej powierzchni walca
      - wykonanie fazek konturu
      - wykonanie rytów

    2. strona zewnętrzna
      - obróbka zewnętrznej powierzchni walca
      - wykonanie fazek konturu
      - wykonanie rytów
      - odcięcie konturu


    Na zdjęciach poniżej pokazane zostały roboczo zestawione elementy wypełnienia balustrady otworu.

    Oglądając te zdjęcia zastanawiacie się pewnie, gdzie jest tum miejsce na parametryzację?
    O ile elementy płaskie (5szt) jest to prosta 3-osiowa obróbka, gdzie jedynym utrudnieniem jest "wcelowanie"
    z obrobką dwustronną i taki sposób mocowania, aby każdy element wykonany był kompletnie na maszynie,
    o tyle dwustronne obrobienie krzywulców nafaszerowane było parametrami.

    Pokrótce.
    Obróbka 5-osiowa, zmusza programistę do takiego projektowania toru narzędzia, aby nie mie był on inaczej zinterpretowany
    przez sterowanie maszyny, niż planował to programista.
    Może to zdanie brzmi enigmatycznie, dlatego porównam to z przykladami z życia.

    Nawigacja GPS nie zawsze zaproponuje trasę jaką sobie wyobrażaliśmy. Daje nam jednak opcje do wyboru.
    Możemy wskazać też dodatkowe punkty na trasie, które doprecyzują nasze oczekiwania.

    Samoloty do USA, czyli w naszej świadomości kraju zachodniego, lećą na połnoć...

    Podobnie jest ze sterownikem maszyny CNC.
    Obmyślony przez nas tor jazdy narzędzia, może całkowicie rozminąć się z torem jazdy zrealizowanym przez maszynę.
    Jeśli zaplanujemy tor łączący punkty leżące po dwóch stronach powierzchni walcowej (kąt -45 do 45), jako ruch po odcinku
    ze zmianą kąta osi B, możemy być bardzo zaskoczeni tym, że maszyna osiągnie ten punkt ze stałym kątem osi B,
    a wrzecion oobróci się wokół osi C o 180 stopni.

    Maszyna jest "leniwa", dojedzie tam najkrótszą drogą, oględnie mówiąc, minimalizując ilość ruchów.
    Jest szansa, że do określonego celu dojedzie, ale może narozrabiać, i to mocno.
    Aby temu zapobiec, musimy na planowanym torze jazdy narzędzia wskazać jej punkty pośrednie - jak w nawigacji.
    Sciślej mówiąc musimy podzielić tor, na odcinki, ze sprecyzowanymi położeniami na wszystkich 5 osiach.


    Zaplanowana obróbka, musi zmieścić się na ścianie bocznej walca, obraż oczywiśćie będzie inny na stronie wewnętrznej
    i zewnętrznej, ponieważ rozwinięcie ścianki wewnętrznej jest krótsze od rozwinięcia ścianki zewnetrznej.
    Szerokość projektowanej powierzchni grawerowanej, powinna być dopasowana do jednej ze ścian - wybór należy do projektanta.
    Obraz na drugiej ścianie będzie zwężony, lub rozszerzony w zależności od wybranej opcji.
    Można oczywiście zastosować prawo środka i zrobić projekt grawerki o szerokości będącej średnią
    długości rozwinięcia wewnętrznego i zewnętrznego.
    Wtedy na ściance wewnętrznej ulegnie on zwężeniu a na zewnętrznej rozszerzeniu.

    Powyższe informacje są dość oczywiste, niemniej przed podjęciem pracy, warto to przeanalizować
    ponieważ deformacje kształtów na krzywulcach o małych promieniach i grubych ściankach,
    mogą być niemiłym zaskoczeniem.

    Przedstawię logikę tworzenia grawerki na powierzchniach nie będąacych płaszczyzną.

    Tworzymy projekt grawerki. umieszcająć go w układzie wspólrzędnych tak, aby pozioma oś symetrii
    leżała na osi X układu.
    Generujemy kod maszynowy do jej realizacji w obróbce 3 - osiowej.
    Pamiętajcie o "podziale" linii rysunkowych na odcinki!
    Na szybko, wystarczy dokonać exportu do pliku .wmf, importu tego pliku do ACAD (ZWCAD).
    Należy przeskalować zaimportoany plik.
    Ten sposób zamienia wszelkie łuki na odcinki, nie dzieli jednak odcinków na krótsze.
    Oto fragment takiego programu:

    G0 X459.34 Y245.49 Z=GL
    G1 X459.34 Y245.49
    G1 X457.05 Y241.60
    G1 X454.53 Y237.70
    G1 X452.00 Y234.03
    G1 X449.25 Y230.13
    G1 X446.50 Y226.46


    Aby nałożyć tory jazdy na powierzchnię walca,(walec leży równolegledo osi X)
    musimy współrzędne Y i Z"dopasować" do powiechni walca.

    Zależności możecie odczytać z rysunku.

    I co dalej?
    No cóż, najprościej przeliczyć to przy użyciu kalkulatora...
    Nie polecam.
    Lepiej ten zmarnowany czas poświęcić na coś innego.
    Można taki kod wkleić do arkusza kalkulacyjnego, używając fukcji arkuszowych wyodrębnić
    interesujące nas dane, przeliczyć, przeliczone połączyć w jeden tekst, skopiować gotowy program.
    Lepiej, ale...

    Polecam każdemu, kto planuje programować maszyny CNC, zapoznanie się z programowaniem
    w języku Visual Basic for Applications (VBA). Jedna z wersji jest dostępna w pakiecie Microsoft Office.
    Nie proponuję tworzenia bardzo skomplikowanych rozwiązań.
    Spróbujcie stworzyć prosty program (makro), odczytujący wartość z komórki arkusza,
    przeliczcie ja w dowolny sposób, i zapiszcie wynik w innej komórce.
    Na początek warto jest skorzystać z pomocy - rejestracji swoich dzałań na arkuszu.
    Przewagą tak stworzonego makra nad działaniem za pomocą funkji arkuszowych, jest możliwość stosowania pętli.
    Jest wiele informacji nt VBA, jednak to co nam jest potrzebne, jest stosunkowo małym wycinkiem
    możliwości programowania w tym jezyku, i tych najprostrzych rozwiązań powinniście nauczyć się sami.

    Namawiam Was do VBA, ponieważ ma on bardzo wiele wspólnego z językami wyższego rzedu stosowanymi
    do programowania maszyn CNC.

    Poniżej zamieściłem dwa fragmenty programów.

    1. Makra obliczające elementy składowe prostego skrzydła

    WYS_SKRZ = 2000 ' WYSOKOSC SKRZYDŁA
    SZER_SKRZ = 900 ' SZEROKOSC SKRZYDŁA
    SZER_PIO_L = 135 ' SZEROKOSC RAMIAKA PIONOWEGO LEWEGO
    SZER_PIO_P = 135 'SZEROKOSC RAMIAKA PIONOWEGO PRAWEGO
    SZER_DOL = 160 'SZEROKOSC RAMIAKA DOLNEGO
    SZER_GOR = 135 'SZEROKOSC RAMIAKA GORNEGO
    '....
    DLUG_PIO = WYS_SKRZ
    DLUG_RAM_POZ = SZER_SKRZ - SZER_PIO_L - SZER_PIO_P + 2 * PROFIL
    '
    SZER_PLYC = SZER_SKRZ - SZER_PIO_L - SZER_PIO_P ' PŁYCINA, WYMIAR W SWIETLE
    WYS_PLYC = WYS_SKRZ - SZER_GOR - SZER_DOL ' PŁYCINA, WYMIAR W SWIETLE
    '....

    2. Fragment programu CNC obliczający elementy składowe prostego skrzydła

    L WYS_SKRZ = 2000 ; WYSOKOSC SKRZYDŁA
    L SZER_SKRZ = 900 ; SZEROKOSC SKRZYDŁA
    L SZER_PIO_L = 135 ; SZEROKOSC RAMIAKA PIONOWEGO LEWEGO
    L SZER_PIO_P = 135 ; SZEROKOSC RAMIAKA PIONOWEGO PRAWEGO
    L SZER_DOL = 160 ; SZEROKOSC RAMIAKA DOLNEGO
    L SZER_GOR = 135 ; SZEROKOSC RAMIAKA GORNEGO
    ;.........
    L DLUG_PIO =WYS_SKRZ ; DLUGOŚĆ RAMIAKÓW PIONOWYCH
    L DLUG_RAM_POZ =SZER_SKRZ-SZER_PIO_L-SZER_PIO_P+2*PROFIL ; DLUGOŚĆ RAMIAKÓW POZIOMYCH
    ; .....
    L SZER_PLYC =SZER_SKRZ-SZER_PIO_L-SZER_PIO_P ; PŁYCINA, WYMIAR W SWIETLE
    L DLUG_PLYC =WYS_SKRZ-SZER_GOR-SZER_DOL ; PŁYCINA, WYMIAR W SWIETLE
    ;.....
    Zwróćcie uwagę na składni tych programow.
    Różnią sie one znakiem oddzielającum komentarz: apostrof - w makrze, srednik w programie cnc.
    W programie cnc, zmienne muszą być poprzedzone literą > L <, to wszystko.

    Opisane powyżej fragmenty, oczywiście z wieloma innymi obliczeniami można zastosować w praktyce
    tworząc dokumentację wykonawczą drzwi, oraz wycinać elementy drzwi na CNC.

    Wróćmy jednak do balustrady.

    Za pomocą makra VBA zmieniłem kod obróbki naszych rytów 2D na obróbkę 3D.
    Oczywiście można obliczyć wartości katów i położenia narzędzia, i takie wartości wpisać do kodu.
    Ja w tym przypadku wybrałem opcję, w którj maszyna w trakcie realizacji, sama dolicza sie
    właściwych paramaerów.

    W dołączonym fragmencie ( uwaga: pojedyncze bloki są tak długie, że musiałem rozbić je na trzy linie)
    widać początkowe X,Y. Wartość X nie zmieniona, Wartość Y przeliczana przez maszynę.
    Wyglada to mało przyjaźnie, ale taki zapis pozwolił mi na wykorzystanie tego samego kodu do obróbki
    obustronnej (parametr LUSTRO), odpowiednie PREZLICZENIE KĄTA, PROMIENI ROBOCZYCH, PROMIENI BEZPIECZNYCH,
    pozwala na zastosowanie tego kodu dla płaszczyzn walcowych o roznych wymiarach.

    W programie głownym definiujemy wymiary " wycinka rury", a maszyna sama naloży nasz rysunek na jej powierzhnię.


    G03D X= 459.34 Y=LUSTRO*SIN( 245.49*PRZ_KATA)*PROM_BEZP
    H=OS_Z-LUSTRO*COS(245.49*PRZ_KATA)*PROM_BEZP
    Q =KAT R = 245.49*PRZ_KATA ;-----------Z BEZP WEJSCIE


    G13D X= 459.34 Y=LUSTRO*SIN( 245.49*PRZ_KATA)*PROM_ROB
    H=OS_Z-LUSTRO*COS( 245.49*PRZ_KATA)*PROM_ROB
    Q =KAT R = 245.49*PRZ_KATA ;-----------Z BEZP WEJSCIE


    G13D X= 457.05 Y=LUSTRO*SIN( 241.6*PRZ_KATA)*PROM_ROB
    H=OS_Z-LUSTRO*COS( 241.6*PRZ_KATA)*PROM_ROB
    Q =KAT R = 241.6*PRZ_KATA


    G13D X= 454.53 Y=LUSTRO*SIN( 237.7*PRZ_KATA)*PROM_ROB
    H=OS_Z-LUSTRO*COS( 237.7*PRZ_KATA)*PROM_ROB
    Q =KAT R = 237.7*PRZ_KATA


    G13D X= 452 Y=LUSTRO*SIN( 234.03*PRZ_KATA)*PROM_ROB
    H=OS_Z-LUSTRO*COS( 234.03*PRZ_KATA)*PROM_ROB
    Q =KAT R = 234.03*PRZ_KATA


    G13D X= 449.25 Y=LUSTRO*SIN( 230.13*PRZ_KATA)*PROM_ROB
    H=OS_Z-LUSTRO*COS( 230.13*PRZ_KATA)*PROM_ROB
    Q =KAT R = 230.13*PRZ_KATA


    G13D X= 446.5 Y=LUSTRO*SIN( 226.46*PRZ_KATA)*PROM_ROB
    H=OS_Z-LUSTRO*COS( 226.46*PRZ_KATA)*PROM_ROB
    Q =KAT R = 226.46*PRZ_KATA


    UWAGA: przedstawiony kod realizowany jest przez maszyny SCM,
    gdzie kąt Q jest kątem w osi Z, R- kąt w osi X, H - wysokość od stołu maszyny.
    Inne sterowania wymagają podania kątów B,C i wysokości Z.



    Bardzo trudno jest w paru zdaniach opisać całość problemu, ale wierzę, że wnikliwi czytelnicy
    odnajdą tu wskazówki, które ułatwią im opanowanie tego typu pracy.


    Posumowując dodam tylko, że obróbka na maszynie tych elementów zajęła ok. 20 godzin pracy.
    Praktycy stwierdzą, że w tym czasie można co najwyżej obrobić powierzchnie krzywulców.
    No cóż, moje krzywulce wangowe obrabiane są 4-8 razy szybciej,
    niż te, wycinane min. z programu COMPASS.
    Nie odbywa to się wcale przez bardziej fosowną obróbkę, a jedynie dzięki wyeliminowaniu zbędnych przejazdów maszyny.




      Powodzenia w poszukiwaniu własnych rozwiązań.