Strona 1 z 1

RS232 + Wykres 24 h

: 03 lut 2013 11:29
autor: d4vid
Witam.
Przedstawię krótko mój problem. Przy użyciu mikrokontrolera przesyłam dane do labview po RS232. Jest do bufor 5 bajtowy, który zawiera dane o temperaturze wilgotności i cisnieniu. Następnie ta dane chce przedstawiać na trzech osobnych wykresach. NA osi x znajdowala by się oś czasu z przedziału od 0 do 24 h a na osi Y np. aktualną temperatura w danej godzinę. Stworzylem wykres XY tylko zamiast rysowac punkty co sekundę to na wykresie mam jeden punkt i zmienia sie w zaleznosci od temperaury ( w gole lub w dół). Oraz jest problem z wsywietlaniem godziny
Obrazek

Wie ktoś moze jak ten problem rozwiazać?

Re: RS232 + Wykres 24 h

: 03 lut 2013 13:12
autor: ruda
Hej

Problem polega na złym podpięciu kala do shift rejestru. podpiołes tam pustą tablicę,

Obrazek
natomiast powinieneś podpiąć tablicę z nowo powstałymi danymi, czyli za bloczkiem "build array"
Obrazek

Re: RS232 + Wykres 24 h

: 03 lut 2013 16:19
autor: d4vid
Dzięki wielkie. Teraz rejestruje :) Tylko napotkałem kolejny problem. Przy odczycie danych pojawiają się jakieś błędy .. Gdy opóźnienie pętli było równe zero błędów było zdecydowanie więcej gdy ustawiłem opóźnienie 1000ms zmniejszy ale też występują. Czy jest jakiś sposób na to?

Obrazek

RS232 + Wykres 24 h

: 03 lut 2013 17:06
autor: ruda
Hej nie do końca rozumiem Twój kod dlaczego używasz tutaj zmiennej lokalnej jak możesz dane czytać bezpośrednio?

Re: RS232 + Wykres 24 h

: 03 lut 2013 20:18
autor: d4vid
Chodzi o zmienna 'Stan bufora' ? Myślałem ze to w jakiś sposób wyeliminuje te skoki. Połączenie bezpośrednio też powoduje takie dziwne wartość... Jest jakaś możliwość wyeliminowania tego zjawiska?

RS232 + Wykres 24 h

: 04 lut 2013 15:09
autor: ruda
Hej proponuje zaznaczony od przenieść do case (i całość włożyć do tej struktury sekwencyjnej), zrezygnować ze zmiennej lokalnej a skonwertowaną temperaturę (którą później wrzucasz do shift rejestru) przeciągnąć w stanie false z tego rejestru. Może to pomoże :)

Obrazek

Re: RS232 + Wykres 24 h

: 04 lut 2013 18:16
autor: d4vid
Przeniosłem tak jak mówiełeś . DAlej to samo :|

RS232 + Wykres 24 h

: 05 lut 2013 12:08
autor: ruda
Hej poprawiłam Twój kod

Obrazek

Chodziło mi o to żeby wyświetlać dane na wykresie tylko i wyłącznie gdy otrzymamy dane z mikrokontrolera czyli w casie true dodajemy wynik do tablicy (bez zmiennych lokalnych) a w casie false wyświetlamy (przeciągamy z shift rejestru) stworzoną tablicę.

Poprawiony kod wrzucam w postaci VI

Jeżeli dalej będą błędy to wydaje mi się że może to być wina mikrokontrolera bo nic innego nie przychodzi mi do głowy

Re: RS232 + Wykres 24 h

: 05 lut 2013 15:50
autor: TuChoLa
Jak bym jeszcze sprawdził czy to czasem nie będzie wina 'termination char', nie wiem jaka jest specyfikacja urządzenia, z którym się komunikujesz, ale z doświadczenia wiem, że znaki końca nie zawsze są takie jak domyślnie są ustawione w Visa. Chociaż po ponownym spojrzeniu na program, wydaje mi się to mniej prawdopodobne.

Tak jak ruda mówi, najlepiej żeby to wszystko się znalazło w jednym case. RS232 jest dosyć delikatny i podatny na zakłócenia więc można spróbować też przeanalizować trasę przewodu, ewentualnie stan wtyczek.

RS232 + Wykres 24 h

: 05 lut 2013 16:32
autor: d4vid
Ruda jednak i to nie pomogło ... może rzeczywiście jest to coś po stronie mikrokontrolera ;/

RS232 + Wykres 24 h

: 05 lut 2013 19:00
autor: Góras
Możesz wykreślić XY Graph z temperaturą, ciśnieniem i wilgotnością - zobaczysz wtedy, czy wszystkie odczytane dane są złe czy tylko termometr robi Ci takie 'strzały'

Re: RS232 + Wykres 24 h

: 05 lut 2013 23:25
autor: d4vid
NA kazdym wykresie pojawiaja sie te zmiany i w tym samym czasie ... raz na jakiś czas zakłócona jest transmisja danych..

RS232 + Wykres 24 h

: 05 lut 2013 23:43
autor: Góras
No to możesz założyć, że wszystkie błędy to zakłócenia i przefiltrować dane - np. mierzyć różnicę między kilkoma ostatnimi próbkami i jeśli różnica pomiędzy nową próbką a poprzednią jest dużo większa od średniej tych różnic, wyliczyć przybliżoną wartość temperatury.