Page 1 of 1

S7-300 - formát DATE (2bytes)

PostPosted: Wed 17. Jul 2019 19:21:26
by Vlastimil Liml
Dobrý den,
potřeboval bych poradit, jakým způsobem korektně zobrazit datum získané z PLC S7-300 (Sinumerik 840DSl + ovladač PmS7-ethernet), které je uloženo v DB ve formátu DATE. (viz.obrázek)
Používám Promotic 8.3.30 a "Datové rozšíření ExtComm / ItemID - PmS7 / Datový typ v PLC" takovou možnost nenabízí. Pokud hodnotu čtu jako word (volba W = Unsigned word),
zobrazí se číslo, které odpovídá počtu dnů od 1.1.1990, takže např. 4.6.2018 má hodnotu 10381. Toto číslo potřebuji převést na datum a zobrazit v obraze (i pro web).
Děkuji

Re: S7-300 - formát DATE (2bytes)

PostPosted: Fri 19. Jul 2019 8:01:16
by Petr Návrat
Dobrý den

Datový typ který zmiňujete ovladač PmS7 nepodporuje (zatím, mohli bychom to tam dodělat, ale až v nových verzích Promotic 9).

To co potřebujete lze provést i ve verzi Pm8.3 následovně:

Správně čtete hodnotu jako World.
Získané číslo pak musíte převést skriptem na Date:

Dim MyWord, MyDate
MyWord = pMe.Pm("/PmComm/Data/#vars/xxx")
MyDate = Pm.DateAdd("d", MyWord, Pm.CreateDate(1990, 1, 1, 0, 0, 0, 0))

Proměnnou MyDate pak můžete uložit do proměnné objektu PmData a v obraze to pak zobrazovat.

viz metoda Pm.DateAdd: https://www.promotic.eu/cz/pmdoc/Object ... ateAdd.htm

Petr Návrat, navrat@microsys.cz