Strona główna ASTOR
Automatyka w praktyce

Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC – obsługa G-Code
Kurs programowania w Codesys odc. 18

Kontakt w sprawie artykułu: Mateusz Pytel - 2024-01-03

Z tego artykułu dowiesz się:

  • czym jest CNC oraz G-Code,
  • jak stworzyć program CNC w Codesys,
  • jak programować CNC z użyciem Table Editor.

CNC, czyli Komputerowe Sterowanie Numeryczne, to zaawansowana technologia używana w przemyśle obróbki materiałów, która umożliwia precyzyjne sterowanie ruchem narzędzi w maszynach CNC przy użyciu komputera. CNC jest powszechnie stosowane w różnych dziedzinach, takich jak obróbka metali, drewna, tworzyw sztucznych i kamienia.

Kurs programowania w Codesys

Część I – Podstawowe funkcjonalności środowiska Codesys

1. Pierwsze kroki w Codesys. Jak stworzyć program?
2. Pierwsze podłączenie i przygotowanie Codesys do pracy ze sterownikiem PLC.
3. Język drabinkowy (LD).
4. Typy danych w Codesys, rodzaje zmiennych, sposoby ich tworzenia.
5. Język schematów blokowych (FBD).
6. Tworzenie podstawowej wizualizacji HMI.
7. Język strukturalny (ST).
8. Diagnostyka w Codesys – jak sprawdzać działanie oprogramowania i sterownika?
9. Język bloków funkcyjnych (CFC).
10. Funkcja, blok funkcyjny, program – zmodyfikuj program w Codesys dla lepszej funkcjonalności.

Część II – Zaawansowane funkcje i możliwości środowiska Codesys

11. Komunikacja MQTT – jak skonfigurować w Codesys?
12. Komunikacja EtherCAT – konfiguracja i przykładowa aplikacja.
13. Softmotion – synchronizacja serwonapędów przy pomocy sterownika PLC.
14. Komunikacja Modbus RTU i TCP/IP w środowisku Codesys.
15. Tworzenie projektów w Codesys ze sterownikami bezpieczeństwa Safety: architektura systemu bezpieczeństwa.
16. Programowanie sterownika bezpieczeństwa w Codesys.
17. Integracja sterownika PLC z systemem SCADA w Codesys.
18. Konfiguracja maszyny CNC z wykorzystaniem sterownika PLC – obsługa G-Code.

Dodatkowe materiały i lekcje dla kursantów:

1. Jak stworzyć wirtualny serwonapęd w Codesys? Instrukcja krok po kroku.
2. Przykładowa aplikacja Codesys w języku ST i LD: napełnianie i opróżnianie zbiorników wraz z alarmowaniem.

W systemie CNC kluczową rolę pełni sterownik, który jest jednostką sterującą. W sterowniku znajduje się program, który zawiera sekwencję instrukcji dotyczących wykonywanych operacji. Program jest zapisany w specjalnym formacie, najczęściej w postaci G-Code, który jest standardowym językiem zapisu poleceń dla maszyn CNC.

G-Code określa wszystkie niezbędne parametry do wykonania danej operacji, takie jak trajektorie narzędzia, prędkość ruchu, głębokość cięcia, rodzaj narzędzia i wiele innych. Sterownik przetwarza te instrukcje i wysyła odpowiednie sygnały sterujące do osi maszyny CNC, które kontrolują ruch narzędzia w trzech wymiarach (x, y, z) oraz, w przypadku maszyn wieloosiowych, także w innych osiach.

Zastosowanie technologii CNC pozwala osiągnąć wysoką precyzję, powtarzalność i efektywność w procesach obróbki. Dzięki automatyzacji i programowalności, maszyny CNC umożliwiają produkcję elementów o skomplikowanych kształtach, które są niemożliwe do wykonania tradycyjnymi metodami.

Pakiet SoftMotion, oferowany dla sterowników Astraada One, oferuje obsługę programów CNC za pomocą gotowych bloków funkcyjnych. Gotowe moduły Softmotion CNC w Codesys umożliwiają konwersję programu sterującego (G-Code) na ruch serwonapędów. Dzięki równoczesnej synchronizacji wielu osi, narzędzie/chwytak może poruszać się po określonej trajektorii (na przykład interpolacji kołowej) przy ustalonej prędkości. Wykorzystanie gotowych modeli kinematycznych standardowych układów mechanicznych pozwala na szybkie i łatwe napisanie oraz uruchomienie aplikacji sterującej opartej na G-Code, wraz z wizualizacją trasy narzędzia.

Jak stworzyć program CNC w Codesys?

Aby móc korzystać z pakietu Softmotion CNC, należy dodać program CNC do projektu. W drzewku projektowym wybierz pozycję Application, a następnie naciśnij na nią prawym przyciskiem myszy i wybierz opcję Add Object -> CNC Program.

Następnie należy wprowadzić nazwę programu, wybrać sposób implementacji oraz kompilowania spośród dostępnych opcji. Dla implementacji mamy dwie opcje: wyżej opisana implementacja zgodna z normą DIN66025 oraz implementacja za pomocą tabeli. Tryby kompilacji to SMC_OutQueue, SMC_CNC_Ref oraz File.

Wraz z obiektem Program CNC, dodany został obiekt CNC settings. Ustawienia w tym obiekcie są ważne dla wszystkich obiektów CNC aplikacji. Obiekt jest dodawany do drzewa urządzeń aplikacji lub jest generowany automatycznie po dodaniu obiektu CNC do aplikacji. Obiekt może istnieć tylko raz na aplikację i nie można zmienić jego nazwy. W edytorze obiektu można określić ustawienia dla modułów wstępnego przetwarzania ścieżki, wstępnej interpolacji i edytora tabeli CNC. Obiekt ustawień CNC można usunąć tylko wtedy, gdy pod aplikacją nie istnieje żaden obiekt CNC.

Ustawienia programu CNC

W zakładce Path Preprocessors możesz wybrać bloki funkcyjne, które chciałbyś wstępnie przetworzyć. W tym celu wybierz blok z lewej kolumny i naciśnij przycisk „>”.

Klikając na przycisk Parameters możesz wyświetlić i zmienić dane wejściowe wybranej instancji. Nie wszystkie dane wejściowe są widoczne.

W zakładce Preinterpolation możesz ustawić parametry wstępnej interpolacji ruchów zawartych w programach CNC projektu.

Zakładka Table Editor pozwala na wybranie i zmianę kolejności atrybutów w edytorze, który jest używany podczas programowania z implementacją za pomocą tabeli.

Różnice między programowaniem za pomocą Table Editor a edytorem DIN66025

Codesys zapewnia możliwość tworzenia programów CNC w dwóch różnych edytorach: edytorze dla DIN 66025 i edytorze tabelarycznym. Oba edytory wyświetlają graficzny widok zaprogramowanej ścieżki. W poniższej tabeli zawarte są funkcje i możliwości obu edytorów.

ElementDIN 66025Table Editor
PozycjonowanieXX
LiniaXX
ŁukXX
ElipsaXX
SplajnXX
Szybkie pozycjonowanieXX
Funkcja MXX
ParabolaX 
Używanie zmiennychX 
SkokX 
Przesunięcie współrzędnychX 
Tłumienie krokówX 
Czas oczekiwaniaX 
Synchronizacja taktowania z interpolatoremX 

Programowanie z użyciem Table Editor

Jeśli wybraliśmy opcję implementacji za pomocą tabeli, polecenia ścieżki będą wyświetlane właśnie w niej. Domyślnie właściwości wybranego elementu ścieżki są wyświetlane po prawej stronie tabeli. Nie można ich tam edytować. Po wybraniu linii odpowiednia ścieżka ruchu jest rysowana w edytorze graficznym. Typ elementu określa, które konkretne właściwości elementu ścieżki można zmienić. Parametry nieedytowalne są zacienione. Naciśnięcie klawisza F6 przełącza fokus do edytora graficznego i z powrotem.

Programowanie w tabeli rozpoczyna się od dodania nowego elementu ścieżki, poprzez podwójne kliknięcie na komórkę Empty. Wybierz element z listy rozwijanej i naciśnij klawisz Enter.

Jeśli jest to pierwszy element w tabeli, pola zostaną wypełnione wartościami początkowymi tego elementu. W przeciwnym razie element otrzyma wartości z elementu w poprzednim wierszu. Wszystkie pozostałe pola pozostają zacienione na szaro, a element jest wyświetlany w edytorze graficznym. Aby dodać parametry do komórek, należy nacisnąć na nią i wpisać wartość liczbową, bądź wybrać jedną z dostępnych opcji. Ostatni wiersz tabeli jest pustym wierszem typu Empty. Aby dodać kolejny element, można także kliknąć polecenie Insert w menu kontekstowym wpisu tabeli.

Programowanie i struktura programu w normie DIN66025

W tym edytorze można określić elementy ścieżki jako program CNC zgodnie z normą DIN 66025. Domyślnie właściwości wybranego elementu ścieżki są wyświetlane po prawej stronie. Nie można ich tam jednak modyfikować. Wybranie linii powoduje narysowanie odpowiedniej ścieżki ruchu w edytorze graficznym. Naciśnięcie klawisza F6 przełącza fokus do edytora graficznego i z powrotem.

Aby rozpocząć programowanie, należy ustawić kursor w pustej linii, a następnie wprowadzić bloki G-Code linia po linii. Po wprowadzeniu bloku (przykład: N10 G01 X100 Y100 E100 F100 E-200), element ścieżki zostanie natychmiast wyświetlony w edytorze graficznym. Po wybraniu elementu ścieżki w edytorze graficznym jego właściwości zostaną wyświetlone w widoku Properties.

Program DIN 66025 składa się z pojedynczych bloków ruchu. Numer bloku znajduje się na początku każdego bloku.

[’%’ <nazwa programu>]

<blok>{<blok>}

Bloki mogą mieć następującą strukturę:

  • N<numer bloku> G<wyrażenie> <Słowa G-Code>.
  • N<numer bloku> <słowa kodowe G> (stosuje się G<wyrażenie> z poprzedniego bloku)
  • N<numer bloku> M<wyrażenie> < Słowa G-Code >
  • N<numer bloku> <nazwa podprogramu> ( <ActualParamList> )

Składnia G-Code w normie DIN 66025 wygląda następująco:

[’%’ <nazwa programu>]Opcjonalny nagłówek.
Zaczyna się od %, po którym następuje nazwa programu oddzielona spacją lub TAB.
<blok>Blok jest przetwarzany słowo po słowie od prawej do lewej.
N<numer bloku>Numer bloku jest używany jako znacznik do definiowania celów skoku. Przykład N010
G<wyrażenie>Polecenie ruchu:
– Jeśli w bloku nie określono polecenia ruchu, polecenie ruchu z poprzedniego bloku jest uzupełniane automatycznie.
– Wielkie i małe litery są ignorowane.
– Zera wiodące są ignorowane. Dlatego G01 jest traktowane tak samo jak g1.
– Odpowiada elementowi ścieżki lub obiektowi ścieżki. Przykład: G1 (liniowy), G2 (łuk)
– Prędkość, z jaką obiekty ścieżki są interpolowane; zasadniczo odpowiada ustawionej prędkości ścieżki, przyspieszeniu ścieżki i opóźnieniu ścieżki. Interpolator zapewnia, że te wartości graniczne nie zostaną przekroczone.
<Słowa G-Code>– Składa się z jednego adresu (przykład: E) i jednego wyrażenia (przykład: 100); razem E100)
– Wielkie i małe litery są ignorowane.
– Zera wiodące są ignorowane.
– Zapisuje numer słowa do zmiennej. Litera słowa jest nazwą zmiennej. Dostęp do niej można uzyskać za pomocą polecenia travel.
– Wszystkie liczby mogą być zmiennoprzecinkowe. Nie dotyczy to polecenia travel G<wyrażenie>, funkcji M M<wyrażenie> i punktu przełączania H<wyrażenie>.
– Słowa bloku są oddzielone spacją lub tabulatorem.
()Komentarz.
Znaki między nawiasami są interpretowane jako komentarz.

Wybrane polecenia ruchu i odpowiadające im elementy ścieżki wyglądają następująco:

Komenda ruchuOpisElement ścieżki
G0Bezpośredni ruch bez użycia narzędzia; ruch liniowyPozycjonowanie
G1Ruch liniowy z obsługą narzędziaRuch liniowy
G2Segment kołowy lub okrąg, zgodnie z ruchem wskazówek zegaraŁuk
G3Segment kołowy lub okrąg, niezgodnie z ruchem wskazówek zegaraŁuk
G6ParabolaParabola
G12Zmiana na tryb 2DTryb 3D
G17Przejście do trybu 3D poprzez aktywację trybu 3D w płaszczyźnie X/YTryb 3D

Wybrane słowa w G-Code:

APozycja docelowa dodatkowej osi splajnu. W przypadku transformacji współrzędnych w układzie współrzędnych dekodera słowo to zawiera kąt.
EMaksymalne przyspieszenie/zwalnianie ścieżki w [u/s2]. Wartość > 0: przyspieszenie; wartość < 0: opóźnienie
FPrędkość (w [u/s])
XWspółrzędna X pozycji docelowej
YWspółrzędna Y pozycji docelowej
ZWspółrzędna Z pozycji docelowej

Przykładowy program G-Code z użyciem edytorem DIN66025

Skoro znasz już podstawy programowania G-Code, przejdź do praktyki. Otwórz CNC program i zapisz następujący kod:

N000 F10 E10 E-10 
N010 G01 X100 
N020 G01 Y100 
N030 G01 X0 Y0 
N040 G01 Y100 
N050 G01 X50 Y65 Z0
N060 G01 X100 Y100 Z0
N070 G01 X0 
N080 G01 X100 Y0 
N090 G01 X50 Y35 Z0
N100 G01 X0 Y0
N110 G01 X35 Y50
N120 G01 X0 Y100
N130 G01 X100
N140 G01 X65 Y50
N150 G01 X100 Y0

Poniższy kod utworzy ścieżkę w edytorze graficznym, widoczną na zdjęciu poniżej.

Następnie przejdź do programu głównego PLC_PRG. W nim zapiszesz zmienne oraz obsługę bloków funkcyjnych SoftMotion CNC, dzięki którym możesz sterować serwonapędami, wykonać program CNC oraz zwizualizować pracę serwonapędów za pomocą obiektu wizualizacyjnego Gantry.

Najpierw dodaj następujące zmienne:

VAR
start_os_a: MC_Power;
start_os_b: MC_Power;
interpolator: SM3_CNC.SMC_interpolator;
tg2: SM3_CNC.SMC_TRAFO_Gantry2;
kontrola_os_a: SM3_CNC.SMC_ControlAxisByPos;
kontrola_os_b: SM3_CNC.SMC_ControlAxisByPos;
tg2f: SM3_CNC.SMC_TRAFOF_Gantry2;
END_VAR

A następnie zapisz następujące komendy kodu:

//Uruchomienie i zezwolenie na ruch osi a
start_os_a(
Axis:= os_a, );
//Uruchomienie i zezwolenie na ruch osi b
start_os_b(
Axis:= os_b, );
//zamiana ciągłej ścieżki(programu w G-Code) na dyskretną, oblicza pozycję i czas przejazdu we współrzędnych kartezjańskich
interpolator(
poqDataIn:= ADR(CNC) ,
dwIpoTime:= 20000);
//konwersja ze współrzędnych kartezjańskich na współrzędne osiowe
tg2(
pi:= interpolator.piSetPosition,
);
//sterowanie fizyczną osią/wirtualną – zadawane są współrzędne osiowe (os x) z modułu tg2 – wykonywany jest ruch osi x
kontrola_os_a(
Axis:= os_a,
iStatus:=interpolator.iStatus,
bEnable:= interpolator.bWorking,
fSetPosition:= tg2.dx,
fGapVelocity:= 100,
fGapAcceleration:= 100,
fGapDeceleration:= 100
);
//sterowanie fizyczną osią/wirtualną – zadawane są współrzędne osiowe (os y) z modułu tg2 – wykonywany jest ruch osi y
kontrola_os_b(
Axis:= os_b,
iStatus:=interpolator.iStatus,
bEnable:= interpolator.bWorking,
fSetPosition:= tg2.dy,
fGapVelocity:= 100,
fGapAcceleration:= 100,
fGapDeceleration:= 100
);
//Konwersja ze współrzędnych osiowych na kartezjańskie
//Blok podpinany do wizualizacji
tg2f(
DriveX:= os_a,
DriveY:= os_b,
minX:= 0,
maxX:= 150,
minY:= 0,
maxY:= 150,
);

Następnie przejdź do stworzenia wizualizacji. Aplikacja będzie sterowana z jej poziomu, a także dodasz przedstawienie graficzne ruchu, który zostało zaprogramowane za pomocą G-Code.

Pierwszym krokiem jest dodanie dwóch bloków MC_Power, które znajdziesz w bibliotece SM3_CNC w Visualization Toolbox. Pozwoli to na załączenie zasilania dla serwonapędów. Po dodaniu bloku dodaj referencję w polu References poprzez wpisanie zmiennej start_os_a w tym polu. Dla drugiego bloku MC_Power w polu References zapisz zmienną start_os_b.

Kolejnym i ostatnim blokiem, który dodasz, jest SMC_Interpolator. Ten blok funkcyjny służy do konwersji ciągłej ścieżki opisanej przez obiekty SMC_GEOINFO na dyskretne punkty pozycji ścieżki z uwzględnieniem zdefiniowanego profilu prędkości i wzorca czasowego. Następnie te punkty pozycji są zazwyczaj przekształcane przez program IEC (np. na pozycje osi napędu) i wysyłane do napędów. Następnie, tak jak w przypadku bloków MC_Power, dodaj referencje do zmiennej w programie głównym o nazwie interpolator.

Ostatnim krokiem jest dodanie obiektu SMC_VISU_Gantry2. Dzięki niemu zobaczysz działanie programu CNC w formie graficznej. Analogicznie do poprzednich elementów, dodaj referencję do zmiennej tg2f.

Aby wprawić element Gantry w ruch, należy nacisnąć trzy przyciski w blokach MC_Power, a następnie nacisnąć przycisk Execute w bloku Interpolator. Trajektoria przygotowana w programie CNC zostanie wykonana przez element Gantry.

Newsletter Poradnika Automatyka

Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

Please wait...

Thank you for sign up!

Czy ten artykuł był dla Ciebie przydatny?

Średnia ocena artykułu: 0 / 5. Ilość ocen: 0

Ten artykuł nie był jeszcze oceniony.

Zadaj pytanie

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *