 
1
Politechnika Krakowska im. T. Kościuszki
INSTYTUT INFORMATYKI STOSOWANEJ
Zastosowanie sterownika M91-2-R2C w procesach przemysłowych
Mikrokontrolery i 
Sterowniki 
LABORATORIUM
3 x 45min
Lab. nr 2
1. Cel
Celem  ćwiczenia jest zapoznanie się ze sterowaniem procesami przemysłowymi, kontrolą 
stanu obiektu, tworzeniem bazy danych wielkości obserwowanych, zastosowaniem szybkich 
wejść licznikowych (HSI) oraz przerwań w sterowniku M91-2-R2C.   
2. Sterowanie i nadzór procesu produkcji
W rozdziale tym bazujemy na programie napisanym na poprzednich zajęciach w rozdziale 6 
(Edytor HMI), podpunkt 6.2 (Przykłady zastosowania). Należy usunąć ostatnią linię ww. 
programu, a następnie przystąpić do napisania pozostałej części programu. 
Po wprowadzeniu numeru identyfikacyjnego i zatwierdzeniu go przez sterownik użytkownik 
musi wprowadzić ilość pudełek, jaka ma się znaleźć w opakowaniu zbiorczym. 
Wprowadzanie liczby pudełek powinno się odbyć przy wykorzystaniu klawiatury sterownika. 
Maksymalna liczba pudełek w opakowaniu zbiorczym wynosi 99. 
Operator potrzebuje również informacji o aktualnej liczbie pudełek w opakowaniu zbiorczym, 
jak również powinien wprowadzić czas po upływie, którego maszyna będzie poddana 
konserwacji, a zatem nie będzie pracować. 
Tworzenie zmiennej ekranowej 
Należy wybrać na pasku narzędziowym ikon Display. Powinien otworzyć się edytor 
komunikatów. Nazwijmy tworzony komunikat (komunikat 4) Ustawienie ilości paczek, 
wpisując nazwę w polu tytułu. Następnie należy zatwierdzić nazwę klawiszem ENTER. 
Wpisana nazwa powinna się pojawić w oknie nawigatora. 
W polu wyświetlacza należy wpisać tekst Liczba paczek:, a następnie po zaznaczeniu dwu 
kolejnych pól załączmy do nich zmienną ekranową, klikając  Attach Variable. W okienku 
Attach Variable należy wpisać VR5 Ustaw ilość paczek i zatwierdzić OK.  
 
Formatowanie zmiennej ekranowej 
Z okna nawigatora należy otworzyć zmienną ekranową 5. Z listy typów zmiennej należy 
wybrać typ całkowity - Integer, następnie kliknij przycisk Link To (skojarz). Otworzy się okno 
Set Link to Int. Nazwijmy zmienną całkowitą  MI11 Ustawienia ilości paczek. Na liście 
informacji o zmiennej zaznaczymy Keypad Entry (możliwość wprowadzenia wartości 
zmiennej MI11 z klawiatury).  
Zaznaczmy pole Start with Clear Field (rozpocznij od pustego pola). Jeśli tego nie zrobimy 
na wyświetlaczu sterownika pojawi się wartość ostatnio wprowadzanej zmiennej MI 11. 
Następnie należy uaktywnić granice zmiennej zaznaczając opcję Enable Limits. W polu Min 
wpisujemy wartość 1; w polu Max wartość 99.  
Po tym jak operator wprowadzi liczbę pudełek w opakowaniu zbiorczym należy zdefiniować 
czas, w jakim ma się odbyć konserwacja maszyny. 
 
 
 
 
2
Tworzenie skoku warunkowego 
Po wpisaniu liczby pudełek operator przyciska na klawiaturze sterownika klawisz ENTER. 
Wciśnięcie tego klawisza powinno powodować spełnienie warunku skoku oraz przejście do 
innego komunikatu. 
W oknie nawigatora kliknij Display 4 (komunikat 4) należy kliknąć na polu warunku 
pierwszego skoku Jump Conditions. Otworzy się okno edycji warunku - Define Jump to 
Condition. Jako warunek wybieramy bit SB30 Keypad entries complete (wprowadzanie z 
klawiatury zakończone). Otworzy się okno edycji docelowego komunikatu - Define to 
Display Jump. Należy wybrać docelowy komunikat - DS 5 Dane czasu konserwacji. 
W oknie DS5 należy wpisać tekst stały  Wprowadź dane czasu konserw., a następnie 
zadeklarować warunek skoku MB9 Czas na skok do 6 i wybrać docelowy komunikat DS6 
Wprowadzenie czasu początkowego.  
 
Ustawianie czasu rozpoczęcia konserwacji maszyny 
W polu wyświetlacza wpisujemy tekst Wprowadź czas początk.: i rezerwujemy miejsce, w 
którym będzie wyświetlany czas zaznaczając myszką 5 segmentów pola wyświetlacza. 
Dołączamy zmienną ekranową, klikając ikonkę Attach Variable (dołącz zmienną). Zmienną tą 
nazwijmy VR2 Czas początkowy. 
 
Formatowanie zmiennej ekranowej 
Należy otworzyć zmienną 2 klikając na niej w oknie nawigatora a następnie z listy typów 
zmiennej wybrać typ funkcja czasowa –Time Functions. Otworzy się okno edycji Set Link to 
Time function box. Należy wpisać nazwę zmiennej skojarzonej MI 2 Czas początkowy. 
Zmienna ekranowa 2 jest teraz powiązana ze zmienną całkowitą. Aby mogła być 
modyfikowalna z klawiatury należy zaznaczyć Keypad Entry. 
 
Gdy wprowadzanie czasu początkowego jest zakończone program powinien przeskoczyć do 
ekranu DS 7 Wprowadzenie czasu końcowego. Zadanie proszę wykonać analogicznie do 
zadania związanego z ekranem 6.  
 
Na ekranie 7 wpisać tekst Wprowadź czas końcowy: i zarezerwować 5 pól dla zmiennej 
ekranowej VR 3 Czas końcowy skojarzonej ze zmienną MI3 Czas końcowy i formatowanej 
identycznie jak VR2. Po zakończeniu wprowadzania danych powinien nastąpić skok do 
ekranu DS 8 Licznik paczek. 
 
Wyświetlanie liczby zliczonych paczek 
Na ekranie DS8 należy wpisać tekst stały  Paczka i zarezerwować trzy pola dla zmiennej 
VR4 Licznik paczek, następnie wpisać z i zarezerwować trzy pola dla zmiennej VR1 Liczba 
paczek na skrzynkę. Zmienna VR 4 będzie skojarzona ze zmienną  MI10 Bieżący numer 
paczki, a VR1 ze zmienną  MI 11 Ustawienia ilości paczek. Zarówno VR4 jak i VR1 to 
zmienne całkowite (Integer). 
 
Projektowanie skoków warunkowych 
Należy zaprojektować tutaj trzy warunki. Pierwszy z nich to MB41 Komunikat błędu 1, gdy 
dojdzie do usterki 1 skocz do ekranu DS9 Komunikaty operatora. Pozostałe dwa warunki 
MB42 Komunikat błędu 2 oraz MB2 Skrzynka pełna również powinny powodować skok do 
DS9 i wyświetlenie odpowiedniego komunikatu. 
 
Definiowanie komunikatu o stanie maszyny 
Na ekranie DS9 należy zarezerwować w polu wyświetlacza miejsce na wiadomość, 
zaznaczając wszystkie segmenty w górnej linii. Następnie dołącz zmienną ekranową klikając 
Attach Variable. W oknie edycji należy wprowadzić VR 8 Komunikaty operatora. 
Należy otworzyć zmienną 8 klikając na niej w oknie nawigatora, z listy typów zmiennej 
wybrać typ lista -List. Otworzy się okno edycji Set Link to List i wpisać nazwę zmiennej 
 
3
całkowitej MI5 Lista komunikatów operatora. Następnie należy wprowadzić do tabeli treść 
komunikatu 1,2 i 3 jak następuje: Skrzynka pełna, Paczka utknęła!, Podajnik zatrzym. 
 
Projektowanie skoków warunkowych 
Należy zaprojektować trzy warunki. Pierwszy z nich to warunek, gdy wciśnięto Enter SB 53 
Enter Key is pressed ze skokiem do ekranu DS8 Licznik paczek. Drugi to warunek 
powrotu do ekranu logowania MB4 Wróć do ekranu logowania ze skokiem do DS1 Ekran 
logowania. Trzeci zaś to warunek, gdy czas wyświetlania komunikatu minął  MB5 Czas 
komunikatu minął ze skokiem do ekranu DS8 Licznik paczek. 
Program drabinkowy 
 
 
4
 
5
 
6
3. Sterowanie i nadzór napełniania zbiornika
 
Ta przykładowa aplikacja steruje pompą według poziomu płynu w zbiorniku. Wejście 
poziomu jest realizowane na wejściu analogowym, ustawionym na 0-10V (0-1023 dla 10 
bitów wejścia) i konwertowane do poziomu 0-123.0 cm. Dla napięcia 0-7,5V (zakres 
dostępny na naszych stanowiskach) jest to poziom 0-90.0 cm. Poziom ten jest 
przedstawiony razem z stanem pompy na ekranie 1. Wartości poziomu kontrolowane przez 
pompy są przedstawione na ekranach #2 i #3. Operator może wprowadzać wartości poziomu 
za pomocą panelu operatorskiego. 
 
Ustawianie zmiennej dla wejścia analogowego 
Aby wartość pobrana z wejścia analogowego AI0 mogła być przesłana do programu należy 
ustawić ją klikając Hardware Configuration na pasku narzędziowym ikon. Następnie należy 
wybrać  właściwy sterownik z menu po lewej stronie. Po pojawieniu się zakładek należy 
wybrać zakładkę Analog Input. W kolumnie Type dla wejścia AI0 wybrać Analog (0-10V). 
Pojawi się okienko dialogowe, w którym należy wybrać MI 0 Poziom wejścia analogowego 
(analog level). 
 
 
 
7
Tworzenie zmiennej ekranowej 
Należy wybrać na pasku narzędziowym ikon Display. Powinien otworzyć się edytor 
komunikatów. Pierwszy ekran edytora komunikatów nazwijmy DS1 Poziom w cm. Należy w 
pierwszej linii wyświetlacza wpisać tekst stały  Poziom:, a następnie zarezerwować 4 pola 
dla zmiennej ekranowej całkowitej VR1 Aktualny poziom w cm i skojarzyć go ze zmienną 
MI1 Poziom zbiornika w cm. Po zadeklarowaniu zmiennej VR1 na ekranie należy dopisać 
text  cm. W drugiej linii należy wpisać tekst Stan:, a następnie zarezerwować 6 pól 
wyświetlacza dla zmiennej bitowej VR4 Wyjście pompy i skojarzyć  ją ze zmienną  O0 
Wyjście pompy. 
 
Formatowanie zmiennej ekranowej 
Zmienną ekranową VR1 należy sformatować jako zmienną całkowitą (Integer) z parametrem 
Format uwzględniającym jedno miejsce po przecinku. Zmienną ekranową VR4 należy 
sformatować jako zmienną bitową (Bit). Dla wartości bitu wyjścia O0 równej 0 VR4 będzie 
przyjmować wartość Stop dla jedynki wartość Praca.  
 
Projektowanie skoków warunkowych 
Należy zaprojektować tutaj dwa warunki. Pierwszy z nich to SB52 Right Arrow Key is 
pressed, gdy naciśnięta zostanie strzałka w prawo skocz do ekranu DS2 Ustaw poziom dla 
startu pompy. Drugi z nich to SB51 Left Arrow Key is pressed, gdy naciśnięta zostanie 
strzałka w lewo skocz do ekranu DS3 Ustaw poziom dla zatrzymania pompy. 
 
 
Tworzenie i formatowanie zmiennej ekranowej 
Pojawiły się dwa nowe ekrany DS2 i DS3. W pierwszej linii ekranu DS2 należy wpisać tekst 
Poziom startu: a następnie zarezerwować 4 pola dla zmiennej ekranowej całkowitej  VR2 
Niski poziom dla startu pompy i skojarzyć  ją ze zmienną całkowitą  MI5 Poziom startu 
(niski). 
Zmienna VR2 jest zmienną całkowitą o parametrach Format dla jednego miejsca po 
przecinku. Dla tej zmiennej należy zaznaczyć pole Keypad Entry co pozwoli na wpisywanie 
wartości zmiennej. Po polach zmiennej wpisać tekst cm. Deklarujemy dla niej również 
parametr Enable limits w zakresie 0-800. 
 
Projektowanie skoków warunkowych 
Należy zaprojektować trzy warunki. Pierwszy z nich to SB52 Right Arrow Key is pressed, 
gdy naciśnięta zostanie strzałka w prawo skocz do ekranu DS3 Ustaw poziom dla 
zatrzymania pompy. Drugi z nich to SB51 Left Arrow Key is pressed, gdy naciśnięta 
zostanie strzałka w lewo skocz do ekranu DS1 Poziom w cm. Trzeci z nich to SB53 Enter 
Key is pressed, gdy naciśnięty zostanie Enter skocz do ekranu DS2 Ustaw poziom dla 
startu pompy. 
 
Tworzenie i formatowanie zmiennej ekranowej 
Analogicznie tworzony jest ekran DS3 Ustaw poziom dla zatrzymania pompy. Tekst w 
pierwszej linii to Poziom stopu:. Zmienna ekranowa VR3 Poziom dla zatrzymania pompy 
również rezerwuje 4 pola. Skojarzona jest ona ze zmienną całkowitą  MI6 Poziom dla 
zatrzymania pompy i sformatowana identycznie jak zmienna ekranowa VR2. 
 
Projektowanie skoków warunkowych 
Należy zaprojektować trzy warunki. Pierwszy z nich to SB52 Right Arrow Key is pressed, 
gdy naciśnięta zostanie strzałka w prawo skocz do ekranu DS1 Poziom w cm. Drugi z nich 
to  SB51 Left Arrow Key is pressed, gdy naciśnięta zostanie strzałka w lewo skocz do 
ekranu DS2 Ustaw poziom dla startu pompy. Trzeci z nich to SB53 Enter Key is pressed, 
gdy naciśnięty zostanie Enter skocz do ekranu DS3 Ustaw poziom dla zatrzymania 
pompy. 
 
 
8
Program drabinkowy 
Konwertowanie wartości analogowej 0-10V (0-1023) do wartości poziomu mierzonej w cm. 
Aby przekonwertować 0-1230 (1230.0) cm, wartość jest linearyzowana przez zdefiniowanie 
punktów bazowych jak następuje: 
 X1=204, X2=1023, Y1=0 and Y2=1229. 
Wartości takie zostały ustalone ze względu na to, że sygnał na wejściu analogowym naszych 
stanowisk osiąga maksymalnie 7.5 V, przy których powinniśmy uzyskać wartość poziomu w 
zbiorniku równą 90.0 cm. 
Aby uzyskać więcej informacji nt. linearyzacji, sprawdź temat Pomocy: Linearyzacja 
(Linearization). 
 
 
9
4. Zastosowanie przerwań do obsługi szybkich wejść 
licznikowych (HSI) 
 
Przykład z wykorzystaniem szybkiego licznika i przerwań. Przerwanie będzie wywoływane co 
2.5 ms, za pomocą specjalnej funkcji dostępnej poprzez użycie zmiennej systemowej SI140 
Function number dla numeru funkcji 500. Funkcja nr 500 odpowiada właśnie za system 
przerwań. W trakcie przerwania wykonuje się program zapisany po lini zawierającej end. 
 
Ustawianie rodzaju licznika 
Aby ustawić rodzaj licznika kliknąć Hardware Configuration na pasku narzędziowym ikon. 
Następnie należy wybrać  właściwy sterownik z menu po lewej stronie. Po pojawieniu się 
zakładek należy wybrać zakładkę HSI (High Speed Input). W kolumnie Type dla wejścia I0,1 
wybrać jeden z możliwych liczników. Pojawi się okienko dialogowe, w którym należy wybrać 
zmienną całkowitą, która nie będzie używana w programie np. MI 3 (akurat w przypadku tego 
konkretnego programu, (dlaczego?)). 
 
Tworzenie zmiennej ekranowej 
Na ekranie edytora komunikatów DS1 Główny. Należy w pierwszej linii wyświetlacza wpisać 
tekst stały C:, a następnie zarezerwować 4 pola dla zmiennej ekranowej VR 1 Nastawy HSC 
(High Speed Counter) i skojarzyć go ze zmienną całkowitą  MI2 Wartość końcowa. Po 
zadeklarowaniu zmiennej VR1 na ekranie należy dopisać text D:. Następnie należy 
zarezerwować 4 pola wyświetlacza dla zmiennej VR2 Kopia HSC podczas wyjścia  i 
skojarzyć  ją ze zmienną całkowitą  MI1 !!!Wartość licznika aktualizowana w przerwaniu. 
Po znaku spacji należy zarezerwować 1 pole dla zmiennej ekranowej VR3 Wyjście O11 i 
skojarzyć  ją ze zmienna bitową  MB1 Przekroczona wartość. Zmienna VR3 bedzie 
przyjmowała wartość n dla MB1 równego 0 oraz Y dla MB1 równego 1.  
 
Skok warunkowy 
Do skoku powinno dochodzić, gdy naciśnięta zostanie strzałka w lewo na panelu 
operatorskim. W przypadku spełnienia tego warunku powinno nastąpić odświeżenie ekranu 
(ponowny skok do ekranu 1). 
 
Program drabinkowy 
 
10
Poniżej znajduje się kod programu wykonywany w trakcie przerwania.
5. Zastosowanie baz danych do zbierania informacji o 
przebiegu procesu 
 
Baza danych umożliwia gromadzenie danych w postaci liczb całkowitych. Dane te informują 
o przebiegu procesu i ewentualnych przekroczeniach normalnego stanu procesu. Baza ta 
jest ograniczona do 1024 pozycji, zatem lepiej sprawdza się do zapisywania jedynie sytuacji 
awaryjnych związanych z przekroczeniami stanu bądź sytuacjami awaryjnymi. W poniższym 
 
11
programie w bazie danych zapisywana jest informacja o bieżącej wartości podawanej na 
wejście analogowe wraz z czasem jej pomiaru. 
 
Ustawianie zmiennej dla wejścia analogowego 
Aby wartość pobrana z wejścia analogowego AI0 mogła być przesłana do programu należy 
ustawić ją klikając Hardware Configuration na pasku narzędziowym ikon. Następnie należy 
wybrać  właściwy sterownik z menu po lewej stronie. Po pojawieniu się zakładek należy 
wybrać zakładkę Analog Input. W kolumnie Type dla wejścia AI0 wybrać Analog (0-10V). 
Pojawi się okienko dialogowe, w którym należy wybrać MI 0 Wejście analogowe. 
 
Tworzenie zmiennej ekranowej 
Należy wybrać na pasku narzędzi  Displays i nazwać ekran główny  DS1 Przegląd bazy 
danych a następnie wpisać w górnej linijce tekst Czas: i zarezerwować 5 znaków dla 
zmiennej ekranowej VR1 Czas BD. Zmienną ekranową VR1 należy skojarzyć ze zmienną 
MI3 Czas z BD na ekran. W drugiej linijce należy wpisać tekst Wartość: i zarezerwować 4 
znaki dla zmiennej ekranowej VR2 Wartość BD. Zmienną ekranową VR2 należy skojarzyć 
ze zmienną MI4 Wartość z BD na ekran.  
 
Formatowanie zmiennych ekranowych 
Zarówno VR1 jak i VR2 powinny być sformatowane jako wartości całkowite zmiennych. W 
przypadku zmiennej VR1 należy wybrać Format xxx.xx (z dwiema liczbami po przecinku) i 
zaznaczyć opcję Leading Zeros (wypełnianie pozostałych zadeklarowanych miejsc zerami). 
W przypadku VR2 należy wybrać Format z jednym miejscem po przecinku. 
 
Program drabinkowy 
 
 
12
 
13