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 rejestratora pamięci zdarzeń (np. dla wejść binarnych). Środowisko Codesys natywnie obsługuje element graficzny ?Tabela alarmów? współpracujący z systemowym archiwizerem aktywowanym w ustawieniach systemu docelowego (?Obsługa alarmów w obrębie sterownika?). Teoretycznie narzędzie to powinno całkowicie załatwić sprawę obsługi alarmów (rejestracji zdarzeń). Jednak jest ono jedną z tych funkcji Codesysa, która zachowuje się różnie w zależności od systemu docelowego. Na jednych sterownikach działa wyśmienicie, spełniając swoje zadanie w 100%. Z kolei na innych pomimo tego, że jest poprawnie skonfigurowana ? potrafi skutecznie odmówić współpracy. Dlatego właśnie powstał pomysł na wykonanie archiwizera (rejestratora zdarzeń) we własnym zakresie. Co zrobić w przypadku gdybyśmy chcieli wyświetlić kilka kanałów rejestracji zdarzeń? Do tego mieć możliwość indywidualnego dostosowania wyglądu każdego wyświetlanego kanału? Logika podpowiada, że dla każdego kanału 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 ?ERROR_MEMORY.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 rejestratorów zdarzeń,
- absolutne zminimalizowanie czynności potrzebnych do implementacji kodu,
- możliwość definiowania kolorów zdarzeń.
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. 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!