PHONE  +48-692-961-191      

     MAIL stsystem@stsystem.pl 

Jesteśmy autorami wielu przydatnych bibliotek dla środowiska Codesys.
Poniżej znajdą Państwo fragment opisu niektórych naszych rozwiązań.

Wielu z nas na pewno parokrotnie stanęło przed potrzebą użycia w wizualizacji Codesys wykresu obrazującego przebieg jakiejś wartości w czasie. Środowisko Codesys w sposób jawny oferuje nam element graficzny typu TREND. Teoretycznie załatwia on sprawę. Jednak gdy przyjrzymy się problemowi lepiej to stwierdzimy, że jego właściwości nie zawsze predysponują go do użycia w naszej wizualizacji. 

Jest to element o miłej dla oka szacie graficznej. Posiada jednak co najmniej jedno znaczące ograniczenie: zapis danych trendu w obrębie sterownika (Ustawienia systemu docelowego / wizualizacja) działa różnie dla różnych systemów docelowych. Objawia się to tym, że na niektórych systemach docelowych nie jest możliwe uzyskanie efektu ?pamięci? danych archiwalnych po otworzeniu wizualizacji w przeglądarce. Inaczej: gdy uruchomimy okno wizualizacji w przeglądarce ujrzymy pusty trend, w którym wykres będzie aktualizowany tylko wtedy, gdy przebywamy na stronie. Po opuszczeniu strony zobrazowane dane bezpowrotnie stracimy. Z taką właśnie sytuacją miałem do czynienia na jednym z obiektów na których modyfikowałem istniejące oprogramowanie. Kością niezgody użytkownika systemu był właśnie brak możliwości
podejrzenia danych archiwalnych wykresu.

Innym sposobem zwizualizowania wykresu wartości w czasie jest użycie obiektu graficznego typu histogram. Jest to obiekt natywnie obsługiwany przez Codesys. Jako argument przyjmuje tablicę próbek o zdefiniowanym rozmiarze. Zapis do tablicy musimy niestety zrealizować we własnym zakresie. Jednak to właśnie dzięki tablicy, którą możemy umieścić w obszarze remanentnym, zyskujemy możliwość ?pamiętania? danych w sterowniku. Jest to niezaprzeczalny plus względem problemu opisanego dla elementu typu TREND. Niestety coś za coś: sam wykres histogramu jest bardzo ubogi graficznie. W praktyce wymaga on ?opakowania? w dodatkowe elementy służące do prezentowania opisów osi X, czy też opisu samego wykresu. Rozwiązanie tego kłopotu jest bardzo proste: użyjemy możliwości stworzenia okna wizualizacji, która zostanie ?wklejona? do naszej właściwej wizualizacji w całości, jako jeden spójny element graficzny. Takie podejście do problemu pozwala nam na stworzenie wykresu z eleganckimi opisami, prezentującego wszystkie niezbędne dane.Jednak co zrobić w przypadku gdybyśmy chcieli wyświetlić kilka wykresów? Logika podpowiada, że dla każdego wykresu musielibyśmy stworzyć:

- nowe zmienne przechowujące wartości,

- nowy element graficzny w którym wprowadzilibyśmy nazwy użytych zmiennych.

Przy dużej liczbie prezentowanych danych takie podejście jest żmudne i pracochłonne. Jednak projektanci środowiska Codesys zostawili nam wspaniałą ?furtkę? w postaci możliwości użycia w wizualizacji tzw. symboli zastępczych. Dzięki nim możemy ograniczyć ilość modyfikowanych w wizualizacji elementów
do absolutnego minimum. Celem tego opracowania nie jest przepisywanie Helpa Codesysa ? wspomniane frazy każdy może sobie w nim wyszukać samemu. W tym opracowaniu skupię się na praktycznym użyciu wspomnianych możliwości i technik.

Powyżej przedstawiony został zarys projektu od strony prezentacji wizualnej danych. Jednak, aby móc zaprezentować dane, musimy najpierw dokonać ich akwizycji. W tym celu stworzyłem kod źródłowy, który znajduje się w projekcie ?HISTOGRAM.pro?. W dalszej części zaprezentuję poszczególne elementy składowe kodu oraz sposób jego użycia we własnym projekcie. Podstawowymi założeniami jakie przyświecały mi w trakcie pisania były:

- przygotowanie zwartego, krótkiego kodu,

- wykorzystanie wyłącznie funkcji, bez deklarowania instancji bloków funkcyjnych,

- możliwość użycia wielu, niezależnie konfigurowanych wykresów,

- absolutne zminimalizowanie czynności potrzebnych do implementacji kodu.

Wszystkie z założeń zostały spełnione. Dzięki wykorzystaniu możliwości tworzenia własnych typów danych napisanie kodu okazało się dużo prostsze niż z początku zakładałem. Ponieważ moje nawyki programistyczne wywodzą się z systemów mikroprocesorowych programowanych w ?czystym? języku C, stąd w tym projekcie użyłem właśnie takich technik. Bez względu na ilość zadeklarowanych wykresów, wszystko działa
w oparciu o jeden banalnie prosty automat sekwencyjny zsynchronizowany z zegarem naszego PLC. Finalnego efektu nie zamykałem w formie hermetycznej biblioteki. Stwierdziłem, że warto pokazać zarówno własne podejście do rozwiązania problemu, jak również umożliwić użytkownikowi dowolną edycję kodu
w zależności od własnych potrzeb. Na potrzeby dalszego opisu będę jednak używać nazwy ?biblioteka?.

 

Pliki do ściągnięcia:

 
 

Jeżeli są Państwo zainteresowani tworzeniem dedykowanych bibliotek - zapraszamy do kontaktu!