2. Opis języka CCS.
Język programowania CCS (Computer Control Software) służy do tworzenia programów sterujących urządzeniami wykonawczymi połączonymi z komputerem za pomocą interfejsów D.ER-REA-POSIT-STEP-2 oraz D.ER-REA-88-S (możliwe jest też oprogramowanie modułów wejść/wyjść analogowych i wejść analogowych/wyjść cyfrowych, które jednak nie są używane do sterowania manipulatorem i w związku z tym nie będą opisywane). Większość rozkazów tego języka jest wykonywana warunkowo. Język umożliwia wykonywanie następujących operacji:
odczyt wartości sygnałów logicznych doprowadzonych do modułu wejść/wyjść cyfrowych,
nadanie wartości wyjściowym sygnałom logicznym modułu wejść/wyjść cyfrowych,
nadawanie wartości zmiennym logicznym (flagom),
budowanie wyrażeń sumy i alternatywy logicznej, których argumentami są wartości sygnałów wejściowych modułów wejść/wyjść cyfrowych i wartości zmiennych logicznych,
wykorzystanie liczników zdarzeń logicznych,
wykorzystanie funkcji czasowych (opóźnienia i pętle czasowe),
sterowanie silnikami skokowymi (prędkością, przyspieszeniem i położeniem każdego z ramion manipulatora),
odtworzenie (w formie wywołania podprogramu) sekwencji ruchów manipulatora zapamiętanych w trybie "ręcznego sterowania",
wykorzystanie skoków programowych.
2.1. Ogólna budowa kroku programu
Program napisany w języku CCS składa się z kroków. Ilość kroków w programie nie może być większa niż 500. Zapis każdego kroku zawiera kolejno: numer kroku, warunek wykonania rozkazu, rozkaz, argumenty rozkazu i ewentualnie warunki czasowe. Program może zawierać również linie komentarza, wprowadzane najczęściej w celu objaśnienia przebiegu programu. Każda linia komentarza powinna rozpoczynać się znakiem * i może mieć dowolną zawartość. Ilość linii komentarza i ich położenie w programie są dowolne.
Zachowanie odpowiedniej struktury kroku programu ułatwia tablicowa budowa edytora programu (rys.Błąd! Nie określono zakładki.). Obszar edytora programu podzielony jest na siedem kolumn.
Rys.1. Ekran systemowy CCS.
Numer kroku, wpisywany w pierwszej kolumnie edytora, rozpoczyna każdą linię programu (za wyjątkiem linii komentarza rozpoczynającej się znakiem * ) i jest liczbą z zakresu 001500, składającą się zawsze z trzech cyfr. Numery kroków powinny być wprowadzane w kolejności rosnącej. W przykładzie 1 (poniżej) krok ma numer 10.
Rozkaz jest zasadniczym elementem kroku, wpisywanym w 4. kolumnie edytora. Jeśli wykonanie rozkazu uzależnione jest od stanu pewnych sygnałów (zmiennych) logicznych, w kolumnach 2. i 3. wpisywany jest warunek wykonania rozkazu. Jeśli warunek nie jest wpisany, rozkaz wykonywany jest bezwarunkowo. Istnieją również rozkazy, które nie mogą być wykonywane warunkowo (np. rozkaz DEL) oraz takie, które nie mogą być wykonywane bezwarunkowo (np. rozkaz ustawiający wyjścia logiczne). Jeśli rozkaz powoduje zmianę stanu wyjściowych sygnałów logicznych lub zmiennych logicznych, sposób zmiany tych stanów zapisuje się w kolumnach 5. i 6. Do ewentualnego wprowadzenia warunków czasowych służy kolumna 7. edytora.
2.2. Sposób zapisu warunku wykonania rozkazu.
Do zapisu warunku, pod którym wykonywany jest rozkaz służy pole drugie i trzecie. Warunek wejściowy, zapisywany w kolumnie 2. i 3. może być prosty lub złożony. Warunek złożony opisany jest w dalszej części instrukcji.
Warunek wejściowy prosty może mieć jedną z dwóch postaci:
- jest funkcją wejść logicznych modułu wejść/wyjść cyfrowych (D.ER-REA-88-S),
- jest zmienną logiczną, której wartość jest określona wcześniej w programie.
W pierwszym przypadku druga kolumna edytora zawiera adres modułu wejść/wyjść cyfrowych, a trzecia kolumna - wzorzec logiczny słowa wejściowego tego modułu. Wzorzec ten zapisywany jest przy pomocy trzech znaków: 0, 1, X. Znaczenie symboli opisuje tabela Błąd! Nie określono zakładki..
Tabela 1.
Znaczenie symboli używanych do zapisu wzorca słowa wejściowego modułu wejść/wyjśdć cyfrowych.
Symbol |
Znaczenie symbolu |
0 |
Odpowiednie wejście logiczne powinno być w stanie logicznym "0" |
1 |
Odpowiednie wejście powinno być w stanie logicznym "1" |
X |
Odpowiednie wejście może przyjmować dowolny stan logiczny |
Rozkaz zawarty w kroku jest wykonywany tylko wówczas, gdy słowo wejściowe wskazanego modułu odpowiada wzorcowi.
Przykład 1:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
010 |
01 |
101XXXXX |
|
00 |
0XXXXXXX |
|
Rozkaz zawarty w kroku 10. programu jest wykonywany tylko wówczas, gdy w słowie wejściowym modułu o adresie 01 sygnał numer 0 ma wartość "1" i sygnał numer 1 ma wartość "0" i sygnał numer 2 ma wartość "1". Wartości pozostałych sygnałów, oznaczonych we wzorcu symbolem "X", nie są sprawdzane podczas wykonywania rozkazu.
Przy drugim rodzaju warunku wejściowego prostego - tzn. wtedy, gdy jest on zmienną logiczną - druga i trzecia kolumna służą do wpisania nazwy zmiennej logicznej. Nazwa składa się z litery F, wpisanej w drugiej kolumnie, i dwucyfrowego numeru zmiennej, wpisanego w trzeciej kolumnie. Rozkaz zawarty w kroku jest wykonywany tylko wówczas, gdy wartość wskazanej zmiennej logicznej jest równa "1".
Przykład 2:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
013 |
F |
47 |
|
00 |
01XXXXXX |
|
Rozkaz zawarty w kroku 13. wykonywany jest tylko wówczas, gdy flaga F47 ma wartość "1"
Przykład 3:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
020 |
07 |
1XXXXXXX |
|
00 |
0XXXXXXX |
|
Jeżeli sygnał wejściowy numer 0 modułu wejść/wyjść cyfrowych o adresie 07 ma wartość "1", ustawiane jest słowo wyjściowe modułu wejść/wyjść cyfrowych o adresie 00 zgodnie z wzorcem zapisanym w kolumnie 6 (sygnał numer 0 przyjmuje wartość logiczną "0", pozostale sygnały nie zmienuają swoich stanów).
Przykład 4* :
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
011 |
|
|
DEL |
00 |
|
|
Krok numer 011 powoduje bezwarunkowe kasowanie wszystkich wyjść cyfrowych modułu o adresie 00.
2.3. Sposób zapisu wzorca sygnałów wyjściowych.
Piąta i szósta kolumna mogą służyć, w zależności od rodzaju rozkazu, do zapisu jednego z trzech elementów:
- wzorca, zgodnie z którym ustawiane jest słowo wyjściowe modułu wejść/wyjść cyfrowych, lub
- numeru jednego z dwóch silników skokowych podłączonych do modułu sterowania silnikami skokowymi, lub
- listy kasowanych flag (zmiennych logicznych).
W pierwszym przypadku piąta kolumna edytora zawiera adres modułu wejść/wyjść cyfrowych, a szósta kolumna - opis sposobu ustawienia wyjść logicznych tego modułu. Do opisu wyjścia stosowane są, podobnie jak w warunku wejściowym, trzy znaki: 0, 1, X. Znaczenie tych symboli opisuje tabela Błąd! Nie określono zakładki..
Tabela 2.
Znaczenie symboli używanych do zapisu wzorca słowa wyjściowego modułu wejść/wyjść cyfrowych.
Symbol |
Znaczenie symbolu |
0 |
Odpowiednie wyjście logiczne ustawiane jest w stan logiczny "0" |
1 |
Odpowiednie wyjście logiczne ustawiane jest w stan logiczny "1" |
X |
Stan logiczny odpowiedniego wyjścia nie jest zmieniany |
W przykładzie 2. wyjście nr 0 modułu o adresie 00 jest ustawiane w stan logiczny "0", a wyjście numer 1 tego modułu jest ustawiane w stan logiczny "1"; stany pozostałych wyjść (od 2 do 7) tego samego modułu nie są zmieniane.
2.4. Proste rozkazy ustawiania sygnałów i zmiennych logicznych oraz sterowania przebiegiem programu.
Ustawienie wyjść logicznych.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
NUMER KROKU |
WARUNEK WEJŚCIOWY |
ROZKAZ |
ADRES MODUŁU |
OPIS WYJŚCIA |
|
Jeśli spełniony jest warunek logiczny, słowo wyjściowe modułu wejść/wyjść cyfrowych o wskazanym adresie ustawiane jest zgodnie z opisem wyjścia. Jeśli warunek nie jest spełniony, program oczekuje na jego spełnienie. Rozkaz ustawiania wyjść logicznych ma zapis złożony z ośmiu spacji (znaków odstępu). Kroki zawierające rozkaz ustawiania wyjść logicznych pokazane są w przykładach: 1, 2, i 3 (powyżej).
Kasowanie wyjść logicznych.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
DEL |
ADRES MODUŁU |
|
|
Słowo wyjściowe modułu wejść/wyjść cyfrowych o adresie wskazanym w 5. kolumnie jest kasowane - wartości wszystkich wyjściowych sygnałów logicznych są ustawiane na "0". Rozkaz wykonywany jest zawsze bezwarunkowo. Patrz przykład 4 na stronie Błąd! Nie określono zakładki..
Selektywne kasowanie wyjść logicznych.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
DEL |
ADRES MODUŁU |
OPIS WYJŚCIA |
|
Rozkaz powoduje wybiórcze kasowanie sygnałów słowa wyjściowego modułu wejść/wyjść cyfrowych o wskazanym adresie. Kasowane są sygnały oznaczone w opisie wyjścia przez "1" i "0". Stan sygnałów oznaczonych przez "X" nie ulega zmianie.
Przykład 5:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
321 |
|
|
DEL |
00 |
X10XXXXX |
|
W kroku numer 321 kasowane są sygnały numer 1 i 2 modułu wejść/wyjść cyfrowych o adresie 00.
Bezwarunkowy rozkaz skoku.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
NUMER KROKU |
|
GOTOx |
|
|
|
Rozkaz powoduje bezwarunkowe przejście do dalszego wykonywania programu od kroku o numerze x. Wartość x, podobnie jak wpisywany w pierwszej kolumnie numer kroku, jest liczbą trzycyfrową z zakresu 0500.
Przykład 6:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
109 |
|
|
GOTO111 |
|
|
|
110 |
10 |
XXXXXXXX |
|
09 |
0XXXXXXX |
|
111 |
12 |
XXXXXXXX |
|
12 |
1XXXXXXX |
|
W wyniku wykonania kroku 109 nastąpi skok do kroku 111 i nadanie wartości logicznej 1 sygnałowi numer 0 modułu wejść/wyjść cyfrowych o adresie 12. Krok 110 nie jest wykonywany.
Rozkaz skoku warunkowego.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
NUMER KROKU |
WARUNEK WEJŚCIOWY |
|
GOTOx |
|
|
|
Jeśli spełniony jest warunek wejściowy, dalsze wykonanie programu odbywa się od kroku o numerze x. W przeciwnym wypadku wykonywany jest krok zapisany w tekście programu jako następny.
Przykład 7:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
109 |
09 |
1XXXXXXX |
GOTO111 |
|
|
|
110 |
10 |
XXXXXXXX |
|
09 |
0XXXXXXX |
|
111 |
12 |
XXXXXXXX |
|
12 |
1XXXXXXX |
|
Jeśli spełniony jest warunek wejściowy kroku 109 (sygnał numer 0 modułu o adresie 09 ma wartość logiczną 1), wykonywany jest skok do kroku 111. Jeśli warunek nie jest spełniony, wykonywany jest krok 110, a następnie krok 111.
Rozkaz skoku bezwarunkowego z ustawieniem wyjść.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
GOTOx |
ADRES MODUŁU |
OPIS WYJŚCIA |
|
Słowo wyjściowe modułu wejść /wyjść cyfrowych o wskazanym adresie ustawiane jest zgodnie z opisem wyjścia, po czym wykonywany jest skok bezwarunkowy do kroku o numerze x.
Przykład 8:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
109 |
|
|
GOTO111 |
|
|
|
110 |
10 |
XXXXXXXX |
|
09 |
0XXXXXXX |
|
111 |
12 |
XXXXXXXX |
|
12 |
1XXXXXXX |
|
Wykonanie kroku o numerze 109 powoduje bezwarunkowe nadanie wartości logicznej 1 sygnałowi numer 7 modułu o adresie 07, a następnie przejście do kroku 111. Krok o numerze 110 nie jest wykonywany.
Rozkaz skoku warunkowego z ustawieniem wyjść.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
WARUNEK WEJŚCIOWY |
GOTOx |
ADRES MODUŁU |
OPIS WYJŚCIA |
|
Jeśli spełniony jest warunek wejściowy, słowo wyjściowe modułu wejść/wyjść cyfrowych o wskazanym adresie ustawiane jest zgodnie z opisem wyjścia, po czym wykonywany jest skok do kroku o numerze x. Jeśli warunek nie jest spełniony, stan wyjść nie jest zmieniany i wykonywany jest krok zapisany w tekście programu jako następny.
Przykład 9:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
109 |
09 |
11XXXXXX |
GOTO111 |
07 |
XXXXXXX1 |
|
110 |
10 |
XXXXXXXX |
|
09 |
0XXXXXXX |
|
111 |
12 |
XXXXXXXX |
|
12 |
1XXXXXXX |
|
Jeśli spełniony jest warunek wejściowy kroku 109 (wejściowe sygnały logiczne numer 0 i 1 modułu wejść/wyjść cyfrowych o adresie 09 mają wartość logiczną 1), wyjściowemu sygnałowi logicznemu numer 7 modułu o adresie 07 jest nadawana wartość 1, a następnie wykonywany jest skok do kroku o numerze 111. Jeśli warunek nie jest spełniony, wyjścia logiczne w kroku 109 nie są ustawiane, wykonywany jest krok 110, a następnie 111.
Rozkaz warunkowego ustawienia flagi.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
WARUNEK WEJŚCIOWY |
Fn |
|
|
|
Jeśli spełniony jest warunek wejściowy, flaga (zmienna logiczna) o numerze n jest ustawiana (przyjmuje wartość "1"). Ustawioną w ten sposób flagę można następnie wykorzystać do budowy warunku wejściowego w innym lub tym samym kroku.
Przykład 10:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
095 |
09 |
X00XXXXX |
F10 |
|
|
|
096 |
F10 |
|
|
00 |
1XXXXXXX |
|
Jeśli sygnały wejściowe numer 1 i 2 modułu wejść/wyjść cyfrowych o adresie 09 mają wartość logiczną 0, zmiennej logicznej numer F10 nadawana jest wartość 1.
Rozkaz bezwarunkowego kasowania flagi.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
DEL |
F |
LISTA FLAG DO SKASOWANIA |
|
Rozkaz kasuje (tzn. nadaje wartość logiczną "0") wszystkie flagi o numerach wyliczonych w kolumnie 6. Rozkaz jest zawsze wykonywany bezwarunkowo. Lista kasowanych flag może zawierać nie mniej niż 1 i nie więcej niż 8 numerów flag.
Przykład 11:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
047 |
|
|
DEL |
F |
08 10 |
|
Wykonanie kroku numer 47 powoduje bezwarunkowe skasowanie (nadanie wartości logicznej 0) flag F8 i F10.
2.5. Rozkazy sterowania silnikiem skokowym.
Omówione w tym rozdziale rozkazy umożliwiają sterowanie silnikami skokowymi przyłączonymi do komputera za pośrednictwem interfejsu D.ER-REA-POSIT-STEP-2. Rozkazy albo ustawiają parametry ruchu, albo wywołują ruch o ustalonych wcześniej parametrach. Wszystkie rozkazy mogą zawierać warunek wejściowy prosty lub złożony. Jeśli warunek nie jest wpisany, rozkaz jest wykonywany bezwarunkowo.
Jeśli krok zawiera rozkaz odnoszący się do modułu pozycjonowania silników skokowych, to kolumna 5. zawiera adres tego modułu, a kolumna 6. oznaczenie jednego lub obu silników skokowych (ramion manipulatora) sterowanych przez ten moduł. Rozkaz odnosi się tylko do tego silnika skokowego, który jest wskazany w kolumnie 6. Sposób wyboru silników skokowych pokazuje tabela Błąd! Nie określono zakładki..
Tabela 3.
Znaczenie symboli używanych do wyboru ramienia manipulatora w rozkazach sterowania silnikami skokowymi.
Symbol |
Znaczenie symbolu |
A1 |
Rozkaz odnosi się do osi numer 1 |
A2 |
Rozkaz odnosi się do osi numer 2 |
A3 |
Rozkaz odnosi się do obu osi |
Ustawienie ramienia w położeniu bazowym.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
REF |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz powoduje przesunięcie wskazanego ramienia do punktu o współrzędnej 0, oznaczonego czujnikiem położenia. Rozkaz działa zawsze tak samo, niezależnie od tego, czy wcześniej został wykonany rozkaz Ax przesuwający układ współrzędnych.
Przykład 12:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
012 |
|
|
REF |
05 |
A1 |
|
Wykonanie kroku numer 12 powoduje ustawienie ramienia numer 1 w położeniu bazowym (oznaczonym czujnikiem położenia zamontowanym na tym ramieniu).
Ustawianie wartości prędkości początkowej.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
FRy |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz określa wartość prędkości początkowej dla wskazanego modułu i wskazanego ramienia. Znak y oznacza liczbę z zakresu 3125, która jest wartością prędkości w pewnej umownej skali. Ustawiona prędkość odnosi się tylko do najbliższego ruchu wywołanego rozkazem G lub P. Po zakończeniu każdego ruchu wywołanego tymi rozkazami prędkości początkowej FR jest automatycznie nadawana zawsze taka sama wartość standardowa. Jeśli więc przed wykonaniem następnego rozkazu G lub P wartość parametru FR nie jest ustawiona ponownie, ruch odbywa się ze standardową prędkością początkową.
Ustawienie wartości prędkości końcowej.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
Ry |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz określa wartość prędkości końcowej dla wskazanego modułu i wskazanego ramienia. Znak y oznacza wartość prędkości w skali od 3 do 125. Podana wartość prędkości końcowej powinna być większa lub równa prędkości początkowej dla tego samego ruchu, określonej rozkazem FR. Patrz uwagi dla rozkazu FR.
Ustawienie wartości przyspieszenia.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
Sy |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz określa wartość przyspieszenia w ruchu wskazanego ramienia sterowanego przez moduł wskazany w kolumnie 5. Symbol y oznacza wartość przyspieszenia w umownej skali od 1 do 255. Patrz uwagi dla rozkazu FR.
Ustawienie kierunku ruchu.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
D |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz ustawia kierunek ruchu silnika skokowego (ramienia manipulatora) o wskazanym numerze, sterowanego przez moduł o wskazanym adresie - rozkaz D+ ustawia dodatni kierunek ruchu (w stronę większych współrzędnych), natomiast rozkaz D- ustawia ujemny kierunek ruchu (w stronę mniejszych współrzędnych). Ustalony kierunek ruchu obowiązuje do miejsca w programie, w którym wydany zostanie następny rozkaz D.
Rozkaz nie wywołuje ruchu - ustalony kierunek jest wykorzystywany przez rozkazy G lub Gx.
Przesunięcie względne ramienia.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
Gx |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
||||||
albo |
|
|
|
|
|
||||||
NUMER KROKU |
|
G |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz powoduje przesunięcie wskazanego ramienia manipulatora. Opcjonalny parametr x, który jest liczbą z zakresu 060000, określa wielkość przesunięcia, mierzoną w jednostkach opisanych na stronie 11. Kierunek przesunięcia ustalony jest przez ostatnio wykonany rozkaz D. Przed wydaniem tego rozkazu należy ustawić parametry FR, R, S. Druga wersja rozkazu, bez podania wartości przesunięcia, wykorzystywany jest łącznie z rozkazem Nx (patrz niżej).
Przykład 13:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
013 |
|
|
D+ |
05 |
A1 |
|
014 |
|
|
FR10 |
05 |
A1 |
|
015 |
|
|
R100 |
05 |
A1 |
|
016 |
|
|
S120 |
05 |
A1 |
|
017 |
|
|
G1000 |
05 |
A1 |
|
018 |
|
|
D- |
01 |
A3 |
|
019 |
|
|
FR3 |
01 |
A3 |
|
020 |
|
|
R90 |
01 |
A3 |
|
021 |
|
|
S30 |
01 |
A3 |
|
022 |
|
|
G5000 |
01 |
A3 |
|
Wykonanie tego fragmentu programu powoduje przesunięcie ramienia 1 modułu o adresie 5 o 1000 jednostek w kierunku dodatnim z prędkością początkową 10, końcową 100 i przyspieszeniem 120. Następnie wykonywane jest przesunięcie o 5000 jednostek w kierunku ujemnym dwóch ramion podłączonych do modułu o adresie 1. Prędkość początkowa w tym ruchu wynosi 3, końcowa 90, a przyspieszenie 30.
Ustawienie wielkości przesunięcia względnego.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
Nx |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz ustala wielkość przesuniecia wskazanego ramienia, ale nie wywołuje ruchu - ustawione parametry są wykorzystywane przez rozkaz przesunięcia względnego G odnoszący się do tego samego ramienia. Liczba x powinna mieścić się w zakresie 060000.
Rozkaz przesunięcia bezwzględnego.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
Px |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz powoduje przesunięcie wskazanego ramienia do punktu o współrzędnych x (x=060000). Położenie początkowe ramienia może być dowolne - w zależności od położenia początkowego rozkaz wywoła ruch w kierunku ujemnym lub dodatnim. Sposób określania położenia ramienia opisany jest na stronie . Punkt zerowy osi współrzędnych może być przesunięty przez wykonanie wcześniej rozkazu Ax.
Przykład 14:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
012 |
|
|
N1000 |
05 |
A1 |
|
013 |
|
|
D+ |
05 |
A1 |
|
014 |
|
|
FR10 |
05 |
A1 |
|
015 |
|
|
R100 |
05 |
A1 |
|
016 |
|
|
S120 |
05 |
A1 |
|
017 |
|
|
G |
05 |
A1 |
|
018 |
|
|
FR3 |
01 |
A3 |
|
019 |
|
|
R90 |
01 |
A3 |
|
020 |
|
|
S30 |
01 |
A3 |
|
021 |
|
|
P5500 |
01 |
A3 |
|
Wykonanie przedstawionego powyżej fragmentu programu powoduje przesunięcie ramienia numer 1 podłączonego do modułu o adresie 5 o 1000 kroków w kierunku dodatnim, z prędkością początkową 10, p´redkością końcową 100 i przyspieszeniem 120. Następnie dwa ramiona podłączone za pośrednictwem modułu o adresie 1 przesuwane są do punktu o współrzędnych 5500.
Rozkaz zmiany układu współrzędnych.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
|||||
NUMER KROKU |
|
Ax |
ADRES MODUŁU |
OZNACZENIE RAMIENIA |
|
Rozkaz powoduje przesunięcie punktu zerowego układu współrzędnych wskazanego ramienia do punktu o współrzędnych x w aktualnie obowiązującym układzie współrzędnych. Rozkaz ten zmienia działanie rozkazu Px oraz rozkazu wywołania podprogramu - w obu przypadkach współrzędne obliczane są w przesuniętym układzie współrzędnych.
Przykład 15:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
012 |
|
|
FR10 |
05 |
A1 |
|
013 |
|
|
R100 |
05 |
A1 |
|
014 |
|
|
S120 |
05 |
A1 |
|
015 |
|
|
P4000 |
05 |
A1 |
|
016 |
|
|
A1000 |
05 |
A1 |
|
017 |
|
|
FR3 |
05 |
A1 |
|
018 |
|
|
R90 |
05 |
A1 |
|
019 |
|
|
S30 |
05 |
A1 |
|
020 |
|
|
P4000 |
05 |
A1 |
|
Wykonanie przedstawionego wyżej fragmentu programu powoduje ustawienie ramienia numer 1 modułu o adresie 5 do położenia o współrzędnych 4000. Następnie następuje zmiana układu współrzędnych, polegająca na nadaniu bieżącemu położeniu współrzędnej 1000. Po zmianie układu współrzędnych następuje przesunięcie tego samego ramienia do punktu o współrzędnych 4000 w nowym układzie współrzędnych.
2.6. Rozkazy z warunkami złożonymi.
Opisany dotychczas sposób budowania logicznych warunków wejściowych umożliwia uzależnienie wykonania rozkazu od stanu sygnałów wejściowych na wejściu jednego modułu wejść/wyjść cyfrowych lub od stanu jednej flagi. W pewnych sytuacjach może wystąpić konieczność uzależnienia wykonania rozkazu od stanu wielu zmiennych logicznych i sygnałów wprowadzanych z wielu modułów wejść/wyjść cyfrowych. Należy zastosować wówczas złożony warunek wejściowy. Warunek złożony jest sumą lub iloczynem logicznym, którego argumentami są warunki proste.
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
||||
NUMER KROKU |
WARUNEK WEJŚCIOWY 1 |
OPERATOR (AND/OR) |
|
|
||||||
NUMER KROKU |
WARUNEK WEJŚCIOWY 2 |
OPERATOR (AND/OR) |
|
|
||||||
.. |
.......... |
.... |
.......... |
..... |
||||||
NUMER KROKU |
WARUNEK WEJŚCIOWY n |
ROZKAZ |
OPIS WYJŚCIA |
WARUNEK CZASOWY |
Operator może być albo tylko operatorem koniunkcji (AND), albo tylko operatorem alternatywy (OR). Ilość argumentów wyrażenia alternatywy lub koniunkcji nie może być większa od 49 (krok z warunkiem złożonym nie może zawierać więcej niż 49 linii).
Jeśli warunek wejściowy złożony jest alternatywą, to rozkaz zapisany w ostatniej linii kroku jest wykonywany tylko wówczas, gdy spełniony jest przynajmniej jeden z warunków prostych zawartych w wyrażeniu alternatywy. Jeśli warunek wejściowy jest koniunkcją, rozkaz zapisany w ostatniej linii kroku jest wykonywany tylko wówczas, gdy jednocześnie spełnione są wszystkie warunki proste zawarte w wyrażeniu koniunkcji.
Przykład 16:
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
012 |
01 |
0XXXXXXX |
OR |
|
|
|
012 |
01 |
X1XXXXXX |
OR |
|
|
|
012 |
03 |
1XXXXXXX |
OR |
|
|
|
012 |
05 |
1XXXXXXX |
F10 |
|
|
|
Jeśli spełniony jest złożony warunek wejściowy (tzn. sygnał numer 0 modułu 1 ma wartość 0 lub sygnał numer 1 modułu 1 ma wartość 1 lub sygnał numer 0 modułu 3 ma wartość 1 lub sygnał numer 0 modułu 5 ma wartość 1), zmiennej logicznej F10 nadawana jest wartość logiczna 1.
2.7. Liczniki.
Rozkazy obsługi liczników umożliwiają zliczanie zdarzeń i uzależnianie przebiegu sterowania od stanu licznika.
Możliwe do zaprogramowania są dwa rodzaje liczników:
- inkrementacyjne - liczące "w górę", czyli powiększające swój stan o 1 w czasie liczenia od wartości "0" do wartości zadanej,
- dekrementacyjne - liczące "w dół", czyli zmniejszające swój stan o 1 w czasie zliczania od wartości zadanej do wartości "0".
Liczba, która jest stanem licznika, może być wykorzystana w rozkazie wywołania podprogramu (patrz str. Błąd! Nie określono zakładki.)
STEP No. |
MODULE/ FLAG |
INPUT 01234567 |
COMMAND |
MODULE/ FLAG |
OUTPUT 01234567 |
TIME |
||||
NUMER KROKU |
WARUNEK WEJŚCIOWY |
Cx/0-y albo Cx/y-0 |
|
|
||||||
NUMER KROKU |
|
ROZKAZ 1 |
OPIS WYJŚCIA |
|
||||||
NUMER KROKU |
|
ROZKAZ 2 |
OPIS WYJŚCIA |
|
Zapis Cx/0-y oznacza licznik inkrementacyjny. Y jest liczbą z zakresu 0999 która oznacza pojemność licznika, tzn. wartość, do której licznik zlicza.
Zapis Cx/y-0 oznacza licznik dekrementacyjny. Y jest w tym przypadku wartością początkową licznika, od której rozpoczyna się zliczanie do zera.
Dla obydwu rodzajów liczników x jest liczbą z zakresu 09 oznaczającą numer licznika - w jednym programie można wykorzystać lącznie nie więcej niż 10 liczników.
Działanie kroku z licznikiem jest następujące:
1. Po uruchomieniu programu stan licznika wynosi 0 dla licznika inkrementacyjnego lub y dla licznika dekrementacyjnego.
2. Jeśli spełniony jest warunek wejściowy, stan licznika jest powiększany (w liczniku inkrementacyjnym) lub pomniejszany (w liczniku dekrementacyjnym) o 1 i wykonywany jest ROZKAZ 2, po czym następuje przejście do następnego kroku programu.
3. Jeżeli warunek wejściowy nie jest spełniony, stan licznika nie ulega zmianie i nie jest wykonywany ani ROZKAZ 1, ani ROZKAZ 2; następuje przejście do następnego kroku programu.
4. Jeśli przy kolejnym wykonaniu kroku z rozkazem licznika stan licznika osiągnie wartość końcową (y dla licznika inkrementacyjnego lub 0 dla dekrementacyjnego), wykonywany jest ROZKAZ 1, po czym następuje przejście do następnego kroku programu.
Wyszukiwarka