Automotive and Embedded Networks

cancel
Showing results for 
Search instead for 
Did you mean: 

Can Botschaften aud der DB verschicken

Hallo Leute,

folgendes möchte ich machen, ich habe auf mein PXI Sytems eine Kanal Konfiguration geladen auf den ich von Labview aus zugreifen kann. Ich möchte aus diese Kanal Konfiguration bestimmte Botschaften aus der Can Karte zum ECU gleichzeitig senden (bis zu 8 Kanäle ).Von diesen 8 Kanälen möchte ich 7 mit mit einem Datenwort von 1 schicken, dies brauche ich zur Vorinitialisierung für die ECU die später an die CAN Karte angeschlossen wird. Das 8 Signal soll zwischen 0 und 1 hin und her geschaltet werden umd den Motor der von der ECU gesteuert wird ein- bzw. auszuschalten. Ich habe auch ein entsprechendes Vi aus den Beispielen von NI-Can etwas verändert und ausprobiert. Ich kann aber mit diesem vi nur ein Kanal in einer Botschaft ändern, sind also zwei Kanäle in der Selben Botschaft wird dann nur ein Kanal gesetzt und der andere wird wieder auf den Alten Wert von der CAn db gesetzt.


Meine Frage ist also wie kann ich alle Kanäle mit einen Dateninhalt von 1 Senden wobei einige Kanäle in der Selben Botschaft liegen gleichzeitig Senden. Ich hoffe ich habe die Frage richtig gesendet, deswegen hier noch mal in Programmablauf wie ich es haben will.

In der Candb vorhanden Kanäle bzw. Botschaften

Kanal 1 (Msg1) Wert 0 ---> Setzen im Blocksacktbild auf den Wert 1
Kanal 2 (Msg1) "" ---> Setzen ............................. 1
Kanal 3 (Msg1) "" ---> Setzen ............................. 1
Kanal 4 (Msg2) "" ---> Setzen ............................. 1
Kanal 5 (Msg3) "" ---> Setzen ............................. 1
Kanal 6 (Msg4) "" ---> Setzen ............................. 1
Kanal 7 (Msg5) "" ---> Setzen ............................. 1
Kanal 8 (Msg6) "" ---> Setzen ............................. 0 oder 1

so nachdem die Werte jetzt gesetzt worde, sollen jetzt diese Werte vom Vi bzw. Blocksachltbild gesendet werden. ich kann mir diese Werte mit Canoe ansehen bevor ich die ECU anschließen kann. Anbei das von mir erstelle Beispiel, welches nicht richtig funktioniert

Gruß
dmad
0 Kudos
Message 1 of 6
(5,487 Views)
Hallo dmad,

wie Du schon beobachtet hast, ersetzt der NI-CAN Treiber beim Schreiben von Nachrichten fehlenden Kanalwerte immer mit den voreingestellten Werten (Default) aus der CAN Datenbank.
Du kannst das Problem aber umgehen, wenn Du die Kanalwerte in einem Schieberegister speicherst.

Was mir aus Deiner Beschreibung nicht ganz klar ist, ist ob die aufgelisteten Nachrichten (Msg1..5) alle nacheinander an die ECU gesendet werden bevor dann die letzte Nachricht den Motor ein- bzw. ausschaltet.

Du sagt, dass Du eine ECU ansteuern musst. Mit welchem Protokoll kommunizierst Du mit der ECU (CCP, KWP2000)?

Das wäre sicherlich ein guter Vorschlag für die Entwickler, das Verhalten beim Schreiben von Nachrichten mit fehlenden Kanälen einstellbar zu machen: Entweder so wie bisher, oder der Treiber wiederholt den jeweils letzten Wert für den Kanal.

Einstein
0 Kudos
Message 2 of 6
(5,458 Views)
Hallo Einstein,

danke für die Hilfe mittlerweile habe ich das Problem gelöst es lag an meiner Einstellung für die Sample Rate.

Naja jetzt habe ich aber ein weiteres Problem. Bisher habe ich das RT System ausgebaut und die CANdb auf die Flash Karte beschrieben. Jetzt suche ich einen Weg wie ich die CANdb von Labview aus einladen kann (aber ohne MAX). Ich habe versucht die DataSocket Tools zu verwenden aber mit denen komme ich nicht weiter da diese nur einzelne Daten Senden können und nicht eine komplette Datei. Weiß du oder jemand anders eine Lösung, wäre sehr Dankbar.

Gruß
dmad
0 Kudos
Message 3 of 6
(5,443 Views)
Hallo dmad,

wie meinst Du das mit "die CANdb von Labview aus einladen kann"? Willst Du die CANdb ohne Hilfe von MAX auf das RT System bekommen (also z.B. mittels FTP oder Diskette) und sie dann von Deinem VI nutzen?

Liegt das Problem dann beim (programmatische) Transfer der CANdb auf das RT System oder willst Du von dem RT System aus auf eine CANdb zugreifen, die sich auf einem anderen System befindet?

Einstein
0 Kudos
Message 4 of 6
(5,438 Views)
Hallo Einstein,

Willst Du die CANdb ohne Hilfe von MAX auf das RT System bekommen (also z.B. mittels FTP oder Diskette) und sie dann von Deinem VI nutzen?

Richtig genau das möchte ich, allerdings ohne Diskette ich habe auf meinem PXI System kein Diskettenlaufwerk.


Liegt das Problem dann beim (programmatische) Transfer der CANdb auf das RT System.

Ja genau irgendwie kriege ich das nicht hin, ich habe es mit DataSocket versucht aber nicht hinbekommen. Es muss doch möglich sein Dateien, egel welchen Format, vom PC aus auf das RT system zu laden. Danke noch mal für deine schnelle Antwort.

Gruß
dmad
0 Kudos
Message 5 of 6
(5,433 Views)
Hallo Einstein,
ein programmatischer Transfer von Dateien auf ein RT-System ist bspw. über
die Datasocket-VIs möglich. Zu beachten ist jedoch dabei, daß dieser vom
(Windows-)Host(->Client) aus initiert werden muß, weil ein RT-Target auf
die Art nur als FTP-Server(!) arbeiten kann.
Andere Alternativen sind das Internet-Developers-Toolkit (incl. FTP-Client
auf RT-Seite) oder FTP-Funktions-Aufrufe über den System-Exec-Aufruf auf
Windows-Seite.

Prinzipielle Verwendung von FTP auf der Host-Seite:
http://digital.ni.com/public.nsf/websearch/3CFA792CB50D1F3A862568CD008053CE?OpenDocument

FTP aus Windows-Command-Window:
http://digital.ni.com/public.nsf/websearch/6245C8EEB74984F786256BA40052D992?OpenDocument

Beispiel FTP mit System-Exec-Call:
http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=B45EACE3D9FD56A4E034080020E74861

Ansonsten kann das Problem noch in einem Paßwort-Schutz auf der Server-Seite beruhen,
die Lösung mit Datasocket:
http://ae.natinst.com/operations/ae/public.nsf/web/searchinternal/6608b05fb054005f86256a450078b1e7?OpenDocument

Gruß,
Tobel

Message Edited by Tobel on 03-22-2005 09:49 AM

Message 6 of 6
(5,395 Views)