1237


4.5.Programowanie sterowników.

Poszczególne instrukcje języka programowania sterownika mają różną długość. Zaprogramowane rozkazy sterownik wykonuje sekwencyjnie. Po ostatniej instrukcji wykonywana jest pierwsza. Znając czasy interpretacji poszczególnych rozkazów można oszacować czas wykonania pętli programu. Czas wykonania pętli programu zależy od sposobu zapisania algorytmu sterowania odpowiednimi rozkazami.

Poniżej zostanie przedstawiony sposób programowania, który wykorzystuje między innymi firma WES.

Argumenty instrukcji.

Rozkazy dla sterowników mogą być bezargumentowe, jednoargumentowe lub dwuargumentowe. Odpowiednim rozkazom przypisane są ściśle określone argumenty:

-wejścia I;

-wyjścia Q;

-flagi F;

-markery M;

-zegary T;

-liczniki C;

-negacje wyżej wymienionych argumentów.

Flagi są to komórki pamięci pomocniczej ogólnego zastosowania (np. do zapamiętywania pewnych informacji), które mogą być przez programistę zapisywane i odczytywane. Po resecie sterownika flagi są wyzerowane.

Markery są komórkami pamięci o ustalonej przez system zawartości. Mogą być tylko odczytywane.

Zegary służą do pomiaru czasu rzeczywistego. Czas może być ustawiony zewnętrznie z wykorzystaniem odpowiednich grup wejść lub ustalany na stałe w programie sterowania. Po resecie sterownika zegary mają wartość logiczną 1.

Liczniki służą do detekcji określonej liczby impulsów. Przez impuls rozumiemy zmianę z 0 na1 logiczne dowolnego argumentu np.: wejścia w czasie nie krótszym od obiegu pętli programu. Podobnie jak w przypadku zegarów odpowiednia nastawa może być zmienna lub stała. Po resecie sterownika liczniki mają wartość logiczną 1.

rozkaz

argumenty

działanie

LD

I Q F M

start logiczny

LD

NI NQ NF NM

start logiczny z negacją

LD

T C

start logiczny

LD

NT NC

start logiczny z negacją

AND

I Q F M

iloczyn logiczny

AND

NI NQ NF NM

iloczyn logiczny z negacją

AND

T C

iloczyn logiczny

AND

NT NC

iloczyn logiczny z negacją

OR

I Q F M

suma logiczna

OR

NI NQ NF NM

suma logiczna z negacją

OR

T C

suma logiczna

OR

NT NC

suma logiczna z negacją

AND-LD

iloczyn logiczny bloków

OR-LD

suma logiczna bloków

OUT

Q F

instrukcja wyjścia

OUT

NQ NF

instrukcja wyjścia z negacją

RES

Q F

reset (wyzerowanie)

SET

Q F

set (ustawienie)

JMP

etykieta

skok warunkowy

NOP

nic nie rób

TIM

_,#___

zegar ustawiony wewnętrznie

TIM

_,'_

zeg. ust. zewn. jednocyfrowy

TIM

_,”__

zeg. ust. zewn. dwucyfrowy

CNT

_,#___

licznik ustawiony wewnętrznie

CNT

_,'_

licz. ust. zewn. jednocyfrowy

CNT

_,”__

licz. ust. zewn. dwucyfrowy

END

koniec programu

Tab.1.Lista instrukcji.

4.5.1.Instrukcje LD, AND, OR, OUT.

Początek każdej linii logicznej oznaczamy używając instrukcji LD (load).

Przykład.1.

LD I10

OUT Q1

Połączenie szeregowe realizujemy instrukcją AND.

Przykład.2.

LD I2

AND I3

OUT Q5

Połączenie równoległe realizujemy funkcją OR.

Przykład.3.

LD F1

OR I10

OUT Q6

W instrukcjach LD, AND, OR, OUT argumenty mogą być również zanegowane.

Przykład.4.

LD NM2

AND NI2

OR NQ3

OUT NF7

4.5.2. Instrukcja AND-LD.

Instrukcje służą do zapisywania złożonych równań logicznych bez przymusu dodatkowego używania flag - pamięci pomocniczej. Spełniają rolę nawiasów w algebrze Boo'ela.

W przypadku potrzeby realizacji iloczynu logicznego między dwoma lub więcej blokami można użyć instrukcji AND-LD.

Przykład.5.

LD F5 pobranie wartości logicznej flagi

OR I3 suma logiczna z wejściem 13

LD Q1 pobranie wartości logicznej Q1

OR M6 suma logiczna z markerem M6

AND-LD iloczyn bloków a i b (iloczyn sum log.)

OUT Q16 wynik do Q16

4.5.3.Instrukcja OR-LD.

Instrukcja ta służy do równoległego łączenia bloków.

Przykład.6.

LD I1

AND I2 blok a

LD NI3

AND F2 blok b

OR-LD suma logiczna bloków

OUT F3

4.5.4.Instrukcja TIM.

Instrukcja TIM służy do pomiaru czasu rzeczywistego, realizacji opóźnień. Jest to instrukcja dwuargumentowa. Pierwszym argumentem jest numer używanego zegara. Drugi argument podaje nastawę zegara - czas po upływie którego zegar ma zmienić swoją wartość logiczną. Nastawa może być podana na jeden z trzech sposobów:

# oznacza, że nastawa jest niezmienna, ustalona w trakcie programowania;

” oznacza, że nastawą jest wartość w kodzie BCD odczytywana przez sterownik z odpowiednich wejść obiektowych, odczytywane są dwie cyfry (od 01 do 99) czyli czas można ustalić od 0.1s do 9.9s;

' oznacza, że nastawą jest wartość jednej cyfry w kodzie BCD odczytywana przez sterownik z odpowiednich wejść obiektowych, tym sposobem czas można nastawić w granicach od 0.1s do 0.9s.

Ponieważ nastawę dla zegara można wprowadzać różnymi sposobami, instrukcja TIM ma trzy postacie:

TIM T1,#2 zaprogramowanie zegara T1, czas 0.2s, nastawa stała

TIM T1,'2 zaprogramowanie zegara T1, nastawa

jednocyfrowa z kanału 2

TIM T2,”1 zaprogramowanie zegara T2, nastawa dwucyfrowa z kanału 1.

Przykład.7.

LD I2 po pojawieniu się sygnału I2

TIM T5,#25 i upływie 2.5s

LD T5

OUT Q1 ma być ustawione wyjście Q1

4.5.5.Instrukcja CNT.

Instrukcja CNT (counter) służy do zliczania impulsów. Programowanie liczników jest zbliżone do programowania zegarów. Instukcja TIM jest dwuargumentowa. Pierwszym argumentem jest numer licznika (jednocześnie zliczać może do ośmiu liczników). Drugi argument podaje nastawę licznika - ilość impulsów, po detekcji których licznik zmieni swoją wartość logiczną.

Nastawa może być podana na jeden z trzech sposobów:

# oznacza, że nastawa jest niezmienna, ustalona w trakcie programowania, jej wartość numeryczna może wynosić od 1 do 9999;

” oznacza, że nastawą jest wartość w kodzie BCD odczytywana przez sterownik z odpowiednich wejść obiektowych, odczytywane są dwie cyfry (od 01 do 99);

' oznacza, że nastawą jest wartość jednej cyfry 1-9 w kodzie BCD odczytywana przez sterownik z odpowiednich wejść. Instrukcja CNT może mieć trzy postacie:

CNT C1,#10 licznik C1, nastawa stała 10 impulsów

CNT C2,”2 licznik C2, nastawa z kanału ”2

CNT C5,'3 licznik C5, nastawa z kanału '3

4.5.6. Instrukcja NOP.

Instrukcja nic nie rób NOP (no function) może służyć np. do rezerwacji miejsca w programie lub zmniejszenia częstotliwości cyklu programu sterowania. Jest instrukcją bezargumentową.

4.5.7. Instrukcja JMP.

Instrukcja skoku warunkowego JMP (jump) w połączeniu z etykietą powoduje, że fragment programu między JMP a instrukcją zaetykietowaną może być niewykonywany.

Zaetykietować można każdą instrukcję, która znajduje się po rozkazie JMP, czyli dozwolone są tylko skoki w przód. Dwie lub więcej instrukcji nie może być zaetykietowane tą samą etykietą, ale ta sama etykieta może być związana z dowolną liczbą rozkazów JMP.

Etykieta to ciąg dowolnych znaków alfanumerycznych, lecz nie więcej niż pięciu, poprzedzony znakiem dolara $. Etykietą nie może być nazwa rozkazu lub argumentu. Bezpośrednio po etykiecie przed instrukcją zaetykietowaną musi wystąpić dwukropek :.

Przykład.8.

LD F1

TIM T1,#25

LD T1 T1 = 1 tylko przez okres cyklu programu

OUT NF1

JMP $et skok w funkcji stanu zegara T1

LD Q1

OUT NQ1 zmiana stanu wyjścia co 2.5s

$et: NOP instrukcja zaetykietowana

Impulsy z zegara przekształcone zostały na impulsy o stałym wypełnieniu i przypisane wyjściu Q1.

4.5.8. Instrukcja RES.

Rozkaz RES (reset) zeruje argument. Argumentem instrukcji RES jest wyjście Q albo flaga F, nie można używać negacji.

Przykład.9.

LD I1

OUT Q1

LD I2

AND I3

RES Q1

4.5.9. Instrukcja SET.

Rozkaz SET (set) ustawia argument. Argumentem instrukcji SET jest wyjście Q albo flaga F, nie można używać negacji. Rozkaz ten można interpretować jako instrukcję RES z zanegowanym argumentem.

Przykład.10.

LD I1

OUT F1

LD I2

AND I3

SET F1

4.5.10. Instrukcka END.

Instrukcja END oznacza koniec programu. W każdym programie ostatnią instrukcją musi być END, jednocześnie rozkaz ten może wystąpić tylko raz.

Poniżej zostanie przedstawiony inny sposób programowania wykorzystywany między innymi przez firmę DIGICOM POLAND.

Program sterowania odwzorowuje sposób funkcjonowania obiektu na ciąg logicznych rozkazów. Każdy rozkaz jest zbiorem poleceń dla procesora. Rozkazy są zapisywane w formie mnemotechnicznych symboli.

Tab.2. Lista instrukcji.

Tab.3. Przykłady programowania.

Operacje we/wy mikrokomputerów jednoukładowych rodziny MCS-51.

MCS-51 jest rodziną mikrokomputerów 8-bitowych, w której skład wchodzą układy wymienione w tabeli 4.

Typ

Technologia

Pojemność i rodzaj pamięci programu

Pojemność wewnętrznej pamięci danych (bajty)

8051 AH

HMOS II

4K ROM

128

8031 AH

HMOS II

-

128

8751 H

HMOS II

4K EPROM

128

80C51

CHMOS

4K ROM

128

80C31

CHMOS

-

128

87C51

CHMOS

4K EPROM

128

8052

HMOS II

8K ROM

256

8032

HMOS II

-

256

8732

HMOS

8K EPROM

256

Tab.4. Rodzina mikrokomputerów MCS-51.

Opis działania układów rodziny 80C51.

Opis ogólny.

Układy 80C31/80C51/87C51 tworzą rodzinę mikrokontrolerów wykonywanych w technologii CMOS. Układy te zawierają pamięć ROM 4K8 (80C51) lub EPROM (87C51), 1288 RAM, 32 linie wejścia/wyjścia, dwa 16-bitowe liczniki/timery, pięć żródeł przerwań o strukturze dwu poziomów zagnieżdżonych priorytetów, szeregowy port wejścia/wyjścia (do wykorzystania w komunikacji systemów wieloprocesorowych jako rozszerzenie wejścia/wyjścia albo jako w pełni dwukierunkowy kanał UART) oraz obwody oscylatora i zegara.

Opracowanie zawiera szczegółowy opis mikrokontrolera (rys. ), z uwzględnieniem:

-sterowników portów i ich dziłania jako portów wejścia/wyjścia i, dla portu 0 i 2, jako elementów magistrali;

-timerów/liczników;

-interfejsu szeregowego;

-systemu przerwań;

-ustawienia stanu początkowego (RESET);

-trybów pracy ze zmniejszonym poborem mocy dla układów CMOS.

a) b)

Rys. . Mikrokontroler 80C51; a) rozmieszczenie wyprowadzeń; b) symbol logiczny.

Cykl pracy mikrokomputera.

Cykl maszynowy został podzielony na sześć stanów, składających się z dwóch faz: P1 i P2, każda o długości jednego cyklu zegara. Tak więc pełny cykl maszynowy trwa 12 cykli zegara, nazywanych od S1P1 (stan pierwotny, faza pierwsza) do S6P2 (stan szósty, faza druga). Zwykle operacje arytmetyczno-logiczne mają miejsce w fazie pierwszej, a przesłania międzyrejestrowe w fazie drugiej. Rysunek () pokazuje przebieg pobrania i wykonania przykładowych rozkazów. Ponieważ na zewnątrz mikrokomputera nie są dostępne sygnały zegarów faz pierwszej i drugiej, na rysunku umieszczono, w celach orientacyjnych, przebieg sygnałów XTAL2 i ALE.

Rys. (). Sekwencje pobrania/wykonania rozkazów: a) rozkaz 1-bajtowy, 1-cyklowy, np. INC A; b) rozkaz 2-bajtowy, 1-cyklowy, np. ADD A,# data; c) rozkaz 1-bajtowy, 2-cyklowy, np. INC DPTR; d) rozkaz MOVX.

Sygnał ALE (adress latch enable) jest zwykle aktywny dwa razy w ciągu jednego cyklu maszynowego: po raz pierwszy w fazach S1P2 oraz S2P1 i po raz drugi w fazach S4P2 oraz S5P1.

Wykonanie rozkazu jednocyklowego rozpoczyna się w fazie S1P2, gdy kod operacyjny zostaje przesłany do wewnętrznego rejestru rozkazów mikrokomputera. Jeżeli z kodu operacyjnego wynika, że jest to rozkaz 2-bajtowy, brakujący bajt jest pobierany w stanie S4 tego samego cyklu maszynowego. W przypadku rozkazu 1-bajtowegoodczyt pamięci programu w stanie S4 również ma miejsce, lecz pobrany bajt (który jest kodem następnego rozkazu) jest ignorowany, a licznik rozkazu kończy się podczas S6P2.

Rejestry funkcji specjalnych.

Mapę obszaru pamięci wewnętrznej nazywanego obszarem rejestrów funkcji specjalnych (SFR) przedstawia rys. . Nie wszystkie adresy obszaru funkcji specjalnych są wykorzystane. Odczyt spod tych adresów zwróci dane przypadkowe, a zapis jest bezskuteczny. Program użytkownika nie powinien zapisywać „1” pod adresy niezaimplementowane, ponieważ w nowych układach rodziny 80C51 mogą one mieć znaczenie wywołujące nowe funkcje.

F8

FF

F0

B

F7

E8

EF

E0

ACC

E7

D8

DF

D0

PSW

D7

C8

CF

C0

C7

B8

IP

BF

B0

P3

B7

A8

IE

AF

A0

P2

A7

98

SCON

SBUF

9F

90

P1

97

88

TCON

TMOD

TL0

TL1

TH0

TH1

8F

80

P0

SP

DPL

DPH

PCON

87

Rys. . Mapa obszaru pamięci rejestrów funkcji specjalnych 80C51.

Akumulator.

ACC jest rejestrem akumulatora. Tym niemniej, w mnemonikach instrukcji odwołujących się do niego, jest oznaczany po prostu jako A.

Rejestr B.

Rejestr B jest wykorzystywany w operacjach mnożenia i dzielenia. Inne instrukcje mogą go wykorzystywać jako dodatkowy rejestr roboczy.

Słowo stanu programu PSW.

Rejestr PSW zawiera informacje o stanie programu, jak to przedstawia rys. .

CY

AC

F0

RS1

RS0

OV

-

P

Symbol

Pozycja

Nazwa i znaczenie

CY

PSW.7

Wskaźnik przeniesienia

AC

PSW.6

Wskaźnik przeniesienia pomocniczego (dla operacji na liczbach dziesiętnych kodowanych BCD)

F0

PSW.5

Wskaźnik 0 (dla dowolnego wykorzystania przez użytkownika)

RS1

PSW.4

Bity sterujące 1 i 0 wskaźnika banku rejestrów, ustawienie i zerowanie

RS0

PSW.3

programowo dla wybrania żądanego banku rejestrów

OV

PSW.2

Wskaźnik nadmiaru

-

PSW.1

Wskaźnik definiowany przez użytkownika

P

PSW.0

Wskaźnik parzystości, ustawiany/zerowany automatycznie w każdym cyklu maszynowym jako najmłodszy

Rys. . Rejestr słowa stanu programu PSW.

Układy te mają możliwość programowego przełączania w dwa tryby zmniejszonego poboru mocy - tryb bezczynności (idle) i tryb obniżonej mocy (power-down). Tryb bezczynności wstrzymuje funkcjonowanie jednostki centralnej, podczas gdy RAM, timery, port szeregowy i system przerwań kontynuują pracę. W trybie obniżonej mocy podtrzymywana jest zawartość RAM, ale wstrzymane działanie oscylatora, co zawiesza wykonywanie wszystkich funkcji.



Wyszukiwarka

Podobne podstrony:
1237
Dz U 2008 nr 201 poz 1237
1237
1237
1237
1237
1237
1237
87 1237 1248 Machinability and Tool Wear During the High Speed Milling of Some Hardened
G Kucharski – Początki rządów księcia Kazimierza Konradowica na Kujawach (1230 1237)
1237
1237 Manual

więcej podobnych podstron