background image

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

background image

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)

background image

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

background image

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

.

background image

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 .

background image

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 .

background image

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

background image

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

background image

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

background image

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 

background image

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 .

background image

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

background image

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

background image

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

background image

KANAŁY CYFROWE WE-WY

Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki

Języki Programowania Robotów

SIGNAl; SIG; SIG.INS

background image

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;

background image

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

background image

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.

background image

przykład 

in.sig

= 1012

IF NOT SIG.INS(in.sig) THEN

TYPE "Cyfrowe WE/WY nr ", in.sig, 

"nie jest 

zainstalowane"
END

background image

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.

background image

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.

background image

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)

background image

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+

background image

Składnia:

IOSTAT (lun, mode)

lun – numer urządzenia, które chcemy 
sprawdzić
mode – opcjonalny parametr trybu 
zwracanych informacji, standartowo 0

background image

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. 

background image

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ł

background image

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

background image

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 =>

background image

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

background image

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

background image

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 ().

background image

Przykłady wyrażeń logicznych

Akademia Górniczo-Hutnicza
Wydział Inżynierii Mechanicznej i Robotyki

Języki Programowania Robotów

32

34

NOT (Y >= 17)

== 12

AND Y

(AND Y) OR (var01 >= var02)

background image

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

background image

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 VALUEANY 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.

background image

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ą.

background image

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.

background image

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ą.

background image

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.