GSI Forum
GSI Helmholtzzentrum für Schwerionenforschung

Home » LVUG » LVUG - Technische Fragen » Probleme mit NI CAN treibern
icon8.gif  Probleme mit NI CAN treibern [message #580] Mon, 14 June 2004 15:20 Go to next message
Torsten Will is currently offline  Torsten Will
Messages: 2
Registered: June 2004
occasional visitor
From: 194.8.198*
Hallo,

vielleicht hat jemand die gleichen Probleme und vielleicht auch schon eine Lösung parat.

I. Timestamp von READ und WRITE Funktionen der CAN Treiber sind nicht synchron

Der Timestamp für die READ-Befehle wird direkt von der DLL übergeben, der Timestamp für die WRITE-Befehle wird in LabVIEW erzeugt. Dummerweise kommt es bei der Auswertung der CAN-Traces dann zu der Situation, das die Antworten zeitlich vor den Schreiben des Befehls liegen. Anscheinend benutzen LabVIEW und die CAN-dll verschiedene Systemzeiten.


II. Parallele Prozesse auf einer CAN-Karte

Leider habe ich es noch nicht fertig gebracht, zwei Parallele Prozesse auf einer CAN-Karte zu starten. Es ist anscheinend nur Möglich einen Prozess zu starten und die Referenz einem zweiten Programm mitzuteilen, welches auf dem selben Prozess läuft. Dadurch ist es nicht möglich die aktionen beider Prozesse sauber zu trennen. (Beide Prozesse nutzen die selben Message-Queus des NI-CAN treibers)

Kennt jemand eine Möglichkeit zwei unabhängige Prozesse auf einem CAN-Port laufen zu lassen?

> Warum das ganze => Meist muss man die CAN-Verbindung mit einem Netzwerkmanagement stabil (Ping-Pong von Messges) halten und gleichzeitig über Diagnose (z.B. TP2.0)Verbindungen aufbauen, kommunizieren und abbauen.

Vielen Dank im voraus für die Hilfe

Torsten Will
Re: Probleme mit NI CAN treibern [message #581 is a reply to message #580] Mon, 14 June 2004 22:07 Go to previous messageGo to next message
Brand is currently offline  Brand
Messages: 180
Registered: January 2004
Location: GSI - SB2 2.256
first-grade participant
From: *dip.t-dialin.net
Hallo Torsten,

zu 1. In der vi.lib\nican\nican.llb findest Du das VI: ncSetTimer.vi. Damit kannst Du die Zeit auf der CAN-Karte mit dem Host-PC synchronisieren.

zu 2. Zu diesem Problem folgenden Vorschlag:
Ich würde zu diesem Zweck einen CAN-Interface-Prozess bauen. Das ist ein VI, dass die Verbindung mit dem CAN-Port aufbaut und die Ping-Pong-Funktionalität implementiert. Die asynchronen Telegramme können dann in einer zweiten Schleife via Notifikationen bzw. Queues, die beide ein Wait on Multiple erlauben, von anderen Prozessen (VIs) beschrieben bzw. gelesen werden. Das bedingt zwar eine geringe zeitliche Verzögerung, ist aber hoffentlich tolerable. Als Namen für die Notifikationen bzw. Queues kann man ja die CAN ID der Telegramme verwenden.

Gruß Holger
Re: Probleme mit NI CAN treibern [message #582 is a reply to message #581] Tue, 15 June 2004 08:01 Go to previous message
Torsten Will is currently offline  Torsten Will
Messages: 2
Registered: June 2004
occasional visitor
From: 194.8.198*
Danke für die Infos

zu I. werde ich gleich ausprobieren

zu II. habe ich im Moment ähnlich gelöst, ich lese die Message-Queue von Networkingprozess aus, und übergebe die Telegramme per Data-Socket, das ganze funktiert aber nur sauber, wenn die Anzahl der zu übertragenden Nachrichten gering ist, da der Datencluster sonst zeimlich schnell sehr gross wird.

Nochmals Danke

Torsten
Previous Topic: Graph -> JPEG
Next Topic: LabVIEW - VI Library Manager?
Goto Forum:
  


Current Time: Sun Apr 28 01:42:14 CEST 2024

Total time taken to generate the page: 0.00849 seconds