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 

Dieses Thema hat akzeptierte Lösungen:

CANopen Daten erfassen



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!

22.04.2021, 15:53
Beitrag #1

Titus85 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 72
Registriert seit: Jul 2014

2019
2014
DE


Deutschland
CANopen Daten erfassen
Hallo Leute,

ich erfassen CANopen-Daten mittels einer NI-USB 8502 CAN Schnittstelle. Da LabVIEW CANopen ja nur auf RT Systemen unterstützt musste ich etwas improvisieren, das Ergebnis ist angehangen.

Ohne mich jetzt in Details zu verlieren das Problem aus LabVIEW-Sicht:

Ich bekomme einen Array mit Clustern gleicher CAN-ID aus der ich die acht Datenbytes filtere, in den ersten vier Bytes steht quasi die Adresse der Variablen in welche die vier nachfolgenden Bytes geschrieben werden müssen.

Ich habe es so gelöst, dass die ersten vier Bytes verglichen werden und wenn diese zu einer Variablen passen wird ein "true" ausgelöst und ein "case" gibt die Variable darauf hin zum Beschreiben frei. Das funktioniert auch einwandfrei, aber wenn ich jetzt mit der Variablen weiter rechnen will, bleibt mir nichts anders übrig mit lokalen Variablen zu arbeiten, da ich ja aus dem "case" auch wieder rauskommen will.

Kennt jemand eine bessere Lösung ohne lokale Variablen bemühen zu müssen?

Gruß Titus


Angehängte Datei(en)
19.0 .vi  Daten.vi (Größe: 14,04 KB / Downloads: 31)

lex et ordo
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.04.2021, 07:07 (Dieser Beitrag wurde zuletzt bearbeitet: 23.04.2021 17:16 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 16.991
Registriert seit: May 2009

11SP1, 17SP1 (ab und zu 20)
1995
DE_EN

10×××
Deutschland
RE: CANopen Daten erfassen

Akzeptierte Lösung

Hallo Titus,

Zitat:Ich bekomme einen Array mit Clustern gleicher CAN-ID aus der ich die acht Datenbytes filtere, in den ersten vier Bytes steht quasi die Adresse der Variablen in welche die vier nachfolgenden Bytes geschrieben werden müssen.
Das ist im CANopen-Protokoll so implementiert, zumindest für SDOs…

Zitat:Ich habe es so gelöst, dass die ersten vier Bytes verglichen werden und wenn diese zu einer Variablen passen wird ein "true" ausgelöst und ein "case" gibt die Variable darauf hin zum Beschreiben frei. Das funktioniert auch einwandfrei, aber wenn ich jetzt mit der Variablen weiter rechnen will, bleibt mir nichts anders übrig mit lokalen Variablen zu arbeiten, da ich ja aus dem "case" auch wieder rauskommen will.
Kennt jemand eine bessere Lösung ohne lokale Variablen bemühen zu müssen?
Eine solche Lösung gibt es immer!
Wieviele "Variablen" willst du überhaupt verarbeiten? Willst du wirklich für jede "Variable" eine neue lokale Variable anlegen???

Hast du schon mal eine FGV bemüht? Diese könnte deine "Variablen" verwalten…
Du könntest eine LUT verwenden, um deine "Variablen" zu speichern und auf ihre Werte zuzugreifen…
Wenn es dir bei deiner Frage nur um den DATAFLOW geht, könntest du auch mit TagChannels/Notifier/globalen Variablen arbeiten…

Wenn du mit LabVIEW programmierst, solltest du den Begriff "Variable" nur sehr sparsam verwenden. Es geht immer um Daten und wie man Daten weiterleitet (THINK DATAFLOW!)…

Edit: Vorschlag zum Aufbau einer LUT
   
Es wird jeweils die aktuellste SDO-Message (pro LUT-Eintrag) im Array im Schieberegister gespeichert…
(Der Check auf das gültige Cmd ist etwas "komisch", außer du erwartest garantiert immer 4 Datenbytes in der Message. Eigentlich verwendet man das, um die Anzahl der gültigen Datenbytes in der SDO-Message zu bestimmen.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.04.2021, 06:44 (Dieser Beitrag wurde zuletzt bearbeitet: 24.04.2021 06:46 von Titus85.)
Beitrag #3

Titus85 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 72
Registriert seit: Jul 2014

2019
2014
DE


Deutschland
RE: CANopen Daten erfassen
Hallo Gerd,

erst einmal vielen Dank für Deine Tipps und Hinweise, ich habe mich gestern abend nochmal rangemacht und das angehangene VI, auf Basis der FGV, geschrieben. Wie ich die Daten (:-)) dann zusammenfasse und weiter verarbeite werde ich später entscheiden. Aber das eigentliche Problem wurde so schon einmal behoben.

Zum Rest:

Es wird eine definierene Anzahl an SDOs angefragt, so weiß ich was ich was kommen wird, ich musste es nur noch sicher "einfangen", die eigentliche Steuerung erfolgt dann über die PDOs.

Gruß Titus


Angehängte Datei(en)
19.0 .vi  TEST.vi (Größe: 13,99 KB / Downloads: 20)

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Veränderliche Daten ausgeben und erfassen Zhara 4 2.942 21.05.2013 08:40
Letzter Beitrag: Zhara
  Daten erfassen in 1ms Abtastrate regis57 4 3.713 03.12.2012 16:22
Letzter Beitrag: regis57
  Daten erfassen und archivieren mit hohe Frequenz sechhada 2 3.082 15.03.2012 14:16
Letzter Beitrag: sechhada
  Kontinuierliche Daten erfassen und jeden Wert sofot verarbeiten JackBlack 27 21.794 26.01.2011 19:47
Letzter Beitrag: JackBlack
  Daten erfassen und gleichzeitig analoge Ausgabe mit USB 6009 gerry123 0 2.768 12.06.2007 19:27
Letzter Beitrag: gerry123

Gehe zu: