Forum: Fahrzeugelektronik Programmieren lernen - Fahrzeugelektronik/Automotiv Computing


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Drew (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Guten Tag,

ich bin ein 18-jähriger Htl-Schüler (Abteilung Informatik) und mache 
dieses Jahr meine Matura. Außerdem habe ich vor nach diesem Schuljahr im 
Bereich Automotive Computing zu studieren. Doch bis dahin, möchte ich 
mich alleine schon sehr gerne in das Programmieren im Bereich Autos 
stürzen und weiß leider nicht wie ich damit anfangen kann.


Im Internet finde ich leider nichts, wie ich ohne irgendeine Erfahrung 
in diesem Bereich lernen kann diverse Sachen zu programmieren, z.B.: 
Programmieren eines automatischen Lichts an der Tür, welches beim Start 
des Auto automatisch angeht.


Deswegen die Frage an euch. Habt Ihr irgendwelche Vorschläge für mich, 
wie ich damit anfangen kann? (Ich habe Grundkenntnisse in Java/C#).


Vielen Dank für jede kommende Hilfe,
Liebe Grüße.

von R. F. (rfr)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das Programmieren im Auto ist nichts wesentlich anderes als anderswo. 
Das einzige, was (für Fortgeschrittene) kommt, ist der CAN Bus. Aber bis 
dahin sieht alles genau so aus wie anderswo.

Dein automatischeas Licht im Auto bekommt eine Information, aus der 
hervorgeht, dass das Licht angehen soll, und das befiehlt sie dann. Im 
Grunde also nichts besonderes.

Falls du üben willst, beschaffe dir eines der Arduino-Hardware kits und 
installiere den AVR-GCC und die erforderlichen Bibliotheken auf dem 
Rechner und fange einfach an mit dem Auslesen eines LDRs, oder mit dem 
Ansteuern eines Motors. Beispiele und Hilfe hierzu fondest du übrigens 
auch in den Artikeln auf dieser Seite.

Grüsse

Robert

von Drew (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die schnelle Antwort!
Ich werde mir das anschauen, danke.

Schönen Abend noch,
Drew

von Dieter (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Als Literaturempfehlung kann ich dir das Buch: „Bussysteme in der 
Fahrzeugtechnik“ von Ralf Schmidgall und Werner Zimmermann ans Herz 
legen.

Es ist meines Erachtens gut verständlich und ziemlich breit gefächert, 
am besten die aktuellste Auflage, ich habe vor einigen Jahren mit einer 
sehr alten Auflage gearbeitet und war erstaunt, wie stark sich die 
Inhalte unterschieden haben.

Wenn es aber um Details geht, müssen andere Informationsquellen 
herhalten. Alleine schon über CAN können komplette Bücher geschrieben 
werden.

von dummschwaetzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Autosar
CAN
LIN
SIL
Arduino ist fürs Auto nicht so unbedingt empfehlenswert.

von Thomas F. (igel)


Bewertung
0 lesenswert
nicht lesenswert
R. F. schrieb:
> Das einzige, was (für Fortgeschrittene) kommt, ist der CAN Bus.

Der CAN-Bus ist so alt dass er schon langsam wieder weggeht;-)
Es kommt Automotive Ethernet. Nichtsdestrtrotz ist CAN Grundwissen und 
man muss diesen verstehen.

von Thomas F. (igel)


Bewertung
-1 lesenswert
nicht lesenswert
Drew schrieb:
> Im Internet finde ich leider nichts, wie ich ohne irgendeine Erfahrung
> in diesem Bereich lernen kann diverse Sachen zu programmieren

Natürlich findest du nichts. Die Hersteller geben ihren Quellcode nicht 
heraus. Und ohne Erfahrung nützt dir das sowieso nichts.

Sieh dir mal Assembler an un zu verstehen wie Controller arbeiten. Lerne 
C. Kein C#, C++, Arduino. Und dann bastel selber was. In einem Jahr 
kannst du dann wieder nachfragen:-)

von dummschwaetzer (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
geh mal zum schrottie deines vertrauens und hole dir alte Steuergeräte, 
mach sie auf und schau was in denen so werkelt: Infineon, ...

von luux (Gast)


Bewertung
2 lesenswert
nicht lesenswert
>Sieh dir mal Assembler an

>geh mal zum schrottie deines vertrauens und hole dir alte Steuergeräte,

ohmann.

von R. F. (rfr)


Bewertung
1 lesenswert
nicht lesenswert
dummschwaetzer schrieb:
> geh mal zum schrottie deines vertrauens und hole dir alte Steuergeräte,
> mach sie auf und schau was in denen so werkelt: Infineon, ...

Dein Name sei Programm...   :-)

von CC (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Im Auto gibt's vieles, das programmiert werden kann...
Das HMI ist manchmal Java, während Du das eher wenig im Steuergerät 
findest...

von A. S. (achs)


Bewertung
1 lesenswert
nicht lesenswert
Automotive ist m.E. zweigeteilt: Einmal so Dinge wie ein ABS-Sensor oder 
ein Regensensor mit einem internen µC die relativ autark arbeiten und 
ein paar Daten raushauen/bekommen. Das ist näher an Bare Metal C oder 
Assembler.

Und dann das Steuergerät in der Liga von Autosar. Das ist eher Arduino. 
Ja, Autosar ist eher C, aber als Privatmensch macht das wenig Sinn. Mit 
Arduino gewöhnst Du Dich daran, komische Frameworks unhinterfragt 
zusammen zu stöpseln.

Und dann gibt es natürlich noch Vektor und Co die quasi den 
Autosar-Unterbau liefern, da bist Du dann eher auf der Ebene ein 
Free-RTOS oder so in Betrieb zu nehmen und anzupassen.

von Denker bei der Arbeit (Gast)


Bewertung
-4 lesenswert
nicht lesenswert
Da fragst du an der falschen Stelle.
Hier kenne ich nur Raspberry/Arduino Code-Klauer.

von Frank Fragmentus (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Im Automotive Bereich wird nicht programmiert, im Automotive Bereich 
betreibt man Software Engineering.

Also setzte Dich unabhängig von der Programmiersprache deines 
Vertrauens/Naivität mit Themen wie "Requirement Capturing", "Software 
testing" "model driven development", "configuration managment" etc. pp. 
auseinander.

von luux (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Hallo Drew,
ich würde mit einem konkreten Projekt beginnen, das Dich motiviert, bei 
dem Du was lernst, und das in nicht allzu langer Zeit auch machbar ist.

Du hast ja schon eine konkrete Projektidee genannt mit der Beleuchtung.

Nimm eine bekannte Hardwareplattform. Zum Beispiel Arduino und lese den 
Schaltzustand der Klemme KL15 ein. Spannung liegt bei 12V +-4V. Dazu 
einen entsprechenden Spannungsteiler dimensionieren, so dass es zu den 
0..5V des Arduinos passt und einlesen.

Zur Ansteuerung des Lichts würde ich ein Smart-Fet nehmen. Oder einen 
kleinen Transistor und Relais.
Nimmst Du einen (Smart)-Fet, kannst Du das Licht später auch dimmen. Zum 
Beispiel beim Öffenen langsam faden.

Wie R.F. schon erwähnt ist auch der CAN Bus interessant. Wird Dich im 
Studium auch begleiten. Aber dazu brauchst Du eine Hardware die CAN 
kann. STM32 Board zum Beispiel und Du brauchst einen CAN-USB Adapter, 
damit Du auch am PC mal mitlesen kannst. Wenn Du aber tatsächlich an den 
CAN Bus des Autos willst wirds schon sehr schwierig. Mitlesen wird 
gehen. Aber Du wirst nur schwer Infos über die Signale finden. CAN ist 
erst mal was für einen Laboraufbau.

Fang lieber mit einem überschaubaren Projekt an.

von luux (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
... und später kann man die Komplexität ja erhöhen. Du bekommst in 
diesem Forum viel Hilfe weil hier viele sind, die so was beruflich 
machen. Es gibt aber auch viele Pappnasen. Kleine Trumps. Lass Dich von 
denen nicht verwirren.

von Frank Fragmentus (Gast)


Bewertung
4 lesenswert
nicht lesenswert
luux schrieb:
> Nimm eine bekannte Hardwareplattform. Zum Beispiel Arduino und lese den
> Schaltzustand der Klemme KL15 ein.

Und der Dijkstra rotiert leise im Grab, hat der nicht schon damals 
gewettert:

“It is practically impossible to teach good programming to students that 
have had a prior exposure to BASIC: as potential programmers they are 
mentally mutilated beyond hope of regeneration.”

Ersetz Basic mit Arduino und dieser Seitenhieb wird wieder aktuell, 
insbesonders für sicherheitskritische Applikationen.

von luux (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
>Lass Dich von denen nicht verwirren.
Kuck - die meinte ich.

von Klaus Knall (Gast)


Bewertung
1 lesenswert
nicht lesenswert
luux schrieb:
>>Lass Dich von denen nicht verwirren.
> Kuck - die meinte ich.

Naja, der Wirrkopp bist eher Du.

Da schau ,der TO will was machen, womit er bei einem Bewerbungsgespräch 
im Automobilbereich punkten kann. Und wenn der TO auf die Ansage:
"Also wir suchen hier nicht Programmiere von der Stange oder ein Herrn 
Österreicher von der HTL, wir suchen schon Bewerber mit Expertise im 
Automobilen und ihren ganz speziellen Gemeinheiten " anfängt, er hat mit 
einen Arduino für die Chinesische Grundschule schon mal per Klemme 15 an 
Spannungsteiler einen Scheinwerfer flackern lassen - da wird er ganz 
schnell mit einem Stück Zwetschgendatschi mit Butterstreuseln als 
Trostpreis heim geschickt.

Weil, an dem ist so garnichts Automotive, das ist Niveau Partyleuchte im 
Diskostadl. Automotive programmieren heisst nun mal automotive Normen, 
Prozesse und Arbeitsteilung zu kennen. Und die Hardware so auszulegen, 
das sie 10 Jahre Spannungsüberschläge im dreckigen Bordnetz anstandslos 
überlebt.

https://mk4-wiki.denkdose.de/artikel/kfz-bordnetz/start

von Michael_O (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wenn ich bei meinem Auto die Tür aufmache, schließt ein Schalter einen 
Stromkreis und das Licht geht an. Da kann man weder in Assembler noch in 
C dem Schalter oder dem Licht etwas anderes erklären. Liegt aber 
vielleicht daran das so ein E-Auto zu modern für so altertümliches Zeugs 
ist ;-)


MfG
Michael

von R. F. (rfr)


Bewertung
0 lesenswert
nicht lesenswert
Klaus Knall schrieb:
> Weil, an dem ist so garnichts Automotive, das ist Niveau Partyleuchte im
> Diskostadl. Automotive programmieren heisst nun mal automotive Normen,
> Prozesse und Arbeitsteilung zu kennen. Und die Hardware so auszulegen,
> das sie 10 Jahre Spannungsüberschläge im dreckigen Bordnetz anstandslos
> überlebt.

Aber wie kommt man dahin? Indem man die Grundlagen studiert, also 
gaaaaaanz unten anfangen. Ich empfehle daher den Anfang mit einer 
Hardware vom Arduino und eine Programmierumgebung für C, damit kann man 
die Grundlagen lernen.

Das Automotive mit Safety, Störungen im automobilen Umfeld und ähnlichem 
kommt dann später.

Grüsse

Robert

von Frank Fragmentus (Gast)


Bewertung
1 lesenswert
nicht lesenswert
R. F. schrieb:

> Aber wie kommt man dahin? Indem man die Grundlagen studiert, also
> gaaaaaanz unten anfangen. Ich empfehle daher den Anfang mit einer
> Hardware vom Arduino und eine Programmierumgebung für C, damit kann man
> die Grundlagen lernen.

Die Grundlagen für die Automotive Entwicklung ist nicht arduino sondern 
ein sauberes SystemKonzept, strukturierte Entwicklungsprozesse 
(Konzeption, Implementierung, Verifikation) und störfeste Kanäle (bspw. 
CAN).

Also ein CAN-Board + Framework besorgen, erst mal planen (Requirements 
aufschreiben, Betriebszustände definieren, Testplan,-konzept,-umgebung 
etc.pp.)  und nicht einfach loshacken.
Das Holzschnitzen lernt man auch nicht vom Baumfäller oder aus der 
Bedienungsanleitung eines 3D druckers sondern an der Kunstschule durch 
Nachahmung der grossen Meister.

Und der Dijkstra hat in seinem bitteren Sarkasmus nicht ganz unrecht, 
wer es von Anfang an 'gewöhnt ist', wild ungeprüften Fremdcode 
umzuhacken, ist später nur noch schwer in einem 
sauberen/nachvollziehbaren Entwicklungsprozess integrierbar:
https://cloudogu.com/images/blog/2018/CleanCode_TheartofProgramming.jpg

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Frank Fragmentus schrieb:
> erst mal planen (Requirements aufschreiben, Betriebszustände definieren,
> Testplan,-konzept,-umgebung etc.pp.)  und nicht einfach loshacken.

Das ist doch absurd. Ein HTL-absolvent sollte erst Mal eine 
Programmiersprache flüssig sprechen, bevor er Dichtkunst betreibt.

Basic wurde verteufelt, weil es die damals entstandenen Strukturierungen 
nicht bot. Sondern z.b. Zeilennummern statt Funktionsnamen.

von Frank Fragmentus (Gast)


Bewertung
1 lesenswert
nicht lesenswert
A. S. schrieb:

> Das ist doch absurd. Ein HTL-absolvent sollte erst Mal eine
> Programmiersprache flüssig sprechen, bevor er Dichtkunst betreibt.

Nein, er soll erst mal was zu sagen haben. Ob das nun im elegant 
gedrechselten Hochdeutsch der Baroquè-Zeit oder im schnoddrigen 
'Säksch' über die Lippen perlt, ist zweitrangig.

> Basic wurde verteufelt, weil es die damals entstandenen Strukturierungen
> nicht bot. Sondern z.b. Zeilennummern statt Funktionsnamen.

Das verteufelte (Dartmouth) Basic (1964) soll wohl so garnix mit den 
heutigen gemein haben:

-Variables names were one letter long with an optional digit

-Although FOR was present - while loops, break and other niceties were 
implemented with unrestricted goto.

-Whitespace was optional between expressions.

-Subroutines were available. GOSUB line number and RETURN.

-All parameter passing had to be done with the existing global 
variables.
26 user defined functions could exist FNA-FNZ, which could contain one 
line of code.

-IF statements were also limited to one line of code.

Dijkstra war ausgebildeter Mathematiker, klar das er da mehr Achtung vor 
dem Algo resp. dem Konzept hat, als der Notation.

von Karl (Gast)


Bewertung
-2 lesenswert
nicht lesenswert
Frank Fragmentus schrieb:
> Im Automotive Bereich wird nicht programmiert, im Automotive Bereich
> betreibt man Software Engineering.

Ja, die unheimlich kreativen Software Engineers. Ein mit Arduino 
bastelnder Hauptschüler wäre niemals auf folgenden Code gekommen:

if VORDERACHSE == DREHEN and HINTERACHSE == STEHEN:
   UMWELTFREUNDLICH()
else:
   DIESELSAU()

von Blechbieger (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Karl schrieb:
> if VORDERACHSE == DREHEN and HINTERACHSE == STEHEN:
>    UMWELTFREUNDLICH()
> else:
>    DIESELSAU()

Das ist unbeabsichtigt sogar ein gutes Beispiel. Den Fehlererkennung 
„VORDERACHSE == DREHEN and HINTERACHSE == STEHEN“ und Fehlerbehandlung 
„UMWELTFREUNDLICH()“ machen 90% von sicherheitskritischer Software aus. 
Die reine Funktion „DIESELSAU()“ für den Normalfall sind 10%.

von Dirk (Gast)


Bewertung
0 lesenswert
nicht lesenswert
In welche Richtung möchtest Du genau gehen? ADAS, Infotainemtsystem und 
dann z.B. Applicationengineer, Embedded Engineer oder HMI Engineer?

Ich empfehle Dir C/C++ und das Qt Framework zulernen, weil das Framework 
realtiv oft im Automotive Application, HMI etc. genutzt wird, siehe 
Mercedes MBUX.  Natürlich gibt es noch Automotive Android Auto als 
Betriebssystem, aber auch da kann man Native programmieren.

Zusätzlich ist vom Vorteil CAN, LIN, AUTOSAR und natürlich Automotive 
Ethernet zu kennen, aber es kommt wirklich darauf an wo genau du landen 
möchtest, weil die Automotivewelt ist riesig bis hin zur 
Treiberprogrammierung und eigene OS.

Du solltest dich bei Automtoivezulieferer in deinem Interesserenbereich 
für eine Bachelor/Masterarbeit/Praktikumsplatz/Werkstudent bewerben.

von Batman (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Drew schrieb:
> Im Internet finde ich leider nichts, wie ich ohne irgendeine Erfahrung
> in diesem Bereich lernen kann diverse Sachen zu programmieren, z.B.:
> Programmieren eines automatischen Lichts an der Tür, welches beim Start
> des Auto automatisch angeht.

Programmieren beim Auto ist auch nicht anderes als irgendetwas anderes 
zu programmieren. Bei Fahrzeugen hast du halt CAN-Bus für die 
Übertragung.

Ich würde kleinere Mikrocontroller Projekte mit µC deiner Wahl 
empfehlen.
Das macht Spaß und man lernt eine Menge.

Afug-Info hat bei ihrem vorletzten Video (8 Leds an 4 Ports) einen evtl. 
Programmierkurs auf ihrem Kanal angekündigt, vielleicht da auch mal ab 
und zu nachsehen.
https://www.youtube.com/channel/UCmWsa7k8HAGCUhrfPesO77w

von Klaus Knall (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Batman schrieb:

> Programmieren beim Auto ist auch nicht anderes als irgendetwas anderes
> zu programmieren.

Doch ist es. Einer LED tut es nicht weh, wenn man ein IRQ vom Taster 
'verklemmt', einem Auto-Insasse stirbt dagegen u.U. wenn die Bremse erst 
nach einem 'Watchdog-Reboot' des controllers wegen dem verklemmten IRQ 
verzögert aktiv wird.

Und selbst Lampen mit ihren geringen Verbrauch können bspw. übers 
wochenende oder länger die Batterie 'leerlutschen' so das gerade Winter 
der Motor nicht startet. Und das nur weil das Programmierhansel 
vergessen hat alle verbraucher sauber auszuschalten. OK, dieses Problem 
sollte von den e_autos an der heimischen Steckdose gelöst sein.

Probleme erst zu lösen, wenn sie erkannt werden ist im Automobil mit 
seinen knappen Entwicklungsterminen nicht sinnvoll. Da muss man auf 
Automatisierte Tests hin entwickeln, damit in der HIL-gestützten 
Verifikationsphase die vollständigen Fehlerreports quasi über Nacht 
rauspurzeln.

PS:
Der TO ist an einer Berufsschule für Informatiker, der hat 'irgentwas 
programmieren' bereits als Fach im Klassenzimmer.

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Klaus Knall schrieb:
> Probleme erst zu lösen, wenn sie erkannt werden ist im Automobil mit
> seinen knappen Entwicklungsterminen nicht sinnvoll.

Der Umgang mit Asynchronen Events bzw. dessen Tücken gehört zum zwingend 
erforderlichen Erfahrungsschatz.

Besser mit einer LED als später im Automobilbau nicht wissen, warum dass 
keine gute Idee ist.

von Klaus Knall (Gast)


Bewertung
0 lesenswert
nicht lesenswert
A. S. schrieb:
> Der Umgang mit Asynchronen Events bzw. dessen Tücken gehört zum zwingend
> erforderlichen Erfahrungsschatz.
>
> Besser mit einer LED als später im Automobilbau nicht wissen, warum dass
> keine gute Idee ist.

Ja, ich gehe aber davon aus, das die meisten Besitzer von Boards zum 
Programmieren auf LED-Niveau von "Asynchronen Events" und den Umgang mit 
anderen Schweinerein kennen und die dimat professionell umgehen können 
das nicht vom spielerischen Umgang mit einem LED-Board gelernt haben.


TO schrieb:
> Im Internet finde ich leider nichts,

das stimmt wohl eher nicht, höchstens das das was man findet nicht 
Deinem Erwartungen an 'Automotive Programmieren' antspricht:

ISBN: 978-3834824691
ISBN: 978-3658024185
ISBN: 978-1502751522
ISBN: 978-1107183223


Ansonsten mal in professionelles Embedded reinschauen:

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.