Języki Programowania Robotów
AdeptOne V/V+
KOMUNIKACJA CYFROWE WE/WY
Instrukcje sterujące programem
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
1
Podział Instrukcji sterujących
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
2
¾
Bezwarunkowe
(
GOTO, CALL, CALLS)
¾
Przerwania (
WAIT , WAIT.EVENT, REACT, REACTI, REACTE,
HALT, STOP, PAUSE, BRAKE, BREAK, DELAY
)
¾
Logiczne (true , false)
¾
Warunkowe (IF...GOTO, IF...THEN...ELSE, CASE...value OF
)
¾
Pętle (FOR, DO...UNTIL, WHILE...DO)
Instrukcje bezwarunkowe
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
3
Krótki opis:
Komenda
Wywołanie podprogramu
CALLS
Wykonanie podprogramu
CALL
Polecenie skoku
GOTO
Są to instrukcje wykonywane zawsze niezależnie od żadnych parametrów
stanu robota
GOTO
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
4
Polecenie to powoduje skok do zadanej lokalizacji
Składnia:
GOTO miejsce
Gdzie miejsce – lokalizacja skoku przed
lub za instrukcją goto
Przykład:
61 .
62 GOTO 100
63 .
64 .
65 100TYPE
-miejsce docelowe
66
.
CALL
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
5
Polecenie wywołujące podprogram znajdującego się w pamięci
systemu
Składnia:
CALL program (arg_list)
program – nazwa programu
arg_list- argumenty przekazywane do niego
Przykład:
48 .
49 CALL check (locx, locy, length)
50 .
CALLS
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
6
Polecenie to działa w identyczny sposób jak polecenie call
ponadto umożliwia ono dostęp do programów których nazwy są
przypisane w zmiennej typu string
Składnia:
CALLS program (arg_list)
program – nazwa programu
arg_list- argumenty przekazywane do niego
Przykład:
47 .
48 $program_name = $program_list[program_select]
49 CALLS $program_name(length, width)
50 .
Przerwania
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
7
Instrukcje przerwań dla błędów systemowych
REACTE
Instrukcje przerwania programu lub podprogramu
HALT, STOP,
PAUSE
Instrukcje zatrzymania programu, robota
BRAKE, BREAK,
DELAY
Krótki opis:
Komenda
Instrukcje przerwań
REACT REACTI
Instrukcja oczekiwania
WAIT
WAIT.EVENT
Komendy służące do komunikacji robota z otoczeniem i jego reakcji np.
oczekiwanie na zewnętrzne czujniki
WAIT
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
8
Komenda ta oznacza oczekiwanie programu na spełnienie
warunku
Składnia:
WAIT wyrażenie
Gdzie wyrażenie – funkcje przy której
spełnieniu program ruszy dalej
Przykład:
WAIT SIG(1032, -1045)
–oczekiwanie aż na wejściu 1032 będzie
jedynka a na wejściu 1045 zero
WAIT TIMER(1) > 10
-oczekiwanie aż timer 1 osiągnie wartość
większą od 1
WAIT.EVENT
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
9
Komenda ta wykonuje oczekiwanie programu
Przykład:
WAIT.EVENT , 3.7
–oczekiwanie na zdarzenie przez 3.7 sekundy
program rusza dalej gdy minie czas lub
nastąpi zdarzenie
SET.EVENT
-zawiesza działanie programu aż do czasu
nastąpienia zdarzenia zdefiniowanego
poleceniem SET.EVENT
REACT, REACTI
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
10
Polecenia te służą monitorowaniu danego kanału w trakcie
wykonywania programu i ewentualnemu jego przerwaniu po
wystąpieniu sygnału przy czym polecenie REACT powoduje
przerwanie po wykonaniu danej komendy a REACTI natychmiastowo
zatrzymuje roboto i rozpoczyna skok
Składnia:
REACT signal_number, program, priority
signal_number – sygnał zprzedziału od
1001 do 1012
lub od 2001 do 2008.
program - miejsce docelowe skoku
priority – priorytet nastawiany od 1 do 127
Przykład
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
11
40 REACT -1001, alarm, 10
-zdefiniowanie przerwania
41
42 ; REACT
-uruchomienie oczekiwania na przerwanie
43
44 MOVE a
45 MOVE b
50 MOVE e
51
52
53
54 IGNORE -1001
-wyłączenie oczekiwania na przerwanie
55 .
REACTE
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
12
Wykonuje przerwanie w chwili nastąpienia błędu np. systemu lub
robota
Składnia:
REACTE trouble
trouble
–nazwa błędu
HALT STOP PAUSE
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
13
¾
Polecenie
Halt
powoduje zakończenie aktualnie wykonywanego
programu bez możliwości powrotu
¾
Polecenie
stop
służy do zakończenia aktualnie wykonywanej pętli i
rozpoczęcia podprogramu od początku lub użyte bezpośrednio w
głównej części programu powoduje jego zakończenie działa jak halt
¾
Pause
polecenie to również zamyka podprogram lecz nie kasuje
zmiennych systemowych użytych w tym podprogramie co może być
wykorzystane przy jego poprawianiu
BREAKE BRAKE DELAY
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
14
¾
Polecenie
BREAKE
powoduje zatrzymanie się programu do czasu
wykonania kolejnej następującej pod nim lini
¾
Polecenie
BRAKE
zatrzymuje ruch robota bez względu na
położenie w którym się on znajduje
¾
DELAY
polecenie zatrzymuje ruch robota na pewien okres czasu
np. zamknięcia chwytaka
KANAŁY CYFROWE WE-WY
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
SIGNAl; SIG; SIG.INS
SIGNAL
Instrukcja włączająca/wyłączająca zewnętrzne
cyfrowe kanały wyjściowe i wewnętrzne sygnały
programowe.
Składnia:
SIGNAL nr_sygnalu, ..., nr_sygnalu
nr_sygnalu – cyfrowe wyjścia 1-8 i 33-512 i
wewnętrzne sygnału programowe 2001-2512;
Przykład:
SIGNAL –reset, 4;
Wyłączenie sygnału przypisanego do zmiennej
reset i włączenie sygnału na cyfrowym wyjściu 4
SIGNAL –1, 4, 2010;
Wyłączenie sygnału na cyfrowym wyjściu 1,
włączenie na 4 i włączenie programowego sygnału
2010
SIG.INS
Funkcja sprawdzająca czy dane zewnętrzne
cyfrowe złącze WE/WY jest podłączone lub czy
dane złącze programowe jest dostępne dla
systemu. Dla gotowego (dostępnego) kanału
cyfrowego WE/WY zwraca TRUE (-1) a dla nie
wykrytego FALSE (0.0)
Składnia:
SIG.INS (nr_sygnalu)
nr_sygnalu – dowolny nr sygnału, bez znaczenia
na jego znak.
przykład
in.sig
= 1012
IF NOT SIG.INS(in.sig) THEN
TYPE "Cyfrowe WE/WY nr ", in.sig,
"nie jest
zainstalowane"
END
SIG
Funkcja sprawdza w jakim stanie (wysokim/niskim)
są podane WE/WY.
Funkcja zwraca TRUE (-1) gdy wszystkie
sprawdzane WE/WY są w stanie zgodnym z
zapisanym w argumentach, bez znaku dla
włączonego i z „-„ dla wyłączonego, natomiast
zwraca FALSE (0.0) gdy którykolwiek z portów jest
w innym stanie niż zapisany.
Składnia:
SIG (nr_sygnalu, ..., nr_sygnalu)
nr_sygnalu – nr sprawdzanego WE/WY
1-8 i 33-512 dla cyfrowych WY,
1001-1012 i 1033 -1512 dla cyfrowych WE,
2001-2512 dla programowych WE/WY.
Przykład
Załóżmy że:
WE 1001 jest Włączone
WE 1004 jest Wyłączone
SIG(1001) ; Zwraca –1.0 (TRUE)
SIG(1004) ; Zwraca 0.0 (FALSE)
SIG(–1004) ; Zwraca –1.0 (TRUE)
SIG(1001,1004) ; Zwraca 0.0 (FALSE)
SIG(1001,–1004) ; Zwraca –1.0 (TRUE)
IOSTAT
Zapewnia informacje o stanie ostatniej
operacji I/O. Funkcja zwraca 1 gdy
wykonana operacja zakończyła się
pomyślnie, 0 gdy jeszcze nie skończyła się i
wartości < 0 dla standartowych błędów V+
Składnia:
IOSTAT (lun, mode)
lun – numer urządzenia, które chcemy
sprawdzić
mode – opcjonalny parametr trybu
zwracanych informacji, standartowo 0
Przykład:
Dyski różnią się od wszystkich innych
urządzeń tym, że pozwalają na otwieranie
plików. Każdy program może mieć otwarty
jednocześnie wiele plików na tym samym
bądź na różnych dyskach. Język V/V+
posiada obsługę błędów dzięki czemu może
kontynuować pracę mimo wystąpienia
błędów I/O. Sukces bądź nieudane
wykonanie operacji zapisywane jest w
funkcji IOSTAT.
Na przykład wywołanie funkcji IOSTAT(5)
zwróci nam wartość ostatniej operacji IO.
Wartości:
1 – operacja zakończona sukcesem
0 – operacja jeszcze się nie zakończyła
<0 – wystąpił błąd - numer błędu definiuje
nam jakiego typu błąd wystąpił
Wartości logiczne
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Łukasz Ziomka
Paweł Orisz
Języki Programowania Robotów
27
W języku V/V+ wyrażenie logiczne może mieć wartość true albo false.
Gdy dane wyrażenie logiczne jest prawdziwe przyjmuje ono wartość
true, a zapisie liczbowym wartość –1.
Gdy dane wyrażenie logiczne jest fałszywe przyjmuje ono wartość
false, a w zapisie liczbowym wartość 0.
W przypadku, gdy istnieje potrzeba określenia wartości logicznej
wyrażenia o wartości innej niż 0 lub –1, to:
- wyrażenie przyjmie wartość logiczną 0, gdy jego wartość liczbowa
jest równa 0
- wyrażenie przyjmie wartość logiczną –1, gdy jego wartość liczbowa
jest różna od 0
Operatory porównania
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
28
OPIS
SYMBOL
różny
<>
równy
==
mniejszy niż...
<
większy niż...
>
mniejszy lub równy
<= lub =<
większy lub równy
>= lub =>
Operatory logiczne
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
29
OPIS
SYMBOL
negacja
NOT
koniunkcja
AND
alternatywa
OR
różnica symetryczna
XOR
Bitowe operatory logiczne
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
30
OPIS
SYMBOL
koniunkcja bitowa
BAND
alternatywa bitowa
BOR
bitowa różnica symetryczna
BXOR
negacja bitowa
COM
Priorytet operatorów
(logicznych i arytmetycznych)
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
31
NOT, COM
- (minus jednoargumentowy)
*, /, MOD, AND, BAND
+, -, OR, BOR, XOR, BXOR
==, <= (=<), >= (=>), <, >, <>
Operatory w tym samym wierszu posiadają jednakowy priorytet.
Operatory z wiersza położonego wyżej niż dany wiersz posiadają wyższy priorytet.
W przypadku niejasności co do kolejności wartościowania wyrażenia należy
stosować nawiasy ().
Przykłady wyrażeń logicznych
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
32
Y > 34
NOT (Y >= 17)
X == 12
X AND Y
(X AND Y) OR (var01 >= var02)
Warunkowe instrukcje sterujące
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
33
IF wyrażenie GOTO etykieta
________________________________
IF wyrażenie THEN
instrukcje
END
________________________________
IF wyrażenie THEN
instrukcje_1
ELSE
instrukcje_2
END
Warunkowe instrukcje sterujące
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
34
CASE wartość_wejściowa OF
VALUE val01,val02,...,val0n:
instrukcje_0
VALUE val11,val12,...,val1m:
instrukcje_1
...
VALUE valx1,valx2,...,valxy:
instrukcje_x
ANY
instrukcje
END
Instrukcja CASE przyjmuje jako wartość wejściową
wartość_wejściowa
(liczba rzeczywista lub całkowita) i
w kolejnych blokach VALUE sprawdzany jest warunek:
wartość_wejściowa == valpq
Jeżeli warunek jest spełniony dla jakiejkolwiek wartości
valpq
znajdującej się w danym bloku VALUE to
wykonywane są instrukcje (
instrukcje_p
), aż do
napotkania kolejnego bloku VALUE, ANY lub do końca
struktury CASE zakończonej instrukcją END.
wartość_wejściowa
jest testowana w każdym bloku
VALUE!!!
W przypadku, gdy wyrażenie
wartość_wejściowa == valpq
nie przyjęło w żadnym bloku VALUE wartości logicznej
true, wykonywane są instrukcje
instrukcje
znajdujące
się po słowie ANY, aż do końca struktury CASE
zakończonej instrukcją END.
Pętla FOR
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
35
FOR licznik = val_start TO val_stop [STEP krok]
instrukcje
END
[ ] – oznacza, że instrukcja nie jest wymagana
Na początku pętli, zmiennej
licznik
zostaje przypisana wartość
val_start
. Zmienna
val_stop
określa
maksymalną (minimalną, gdy występuje zmniejszanie licznika w każdej iteracji) wartość licznika,
dla której pętla FOR będzie wykonana.
Ostatnia iteracja nastąpi wtedy, gdy zmienna
licznik
osiągnie wartość
val_stop
(jest to pętla z
warunkiem wejścia).
Domyślnie wartość
krok
(czyli o ile zmieniana jest wartość zmiennej
licznik
po wykonaniu iteracji)
wynosi 1. Wówczas nie ma potrzeby stosowania wyrażenia
STEP 1
Wartość zmiennej
krok
może być liczba dodatnią lub ujemną, całkowitą lub rzeczywistą.
Pętla WHILE ... DO
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
36
WHILE wyrażenie DO
instrukcje
END
Jest to pętla z warunkiem wejścia.
Pętla jest wykonywana w przypadku, gdy wartość logiczna wyrażenia
wyrażenie
wynosi true. W
innym przypadku program przechodzi do następnej instrukcji po słowie END.
Pętla DO ... UNTIL
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
37
DO
instrukcje
UNTIL wyrażenie
Jest to pętla z warunkiem wyjścia, czyli wykonywana jest przynajmniej jeden raz.
Następna iteracja jest wykonywana tylko w przypadku, gdy wartość logiczna wyrażenia
wyrażenie
wynosi true. W innym wypadku pętla zostaje przerwana i zostanie wykonana pierwsza instrukcja
znajdująca się za pętlą.
Instrukcje: EXIT oraz NEXT
Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki
Języki Programowania Robotów
38
Instrukcje te mają zastosowane we wszystkich trzech pętlach.
EXIT
Jeżeli wewnątrz pętli zostanie wykonana instrukcja EXIT, to następuje natychmiastowe przerwanie
iteracji i pętli. Następnie wykonywana jest pierwsza instrukcja znajdująca się po bloku pętli.
NEXT
Jeżeli wewnątrz pętli zostanie wykonana instrukcja NEXT, wówczas następuje przerwanie
bieżącej iteracji i przejście do kolejnej iteracji. Czy zostanie wykonana iteracja zależy od rodzaju
pętli. W przypadku pętli:
¾
FOR będzie sprawdzana wartość licznika.
¾
WHILE ... DO będzie sprawdzana wartość wyrażenia warunkowego.
¾
DO ... UNTIL przed przejściem do kolejnej iteracji będzie sprawdzona wartość logiczna
wyrażenia po instrukcji UNTIL.