LabView + akcelerometr po RS232
LabView + akcelerometr po RS232
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.
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
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.
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.
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: LabView + akcelerometr po RS232
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!!!
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
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?
Odnośnie jeszcze LV. Trzeba instalować do tego NI-SERIAL?
Ostatnio zmieniony 02 gru 2011 12:45 przez Framag, łącznie zmieniany 2 razy.
Re: LabView + akcelerometr po RS232
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ć?
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: LabView + akcelerometr po RS232
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
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?
- Załączniki
-
- rs232test.vi
- (19.73 KiB) Pobrany 410 razy
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: LabView + akcelerometr po RS232
A mógłbyś zapisać dla LV 2010 (albo i jeszcze wcześniejszego).
Re: LabView + akcelerometr po RS232
Załadowałem z niższej wersji. Chyba 8.0.
- Załączniki
-
- rs232test.vi
- (26.5 KiB) Pobrany 416 razy
-
- Posty: 109
- Rejestracja: 26 lut 2010 13:41
- Wersja środowiska: LabVIEW 2010
- Lokalizacja: Bydgoszcz
Re: LabView + akcelerometr po RS232
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.
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
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
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
- rivui
- Posty: 27
- Rejestracja: 01 lut 2010 16:50
- Wersja środowiska: LabVIEW 8.5
- Lokalizacja: Kopenhaga
Re: LabView + akcelerometr po RS232
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).
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).
- Załączniki
-
- rs232test2.vi
- (35.87 KiB) Pobrany 408 razy
LabView + akcelerometr po RS232
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ę ;)
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ę ;)
Ostatnio zmieniony 07 gru 2011 14:24 przez Framag, łącznie zmieniany 1 raz.