WYKŁAD 6
KONSTRUKCJE JĘZYKOWE
JANUSZ KWAŚNIEWSKI AGH Katedra Automatyzacji Procesów
2
Konstrukcje językowe
ciągi instrukcji,
rozgałęzienia warunkowe,
pętle, oraz
podprogramy, zawierające powyższe elementy.
Instrukcje
Nie
Tak
Badanie
warunku
Funkcja
Nie
Tak
Badanie
warunku
Funkcja
Nie
Tak
Badanie
warunku
c)
b)
a)
3
Instrukcje do przenoszenia
danych
MOV (021) najczęściej używana instrukcja przenoszenia danych zarówno wewnątrz
sterownika jak również z zewnątrz np. wejścia analogowego, jedynie nie można
przenieść danych do obszarów instrukcji czasowych i licznikowych (T i C),
MVN (021) przenosi dane zanegowane,
BSET (071) przenosi te same dane od zadanego słowa startowego do zadanego
słowa końcowego; instrukcja przydatna np. do zerowania określonego obszaru
pamięci,
XCHG (073) zamienia miejscami dane pomiędzy dwoma określonymi słowami,
XCGL (562) jw. dla podwójnego słowa,
DIST (080) przenosi określone dane do słowa docelowego określonego zadanym
adresem powiększonym o parametr (wskaźnik), parametr ten można zmieniać,
dlatego instrukcja ta jest przydatna do działań na macierzach,
COLL (081) jest odwróconym działaniem do powyższej instrukcji, dane ze słowa
określonego zadanym adresem powiększonym o parametr (wskaźnik) przenoszone
są do słowa docelowego,
MOVB (082) umożliwia w zadanym słowie przenoszenie określonego bitu do innego
miejsca w tym słowie,
MOVD (083) umożliwia zamianę cyfr w ramach jednego słowa,
MOVL (498) instrukcja przenoszenia danych dla podwójnego słowa
4
Porównanie bez histerezy
CMP(020)
100
#32
10.03
255.07
0.01
„<”
Wyjście 10.01 uruchamia przy użyciu instrukcji
SBS (091) podprogram 1, wyjście 10.02
podprogram 2, a wyjście 10.03 podprogram 3.
Załączenie
warunku,
umożliwia
porównanie wartości w kanale 100 np.
sygnału
z
czujnika
temperatury
z wartością stałą 32
CD1>CD2
CD1=CD2
CD1<CD2
CD1
CD2
10.01
255.05
„>”
10.02
255.06
„=”
10.03
CD2
255.07
255.06
255.05
t
t
t
t
CD1
10.01
10.02
SBS(091) 1
SBS(091) 2
SBS(091) 3
5
Znaczniki lub instrukcje
znacznik równości = (P_EQ dawniej SR255.06)
lub instrukcje = (300), =DT (341),
znacznik większy niż > (P_GT dawniej SR255.05)
lub instrukcje > (320), >DT(345),
znacznik mniejszy niż < (P_LT dawniej SR255.07)
lub instrukcje < (310), <DT(343),
znacznik przeniesienia CARRY (P_CY dawniej SR 255.04).
6
Porównanie z histerezą
CMP(020)
250
#25
P_GT
0.01
„>”
Program umożliwia sterowanie urządze-
niem grzewczym mającym za zadanie
utrzymać temperaturę w pomieszczeniu w
przedziale 25 50 C, przy użyciu grzałki
załączanej wyjściem 10.05
Załączenie warunku umożliwia porówna-
nie wartości w kanale 250 np. sygnału
z czujnika temperatury z dolną wartością
stałą 25 oraz w drugim porównaniu
z górną wartością stałą 50.
CD<LL
CD=LL
CD>UL
CD
LL
10.01
10.01
P_LT
„<”
UL
LL
P_GT
P_LT
10.01
10.02
t
t
t
t
CD
CMP(020)
250
#50
CD
UL
10.05
10.02
10.05
t
SET
10.02
RSET
10.02
7
Porównanie z histerezą
ZCP(088)
250
#25
#50
0.01
Załączenie
warunku
umożliwia
porównanie wartości w kanale 250 np.
sygnału z czujnika temperatury z dolną
wartością stałą 25 oraz w drugim
porównaniu z górną wartością stałą 50.
CD>UL
LLCDUL
CD
LL
UL
10.03
P_GT
„>”
UL
LL
P_GT
P_EQ
10.02
t
t
t
t
CD
10.05
10.02
10.05
t
SET
10.02
RSET
10.02
P_EQ
„=”
DIFD(014)
10.03
10.03
t
8
Pętla
piła
MOV(02
1)
#0000
D0000
0.0
2
Maksymalne
nachylenie
piły
otrzymujemy
po
usunięciu
generatora P_0_1s, czyli 0.1 sek
jednak nachylenie to będzie się
zmieniało wraz ze zmianą czasu
cyklu.
Zastosowanie
różniczkowej
instrukcji
INC
powoduje, że tylko w jednym
cyklu, na przednim zboczu
impulsu 0,1 sek powiększa się
zawartość D 0000
Jeżeli zastosuje się tu
styk 10.00 to w D 0000
będziemy
mieli
przebieg piłokształtny.
UL
górna wartość UL,
amplituda
przebiegu
piłokształtnego
startowa wartość
LL,
10.0
1
UL
LL
10.
00
Warunek
0.01
Start
0.02
t
t
t
t
D
00000
„=
”
10.00
P_EQ
JMP(004
)
1
0.0
2
@INC(03
8)
D0000
0.0
1
MOV(02
1)
#0250
D0001
P_0_1
s
10.0
0
CMP(02
0)
D0001
D0000
JME(00
5)
1
„<
”
10.01
10.0
1
P_LT
Pozostała część
programu
END(00
1)
0,1 sek
nachylen
ie
LL
Sta
rt
Star
t
9
Podprogramy
Podprogramy dzielą większe zadania sterownicze na mniejsze
zadania i umożliwiają wielokrotne zastosowanie danego zestawu
instrukcji
Główny program
Podprogram 1
Główny program
Podprogram 1
Główny program
Podprogramy mogą być uruchamiane:
• wywołaniami (instrukcją), jest to często warunek wykonalności,
• przerwaniami.
10
Wywołanie warunkiem wykonalności
Program główny
SBS (091) 00
Program główny
SBN (092) 00
Podprogam
RET (093)
END (001)
END (001)
RET(093)
SBN (092) 00
SBS (091) 00
Warunek
wykonalności
Podprogram
11
Ograniczona liczba zagnieżdżeń
RET(093)
SBS(091) 011
SBN(092) 010
SBS(091) 010
RET(093)
SBS(091) 012
SBN(092) 011
RET(093)
SBN(091) 012
Pierwsze
zagnieżdżenie
Drugie
zagnieżdżenie
12
Warunki wykonalności
wybierają fragmenty programu
Program główny
A
SBS (091) 000
Program główny
B
SBN (092) 001
Podprogam
E
RET (093)
END (001)
SBN (092) 000
Podprogam
D
RET (093)
SBS (091) 001
Program główny
C
Wyłączone warunki wykonalności 000 i 001
A B C
Wyłączony tylko warunek wykonalności 001
A D B C
Wyłączony tylko warunek wykonalności 000
A B E C
Włączone warunki wykonalności 000 i 001
A D B E C
13
Makro-
instrukcje
Podprogram definiujący makroinstrukcję MCRO.
Po cztery kolejne słowa są zarezerwowane na
wejścia i wyjścia. W sterowniku OMRON
CP1H są to dla wejść słowa A 600÷603, dla wyjść
A 604÷607 (dla CQM1 są to dla wejść IR 096
099, dla wyjść IR 196 199, dla CPM1 są to
odpowiednio SR 232235 i SR 236239).
Natomiast w powyższym programie realizowanym
w sterowniku mogą być bity z dowolnego obszaru
pamięci, pod warunkiem, że jest pełna
konsekwencja z zachowaniem ich kolejności.
Numer podprogramu
P_On
„1”
SBN(092) 090
MCRO(099)
090
0010
H 009
MCRO(099)
090
0005
0120
MCRO(099)
090
0002
0105
MCRO(099)
090
0000
0100
A600.01
A604.01
A600.02
A604.00
A600.00
A604.00
A604.01
RET(093)
000.01
100.01
000.02
100.00
000.00
100.00
100.01
Pierwsze słowo wejść
Pierwsze słowo wyjść
002.01
105.01
002.02
105.00
002.00
105.00
105.01
005.01
120.01
005.02
120.00
005.00
120.00
120.01
010.01
H09.01
010.02
H09.00
010.00
H09.00
H09.01
Numer podprogramu
Pierwsze słowo wejść
Pierwsze słowo wyjść
Numer podprogramu
Pierwsze słowo wejść
Pierwsze słowo wyjść
Numer podprogramu
Pierwsze słowo wejść
Pierwsze słowo wyjść
Postać programu
z wykorzystaniem instrukcji MCRO
Postać programu
bez wykorzystania instrukcji MCRO
14
Przerwania
W sterownikach najczęściej stosuje się przerwania:
sprzętowe (ang. interrupts) w trybie bezpośrednim lub
licznikowym (ustawiane wejścia w CPU lub specjalne moduły
przerwań),
czasowe, zegarowe, planowe, (ang. schedule, timed
interrupts) (specjalne bloki programowe lub instrukcje
generujące przerwania co określoną chwilę czasową ),
szybkie licznikowe (ang. high speed counter interrupts)
(ustawiane wejścia w CPU lub specjalne moduły).
Dla przerwań równorzędnych priorytet przerwania sprzętowego
na wejściu 0 > przerwania na wejściu 1 >...
>przerwania na wejściu n, zewnętrznego specjalnego modułu >
>przerwania na wejściach jw. w CPU>
>przerwania szybkiego licznika>
>przerwania czasowego.
15
Przerwania sprzętowe
tryb bezpośredni i licznikowy
Główny program
Podprogram, zadanie
Główny program
Stan przerwania
sprzętowego lub
programowego
Główny program
Podprogram, zadanie
Główny program
zadana liczba impulsów
16
Przerwania sprzętowe
tryb bezpośredni i licznikowy
@MSKS(690
)113
(lub13)
#0000
N: Kod wejścia
0.3
SBN(092) 000
RET(093)
Podprogram
lub zadanie 144
Warunek wyboru
przerwania
@MSKS(69
0
)
#0000
S: Zbocze narastające, ON
(#0000),
opadające, OFF
(#0001)
0.0
103 (lub 9)
N: Kod wejścia
0.3
S: Zezwolenie, nie maskowane
(#0000),
brak zezwolenia, maskowane
(#0001)
S: Dekrementacja
(#0002),
inkrementacja
(#0003)
MOV(021)
#0014
A535
Wpisanie 20
impulsów
(0014hex)
RET(093)
Podprogram
lub zadanie
144
Warunek wyboru
przerwania
@MSKS(690
)
#0002
0.0
113 (lub13)
N: Kod wejścia
0.3
SBN(092) 000
@MSKS(690
)
#0002
113 (lub13)
N: Kod wejścia
0.3
S: Zbocze narastające
(#0000),
opadające (#0001)
TRYB
LICZNIKOWY
TRYB
BEZPOŚREDNI
W przerwaniu czasowym stosujemy tylko jedną instrukcję MSKS i operand 4
dla przerwania bez zerowania lub 14 z zerowaniem, drugi operand służy do
ustawienia liczby 0÷270F hex (0÷9999) mnożonej przez ustawienie w Settings
w zakładce Timings wybierając Scheduling Interrupt Interval.
17
Przerwania szybkie licznikowe
Sygnał
z
enkoder
a
Tryb rewersyjny
1 2 3 4 5 6 7 8 7 6 5 4 3
2 1 0 -1 0
Stan licznika
Faza A
Faza B
Przyrost
Ubytek
Tryb przyrostowy
Stan licznika
1 2 3 4 5
Wejście
impulso
we
Faza Z zerowanie sprzętowe
i/lub programowe
Wejście
podając
e
kierune
k
Do 1 MHz
18
Przerwania szybkie licznikowe
W ustawieniach sterownika CP1H Settings:
• w zakładce Built-in Input wybieramy numer licznika (0÷3)
• określamy typ liczenia Counting mode:
• liniowy Linear mode (8000 0000÷7FFF FFFF i może wystąpić przepełnienie)
• kołowy Circular mode, przy czym należy tu określić maksymalną liczbę po której nastąpi
nawrót od zera (0÷FFFF FFFF hex, nigdy się nie przepełni).
• typ zerowania Reset:
• fazą Z (sprzętowe) + programowe (programowe musi być na początku cyklu),
• programowe zerowanie (bitem zerującym),
• fazą Z + programowe (porównujące),
• programowe zerowanie (porównujące).
• tryb pracy licznika Input Setting:
• wejście fazowo-różnicowe Differentia phase input,
• impulsowe + kierunek obrotów Pulse+direction input,
• zliczanie w dół i w górę (rewersyjne) Up/Down input,
• impulsowe inkrementalne wejście Increment pulse input.
19
Instrukcje do przerwania
szybkim licznikiem
@CTBL(88
2)
#0000
P: Numer licznika 0
(0÷3)
Warunek wyboru
przerwania
C: 0000 hex – tablica progową z
natychmiastowym rozpoczęciem
porównania
0.0
#00
00
D10000
D: Pierwsze słowo tablicy
przedziałowej
W 0.0
W
0.0
W 0.1
A
531.0
A 531.0W
0.0
0.1
Program
cykliczny
Program przerwania,
zadanie 10
100.0
Poprawnie
W
0.1
A
274.0
END (001)
W 0.1
A 274.0
A 274.0 Znacznik
spełnienia
warunku porównania
100.1 Błędnie
A 531.0 Zerowanie
Trzy instrukcje pomocnicze:
INI(880) – do zainicjowania odczytu tablic,
PRV(881)- odczytywanie bieżącego stanu liczników PV,
PRV2(883)- licznikiem 0 ma możliwość mierzenia częstotliwości.
20
Przerwanie szybkie licznikowe
tablica progowa
Tablica progowa
Dopuszczalne wartości dla progów:
04 294 967 295 (0000 0000 FFFF FFFF hex)
górne słowo dolne słowo
D 0000 0002 Liczba progów: 2 (maksymalnie 48 (30 hex))
D 0001 1000 Wartość docelowa progu 1: 1000 (c)
D 0002 0000 (tu wpisuje się górne słowo)
D 0003 000A Spełnienie warunku uruchamia zadanie 10 (A hex)
D 0004 2000 Wartość docelowa progu 2: 2000
D 0005 0000
D 0006 000B Spełnienie warunku uruchamia zadanie 11 (B hex)
Uwaga: Słowa z numerami zadań na najniższych ma numer a na
najwyższym bicie kierunek: 0-inkrementalny lub 1- dekrementalny
Rozpoczęcie zadania 10
Rozp. zadania 11
A 271 i A 270 lub
miejsce określone w PRV (062)
t
t
t
2000
1000
A 274.0
A 274.1
21
Przerwania szybkie licznikowe
tablica przedziałowa
Rozpoczęcie zadania 10
Rozp. zadania 11
A 271 i A 270 lub
miejsce określ. w PRV (062)
Przedziałowa tablica porównań
, ma zawsze 8 przedziałów
D 00000 1500 Dolna granica przedziału 1: 1500 (dolne słowo)
D 00001 0000 (górne słowo)
D 00002 2000 Górna granica przedziału 1: 2000 (dolne słowo)
D 00003 0000 (górne słowo)
D 00004 000A Spełnienie warunku uruchamia zadanie 10 (A hex)
D 00005 2800 Dolna granica przedziału 2: 2800
D 00006 0000
D 00007 7500 Górna granica przedziału 2: 7500
D 00008 0000
D 00009 000B Spełnienie warunku uruchamia zadanie 11
D 00010 0000
D 00011 0000
D 00012 0000
D 00013 0000
D 00014 FFFF Przedział 3 niewykorzystany (AAAA przerwanie
nie wykonywane)
D 00035 0000
D 00036 0000
D 00037 0000
D 00038 0000
D 00039 FFFF Przedział 8 niewykorzystany
t
t
t
7500
1500
2000
2800
A274.0
A274.1
22
Dziękuję za uwagę
i pobudzam do stosowania ciekawych
konstrukcji językowych