18.08.2014, 10:32
Beitrag #1
|
|
|
18.08.2014, 10:47
Beitrag #2
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: CAN Boschaften
Hallo Michael,
bitte mal dein VI in LV2011 speichern.
Geht es um CAN oder um CANOpen?
|
|
|
18.08.2014, 10:57
Beitrag #3
|
|
|
18.08.2014, 11:38
(Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 11:39 von GerdW.)
Beitrag #4
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: CAN Boschaften
Hallo Michael,
Zitat:1. dauerhafte mehrere Botschaften sendet (siehe Vi obere While-Schlife). Nun habe ich gelesen, wenn mehrere Botschaften gesendet werden sollen, jedes mal der Bus geschlossen werden muss. Ist das so richtig?
Nein, ganz sicher nicht. Wenn du den Port schließt, dann kannst du auch nichts mehr senden.
Zitat:2. In der unteren Ereignis-Struktur, nur durch eine Aufforderung Botschaften auf den Bus gesendet werden sollen z. B. Heizung Stufe ein, zwei, drei...
Wenn die Event-Struktur sich nicht in einer Schleife befindet, kannst du nur genau ein Event auswerten. Also schon einmal ganz schlechtes Programm-Design… (Du nutzt doch nicht etwa den RunContinuous-Button?)
Außerdem:
- Dein Gerät ist sicherlich sehr verwirrt, wenn es jedesmal 4 Botschaften gesendet bekommt, von denen aber 3 nur Nullen enthalten (DefaultIfUnwired-Tunnel!)…
- Auch hier: es würde ausreichen, den CAN-Port einmal zu öffnen ( vor der Event-Struktur) und einmal zu schließen ( nach der Event-Struktur)!
- Warum sieht jede Botschaft identisch (mit je 6× FFh) aus und warum soll die Botschaft dann eine DataLength von 5 haben?
- Was soll die Wartezeit im Event-Case bewirken?
|
|
|
18.08.2014, 11:58
(Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 12:01 von Michael26.)
Beitrag #5
|
Michael26
LVF-Grünschnabel
Beiträge: 23
Registriert seit: Dec 2013
2013
2011
DE
|
RE: CAN Boschaften
(18.08.2014 11:38 )GerdW schrieb: Hallo Michael,
Zitat:1. dauerhafte mehrere Botschaften sendet (siehe Vi obere While-Schlife). Nun habe ich gelesen, wenn mehrere Botschaften gesendet werden sollen, jedes mal der Bus geschlossen werden muss. Ist das so richtig?
Nein, ganz sicher nicht. Wenn du den Port schließt, dann kannst du auch nichts mehr senden.
Zitat:2. In der unteren Ereignis-Struktur, nur durch eine Aufforderung Botschaften auf den Bus gesendet werden sollen z. B. Heizung Stufe ein, zwei, drei...
Wenn die Event-Struktur sich nicht in einer Schleife befindet, kannst du nur genau ein Event auswerten. Also schon einmal ganz schlechtes Programm-Design… (Du nutzt doch nicht etwa den RunContinuous-Button?)
Außerdem:
- Dein Gerät ist sicherlich sehr verwirrt, wenn es jedesmal 4 Botschaften gesendet bekommt, von denen aber 3 nur Nullen enthalten (DefaultIfUnwired-Tunnel!)…
- Auch hier: es würde ausreichen, den CAN-Port einmal zu öffnen (vor der Event-Struktur) und einmal zu schließen (nach der Event-Struktur)!
- Warum sieht jede Botschaft identisch (mit je 6× FFh) aus und warum soll die Botschaft dann eine DataLength von 5 haben?
- Was soll die Wartezeit im Event-Case bewirken?
Zu den Botschaften. Diese sind nur Beispiele. Deshalb habe ich nur Nullen eingetragen
Die Wartezeit habe ich eingefügt, da ich die Nachrichten zyklisch übertragen muss/soll.
Die Event-Struktur werde ich noch in eine While-Schleife einfügen, mein Fehler.
Ist der Verbindungsaufbau denn so in Ordnung, wie ich es aufgebaut habe oder gibt es Verbesserungen
Kann ich auch, so wie ich es schon gemacht habe, aus mehreren Nachrichten ein Array erstellen und dann senden?
|
|
|
18.08.2014, 12:09
(Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 12:12 von GerdW.)
Beitrag #6
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: CAN Boschaften
Hallo Michael,
Zitat:Die Wartezeit habe ich eingefügt, da ich die Nachrichten zyklisch übertragen muss/soll.
Das kann der CAN-Treiber für dich erledigen. Üblicherweise nutzt man eher Zykluszeiten im 10er/100er ms-Bereich.
Zitat:Ist der Verbindungsaufbau denn so in Ordnung, wie ich es aufgebaut habe oder gibt es Verbesserungen
Wie schon gesagt: Port öffnen/schließen je nur einmal vor/nach einer Hauptschleife!
Zitat:Kann ich auch, so wie ich es schon gemacht habe, aus mehreren Nachrichten ein Array erstellen und dann senden?
Dies entspricht meiner Arbeitsweise: Ich arbeite lieber mit CAN-Datenbanken (DBC) und CAN-Tasks (Task = mehrere Signale/Botschaften).
Hier wird eine CAN-DBC gelesen, die passenden Botschaften gefiltert und daraus zwei CAN-Tasks erstellt. Für die Werte-Ausgabe ist da schon ein SYNC-Signal enthalten, welches den zyklischen Versand steuert. Auch wenn du die Werte nur alle 10s veränderst, kannst du ja trotzdem öfter Botschaften verschicken - es wird immer der letzte/aktuelle Stellwert verschickt ("Output recent").
|
|
|
18.08.2014, 13:12
(Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 13:24 von Michael26.)
Beitrag #7
|
Michael26
LVF-Grünschnabel
Beiträge: 23
Registriert seit: Dec 2013
2013
2011
DE
|
RE: CAN Boschaften
(18.08.2014 12:09 )GerdW schrieb: Hallo Michael,
Zitat:Die Wartezeit habe ich eingefügt, da ich die Nachrichten zyklisch übertragen muss/soll.
Das kann der CAN-Treiber für dich erledigen. Üblicherweise nutzt man eher Zykluszeiten im 10er/100er ms-Bereich.
Zitat:Ist der Verbindungsaufbau denn so in Ordnung, wie ich es aufgebaut habe oder gibt es Verbesserungen
Wie schon gesagt: Port öffnen/schließen je nur einmal vor/nach einer Hauptschleife!
Zitat:Kann ich auch, so wie ich es schon gemacht habe, aus mehreren Nachrichten ein Array erstellen und dann senden?
Dies entspricht meiner Arbeitsweise: Ich arbeite lieber mit CAN-Datenbanken (DBC) und CAN-Tasks (Task = mehrere Signale/Botschaften).
Hier wird eine CAN-DBC gelesen, die passenden Botschaften gefiltert und daraus zwei CAN-Tasks erstellt. Für die Werte-Ausgabe ist da schon ein SYNC-Signal enthalten, welches den zyklischen Versand steuert. Auch wenn du die Werte nur alle 10s veränderst, kannst du ja trotzdem öfter Botschaften verschicken - es wird immer der letzte/aktuelle Stellwert verschickt ("Output recent").
Hallo Gerd,
Vielen Dank erstmal für die Infos/Hilfe.
Leider steht mir keine CAN-DBC zur Verfügung, deswegen habe ich die Botschaften eigenständig generiert.
Aber nochmal zurück, kann ich auf den CAN-Bus gleich 3 oder mehrere Botschaften gleichzeitig senden oder muss ich erst 1 Nachricht senden, den Bus schließen und dann wieder öffnen
oder ist das so in Ordnung mit Array erstellen und schreiben. In der Hilfe steht zu "ncWriteNet.vi", write a single frame. Ich kann aber schon mehrere Botschaften senden oder auf was bezieht sich das "single Frame"
Könntest du mir vielleicht erklären, was ich unter der CAN_Library bei
ncWriteNet.vi
Terminal "ObjHandle in"
verstehen kann.
|
|
|
18.08.2014, 13:18
Beitrag #8
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: CAN Boschaften
Hallo Michael,
wie oft denn noch: einmal Port öffnen, Botschaften senden/empfangen, einmal Port schließen. Öffnen/schließen nur genau einmal bei Programmstart/-ende…
Zitat:kann ich auf den CAN-Bus gleich 3 oder mehrere Botschaften gleichzeitig senden
Der CAN-Bus ist ein seriell arbeitender Bus mit mehreren Teilnehmern, "gleichzeitig" geht da gar nicht. Aber die Hardware regelt das schon von allein für dich, du musst nur die Botschaften generieren und auf die Reise schicken…
|
|
|
18.08.2014, 13:25
Beitrag #9
|
Michael26
LVF-Grünschnabel
Beiträge: 23
Registriert seit: Dec 2013
2013
2011
DE
|
RE: CAN Boschaften
(18.08.2014 13:18 )GerdW schrieb: Hallo Michael,
wie oft denn noch: einmal Port öffnen, Botschaften senden/empfangen, einmal Port schließen. Öffnen/schließen nur genau einmal bei Programmstart/-ende…
Zitat:kann ich auf den CAN-Bus gleich 3 oder mehrere Botschaften gleichzeitig senden
Der CAN-Bus ist ein seriell arbeitender Bus mit mehreren Teilnehmern, "gleichzeitig" geht da gar nicht. Aber die Hardware regelt das schon von allein für dich, du musst nur die Botschaften generieren und auf die Reise schicken…
Ja danke.
Jetzt weiß ich was du gemeint hast
|
|
|
18.08.2014, 13:34
(Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 13:37 von GerdW.)
|
GerdW
______________
Beiträge: 17.480
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: CAN Botschaften
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?
|
|
|
| |