Obszar zastosowania: rejestracja parametrów
Projekt w oparciu o rozwiązania WAGO
Ponieważ projekty jakie realizuję dla moich Klientów na sterownikach PLC WAGO serii PFC są coraz bardziej rozbudowane, postanowiłem zoptymalizować użycie jednej z podstawowych funkcjonalności jaką jest logowanie danych pomiarowych do plików CSV. Prezentowane rozwiązanie jest to mocno odchudzona funkcjonalnie wersja Dataloggera WAGO - napisana całkowicie od podstaw przeze mnie. Brak jest tutaj jakichkolwiek wodotrysków typu wizualizacje itp. itd. Interesował mnie surowy zapis danych do plików CSV w formacie akceptowanym przez Dataplotter WAGO. Biblioteka miała zajmować jak najmniej miejsca w sterowniku i umożliwiać uruchomienie dużej liczby instancji z interwałem cyklicznego zapisu ustawionym na 1s.
Zachowana została możliwie największa kompatybilność z nomenklaturą oryginalnego Dataloggera. W ten sposób ktoś kto już korzystał z Dataloggera nie będzie miał żadnych problemów z użyciem mojej biblioteki. Małym wyjątkiem jest konfiguracja automatycznych prefixów / sufixów nazw generowanych plików w oparciu o bieżącą datę - zrobiłem to zupełnie inaczej niż WAGO.
Funkcjonalność:
- zapis do 80 kanałów pomiarowych
- dane zapisywane są na karcie SD
- zapis cykliczny lub na zewnętrzne zdarzenia
- możliwość synchronizacji zapisu z zewnętrznym dostępem do dysku z poziomu programu użytkownika
- automatyczne dzielenie plików po przekroczeniu rozmiaru 25MB
- automatyczne dodawanie prefixu / sufixu do nazwy tworzonych plików zgodnie z formatem zdefiniowanych przez użytkownika:
- YYYY
- YYYY MM
- YYYY MM DD
- YYYY MM DD HH
Zgodnie z zaleceniami WAGO wszelkie "czasożerne" operacje takie jak np. zapis plików powinny być wywoływane na tasku z priorytetem 15. W zależności od jakości zastosowanej karty SD nie powinno być problemu z jednoczesnym uruchomieniem 30 instancji Datalogger Light z interwałem zapisu 1s. Oczywiście mowa tutaj o gwarantowanym zapisie co 1s. Dla większej ilości instancji zapis na kartę nadal będzie się poprawnie odbywać, jednak nie zdołamy uzyskać znaczników czasowych co 1s. Możemy przejść na wyższy priorytet tasku, co przyczyni się do zwiększenia szybkości operacji, ale należy pamiętać, żeby task dostępu do dysku miał priorytet najniższy ze wszystkich pracujących tasków.
DataloggerLight + FileDirCleaner = pełna integracja
W programie dla jednego z moich Klientów zadeklarowane mam 240 instancji DataloggerLight, które dokonują cyklicznego logowania danych z:
- 60 zadajników pomieszczeniowych
- 60 liczników energii elektrycznej
- 120 urządzeń MBUS (ciepłomierze / wodomierze)
Logi każdego z urządzeń zapisywane są w jego indywidualnym katalogu roboczym. W związku z tym pojawiła się potrzeba zabezpieczenia przed zapełnieniem karty SD. Do kompletu dołożone zostały zatem 3 instancje FileDirCleaner doposażone na poziomie aplikacji użytkownika w sekwencery, które przemiatają nazwy podkatalogów urządzeń pomiarowych. Taka konfiguracja umożliwia usuwanie archiwalnych plików, starszych niż zadana ilość dni, celem zwolnienia miejsca na karcie SD. Operacje skanowania katalogów i kasowania plików zsynchronizowane są z operacjami zapisu na dysk.
www.stsystem.pl/oprogramowanie/wago-e-cockpit/datalogger-light
16