Tablice

tablice-plc

Jest to przydatne narzędzie we wszystkich językach programowania. W każdym programie istnieje potrzeba zadeklarowania większej liczby zmiennych tego samego typu. Ręczne tworzenie już kilkudziesięciu zmiennych jest czasochłonne oraz wymaga nadania innej nazwy każdej z nich. W takiej sytuacji należy wykorzystać tablice.

Tablice

Podzielimy tablice na dwa rodzaje.

Tablica jednowymiarowa

Tablica jest szeregiem zmiennych tego samego typu, dzięki temu możemy odwołać się do zmiennej jako odpowiedniego numeru (nazywanego także indeksem), który ona przyjmuje. Schemat definicji tablicy przedstawiono poniżej

MojaNazwa Array [lo .. hi] of type

Definicja tablicy to podanie nazwy (w przykładzie MojaNazwa) oraz:

  • lo –   dolny zakres tablicy. Zakres może być wartością ujemną, minimum to –32 768,
  • hi –   górny zakres tablicy. Maksymalny zakres to +32 767,
  • type –   typ danych, które będzie zawierać tablica. Może to być dowolny typ poza Array.

Jak widzimy, do określenia zakresu tablicy można użyć liczby ujemnej. Jednak z reguły numerowanie elementów tablicy zaczyna się od 0 lub 1. Definicja tablicy w języku S7­SCL jest zamieszczona poniżej

MojaPierwszaTablica Array [0 .. 3] of USInt

W ten sposób została wykonana definicja czteroelementowej tablicy, która przechowuje elementy typu USInt. Ważny jest sposób adresacji, ponieważ znacznie się różni od języka C. Przykład przypisania wartości do tablicy MojaPierwszaTablica jest zamieszczony poniżej.

#MojaPierwszaTablica[0] := 10;
#MojaPierwszaTablica[1] := 20;
#MojaPierwszaTablica[2] := 30;
#MojaPierwszaTablica[3] := 40;

W języku S7­SCL można wykorzystać każdy element z zadeklarowanego przedziału. Dużą zaletą jest również zgłaszanie błędu przez kompilator w przypadku przekroczenia zakresu wielkości tablicy w programie. Ograniczeniem jest brak możliwości inicjalizacji tablicy w trakcie definicji. Dlatego programista musi sam zadbać o to już w kodzie programu.

Każdy element tablicy należy traktować tak samo jak zwykłą zmienną. Operacje wykonuje się również w analogiczny sposób. Przykład przedstawiono poniżej

#Wynik := #MojaPierwszaTablica[1] + #MojaPierwszaTablica[2];

Jaką wartość będzie miała zmienna Wynik po wykonaniu tego wyrażenia? Będzie wynosić 50.

Wielowymiarowe

Omówiono już tablice jednowymiarowe. Język umożliwia korzystanie z tablic mających więcej wymiarów (maksymalnie sześć). W praktyce trudno wyobrazić sobie potrzebę, gdzie należałoby zastosować rozmiar większy niż trzy. Należy też pamiętać, że tablica zajmuje miejsce w pamięci, która ma skończoną wartość. Schemat definicji dwuwymiarowej prezentuje poniższy listing.

MojaWielowymiarowa Array [lo .. hi, lo .. hi] of type 

Budowa polega na dodaniu kolejnego wymiaru tablicy. Wymiary są oddzielone od siebie przecinkiem. Dla każdego wymiaru trzeba określić dolny i górny zakres. Przykład tablicy dwuwymiarowej mamy na listingu poniżej

#MojaDrugaTablica[0 .. 1, 0 .. 1] of USInt

Zapis oznacza definicję tablicy dwuwymiarowej, której składniki są tablicami 2­elementowymi. Tablicę MojaDrugaTablica można rozpisać zgodnie z listingiem poniżej.

#MojaDrugaTablica [0][0]    #MojaDrugaTablica [0][1]
#MojaDrugaTablica [1][0]    #MojaDrugaTablica [1][1]

Taka tablica przypomina macierz o rozmiarze 2×2. Do poszczególnych elementów tablicy MojaDrugaTablica można odwołać się przez użycie kodu umieszczonego na poniższym listingu.

#MojaDrugaTablica [0][0] := 1;
#MojaDrugaTablica [0][1] := 2;
#MojaDrugaTablica [1][0] := 3;
#MojaDrugaTablica [1][1] := 4;

Każdy element tablicy należy traktować tak samo jak zwykłą zmienną. Operacje wykonuje się również w analogiczny sposób. Przykład przedstawiono na poniżej

#Wynik := #MojaDrugaTablica[0][1] + #MojaDrugaTablica[1][1];

Jaka wartość będzie miała zmienna Wynik po wykonaniu tego wyrażenia? Zmienna Wynik będzie wynosiła 6.

//————-

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

Komentarz

  1. Rob

    Cześć! ostatnio postanowiłem zgłębić wiedze o PLC i w tym celu kupić sobie sterownik.. chciałbym coś z s7-1200.. chce kupić zestaw startowy ze sterownikiem, oprogramowaniem kablem i zadajnikiem.. moje pytanie: mam możliwość zapłacić taniej ale zamiast oprogramowania v13 będę miał v12 czy warto dopłacić i kupić nowszą wersje czy do nauki to nie będzie miało większego znaczenia? pozdrawiam

    Powtórz
    1. Tomasz Gilewski (Autor postu)

      Witam,
      Do nauki wersja TIA Portal nie ma większego znaczenia.

      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>