Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Mapowanie adresów fizycznych IO na zmienne globalne na przykładzie środowiska Codesys

736 wyświetleń, autor: Michał Grzybek.

Ten artykuł będzie nieco inny od pozostałych, ponieważ dotyczy automatyki budynkowej. Jako programista PLC bardzo często spotykałem się następującym problemem:

Zamawiający udostępnia projekt systemu BMS, wraz ze schematami szaf automatyki, który trafia do prefabrykacji oraz do mnie jako programisty. Jako że większość systemów wykonuję na sterownikach Wago, to czym prędzej otwieram Codesys i tworzę ręcznie konfigurację IO, aby móc niezwłocznie przystąpić do kodowania.

Pewny, że projekt jest już ostateczny (bo do końca inwestycji zostało niewiele czasu), otwieram konfigurację magistrali K-BUS i nazywam poszczególne kanały IO, aby później łatwo się do nich odwoływać w programie.

Dalej pozostaje już pisanie poszczególnych algorytmów.

Po pewnym czasie, dostaję telefon że można „przeklikać” rozdzielnicę w zakładzie prefabrykacji, zanim wyruszy na obiekt. Zatem jadę sprawdzić poprawność obszycia szafy. Sprawdzam wszystkie wejścia mostkując ZUGi oraz klikam przekaźnikami, stycznikami. Wychodzi parę błędów, ale na miejscu z monterem je czym prędzej usuwamy.

Po niedługim czasie przygotowywania programów dostaję informację, że można jechać na obiekt uruchamiać system. Zafascynowany pakuję kask, kamizelkę, buty S3. Biorę swoją ulubioną walizkę narzędziową i cały plecak „przydasiów” – konwertery, access-point, router do zdalnego dostępu i inne gadżety, które pewnie każdy automatyk-programista posiada w swoim warsztacie.

Po wejściu na obiekt widzę szafę automatyki, którą koledzy elektrycy podłączali przez ostatni tydzień. Zapewniają że wszystko jest zgodnie z projektem. No to ruszam do uruchomień. Po 15 minutach daremnych prób, ładnie podłączona szafa wygląda już tak:

Miernik w dłoni, elektryk na drugim końcu budynku i sprawdzamy co się dzieje z przewodem „13S1” i dlaczego jest podłączony do zupełnie innego urządzenia niż miał być.

Okazuje się że koordynacja na budowie się trochę rozjechała i wyszła cała mas zmian. Teraz Awaria wentylatora jest podłączona pod zupełnie inny moduł DI, zaś zwrotne sygnały z wysterowania przepustnic VAV są na innych kanał modułu AI.

Pojawia się nieliche zdenerwowanie bo przecież programy już napisane i pięknie przypisane do IO. Trzeba pozmieniać nazwy kanałów w konfiguracji K-BUS w Codesys i stracić sporo czasu, którego już nie ma bo jutro są odbiory branży HVAC i obróbka powietrza musi działać zgodnie z założeniami projektowymi.

Po którejś takiej akcji zacząłem się głęboko zastanawiać, czy nie da się jakoś uniwersalnie napisać programów i dopiero po uruchomieniu zamapować wejścia/wyjścia?

Pisanie programu na zasadzie:

IF %IX22.0 THEN  (*awaria wentylatora*)

Nie za bardzo mi odpowiadało.

Zacząłem zatem grzebać w plikach, które generuje Codesys w momencie kompilacji nawet pustego projektu. No i jest! Plik ma nazwę: NazwaProjektuCodesys00002ed4r.ECI

Edytując ten plik w pierwszych liniach widać adresy fizyczne poszczególnych kanałów modułów IO i całą masę nie rozpoznanych znaków.

Jednak przewijając plik ku końcowi ukazuje się naszym oczom piękny kawałek XMLa, w którym widać konfigurację modułów IO wraz z fizycznymi adresami poszczególnych kanałów tych modułów.

Zatem wpadł mi do głowy pomysł aby napisać jakiś prosty program z GUI, który to wyciągnie tą konfigurację do jakiejś normalnej, edytowalnej formy.

Jako, że na studiach poznałem Qt to od razu zabrałem się za przypomnienie środowiska i podjęcie próby napisania programu.

Po kilku dniach pracy był już gotowy program, który to:

  • Daje możliwość wyboru pliku ECI;
  • Kopiuje go jako plik tymczasowy;
  • Usuwa z niego wszystko do momentu napotkania znacznika <configuration>;
  • Wyszukuje odpowiednich znaczników dotyczących modułów IO;
  • Zapisuje do pliku CSV odnalezione moduły wraz z adresami fizycznymi poszczególnych kanałów;

Być może zapytacie: ale po co kopiować plik jako temp, usuwać z niego te wszystkie chińskie znaczki. Czy nie można było od razu wyszukać znacznika <configuration>. A no właśnie nie, program się zawieszał. Może dlatego, że pliki ECI mają po kilkadziesiąt tysięcy linii tych właśnie chińskich znaczków. Rozwiązaniem problemu okazało się usunięcie wszystkiego do momentu napotkania znacznika konfiguracji. Możliwe, że wprawny programista C++ poradziłby sobie z tym inaczej, ale ja nie miałem czasu na szukanie innego rozwiązania czy też zlecanie napisania programu programiście.

W trakcie wykonywania wyżej wymienionych konwersji na górze okna widać postęp w postaci paska. Po odczytaniu wszystkich modułów i adresów fizycznych kanałów widać na liście część odczytanych parametrów:

Klikając przycisk Zapis do pliku, otwiera się standardowe okno wyboru lokalizacji wraz z podaniem nazwy pliku. Niestety program obsługuje jedynie plik CSV jako wyjściowy.

Jednak można go łatwo obrabiać w Excelu:

W pliku wyjściowym dostępny jest adres fizyczny danego kanału, nazwa kanału wyciągnięta z konfiguracji, następnie znak dwukropek, gdybyśmy chcieli ręcznie sklejać komórki w Excelu, oczywiście jest typ zmiennej a także wygenerowana nazwa według konwencji:

IOx_n, gdzie:

  • IO – moduł : DI, DO, AI, AO
  • X – kolejny numer modułu na magistrali K-Bus
  • N – kanał modułu

Co dalej z tym można zrobić. Ja postępuję tak:

W otrzymanym pliku CSV w kolejnych wolnych kolumnach dodaję komentarz, w którym zamieszczam opis danego sygnału z projektu, np.:

Jak widać z powyższego, mamy już gotową deklarację zmiennych. Tworzę wówczas nową listę zmiennych globalnych i wklejam skopiowane komórki z Excela.

Komentarze w Excelu kopiuje także przy kolumnie z fizycznym adresem:

I to już jest program mapujący fizyczne adresy na zmienne wcześniej zadeklarowane. Komórki te wklejam do programu MAPOWANIE_PRG.

Dalej w programach już wykorzystuję jedynie nazwy, np.: DO2_15 := TRUE itd. Jeśli przy uruchomieniach wyjdzie, że pod wejście/wyjście podłączone jest coś innego, to tylko zmieniam komentarz i podłączam w odpowiednie miejsce w programie.

Taki sposób się u mnie sprawdził i działa całkiem dobrze.

Program do Pobrania

A Wy drodzy czytelnicy w jaki sposób podchodzicie do nazywania fizycznych wejść modułów IO w Waszych projektach? Czy także korzystacie z mapowania adresów na zmienne globalne?

 

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Listopad 2019

Nagrodę Plecak sportowy + zestaw gadżetów dostarcza ambasador konkursu, firma Finder.

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.
4 listopada 2019 / Kategoria: , , ,

Reklama

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Poznaj funkcje SEE Electrical, które przyspieszają rysowanie schematów elektrycznych

Poznaj funkcje SEE Electrical, które przyspieszają rysowanie schematów elektrycznych

>KLIKNIJ<

Implementacja wymiany danych przy pomocy JSON API na przykładzie przekaźnika easyE4

Implementacja wymiany danych przy pomocy JSON API na przykładzie przekaźnika easyE4

>KLIKNIJ<

Publikuj artykuły razem z iAutomatyka.pl – Integrujemy Ludzi z Automatyką!

Publikuj artykuły razem z iAutomatyka.pl – Integrujemy Ludzi z Automatyką!

>KLIKNIJ<

Firma RENEX odznaczona tytułem Gazeli Biznesu

Firma RENEX odznaczona tytułem Gazeli Biznesu

>KLIKNIJ<

Kompaktowy sterownik z oprogramowaniem TwinCAT 3: większa skalowalność, większe możliwości!

Kompaktowy sterownik z oprogramowaniem TwinCAT 3: większa skalowalność, większe możliwości!

>KLIKNIJ<

Świat według automatyka – wywiad ze sterownikiem easyE4

Świat według automatyka – wywiad ze sterownikiem easyE4

>KLIKNIJ<

Akademia PLC #1 – Sterowniki Unitronics serii UniStream

Akademia PLC #1 – Sterowniki Unitronics serii UniStream

>KLIKNIJ<

5 porad, jak odnieść sukces w branży automatyki przemysłowej na przykładzie firmy MPL Techma

5 porad, jak odnieść sukces w branży automatyki przemysłowej na przykładzie firmy MPL Techma

>KLIKNIJ<

Szkolenia z 75% rabatem od Mitsubishi Electric

Szkolenia z 75% rabatem od Mitsubishi Electric

>KLIKNIJ<

Czym są przekaźniki instalacyjne i jak ich używać?

Czym są przekaźniki instalacyjne i jak ich używać?

>KLIKNIJ<

Cyberbezpieczeństwo i Chmura – bezpłatne seminaria z ELMARK w 6 miastach

Cyberbezpieczeństwo i Chmura – bezpłatne seminaria z ELMARK w 6 miastach

>KLIKNIJ<

Sensory i czujniki w maszynach i obiektach automatyki – wywiad z Pepperl+Fuchs

Sensory i czujniki w maszynach i obiektach automatyki – wywiad z Pepperl+Fuchs

>KLIKNIJ<

Maszyna do napełniania i zamykania z LinMot

Maszyna do napełniania i zamykania z LinMot

>KLIKNIJ<

Meble przemysłowe ESD – przegląd cech dostawcy i produktu

Meble przemysłowe ESD – przegląd cech dostawcy i produktu

>KLIKNIJ<

Pierwsze w pełni zintegrowane rozwiązanie Machine-Centric Robotics – B&R i ABB

Pierwsze w pełni zintegrowane rozwiązanie Machine-Centric Robotics – B&R i ABB

>KLIKNIJ<

Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.1 – Wprowadzenie

Programowanie PLC od podstaw – kurs dla automatyków i elektryków odc.1 – Wprowadzenie

>KLIKNIJ<

KONKURS IAUTOMATYKA STYCZEŃ 2020

KONKURS IAUTOMATYKA STYCZEŃ 2020

>KLIKNIJ<

Przekaźnik elektromagnetyczny – co to jest i jak działa?

Przekaźnik elektromagnetyczny – co to jest i jak działa?

>KLIKNIJ<

Walka człowieka z robotem lutowniczym REECO na Polskiej Wystawie Gospodarczej

Walka człowieka z robotem lutowniczym REECO na Polskiej Wystawie Gospodarczej

>KLIKNIJ<

Pionierska technologia firmy Matisa

Pionierska technologia firmy Matisa





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • Przy użyciu flexROOM® można szybko i łatwo realizować automatykę budynkową na potrzeby biur i budynków administracyjnych, zgodną z obowiązującymi normami i efektywną energetycznie. flexROOM® to szeroki wachlarz rozwiązań dla automatyki budy...
  • SCADA z wbudowanym serwerem sieci Web i routerem, bez licencji, bez limitów rejestrów! Brzmi dobrze? A to dopiero początek! Jest to urządzenie umożliwiające zarządzanie zarówno w sieci lokalnej jak i przez Internet z komputera, bądź urządze...
  • 0 PLN
    Wspólnie z naszym Partnerem firmą SIEMENS serdecznie zapraszamy na bezpłatne warsztaty mające na celu przybliżenie tematyki bezpieczeństwa systemów Ethernet/PROFINET, zasad doboru urządzeń wykorzystywanych w systemach PROFINET pod kątem jeg...
    Czas trwania: 1 dzień
    Link: Terminy
  • EW1xxBD to panele webowe serii Esaware firmy ESA z wbudowaną przeglądarką internetową obsługującą technologię HTML5. Dostępne w dwóch wersjach – z systemem operacyjnym Android lub Linux (dzięki obsłudze CODESYS Web Visu, urządzenia wyświetl...
  • Nowoczesne dotykowe panele operatorskie HMI firmy WEINTEK Labs. – Bezpłatne oprogramowanie narzędziowe w pełnej wersji – Precyzyjne, dotykowe ekrany wyświetlające szczegółową grafikę – Obszerne biblioteki komponentów grafi...
  • Przeznaczony do pracy na wolnym powietrzu EMC / ekranowany Zakres zastosowania Budowa instalacji przemysłowychBudowa maszynTechnika grzewcza i klimatyzacyjnaElektrownie Dla przemiennika częstotliwości zasilającego 3 – fazowe silniki A...