Wstęp
Komunikacja środowisk CANoe i LabVIEW to popularne wyzwanie, przed którym stają testerzy automatyzujący w branży automotive.
Jest co najmniej kilka sposów na integrację tych środowisk: Zmienne sieciowe, API .NET-owe, lub poprzez dll.
Zaczynamy
Dziś zajmiemy się najprostszym sposobem, czyli przez Zmienne Sieciowe.
Przygotowanie po stronie LabVIEW
Utworzenie zmiennych sieciowych
Zaczniemy od stworzenia projektu w LabVIEW, a następnie dodanie w nim zmiennych sieciowych
ustawiamy odpowiedni typ zmiennych:
Ja stworzyłem cztery zmienne:
StartTest oraz oraz TestFinished typu całkowitego (int)
LabviewParameter oraz TestResult typu float
Następnie deploy:
Stworzenie VI-ów
Następnie stworzę VI-je do zmiany wartości tych zmiennych. Nazwę je StartTest oraz WaitForTestResult:
StartTest.vi:
Służy do rozpoczynania testu.
Ustawiam zmienną StartTest kolejno na 0 a potem na 1 (aby widoczna była zmiana wartości na 1)
Zeruję również flagę TestFinished, którą będę obserwował w innym miejscu, czekając na zakończenie testu.
WaitForTestResult.vi
Służy do czekania aż test w CANoe się zakończy, a następnie odczytania wyniku.
W pętli while sprawdzam cyklicznie co 100ms stan zmiennej TestFinished. Jeżeli zmienna będzie miała wartość 1, odczytana zostanie wartość TestResult a VI zakończy swoje działanie.
Przygotowania po stronie CANoe
Odblokowanie integracji
W CANoe musimy najpierw w głównych ustawieniach programu zaznaczyć opcję integracji ze środowiskiem LabVIEW:
Po zaznaczeniu tej opcji pojawi się dodatkowy przycisk na wstążce Environment:
Zassanie zmiennych z LabVIEW
Po kliknięciu na wskazany przycisk widać poniższe okno:
Odnajdujemy z-deployowane wcześniej zmienne sieciowe i zaznaczamy checkboxy “Use in CANoe“.
Przechodząc teraz do Environment->System variables:
Widaż, że CANoe utworzyło zmienne systemowe powiązane ze zmiennymi załadowanymi z CANoe:
Wspaniale!
Teraz czas, dopisać jakąś prostą funkcjonalność..
Obsługa zmiennych z poziomu kodu CAPL
Napiszę prosty kod, który będzie działał następująco:
- Czekam na zdarzenie zmiany wartości zmiennej StartTest
- Pobieram wartość zmiennej LabviewParameter i przechowuję ją lokalnie w zmiennej parametr
- Jeżeli zmiana nastąpiła na wartość 1:
- Wyświetlam komunikat o rozpoczęciu testu
- Wpisuję wymyśloną wartość do zmiennej TestResult (to będzie przekazane z CANoe do LabVIEW)
- Wpisuję wartośc 1 do zmiennej TestFinished – będzie to znak, że test został zakończony
- Na koniec wypisuję komunikat o zakończeniu testu
Podsumowanie
Integracja LabVIEW z CANoe jest prostsze niż mogłoby się wydawać.
Nagranie Video
Poniżej przykład video, jak robię powyższy przykład:
Dodaj komentarz