• Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search

    načtení času v DT (unix sekundy od 1.1.1970) z modbus páru registrů

    Mervis
    2
    6
    973
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      ladmanj last edited by

      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

      Z 1 Reply Last reply Reply Quote 0
      • Z
        zdenek_rusek @ladmanj last edited by zdenek_rusek

        @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.

        L 1 Reply Last reply Reply Quote 0
        • L
          ladmanj @zdenek_rusek last edited by

          @zdenek_rusek
          Dobrý den,
          Bohužel ani jeden z navrhovaných bloků neposkytuje to co je třeba.

          1. 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
          2. 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é.

          Screenshot_20231205_022613.png Screenshot_20231205_023521.png

          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

          Z 1 Reply Last reply Reply Quote 0
          • Z
            zdenek_rusek @ladmanj last edited by

            @ladmanj

            Dobrý den, pane Ladman,

            napište nám prosím na podporu email support@unipi.technology, podíváme se na to hlouběji.

            ZR

            1 Reply Last reply Reply Quote 0
            • Z
              zdenek_rusek last edited by

              @ladmanj Dobrý den, pane Ladman,

              zkuste prosím toto řešení:

              obrázek.png

              L 1 Reply Last reply Reply Quote 0
              • L
                ladmanj @zdenek_rusek last edited by

                @zdenek_rusek

                Díky po drobné úpravě to funguje:

                55b63f9b-2404-469b-89ef-2114c5688fd9-image.png

                Stejně si myslím, že je škoda, že se nedá z modbusu rovnou načíst správně, ale to už "přežiju".

                JL

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post