STEROWNIKI PRZEMYSŁOWE
Ćwiczenia Laboratoryjne nr 6
Funkcje matematyczne
1. Omówienie wybranych elementów biblioteki Integer function
Biblioteka ta zawiera elementy programu pozwalające wykonywać działania na liczbach całkowitych (typu Integer i Double Integer). Poniżej omówione zostaną tylko instrukcje funkcje z przyrostkiem I, ponieważ instrukcje DI są analogiczne.
suma liczb całkowitych ( Add Integer) – sumuje liczby z wejść IN1 i IN2, wynik zostaje wysłany na adres przypisany do wyjścia OUT.
różnica liczb całkowitych ( Substract Integer) – odejmuje od liczby z wejścia IN1 liczbę z wejścia IN2, wynik zostaje wysłany na adres przypisany do wyjścia OUT.
iloczyn liczb całkowitych ( Multiply Integer) - mnoży liczby z wejść IN1 i IN2, wynik zostaje wysłany na adres przypisany do wyjścia OUT.
iloraz liczb całkowitych ( Divide Integer) – dzieli liczbę z wejścia IN1 przez liczbę z wejścia IN2, wynik zostaje wysłany na adres przypisany do wyjścia OUT.
2. Zapis binarny
waga
27 = 128
26 = 64
25 = 32
24 = 16
23 = 8
22 = 4
21 = 2
20 = 1
pozycja cyfry binarnej 7
6
5
4
3
2
1
0
Odczyt liczby binarnej przeprowadza się podobnie jak w zapisie dziesiętnym, poprzez mnożenie cyfry przez wagę i sumowanie wyników z poszczególnych cyfr. Różnica między tymi dwoma systemami liczb polega na innych wagach (w dziesiętnym potęgi 10, w binarnym 2) oraz na innej
puli cyfr (w dziesiętnym 0 … 9, w binarnym 0 i 1).
Przykład:
10101100(2) to 172(10), bo 128 + 32 + 8 + 4 = 172
3. Spójność danych w sterowniku PLC
W instrukcji do ćwiczenia 1 omówiony został sposób adresowania. Można adresować pojedyncze bity np. M 0.0, bajty np. MB 0 lub słowa np. MW 0. Co to oznacza w praktyce? Obszar pamięci jest tylko jeden, trzeba mieć świadomość, że modyfikacja bitu M 0.0, modyfikuje bajt MB 0 i słowo MW 0. Strukturę pamięci przedstawia rysunek poniżej.
Taki stan rzeczy można sprytnie wykorzystać. Można pobrać stan wejść (I 0.0 … I 0.7) do bajtu za pomocą polecenia Move.
Następnie można na tym bajcie wykonywać operacje (np. matematyczne) lub inne operacje na pojedynczych bitach tego bajtu, a wynik w podobny sposób można wysłać do QB0. Jeśli zakres danych (wejściowych lub wyjściowych) jest szerszy, to postępujemy analogicznie, z tym że operujemy na słowach np. IW 0, MW 0, QW 0, a do operacji matematycznych posługujemy się poleceniami z przyrostkiem DI . Natomiast jeśli zakres jest węższy można bit po bicie przesłać do bajtu tylko te bity które nas interesują, tak jak pokazuje przykład poniżej.
4. Zadania do wykonania
1. Wykonać program realizujący „kalkulator” obliczający wynik działania (podanego w tabeli) na 2 liczbach na bieżąco, tzn. każda zmiana liczb wejściowych zmienia natychmiast wynik.
Liczby wejściowe pobierane są z wejść w postaci binarnej (I0.0 … I0.3 i I0.4 … I0.7), a wynik podawany jest na wyjściach (Q0.0 … Q0.7) w postaci binarnej.
2. Wykonać program realizujący „kalkulator” obliczający wynik działania (podanego w tabeli) na 2 liczbach z wyzwalaniem wyniku, tzn. wynik obliczany i prezentowany jest dopiero po ustawieniu w stan wysoki wejścia I1.0 (odpowiednik przycisku „=” w kalkulatorze). Liczby wejściowe pobierane są z wejść w postaci binarnej (I0.0 … I0.3 i I0.4 … I0.7), a wynik podawany jest na wyjściach (Q0.0 … Q0.7) w postaci binarnej.
3. Wykonać program realizujący „kalkulator” obliczający wynik działania (podanego w tabeli) na 3 liczbach na bieżąco, tzn. każda zmiana liczb wejściowych zmienia natychmiast wynik.
Liczby wejściowe pobierane są z wejść w postaci binarnej (I0.0 … I0.3 , I0.4 … I0.7 oraz I1.0 … I1.7), a wynik podawany jest na wyjściu (Q0.0 … Q1.7) w postaci binarnej.
zespół
działanie do pkt. 1
działanie do pkt. 2
działanie do pkt. 3
A
a + b
a + b – 15 (*)
(a + b) * c
B
a – b (*)
a * b / 2
(b + c) * a
C
a * b
2 * a / b
(c + a) * b
D
a / b
a – b + 15
(a + b) / c
E
a + b – 15 (*)
a * b
(b + c) / a
F
a – b + 15
a / b
(c + a) / b
G
a * b / 2
a + b
a * b + c
H
2 * a / b
a – b (*)
b + a * c
*) dla wyniku ujemnego zrealizować znak „–„ w postaci wysokiego stanu na wyjściu Q1.0 przy pomocy funkcji z biblioteki Comparator