Reklama: Chcesz umieścić tutaj reklamę? Zapraszamy do kontaktu »
Reklama: Chcesz umieścić tutaj reklamę? Zapraszamy do kontaktu »
Powrót do listy artykułów Aktualizowany: 2019-01-04
Jak sterować ruchem synchronicznym serwonapędów za pomocą G-Code w Codesys cz. 2

W poprzedniej części – Jak stworzyć wirtualny serwonapęd i przetestować jego działanie w środ... – przedstawiliśmy Państwu, w jaki sposób napisać pierwszą aplikację do sterowania wirtualnym serwonapędem w środowisku Codesys. Do tego celu wykorzystywana była licencja Softmotion. W tym artykule dowiecie się Państwo jak od podstaw stworzyć bardziej zaawansowaną aplikację, która umożliwia obsługę G-Code – znormalizowanego języka zapisu poleceń dla maszyn CNC. Przed rozpoczęciem pracy warto zaznajomić się z poprzednim artykułem z tej serii, ponieważ zawiera szczegółowy opis dodawania serwonapędów do środowiska Codesys.

 

Gotowe bloki funkcyjne Softmotion CNC w Codesysie pozwalają na przekształcenie programu sterującego (G-Code) w ruch serwonapędów. Jednoczesna koordynacja wielu osi pozwala na poruszanie się narzędzia/chwytaka po określonej trajektorii (np. interpolacja kołowa) z zadaną prędkością. Gotowe modele kinematyczne typowych układów mechanicznych pozwalają w szybki i łatwy sposób napisać i uruchomić aplikację sterującą na podstawie G-Code łącznie z wizualizacją trajektorii przejazdu narzędzia.

1. W środowisku Codesys załóż nowy projekt „Standard project".

1.bmp

2. Wybierz język Structured Text (ST) oraz opcję Codesys Softmotion aby uruchomić symulator.

2b.bmp

 

Dodawanie do projektu wirtualnego serwonapędu Astraada SRV

3. W drzewku projektowym należy kliknąć prawym przyciskiem myszy na zakładce SoftMotion General Axis Poll wybrać opcję „Add Device".

3.bmp

4. Rozwiń opcję Virtual drives i wybierz opcję „SM_Drive_Virtual"

4.bmp

5. W zakładce Softmotion General Axis Pool pojawi się nowa wirtualna oś pod nazwą SM_Drive_Virtual

5.bmp

6. Możesz zmienić jej nazwę, klikając na osi prawym przyciskiem i wybierając opcję Properties.

6.bmp

7. Zmień nazwę na „os_a_wirtualna"

7b.bmp

8. Powtórz kroki 3-7 i dodaj do projektu „os_b_wirtualna"

9. W drzewku projektowym kliknij prawym przyciskiem na zakładce Application, a następnie Add Object-> CNC program

9_1.bmp

9_2.bmp

Wybór zatwierdź przyciskiem Add.

 

10. Kliknij dwukrotnie na nowo utworzonej zakładce CNC

 

10b.bmp

11. W otwartym oknie wpisz program sterujący G-Code:

N000 F100 E100 E-100
N010 G01 X100
N020 G01 Y100
N030 G01 X0 Y0
N040 G01 Y100
N050 G01 X50 Y150
N060 G01 X100 Y100
N070 G01 X0
N080 G01 X100 Y0

 

11.bmp

12. Kliknij dwukrotnie na zakładce PLC_PRG

12b.bmp

13. W oknie programu dodaj następujące zmienne:

PROGRAM PLC_PRG
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

13b.bmp

14. W oknie programu uzupełnij parametry obsługi bloków funkcyjnych:

//Uruchomienie i zezwolenie na ruch osi a

start_os_a(
Axis:= os_a_wirtualna, );

//Uruchomienie i zezwolenie na ruch osi b

start_os_b(
Axis:= os_b_wirtualna, );

//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_wirtualna,
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_wirtualna,
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_wirtualna,
DriveY:= os_b_wirtualna,
minX:= 0,
maxX:= 150,
minY:= 0,
maxY:= 150,
);

15. Aby utworzyć wizualizację systemu sterowania osią, kliknij prawym przyciskiem na zakładce Application w drzewku projektowym, a następnie wybrać Add Object – > Visualization. Całość zatwierdź przyciskiem Add.

 

15_1.bmp

15_2.bmp

16. Licencja Codesys Softmotion i Softmotion CNC umożliwia korzystanie z dołączonej do Codesysa biblioteki SM3_Basic i SMC_CNC. Zawiera one gotowe wizualizacje, za pomocą których można szybko rozpocząć sterowanie osiami serwonapędów. Aby dodać do projektu wizualizację sterującą, z zakładki SM3_Basic wybierz Visu_MC_Power i przeciągnij do okna projektu.

16.bmp

Po przeciągnięciu wizualizacji dopnij zmienną start_os_a (typu MC_Power).

16_22.bmp

16_3.bmp

17. Krok 10 należy powtórzyć i utworzyć wizualizację dla start_os_b (typu MC_Power).

 

18. Dodaj do wizualizacji Visu_SMC_Interpolator i podepnij pod niego zmienną interpolator

18.bmp

18_2.bmp

19. Dodaj do wizualizacji SMC_Visu_Gantry2 i podepnij pod niego zmienną

19.bmp

19_22.bmp

 

20. Aby uruchomić symulator, wejdź w menu start-> 3S CODESYS-> CODESYS Softmotion Win v3.

Aby skompilować i uruchomić program, wejdź w zakładkę Device, a następnie kliknij w Scan Network i wybierz dostępne urządzenie. W tym wypadku będzie to nazwa komputera.

20.bmp

Całość należy zatwierdzić przyciskiem OK.

Program należy skompilować i uruchomić. Działającą aplikację można uruchomić np. poprzez przeglądarkę internetową wpisując: http://localhost:8080/webvisu.htm

20_2.bmp

 

 

Autor:
Wojciech Trojniar
Źródło:
www.astor.com.pl/poradnikautomatyka
Dodał:
ASTOR Sp. z o.o.