Pytanie o czas w LabView

Jeśli masz coś do powiedzenia w sprawie LabVIEW napisz. Tutaj są tematy, których nie można uściślić do innych działów.
51vY
Posty: 2
Rejestracja: 06 lip 2007 00:00

Pytanie o czas w LabView

Post autor: 51vY » 06 lut 2017 10:50

Witam, mam nietypowy problem.
Problem nr.1:
Tworzę aplikację w LabView która odczytuje dane z bazy SQL (dane wraz z czasem UTC).
Aplikacja musi być uniwersalna, co oznacza, że musi zawierać wybór strefy czasowej oraz wybór czasu letni/zimowy.
Np. dane zapisane w UTC (synchronizowanego z GPS) wyświetlane muszą być zgodnie z wybraną strefą czasową oraz uwzględniać powinny zmianę czasu lub jej brak (w zależności od wyboru).
Ma ktoś jakiś pomysł jak to zrobić?
Problem nr.2
Jak już uda mi się uporać z problemem nr.1 pozostaje pytanie.
Jak wyświetlić dane (analogowe pomiary oraz dane binarne) w osi czasu w przypadku zmiany godziny "w tył"?
Proszę o jakiekolwiek pomysły.

Awatar użytkownika
aaddaas
Posty: 182
Rejestracja: 26 cze 2013 20:42
Wersja środowiska: LabVIEW 2015

Pytanie o czas w LabView

Post autor: aaddaas » 06 lut 2017 11:19

Odnośnie pierwszego pytania, to polecam https://forums.ni.com/t5/LabVIEW/Get-ti ... -p/3097051

ad 2. O jaką oś czasu Ci chodzi? Nie do końca to rozumiem....
Obrazek

Awatar użytkownika
Pitol
Moderator
Posty: 916
Rejestracja: 19 lip 2007 00:00
Wersja środowiska: LabVIEW 2015
Lokalizacja: Kraków
Has thanked: 1 time
Been thanked: 7 times

Pytanie o czas w LabView

Post autor: Pitol » 06 lut 2017 14:03

Twoje drugie pytanie nie ma trywialnego rozwiązania.
W momencie gdy cofamy czas to mamy tak naprawdę dwie godziny w jednej.
Np. dane od 0:00 do 1:00, następnie cofamy czas z 1:00 na 0:00 i znowu kolejna godzina danych z "takim samym" czasem.
Jak to wyświetlić?

Jednym z rozwiązań jest zawsze wyświetlać dane względem czasu np. UTC. Ale sam napisałeś, że muszą być w lokalnym czasie, więc rozwiązanie odpada.
Można by jednak spróbować następującego rozwiązania:
Swój lokalny czas prezentować w formie "UTC + x (local_time)". W momencie zmiany czasu po prostu na osi będzie czas "UTC + x - 1 (local_time)".

Jeśli to rozwiązanie Cie nie satysfakcjonuje to jest jeszcze jedno, ale mniej przyjemne.
Przyjmijmy te same godziny co wyżej, czyli zmiana czasu następuje z 1:00 na 0:00.

W takim przypadku należy "pierwszą" godzinę (0:00 - 1:00) przeskalować na pół godziny.
Czyli zbieramy godzinę danych i skalujemy wszystko tak, żeby to udawało 30 min.
Następnie dane zebrane po cofnięciu czasu przeskalować też na pół godziny.

Otrzymujemy:
0:00 - 0:30 -> dane sprzed zmiany czasu (0:00 - 1:00)
0:30 - 1:00 -> dane po zmianie czasu (0:00 - 1:00)

Na wykresie nie będzie problemu, tylko trzeba będzie pamiętać jak interpretować dane w okolicy zmiany czasu.
ObrazekObrazek
Chcesz taki podpis? Zajrzyj tutaj

Awatar użytkownika
micard
Posty: 134
Rejestracja: 30 wrz 2011 11:28
Wersja środowiska: LabVIEW 2016
Has thanked: 4 times
Been thanked: 2 times
Kontakt:

Pytanie o czas w LabView

Post autor: micard » 06 lut 2017 14:23

Najlepszym rozwiązaniem jet wyświetlanie czasu UTC; niestety użytkownicy często na nie narzekają.
Tak jak piszesz - problem stanowi tak na prawdę tylko sytuacja przesunięcia czasu "w tył" - i wielkosć problemu zależy od zakresu, który chcesz pokazać na osi czasu.
W moim ostatnim projekcie, w którym ten problem wystąpił, wykrywałem sytuację kiedy zmiana "w tył" mógłby się znaleźć na wykresie i zamieniałem na ten czas wyświetlanie czasu pomiaru, na ujemny czas "jak dawno pomiar był wykonany". wszystkie wartości były ujemne - więc użytkownik miał małe szanse się pomylić.

51vY
Posty: 2
Rejestracja: 06 lip 2007 00:00

Pytanie o czas w LabView

Post autor: 51vY » 08 lut 2017 11:41

Tak jak piszecie, sprawa niestety nie jest trywialna.
Co do problemu nr.1 - dzięki za linka, tu wszystko jest już jasne,
Co do problemu nr.2 - na ten moment pomysł jest taki:
- na osi czasu wyświetlam czas zgodny z czasem lokalnym + daylight savings
- w momencie, gdy następuje zmiana czasu (o ile jest wybrana) kreślę linię przerywaną z taką informację
- w przypadku gdy czas "skacze do przodu" na osi nie ma pustej godziny, ale linia informuje nas o zmianie
- w przypadku gdy czas "skacze do tyłu" na osi mamy podwojony czas, ale również widzimy od razu moment zmiany
Na ten moment dzięki za pomoc.

ODPOWIEDZ