fbpx

Struktury

scl-struktura

Jakiś czas temu opisałem typy podstawowe, które można wykorzystać do tworzenia zmiennych. Typy zmiennych, jakie oferuje język SCL są w pewnych sytuacjach niewystarczające, gdy tworzymy kodu programu. Zauważamy, że niektóre obiekty są opisywane przez kilka różnych elementów. Wtedy z pomocą przychodzą struktury, czyli złożone typy danych.

Struktury

Jest to złożony typ danych grupujący logicznie powiązane ze sobą dane w taki sposób, aby można było odwołać się do nich wykorzystując wspólną nazwę. Typy danych tworzące strukturę nie muszą być tego samego typu. Struktury zwane także rekordami pozwalają w klarowny sposób opisywać proste jak i złożone obiekty. Przykładem może być silnik, z którym wiąże się zawsze co najmniej kila parametrów takich jak kierunek, obroty, stan pracy. Oprogramowanie TIA Portal umożliwia dwa sposoby deklaracji.

PLC data type

Pierwszy z nich to wykorzystanie z drzewa projektu PLC data types. Przedstawia to poniższy rysunekplc-data-typesWe wcześniejszej wersji środowiska (STEP7 v5.5) nazywała się User Data Type. Procedura tworzenia polega na kliknięciu Add new data type. Wówczas otworzy się nowo utworzone okno. Należy zmienić nazwę określającą tworzoną strukturę. W naszym przykładzie będzie to stt_Silnik. Dodanie przedrostka stt podkreśla, że jest to struktura. Wówczas wybierania typu dla zmiennej wystarczy wpisać stt, aby wyświetliła się lista z podpowiedziami.

Okno ze zdefiniowanymi polami w strukturze przedstawiono na poniższym rysunku

struktura-silnik

Znaczenie poszczególnych kolumn jest takie samo, jak w przypadku bloku danych DB. Tak zdefiniowaną strukturę możemy traktować jako nowy typ podczas definicji zmiennych.

Struktura w bloku danych

Drugi sposób, to utworzenie struktury bezpośrednio w bloku danych DB. Polega to na nadaniu nazwy struktury i wybraniu typu jako Struct. Podobnie strukturę definiuje się w blokach OB, FC lub FB. Przykład zdefiniowanej struktury stt_SilnikDB w bloku danych MojeStruktury przedstawiono na poniższym rysunku

struct-silnik

W prostokącie zaznaczono strukturę zdefiniowaną w bloku danych poprzez wybranie typu Struct. Poniżej zdefiniowano zmienną Motor1 która jest typu stt_Silnik. Każda ze struktur posiada takie same elementy wewnątrz. Przykładowe odwołanie się do elementu struktury przedstawia poniższy kod programy

"MojeStruktury".stt_SilnikDB.Obroty := 50;
"MojeStruktury".Motor1.Obroty := 50;

Do składników struktury odwołujemy się za pomocą kropki. Widzimy, że każdy składnik jest traktowany jako zwyczajna zmienna.

Teraz nasz układ zostaje rozbudowany o jeszcze jeden silnik, więc należy utworzyć kolejną strukturą. Możemy znowu utworzyć zmienną stt_SilnikDB1 i wybrać typ Struct i ponownie wpisać lub skopiować trzy parametry silnika. Prostszym i szybszym sposobem jest definicja kolejnej zmiennej Motor2 i wybranie typu stt_Silnik.

Jeżeli w przyszłości postanowimy rozbudować strukturę o kolejny parametr jaki może być temperatura, to zrobimy to tylko raz w PLC data types edytując stt_Silnik. Wówczas we wszystkich użytych miejscach pojawi się nowo dodany parametr. W każdym miejscu nastąpi aktualizacja struktury. Wystarczy skompilować ponownie projekt.

A teraz zakładając tworzenie kodu programu obsługująca maszynę składająca się kilkadziesiąt silników. Ile nazw zmiennych trzeba wówczas wymyślić? Wykorzystując strukturę nie będzie problemów z odróżnieniem o który silnik nam chodzi podczas programowania. Strukturę można też przekazać do funkcji jako parametr, co zmniejsza listę parametrów.

Struktury można zagnieżdżać, czyli jednym z elementów struktury może być inna struktura. Nazwy składowych struktury mogą się powtarzać w różnych strukturach. Nie można zdefiniować samej struktury bez listy zmiennych. Taką sytuacje kompilator zgłosi jako błąd. Kopiowanie struktur czyli przepisanie wartości z jednej struktury do drugiej jest możliwe, gdy są tego samego typu. Przykład przedstawia poniższy kod programu.

"MojeStruktury".Motor2 := "MojeStruktury".Motor1;

Ograniczeniem jest porównywanie struktur. Każda taka próba zostanie również zgłoszona przez kompilator jako błąd.

W skład naszej linii technologicznej wchodzą trzy transportery, czyli mamy trzy silniki. Już w następnym wpisie utworzymy strukturę w projekcie SzkolaPLC.

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