Strona główna ASTOR
Automatyka w praktyce

Przesyłanie parametrów ruchu w czasie rzeczywistym i informacji o wykonanym programie
Wymiana danych pomiędzy robotem Kawasaki a sterownikiem PLC, odc. 4

Kontakt w sprawie artykułu: Konrad Sendrowicz - 2024-09-16

Z tej części naszego cyklu dowiesz się, jak wysyłać z robota jego parametry ruchu, takie jak prędkość, przyspieszenie i opóźnienie, a także informacje o numerze kroku i numerze programu.

Parametry ruchu  

Podstawową komendą, pozwalającą na uzyskanie informacji o aktualnych parametrach pracy robota, jest SYSDATA(). Zwraca ona wartość numeru wybranego parametru, którą można wykorzystać w programie lub wysłać do zewnętrznego urządzenia.

Poniżej znajduje się lista parametrów wraz z krótkim opisem.

Num.NazwaOpt1Opt2OpisJed.
1M.SPEED1-Not UsedPrędkość główna (monitor speed)%
2MSTEP1-Not UsedAktualny numer kroku, jeśli program nie wykonywany – wartość 1.Num.
3STEP1-(100x)Not UsedAktulny krok programu, również pc programu 1001.Num.
4P.SPEED1-Not UsedPrędkość kolejnego ruchu%
5P.SPEED.M1-Not UsedPrędkość kolejnego ruchumm/s
6P.ACCEL1-Not UsedPrzyspieszenie kolejnego lub ostatniego ruchu%
7P.DECEL1-Not UsedOpóźnienie kolejnego lub ostatniego ruchu%
8MTR.RPM1-1-(Num JT)Prędkość poszczególnych osi JT1 -1; JT2-2; …rpm
9TOOL.VEL.CMD1-Not usedPrędkość TCPmm/s
10MEM.FREENot usedNot usedProcent wolnej pamięci w kontrolerze%

Do celów szkoleniowych będziemy wysyłać do sterownika tylko kilka wartości dotyczących prędkości ustawionej na programatorze (teach pendant), numeru kroku, prędkości następnego ruchu i prędkości TCP. Dodatkowo będziemy wyświetlać ilość zajętej pamięci.

Definicja zmiennych w programie PC:

Monitor_Speed_8=209 ; Number of first bit data with monitor speed [%],8 bits
Step_Numb_16=217 ; Number of first bit data with step program number, 16 bits
Speed_Robot_16=233; Number of first bit data with Speed robot [mm/s], 16 bits 
Speed_TCP_16=249; Number of first bit data with Speed TCP [mm/s], 16 bits
Memory_free_8=265; Number of first bit data with Free memory [%],8 bits

W głównej pętli programu PC należy dodać:  

BITS Monitor_Speed_8,8 = SYSDATA(M.SPEED)
BITS Step_Numb_16,16 = SYSDATA (STEP)
BITS Speed_Robot_16,16 = SYSDATA (P.SPEED.M)
BITS Speed_TCP_16,16 = SYSDATA (TOOL.VEL.CMD)
BITS Memory_free_8,8 = SYSDATA (MEM.FREE)

Dodatkowe parametry

Istnieją również dodatkowe funkcje w języku programowania AS Language, które zwracają określone wartości stanu robota. Poniżej znajduje się przykład kilku z nich.

GETENCTEMP(axis_number) – zwraca temperaturę enkodera wybranej osi robota.

DISP_EXESTEP – wyświetla numer kroku aktualnie wykonywanego programu

MSPEED – zwraca prędkość monitora (w procentach), która jest ustawiona na teach pendant

IQARM(axis_number) – zwraca wartość prądu silnika dla danej osi.

TRQNM(axis_number) – zwraca wartość momentu obrotowego dla danej osi, wyrażoną w Nm.

W tym przykładzie dodatkowo wyślemy temperaturę enkodera drugiej osi robota i moment obrotowy silnika, aby utworzyć ekran z parametrami silnika.

Definicja zmiennych w programie PC:

Temp_JT2_8=273; Number of first bit data with temperature axis 2 [Celsius],8 bits
Torq_JT1_16=281; Number of first bit data with Torque axis 1 [Nm],16 bits
Torq_JT2_16=297; Number of first bit data with Torque axis 2 [Nm],16 bits
Torq_JT3_16=313; Number of first bit data with Torque axis 3 [Nm],16 bits
Torq_JT4_16=329; Number of first bit data with Torque axis 4 [Nm],16 bits
Torq_JT5_16=345; Number of first bit data with Torque axis 5 [Nm],16 bits
Torq_JT6_16=361; Number of first bit data with Torque axis 6 [Nm],16 bits

W głównej pętli programu PC należy dodać:  

BITS Temp_JT2_8,8 = GETENCTEMP(,2)
BITS Torq_JT1_16,16= TRQNM(1)*100; Multiple by 100 because BITS send only integer value
BITS Torq_JT2_16,16= TRQNM(2)*100
BITS Torq_JT3_16,16= TRQNM(3)*100
BITS Torq_JT4_16,16= TRQNM(4)*100
BITS Torq_JT5_16,16= TRQNM(5)*100
BITS Torq_JT6_16,16= TRQNM(6)*100

Konfiguracja PLC w Codesys

1. Pierwszym krokiem, jak poprzednio, jest zdefiniowanie zmiennych w GVL. Niektóre wartości mają 16 bitów, niektóre 8 bitów, w przypadku dłuższych zmiennych konieczne jest zdefiniowanie wartości niskiej i wysokiej oraz zmiennej, w której będzie przechowywana cała wartość. Na przykład wartość kroku będzie wymagała zmiennych STEP_L i STEP_H, aby odczytać wartości z modułu Ethernet/IP, a następnie połączyć te wartości i zapisać pełną wartość w zmiennej STEP_NUM.

Można również zdefiniować zmienne Integer 16 bitowe, przedstawione to zostanie w kolejnych częściach poradnika.

VAR_GLOBAL
	STEP_L: INT; 
	STEP_H: INT;
	STEP_NUM: INT;
	Monitor_SPEED: INT;
	Rob_SPEED_L: INT;
	Rob_SPEED_H: INT;
	Rob_SPEED:INT;
	TCP_SPEED_L:INT;
	TCP_SPEED_H: INT;
	TCP_SPEED:REAL;
	Memory_Free:INT;
	Temp_JT2:INT;
	Torq_JT1_L:INT; 
	Torq_JT1_H:INT;
	Torq_JT1:INT; 
	Torq_JT2_L:INT; 
	Torq_JT2_H:INT;
	Torq_JT2:INT; 
	Torq_JT3_L:INT; 
	Torq_JT3_H:INT;
	Torq_JT3:INT; 
	Torq_JT4_L:INT; 
	Torq_JT4_H:INT;
	Torq_JT4:INT; 
	Torq_JT5_L:INT; 
	Torq_JT5_H:INT;
	Torq_JT5:INT;
	Torq_JT6_L:INT; 
	Torq_JT6_H:INT;
	Torq_JT6:INT; 
END_VAR

2. Następnie zdefiniowane zmienne należy przypisać do modułu komunikacyjnego (Mapping), aby dane odbierane zostały wpisane do właściwej zmiennej. Po przypisaniu wszystkich wartości okno powinno wyglądać jak poniżej:

3. Kolejnym krokiem jest dodanie do głównego programu procedury obsługi danych odebranych od robota.

Główny program:

//Combining the values of two 8-bit variables  
GVL.STEP_NUM:= GVL.STEP_L +( GVL.STEP_H *256); 
GVL.Rob_SPEED:= GVL.Rob_SPEED_L +( GVL.Rob_SPEED_H *256);
GVL.TCP_SPEED:= INT_TO_REAL(GVL.TCP_SPEED_L +( GVL.TCP_SPEED_H *256));
GVL.Torq_JT1:= GVL.Torq_JT1_L +( GVL.Torq_JT1_H *256);
GVL.Torq_JT2:= GVL.Torq_JT2_L +( GVL.Torq_JT2_H *256);
GVL.Torq_JT3:= GVL.Torq_JT3_L +( GVL.Torq_JT3_H *256);
GVL.Torq_JT4:= GVL.Torq_JT4_L +( GVL.Torq_JT4_H *256);
GVL.Torq_JT5:= GVL.Torq_JT5_L +( GVL.Torq_JT5_H *256);
GVL.Torq_JT6:= GVL.Torq_JT6_L +( GVL.Torq_JT6_H *256);
//Other values will be directly assigned to the elements in the visualisation:
//GVL.Temp_JT2; GVL.Monitor_SPEED; GVL.Memory_Free; 

4. Ostatnią operacją jest wyświetlenie odebranych danych. Pola, na których będą wyświetlane dane, zostaną dodane do ekranu wizualizacji. W celach szkoleniowych zmienne zostaną wyświetlone na różne sposoby, które można dowolnie zmieniać.

A) Zmienne z numerem kroku i ustawionej prędkości jest dodana standardowo jako wyświetlenie liczby:

B) Wolna pamięć jest wyświetlana jako ProgressBar, aby można było w łatwy sposób zwizualizować ile pamięci pozostało w kontrolerze:

C) Ponieważ temperatura to ważny parametr, dobrze aby wartość była połączona z kolorem, który informuje, w którym przedziale jest aktualna temperatura. Dlatego zostało wykorzystane dedykowane okno BarDisplay, dla których dobrane są również parametry graniczne:

D) Prędkość punktu TCP w mm/s dla łatwiejszego odczytu będzie zmieniona na m/s, a wyświetlona jako obrotowy wskaźnik, więc będzie można dynamicznie sprawdzić aktualną prędkość.

E) Parametry momentu poszczególnych osi są oznaczone prostymi wskaźnikami, dla każdego robota będą się różnić i wymagają dostosowania na etapie testów.

Aplikacja

W następnej części dowiesz się, jak szybko udostępniać aktualną pozycję robota oraz dystans do kolejnego dynamicznie zmieniającego się punktu w przestrzeni.

Następny odcinek: Przesyłanie aktualnej pozycji i dystansu do kolejnego punktu

Newsletter Poradnika Automatyka

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

Please wait...

Dziękujemy za zapis do newslettera!

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 *