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.
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
Vielen Dank für die schnelle Antwort! Ich werde mir das anschauen, danke. Schönen Abend noch, Drew
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.
Autosar CAN LIN SIL Arduino ist fürs Auto nicht so unbedingt empfehlenswert.
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.
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:-)
geh mal zum schrottie deines vertrauens und hole dir alte Steuergeräte, mach sie auf und schau was in denen so werkelt: Infineon, ...
>Sieh dir mal Assembler an >geh mal zum schrottie deines vertrauens und hole dir alte Steuergeräte, ohmann.
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... :-)
Im Auto gibt's vieles, das programmiert werden kann... Das HMI ist manchmal Java, während Du das eher wenig im Steuergerät findest...
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.
Da fragst du an der falschen Stelle. Hier kenne ich nur Raspberry/Arduino Code-Klauer.
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.
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.
... 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.
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.
>Lass Dich von denen nicht verwirren.
Kuck - die meinte ich.
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
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
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
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
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.
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.
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()
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%.
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.
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
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.
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.
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:
Klaus Knall schrieb: > Der TO ist an einer Berufsschule für Informatiker, der hat 'irgentwas > programmieren' bereits als Fach im Klassenzimmer. Das hatten wir am Gymnasium auch. Das Level ist aber derart niedrig, daß man damit noch nicht viel anfangen kann, weil das im Prinzip jeder kann. Dabei wäre es wichtig, sich durch Qualität von der großen Programmierhorde zu differenzieren. Leider gehen viele den entgegen gesetzten Weg: Schnell, knapp, billig! Beitrag "Re: Stellenwert und Erfahrungen mit dualem Studium"
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.