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 Frame API Read Write parallel



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!

03.09.2010, 11:58
Beitrag #1

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
CAN Frame API Read Write parallel
Hallo zusammen,

ich habe mal wieder eine Frage an Euch:

Ich möchte in einem VI über eine CAN-Schnittstelle parallel lesen und schreiben.
D.h. ich brauche zwei parallele while-schleifen in eine kommt das "Read", in die andere das "Write". soweit alles logisch. Ich frage mich jetzt aber, wie ich das mit dem ObjHandle machen muss. Den muss ich ja nach dem "Open" in das "Write" und in das "Read" verdrahten und am Ende dann in das "Close".

Macht man das dann einfach so, wie ich es hier mal in Pseudocode gemacht habe, oder gibt es da eine andere, schönere Möglichkeit?

Vielen Dank!

Gruß
Dommas


Lv09_img2


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  ReadWrite_parallel.vi (Größe: 16,81 KB / Downloads: 227)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.09.2010, 12:45
Beitrag #2

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
CAN Frame API Read Write parallel
Hi,
guck dir mal im ExampleFinder unter CAN das Beispiel "Transmit Receive same Port.vi" an!

Gruß
Achim

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.09.2010, 13:02
Beitrag #3

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
CAN Frame API Read Write parallel
das kenne ich schon.

Aber ich muss das Ganze zyklisch machen und mit verschiedenen Zeiten fürs Lesen und Schreiben. Deswegen behaupte ich mal, dass ich 2 verschiedene while-Schleifen brauche, oder?

Und dann sind wir wieder bei der Ausgangsfrage
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.09.2010, 13:26
Beitrag #4

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
CAN Frame API Read Write parallel
Hi,
warum willst du zyklisch in ner Whileschleife schreiben? Wenn du tatsächlich zyklisch Botschaften senden musst (das kommt ja sehr häufig vor), dann machst du das per HW! Es gibt dazu ein Beispiel-VI, "Transmit periodic.vi" (oder so ähnlich...). Da wird die HW auf periodisches=zyklisches Senden konfiguriert und man gibt nur 1x vor, was mit der Periode t gesendet werden soll! Und immer nur, wenn sich der Botschaftsinhalt ändert, gibt man den neu vor! Würdest du das zyklische Senden "zu Fuß", d.h. per While-Schleife machen, könntest du nur in den seltensten Fällen die von der empfangenden HW geforderten Timing-Vorgaben einhalten! Dazu funkt das OS zu oft dazwischen!

Gruß
Achim

PS: Man kann das "Transmit Receive Same Port " natürlich auch mit dem "Transmit periodic" zusammenführen...das hab ich auch schon gemacht!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2010, 07:58 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2010 08:08 von Dommas.)
Beitrag #5

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
CAN Frame API Read Write parallel
' schrieb:Hi,
warum willst du zyklisch in ner Whileschleife schreiben? Wenn du tatsächlich zyklisch Botschaften senden musst (das kommt ja sehr häufig vor), dann machst du das per HW! Es gibt dazu ein Beispiel-VI, "Transmit periodic.vi" (oder so ähnlich...).

Ja, ich weiß. Aber ich kann hier nicht mit CANObjects hantieren glaube ich. Deswegen habe ich es auf dem Weg mit der/den while-Schleifen begeben.
1. Ich habe 1-8 Geräte, die ich ansprechen muss. ABER:
2. Die ID is nicht einfach eine Geräte-ID, sondern setzt sich aus verschiedenen Teilen zusammen, unter anderem der Geräte und der Nachrichten-ID (die sagt aus, wie die DATEN zu interpretieren sind.)
3. Im Frontpanel ist ein Tab mit 8 Reitern, je nachdem in welchem Reiter man ist, werden verschiedene Messages an verschiedene Geräte geschickt, also z.B. Message1 an Gerät 1-8, Message2 an Gerät 1-8, und Message3 als Broadcast. Wenn all diese Messages (=Commands) draußen sind, können die einzelnen Geräte antworten (siehe Prioritäten mit Nullen und Einsen, das ist über die verschiedenen IDs sichergestellt). Die Antworten bestehen jetzt aber auch wieder aus verschiedenen Nachrichten, d.h. auf Message1 kommen z.B. 3 Messages als Antworten und auf Message2 vielleicht nur eine.
4. Ich kann maximal mit 48 Objekten arbeiten soviel ich weiß. Wenn ich das alles richtig verstehe sind das 48 verschiedene IDs. Da ich aber wie schon erwähnt eine Art "Message-ID" habe, die mit in die "normale" CAN-ID eingebaut wird, reichen mir 48 Objekte nicht.

EDIT: Ich habe bis zu 148 verschiedene CAN-IDs, wenn ich 8 angeschlossene Geräte habe, und mich in 5 von den besagten 8 Reitern befinde.

Wenn ich hier (v.a. im letzten Punkt) einen gewaltigen Fehler drin habe, lasse ich mich gern verbessern! Ich weiß, dass ich besser die Periode von der CAN-Karten-Hardware zurückgreifen sollte, aber ich habe bisher leider keinen Weg gefunden, das zu realisieren...


' schrieb:PS: Man kann das "Transmit Receive Same Port " natürlich auch mit dem "Transmit periodic" zusammenführen...das hab ich auch schon gemacht!

Ich weiß, das habe ich auch schon gemacht
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2010, 13:37 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2010 13:40 von Achim.)
Beitrag #6

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
CAN Frame API Read Write parallel
Sag mal...hatten wir das neulich nicht schon mal?

EDIT:
http://www.labviewforum.de/index.php?s=&am...st&p=102645


Ich hab mich damals mal mit nem Kollegen drüber unterhalten...wo steht geschrieben, dass man nur 48 Objekte haben darf? Uns ist so eine Beschränkung nicht bekannt!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.09.2010, 13:53
Beitrag #7

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
CAN Frame API Read Write parallel
Ja, genau. Aber dass das nicht richtig ist hat damals niemand gesagt.

geschrieben steht das in Schulungsunterlagen von NI, siehe Anhang und hier im Beitrag #5:

http://www.labviewforum.de/Gibt-es-ein-CAN...oae-t16924.html


Angehängte Datei(en)
Sonstige .pdf  20100906144918_Lesson_3__Kompatibilit_tsmodus_.pdf (Größe: 68,96 KB / Downloads: 262)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.09.2010, 07:27 (Dieser Beitrag wurde zuletzt bearbeitet: 07.09.2010 07:31 von Dommas.)
Beitrag #8

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
CAN Frame API Read Write parallel
So, ich habe mich jetzt mal beim NI Support gemeldet. Hier die Antwort:


Sehr geehrter Herr ,

ich habe es doch noch gefunden, 49 CAN-Objekte stimmt, wie hier
beschrieben:
http://digital.ni.com/public.nsf/allkb/207...6256C550059B45A


National Instruments
Applications Engineering
http://www.ni.com/support



Ich bin jetzt wieder soweit bin, wie 3 Posts vorher:
Wenn ich das mit den Objekten richtig verstanden habe, dann brauche ich pro ID ein Objekt, oder? Das heißt also maximal 48 oder 49 verschiedene (in jedem Fall weniger als 147) IDs, die ich als Objekte deklarieren kann, oder?´

Gruß
Dommas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.09.2010, 08:07
Beitrag #9

Achim Offline
*****
*****


Beiträge: 4.223
Registriert seit: Nov 2005

20xx
2000
EN

978xx
Deutschland
CAN Frame API Read Write parallel
Hi,
ja ich hab mich jetzt auch mal schlau gemacht! Du hast mit den CAN-Karten tatsächlich die Beschränkung auf 48 CAN-Objekte die die NI-Karte verwalten kann. Da musst du die Periode für deine zahlreichen Nachrichten tatsächlich per SW-Timing realisieren. Da der CAN aber nachrichtenorientiert, und damit ja nicht deterministisch ist, sollte eine gewisse zeitliche Abweichung deiner Periodendauer keine Auswirkung auf die Empfänger haben! Bezüglich deiner Frage: Ja, ich glaube schon dass du das dann so mit zwei While-Schleifen machen solltest. Dann hast du auch eine übersichtliche Trennung. Du könntest auch in der Schleife die schnellere/häufigere Aktion "direkt" durchführen und die weniger häufigere dann in der gleichen Schleife in jedem X-ten Durchlauf...

Gruß
Achim

PS: Again what learned!

"Is there some mightier sage, of whom we have yet to learn?"

"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.09.2010, 08:18
Beitrag #10

Dommas Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 93
Registriert seit: Jul 2010

2010
2008
DE_EN

86741
Deutschland
CAN Frame API Read Write parallel
OK, alles klar. Danke schön.

Also von LV bin ich nach wie vor begeistert, aber von den NI-CAN Karten irgendwie enttäuscht muss ich sagen. Habe mir da gerade eine mal etwas genauer angesehen, also mit der Hardware die sie da spendiert haben wäre eindeutig mehr drin gewesen...
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
  "Timeout" bei NI-XNET FRAME INPUT STREAM andrepf 4 6.284 06.04.2016 10:12
Letzter Beitrag: andrepf
  Frage zur ID bei CAN Frame API Slev1n 1 4.478 16.02.2015 16:59
Letzter Beitrag: GerdW

Gehe zu: