Zmienna

Zmienne

W poprzednich wpisach przedstawiłem sposób, jak przeprowadzić konfigurację i programowanie sterownika. W trakcie zostały utworzone tagi w tablicach PLC tags, które służyły do określenia nazwy symbolicznych wejść lub wyjść cyfrowych. Dzisiaj omówię zmienne, które są trochę podobne do tagów. W dalszym ciągu korzystamy z projektu FirstProject. Więc co to jest zmienna w takim razie?

Zmienna

Opisując budowę wewnętrzną sterownika napisałem Ci, że sterownik składa się z kilku rodzajów pamięci. Teraz dowiesz się dokładnie, do czego służy ta pamięć. Omówię teraz jedno z najważniejszych zagadnień języka SCL. Musisz to dobrze zrozumieć, ponieważ jest to fundament do dalszej nauki.

Zmienną należy traktować jako pewnego rodzaju byt programistyczny, która umożliwia przechowywanie danej określonego typu w trakcie działania programu. Każda zmienna musi zawierać nazwę oraz typ. Ta nazwa staje się zmienną, który można także określić jako identyfikator. Właśnie za pomocą tego identyfikatora odwołujesz sie w kodzie programu do zmiennej.

Nadany typ dla zmiennej określa, jakiego rodzaju wartości może przechowywać ta zmienna.

Do dzisiaj tworzyłeś tagi w tablicach PLC tags, które można także nazwać zmienną.

W tablicy PLC tags wpisywałeś nazwę tagu, oraz określałeś adres fizyczny, który jest powiązany z definiowanym tagiem. Typ zmiennej był ustawiany domyślnie i nazywał się Bool. Jak wiesz, wejścia i wyjścia cyfrowe przyjmują tylko dwa stany (niski lub wysoki), który może przechować właśnie jako typ Bool. O typach zmiennych napiszę już niedługo.

Jednak nie można ciągle pisać programów opartych tylko bezpośrednio o wejścia i wyjścia cyfrowe. Wielokrotnie będziesz potrzebował przechować inne wartości np. wynik dodawania. Wówczas wynik takiej operacji nie jest do przewidzenia, ponieważ nie znasz liczb wchodzących w skład operacji. Potrzebujesz zmiennej o odpowiednim rozmiarze, aby przechować wynik obliczenia.

Tak jak napisałem wcześniej, zmienne są potrzebne do przechowywania wartości np. podczas realizacji operacji arytmetycznych lub logicznych.

Gdzie umieścić zmienną?

Teraz prawdopodobnie pomyślałeś o ponowym wykorzystaniu tablicy PLC tags? Zgadza się? Jest to jedno z rozwiązań, jednak firma Siemens nie zalaca umieszczać żadnych zmiennych w tablicach PLC tags. Poza tym w tablicy PLC tags znajduje się kolumna Address, którą trzeba uzupełnić.

Zapamiętaj, że tablica PLC tags służy tylko do umieszczania tagów opisujących wejścia i wyjścia cyfrowe.

Jeżeli pomyślałeś o wykorzystaniu bloku OB1, to sprawdź doświadczalnie, co się stanie. Wyobraź sobie, że kompilator spotyka w kodzie taki zapis:

„Value”:= 5;

 Został użyty w tej linii kodu operator przypisania. Wynik kompilacji przedstawiono na poniższym rysunku.

Tag-No-DefinedJak widzisz, pojawił się błąd informujący o braku definicji tagu Value. Jak zapewne pamiętasz, w taki sposób umieszczane są w kodzie tagi (nazwa ujęta w cudzysłów).

Zmienna o nazwie Value została użyta w bloku OB1. Jak zauważyłeś, ta nazwa nie jest trafnie wybrana, ponieważ nic nie mówi o przeznaczeniu tej zmiennej. Lepsza nazwa, to np. MyVariableForTest. Każde nowe słowo zaczynam wielką literą, co zwiększa przejrzystość. Pamiętaj, że nazw zmiennych nie możesz pisać dużymi literami. Ten sposób zapisu jest kojarzony ze stałymi, o których napiszę Ci już w najbliższym czasie.  Więc gdzie umieścić definicję zmiennej?

Każdą zmienną przed użyciem należy zdefiniować, czyli przede wszystkim nadać nazwę oraz określić typ. Podczas tworzenia kodu programu na sterowniki PLC zmienne umieszcza się w specjalnych blokach przeznaczonych do tego celu. Blok ten nazywa się Data block nazywany czasami blokiem DB. Jak utworzyć nowy blok danych DB? O tym napiszę w kolejnym wpisie.

//————-

Kurs-wideo-CZPP

Więcej w kursie wideo: Chcę zostać programistą PLC

Nagrania są dostępne w wersji online jak również na płytach DVD. Napisz mailem, jaką wersje wybierasz.

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

Komentarze

  1. Piotr

    Ciekawa strona, czekam na troszkę bardziej zaawansowany materiał.. Pozdrawiam.

    Powtórz
    1. Tomasz Gilewski (Autor postu)

      Poziom zaawansowania materiału zwiększam stopniowo. Piotrek, o czym chcesz czytać na blogu?

      Powtórz
  2. Piotr

    Tomku, mógłbyś opisać od podstaw akumulatory? chodzi mi o ACCU-L oraz ACCU-H. Fajnie byłoby zobaczyć jakaś konkretną ilustrację z opisem w języku polskim wraz z przykładami jak to się wszystko dzieli.. niby proste ale nie do konca zrozumiałe bynajmniej dla mnie.

    Powtórz
    1. Tomasz Gilewski (Autor postu)

      Piotrek, pisząc kod w języku SCL nie musisz zajmować się akumulatorami. To jeden z plusów tego języka.

      Powtórz
  3. Piotr

    Moja głowa wciąż siedzi w STL’u :)

    No to czekam na wskaźniki, adresowanie pośrednie.
    Ciekawe byłoby też pokazanie w jaki sposób możemy tworzyć pakiety STRUCT z różnymi typami danych. Czy można stworzyć w ogóle swoją klasę w SCL ? czy to nie jest czasem STRUCT?.

    Czy można stworzyć nowy typ zmiennej? tak jak w C++ ?

    Dzięki za odp.

    Swoją drogą.. w polskiej edukacji programowania brakuje mi konkretnych przykładów z opisami… co z tego, że pokazane będzie jak stworzyć tablicę, i jak ją wypełnić jakąś wartością. Najważniejsze będzie pokazanie konkretnego przykładu.. gdzie powinno się stosować tablicę.. dlaczego tak a nie inaczej i jak ją wykorzystać. Tego brakuje w wielu książkach. Oczywiście w anglojęzycznych materiałach wszystko to jest napisane ale nie u nas!. Nie twierdzę, że taka będzie Twoja książka – mam nadzieję, że nie :)

    A na koniec dodam, że nie które rzeczy dla mnie jest prościej zrobić w stl niż w scl.. może mam zbyt małą wiedzę w scl.

    Powtórz

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>