Wprowadzenie do właściwości Custom Properties
Kurs Industrial Graphics w oprogramowaniu AVEVA, odc. 22
Kontakt w sprawie artykułu: Mateusz Zajchowski - 2026-07-10

W tym odcinku poznamy właściwości Custom Properties i ich zastosowania.
Kurs projektowania symboli Industrial Graphics w oprogramowaniu wizualizacyjnym AVEVA
1. Wprowadzenie do Industrial GraphicsDla każdego symbolu Industrial Graphics możemy zdefiniować niestandardowe, indywidualne dla niego parametry, zwane Custom Properties. Służą one do łatwego konfigurowania symbolu, również jego wyglądu, a także sterowania jego działaniem (np. wyświetlanymi danymi lub animacjami). Symbole znajdujące się w standardowej bibliotece mają zdefiniowane odpowiednie zestawy właściwości. W przypadku symboli, które sami projektujemy, musimy dla nich takie właściwości zdefiniować.
Najłatwiej będzie to zobaczyć na przykładzie. Jesteśmy w programie InTouch HMI. Umieśćmy w oknie obiekt zegara ze standardowej biblioteki Industrial Graphics.

Klikając dwukrotnie na zegarze otwieramy okno Edit Custom Properties. Widzimy w nim po lewej stronie listę wszystkich właściwości zdefiniowanych dla tego symbolu.

Jak widzimy, są tu cztery właściwości, które służą po prostu do określania, jaką godzinę powinien wyświetlać zegar. Właściwości Hour, Minute i Second są typu liczbowego i przechowują odpowiednio godzinę, minutę i sekundę. UseSystemTime jest typu Boolean i służy do wybrania opcji wyświetlania czasu systemowego. Typ właściwości poznajemy po tej małej ikonce z lewej strony nazwy.

Przyjrzyjmy się dokładniej, jak to działa. Gdy klikniemy na wybraną właściwość, po prawej stronie zobaczymy szczegółową konfigurację. Są tu cztery pola:
Data Type – określa, jakiego typu jest ta właściwość. W przypadku godziny jest to Integer, czyli liczba całkowita.
Default Value – tu znajduje się domyślna wartość tej właściwości, za chwilę omówimy ją dokładniej.
Visibility – określenie, czy właściwość jest widoczna. Do tego też wrócimy za chwilę.
Description – bardzo przydatne pole zawierające opis właściwości. Symbole z biblioteki standardowej mają tu wpisaną podpowiedź, do czego służy i jak działa dana właściwość. Gdy projektujemy własne symbole, warto skorzystać z tej możliwości i wpisać tu krótką informację dla innych projektantów, którzy będą używali naszego symbolu.

Zajmijmy się teraz kluczową opcją, czyli Default Value. Określa ona domyślną wartość dla właściwości. Projektant symbolu może określić konkretne domyślne wartości, jakie będą tu przypisane bezpośrednio po osadzeniu symbolu. Jeżeli jednak widzimy tu trzy myślniki (—), oznacza to, że właściwość domyślnie nie ma żadnej wartości. Ten symbol wskazuje zatem, że po osadzeniu symbolu należy tu wprowadzić wartość – co za chwilę uczynimy.

Default Value możemy zdefiniować na wiele różnych sposobów. Może to być:
- zmienna zdefiniowana w aplikacji,
- wartość wprowadzona wprost – jako liczba lub wyrażenie,
- odwołanie do funkcji skryptowych.
Najczęstszą sytuacją jest powiązanie właściwości ze zmienną. Może to być zmienna wewnętrzna (Memory) albo I/O, powinna jednak być takiego samego typu, jak właściwość.
Wróćmy teraz do naszego przykładu z zegarem. Widzimy, że początkowo właściwości Hour, Minute oraz Second nie są zdefiniowane, natomiast UseSystemTime ma domyślnie wartość True. Opis wyjaśnia, jak działa zegar: jeżeli UseSystemTime ma wartość True, wyświetla on po prostu czas systemowy. W tym przypadku pozostałe właściwości są ignorowane. Jeżeli jednak wprowadzimy tutaj False, zegar będzie wyświetlał godzinę, która zostanie wprowadzana w pozostałych właściwościach.

Uruchamiamy aplikację i widzimy, że faktycznie zegar wyświetla aktualny czas systemowy.

Teraz zmienimy ustawienie UseSystemTime na False, ale nie wprowadzimy na razie niczego w opcji Default Value dla pozostałych właściwości.

Po uruchomieniu aplikacji widzimy, że zegar wyświetla godzinę 0:00:00. Jak widać, niezdefiniowanie Default Value nie powoduje błędu i nie uniemożliwia uruchomienia aplikacji. Symbol po prostu niczego nie wyświetla.

Przypiszmy w takim razie do domyślnych wartości odpowiednie zmienne. W przykładowej aplikacji są zdefiniowane trzy zmienne typu Integer: Godzina, Minuta i Sekunda. Aby wprowadzić Default Value, możemy w miejscu symbolu — ręcznie wpisać nazwę zmiennej.

Możemy również wybrać zmienną z listy, klikając uprzednio przycisk z trzema kropkami. W tym przypadku, ponieważ pracujemy w programie InTouch, otwiera się przeglądarka zmiennych aplikacji InTouch.

Dzięki temu mamy pewność, że nie pomylimy się wpisując nazwę – i na pewno wybierzemy właściwą zmienną. Co się jednak stanie, gdy będziemy wprowadzać nazwę ręcznie, ale popełnimy błąd (np. literówkę)? W takim przypadku program wyświetli komunikat, że taka zmienna nie jest zdefiniowana i zaproponuje jej dodanie. Po potwierdzeniu OK przejdziemy do narzędzia dodawania nowej zmiennej (w przypadku InToucha będzie to Tagname Dictionary).

Ostatecznie okienko Edit Symbol Properties wygląda tak:

Po uruchomieniu aplikacji przekonamy się, że zegar wyświetla teraz czas określony przez wybrane przez nas zmienne.

Teraz wróćmy jeszcze do opcji Visibility. Są tu dostępne dwie możliwości:
- Public – właściwość jest widoczna po osadzeniu symbolu,
- Private – właściwość jest ukryta po osadzeniu symbolu.

Widzimy jednak, że ta opcja jest nieaktywna. Jest tak dlatego, że możemy ją zmienić wyłącznie podczas edytowania symbolu. Otworzymy teraz nasz symbol w edytorze, klikając prawym klawiszem myszy na jego nazwie w bibliotece i wybierając opcję Open.

W edytorze symbolu możemy kliknąć prawym klawiszem myszy i wybrać z menu kontekstowego opcję Custom Properties – odpowiada jej skrót klawiszowy CTRL+M.

Przekonamy się, że jest tu więcej właściwości, niż widzieliśmy poprzednio – pojawiają się trzy dodatkowe, które są oznaczone jako Private.

Właściwości prywatne to takie, które są niezbędne do prawidłowego działania symbolu, ale nie muszą, a często nawet nie powinny być modyfikowane przez użytkownika na etapie osadzania symbolu w aplikacji. Innymi słowy są to właściwości wewnętrzne, które mogą być używane np. w skryptach lub animacjach. Oznaczenie ich jako Private sprawia, że nie będą one dostępne po osadzeniu symbolu, a tym samym użytkownik nie będzie mógł ich modyfikować.
Podsumujmy: podczas projektowania symbolu Industrial Graphics definiujemy dla niego właściwości Custom Properties, służące do konfigurowania symbolu i sterowania nim. Właściwościom tym możemy przypisać wartości domyślne lub pozostawić je puste. Niezależnie od tego po osadzeniu symbolu w aplikacji możemy te domyślne wartości zmienić, powiązując je np. ze zmiennymi. Mogą też być one modyfikowane przez skrypty. Co ważne, jeżeli dodamy do aplikacji więcej instancji tego samego symbolu, dla każdego z nich modyfikujemy właściwości Custom Properties niezależnie od pozostałych, co sprawia, że każdy egzemplarz symbolu jest unikatowy.
Podczas tworzenia własnych symboli można również używać właściwości Custom Properties do wymiany informacji między symbolami składowymi, z których budujemy nowy symbol. Właściwości każdego z tych symboli mogą odwoływać się do właściwości innych elementów.
W następnym odcinku nauczymy się tworzyć własne właściwości Custom Properties dla symboli.