Datum in čas
Časovna logika
Osvojite uro vašega PLC. Od natančnega časovnega žigosanja dogodkov do kompleksnih časovnih izračunov in pretvorb formatov, nadzorujte vsako milisekundo.
Zakaj upravljati čas v PLC?
Upravljanje časa je ključnega pomena za industrijsko avtomatizacijo. Omogoča natančno beleženje proizvodnih dogodkov, sprožanje načrtovanih vzdrževalnih opravil, izračunavanje cikličnih časov strojev in sinhronizacijo porazdeljenih sistemov prek NTP protokolov.
Sodobni Siemens PLC-ji ponujajo napredne podatkovne tipe, kot je DTL (Date and Time Long), ki omogoča neposreden dostop do posameznih komponent (leto, mesec, dan, ura) brez zapletene bitne manipulacije, kar močno poenostavi programiranje v primerjavi s starejšimi DT formati.
Branje časa
Dostop do sistemske in lokalne ure
T_CONV — Ekstrakcija sistemskega časa
T_CONVKaj naredi
Ekstrahira specifične komponente iz vrednosti datuma/časa ali pretvarja med formati. Bistveno je za pridobivanje berljivih ur/minut iz surovega časovnega žiga.
Kdaj uporabiti
Ko morate na HMI prikazati samo čas iz celotne Date_And_Time oznake.
Strokovni nasveti
Uporabite T_CONV za pretvorbo TOD (Time_Of_Day) v String za enostavno beleženje.
Zagotovite, da so vhodni in izhodni tipi združljivi, da se izognete napakam zaradi prekoračitve.
V SCL to navodilo pogosto implicitno obravnavajo preproste določitve.
RD_SYS_T — Branje sistemskega časa
RD_SYS_TKaj naredi
Bere trenutni sistemski čas CPU (UTC). Za razliko od RD_LOC_T ne vključuje poletnega časa ali odmikov časovnih pasov.
Kdaj uporabiti
Idealno za interno beleženje, kjer je potrebna neprekinjena časovna referenca brez skokov (izogne se težavam med spremembami poletnega časa).
Strokovni nasveti
Za shranjevanje v bazo podatkov vedno uporabite UTC, da zagotovite globalno doslednost.
Izhod RET_VAL zagotavlja informacije o stanju (npr. če je ura sinhronizirana).
Kombinirajte z RD_LOC_T, če želite prikazati tako 'tehnični' kot 'človeški' čas.
Aritmetika
Izračuni trajanj in časovnih žigov
T_ADD — Seštevanje časa
T_ADDKaj naredi
Doda trajanje (Time ali LTime) določeni točki datuma/časa. Pravilno obravnava prekoračitve minut, ur in dni.
Kdaj uporabiti
Izračun časa poteka ali načrtovane točke ponovnega zagona (npr. trenutni čas + 24 ur).
Strokovni nasveti
Zelo uporabno za implementacijo watchdogs po meri z dinamičnim trajanjem.
Uporabite LTime tipe za nanosekundno natančnost na S7-1500 CPU-jih.
Če rezultat preseže največji datum (leto 2262), CPU nastavi status napake.
T_DIFF — Časovna razlika
T_DIFFKaj naredi
Izračuna razliko med dvema časovnima žigoma in vrne rezultat kot trajanje (Time ali LTime).
Kdaj uporabiti
Merjenje natančnega trajanja procesnega koraka ali izračun časa delovanja stroja.
Strokovni nasveti
Popolno za izračune OEE (Overall Equipment Effectiveness).
Odštevanje večjega datuma od manjšega vrne negativno Time vrednost.
Na S7-1200/1500 uporabite DTL oznake za lažji dostop do komponent razlike.
Pretvorba
Spremembe formatov in ravnanje s String-i
T_CONV — DT v DTL pretvorba
T_CONVKaj naredi
Pretvori starejši DATE_AND_TIME (8 bajtov) v sodobni DTL format ali obratno.
Kdaj uporabiti
Pri povezovanju starejše kode ali komunikacijskih blokov z novo S7-1500 optimizirano logiko.
Strokovni nasveti
Dajte prednost DTL za vse nove projekte, da se izognete kompleksnosti BCD (Binary Coded Decimal).
Pretvorba v DTL vam omogoča neposredno pisanje 'MyTag.MONTH' v vašo kodo.
Bodite previdni z milisekundno natančnostjo, ki je v nekaterih formatih lahko odrezana.
DT_TO_STRING — Serializacija časa
DT_TO_STRKaj naredi
Pretvori vrednost datuma/časa v berljiv String format. STRING_TO_DT naredi obratno.
Kdaj uporabiti
Pošiljanje časovnih žigov v CSV datoteko na pomnilniško kartico ali komunikacija s spletnim API-jem.
Strokovni nasveti
Izhodni niz sledi formatu ISO 8601 (YYYY-MM-DD-HH:MM:SS.ms).
Uporabite STRING_TO_DT za razčlenjevanje datumov, prejetih iz zunanje SQL baze podatkov.
Upoštevajte, da so operacije String bolj CPU intenzivne; uporabljajte jih zmerno v hitrih zankah.
DATE_AND_TIME proti DTL
Izbira prave časovne strukture
| Funkcija | DATE_AND_TIME (Starejši) | DTL (Sodobni) |
|---|---|---|
| Velikost | 8 bajtov | 12 bajtov |
| Kodiranje | BCD (Zapleteno za branje) | Cela števila (Neposredno berljivo) |
| Dostop do komponent | Zahteva bitno maskiranje | Strukturno (Tag.Month) |
| Obseg | 1990 do 2089 | 1970 do 2262 |
| S7-1200/1500 podpora | Samo kompatibilnost | Naravno in priporočeno |
| Natančnost | 10 ms | 1 nanosekunda |
Pogosto zastavljena vprašanja
Kakšna je razlika med sistemskim časom in lokalnim časom?
Sistemski čas (RD_SYS_T) je vedno UTC, kar zagotavlja stabilno referenco. Lokalni čas (RD_LOC_T) se prilagaja vašemu specifičnemu časovnemu pasu in pravilom poletnega časa (DST), nastavljenim v lastnostih CPU.
Kako sinhronizirati uro PLC s strežnikom?
Omogočite NTP (Network Time Protocol) v strojni konfiguraciji CPU. Navedite IP vašega časovnega strežnika in PLC bo samodejno prilagodil svojo notranjo uro.
Zakaj moj DATE_AND_TIME prikazuje čudne vrednosti v Hex?
Starejši DT uporablja BCD kodiranje. Vrednost 25 v decimalnem zapisu je shranjena kot 16#25 v BCD. Vedno uporabljajte navodila za pretvorbo ali DTL za pravilno branje vrednosti.
Ali lahko neposredno izračunam razliko med dvema DTL oznakama?
V SCL lahko preprosto uporabite operator '-' med dvema DTL oznakama. TIA Portal bo samodejno poklical navodilo T_DIFF namesto vas.