LabView + akcelerometr po RS232

Wszelkie sprawy związane z LabVIEW i komunikacją ze sprzętem. Problemy i ciekawe rozwiązania.
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

LabView + akcelerometr po RS232

Post 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.
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

Re: LabView + akcelerometr po RS232

Post 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.
Obrazek
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: LabView + akcelerometr po RS232

Post 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!!!
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

LabView + akcelerometr po RS232

Post 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?
Ostatnio zmieniony 02 gru 2011 12:45 przez Framag, łącznie zmieniany 2 razy.
milten
Posty: 77
Rejestracja: 25 paź 2011 20:49
Wersja środowiska: LabVIEW 2012

Re: LabView + akcelerometr po RS232

Post autor: milten »

Obrazek
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

Re: LabView + akcelerometr po RS232

Post 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ć?
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: LabView + akcelerometr po RS232

Post 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.
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

Re: LabView + akcelerometr po RS232

Post 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?
Załączniki
rs232test.vi
(19.73 KiB) Pobrany 373 razy
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: LabView + akcelerometr po RS232

Post autor: AGF »

A mógłbyś zapisać dla LV 2010 (albo i jeszcze wcześniejszego).
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

Re: LabView + akcelerometr po RS232

Post autor: Framag »

Załadowałem z niższej wersji. Chyba 8.0.
Załączniki
rs232test.vi
(26.5 KiB) Pobrany 362 razy
AGF
Posty: 109
Rejestracja: 26 lut 2010 13:41
Wersja środowiska: LabVIEW 2010
Lokalizacja: Bydgoszcz

Re: LabView + akcelerometr po RS232

Post 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.
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

LabView + akcelerometr po RS232

Post 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ć.
marek323
OptiNav
Posty: 20
Rejestracja: 19 cze 2011 13:27
Wersja środowiska: LabVIEW 2017

LabView + akcelerometr po RS232

Post 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
Awatar użytkownika
rivui
Posty: 27
Rejestracja: 01 lut 2010 16:50
Wersja środowiska: LabVIEW 8.5
Lokalizacja: Kopenhaga

Re: LabView + akcelerometr po RS232

Post 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).
Załączniki
rs232test2.vi
(35.87 KiB) Pobrany 395 razy
Framag
Posty: 39
Rejestracja: 01 gru 2011 21:39
Wersja środowiska: LabVIEW 2011

LabView + akcelerometr po RS232

Post 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ę ;)
Ostatnio zmieniony 07 gru 2011 14:24 przez Framag, łącznie zmieniany 1 raz.
ODPOWIEDZ