Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2019/05/maxresdefault.jpg

Logowanie danych do Excela przy pomocy PLC Siemens S7-1200

autor: Przemek Czech.

Na przestrzeni ostatnich lat obserwujemy bardzo szybki rozwój sterowników PLC. Niegdyś wykorzystywane tylko do pracy tylko z sygnałami cyfrowymi oraz ciągłymi sygnałami analogowymi przeszyły prawdziwą rewolucję techniczną.

Dzisiaj sterownik PLC nie służy tylko i wyłącznie do sterowania procesem. Bierze również na swoje barki pracę w sieciach przemysłowych czy również zarządzaniem danymi. Dzisiaj na tapetę bierzemy budżetowy sterownik Siemensa S7-1200. Celem tego artykułu będzie przedstawienie wykorzystanie możliwości WebServera sterownika do logowanie danych procesowych sterownika do pliku *.CSV, a docelowo do Excela. Nie ukrywam, że piszę ten artykuł w odpowiedzi na publikacje, w której zostało przedstawiona możliwość logowania danych w sterownikach Allena Bradley’a, którą obejrzeć możemy pod tym linkiem.

Reklama

 

Niegdyś opcja logowania danych dostępna była tylko w rozbudowanych systemach SCADA lub w HMI z serii Comfort, jednak od kiedy pojawił się WebServer w sterownikach Siemens otworzyło się wiele furtek do poszerzania jego funkcjonalności. Wynik naszej pracy przedstawia screen poniżej.

Część hardwarowa

Do zrealizowania naszego logowania danych nie potrzeba wiele. Wystarczy dowolny sterownik S7-1200. Jedyna rzecz która nas ogranicza to firmware PLC’ka, funkcjonalność ta pojawia się dopiero od wersji 4.0.

Oczywiście zaczynamy konfiguracje sterownika od założenia projektu, dodania sterownika oraz ustawienia mu dowolnego adresu IP. Nie będę się tutaj rozwodził nad tym czynnościami gdyż były poruszany nie raz.

Następnie musimy uruchomić WebServer na naszym urządzeniu. Aby to uczynić wchodzimy w konfiguracje sterownika (Project Tree -> „Nazwa_naszego_sterownika” -> Prawy przycisk myszy -> Properties).

Otwiera się nam okno konfiguracji.

Konfiguracja sterownika

Przechodzimy do zakładki WebServer [1]. W pierwszej sekcji zaznaczmy Activate webserver on all modules of this device, oraz odznaczamy Permit acces only with HTTPS [2]. Jest to opcja odpowiedzialna za certyfikaty bezpieczeństwa. Do naszych celów szkoleniowych nie potrzebujemy z nich korzystać. Użycie ich mocno skomplikowało by konfigurację, więc można sobie je na chwile obecną odpuścić.

Reklama

 

Teoretycznie nasz WebServer jest już uruchomiony. Jednak nie mamy na chwilę obecną możliwości zalogowania się do niego ponieważ musimy założyć sobie konto aby się zalogować.

Utworzenie nowego użytkownika

Aby to zrobić przechodzimy do drugiego modułu konfiguracji. Jest tam tabela z stworzonymi użytkownikami. Jak widzimy jest tylko jeden użytkownik Everyone ale nie ma on żadnych praw, przez co nawet nie może się zalogować.

Klikamy jeden rekord niżej i dodajemy użytkowania admin z dowolnym hasłem u mnie będzie to admin. Pozostało nam jeszcze nadanie mu odpowiednich uprawnień. Zaznaczamy wszystkie opcje aby mieć możliwość z pełnej listy konfiguracji oraz możliwości WebServera [2]. Po tej czynności jesteśmy gotowi aby wgrać program oraz konfiguracje sprzętową do sterownika.

A więc zróbmy to. Po wgraniu uruchamiamy dowolną przeglądarek internetową i w pasku adresu wpisujemy nasz adres PLC’ka. Po załadowaniu strony powinien pojawić się taki widok

Logowanie do WebServera

Widzimy tu podstawowe informację dotyczące sterownika. Jednak by w pełni korzystać z funkcjonalności musimy zalogować się do wcześniej stworzonego przez nas konta [1]. Po zalogowaniu okno zmienia swój wygląd.

Jak widzimy z lewej strony pojawił nam się panel administracyjny z wieloma opcjami [1].

Pozwolę pokrótce wyjaśnić sobie zadania każdej z zakładek:

  1. Start page – aktualnie widziany widok.
  2. Diagnostic – informacje o ilości wykorzystanej pamięci sterownika oraz zabezpieczeniach programu.
  3. Diagnostic Buffer – jak sama nazwa wskazuje dobrze nam znany bufor diagnostyczny.
  4. Module information – dane dotyczące aktualnie używanego sterownika takie jak numer zamówieniowy, wersja firmawaru, czy w jakiej wersji TIA Portal powstał program.
  5. Communication – połączenia sieciowe.
  6. Tag Status – w tym miejscu możemy podejrzewać aktualne stany zmiennych, wejść oraz wyjść.
  7. Watch Tables – funkcjonalność jak wyżej z tą tylko różnicą, że możemy przygotować sobie w Tia Portal gotowe zbiory zmiennych i od razu widzieć ich wartości bez zbędnego wpisywania.
  8. Online Backup – możliwość tworzenia backup’ów oraz wgrywania ich.
  9. User definied pages – sterowniki S7 – 1200/1500 pozwalają na samodzielne tworzenie stron oraz wgrywanie je do pamięci LOAD sterownika. Jednak do stworzenia takowej strony trzeba biegle posługiwać się HTML’em oraz JavaScript’em.
  10. File Browser – w tym miejscu możemy ściągnąć nasze pliki logowania oraz receptury (z tej funkcjonalności będziemy właśnie korzystać w tej publikacji).

Jak widać uruchomienie WebServera pozwala na korzystanie z wielu opcji sterownika bez konieczności korzystania z TIA Portal. Wróćmy jednak to tematu logowania.


Część softwarowa

Przejdźmy więc do opracowania programu, który będzie realizował nasze założenia.

Plan jest następujący – sterownik ma zapisywać wartość trzech zmiennych, których wartość będzie zmieniała się co 5s. Stwórzmy sobie na początek blok danych, który będzie zawierał nasze zmienne oraz dodatkowo jedną zmienną typu bool, która odpowiedzialna będzie za zapisywanie danych do logów. Blok ten ma nazwę DB_Dane, a jego zawartość przedstawiona jest na screenie poniżej.

Aby nasz program nie zapisywał ciągle tych samych wartości zasymulujemy sobie zmianę zmiennych przez przerwanie cykliczne o czasie wywołania 5 sekund, w którym będziemy zwiększać wartości oraz setować zmienną od zapisywania danych logowania.

Skoro mamy przygotowane zmienne, można przejść do pisania właściwego programu. Aby zachować porządek w kodzie (jestem wielkim przeciwnikiem wywoływania gołych funkcji w MAIN [OB1]), stwórzmy sobie Function Block o nazwie FB_Logowanie.

Oraz wywołajmy go w MAIN’ie.

Kiedy mamy już trochę zorganizowany kod można przejść do właściwego programowania. Aby w ogóle zacząć zapisywać dane trzeba najpierw stworzyć plik do którego będziemy je zapisywać. Służy do tego funkcja DataLogCreate [1]. Wszystkie funkcje dotyczące logowania danych znajdziemy w Instructions -> Extended Instructions -> Recipie and data logging [2].

Wróćmy jednak do naszej funkcji DataLogCreate ma ona następujące parametry wejściowe:

  1. REQ – podanie na to wejście stanu wysokiego tworzy plik logowania w pamięci LOAD oraz udostępnia go w WebServerze (w naszym przypadku stworzymy zmienną która wysterujemy tylko raz, w prawdziwym projekcie można wyciągnąć sobie ją na HMI/SCADA).
  2. RECORDS – jest to liczba rekordów danych która ma się znaleźć w naszym pliku. Ogranicza nas tylko ilość pamięci LOAD sterownika. Jeżeli sterownik osiągnie zadaną ilość zacznie nadpisywać dane od początku więc warto przewidzieć dużo większa ilość rekordów.
  3. FORMAT – jak sama nazwa wskazuję jest to format zapisywanego pliku do wyboru mamy 0 – Internal  (nie wspierany przez S7-1200) oraz 1 – CSV, czyli ten który będzie nas interesował.
  4. TIMESTAMP – jeżeli chcemy aby sterownik razem z wartościami zmiennych zapisywał również datę oraz czas, musimy ustawić to wejście w stan wysoki.
  5. Name – nazwa naszego pliku  w formacie String  (łańcuch znaków).
  6. ID – jest to tak naprawdę parametr IN/OUT . Jest najważniejszy, ponieważ podczas tworzenia pliku zostaje przypisana tej zmiennej sygnatura pliku. Z wartości tej będziemy korzystać praktycznie na każdym kroku.
  7. DATA – są to wartości naszych zmiennych. Dość istotną kwestią jest to, że muszą być to dane zorganizowane w strukturze. Czym jest struktura? Własny typ danych (w STEPIE 5.5 nazywało się to bodajże UDT – User defined type). A tak po polsku jest to typ danych, który pozwala nam przyporządkować jednej zmiennej dostęp do wielu jej pod zmiennych.
  8. HEADER – jest to opcjonalny parametr, pozwala on na tworzenie eleganckich nagłówków kolumn w Excelu, parametry ten jest typu String. Aby zbudować te nagłówki trzeba nazwy kolumn oddzielać przecinkami.

Oraz standardowe parametry wyjściowe:

  1. DONE – stan wysoki sygnalizuje, że udało się utworzyć plik.
  2. BUSY – operacja jest w trakcie wykonywania.
  3. ERROR – błąd podczas tworzenia pliku,
  4. STATUS – zmienna typu WORD, która przyjmuje wartości w zależności od aktualnie wykonywanej operacji. Jej wartości można sprawdzić w manualu TIA Portal.

Aby uzupełnić parametry funkcji DataLogCreate stwórzmy dodatkowy blok danych o nazwie DB_Logging, który będzie przechowywał kluczowe dane odnośnie logowania.

Są to zmienne odpowiedzialne za:

  • ID – sygnatura pliku,
  • Data – struktura zawierające zmienne, które mają się znaleźć w naszym pliku.

Przed uzupełnieniem parametrów musimy jeszcze przypisać zmienne do naszej struktury. W tym celu w pierwszym Networku robimy inicjalizację naszych zasymulowanych zmiennych, czyli dane przypisywane w przerwaniu przypisujemy do struktury.

Z ważniejszych parametrów zostały nam stworzyć jeszcze dwie zmienne typu String. Jedna jest odpowiedzialna za nazwę pliku, a druga za nagłówki kolumn w Excelu. Jak wcześniej już wspominałem nagłówki kolejnych kolumn oddzielamy przecinkiem.

Skoro mamy komplet informacji można w końcu uzupełnić naszą funkcje DataLogCreate. Aby zachować czytelność kodu oraz łatwość diagnostyki warto sobie uzupełnić parametry wyjściowe funkcji o stworzone lokalnie zmienne (DataLogCreateDone, DataLogCreateBusy, DataLogCreateError, DataLogCreateStatus).

Aby nie być gołosłownym sprawdźmy sobie wyniki naszej dotychczasowej pracy. Wgrajmy program do sterownika oraz wymuśmy stan wysoki na zmiennej DataLogCreateREQ.

Jeżeli zmienna DataLogDone przyjmie stan wysoki możemy zresetować DataLogCreateREQ.

Po poprawnie wykonanej powyższej sekwencji nasz plik powinien się pojawić na WebServerze. Więc zalogujmy się i sprawdźmy czy on tam jest. Logujemy się przechodzimy do File Browser -> Data logs -> Dane logowania.

Jak widać plik się pojawił. Jednak jak go podglądniemy to zobaczymy, że znajdują się w nim stworzone przez nas nagłówki kolumn. Aby zacząć zbierać dane w musimy wykorzystać funkcję DataLogWrite.

Tutaj sytuacja jest dużo prostsza, gdyż posiada ona tylko dwa parametry wejściowe:

  • REQ – wykrycie zbocza narastającego powoduje zapis danych do wcześniej stworzonego pliku,
  • ID – sygnatura pliku, która została przypisana do zmiennej podczas tworzenia pliku na WebServerze.

Oraz standardowy zestaw parametrów wyjściowych.

Jako sygnał wyzwolenia zapisu użyjemy zmiennej zapisz z bloku danych DB_Dane.  Jest ona ustawiana w stan wysoki w przerwaniu cyklicznym, przez co nasze dane zapisywane będą co 5 sekund (tyle trwa interwał przerwania). Zaś ustawienie stanu niskiego będzie odbywało się przez parametr wyjściowy funkcji DataLogWrite o nazwie Done.

W zasadzie już nasz program do logowania zmiennych jest gotowy. Jednak nie można zapomnieć o dość istotnej sprawie jaką jest otwarcie pliku. Kiedy pierwszy raz tworzymy plik logowania nie ma potrzeby otwierania pliku gdyż podczas tego procesu jest otwierany samoczynnie. Ale co gdy wyłączymy sterownik? Plik z automatu zostanie zamknięty i po ponownym uruchomieniu nie sterownik PLC nie ma do niego dostępu. Trzeba napisać prosty algorytm który przy każdym uruchomieniu sterownik otworzy plik.

Aby to uczynić wystarczyć wysterować jedną zmienna w bloku OB100 czyli Startup (blok ten uruchamiany jest tylko raz podczas uruchamiania sterownika).  Stwórzmy sobie zatem dodatkową zmienną w bloku DB_Dane typu bool o nazwie otwórz i wysterujmy ją w bloku OB100. 

Podobnie jak w przypadku DataLogWrite zmienna otwórz zresetowana będzie przez parametr wyjściowy Done. 

Do otwierania plików logowania służy funkcja DataLogOpen.

Funkcja DataLogOpen ma następujące parametry wejściowe:

  • REQ – wyzwolenie procesu otwarcia pliku,
  • MODE – jeżeli ustawimy ten parametr w logiczną jedynkę przy otwarciu pliku wszystkie dane zostaną usunięte, jeżeli w zero to wcześniej zapisane dane zostaną zachowane,
  • NAME – nazwa pliku,
  • ID – sygnatura pliku.

Co do parametrów wyjściowych nie będę się rozpisywał ponieważ są one standardowe. Nasza funkcja otwierania powinna wyglądać jak poniżej.

Tak przygotowany program wgrywamy do sterownika. Nie pozostaję nam nic po za tym jak zalogować się na WevServer, ściągnąć plik logowania na dysk oraz zaimportować dane do Excela. W moim przypadku przedstawia się to w następujący sposób:

Podsumowanie

Jak widać po tej publikacji nie można lekceważyć możliwości sterownika S7-1200. Udało się zrealizować założenia bez korzystania z bardzo drogich systemów SCADA, czy bardzo drogiego sterownika S7-1500.

Polecam zapoznać się z pozostałymi funkcjonalnościami jakie daje WebServer. Mam również nadzieję, że przedstawiony powyżej sposób uprości wam realizację większych projektów o ograniczonym budżecie.

Zapytania ofertowe na zakup PLC i HMI Siemens można kierować na oferty@staport.pl

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

Nagrodę klucz do szaf + głośnik + zestaw gadżetów dostarcza ambasador konkursu, firma WAGO.

 



Utworzono: / Kategoria: , , , ,
  • Autor: Przemek Czech
  • Automatyk, absolwent mechatroniki interesujący się sterownikami PLC oraz systemami nadrzędnymi a zwłaszcza tymi które przenoszą klasyczna automatykę w świat IT
  • Profil Autora

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