(18.08.2014 13:34 )GerdW schrieb: [ -> ]Hallo Michael,
Zitat:Könntest du mir vielleicht erklären, was ich unter der CAN_Library bei ncWriteNet.vi Terminal "ObjHandle in" verstehen kann.
Zitat aus der Hilfe zur Funktion:
Zitat:ObjHandle in is the object handle from the previous NI-CAN VI. The handle originates from the ncOpen VI.
Noch Fragen?
Passt.
Vielen Dank.
Hallo Gerd,
ich hoffe, du kannst mir nochmal kurz weiterhelfen.
Soeben habe ich das Vi ausgeführt, doch gleich am Anfang kommt eine Fehlermeldung (siehe Anhang)
an was könnte das liegen. Der Fehler kommt gleich bei ncConfigCANNet.vi
kannst dir mein VI nochmal ansehen
Danke
Vielleicht habe ich bei der Konfiguration was nicht richtig eingegeben
Hallo Michael,
du greifst an zwei Stellen auf den selben CAN-Port zu. Das Ergebnis nennt sich RaceCondition und ist ein häufiger Fehler bei paralleler Code-Ausführung…
Deine obere Schleife konfiguriert CAN0 mitsamt Baudrate. Deine Eventstruktur versucht das auch, aber wahrscheinlich später als die obere Schleife. Dummerweise ist CAN0 dann schon in Benutzung - und du kannst eben nicht während der Benutzung die Baudrate ändern (oder auch nur mit dem gleichen Wert neu beschreiben)…
Ich wiederhole mich nur ungern:
Zitat:wie oft denn noch: einmal Port öffnen, Botschaften senden/empfangen, einmal Port schließen. Öffnen/schließen nur genau einmal bei Programmstart/-ende…
(18.08.2014 14:26 )GerdW schrieb: [ -> ]Hallo Michael,
du greifst an zwei Stellen auf den selben CAN-Port zu. Das Ergebnis nennt sich RaceCondition und ist ein häufiger Fehler bei paralleler Code-Ausführung…
Deine obere Schleife konfiguriert CAN0 mitsamt Baudrate. Deine Eventstruktur versucht das auch, aber wahrscheinlich später als die obere Schleife. Dummerweise ist CAN0 dann schon in Benutzung - und du kannst eben nicht während der Benutzung die Baudrate ändern (oder auch nur mit dem gleichen Wert neu beschreiben)…
Ich wiederhole mich nur ungern:
Zitat:wie oft denn noch: einmal Port öffnen, Botschaften senden/empfangen, einmal Port schließen. Öffnen/schließen nur genau einmal bei Programmstart/-ende…
Das habe ich schon behoben, jetzt öffne und schließe ich nur an einer Stelle. Nur wie realisiere ich, dass ich zwei verschiedene Arbitrierungs-IDs habe.
z. B. haben die oberen Botschaften die ID 3Ah
und die unteren Botschaften die ID 1Bh
Hallo Michael,
Zitat:Nur wie realisiere ich, dass ich zwei verschiedene Arbitrierungs-IDs habe.
Das hattest du in deinem Beispiel-VI weiter oben doch schon gelöst? Dort hast du die ArbIDs 2E3h und 4D1h verwendet…
Tipp:
Bei numerischen Konstanten
kann man einen Radix anzeigen lassen. Wenn man nicht mit Dezimalzahlen arbeitet, plädiere ich für "
muss man einen Radix anzeigen lassen"!
(18.08.2014 15:00 )GerdW schrieb: [ -> ]Hallo Michael,
Zitat:Nur wie realisiere ich, dass ich zwei verschiedene Arbitrierungs-IDs habe.
Das hattest du in deinem Beispiel-VI weiter oben doch schon gelöst? Dort hast du die ArbIDs 2E3h und 4D1h verwendet…
Tipp:
Bei numerischen Konstanten kann man einen Radix anzeigen lassen. Wenn man nicht mit Dezimalzahlen arbeitet, plädiere ich für "muss man einen Radix anzeigen lassen"!
Ja stimmt.
Vielen Dank.
Aber wenn ich nur an einer Stelle den CAN öffne/schließe bzw. lese/schreibe bekomme ich trotzdem die oben genannte Fehlermeldung.
Deinen Hinweiß habe ich beachtet!
Der Fehler entsteht schon bei der CAN-Configuration. Also muss er bei den Parametern schon ein Problem haben. Nur wo ist die Frage
Aus der Fehlermeldung geht hervor, dass du versuchst die Konfiguration zu ändern nachdem bereits eine Verbindung aufgebaut wurde. Du muss ncConfigCANNet.vi zwangsweise vor ncOpen.vi ausführen.
Hallo Michael,
in deinem VI gibt es zwei Stellen, wo der CAN-Port initialisiert wird - das hatte ich oben schon beschrieben!
Falls das nicht mehr so ist, solltest du mal wieder eine aktuelle Version deines VIs anhängen…