CAN Bus Hardware-Programmierung?
-
- 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?
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
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
-
- 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?
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
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
-
- 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?
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
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
- 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?
Ein 99 Euro AdapterErnstVolker 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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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?
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
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
- 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?
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).
-
- 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?
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
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
-
- 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?
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.

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.
- 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?
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.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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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?
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
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
-
- 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?
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:
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
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;
}
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

- 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?
Die Infos hier könnten dir ev. die Fragen beantworten.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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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?
Laut website siht das Ding für das Anwnderprogramm wie ein Serienport "COM?" aus. Also kein ActiveX sondern relativ normale "embedded" Programmierung.ErnstVolker hat geschrieben:.
Und wenn man die CANUSB.dll verwendet, dann braucht man auch kein ActiveX -wenn ich das richtig verstehe,
-Michael
-
- 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?
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.Live hat geschrieben: Dieser C-Header unterstützt nur den Visual C++ Compiler.
Also besser andersrum, wenn das geht.
-Michael
-
- 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?
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
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