Schlagwörter
Skills
· Windows 10 / 8 / 7
· Windows CORE / CE / Mobile
· plattformübergreifende Entwicklungen in C#
(Mono/CORE)
· plattformübergreifende Entwicklungen in C++ (Qt)
Programmiersprachen:
· C#
· C++
Technologien:
· .NET Framework 1.1 – 5.0
· .NET Core
· MS Visual C++, MFC
· Qt
Spezialkenntnisse:
· Systementwurf / Systemarchitektur
· GUI Entwicklungen
· HMI Entwicklungen
· WPF, XAML, MVVM, PRISM, Controls für WPF
· SQL (MS Sql Server, Sq-Lite)
· Windows Forms
· Linq
· XML, XSD
· WCF, WF
· OLE, ActiveX, COM, DCOM, ATL, Remoting
· Open-GL (3D Animationen unter C++)
· Direct-X (3D Animationen unter WPF)
· CAN Bus, EtherCAT, RS 232 / 485, TCP/IP, ISA Bus
· Entwicklung von Windows Services
· oo-Technologien
· Multi-Threading
· boost library
· STL
· Microsoft Foundation Classes (MFC)
· Git, TFS (Team Foundation Server), Azure DevOps,
Visual SourceSafe
· Qualitätsmanagement für Medizinprodukte
· Messdatenaufbereitung und Visualisierung in 2D Charts
(SCI-Chart Komponente für WPF)
· Rest full services
· Unit Testing
· IOT, Industrie 4.0, PTC-ThingWorx, Symmedia, Axoom
Projekthistorie
Die Software kommuniziert mit dem Datenspeicher. Sie spielt Updates der Gerätesoftware auf, parametriert diese und liest die Daten des Speichers aus.
Der Kunde besaß eine über viele Jahre gewachsene und somit sehr unstrukturierte 1.0 Version der Software. Als ihn der für diese Software verantwortliche Mitarbeiter verließ, ergab sich die Situation, dass die Software von anderen Entwicklern nicht gewartet oder gar weiterentwickelt werden konnte.
Ausgehend von diesem Softwarestand wurde von mir eine komplette Neuentwicklung durchgeführt. Die Ausgangsbasis bestand aus 5.42 MB Daten in 800 reinen Code-Files (nur *.cs, und *.xaml Dateien). Ich habe daraus eine Software mit 568 Code-Files erzeugt, die 1,98 MB Daten umfasst. Die neue Software enthält bei deutlich gesteigertem Funktionsumfang somit nur noch ca. 35% der Codelines der Ausgangssoftware.
Die Arbeit wurde komplett in unserem Büro durchgeführt, in regelmäßigem Turnus gab es TeamViewer Meetings oder auch Besprechungen beim Kunden vor Ort.
Verwendete Technologien:
- C#
- WPF, XAML, PRISM, Controls für WPF
- Kommunikation mit den Geräten über natives-USB
- Mehrsprach-Fähigkeit
Im Rahmen dieser Aufgabe habe ich diverse Module einer komplexen Software entwickelt, über welche Automobilprüfstände konfiguriert und betrieben werden.
Einige Aufgaben waren:
- Erstellung einer Fernbedienung auf einem Windows Embedded CE System zur Fernsteuerung der Prüfstandssoftware über Tcp/Ip.
- Erstellung einer WPF basierten Software zur Erstellung von Prüfstandsdefinitionen. (Eigenverantwortliche Komplettentwicklung)
- Erstellen eines Modules, um die Datenströme der Anlage entgegenzunehmen, aufzubereiten (downsamplen, filtern), an andere Applikationen weiterzureichen und zu speichern.
- Entwicklung einer Kommunikationsschnittstelle, um verschiedene Prozesse über Tcp/Ip (und damit auch rechnerübergreifend) miteinander zu vernetzen (Ähnlich WCF). Über diese Schnittstelle werden auch die Microcontroller angesteuert, die die Regelung der Anlage in Echtzeit übernehmen.
- Einbindung von externen Signalquellen, die Signale über CAN oder über EtherCAT liefern.
- Entwicklung eines Layout-Editors, um Prüfstandsdefinitionen grafisch darzustellen, und dort Systemzustände zu visualisieren.
Verwendete Technologien:
- C#
- C++
- WPF
- Linq
- COM
- CAN / EtherCAT
- Windows Embedded
- Interprozesskommunikation über Tcp/Ip
- Team Foundation Server
- Internationalisierung
- Bugzilla
Während der Festigkeitsprüfung von Bauteilen verändern diese über die Zeit ihre Charakteristik. Die Software dient dazu, solche Veränderungen zu erkennen, und in Form von Kraft-Weg Diagrammen darzustellen. Als Diagramm-Modul kam die SCI Chart Komponente für WPF zum Einsatz.
Verwendete Technologien:
- C#
- WPF, XAML, PRISM
- SCI Chart für WPF
Nachdem festgestellt wurde, dass die ThingWorx Plattform (siehe nächstes Projekt) nicht alle Anforderungen an die Anbindung der Maschinen zufriedenstellend erfüllt, wurde ein anderer Anbieter (Symmedia) evaluiert, und eine analoge Anbindung über dessen Schnittstellen implementiert.
Die Kommunikation mit dieser Plattform erfolgt über mehrere Soap-Schnittstellen.
Verwendete Technologien:
- C#
- Mono
- Soap Kommunikation
- SOA (Service Oriented Architecture)
- Autofac (Dependency injection)
- Symmedia IOT Plattform
- Tunneling VPN, SSH
- Git
- Confluence
Verwendete Technologien:
- C#
- Verzeichnisüberwachung auf Dateiänderungen
- Axoom Developer Framework zur Kommunikation mit der IOT Plattform
Ein vollautomatisiertes Hochregallager soll seinen Zustand in der Cloud widerspiegeln. Dafür müssen ca. 200 verschiedene Parameter an die Plattform übertragen werden. Weiterhin soll es einem Servicetechniker über die Cloud ermöglicht werden, Fernwartung, Diagnose und Software-Updates durchzuführen. Hierzu wurde von mir eine Anbindung der Maschinen an die Iot-Plattform entwickelt. Die Kommunikation erfolgt über eine bidirektionale REST Kommunikationsschnittstelle. Somit wurde sowohl ein REST-Service implementiert, als auch eine REST-Client Schnittstelle. Die ausgetauschten Datenpakete sind Json formatiert.
Verwendete Technologien:
- C#
- Mono
- REST-Full Kommunikation
- Json, Newtonsoft
- SOA (Service Oriented Architecture)
- Autofac (Dependency injection)
- ThingWorx IOT Plattform
- Tunneling VPN, SSH
- Git
- Confluence
Eine Chromatografie-Anlage liefert im Rahmen einer Messung unterschiedliche Datenreihen. Diese Daten werden unter Verwendung eines OPC Servers von den Micro-Controllern der Anlage entgegengenommen, und in einer SQ-Lite Datenbank gespeichert.
Verschiedene Kurvenzüge von Messungen auf einer Messanlage können dann anderen Messreihen in einem XY Diagramm gegenübergestellt werden.
Messreihen werden numerisch differenziert oder integriert, um zum Beispiel die Flächen zwischen verschiedenen Kurvenzügen zu ermitteln.
Aufgrund dieser Datenbasis werden Berechnungen durchgeführt wie:
Peak Integration, Konzentrationsbestimmung, HETP-Bestimmung oder Transitionsanalyse.
Verwendete Technologien:
- C#
- WPF, XAML, PRISM, Controls für WPF
- XML
- SCI Chart Modul für WPF
- OPC Server
- Sq-Lite Datenbank
- Kommunikation über Tcp/Ip mit der C++ Software eines Embedded Systems
Um eine komplexe Software zur Maschinensteuerung zu parametrieren, müssen Einträge in ca. 60 verschiedenen XML Files vorgenommen werden. Die Files unterliegen dabei keinem Schema. Entwickelt wurde eine XML basierte Beschreibungssprache, um die Struktur der verschiedenen Files aufzuschlüsseln, und ein graphischer Editor, der es ermöglicht, die verschiedenen Inhalte über Bedienelemente verschiedenen Typs zu editieren. Hierfür mussten WPF Editoren (Controls) geschaffen werden, um Eingaben verschiedenen Typs zu ermöglichen.
Folgende Bedienelemente wurden angeboten:
- Texteingabe
- numerische Eingabe, (double, int) mit Range-Definition
- Checkbox
- Combobox
- File Selector
- Liste
- Tabelle
Über die Software ist es möglich, ausgewählte Inhalte aller XML-Files auszulesen, zu editieren und die Änderungen zurückzuschreiben.
Verwendete Technologien:
- C#
- WPF, XAML, PRISM
- XML
Es wurde eine klassische Client-Server Anwendung entwickelt, die hereinkommende Mails entgegennimmt, und nach Ansicht durch die Benutzer entsprechend weiterverarbeitet.
Anhänge wurden aus sämtlichen gängigen Image- sowie Office- Formaten in PDFs und in Tiffs gewandelt.
Eine beliebige Anzahl von Clients kann sich an dem Server anmelden, um hereinkommende Mail zu analysieren, und eine Abarbeitungsregel festzulegen.
Entsprechend dieser Regel verarbeitet der Server dann die jeweilige Mail, und protokolliert sie in einer SQL Datenbank.
Verwendete Technologien:
- C#
- WPF, XAML, PRISM
- WCF
- MS Sql Server 2008
- Microsoft Exchange Server
Verwendete Technologien:
- C#
- EtherCAT
- Acontis / Beckhoff / König
Es wurde eine Software entwickelt, um für beliebige PLCs Unit Tests durchführen zu können. Dazu wird die Schnittstellenbeschreibung zur SPS aus AWL Dateien ausgelesen. Es können Sequenzen mit einer beliebigen Anzahl von Steps definiert werden. In jedem Step werden auf der SPS Variablen gesetzt, und es wird überprüft, ob andere Variablen ihren Wert daraufhin wie vorgesehen ändern.
Verwendete Technologien:
- C#
- WPF, XAML, PRISM
- Linq
- OPC Automation
Es wurde eine Software entwickelt, um in einem Regelkreis Soll-Signale mit Ist-Signalen zu vergleichen. Aus den gemessenen Signalströmen wurden über eine in MatLab entwickelte Komponente die Übertragungsfunktion ermittelt und in einem Bode-Diagramm (Amplituden-Phasen Diagramm) dargestellt. Durch Veränderung der PID Anteile des Reglers, kann dieser Regler nun so getunt werden, dass dieser in der Lage ist, über einen hohen Frequenzbereich hinweg das Sollsignal mit entsprechender Güte nachzufahren. Im Rahmen der Aufgabe wurden auch unterschiedliche WPF Controls entwickelt, so zum Beispiel ein Range-Control um Teilbereiche einer Achse darzustellen.
Verwendete Technologien:
- C#
- WPF
- Linq
- COM
- Team Foundation Server
- Internationalisierung
- Bugzilla
- SCI Chart Modul für WPF
Es werden die Datenströme der verschiedenen Kanäle analysiert, und aus ihnen werden Belastungskennziffern für verschiedene Fahrabschnitte ermittelt.
Die Ergebnisse der Messfahrt werden in einer SQ-Lite Datenbank abgelegt.
Die Datenströme werden in einem Diagrammmodul visualisiert.
Über Whisker-Plots können die Ergebnisse der neuesten Messfahrt mit bestehenden Ergebnissen anderer Fahrten verglichen werden. Dadurch ist es möglich, die im Rahmen der Testfahrt aufgezeichneten Ergebnisse sofort auf ihre Plausibilität hin zu untersuchen.
Verwendete Technologien:
- C#
- Linq
- SQ-Lite
- Microsoft Chart Modul
- Microsoft Solver Foundation
Ziel der Aufgabe war die Erstellung einer Software, die mit einem Messwert-Erfassungssystem kommuniziert. Die Software soll den momentan anliegenden Messwert anzeigen, die Sensoren konfigurieren und Messwerte einzelner Sensoren in zugeordneten Messwertdateien abspeichern.
Großen Wert wurde bei dieser Aufgabe auf die Entwicklung einer allgemeingültigen (abstrakten) Schnittstelle gelegt, weil am CAN Bus die unterschiedlichsten Gerätetypen angeschlossen sein können, die alle angesprochen werden sollen.
Verwendete Technologien:
- C#
- WPF
- Linq
- Kommunikation mit CAN Bus über PCan
- Internationalisierung
- Reflection
- Interfaces
- Print Routine
Im Rahmen der Aufgabe wurde eine Applikation als HMI Interface entwickelt, die mit einer Hintergrundanwendung kommuniziert, welche OpenGL Grafiken und diverse weitere für die jeweilige Flugphase relevante Informationen bereitstellt.
Bei diesem Projekt konnte ich meine Erfahrungen in Systementwurf, Systemarchitektur und anspruchsvoller Gui Entwicklung (HMI) voll ausspielen, wurde doch die Aufgabe von mir umfassend und eigenverantwortlich bearbeitet.
Verwendete Technologien:
- C++
- Qt
- Qt Stylesheets
- Qt QDesignerCustomWidgetInterface (Designer Plugins)
- Qt Animationen
- XML
- Open-GL
- Multithreading
- Steuerung der Bedienoberfläche über Gestures (Touch)
- Git/Tortoise
In der Wöhleranalyse werden eine Reihe von gleichen Bauteilen mit unterschiedlicher Last beaufschlagt. Gemessen wird die Anzahl der Lastwechselspiele bis zum Bruch. Aus diesen Messwerten wird über ein statistisch sehr aufwändiges Verfahren eine Aussage über das Ausfallverhalten der Bauteile im Einsatz gewonnen. Einige Schlagworte zur implementierten Mathematik sind:
- Inverse lineare Regression
- Treppenstufenverfahren
- Lineare Schadensakumulation
- Maximum Likelihood Methode
- Kaplan Meier Methode
- Einbinden von Lastkollektiven
- Berechnen von Sicherheitsfaktoren
Die statistischen Ergebnisse werden in Form von 2D Diagrammen und charakteristischen Kennwerten in Wertefeldern dargestellt.
Als Container wird hierzu Excel verwendet.
So können die Testwerte in Excel Tabellen gehalten werden, und sind dynamisch mit der Analyse verknüpft. (Ähnlich wie Excel Diagramme) Statistische Kennwerte werden wieder zu Excel übertragen, und können dort als Ausgangsdaten für weitere Berechnungen verwendet werden.
Zur Berechnung der sehr komplexen statistischen Zusammenhänge wurde die boost library verwendet.
Verwendete Technologien:
- C++
- boost library (Release 1.37.0)
- MFC
- ATL
- XLL (Excel Add-In)
- Named-Pipe (Ähnlich Tcp/Ip)
- prozessübergreifend zugängliche Speicherblöcke
- Microsoft .NET Office Tools ( Einbettung in Excel)
- Excel Automation Interface in (C# und in c++)
Ziel der Aufgabe war die Erstellung einer Software, die mit einem Messwert-Erfassungssystem kommuniziert. Die Software soll den momentan anliegenden Messwert anzeigen, die Sensoren konfigurieren und Messwerte einzelner Sensoren in zugeordneten Messwertdateien abspeichern.
Verwendete Technologien:
- C# .NET Compact Framework für Windows Mobile Devices
- Kommunikation über Buetooth
Entwicklung einer API zur Messwerterfassung
Ziel der Aufgabe war die Erstellung einer C++ Dynamic Link Library, die folgende Aufgaben übernimmt.
- CAN Bus Kommunikation zu verschiedenen Mess-Sensoren herstellen.
- Für die Kommunikation notwendige Parametrierungen dieser Sensoren vornehmen.
- Messungen starten/stoppen und Messwerte in Echtzeit empfangen, puffern und auf Anfrage herausreichen.
Die Schnittstelle ist in ein ATL Objekt eingebettet, damit die Funktionalität auch von C# Projekten aus genutzt werden kann.
Verwendete Technologien:
- CAN Bus Kommunikation
- C++, ATL, STL
- C#
- Multithreading
Software-Assistent für digitale Ladungsverstärker
Ziel der Aufgabe ist die Erstellung einer Software, die mit einem digitalen Ladungsverstärker über TCP/IP kommuniziert. Die Software soll die Konfigurierung des verbundenen Gerätes ermöglichen, den momentan anliegenden Messwert anzeigen (Einzelwert und als Linienschreiber), und die Messwerte mit einer festen Frequenz in Messwert-Dateien abspeichern.
Verwendete Technologien:
- C#, WPF
- TCP/IP, UDP
- Multithreading
Für diesen Kunden war ich insgesamt 7 Jahren in diversen Projekten im Einsatz. Für Entwicklungen im Bereich Medizintechnik (gerade auch für den amerikanischen Markt) gelten strenge Vorgaben der FDA. Sämtliche Projekte, die ich hier durchgeführt habe, unterlagen der Zertifizierung als Medizinprodukte, und sind daher an einen entsprechenden QM Prozess gebunden.
Exemplarisch seien hier die folgenden Projekte gesondert erwähnt:
Mitarbeit an der hauseigenen Automatisierungssoftware zur Definition und Durchführung von komplexen biochemischen Analyseverfahren.
Im Rahmen der Entwicklung konnte ich mein Know-How in der Automatisierungstechnik und auch in der Entwicklung von komplexen GUI Komponenten mit der MFC einbringen.
Verwendete Technologien
- MS Visual C++
- MFC
- XML
3D Simulation der Pipettier-Roboter
Diese wird, wie der echte Roboter, von der Automatisierungssoftware über RS-232 Kommandos angesteuert und reagiert in allen Details identisch. Nur so war es möglich, die Automatisierungssoftware auf effiziente Weise zu entwickeln und zu testen.
Die Simulation wurde ursprünglich unter MCF mittels OpenGL entwickelt, sie wurde aber inzwischen von mir auf C# portiert, wobei als Grafikengine jetzt WPF (Direct-X) verwendet wurde.
Verwendete Technologien
- C#
- WPF
- Direct-X
- C++
- MFC
- RS-232
- TCP/IP
- Named Pipe
- OpenGL
Einbindung von ca. 40 verschiedenen Laborgeräten von Fremdfirmen in die Automatisierungssoftware
Um komplizierte biochemische Analysen durchzuführen, ist es je nach Aufgabenstellung oftmals unumgänglich, Spezialgeräte auch von Fremdfirmen in den Prozessablauf zu integrieren.
Unter anderem wurde von mir die Ansteuerung sämtlicher Analysegeräte zur vollautomatischen Erstellung eines genetischen Fingerabdrucks realisiert. (Inclusive der Ansteuerung der Roboter, die die Proben zu den verschiedenen Arbeitsstationen transportieren)
Hierzu bedurfte es eines vielfältigen Wissens über die unterschiedlichsten Kommunikationsprotokolle wie beispielsweise:
- Direkte Einbettung einer C++ oder C# DLL als Beistellung des Hardwarelieferanten
- TCP/IP
- RS 232 / 485
- USB
- COM, DCOM, COM+, Remoting
Weiterhin wurden von mir Mitarbeiter aus den USA geschult, um selber solche Integrationsaufgaben vornehmen zu können.
Verwendete Technologien
- C#
- Diverse Kommunikationstechnologien
- Zertifizierung der Treiber als sogenannte „General Purpose“ Anwendungen für den medizinischen Sektor
Erstellen einer Rainflow-Engine
Erstellt wird eine Software, die über mehrere Kanäle Rainflow - Matrizen berechnet und die Berechnungsergebnisse in Form von Files auf den Datenträger schreibt.
Verwendete Technologien
- C++
- ATL
Erstellen eines Programmes zur Durchführung von Koordinatentransformationsberechnungen
Gegeben sind die Beschleunigungskurven a1(t), a2(t), a3(t) von drei in einer Ebene liegenden Sensoren.
Berechnet werden die Beschleunigungskurven für n beliebige auf dieser Ebene liegenden Punkten.
Um Schwingungen eines Motors zu simulieren, soll ein im Motorschwerpunkt angebrachtes Koordinatensystem um eine seiner Achsen oszillieren. Diese Schwingung ergibt bezogen auf ein anderes Koordinatensystem, welches an anderer Stelle beliebig im Raum liegt (z.B. an der Motoraufhängung angebracht ist) eine Schwingung um alle 6 Freiheitsgrade. Diese 6 Schwingungsanteile sollen berechnet werden, wenn die Lage der beiden Koordinatensysteme zueinander vorgegeben ist
Verwendete Technologien
- C++
- MFC
Modul zur Berechnung der Stellkurven der Hydraulikzylinder eines Prüfstandes um eine Masse (Fahrzeug) in vorgegebener Weise zu beschleunigen.
Bei der Iteration an einem realen Katapult wird die Soll - Ist Abweichung über einen tatsächlichen Testlauf am Katapult ermittelt. Bei der Iteration am Modell wird das Katapult durch ein mathematisches Modell beschrieben, und der Ist - Wert wird über dieses Modell bestimmt. In beiden Fällen wird aus dem Soll - Wert über ein inverses Modell ein Drive - File berechnet.
Das eigentliche Rechenmodell wird in Matlab (Simulink) definiert. Matlab erzeugt für das Modell C Sourcen, die in das Modul eingebunden werden. Dieses Rechenmodell berücksichtigt alle maschinendynamisch relevanten Faktoren von Katapult und Prüfkörper. Dazu notwendige variable Parameter werden aus einem File ausgelesen und an das Rechenmodell übergeben.
Verwendete Technologien
- C++
- MFC
- Einbindung von MathLab Code
Es wurde von mir für drei Produktlinien der Chipkartenpersonalisierungsmaschinen die komplette PC Programmierung realisiert.
Die entwickelte Software besteht aus 6 verschiedenen Modulen, die auf unterschiedlichen PCs laufen und über TCP/IP kommunizieren und synchronisiert werden müssen.
einige Teilaufgaben der Software sind:
- Mensch - Maschine Interface
- Transport der Karten durch die Maschine
- Datenbereitstellung und Verteilung
- Aufbereiten der Daten für die Laserbeschriftung
- Bildbearbeitung
- Bedrucken
- Chip-Personalisierung
- Magnetstreifen Personalisierung
- Security-Management
- Vision Systeme für OCR Read, Kartenpositionierung und Nachkontrolle
Verwendete Technologien
- C++
- TCP/IP
- ISA Kommunikation
Entwicklung eines Layoutsystems für Chipkartenlayouts
Entwickelt wurde ein CAD-ähnliches Layoutsystem.
Mit diesem System können Kartenlayouts auf komfortable Weise
erstellt, und mit den für den Personalisierungsprozess
notwendigen individuellen Daten verbunden werden.
Verwendete Technologien
- C++
- MFC
- ODBC
In diesem Projekt habe ich Teilmodule für das Multi-Media Terminal "WEB 4000" entwickelt.
einige Teilbereiche der Aufgabe sind:
- Ansteuern der Soundkarte
- Ansteuern einer Karte mit proprietären Hardwarekomponenten über den ISA Bus
- Ansteuern des Paymentdevices als Teil des Billing Systems über RS 232
Das Terminal ist schon in der zweiten Generation fertiggestellt,
die erste Version wurde für die Telekom Deutschland entwickelt.
Auch da war ich für die entsprechenden Module zuständig.
Verwendete Technologien
- C++
- TCP/IP
- ISA Kommunikation
- Kernel Device Driver Entwicklung (DDK)