LabVIEWForum.de - Problem mit CAN Write VI

LabVIEWForum.de

Normale Version: Problem mit CAN Write VI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich lese erfolgreich mit dem CAN Read.vi aus dem virtuellen CAN256 eine Nachricht mit fünf Kanälen aus, die im MAX definert ist! Daraufhin möchte ich die Standardwerte mit CAN257 in den einzelnen Kanälen neu setzen und wiederum mit CAN256 auslesen! Jedoch funktioniert dies nicht und ich hab keine Ahnung wieso!

Habe das VI angehängt! Kann mir jemand sagen wo der Fehler liegt? Ich arbeite mit LV 2009!

mfg
Die virtuellen Kanäle 256 und 257 sind miteinander verbunden. Das heißt, wenn du auf 256 schreibst kannst dus auf 257 lesen und andersherum. Standardwerte kannst du mit deiner Methode überhaupt gar nicht setzen. Dazu müsstest du im MAX die Channels editieren. Aber das willst du gar nicht. Lass die ersten zwei While-Loops parallel laufen und du wirst sehen, das Kommunikation stattfindet. Die letzte Loop kann in die Tonne. Weiterhin würde ich den Datentyp von Extended auf Double umstellen. Extended geht mit der Channel-API eh nicht, da ein Frame nur 64 Bit transportieren kann und Extended das doppelte davon bräuchte. Und kommt mir jetzt keiner mit Type-Cast Smile
Hallo!

Danke für deine Antwort schrotti! Das mit den Standarwerten ist mir klar!

Hab es jetzt anders aufgebaut, siehe angehängtes Bild. Ich möchte einfach auf den CAN257 schreiben und dann wieder auf CAN256 auslesen! Aber es werden nicht die von mir gesetzten Werte ausgelesen sondern die Standardwerte die im MAX eingestellt sind! Ich verstehe nicht wieso???

mfg
Versuch mal beide Tasks gleichzeitg offen zu haben. Während also die schreibende Task schreibt, so die lesende Task bereits bestehen.
Würde funktionieren, aber nur manchmal! Da einmal das lesen, und das andere mal das schreiben schneller ist!

Werden die Werte, die ich auf den CAN257 schreibe nicht gespeichert?
' schrieb:Würde funktionieren, aber nur manchmal! Da einmal das lesen, und das andere mal das schreiben schneller ist!
Na, du musst das schon so in eine auch zeitliche Reihenfolge bringen, wie du es brauchst. InitWr, InitRd - Wr, Warten (wenn auch nur implizit), Rd - Close Rd, Close Wr. Und immer alles sequenziert gemäß Datenfluss.

Zitat:Werden die Werte, die ich auf den CAN257 schreibe nicht gespeichert?
Warum sollten sie? Spätestens nach CloseWr würde ich mal sagen sind die weg!
Ach Gott, Stimmt! Ich habs verstanden!!

Danke!!

mfg
Ich hab leider noch ein weiteres Problem:

In der CAN Nachricht sind mehrere Kanäle. Wie schaff ich es nun, nur an einen Kanal einen Wert zu übergeben? Den anderen Kanälen dürfen dabei keine Werte übergeben werden!

mfg
' schrieb:In der CAN Nachricht sind mehrere Kanäle. Wie schaff ich es nun, nur an einen Kanal einen Wert zu übergeben? Den anderen Kanälen dürfen dabei keine Werte übergeben werden!
Wo bekommen die anderen Kanäle dann ihre Werte her?

Ganz einfach: Einfach in die Task nur die Kanäle aufnehmen, für die auch ein Wert übertragen werden soll. Den Rest macht das System.
Die anderen Kanäle werden nur ausgelesen und beinhalten Messewerte!

Besten Dank, so funktioniert das!!!

mfg
Referenz-URLs