Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2020/08/s7-dane-zapis.jpg

Serwer PLC – zapis i odczyt danych z wykorzystaniem bibliotek od Siemens


Opisywane tutaj tematy są dość obszerne i mimo skupienia się tylko na podstawowych zagadnieniach, zajmują sporo tekstu. Dlatego poniżej jest umieszczona agenda, oraz link do filmu prezentującego działanie programu.

Agenda:

  • wstęp właściwy,
  • wymagane elementy,
  • opis przygotowań biblioteki,
  • pisanie programu,
  • omówienie programu,
  • obsługa kodu,
  • odczyt danych.

 

Wstęp właściwy

Dane możemy zapisać na kilka sposobów. Możemy wykorzystać panel HMI z portem USB i gniazdem na kartę SD, a możemy też wykorzystać sam sterownik z gniazdem na SD lub portem USB. Jeżeli używany przez nas PLC ma wbudowany web serwer, to sprawa staje się bardziej mobilna. Czy jest prostsza? No, nie koniecznie. Chcąc wykorzystać serwer do zapisu i odczytu danych, trzeba się odrobinę napracować, a program wraz z możliwościami staje się coraz bardziej rozbudowany. Skoro potrzeba więcej pracy, to czy się to opłaca? Zależy. Stosując zapis danych przez HMI, wystarczy, że wybierzemy zmienną, którą chcemy próbkować i określimy parametry takie jak: liczba zapisów w pliku, liczba plików*, format zapisu*, i miejsce zapisu. Ogólnie konfiguracja jest krótka i intuicyjna. Niestety przez to ogranicza także możliwości. Nie mamy dostępu do plików z danymi (nie licząc ich wykresu) i nie możemy nimi zarządzać. Czy to źle? Nie, w prostej konfiguracji, w której chcemy obserwować zmianę wartości i zapisać przebieg do przyszłego otworzenia, nie stanowi to kłopotu. Jeżeli jednak chcemy zarządzać danymi, tzn. tworzyć nowe pliki z poziomu operatora, usuwać zbędne, ustawiać ich nazwy, konfigurować format, otwierać (do ośmiu plików jednocześnie) i zapisywać zależnie od potrzeby i wiele więcej, to panel HMI (niezależnie od wersji), to za mało.

*Basic ogranicza liczbę data logów do 1 i format zapisu do txt, w którym zmienne są zapisywane w nieczytelny sposób. Problem rozwiązuje wersja Comfort, która pozwala na więcej plików, formatów i lepszą konfigurację (poprzez skrypty) całego procesu. Wadą wersji Comfort jest jej cena, która może przyćmić możliwości idące z HMI.

Upraszczając, sytuacja wygląda jak z systemami operacyjnymi. Windowsa zrozumie każdy, ale niewiele nim zrobi. Z Linuxem jest odwrotnie: Nie każdy go zrozumie, ale jak zrozumie, to zrobi wszystko. Dziś zajmiemy się „Linuxem”.


Spróbujemy jednak podejścia nietypowego, o którym mogą wiedzieć osoby, które korzystały z pomocy w TIA Portal. Chodzi o biblioteki z przykładowymi rozwiązaniami udostępnionymi przez samego producenta. Dzięki nim możemy poznać podstawy konfiguracji i obsługi funkcji, z którymi nie mieliśmy wcześniej do czynienia. Programy nawiązują do wbudowanej pomocy pod F1, a pomoc jest bardzo obszerna. Przykład tu omawiany (data logging), jest dosłownie przykładem jednym z wielu. Każda osoba zaczynająca naukę programowania PLC, powinna zainstalować tę bibliotekę, ponieważ została ona wykonana przez samego producenta i jest dobrym punktem odniesienia. Przykłady są napisane w językach LAD i SCL, chociaż zakres tego drugiego ogranicza się do dwóch pierwszych rozdziałów. Trzeba pamiętać, że programy nie koniecznie pokrywają się z programami pokazanymi w instrukcji. Na przykład przedstawiony tu program, będzie mimo wszystko krótki, podczas gdy jego odpowiednik w instrukcji, jest bardzo rozbudowany i zawiera 90% aspektów związanych z data logging.

Wymagane elementy

Będziemy potrzebowali:

  • sterownika PLC z funkcją web-serwera (wykorzystam S7-1200 1211C DC/DC/DC),
  • TIA Portal (mam dostęp do wersji V15),
  • dostępu do Internetu (do pobrania biblioteki),
  • programu do otwarcia pliku csv (arkusz kalkulacyjny np. MS Excel).

Opis przygotowań biblioteki

Zacznijmy od przygotowania środowiska pracy, czyli od pobrania biblioteki. Adres pod jaki znajduje się biblioteka, jest „schowany” w pomocy w TIA Portal. Dla ułatwienia podaję link, żeby nie tracić czasu na szukanie.

Szukamy teraz wersji biblioteki odpowiadającej posiadanemu przez nas oprogramowaniu TIA Portal. Jako że mam wersję V15, a dostępne są V14 i V15.1, wybieram wersję starszą, bo działa kompatybilność wsteczna. Do pobrania wymagane jest darmowe konto na stronie Siemensa, więc jeśli ktoś go jeszcze nie posiada, to ma okazję ,żeby je założyć.


Po pobraniu biblioteki i wypakowaniu jej otwieramy TIA Portal i tworzymy projekt. Dodajemy PLC i przechodzimy do zakładki po prawej stronie Libraries. W zakładce Global Libraries wybieramy opcję Open global library. W nowo otwartym oknie szukamy naszej biblioteki, zaznaczamy ją i otwieramy.

W przypadku otwarcia starszej wersji biblioteki pojawi się komunikat informujący o możliwej aktualizacji do wersji aktualnej dla TIA Portal. Aktualizujemy i cieszymy się z zainstalowanej biblioteki.

Pisanie programu

Mając już bibliotekę, możemy z niej skorzystać. Jak to zrobić? Szybko i skutecznie. Wybieramy interesujący nas język (LAD), rozdział (02_Extended_instructions), podrozdział 11, punkt 2 Data_logging. Zaznaczamy funkcję 2_Data_logging i przeciągamy ją do drzewka projektu, tak samo, jak przy dodawaniu nowego elementu.

Otrzymujemy folder z gotowym blokiem funkcyjnym i blokami danych. Teraz wystarczy przeciągnąć SLI_FB_DataLogging do bloku Main.

I tyle, mamy prawie gotowy program do zapisu danych na web serwerze. Prawie jest słowem kluczowym, ponieważ musimy jeszcze włączyć sam web serwer w ustawieniach sterownika i wgrać konfigurację.

Może się przytrafić sytuacja, że otrzymamy poniższy wysyp błędów. Wynika on z kompilacji np. tylko funkcji. Dlatego ważne jest, żeby zawsze kompilować cały projekt!


Jeżeli nadal program nie działa, należy zajrzeć do pomocy konkretnego bloku albo na forum Siemens’a lub inne.

Omówienie programu

Jak wspomniałem na początku, jest to program dość krótki i pozwala na bardzo podstawowe wykorzystanie web serwera. Jednak żeby go wykorzystywać, trzeba wiedzieć, jak działa (program), albo raczej, jak działać powinien.

Zacznijmy od początku. Czym jest data log? W ujęciu TIA Portal i firmy Siemens, jest to plik zawierający dane, zapisane przez użytkownika do późniejszego wglądu. Jakie dane? Poszczególne zmienne programowe, dane z bloków danych, struktury, stringi, char, liczby itd. Całkiem sporo. Dodatkowo każdy wpis składający się z jednej lub kilku danych, może być zaopatrzony w stempel czasowy oraz liczbę porządkową. Plików typu data log może być tyle, jak dalece pozwala miejsce w sterowniku. Wyjątkiem jest karta SD, wówczas to ona wyznacza wielkość dostępnego miejsca. Sterownik może zapisywać dane do plików oraz je z nich odczytywać. Pliki mogą być zapisywane w formacie .csv, czyli dane będą pooddzielane przecinkami, a do ich odczytu jest wymagany arkusz kalkulacyjny np. MS Excel oraz drobny zabieg, ale o nim pod koniec.

Najpierw należy zadać sobie pytanie, co chcemy osiągnąć? Chcemy stworzyć plik zawierający dane, które chcemy później odczytać zdalnie. Jak tego dokonać? W wersji podstawowej musimy mieć możliwość stworzenia pliku data log, zapisu do niego danych, stworzenia kolejnego pliku, zapisu kolejnych danych i tak w kółko. Jest to podejście podobne, jak przy stosowaniu HMI, ale zawiera kilka kroków więcej.

Wiemy już, jak program ma działać, więc możemy krótko przeanalizować gotowe rozwiązanie.

W Network 1 występuje blok DataLogCreate. Tworzy on plik, w którym będziemy zapisywać dane, a następnie go otwierać.

  • REQ – wymusza stworzenie nowego pliku.
  • RECORDS – informuje blok o liczbie wpisów, na które plik jest przygotowany.
  • Format – informujący blok o formacie, w jakim chcemy zapisać plik.
  • TIMESTAMP – pozwalający na włączenie i wyłączenie stempli czasowych.
  • NAME – pozwala na nadanie naszemu pliku nazwy.
  • ID – numer identyfikacyjny pliku. Jest to wejście typu InOut. Oznacza to, że po podaniu ID (wartość startowa równa 0), program stworzy plik i zaktualizuje numer identyfikacyjny do wartości większej. Pozwala to na tworzenie nowych plików (O różnych nazwach!) bez potrzeby kontroli ich numerów identyfikacji. (W wersji minimalnej, w wersji rozbudowanej musimy śledzić i kontrolować ID.)
  • HEADER – nagłówek, opisy poszczególnych kolumn, m.in. nazwy zmiennych wyświetlane w pliku.
  • DATA – adres do zmiennej, którą chcemy zapisać, lub adres do całej struktury.


Na wyjścia są przypisane flagi odpowiedzialne za kontrolę poprawności utworzenia pliku.

Network 2: Krótki kod odpowiedzialny za zapisanie treści ewentualnego błędu do pamięci PLC.

Network 3: Wychwytuje impuls zakończenia tworzenia pliku. Zabezpiecza przed wpisaniem danych do nieistniejącego pliku.

Network 4: Po wykryciu sygnału „SLI_gDB_DataLogW”.executeWrite, przepisuje dane z programu, do bufora, który zostanie następnie wysłany w szczeblu poniżej.

Network 5: Pierwszym warunkiem do zapisania danych jest utworzenie pliku w szczeblu 3. Drugim warunkiem jest podanie sygnału .executeWrite, tego samego co powyżej. W wejściu ID wybieramy, do którego pliku chcemy zapisać dane.

Network 6: Zamyka on plik, po przekroczeniu ustalonej liczby wpisów, tutaj 5. W wejściu ID wybieramy, który plik chcemy zamknąć.

Network 7: Po podaniu sygnału otwiera wybrany plik. Dla sterownika z rodziny S7-1200, możliwe jest równoczesne otwarcie maksymalnie 8 plików. W wejściu ID wybieramy, który plik chcemy otworzyć.

Network 8: Sygnał .executeNewFile powoduje stworzenie nowego pliku. Blok ten nie potrzebuje danych o strukturze pliku (HEADER i DATA), ponieważ posiłkuje się plikami wcześniej stworzonymi. Wymaga podania na wejście ID numeru pliku, z którego ma skopiować strukturę. Po utworzeniu nowego pliku, numer ID zostanie zaktualizowany. Możemy przy pomocy wejścia RECORDS określić liczbę wpisów, po której przekroczeniu plik zostanie zamknięty. Jak widać, pliki o tej samej strukturze mogą mieć inną liczbę wpisów. W wejście Name podajemy nazwę nowego pliku.


Jak widać, program jest prosty i ma na celu pokazanie podstawowego działania data logów. Wiedząc co poszczególne Network robią, możemy wykorzystać program do stworzenia plików z danymi i zapisać dane.

Obsługa kodu

Sterowanie odbywa się poprzez dwa bloki danych SLI_gDB_DataLogging oraz SLI_gDB_DataLogW. W bloku SLI_gDB_DataLogging w polu name wpisujemy nazwę pierwszego pliku danych, który chcemy utworzyć. W polu newName wpisujemy nazwę każdego kolejnego pliku z danymi. LogHeader pozwala na nadanie nazw kolumnom ze zmiennymi (nazwy oddzielone przecinkiem). Powyższe wartości możemy ustawić jako początkowe Start value albo podczas działania programu, przy pomocy podglądu w trybie Online.

Przechodzimy do tworzenia pliku. Włączamy PLC, wgrywamy program i konfigurację sprzętową. W tle otwieramy przeglądarkę internetową, a w adresie strony wpisujemy adres IP sterownika np. 192.168.0.1 W Tia Portal przechodzimy do trybu online i włączamy podgląd.

Żeby stworzyć plik, w bloku danych SLI_gDB_DataLogging, po ewentualnej konfiguracji przedstawionych już zmiennych, ustawiamy zmienną executeCreate na TRUE. Funkcja jest sterowana zboczem narastającym, ale lepiej profilaktycznie zmienną executeCreate ponownie ustawić na FALSE. W przeglądarce na web serwerze (adres IP PLC) w lokalizacji File Browser -> S7-1200 station 1 -> DataLogs pojawi się (w ciągu paru sekund) nasz plik z danymi, a dokładniej z nagłówkami, bo danych w postaci wartości zmiennych jeszcze nie ma.

Przechodzimy do bloku danych SLI_gDB_DataLogW i wpisujemy wartości, które chcemy zapisać w pliku. Ustawiamy więc, wartości dla count, scaledTemp, scaledPressure i zapisujemy je przy pomocy ustawienia zmiennej executeWrite na True. Ponownie, funkcja reaguje na zbocze, ale dobrze jest zmienną executeWrite ustawić ponownie na False. Każdy kolejny wpis jest tworzony w ten sam sposób. Wpisujemy zmienne, i aktywujemy executeWrite. Możemy tak zrobić 5 razy, bo mamy taką wartość wpisaną w RECORDS w Network 1. Po jej przekroczeniu plik zostanie zamknięty i każdy kolejny wpis zostanie zignorowany.

Pozostaje nam stworzyć kolejny plik o nazwie i liczbie wpisów wcześniej przez nas zdefiniowanych. Ustawiamy zmienną executeNewFile na TRUE i w przeglądarce, pojawia się kolejny plik. Żeby w nim zapisać zmienne, postępujemy tak samo jak poprzednio. Po osiągnięciu, tym razem, 10 wpisów plik zostanie zamknięty. I wpisy będą ignorowane. Możemy otworzyć plik przy pomocy executeOpen i nadpisywać najstarsze wpisy w drugim pliku danych.


Odczyt danych

Pobieramy oba pliki z web serwer, które teraz musimy zręcznie otworzyć. Aby to wykonać poprawnie, co nie jest tak proste jak może się wydawać.

Otwieramy najpierw MS Excel. Wybieramy pusty skoroszyt, przechodzimy do zakładki Dane i wybieramy z lewej strony, Z pliku tekstowego/CSV. Szukamy plik z danymi, i klikamy importuj. Otworzy się okno pozwalające na konfigurację. Klikamy Załaduj. Otrzymujemy dane, które możemy przeglądać, sortować i edytować.

Ocena artykułu zgłoszonego do Konkursu iAutomatyka 4.0 pisz artykuły, zdobywaj punkty, wymieniaj je na nagrody.

Kryterium 1 2 3 4 5 6 7 8 9 10
Punkty (0-2) 2 1 2 2 2 1 2 0 2 2
Suma zdobytych punktów: 16




Utworzono: / Kategoria: ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY