Instrukcje TIA Portal

Data i Czas
Logika Czasowa

Opanuj zegar swojego PLC. Od precyzyjnego oznaczania zdarzeń czasem po złożone obliczenia czasu i konwersje formatów, kontroluj każdą milisekundę.

Po co zarządzać czasem w PLC?

Zarządzanie czasem jest kluczowe dla automatyki przemysłowej. Pozwala na precyzyjne rejestrowanie zdarzeń produkcyjnych, wyzwalanie zaplanowanych zadań konserwacyjnych, obliczanie czasów cyklu maszyn i synchronizację systemów rozproszonych za pomocą protokołów NTP.

Nowoczesne sterowniki Siemens PLC oferują zaawansowane typy danych, takie jak DTL (Date and Time Long), który zapewnia bezpośredni dostęp do poszczególnych komponentów (Rok, Miesiąc, Dzień, Godzina) bez skomplikowanych operacji bitowych, co znacznie upraszcza programowanie w porównaniu do starszych formatów DT.

Odczyt Czasu

Dostęp do zegarów systemowych i lokalnych

T_CONV — Wyodrębnianie czasu systemowego

T_CONV

Co robi

Wyodrębnia określone komponenty z wartości data/czas lub konwertuje między formatami. Jest niezbędny do uzyskania czytelnych godzin/minut z surowego znacznika czasu.

Kiedy używać

Gdy potrzebujesz wyświetlić tylko czas na HMI z kompletnego tagu Date_And_Time.

Pro Porady

Użyj T_CONV do konwersji TOD (Time_Of_Day) na String w celu łatwego logowania.

Upewnij się, że typy wejściowe i wyjściowe są kompatybilne, aby uniknąć błędów przepełnienia.

W SCL instrukcja ta jest często obsługiwana niejawnie poprzez proste przypisania.

RD_SYS_T — Odczyt czasu systemowego

RD_SYS_T

Co robi

Odczytuje aktualny czas systemowy CPU (UTC). W przeciwieństwie do RD_LOC_T, nie uwzględnia czasu letniego ani przesunięć strefy czasowej.

Kiedy używać

Idealny do wewnętrznego logowania, gdzie wymagany jest ciągły, nieskokowy punkt odniesienia czasu (pozwala uniknąć problemów podczas zmian czasu letniego/zimowego).

Pro Porady

Zawsze używaj UTC do przechowywania w bazie danych, aby zapewnić globalną spójność.

Wyjście RET_VAL dostarcza informacji o statusie (np. czy zegar jest zsynchronizowany).

Połącz z RD_LOC_T, jeśli chcesz wyświetlić zarówno czas „techniczny”, jak i „ludzki”.

Arytmetyka

Obliczenia na czasach trwania i znacznikach czasu

T_ADD — Dodaj czas

T_ADD

Co robi

Dodaje czas trwania (Time lub LTime) do określonego punktu data/czas. Prawidłowo obsługuje przepełnienia minut, godzin i dni.

Kiedy używać

Obliczanie czasu wygaśnięcia lub zaplanowanego punktu ponownego uruchomienia (np. aktualny czas + 24 godziny).

Pro Porady

Bardzo przydatne do implementacji niestandardowych watchdogów o dynamicznym czasie trwania.

Używaj typów LTime dla precyzji nanosekundowej na procesorach S7-1500.

Jeśli wynik przekroczy maksymalną datę (Rok 2262), CPU ustawia status błędu.

T_DIFF — Różnica czasu

T_DIFF

Co robi

Oblicza różnicę między dwoma znacznikami czasu i zwraca wynik jako czas trwania (Time lub LTime).

Kiedy używać

Pomiar dokładnego czasu trwania kroku procesu lub obliczanie czasu pracy maszyny.

Pro Porady

Idealne do obliczeń OEE (Overall Equipment Effectiveness).

Odjęcie późniejszej daty od wcześniejszej zwraca ujemną wartość Time.

Na S7-1200/1500 używaj tagów DTL dla łatwiejszego dostępu do komponentów różnicy.

Konwersja

Zmiany formatu i obsługa String

T_CONV — Konwersja DT na DTL

T_CONV

Co robi

Konwertuje starszy format DATE_AND_TIME (8 bajtów) na nowoczesny format DTL lub odwrotnie.

Kiedy używać

Przy łączeniu starszego kodu lub bloków komunikacyjnych z nową logiką zoptymalizowaną dla S7-1500.

Pro Porady

Preferuj DTL we wszystkich nowych projektach, aby uniknąć złożoności BCD (Binary Coded Decimal).

Konwersja na DTL pozwala na pisanie „Tag.MONTH” bezpośrednio w kodzie.

Uważaj na precyzję milisekundową, która może zostać ucięta w niektórych formatach.

DT_TO_STRING — Serializacja czasu

DT_TO_STR

Co robi

Konwertuje wartość data/czas na czytelny format String. STRING_TO_DT wykonuje operację odwrotną.

Kiedy używać

Wysyłanie znaczników czasu do pliku CSV na karcie pamięci lub komunikacja z web API.

Pro Porady

Wyjściowy ciąg znaków jest zgodny z formatem ISO 8601 (RRRR-MM-DD-GG:MM:SS.ms).

Użyj STRING_TO_DT do parsowania dat otrzymanych z zewnętrznej bazy danych SQL.

Pamiętaj, że operacje na String bardziej obciążają CPU; używaj ich oszczędnie w szybkich pętlach.

DATE_AND_TIME kontra DTL

Wybór odpowiedniej struktury czasowej

CechaDATE_AND_TIME (Starszy)DTL (Nowoczesny)
Rozmiar8 bajtów12 bajtów
KodowanieBCD (Trudne do odczytania)Liczby całkowite (Bezpośrednio czytelne)
Dostęp do komponentówWymaga maskowania bitówStrukturalny (Tag.Month)
Zakres1990 do 20891970 do 2262
Wsparcie S7-1200/1500Tylko kompatybilnośćNatywne i zalecane
Precyzja10 ms1 nanosekunda

Często zadawane pytania

Jaka jest różnica między czasem systemowym a czasem lokalnym?

Czas systemowy (RD_SYS_T) to zawsze UTC, zapewniający stabilny punkt odniesienia. Czas lokalny (RD_LOC_T) dostosowuje się do Twojej strefy czasowej i reguł czasu letniego (DST) skonfigurowanych we właściwościach CPU.

Jak zsynchronizować zegar PLC z serwerem?

Włącz NTP (Network Time Protocol) w konfiguracji sprzętowej CPU. Podaj adres IP swojego serwera czasu, a PLC automatycznie dostosuje swój wewnętrzny zegar.

Dlaczego moje DATE_AND_TIME pokazuje dziwne wartości w Hex?

Starszy format DT używa kodowania BCD. Wartość 25 dziesiętnie jest przechowywana jako 16#25 w BCD. Zawsze używaj instrukcji konwersji lub DTL, aby poprawnie odczytywać wartości.

Czy mogę obliczyć różnicę między dwoma tagami DTL bezpośrednio?

W SCL możesz po prostu użyć operatora „-” między dwoma tagami DTL. TIA Portal automatycznie wywoła dla Ciebie instrukcję T_DIFF.

Zautomatyzuj zarządzanie czasem

Potrzebujesz generować raporty produkcyjne z precyzyjnymi znacznikami czasu lub zsynchronizować 50 sterowników PLC? T-IA Connect automatyzuje generowanie logiki czasowej.