načtení času v DT (unix sekundy od 1.1.1970) z modbus páru registrů
-
Dobrý den
Dokážete mi poradit jak načíst 32 bitů, které nesou datum a čas v unix formátu, který je podle dokumentace kompatibilní s typem DT z modbus registrů?Mám dva modbus registry, které dohromady tvoří 32 bitů. Dokážu je načíst jako UDINT, nebo DWORD, ale transformaci na DT nenacházím.
Nenacházím ani knihovní blok UDINT_TO_DT, nebo DWORD_TO_DT.
Vůbec už nevím co s tím dělat.Děkuji za pomoc
-
@ladmanj Dobrý den,
šlo by použít blok B98, podívejte se prosím na dokumentaci tohoto bloku, jestli Vám vyhovuje. Pokud ne, tak B100 (Time Conversion) a následně COMPOSEDATETIME.
-
@zdenek_rusek
Dobrý den,
Bohužel ani jeden z navrhovaných bloků neposkytuje to co je třeba.- B98 - očekává vstup DT a ne UDINT (já mám UDINT načtený z modbusu kde je počet sekund od 1.1.1970)
=> kompilace končí neúspěchem - B100 - nemám datum v komponentách jako rok, měsíc, den, ..., ale mám počet sekund od roku 1970, pokud to vyplním takto => kompilace je úspěšná, ale výsledky jsou vadné.
Chápu-li definici datového typu DT správně, je to právě UNIX čas, tedy počet sekund od 1.1.1970, ale chybí mi legální "cast" mezi UDINT a DT.
Nejlepší by bylo, kdyby se v definici modbus registrů dalo nastavit, že data jsou typu DT a hotovo. Problém by byl vyřešem. Ale tato možnost v IDE není, a když to změním ruční editací XML souboru (definice_modbus.hw) a naimportuju, tak to tam sice ve formátu DT je, ale data jsou chybná.
Obávám se že to bude chtít bugfix od energocentra ... :-(
S pozdravem
Jakub Ladman - B98 - očekává vstup DT a ne UDINT (já mám UDINT načtený z modbusu kde je počet sekund od 1.1.1970)
-
Dobrý den, pane Ladman,
napište nám prosím na podporu email [email protected], podíváme se na to hlouběji.
ZR
-
@ladmanj Dobrý den, pane Ladman,
zkuste prosím toto řešení:
-
Díky po drobné úpravě to funguje:
Stejně si myslím, že je škoda, že se nedá z modbusu rovnou načíst správně, ale to už "přežiju".
JL