CAN Bus Hardware-Programmierung?

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

CAN Bus Hardware-Programmierung?

Beitrag von ErnstVolker »

Hallo zusammen,

ich habe mich länger nicht gemeldet, da ich kein konkretes Programmierziel mehr hatte, nachdem meine DesignCad-Fernsteuerung nicht funzte.
Jetzt geht mir mal wieder was durch den Kopf und mich interessiert ob es mit Lazarus machbar ist.

Ich würde gerne an Kraftfahrzeugen über die OBD-Steckdose auf den Fahrzeug-CAN-Bus zugreifen und diverse Sensoren auslesen,
z.B. Lenkwinkel-, Gierwinkel-, Querbeschleunigungssensor, die Fahrgeschwindigkeit, Drosselklappe und/oder Gaspedal.
Evtl. im Getriebe (Bei Automatik oder Direktschalter) den gerade eingelegten Gang bzw. die Schaltpunkte mitbekommen.

Also kurzum: Fahrdynamische Größen einschließlich Meßzeit erfassen.

Durch einiges Vorstudien im Internet bin ich darauf gekommen, daß man zunächst einen CAN-Controller
benötigt um die Verbindung zwischen Laptop und Auto via USB herzustellen.

Ich habe den Eindruck, das ist von C++ beherrscht.
Gibt es hier Controller die sich mit Lazarus/FPC ansprechen lassen?

Wenn es das gibt, woher weiss man eigentlich in dem ganzen Bitgewimmel auf dem Bus, was welches Signal ist?
Wenn dieser CAN Bus genormt ist, dann müsste doch z.B. das Geschwindigkeitssignal herstellerübergreifend
die gleiche Adresse aufweisen, oder?

Kennt sich von Euch jemand damit aus und kann mir entsprechende Literatur oder Stellen im Netz nennen an denen man
weiter kommt?

Für eine Antwort danke ich im Voraus.

Mit freundlichen Grüßen

Volker

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: CAN Bus Hardware-Programmierung?

Beitrag von mschnell »

Vermutlich gibt es CAN-Adapter mit USB-Schnittstelle.

Wie die vom PC aus angesprochen werden und was für Software (Treiber) mitgeliefert wird ist vollkommen Hersteller-Spezifisch.

Du musst Dir also zuerst einen besorgen und die Doku lesen.

-Michael

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: CAN Bus Hardware-Programmierung?

Beitrag von ErnstVolker »

Vielen Dank Michael.
Erst mal weiter im Netz stöbern.

Hhmm,so ein Adapter-Ding kostet mal locker 200€ schätz ich. Für den Fall dass es nicht funzt ist mir das zu heikel.

Ich dachte von Euch hätte schon mal jemand so was mit Lazarus gemacht. Irgendwie zu Hause die Rolläden hoch und runter,
oder irgendetwas in der Automatisierungstechnik...

Danke nochmal

Volker

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6777
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: CAN Bus Hardware-Programmierung?

Beitrag von af0815 »

ErnstVolker hat geschrieben: Hhmm,so ein Adapter-Ding kostet mal locker 200€ schätz ich. Für den Fall dass es nicht funzt ist mir das zu heikel.
Ein 99 Euro Adapter
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: CAN Bus Hardware-Programmierung?

Beitrag von ErnstVolker »

Jaaa, schon mal nicht schlecht, danke af0815.

Da fehlt noch die Verbindung zur OBD-Buchse im Auto.
Na ich werde mich mal beim Deutschlandvertrieb in Leipzig erkundigen.

Und wenn man die CANUSB.dll verwendet, dann braucht man auch kein ActiveX -wenn ich das richtig verstehe, denn das geht ja bekanntermaßen in Lazarus nicht weil eben windowsspezifisch.

Danke

Gruß

Volker

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6777
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: CAN Bus Hardware-Programmierung?

Beitrag von af0815 »

Interessant wäre auch eine Testapplikation, damit mal das Protokoll getestet werden kann. Hast du dazu was im Auge ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: CAN Bus Hardware-Programmierung?

Beitrag von ErnstVolker »

Zunächst einfach mal die Fahrgeschwindigkeit erfassen.
Das geht, zumindest bei einigen VW-Modellen auch über ein KWP-Protokoll.
Hierzu gibt es Beispiele in der "Toolbox" mit TSerial und Delphi. Wobei TSerial wohl auch für Lazarus zur Verfügung steht.
Auf der Internetseite http://www.blafusel.de" onclick="window.open(this.href);return false; wird "Fahrzeugdiagnose mit OBD" beschrieben. Er misst auch Beschleunigung an einem T4 über K-Line oder KWP Protokoll,
nicht über CAN.
Ich denke ich werde mir das Buch mal in einer Hochschulbibliothek ansehen. Ebenso "Einführung in LabView". Hier ist auch was zum CANBUS beschrieben.

Ich hege die Befürchtung, dass es so "einfach" nicht geht und man auf Herstellerangaben angewiesen ist, was die "Signaldecodierung" -so nenne ich es mal- angeht.

Gruß

Volker

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: CAN Bus Hardware-Programmierung?

Beitrag von Live »

Ich wollte dich gerade auf LabView hinweisen ;)

Arbeite zur Zeit auch damit und schreibe ein GUI zur Steuerung von elektronischen Lasten. An sich ist LabView bei solchen Dingen sehr ordentlich, hat allerdings einen Nachteil: Als Code kann nur C bzw C++ eingebunden werden und als Compiler wird nur Visual C++ unterstützt. Ich sitze hier schon verzweifelt mit DevC++ und KDevelop und nichts regt sich *g*

Wäre interessant, wenn es für LabView auch eine Pascal-Unterstüzung geben würde, mir ist bisher aber nichts bekannt. Ein weiterer Nachteil ist natürlich auch der Preis, wenn du von einer 30 Tage Evaluierung absiehst.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6777
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: CAN Bus Hardware-Programmierung?

Beitrag von af0815 »

Live hat geschrieben:Wäre interessant, wenn es für LabView auch eine Pascal-Unterstüzung geben würde, mir ist bisher aber nichts bekannt. Ein weiterer Nachteil ist natürlich auch der Preis, wenn du von einer 30 Tage Evaluierung absiehst.
Ich habe früher Messprogramme mit Delphi und LabView geschrieben. Da bin ich einen unkonventionellen Weg gegangen - Delphi als Haupsystem und LabView als Dll kompiliert für die Meßaufgaben. Hat sehr gut funktioniert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: CAN Bus Hardware-Programmierung?

Beitrag von ErnstVolker »

In LabView kann man doch DLL's einbinden dachte ich. Müssen die zwingend in C++ geschrieben sein?
Ich dachte man könnte hier auch FPC-DLL's einbinden.

Alternative zu LabView: Agilent VEE http://www.meilhaus.de" onclick="window.open(this.href);return false; und nach Software suchen. Aber auch nicht gerade soooo supergünstig.
Oder ProfilabExpert. Günstig, kann auch selbstgeschriebene DLL's verwenden. Können in Delphi und C++ erstellt werden. Beispiele dabei.

Gruß

Volker

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: CAN Bus Hardware-Programmierung?

Beitrag von Live »

Um in LabView DLL's verwenden zu können (zumindest in meiner Version) musst du im Blockdiagramm die Funktion "Code Library Function Node" benutzen. Diese Funktion baut dir einen vorgefertigte C-Sourcedatei (mit "Erstellen einer *.c Datei" im Kontextmenü). Um die Funktion "DLL einbinden" überhaupt nutzen zu können, musst du einen C-Header von LabView verwenden ( extcode.h ). Dieser C-Header unterstützt nur den Visual C++ Compiler.

Ich kann dir mal mein Beispiel zeigen:

Code: Alles auswählen

/* Call Library source file */
 
#include "extcode.h"
 
__declspec(dllexport) int32_t MathLinear(int32_t *x, int32_t *b, int32_t *m, int32_t *y);
 
int32_t MathLinear(int32_t *x, int32_t *b, int32_t *m, int32_t *y)
{
 
	*y=(*m * *x)+*b;
	return 0;
}
Nur damit lässt sich die Funktion exportieren, LabView erstellt bei der Konfiguration des Knotens (sehr mühsam) wie gesagt nur C/C++ spezifische Quelltexte, damit ist Pascal afaik ausgeschlossen.


Zu dem Preis: Naja, LabView ist schon extrem teuer. Allein der Application Builder ist nur in der Developer Suite vorhanden und kostet als Zusatzmodul zur Studentenversion ~500€. Die Developersuite mit allem drum und dran
kostet:

2599,00€ für LabView 8.61
999,00€ für den Application Builder for Windows
1999,00€ für LabVIEW Fds, Software Upgrades für 1 Jahr und Support

Soviel zum Preis ;)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6777
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: CAN Bus Hardware-Programmierung?

Beitrag von af0815 »

ErnstVolker hat geschrieben:In LabView kann man doch DLL's einbinden dachte ich. Müssen die zwingend in C++ geschrieben sein?
Ich dachte man könnte hier auch FPC-DLL's einbinden.
Die Infos hier könnten dir ev. die Fragen beantworten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: CAN Bus Hardware-Programmierung?

Beitrag von mschnell »

ErnstVolker hat geschrieben:.

Und wenn man die CANUSB.dll verwendet, dann braucht man auch kein ActiveX -wenn ich das richtig verstehe,
Laut website siht das Ding für das Anwnderprogramm wie ein Serienport "COM?" aus. Also kein ActiveX sondern relativ normale "embedded" Programmierung.

-Michael

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: CAN Bus Hardware-Programmierung?

Beitrag von mschnell »

Live hat geschrieben: Dieser C-Header unterstützt nur den Visual C++ Compiler.
ist aber "flaches" C, kein C++, lässt sich also leicht in Pascal übersetzen. Es wäre also möglich, eine DLL mit Lazarus zu machen. Finde ich aber wenig attraktiv: lässt sich schlecht debuggen und da eine GUI an's Laufen zu bekommen ist vermutlich schwierig.

Also besser andersrum, wenn das geht.

-Michael

ErnstVolker
Beiträge: 353
Registriert: Di 17. Feb 2009, 10:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: CAN Bus Hardware-Programmierung?

Beitrag von ErnstVolker »

So,
gerade hab' ich mal mit einem Mitarbeiter eines Herstellers dieser CANBUS to USB Adapter gesprochen.
Die Fahrzeughersteller codieren ihre Signale und vergeben die Adressen. D.h. zumindest habe ich das so verstanden,
dass z.B. ein Gierwinkelsignal vom BMW anders rüberkommt als das vom Mercedes usw. Der Bus ist zwar genormt aber was und wie die Hersteller
darüber verschicken nicht. Da sind sie frei.
Von daher brauche ich mich gar nicht mehr großartig in die Materie einarbeiten.
Evtl. guck ich nochmal was im Buch zur Fahrzeugsiagnose mit OBD steht.

Gruß und nochmal DANKE für Eure Antworten

Volker

Antworten