fbpx

Operatory arytmetyczne – operatory logiczne

operatory-logiczne-i-arytmetyczne

W jednym z poprzednich wpisów zapoznałem Cię z operatorami binarnymi. Dzisiaj kontynuacja tematu, ponieważ pozostały nam do omówienia jeszcze operatory arytmetyczne oraz logiczne.

Jest jeden operator, który znasz już od dawna, ale trudno zakwalifikować go do jakieś kategorii. Jest to operator przypisania, czyli znaki dwukropka oraz znaku równości :=. Za pomocą tego operatora przypisuje się wartość prawego argumentu lewemu, Po wykonaniu tej operacji obie zmienne będą miały tą samą wartość.

Operatory arytmetyczne – Operatory logiczne

Użycie poniższych operatorów jest intuicyjne, ale napiszę w skrócie o ich wykorzystaniu

Operatory arytmetyczne

Są to najprostsze w użyciu operatory i nie wymagające długiego tłumaczenia. Mamy zdefiniowane dwie zmienne typu USInt o nazwach a oraz b które wykorzystamy do obliczeń oraz jedną typu USInt o nazwie result gdzie będziemy przypisywać wynik, co przedstawia poniższy kod

#a := 100; //inicjalizacja zmiennej wartoscia 100
#b := 2; //inicjalizacja zmiennej wartoscia 2
#result := 0; //inicjalizacja zmiennej wartoscia 0

Dostępne są następujące operatory

Dodawanie

Operator dodawania to +. Przykładową operację dodawania przedstawiono poniżej

#result := #a + #b;

Wykonania tej linii kodu polega na polega na dodaniu zmiennej a do zmiennej b. Wynik jest następnie przypisany do zmiennej result i będzie ona wynosiła 102.

Odejmowanie

Operator dodawania to -. Przykładową operację odejmowania przedstawiono poniżej

#result := #a - #b;

Wykonania tej linii kodu polega na polega na odjęciu od zmiennej a zmiennej b. Wynik jest następnie przypisany do zmiennej result i będzie ona wynosiła 98.

Mnożenie

Operator mnożenia w kodzie programu jest przedstawiany jako *. Przykładową operację mnożenia przedstawiono poniżej

#result := #a * #b;

Wykonania tej linii kodu polega na pomnożeniu zmiennej a i zmiennej b. Wynik jest następnie przypisywany do zmiennej result i będzie ona wynosiła 200.

Dzielenie

Operator mnożenia w kodzie programu jest przedstawiany jako /. Przykładową operację mnożenia przedstawiono poniżej

#result := #a / #b;

Wykonania tej linii kodu polega na polega na podzieleniu zmiennej a przez zmienną b. Wynik jest następnie przypisany do zmiennej result i będzie ona wynosiła 50.

 

W jednej linii można wykonać wiele obliczeń pamiętając o dodaniu nawiasu w celu podkreślenia kolejności wykonywania działań. Nie jest to obowiązkowe, ale poprawia czytelność kodu, co przedstawia poniższy kod

#result := ((#t + 2) / (#a * #b)) – (4 * (#x + #y));

Dobrą praktyką jest rozbijanie złożonych obliczeń na mniejsze fragmenty. Dzięki temu możliwość popełnienia błędu jest mniejsza oraz przyśpiesza debugowanie kodu w przypadku ich wystąpienia.

Inkrementacja

W przypadku języka SCL nie ma inkrementacji znanej z innych języków. Trzeba wykorzystać standardowy zapis, który przedstawiono poniżej

#a := #a + 1;

Wykonanie tej linii kodu polega na dodaniu do zmiennej a jedności. Wynik jest następnie przypisany do zmiennej a i będzie ona wynosiła 101.

Deinkrementacja

Podobnie wygląda sytuacja dekrementacji. Trzeba również wykorzystać standardowy zapis odejmowania, który przedstawiono poniżej

#a := #a - 1;

Wykonanie tej linii kodu polega na odjęciu do zmiennej a jedności. Wynik jest następnie przypisany do zmiennej a i będzie ona wynosiła 99.

Modulo MOD

Reszta z dzielenia jednego typu przez drugi występuje pod postacią MOD. Pozwala na szybkie otrzymania reszty z dzielenia dwóch zmiennych typu całkowitego. Przykład dzielenia modulo liczby 14 przez 5 przedstawia kod umieszczony poniżej

#Wynik := 14 MOD 5;

Po wykonaniu wyrażenia zmienna Wynik będzie wynosił 4.

Operatory Logiczne

Wyniku działania każdego z operatorów logicznych otrzymamy zawsze prawdę lub fałsz (TRUE lub FALSE). Zobacz poniższy kod

#a := 100; //inicjalizacja zmiennej wartoscia 100
#b := 2; //inicjalizacja zmiennej wartoscia 2
#result := FALSE; //inicjalizacja zmiennej wartoscia 0

Mamy zdefiniowane dwie zmienne typu USInt o nazwach a oraz b które wykorzystamy do obliczeń oraz jedną zmienną o nazwie result gdzie będziemy przypisywać wynik. Otrzymany wynik obliczeń może mieć tylko dwie wartości więc zmienna result musi być typu Bool, w innym wypadku zostanie zgłoszone ostrzeżenie przez kompilator.

Do operatorów logicznych należą

Większy niż

Operator większy niż to > i jego przykładowe użycie przedstawiono poniżej

#result := (#a > #b); //prawda

Wykonanie powyższej linii kodu polega na obliczeniu wartości wyrażenia w nawiasie i następnie przypisanie go zmiennej result. W tym wypadku po wykonaniu tej linii kodu zmienna result będzie miała wartość TRUE.

Warunek można zapisać w inny sposób, który przedstawiono poniżej

#result := (#b > #a);//falsz

Wykonanie linii kodu przedstawionej powyżej polega na obliczeniu wartości wyrażenia w nawiasie i następnie przypisanie go zmiennej result. W tym wypadku zmienna result będzie wynosić zero.

Jest większy lub równy

Ten operator jest zapisywany jako >=. Przykładowe wykorzystanie przedstawiono poniżej

#result := (#a >= #b); //prawda

Wykonanie linii kodu polega na obliczeniu wartości wyrażenia w nawiasie i następnie przypisanie go zmiennej result. W tym wypadku będzie ona wynosiła jeden.

Mniejszy niż

Ten operator jest zapisywany w kodzie jako <. Wykorzystanie tego operatora w kodzie przedstawiono poniżej

#result := (#a < #b); //falsz

Wykonanie linii kodu polega na obliczeniu wartości wyrażenia w nawiasie i następnie przypisanie go zmiennej result. W tym wypadku będzie ona wynosić zero.

Mniejszy lub równy

Ten operator jest zapisywany w kodzie jako <=. Wykorzystanie tego operatora w kodzie przedstawiono poniżej

#result := (#a <= #b); //falsz

Wykonanie linii kodu polega na obliczeniu wartości wyrażenia w nawiasie i następnie przypisanie go zmiennej result. W tym wypadku będzie ona wynosić zero.

Jest równy

Operator równości to =. Zapis tego operatora w kodzie programu przedstawiono poniżej

#result := (#a = #b); //falsz

Wykonanie linii kodu polega na porównaniu zmiennej a oraz b. To wyrażenie nie spełnia tego warunku, ponieważ wartości nie są sobie równe, więc do zmiennej result zostanie przypisana wartość FALSE.

Jest różny

Operator równości to <>. Zapis tego operatora w kodzie programu przedstawiono poniżej

#result := (#a <> #b); //prawda

Wykonanie linii kodu polega na sprawdzeniu, czy zmienna a oraz b są różne względem siebie. To wyrażenie spełnia ten warunek, ponieważ wartości są różne, więc do zmiennej result zostanie przypisana wartość TRUE.

Należy zauważyć, że operator porównania jest inny niż w języku C. W przypadku programowanie w SCL nie będzie problemów z nim związanych, które występuj często u początkujących podczas pierwszych kroków. Również operator „różny” symbolizowany <> wygląda inaczej niż w języku C.

Priorytety operatorów

Pamiętasz na pewno lekcje matematyki o kolejności wykonywania obliczeń. Podobnie w języku S7-SCL obowiązuje ustalona kolejność działań. Znając priorytet oraz łączność danego operatora można ustalić kolejność, w jakiej nastąpią obliczenia. Poniżej jest tabela z zestawieniem wszystkich operatorów wraz z ich priorytetami

 

Typ Operacja Operator Priorytet
Nawiasy (Wyrażenie) ( ) 1
Matematyczne Potęga ** 2
Znak liczby + 3
- 3
Mnożenie * 4
Dzielenie / 4
Modulo MOD 4
Dodawanie + 5
Odejmowanie - 5
Porównania Mniejszy niż < 6
Mniejszy lub równy <= 6
Większy niż > 6
Większy lub równy >= 6
Równy = 7
Różny <> 7
Logiczne Negacja NOT 3
Iloczyn logiczny AND 8
Logiczna różnica symetryczna XOR 9
Suma logiczna OR 10
Przypisania Przypisanie := 11

 

Znając powyższe właściwości możemy tworzyć instrukcje, które pozwolą zaoszczędzić milisekundy podczas wykonywania programu. Jedna ten zysk jest uzyskiwany kosztem czytelności programu. Stracisz więcej czasu na szukaniu błędów, gdy kod będzie działał niepoprawnie. Proponuje zawsze stosować nawiasy. Kod należy tworzyć zawsze w taki sposób, aby kolejność wykonywania obliczeń zależała od nas, a nie od kompilatora.

Kurs wideo

Więcej na temat programowania w języku SCL znajdziesz w kursie Sterownik PLC w praktyce:

pl-usb-1p1-tia-1200-scl_sterownik-plc_w-praktyce-1

 

Podziel się tym wpisem na:
  • Facebook
  • Google Bookmarks
  • Twitter
  • Wykop

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Newsletter - Zapisz się i jako pierwszy otrzymasz najnowsze informacje