Strona 1 z 2
LabView + akcelerometr po RS232
: 01 gru 2011 21:58
autor: Framag
Witam.
Chciałbym stworzyć w LabView aplikację, która będzie odbierała dane po RS232 z mikrokontrolera STM32, który obsługuje akcelerometr. Dane te to przyspieszenie zmierzone w dwóch osiach. Po odbiorze danych chciałbym je wyświetlać na płaszczyźnie XY w formie punktu informującego o aktualnej wartości przyspieszenia w dwóch kierunkach. Zatem odbiór i wyświetlanie tych danych musiałoby się odbywać niejako "na żywo". Czy jest w ogóle możliwe w LV takie szybko aktualizowane wyświetlanie? I czy można to zrobić ostatecznie w formie pliku wykonywalnego .EXE?
Jestem zupełnie zielony w LV i to jest pierwsza rzecz jaką chciałbym zrobić. Próbowałem stworzyć prosty program tylko do odbierania danych ale opornie mi to idzie. Nie mogłem nawet znaleźć kontrolki/bloczka "VISA Resource Name", w którym się ustawia, który COM ma być używany.
Czy mógłby mi ktoś doradzić jak zacząć? Może pokazać jakiś prosty programik tylko do odbierania.
Mam zainstalowane LabView 2011.
Z góry wielkie dzięki za pomoc.
Re: LabView + akcelerometr po RS232
: 02 gru 2011 00:45
autor: milten
Hej
sam coś takiego mam do zrobienia i LV na pewno da radę. Wąskim gardłem może być RS-232.
Co do odczytu, to w Find examples masz terminal (Basic Serial Write and Read).
Co do wyświetlania, to jeżeli masz już czyste dane, to wystarczy je wrzucić na odpowiedni wykres i gotowe.
Re: LabView + akcelerometr po RS232
: 02 gru 2011 07:38
autor: AGF
Witam.
Popieram przedmówcę.
Co do komplilacji *.exe to niema problem bo w LV jest Aplication Builder (jest o tym osobny sektor tematów na tym forum). Umożliwia on także robienie instalatorów programu zawierającego wszystkie potrzebne komponenty oprogramowania. Programy napisane w Labview potrzebują do pracy frameworka LV Run time engine i innych komponentów (podobnie jak programy pisane pod .Net).
Pewnie 10x więcej problemu niż LV sprawi ci STM32 (kiepska dokumentacja).
No to powodzenia!!!
LabView + akcelerometr po RS232
: 02 gru 2011 09:35
autor: Framag
STM32 mam już oprogramowany. Ale racja, że są z nim problemy. Na dodatek mam wersję STM32L i tu już zupełnie są czary i brak jakiejkolwiek sensownej dokumentacji. Jakoś to jednak ogarnąłem mniej więcej.
Odnośnie jeszcze LV. Trzeba instalować do tego NI-SERIAL?
Re: LabView + akcelerometr po RS232
: 02 gru 2011 18:25
autor: milten
Re: LabView + akcelerometr po RS232
: 03 gru 2011 20:41
autor: Framag
Mam jeszcze jeden problem, z akcelerometru odbieram liczbę 16bitową. Dzielę ją w mikroprocesorze na dwie 8bitowe MSB i LSB i tak wysyłam do LV. Jak w LV rozpoznawać, która jest MSB a która LSB przy odbiorze? Pomyślałem, że np przed MSB można wysłać literkę M a przed LSB literkę L. Dobry pomysł? Jak go zrealizować?
Re: LabView + akcelerometr po RS232
: 04 gru 2011 15:12
autor: AGF
Według mnie z tym Li M to jest średni pomysł, no bo co jeśli twoje MSB lub LSB przybierze taką właśnie wartość. Powinieneś raczej określić sobie jakąś chociażby najprostszą ramkę, mogą to być po prostu dwa bajty wysłane po sobie danych, jeżeli będziesz cały czas czytał port to na pewno program LV nie pomyli LSB i MSB. Tak już sobie dopowiedziałem że pewnie twój STM32 po prostu głucho śle na oślep dane? W takim wypadku będzie trudno rozróżnić który bajt jest MSB a który LSB, i trzeba by wymyślić jakiś sprytny mechanizm... ale na pewno prościej jest zrobić jakiś mechanizm resetujący transmisję na STM32 -komendę wysyłaną po RS232 z Labview.
Re: LabView + akcelerometr po RS232
: 05 gru 2011 15:26
autor: Framag
W załączniku dołączyłem VI. Działa tak, że odbiera dane, wyświetla ale po chwili znów pokazuje 0. Co jest źle, że nie zostawia ostatniej odebranej wartości na wykresie?
Re: LabView + akcelerometr po RS232
: 05 gru 2011 16:47
autor: AGF
A mógłbyś zapisać dla LV 2010 (albo i jeszcze wcześniejszego).
Re: LabView + akcelerometr po RS232
: 05 gru 2011 23:37
autor: Framag
Załadowałem z niższej wersji. Chyba 8.0.
Re: LabView + akcelerometr po RS232
: 06 gru 2011 12:45
autor: AGF
Twój odczyt nie występuje w pętli, więc pewnie uruchamiasz programik za pomocą "run continously". Tak więc tak naprawdę to twój program jest co chwile uruchamiany od nowa. Powinieneś tak napisać programik aby odczyt był zawarty np.: w pętli while kończącej się gdy wciśniemy przycisk stop.
Co do odczytu to przeprowadzasz aktualizację za każdym razem: czy są, czy nie ma danych (np.: warunek od liczby odczytanych danych). Zaktualizuj swoją kontrolkę tylko wtedy gdy prawidłowo odczytasz dane.
LabView + akcelerometr po RS232
: 06 gru 2011 20:58
autor: Framag
Hm, chciałbym to zrobić tak, że co 100ms LV wysyła przez RS232 jedynkę. I wtedy procesor odpowiada ramką danych (5bajtów). I gdy zostanie odebrane 5 bajtów kończy się odczyt i zostaje zaktualizowana kontrolka. Jak to powiązać wszystko ze sobą. Jestem zielony w LV i nie wiem jak się za to zabrać.
LabView + akcelerometr po RS232
: 06 gru 2011 21:38
autor: marek323
na poczatek do tego wystarczy zapetlic w while przykladowy vi basic read write po rs232 z przykladow w lv. potem to juz tylko podzielic ramke na parametry x i y, i wrzucic przykladowo na xy graph
Re: LabView + akcelerometr po RS232
: 07 gru 2011 12:42
autor: rivui
Hej
Dodaje zalacznik gdzie dodalem petle wykonujaca sie co 100 ms, bloczek ktory wysyla "jedynke" (mam nadzieje ze o to Ci chodzilo) i zczytuje nowe dane i pierwszy bit podaje na meter. Jednak sposob odczytu tutaj nie pasuje dokladnie do Twoich wymagan. Jezeli podasz dokladnie jaka ramka jest zwracana z akcelerometru to bede mogl w stanie pomoc wiecej (chodzi glownie o tzw. Termination Character na koncu ramki).
LabView + akcelerometr po RS232
: 07 gru 2011 13:26
autor: Framag
Bardzo dziękuję za pomoc!
A odnośnie mojej ramki to jest tak. Ramka składa się z 5 liczb 8bitowych. Pierwsze 2 bajty to przyspieszenie w osi X. Akcelerometr zwraca tą wartość jako liczbę 14bitową i ja ją dzielę i tak wysyłam. Pierwszy bajt to starsza część a drugi to młodsza. Bajty trzeci i czwarty to to samo tylko dla osi Y. A piąty bajt to temperatura, która jest po prostu liczbą ośmiobitową. Tak wygląda cała moja ramka. Jednak zawsze mogę zmienić tą ramkę ;)