INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

CAN-Kommunikation in paralleler While-Schleife



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

12.12.2024, 07:50
Beitrag #1

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 103
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
CAN-Kommunikation in paralleler While-Schleife
Guten Morgen zusammen,

ich kommuniziere über einen Peak CAN USB mit verschiedenen Geräten über einen proprietären CAN-Bus. Die eigentlich Schnittstelle in Labview funktioniert schon, d.h. ich kann Nachrichten empfangen und senden. Allerdings ist mein Labview-Programm in Bezug auf die genannte Kommunikation "ablaufgesteuert" aufgebaut. An den entsprechenden Stellen im Programm sende ich Nachrichten und warte dann auf Antworten, um diese zu verarbeiten.

Die genannte Struktur möchte ich nun so anpassen, dass die eigentliche Kommunikation in einer parallelen While-Schleife abläuft. Hier kann ich Nachrichten bereits bezüglich eines bestimmten Befehlsbereichs oder in Bezug auf einzelne Teilnehmer vorfiltern, um nur Nachrichten in meinen Eingangsbuffer zu schreiben, die von Interesse für mich sind. Auf diesen Buffer greife ich dann von meinem Hauptprogramm aus zu, reagiere auf Nachrichten und muss hier vermutlich auch Nachrichten löschen, die nicht relevant sind, um ein Überlaufen des Buffers zu verhindern.

Meine Hauptfrage bezieht sich nun darauf, wie ich den beschriebenen Buffer gestalte (vermutlich als Array von einem Cluster?) und wie die beiden Schleifen (Kommunikation und Hauptprogramm) miteinander kommunizieren bzw. gleichzeitig auf dem Buffer schreiben und lesen können?

Natürlich gibt es zusätzlich einen Ausgangsbuffer, den ich aber dann entsprechend aufbauen kann.

Vielleicht habt ihr ja den ein oder anderen Tipp für mich, wie ich das sinnvoll aufbauen kann.

Im Voraus besten Dank dafür!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
12.12.2024, 08:57
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: CAN-Kommunikation in paralleler While-Schleife
Hallo creo,

würde eine Queue für dich ausreichen? Dein CAN-Receiver schreibt in die Queue, deine "Hauptroutine" kann die Nachrichten in dieser Queue nacheinander abarbeiten…

Oder brauchst du einen Buffer, wo du ständig Zugriff auf alle gespeicherten Nachrichten hast? Dann würde ich wohl eine FGV (oder besser gleich eine Klasse) erstellen, die sich um dieses Array of Messages kümmert…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.12.2024, 09:06
Beitrag #3

creo_123 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 103
Registriert seit: Jan 2013

17.0
2013
DE


Deutschland
RE: CAN-Kommunikation in paralleler While-Schleife
Hallo GerdW,

vielen Dank für die schnelle Antwort!

Vermutlich hast Du Recht und eine Queue reicht vollkommen aus für meine Anwendung. Letztendlich erwarte ich ja eine bestimmte Nachricht, bevor ich im Hauptprogramm "weitermachen" kann. Deshalb kann ich die Nachrichten in der Queue nacheinander abarbeiten und verwerfen, bis ich zur Nachricht komme, auf die ich warte.

Entsprechend wäre das ja dann auch eine Queue für den Ausgang der Nachrichten. Verwende ich lokale Variablen, um den Filter in der CAN-Schleife vom Hauptprogramm aus beeinflussen zu können, oder gibt es da auch eine schönere Lösung?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
12.12.2024, 11:41 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2024 11:41 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: CAN-Kommunikation in paralleler While-Schleife
Hallo creo,

Zitat:Verwende ich lokale Variablen, um den Filter in der CAN-Schleife vom Hauptprogramm aus beeinflussen zu können, oder gibt es da auch eine schönere Lösung?
"Lokale Variablen" zählen für dich also als "schöne" Lösung? Big Grin

Der Standard-QMH von NI verwendet eine Queue, die einen Cluster aus Enum (oder String) und einem Variant benutzt. Mit dem Enum kannst du mitteilen, was der Handler mit der Message machen soll (CAN-Message versenden oder Filter justieren). Im Variant stehen dann die Daten, die der Handler entsprechend dem Enum von Variant zurück zu wasauchimmer konvertieren kann…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Versorgung paralleler Schleifen durch Melder Umpalumpa 6 6.497 21.04.2016 16:17
Letzter Beitrag: Lucki
  Paralleler Betrieb zweier Netzwerkgeräte via UTP Mr_Futile 1 3.432 26.09.2013 15:50
Letzter Beitrag: GerdW

Gehe zu: