03/2016 - 05/2018
Embedded Softwareentwicklung, Steuerungstechnik
ait-Deutschland GmbH, Kasendorf / WärmepumpenFür eine neue
Produktlinie wurde eine Steuerungsplatine durch eine wirtschaftlichere Platine
ersetzt. Meine Aufgabe war es, die Firmware für diese Platine zu entwickeln und
diese in ein Gesamtsystem zu integrieren.
Teil 1:
Ein Scheduler und
der Modbus-Treiber waren bereits implementiert. Die Firmware wurde von mir
durch folgende Funktionen erweitert:
- Konfigurieren
der µController Ports
- Lesen/Schreiben
der GPIOs
- Lesen
der Analogeingänge
- Schrittmotorsteuerung
- PWM
Ausgänge schreiben, alternativ: 0V-10V Ausgang
- PWM
Eingänge lesen, 0% - 100%
- Steuerung
der Platine über Modbus
- Eine
statische Bibliothek für Basisfunktionen des Controllers
- PID-Regelalgorithmus
zur Regelung des Kältekreises (Rekursiver Geschwindigkeitsalgorithmus)
Teil 2:
Das Gesamtsystem
besteht aus einer Wärmepumpe und zwei I/O Platinen, sowie einem Bedienteil
(HMI). Eine I/O Platine
wurde durch die Platine aus Teil 1 ersetzt. Die Firmware der zweiten Platine
musste angepasst werden. Hierzu wurden folgende Änderungen vorgenommen:
- Mod-Kommunikation
mit der Platine aus Teil 1
- Mod-Kommunikation
mit Frequenzumrichter
- Mod-Kommunikation
mit Ventilator
- Anpassung
der LIN-Frames zur Kommunikation mit dem Bedienteil (HMI)
Teil 3:
Das Bedienteil
ist die Hauptsteuerung für die Wärmepumpe. Die Software musste mit neuen
Funktionen angepasst werden. Zudem werden die I/O Platinen angesteuert und
Sensorwerte gelesen.
Teil 4:
Erstinbetriebnahme
der Funktionsmuster:
- Konfiguration
der PID-Werte für die Regelung des Kältekreises.
- Funktionstests
der Fühler und Sensoren.
Teil 5:
Implementierung
eines Bootloaders für den KL26 Mikrocontroller. Das Grundgerüst für den
Bootloader war bereits gegeben. Ich habe eine C# Anwendung geschrieben, damit
Daten aus einer .hex-Datei via RS485 übertragen werden können. Somit wird das
Debugging erleichtert. Anschließend habe ich den Bootloader für den Mikrocontroller angepasst.
Teil 6:
- Überarbeiten der Softwarestruktur (Legacy-Code)
- Betreuung und Programmierung für weitere Neuentwicklungen
- Dokumentation
Während der gesamten Zeit habe ich das Entwicklungsteam bei der Neustrukturierung des Entwicklungsprozesses unterstützt:
- Dokumentation und Anforderungsmanagement mit Redmine
- Strukturierung der Software
- Aufteilen neuer Funktionen in Module
- Refactoring von Legacy Code
- Einführung von „Clean Code“ im Team
- Unterstützung bei der Strukturierung von SVN
- Erstellen von Testplänen und Testprozeduren
- Implementierung von Unit-Test (Google Test)
Sonstiges:
- Aufnahme von Kennlinien der Temperatur-, Drucksensoren und Umwälzpumpen (Durchflusssensor)
- Anpassung einer weiteren Firmware die nicht zu diesem Projekt gehört. Ich habe eine unvollständige Library zur Ansteuerung der Ein- und Ausgänge vervollständigt
- Optimierung der Überhitzungsregelung
- Einarbeitung in Enterprise Architect
Rolle(n):
Softwareentwickler
Skills:
C/C++, LIN-Bus, MODBUS, ARM, Embedded Linux, Qt, IAR Embedded Workbench, Segger J-Link, .NET, NXP MKL26z256x4 Cortex-M0, Atmel ATSAM3S1C Cortex-M3
08/2015 - 12/2015
Digitalisierung des Emitter Location Systems
(Werksstudent/Masterarbeit/Befristete
Beschäftigung)
Raytheon
Deutschland GmbH / Raumfahrt und Verteidigung
Meine Aufgaben waren:
- Planen und durchführen von Tests in Absprache mit dem Entwicklungsteam. Hierzu gehörte die Entwicklung von Hard-, und Software, Dokumentation, Ressourcenplanung, Testprozeduren schreiben und eine abschließende Qualifizierung.
Es wurden folgende Testanwendungen geschrieben:
Anwendung in C++/MFC zur Qualifizierung des MIL-BUS-1553B Interfaces.
Embedded Anwendung in C zur Qualifizierung des MIL-BUS-1553B Interfaces.
Anwendung in C++/MFC zur Ansteuerung von GPIB-Geräten für EMV Tests
Anwendung in C++/MFC für Performance Tests des Emitter Location Systems
Embedded Webserver in C/JavaScript (vxWorks) zur Qualifizierung der Charakteristik der elektrischen Inputs/Outputs.
- Anwendung in VB.NET zur Datenauswertung und Testprotokoll- Generierung
Rolle(n):
Softwareentwickler
Skills:
C/C++, VB.NET, JavaScript, Multithreading, Visual Studio, Eclipse, HF-Technik, Oszilloskop, Networkanalyzer, Spektrumanalyzer, GPIB, MIL-STD-1553B, RS485-Standard, Matlab, CMMI, UML
03/2011 - 08/2011
Realisierung einer statisch konfigurierbaren und autarken LIN Master-/Slave- Einheit („LIN-BOX“)
(Bachelorarbeit)
BMW Group, München / Automobilindustrie
Ein Eval-Board, Tastenfeld und ein Display habe
ich zusammen in einem Gehäuse verbaut und verdrahtet. Anschließend habe ich einen
C-Code Generator mit VB.NET geschrieben. Aus bestehenden LIN-Descripion-Files
kann C-Code generiert werden der in die LIN-Box geladen wird. Somit kann die
LIN-Box individuell als Master oder Slave programmiert werden.
Nach abschließenden Tests fertigte die Juniorfirma von
BMW eine Kleinserie von 10 Stück an.
Rolle(n):
Softwareentwickler
Skills:
C, CodeWarrior, VB.NET, Visual Studio Express, Freescale SX12 Controller, BMW Standardcore, UML
05/2011 - 09/2011
Anwendungsentwicklung, Stundenabrechnung Werkschutz
(Werksstudent)
Raytheon Deutschland GmbH, Freising / Raumfahrt
und Verteidigung
Für die Lohnbuchhaltung habe ich eine Anwendung
entwickelt, damit die Arbeitsstunden der Werkschutzmitarbeiter nach Sonn-,
Feiertagen, Urlaub, Krankheitstagen, Überstunden aufgeschlüsselt werden können.
Die Daten werden in eine Excel-Datei geschrieben und können ausgedruckt werden.
Rolle(n):
Softwareentwickler
Skills:
VB.NET, Visual Studio
09/2009 - 12/2009
Implementierung eines Sicherheitsmechanismus für ein vorhandenes Radartestsystem
(Praktikum)
Raytheon Deutschland GmbH, Freising / Raumfahrt
und Verteidigung
Es musste eine
unzureichende Kühlluftversorgung der Prüflinge verhindert werden, sowie eine rotieren
Radarantenne bei geöffneter Schutztüre gestoppt werden. Für die
Überwachung der Kühlluftversorgung habe ich ein Interface installiert, welches
Spannungswerte von vorhandenen Luftmengensensoren digitalisiert und eine
Anwendung programmiert, die alle Luftmengen visuell darstellt und die Prüflinge
abschaltet sobald ein Luftstrom einen Minimalwert unterschreitet.
Einen Reed-Kontakt an der Schutztüre habe ich mit einem
Digitaleingang der Interface-Platine verbunden. Die Anwendung schaltet die
Radarantenne ab, sobald die Türe geöffnet wird.
Rolle(n):
Softwareentwickler