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 Boschaften



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!

18.08.2014, 10:32
Beitrag #1

Michael26 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2013

2013
2011
DE



CAN Boschaften
Hallo Zusammen,

meine Aufgabe ist es mit der Hardware NI_USB_8473

ein Vi zu erstellen, dass

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?

2. In der unteren Ereignis-Struktur, nur durch eine Aufforderung Botschaften auf den Bus gesendet werden sollen
z. B. Heizung Stufe ein, zwei, drei...

Gerne bin ich für jede Art von Hilfe offen, habe noch sehr wenig Erfahrung mit der CAN-Library.

Vielen Dank.


Angehängte Datei(en)
12.0 .vi  CAN_send.vi (Größe: 20,88 KB / Downloads: 218)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 10:47
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 10:57
Beitrag #3

Michael26 Offline
LVF-Grünschnabel
*


Beiträge: 23
Registriert seit: Dec 2013

2013
2011
DE



RE: CAN Boschaften
Anbei die Version für 2011

Es geht in erster Regel um CAN.

Danke


Angehängte Datei(en)
11.0 .vi  CAN_send.vi (Größe: 20,09 KB / Downloads: 188)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 11:38 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 11:39 von GerdW.)
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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?

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 11:58 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 12:01 von Michael26.)
Beitrag #5

Michael26 Offline
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?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 12:09 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 12:12 von GerdW.)
Beitrag #6

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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").

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
18.08.2014, 13:12 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 13:24 von Michael26.)
Beitrag #7

Michael26 Offline
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 13:18
Beitrag #8

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 13:25
Beitrag #9

Michael26 Offline
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.08.2014, 13:34 (Dieser Beitrag wurde zuletzt bearbeitet: 18.08.2014 13:37 von GerdW.)
Beitrag #10

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
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?

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


Gehe zu: