4. Rejestry wejściowe i wyjściowe robota
Klient CNDE i robot mogą wymieniać dane za pośrednictwem rejestrów wejściowych i wyjściowych. Obejmuje to dwa procesy:
① Konfiguracja wejść klienta CNDE zawiera rejestry wejściowe. Podczas wprowadzania danych modyfikowane są wartości rejestrów wejściowych. W programie LUA robota dodaje się instrukcję odczytu rejestrów wejściowych. Wykonanie programu LUA pozwala odczytać wartości rejestrów wejściowych zmodyfikowane przez klienta CNDE.
② W programie LUA robota dodaje się instrukcję zapisu rejestrów wyjściowych. Wykonanie programu LUA zapisuje wartości do rejestrów wyjściowych. Konfiguracja wyjść klienta CNDE zawiera rejestry wyjściowe. Po uruchomieniu informacji zwrotnej o stanie CNDE robota, klient odbiera dane wyjściowe CNDE i może odczytać wartości rejestrów wyjściowych zapisane w programie LUA.
4.1. Odczyt rejestrów wejściowych
Otwórz WebApp, kolejno kliknij „Program nauczania”, „Programowanie”, utwórz nowy program użytkownika „testReg.lua”.
Wykres 4-1 Utworzenie programu „testReg.lua”
Kliknij „Zmienne”, w prawym oknie dodawania instrukcji wybierz „Odczyt zmiennej rejestru wejściowego”. Wybierz typ zmiennej jako „int”, indeks początkowy rejestru 0, liczba rejestrów 3. Kliknij przycisk „Dodaj” i „Zastosuj”.
Wykres 4-2 Dodanie instrukcji odczytu rejestrów wejściowych
W tym momencie do programu „testReg.lua” została dodana instrukcja odczytu rejestrów wejściowych typu „int”.
Wykres 4-3 Dodanie instrukcji odczytu rejestrów wejściowych typu „int”
Kliknij przycisk przełączania trybu, przełącz się do trybu edycji programu. Przed instrukcją odczytu rejestrów wejściowych dodaj trzy zmienne programu lua, które posłużą do odczytania trzech wartości rejestrów wejściowych.
Wykres 4-4 Dodanie odczytu wartości rejestrów wejściowych
W ten sam sposób można dodać odczyt danych rejestrów typu „bit” i „double”.
Wykres 4-5 Dodanie odczytu rejestrów wejściowych typu „bit” i „double”
Zapisz powyższy program i przełącz robota w tryb automatyczny. Wykonaj program. Wartości rejestrów wejściowych zostaną odczytane do zmiennych programu lua.
4.2. Zapis rejestrów wyjściowych
Otwórz WebApp, kolejno kliknij „Program nauczania”, „Programowanie”, utwórz nowy program użytkownika „testReg.lua”.
Wykres 4-6 Utworzenie programu „testReg.lua”
Kliknij „Zmienne”, w prawym oknie dodawania instrukcji wybierz „Zapis zmiennej rejestru wyjściowego”. Wybierz typ zmiennej jako „int”, indeks początkowy rejestru 0, liczba rejestrów 2, wartość rejestru „18,55”. Kliknij przycisk „Dodaj”. Następnie ponownie wybierz „Odczyt zmiennej rejestru wyjściowego”, wybierz typ zmiennej jako „int”, indeks początkowy rejestru 0, liczba rejestrów 2. Kliknij „Dodaj” i „Zastosuj”.
Wykres 4-7 Dodanie instrukcji zapisu i odczytu rejestrów wyjściowych
W tym momencie do programu „testReg.lua” zostały dodane instrukcje zapisu i odczytu rejestrów wyjściowych typu „int”.
Wykres 4-8 Dodanie instrukcji zapisu i odczytu rejestrów wyjściowych typu „int”
Kliknij przycisk przełączania trybu, przełącz się do trybu edycji programu. Przed instrukcją odczytu rejestrów wyjściowych dodaj dwie zmienne programu lua, które posłużą do odczytania dwóch wartości rejestrów wyjściowych.
Wykres 4-9 Dodanie odczytu wartości rejestrów wejściowych
Zapisz powyższy program i przełącz robota w tryb automatyczny. Wykonaj program. W tym momencie zmienne programu LUA „intValue1” i „intValue2” będą miały odpowiednio wartości 18 i 55. Operacje na rejestrach typu „bit” i „double” są takie same jak na rejestrach typu „int”.
4.3. Interaktywna aplikacja rejestrów wejściowych i wyjściowych CNDE
Wykres 4-10 Wymiana danych w rejestrach wejściowych i wyjściowych
Scenariusze wymiany danych między robotem a klientem CNDE za pośrednictwem rejestrów wejściowych i wyjściowych obejmują między innymi następujące typy:
① Sterowanie ruchem robota za pomocą rejestrów wejściowych: Klient CNDE planuje docelową pozycję robota i zapisuje ją do rejestrów wejściowych. W programie LUA robota odczytywane są wartości rejestrów wejściowych w celu uzyskania docelowej pozycji robota, a następnie za pomocą instrukcji ruchu, takich jak PTP, LIN, ServoJ, robot jest sterowany tak, aby przemiescił się do docelowej pozycji. Przykładowy program LUA jest następujący:
1i = 0;
2oldFlag = 0
3while(1) do
4 startFlag = ReadInputINTRegs(0,1)
5 if(startFlag ~= oldFlag) then
6 oldFlag = startFlag
7 x, y, z, a, b, c = ReadInputDBLRegs(0,6)
8 ServoJ({x, y, z, a, b, c}, {0, 0, 0, 0}, 10, 10, 0.008, 0, 0)
9 end
10end
② Sterowanie działaniami robota za pomocą rejestrów wejściowych: Klient CNDE zapisuje różne wartości do określonego rejestru wejściowego, aby sterować robotem w wykonywaniu różnych działań. Program LUA robota w pętli pobiera wartość odpowiedniego rejestru wejściowego i wykonuje różne działania w zależności od jego wartości. Przykładowy program jest następujący:
1runFlag = ReadInputINTRegs(0,1)
2while(runFlag > 0) do
3 motion,target = ReadInputINTRegs(1,2)
4 if(motion > 0) then
5 if(target == 1)then
6 Lin(a1,100,-1,0,0)
7 else if(target == 2) then
8 Lin(a2,100,-1,0,0)
9 else
10 Lin(safety,100,-1,0,0)
11 end
12 end
13 else
14 sleep_ms(100)
15 end
16end
③ Podczas pracy robot zapisuje bieżący stan programu do rejestrów wyjściowych. Klient CNDE odczytuje stan rejestrów wyjściowych, aby monitorować działanie programu robota. Przykładowy program jest następujący:
1local weldCount = 0
2runFlag = ReadInputINTRegs(0,1)
3while(runFlag > 0) do
4 Lin(safety,100,-1,0,0)
5 Lin(a1,100,-1,0,0)
6 ARCStart(0, 0, 3000)
7 Lin(a2,100,-1,0,0)
8 ARCEnd(0, 0, 3000)
9 runFlag = ReadInputINTRegs(0,1)
10 weldCount = weldCount + 1
11 WriteOutputINTRegs(0,1,{weldCount})
12end