IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> CAN channel API, baudrate ändern
thitob
post 13. Aug 2007, 16:15
Post #1


new Member
*

Group: Members
Posts: 8
Joined: 13.08.2007
From: Stuttgart
Member No.: 32
LV Version: 8.2
Zertifizierung: keine
LV User seit: 2007



Hallo zusammen,

bin ein Frischling :-)

und würde mich super freuen wenn jemand etwas über NI-CAN weiss bzw. mir eventuell helfen könnte.

Verwende eine PXI, NI-CAN Karte, Port 1 wird verwendet, CAN Botschaften sind in der MAX eingelesen und zum RT-System gesendet worden.
Mit welchen Infos könnte ich Euch noch weiter helfen ????

Zu meiner Frage :-)

wie gelingt es mir die baudrate zuverändern???
Ich sollte auf 500kbaud senden!!! zur zeit wird auf 1Mbaud gesendet. meine EigenenInfos dazu, mit dem ChannelAPI, GET PROPERTY kann man die "interface baudrate" ändern, nur wie????? --- das komische am Freitag konnte ich sie ändern heute geht nichts mehr :-( bin beim verzweifeln :-(

Heute kommt immer wieer doe Fehlermeldung, ich solle doch die Verbindung unterbrechen und das System neu starten,......

Attached File  Waveform_Input2.vi ( 35.54K ) Number of downloads: 1259


hab mal des Vi angehängt.

Im Vorraus schon mal vielen Dank.
Grüssle

This post has been edited by thitob: 13. Aug 2007, 16:17
Go to the top of the page
 
+Quote Post
CB
post 13. Aug 2007, 20:37
Post #2


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



Wenn du mit der FRAME API arbeitest, dann kannst du die Baud-Rate beim Konfigurieren der Schnittstelle einstellen:

Attached Image

Wenn du mit der Channel API arbeitest musst du statt dem VI "INIT Start" die beiden VIs CAN Initialize und CAN Property (Instanz Baud-Rate) verwenden:

Attached Image


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
thitob
post 14. Aug 2007, 15:54
Post #3


new Member
*

Group: Members
Posts: 8
Joined: 13.08.2007
From: Stuttgart
Member No.: 32
LV Version: 8.2
Zertifizierung: keine
LV User seit: 2007



Danke CB für deine Antwort!!!

Es klappt :-)

Eine kleine Frage ist es einfacher mit channel API oder mit Frame API die Can komunikation durchzuführen???

Wie sind deine Erfahrungen??

Danke für Deine Hilfe
Grüssle Titob
Go to the top of the page
 
+Quote Post
CB
post 14. Aug 2007, 20:00
Post #4


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



QUOTE(thitob @ 14. Aug 2007, 16:54) *
Danke CB für deine Antwort!!!

Es klappt :-)

Eine kleine Frage ist es einfacher mit channel API oder mit Frame API die Can komunikation durchzuführen???

Wie sind deine Erfahrungen??

Danke für Deine Hilfe
Grüssle Titob


hmm, einfacher ... keine Ahnung. Ich hab bisher fast immer mit der Frame API gearbeitet, weil ich Zugriff auf die Bits und Bytes in der Message brauchte. Mit der Channel API hab ich bisher erst einmal was gemacht ist aber auch schon ne Weile her, drum kann ich auch auf deine andere Frage nicht wirklich eine Antwort geben.

Wenn ich mich jetzt nicht grob täusche dann sollte aber die Channel API für deinen Anwendungs-Zweck die "bessere" Methode sein, weil du dich nicht mehr selbst drum kümmern musst, wie die Daten verpackt sind, sondern das der Treiber für dich erledigt.


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
thitob
post 15. Aug 2007, 16:36
Post #5


new Member
*

Group: Members
Posts: 8
Joined: 13.08.2007
From: Stuttgart
Member No.: 32
LV Version: 8.2
Zertifizierung: keine
LV User seit: 2007



Hallo CB,

danke für deine späte Antwort. thumbup.gif

Schade, dass Du mir bei dem anderen Problem nicht weiterhelfen kannst.

Bin dir aber sehr dankbar, dür deine Infos. worshippy.gif

Dann werde ich mal in anderen Foren mein Glück versuchen.

Grüssle thitob
Go to the top of the page
 
+Quote Post
eg
post 21. Aug 2007, 23:58
Post #6


new Member
*

Group: Premium Members
Posts: 25
Joined: 19.03.2007
Member No.: 24
LV Version: LV 8.0.1
Zertifizierung: CLAD
LV User seit: 2004



Frame API und Channel API sind zwei unterschieden Ebenen, wobei man mit beiden fast alles machen kann.

Frame API ist mehr für die LV-Programmierer und Channel-API für DIADEMler. Mit Frame VIs kannst du aif die einzelnen Bytes jedes Paketes zugreifen, wobei mit Channel VIs man gleich eine CAN-DB einlesen kann und die Pakete gleich im "richtigen" Format darstellen kann.

Channel API ist also mehr abstrakt als Frame API.

labviewer


--------------------
nobody is perfect
Go to the top of the page
 
+Quote Post
thitob
post 22. Aug 2007, 15:30
Post #7


new Member
*

Group: Members
Posts: 8
Joined: 13.08.2007
From: Stuttgart
Member No.: 32
LV Version: 8.2
Zertifizierung: keine
LV User seit: 2007



QUOTE(labviewer @ 22. Aug 2007, 00:58) *
Frame API und Channel API sind zwei unterschieden Ebenen, wobei man mit beiden fast alles machen kann.

Frame API ist mehr für die LV-Programmierer und Channel-API für DIADEMler. Mit Frame VIs kannst du aif die einzelnen Bytes jedes Paketes zugreifen, wobei mit Channel VIs man gleich eine CAN-DB einlesen kann und die Pakete gleich im "richtigen" Format darstellen kann.

Channel API ist also mehr abstrakt als Frame API.

labviewer


Hallo labviewer,
danke für deine Antwort.

hast Du eventuell auch ahnung ob ich mit den Frame bzw. channel API`s auf die ECU zugriff haben kann????
Ich konnte bis jetzt "nur" die Defaultwerte von der PXI lesen. Auf der PXI habe ich die Botschaften und message gespeichert. und wenn ich z.B. ein Defaultwert ändere und ihn zum Real Time System sende, danach das Programm starte zeigt er mir den geänderten Defaultwert an.
Ich sollte jedoch die Werte aus von der ECu rauslesen!
Hast Du eventuell eine Idee????

Danke Dir sehr.
Go to the top of the page
 
+Quote Post
CB
post 22. Aug 2007, 18:30
Post #8


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



QUOTE(thitob @ 22. Aug 2007, 16:30) *
Hallo labviewer,
danke für deine Antwort.

hast Du eventuell auch ahnung ob ich mit den Frame bzw. channel API`s auf die ECU zugriff haben kann????
Ich konnte bis jetzt "nur" die Defaultwerte von der PXI lesen. Auf der PXI habe ich die Botschaften und message gespeichert. und wenn ich z.B. ein Defaultwert ändere und ihn zum Real Time System sende, danach das Programm starte zeigt er mir den geänderten Defaultwert an.
Ich sollte jedoch die Werte aus von der ECu rauslesen!
Hast Du eventuell eine Idee????

Danke Dir sehr.


Willst du wirklich direktmit der ECU kommunizieren, sprich über das CAN Calibration Protocoll? Wenn ja, dann solltest du dir auf ni.com das CCP Toolkit runterladen. Es gibt 2 Versionen, die Version 1 ist zwar kostenlos hat aber einen deutlich kleineren Funktionsumfang als die Version 2, die kostet dann halt Geld. Der Haupt-Vorteil von Version 2 ist, dass du a2l Dateien, etc parsen kannst und direkt eine Variablen-Datenbank bekommst und verwenden kannst.

Wenn du dafür keine Kohle übrig hast, kann ich dir ggf. mit einem Perl-Script aushelfen, dass eine canape.db parsen könnte, falls sich das Format inzwischen nicht geändert hat. Das ist nämlich 3 Jahre her, dass ich das geschrieben habe.

Falls du CCP (oder z.B. ein ähnliches Protokoll) selber nachbauen willst, musst du auf die Frame API zurückgreifen und die Bits und Bytes selber zusammenfriemeln.

Wenn dir die ECU periodisch bestimmte Werte mit festgelegten Eigenschaften (und festen Identifyern) schickt und du diese Botschaften empfangen willst, dann geht das am einfachsten über die Channel API, weil dann der Treiber das herausfiltern der Bits aus dem Byte Array anhand der von dir erstellten Konfiguration für dich erledigt und dir gleich die physikalischen Werte liefert.

Ansonsten kannst du einfach mal im Example Finder schauen, da gibt es sowas wie einen CAN Monitor. Da kannst du die Baudrate und die Schnittstelle auswählen und laufen lassen. Das Teil basiert auf der Frame API und liefert dir die Rohdaten, so wie sie über den Bus gesendet werden. Wenn du da die Daten von deiner ECU siehst, dann sollte es nicht mehr all zu schwer sein, die Kanäle für die Channel API entsprechend anzulegen und die Daten auszulesen.



--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
thitob
post 27. Aug 2007, 09:30
Post #9


new Member
*

Group: Members
Posts: 8
Joined: 13.08.2007
From: Stuttgart
Member No.: 32
LV Version: 8.2
Zertifizierung: keine
LV User seit: 2007



QUOTE(CB @ 22. Aug 2007, 19:30) *
Willst du wirklich direktmit der ECU kommunizieren, sprich über das CAN Calibration Protocoll? Wenn ja, dann solltest du dir auf ni.com das CCP Toolkit runterladen. Es gibt 2 Versionen, die Version 1 ist zwar kostenlos hat aber einen deutlich kleineren Funktionsumfang als die Version 2, die kostet dann halt Geld. Der Haupt-Vorteil von Version 2 ist, dass du a2l Dateien, etc parsen kannst und direkt eine Variablen-Datenbank bekommst und verwenden kannst.

Wenn du dafür keine Kohle übrig hast, kann ich dir ggf. mit einem Perl-Script aushelfen, dass eine canape.db parsen könnte, falls sich das Format inzwischen nicht geändert hat. Das ist nämlich 3 Jahre her, dass ich das geschrieben habe.

Falls du CCP (oder z.B. ein ähnliches Protokoll) selber nachbauen willst, musst du auf die Frame API zurückgreifen und die Bits und Bytes selber zusammenfriemeln.

Wenn dir die ECU periodisch bestimmte Werte mit festgelegten Eigenschaften (und festen Identifyern) schickt und du diese Botschaften empfangen willst, dann geht das am einfachsten über die Channel API, weil dann der Treiber das herausfiltern der Bits aus dem Byte Array anhand der von dir erstellten Konfiguration für dich erledigt und dir gleich die physikalischen Werte liefert.

Ansonsten kannst du einfach mal im Example Finder schauen, da gibt es sowas wie einen CAN Monitor. Da kannst du die Baudrate und die Schnittstelle auswählen und laufen lassen. Das Teil basiert auf der Frame API und liefert dir die Rohdaten, so wie sie über den Bus gesendet werden. Wenn du da die Daten von deiner ECU siehst, dann sollte es nicht mehr all zu schwer sein, die Kanäle für die Channel API entsprechend anzulegen und die Daten auszulesen.



Hallo CB,

entschuldige meine späte NAchricht,

Ja ich muss direkt mit der ECU kommunizieren. Ich habe aus den Beispielen fast alle CAN beispiele aus Verzweiflung ausprobiert. wenig Erfolg.
EIn kleinen Erfolg hatte ich ,dass ich mit dem Beispiel "Single sample input" die Defaultwerte der gespeicherten MAX Messages lesen konnte.
Habe auch mit dem "can channel monitor" gearbeitet, konnte nur die Messages anzeigen lassen. die Defaultwerte waren aber "0.000000".

Den CCP Toolkit habe ich, nur ich kann damit keine FahrzeugCAN Botschaften, bzw. Messages senden/lesen. Oder geht das doch?????

Danke für Antworten und Tips.
Grüssle

This post has been edited by thitob: 27. Aug 2007, 09:31
Go to the top of the page
 
+Quote Post
CB
post 27. Aug 2007, 18:39
Post #10


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



QUOTE(thitob @ 27. Aug 2007, 10:30) *
entschuldige meine späte NAchricht,


's isch koi problääm smile.gif

QUOTE(thitob @ 27. Aug 2007, 10:30) *
Den CCP Toolkit habe ich, nur ich kann damit keine FahrzeugCAN Botschaften, bzw. Messages senden/lesen. Oder geht das doch?????


CCP ist ein Protokoll mit dem es möglich ist direkt mit der CPU der ECU zu kommunizieren, also Register auslesen, setzen, Werte "runterladen", etc. CAN wird dabei als die Transport-Schicht verwendet. Normalerweise verwendet man CCP nur in der Entwicklung von ECUs um dem Prozessor bei der Arbeit zuzuschauen, Werte zu manipulieren, die Software aufzuspielen, etc ... aber NICHT im regulären Betrieb. In den meisten Fällen wird die CCP Funktionalität vor Auslieferung an den Kunden deaktiviert.

QUOTE(thitob @ 27. Aug 2007, 10:30) *
Ja ich muss direkt mit der ECU kommunizieren. Ich habe aus den Beispielen fast alle CAN beispiele aus Verzweiflung ausprobiert. wenig Erfolg.
Ein kleinen Erfolg hatte ich ,dass ich mit dem Beispiel "Single sample input" die Defaultwerte der gespeicherten MAX Messages lesen konnte.
Habe auch mit dem "can channel monitor" gearbeitet, konnte nur die Messages anzeigen lassen. die Defaultwerte waren aber "0.000000".


Ich komm nicht so ganz auf den Trichter, was du genau machen willst. Du hast also eine ECU, die dir Daten senden soll? Hast du vielleicht eine Tabelle mit Identifyern und der Beschreibung der Daten? So in der Richtung ID 4711 Bit 0 bis 15 i16 "Druck 1 x 100", Bit 16 bis 31 "Druck 2 x 1000" oder so?

Andererseits: wenn du den Monitor laufen lässt und du nichts siehst, dann ist vielleicht die Verkabelung nicht in Ordnung? Oder deine ECU sendet ganz einfach nichts? Kannst du das ggf. mit einem Tool wie CANape überprüfen?

Vielleicht komm ich drauf, wenn du noch ein paar mehr Infos preisgibst? Was für eine ECU, was macht die, was soll kommunizert werden, etc?


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post
thitob
post 29. Aug 2007, 15:21
Post #11


new Member
*

Group: Members
Posts: 8
Joined: 13.08.2007
From: Stuttgart
Member No.: 32
LV Version: 8.2
Zertifizierung: keine
LV User seit: 2007



QUOTE(CB @ 27. Aug 2007, 19:39) *
's isch koi problääm smile.gif
CCP ist ein Protokoll mit dem es möglich ist direkt mit der CPU der ECU zu kommunizieren, also Register auslesen, setzen, Werte "runterladen", etc. CAN wird dabei als die Transport-Schicht verwendet. Normalerweise verwendet man CCP nur in der Entwicklung von ECUs um dem Prozessor bei der Arbeit zuzuschauen, Werte zu manipulieren, die Software aufzuspielen, etc ... aber NICHT im regulären Betrieb. In den meisten Fällen wird die CCP Funktionalität vor Auslieferung an den Kunden deaktiviert.
Ich komm nicht so ganz auf den Trichter, was du genau machen willst. Du hast also eine ECU, die dir Daten senden soll? Hast du vielleicht eine Tabelle mit Identifyern und der Beschreibung der Daten? So in der Richtung ID 4711 Bit 0 bis 15 i16 "Druck 1 x 100", Bit 16 bis 31 "Druck 2 x 1000" oder so?

Andererseits: wenn du den Monitor laufen lässt und du nichts siehst, dann ist vielleicht die Verkabelung nicht in Ordnung? Oder deine ECU sendet ganz einfach nichts? Kannst du das ggf. mit einem Tool wie CANape überprüfen?

Vielleicht komm ich drauf, wenn du noch ein paar mehr Infos preisgibst? Was für eine ECU, was macht die, was soll kommunizert werden, etc?



Hallo CB,
woher kasch DU Schwäbisch??? es isch ne schä sproch :-)

zum Thema

1) Die ECU sendet Daten, haben es mit Canape überprüft.
2) Ja, die Daten von dem Identifiyern sind ich in der MAX gespeichert. ---> siehe unten
3) Bei dem Monitor VI erscheint bei mir die ausgewählte Message z.B. ST_KLCK (gibt an ob der Motor läuft) und dahinter überall nur nullen. bis auf Num Rx dort zählt es (denke ich) die Schleifendurchläufe. Die Message ID wird angezeigt.
Attached Image

4) es soll über den Fahrzeug-CAN daten gelesen/geschrieben werden.

Kann es eventuell auch an der MAX konfiguration liegen????
Attached Image

Welche INfos bräuchtest noch???

Grüssle und danke.
Thitob

Go to the top of the page
 
+Quote Post
CB
post 29. Aug 2007, 18:06
Post #12


proven Member
****

Group: Administrators
Posts: 315
Joined: 16.10.2006
From: Düsseldorf
Member No.: 2
LV Version: current
Zertifizierung: CLA
LV User seit: 2001



QUOTE(thitob @ 29. Aug 2007, 16:21) *
woher kasch DU Schwäbisch??? es isch ne schä sproch :-)


Ich arbeite gerade in der Nähe von Stuttgart, da schnappt man so das ein oder andere auf wink.gif

QUOTE(thitob @ 29. Aug 2007, 16:21) *
1) Die ECU sendet Daten, haben es mit Canape überprüft.
2) Ja, die Daten von dem Identifiyern sind ich in der MAX gespeichert. ---> siehe unten
3) Bei dem Monitor VI erscheint bei mir die ausgewählte Message z.B. ST_KLCK (gibt an ob der Motor läuft) und dahinter überall nur nullen. bis auf Num Rx dort zählt es (denke ich) die Schleifendurchläufe.


Ok, so wie ich das jetzt verstehe ist das die klassische Anwendung für die Channel API. Da sich die Identifyer und das Datenformat bei deiner Anwendung nicht ändern kannst du das alles im MAX parametrieren und dann die Kanäle aus dem MAX verwenden.

Ich würde mal folgendermaßen rangehen:
Attached Image


Prüfe mit dem VI "CAN Receive.vi" aus dem Example Finder, ob du mit deiner CAN-Karte die Messages vom Steuergerät empfangen kannst. Wenn nicht, stimmt z.B. die Baud-Rate, die Verkabelung, der Port nicht oder deine Karte ist defekt. Wenn du die Daten mit CANape siehst, dann musst du sieh auch hier sehen. Das VI verwendet die Frame API und zeigt jeden Frame an, der über den Bus geschickt wird. Wenn da was gesendet wird musst du es damit auch sehen.

Wenn du die Daten in dem VI siehst, dann ist deine Verbindung zur ECU in Ordnung. Dann musst du mal deine Kanal-Definitionen überprüfen. Es gibt da mehrere verschiedene Formate, z.B. Motorola, Intel, und so weiter, das musst du alles GENAU so einstellen, wie in der Spezifikation der ECU angegeben, sonst kommt nur Müll raus


--------------------
künstliche Intelligenz ist besser als natürliche Dummheit!
rotabench:rotierende Prüfstände nach dem Baukasten-Prinzip
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 19.03.2024 - 11:12