Crio mit CAN modul - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Module (/Forum-LabVIEW-Module) +---- Forum: LabVIEW FPGA (/Forum-LabVIEW-FPGA) +---- Thema: Crio mit CAN modul (/Thread-Crio-mit-CAN-modul) Seiten: 1 2 |
Crio mit CAN modul - morten - 09.02.2011 16:18 Hallo zusammen, ich benutze Labview 2009, ein Compact Rio 9025, FPGA Chassis 9113 und das CAN Modul 9853 an dem ein Drehgeber angeschlossen ist. Wie man in dem Bild erkennen kann, habe ich das CAN-Modul bereits erkannt. Wie kann ich nun mit dem CAN-Modul arbeiten und die Werte für den Drehwertgeber einlesen? Kennt jemand eine Anleitung, in der das Einbinden von CAN_Modulen beschrieben wird? Ich bin ein absoluter Anfänger und habe keine Erfahrungen mit Labview und dem Compact RIO gemacht. Vielen Dank im vorraus für eure Hilfe! [attachment=32210] RE: Crio mit CAN modul - cb - 09.02.2011 16:33 dazu gibt's Beispiele im Example-Finder, die sind ein ganz guter Einstieg ... RE: Crio mit CAN modul - NachoMan - 15.02.2011 17:05 Hallo zusammen, ich wollte nicht extra nen neuen Thread aufmachen, also stell ich einfach mal hier meine Frage. Passt vom Thema her ganz gut hier rein. Also von der Konfig habe ich ziemlich das gleiche System wie es auch morten beschreibt. (cRio mit NI 9853) Wir wollen an einem Toyota Prius mittels eine cRio Systems einen Datenlogger basteln. Haben einige Sensoren im Auto verbaut, die ich per LabVIEW aufzeichne usw. Desweiteren wollen wir gerne ein bisschen auf dem CAN mithören. Das heißt ich möchte gerne ein Programm basteln, bei dem ich einzelne Identifier auslesen kann (eine Liste mit den Zuordnung zu den einzelnen Werten auf dem CAN haben wir). Hat jemand sowas schon mal realisiert? Ist ne ziemlich große Aufgabe, hab ich das Gefühl. Also ich bräuchte ein Programm (FPGA u. RT) bei dem ich erst die CAN Botschaften auslese, dann nach Identifiern filtern kann um dann die jeweiligen Daten auszulesen und in physikalische Größen umzuwandeln. Wäre super wenn mir da jemand weiter helfen könnte, stehe da seit einigen Tagen wie der Ochs vorm Berg und komm nicht weiter, hab schon versucht diverse Beispiele aus dem Forum oder aus LabVIEW auf mein Problem anzuwenden, leider bisher ohne Erfolg. Gruß NachoMan RE: Crio mit CAN modul - cb - 15.02.2011 18:06 (15.02.2011 17:05 )NachoMan schrieb: Hat jemand sowas schon mal realisiert? jau, hab ich und nein, für lau rück ich den Code nicht raus und vermutlich müsste man die SW noch an deine/eure Erfordernisse anpassen, aber der Part CAN-Bus mithören und nach bestimmten Identifyern filtern (bis zu 10 Stück - wenn ich mich richtig erinnere) ist schon fertig implementiert ... viele Grüße CB RE: Crio mit CAN modul - NachoMan - 16.02.2011 09:03 Hmm, kann den Aufwand für die Programmierung schwer abschätzen. Was wäre denn dein Preis für den Quellcode (vielleicht per PN an mich). Oder gibt es ne Basis auf der man gut aufbauen kann, würde mich ja auch mal selbst dran versuchen, finde nur nicht das passende Beispiel für nen Einstieg. Welchen Arbeitsaufwand schätzt Du denn für die Programmierung von dem Code? Gruß NachoMan RE: Crio mit CAN modul - NachoMan - 16.02.2011 14:13 So, hab jetzt mal bisschen mit dem CAN gearbeitet. Man hat ja zwei Möglichkeiten den CAN mit der Karte auszulesen. Einmal als Cluster, bei dem alle Teile des CAN Frames schon passend benannt sind oder als Array of 6 U32. Soweit ist mir das auch alles klar, so wie ich das sehe kann man das Cluster so wie es ist ja nur schwierig an RealTime übergeben (also wenn es dafür ne Möglichkeit gibt und jemand kennt sie, wäre ich dankbar für eine Hilfestellung). Bei dem Array welches ich an Realtime übergeben habe (über Fifos) habe ich das Problem, wenn ich es mit Hilfe von "CAN Convert Frame 1D U32 to NI-CAN NI.vi " wieder in ein "Cluster" wandle, passen die angzeigten Werte absolut nicht zu den Werten, die ich im Cluster im FPGA sehe... Ich hoffe ich konnte das Problem ausreichend gut beschreiben. Gruß NachoMan RE: Crio mit CAN modul - cb - 16.02.2011 19:58 also ich hab das Format 1D Array of U32 genommen, weil man das - wie du schon richtig festgestellt hast - besser in einen FIFO schieben kann. Das Format ist in der Hilfe für das cRIO Modul beschrieben, ich glaub man kommt auch über die Hilfe von der CAN Read Property hin. Filtern kannst du dann entweder auf dem RT-Controller oder halt im FPGA. Ich hab mich damals dafür entschieden auf dem FPGA zu filtern, weil das sehr schnell geht. Allerdings wird der Algorithmus mit zunehmender Anzahl zu filternder IDs auch immer langsamer, so dass man das irgendwie begrenzen muss, damit man kein Telegramm verpasst. Das Problem ist dabei im Prinzip folgendes: man muss beim Eintreffen einers Telegrammes sicherstellen, dass alle Filter durchgeprüft wurden, bevor das nächste Telegramm reinkommt. Wenn man das nicht schafft verpasst man entweder Telegramme oder - je nach Programmierung - es läuft einem irgendwann ein FIFO über. Ich hab mich damals dazu entschieden eine Vor-Filterung auf dem FPGA zu machen mit max. 10 Filter-Kriterien, die entweder eine Nachricht durchlassen oder ausschließen, und eine Nach-Verarbeitung auf dem RT. Prinzipiell hab ich das so aufgebaut: ich lese permanent mit CAN READ (in dem Format U32 Array) und wenn ein Telegramm reinkommt schieb ich das über einen lokalen FIFO auf dem FPGA zum Filter-Algo. Der Filter-Algo prüft anhand des Identifiers oder einer Bit-Maske ob das Telegramm durchgelassen wird oder nicht. Die Telegramme die durchgelassen werden, schicke ich an einen DMA-FIFO, der wiederum vom RT-VI ausgelesen wird. Im RT-VI wird dann die Nachverarbeitung gestartet, sprich die einzelen Values aus den 8 Daten-Bytes rausgepflückt, etc ... GL&HF! CB RE: Crio mit CAN modul - NachoMan - 18.02.2011 11:11 Hallo nochmal, also erstmal vielen Dank für die Hilfe. Hab jetzt doch schon einiges hinbekommen. Von NI hab ich nen CAN Monitor für FPGA bekommen. Auf Basis dieses VIs hab ich es dann geschafft meine Nachrichten nach den jeweiligen Identifiern zu sortieren, und die Daten auszuwerten. Die Filterung mache ich im RealTime. Also ich schicke erstmal alle Daten über den FIFO rüber und sortiere dann. Weiß nicht ob das die beste Lösung ist, aber es funktioniert. Ich denke solange ich meine DMAs überwache, dass sie nicht überlaufen sollte das ja funktionieren. Gruß NachoMan RE: Crio mit CAN modul - gruenlein - 21.03.2011 15:54 hallo zusammen, bin auch völlig neu in der Labview Programmierung, habe hier ein NI 9213 über das ich Thermoelemente auslesen möchte. Chassis ist ein compact RIO 9074, weitere Karten sind: NI 9421, NI 9265, NI 9853, NI 9472, NI 9201. Sitze jetzt seit 7 Tagen dran, aber ein rechter Durchblick will sich nicht einstellen. Soviel ich mitbekommen habe, lassen sich die Module NI 9853 und NI 9213 nur über FPGA auslesen. An ersterem möchte ich zudem einen Sensor mit CAN-Bus anschließen, das macht noch mehr Probleme. Wo fange ich an? RE: Crio mit CAN modul - cb - 22.03.2011 10:20 (21.03.2011 15:54 )gruenlein schrieb: Wo fange ich an? Mit dem Example-Finder: such dir die Beispiele raus in dem gezeigt wird, wie man mit deinen Karten arbeitet, da müsste es eig. für jedes Modul ein Beispiel geben. Wenn ich jetzt nicht ganz falsch liege gibt es auch ein Beispiel das die Umrechnung von Thermo-Spannungen in Temperaturen erklärt. Damit kannst du dann schon mal deine Messdaten-Erfassung programmieren. Des weiteren wirst du vermutlich DMA-Transfer vom FPGA-VI zum Controller brauchen. Auch dafür gibt es Beispiele im Example Finder. Auf Grundlage der o.g. Beispiele kannst du dir das FPGA-VI zusammen basteln, das die Messdaten erfasst und zum Controller schickt. Das ist dann schon mal die halbe Miete. Anschließend musst du dir halt überlegen, was mit den Daten auf dem Controller passieren soll: weitergehende Verarbeitung, oder z.B. einfach stumpf an einen PC-Host streamen? Keine Ahnung, was dir da so vorschwebt ... Viele Grüße CB |