Profilbild von Wolfgang Petroschka Software-Architekt & -Entwickler: C++, REST, MQTT, IIoT aus Trossingen

Wolfgang Petroschka

teilweise verfügbar

Letztes Update: 17.01.2024

Software-Architekt & -Entwickler: C++, REST, MQTT, IIoT

Firma: Seadex GmbH
Abschluss: Dipl.-Mathematiker (FH)
Stunden-/Tagessatz: anzeigen
Sprachkenntnisse: deutsch (Muttersprache) | englisch (verhandlungssicher) | französisch (Grundkenntnisse)

Dateianlagen

Seadex_GmbH_Imagebroschuere.pdf

Skills

Fachlicher Schwerpunkt
Software-Architekt & -Entwickler, Mathematiker, Schwerpunkt C++ (98/11/14/17/20), Coach/Trainer

Key-Skills
Mathematiker/Spezialist für C++ (98/11/14/17/20). Reiche Erfahrung in der Architektur von Systemen auf der "Grünen Wiese" (u.a. Microservice-Architektur, monolithische Anwendungen) gesammelt. Außerdem ist besonderer Erfahrungsschatz in der Erweiterung, im nachhaltigen Refactoring und in der Restrukturierung von großen, gewachsenen Projekten (Umfang von 20-100+ Personenjahren) vorhanden. In diesem Umfeld ist auch die Fähigkeit zur schnellen Orientierung in "fremdem" Code gereift.

Training/Coaching
Zu folgenden Themen wurden bereits Trainings/Workshops durchgeführt:
  • Visual Studio (2010) für C++-Entwickler
  • Debugging mit Visual Studio
Dozent für C++ an der DHBW Stuttgart, Campus Horb März 2015 - Dezember 2016

Technische Skills

Programmiersprachen
  • C++ (98/11/14/17/20)
  • Java
  • C#
  • C
  • Delphi
  • Python
  • Pascal
  • Basic
  • NC-Programmierung/G-Code
  • PostScript
  • JavaScript
  • Perl
  • PHP
  • Kotlin
  • Linux-Shell (u.a. sh, bash, ash)
Bibliotheken/Frameworks/APIs
  • STL
  • Boost
  • libcurl
  • BlueZ
  • Qt 4, Qt 5
  • MFC
  • VCL
  • WinAPI
  • .NET 3.0, 3.5, 4.0
  • WCF
  • nHibernate
  • OpenGL
  • WPF
  • Grit 2.6
  • Segger emFile, emUSB, embOS
  • LibMPSSE
  • Linux/Unix Programming Interface
  • rapidjson
  • CUDA
  • paho.mqtt.c
  • Mosquitto
  • CivetWeb
  • gstreamer
Dokumentbeschreibungssprachen
  • XML
  • (X)HTML & CSS
  • JSON
Datenbanken
  • MySQL
  • MS SQL Server
  • SQL
  • Access
  • BDE
  • ODBC
  • Sybase (SQL Anywhere)
  • MySQL Workbench
  • SQLite
  • ORM nHibernate
  • OTL 4.0
Protokolle
  • HTTP
  • HTTPS
  • TLS
  • MQTT
  • D-Bus
  • RTSP
  • RTP
  • TCP/IP
  • UDP
  • Bluetooth/Bluetooth LE (BLE)
  • GATT
Methodiken
  • REST
  • Microservices
  • IoT
  • UML2
  • Objektorientierte Analyse (OOA)
  • Objektorientiertes Design (OOD)
  • Objektorientierte Programmierung (OOP)
  • Methoden der agilen Entwicklung (XP, Scrum)
Tools
IDEs
  • Microsoft Visual Studio 6/2003/2005/2008/2010/2012/2013/2015/2017
  • Eclipse & Eclipse CDT
  • IDEA IntelliJ
  • Android Studio
  • Visual Studio Code
  • IAR Embedded Workbench (6.x)
  • Borland C++ Builder 4/5
  • Borland Delphi 5/7
  • Borland C++
  • Turbo Pascal
  • Sourcery CodeBench Lite
Build & Compiler
  • make/nmake
  • SCons
  • CMake
  • MSBuild
  • gcc
  • clang

Revision Control Systeme
  • git
  • Subversion (svn)
  • Visual Source Safe 6.0 (VSS)
  • Perforce
  • PVCS

Unit tests
  • Boost.Test
  • googletest
  • Microsoft UnitTest-Framework
  • NUnit
  • JUnit
Sonstige
  • BugZilla
  • Jira
  • Docker
  • Team Foundation Server
  • Altova XML Spy
  • Visual Paradigm
  • SparxSystems Enterprise Architect
  • Code Smith
  • T4 text templates
  • Confluence
  • valgrind
  • Tera Term
  • putty
  • Postman
  • mqtt-spy
  • curl
  • Maple
  • VLC
  • PhonerLite
Branchen
  • Maschinenbau
  • Sondermaschinenbau
  • Anlagenbau
  • Robotersteuerung
  • Automatisierungstechnik
  • Softwarehersteller
  • Automotive
  • Autobranche
  • Unterhaltungselektronik
  • Kommunikation

Ausbildung
03/1998 – 02/2003
Fachhochschule Stuttgart – Hochschule für Technik
Studium Mathematik
Abschluss als Dipl.-Math. (FH)

Projekthistorie

04/2014 - 12/2020
Embedded Entwicklung für Gebäudekommunikationssysteme
auf Anfrage (Telekommunikation, 500-1000 Mitarbeiter)

Beschreibung:
Für ein Gebäudekommunikationssystem wurde für ein Gateway, das zur Anbindung des proprietären Kommunikationssystems an IPbasierte
Netzwerke dient, ein Software-Modul entwickelt, das für die Verteilung und Überwachung von Kommunikations-, Benutzer- und
Systemanforderungen zuständig ist (z.B. Rufe, Video, Konfiguration).

Im Fokus standen hierbei die Skalierbarkeit (Parallelisierung, Multithreading: bei Einsatz auf leistungsfähigerer Hardware sollte diese
auch genutzt werden können), Stabilität, Testbarkeit und Wartbarkeit der Software.

Hauptaufgaben waren die Vorgabe der Server-Architektur, die Entwicklung von zentralen Komponenten des Servers, die Vorgabe der
Architektur für die plattformunabhängige Client-Bibliothek, die Vorgabe der Teststrategie und der Testbibliothek, das Coaching des
Teams in C++ (insbesondere C++11/C++14) und die Durchführung von Code-Reviews (dabei war insbesondere die Identifizierung von
Potential zur Verbesserung der Code-Qualität und die Vorgabe von Maßnahmen dieses auszuschöpfen wichtig).

Eine große Teilaufgabe lag in der effizienten Verteilung von Videoströmen über Netzwerke. Ebenso wurde die Anbindung an eine MySQLDatenbank
realisiert.

Weiterhin wurde ein Systemtest-Framework aufgesetzt. Dieses führt automatisiert Testfälle durch, indem es das System initialisiert und
dann die Test-Scripts (Python) auf einen oder mehrere Test-Clients verteilt. Weiterhin synchronisiert es die Clients und sammelt die
Testergebnisse ein.

Das System hat eine REST Schnittstelle erhalten. Für diese habe ich den kompletten Software-Stack auf Server- und Client-Seite
entworfen und federführend implementiert (HTTP-Server, Anbindung an C++-Applikation, Ressourcen-Mapping und Anbindung an
Systemkern, Übersetzung von Transportformat in native Datentypen und zurück, HTTP-Requests). Zum Kommunikations-Layer wurde
ebenso ein MQTT-basiertes Message-System hinzugefügt. Die Anbindung wurde mit paho.mqtt.c entwickelt. Auf der Server-Seite wird
Mosquitto verwendet. Die API wird mit OpenAPI 3.0 definiert. Es wurde ein Generator für Java-Client-Code zum Aufruf der API entwickelt.
Der Generator benutzt die API-Spezifikation als Eingabe. Der generierte Code wird unter anderem auch für REST API-Tests verwendet.
Damit basiert die Kommunikationsschicht auf einem modernen IoT-Technologiestack.

Ein weiterer Aufgabenbereich lag in der Vorgabe der Architektur und der Mitentwicklung von diversen Clients (Windows-Client,
Innensprechstelle, Tür).

Die Bereitstellung eines robusten Update-Mechanismus für Embedded Geräte, inklusiver der kompletten Logik, wurde auch
implementiert. Hier war es wichtig, dass die Geräte auch im Fehlerfall funktionsfähig bleiben. Deswegen wurde auch diverse Recovery-
Mechanismen eingebaut (Fallback auf vorherige Firmware, Recovery-Modus).

In einem weiteren Evolutionsschritt wurde die monolithische Systemarchitektur auf eine Microservice-Architektur umgestellt. Diese
Umstellung habe ich koordiniert und architektonisch gestaltet.

Nun folgte die Implementierung der Anbindung an einen cloud-basierten Kommunikationsdienst, der zur Ruf- und Videoverteilung an
Apps über das Internet dient.

Als nächstes folgte die Erstellung der Software für eine neue Innenstation. Die Anbindung der Innenstation, die via WLAN ans lokale Netz angeschlossen wird, an den Cloud-Dienst, wurde ebenso umgesetzt. Die Inbetriebnahme des Geräts erfolgt über Bluetooth Low Energy (Bluetooth LE, BLE) und einer GATT-API. Hierfür wurde zum einen auf Geräteseite BlueZ eingesetzt (D-Bus API, Management API) und zum anderen eine Android Test-App unter Android Studio mit Kotlin entwickelt. Wichtiger Fokus war eine sichere Inbetriebnahme mit zusätzlicher interner Verschlüsselung auf GATT-Ebene.
 

Ein weiteres Projekt war die Entwicklung einer IP-Innenstation, die es in 2 Varianten gibt (mit und ohne Bildschirm). Die Oberflächen wurde mit Qt 5 erstellt. In der Business-Logik war die freikonfigurierbare I/O-Logik ein Highlight. Die Anbindung an den Server erfolgte via DHCP, TFTP, REST und MQTT.

Für die nächste Server Generation wurde ein Prototyp erstellt, in welchem die Microservices in Docker-Containern laufen. Ebenso wurden hierfür RTSP-Server. und -Client-Komponenten entwickelt.

Projektmetrik:
Laufzeit: >5 Jahre
Umfang: >50 Personenjahre

Position: Consultant, Architekt & Entwickler

Teamgröße: 10+

Technologien:

Sprachen
- C++ (C++11, C++14, C++17)
- C
- Java
- Python
- Kotlin
- SQL
- Linux-Shell

Bibliotheken/Frameworks/API
- STL/C++-Standardbibliothek
- googletest
- Linux Programming Interface
- Boost
- rapidjson
- libcurl
- OTL
- paho.mqtt.c
- Mosquitto
- BlueZ
- CivetWeb
- gstreamer

Tools
- Eclipse CDT
- Visual Studio 2015
- IDEA IntelliJ
- MySQL Workbench
- Subversion
- git
- Bitbucket
- valgrind
- Tera Term
- putty
- Confluence
- Jira
- Postman
- mqtt-spy
- PhonerLite
- VLC
- curl
- Docker

Sonstiges
- SCons
- gcc
- gdb (Debugging und Remote Debugging)
- Clang
- PTXdist

Besonderheiten
- Multithreading
- Netzwerk (TCP/IP, UDP, Sockets)
- RTP
- RTSP
- H.264, MJPEG
- REST
- TLS
- HTTP, HTTPS
- MQTT
- Scrum
- IoT/IIoT
- JSON
- Bluetooth/Bluetooth LE, GATT
- Microservices
- D-Bus
- WLAN
- TFTP

Plattform
- Zielplattform: Embedded Linux. Windows (für Client-Software)
- Entwicklungsplattform: Debian Linux, Fedora Linux, Windows (für Client-Software)

07/2012 - 08/2014
Embedded Entwicklung für ein medizintechnisches Gerät
auf Anfrage (Pharma und Medizintechnik, 1000-5000 Mitarbeiter)

Beschreibung:
Auf Anfrage

Projektmetrik:
Laufzeit: 26 Monate
Umfang: 10 Personenjahre

Position: Entwickler & Consultant

Teamgröße: 4


Technologien:

Sprachen
- C
- C++

Bibliotheken/Frameworks/APIs
- Segger emFile, emUSB, embOS, emWin
- STL
- Boost, Boost.Test
- DirectC
- LibMPSSE
- TinyXML

Tools
- IAR Embedded Workbench 6.4, 6.5
- Visual Studio 2010/2013
- Sourcery CodeBench Lite
- Hercules
- Jira
- Subversion
- Doxygen
- Cppcheck
- Uncrustify

Sonstiges
- Segger J-Link

Besonderheiten
- ISO/IEC 62304
- EN/IEC 60601

Plattform
- Zielplattform: ARM 9 und ARM Cortex-M3, teilweise ohne Betriebssystem, teilweise mit embOS
- Entwicklungsplattform: Windows 7, Ubuntu Linux 12.04

01/2011 - 06/2014
Pflege, Wartung & Erweiterung eines Programmiersystems für Werkzeugmaschinen (Stanzen & Laser), Mentoring & Coaching von Nachwuchsentwicklern
auf Anfrage (Industrie und Maschinenbau, >10.000 Mitarbeiter)

Beschreibung:
An einem grafischen Programmiersystem für Stanz- und Lasermaschinen mussten laufend Wartungsarbeiten und Weiterentwicklung
betrieben werden. Dabei lag mein Schwerpunkt fachlich im Bereich Werkzeuge und Technologien, technisch im Bereich Algorithmen,
Datenbanken und Oberflächen.

Eine große Aufgabe war die Konsolidierung der Anbindung eines Systems mittels WCF, eine andere die Entwicklung und
Implementierung eines komplexen Algorithmus zum Einsatz von Rollenwerkzeugen. Weiterhin war ich für diverse Themen im Gebiet
Werkzeuge und NC-Code-Generierung verantwortlich.

Ebenso habe ich andere Entwickler laufend bei Refactoring- und Debugging-Aufgaben unterstützt.
Außerdem habe ich bei der Einarbeitung und Förderung junger Entwickler (zumeist Universitäts-Absolventen im Fach Informatik) Wissen
und Praxiserfahrung übertragen und saubere Vorgehensweisen und Anti-Patterns an einem realen System erläutert. Dabei habe ich auch
meinen tiefen Kenntnisse im Bereich C++ weitergegeben und für eine steile Lernkurve bei den Entwicklern gesorgt.
Als Vorgehensmodell in der Entwicklung wurde hier Scrum eingesetzt.

Projektmetrik:
Laufzeit: 42 Monate
Umfang: > 100 Personenjahre

Position: Entwickler & Consultant

Teamgröße: 15

Technologien:

Sprachen:
- C++
- C#

Bibliotheken/Frameworks/APIs:
- STL
- Boost
- Grit 2.6
- Qt
- ODBC
- .Net 4.0
- WCF

Datenbanken:
- Microsoft SQL Server 2005 & 2008
- Microsoft Access

Tools:
- Visual Studio 2005 & 2010
- Perforce
- PVCS
- SparxSystems Enterprise Architect
- make
- Jira
- Code Smith

Sonstiges:
- NC-Programmierung/-Generierung, G-Code
- make
- cygwin
- yacc/lex

Besonderheiten:
- sehr großes, über 2 Jahrzehnte gewachsenes System
- Mischung von unmanaged und managed Code (C++, managed C++, C#)
- Verwendung/Entwicklung von Asynchronous State Machines (ASM)

Plattform:
- Windows XP, Vista, 7

11/2010 - 12/2010
Produktentwicklung Archiv-Recovery-Tool
(Industrie und Maschinenbau)

Beschreibung:

Software-Tool mit den Features Analyse, Recovery und Extrahierung für ein properitäres Archivierungssystem. Es ermöglicht Batch-
Prüfung und Recovery der Archivstruktur und eine Detailprüfung archivierter Daten.
Zu den Aufgaben gehörte die Analyse des Archivierungsformates, Abschätzung rettbarer Zustände (auch für teilweise
Wiederherstellung) und die Entwicklung einer intuitiven Oberfläche zur leichten Handhabung von vielen Archiven und deren Inhalt.
Dabei wurde u.a. ein Checksummen-Algorithmus mittels statistischer Methoden analysiert und implementiert. Weiterhin wurde für das
Tool eine Testumgebung für automatische Extraktionstests erstellt.

Projektmetrik:
Laufzeit: 1,5 Monate
Umfang: 6 Personenmonate

Position: Entwickler & Architekt

Teamgröße: 2

Technologien:

Sprachen:
- C# (Endprodukt)
- C++ (für die ersten Prototypen)
- PHP (für Analyse Extraktionslogs)

Bibliotheken:
- .Net 4.0
- WPF

Tools:
- Visual Studio 2010
- Subversion
- HxD Hexeditor
- WinMerge

Besonderheiten:
- Multi-Threading in Extraktions- und Analyselogik sowie in GUI

Plattform:
- Windows 7

10/2010 - 11/2010
Erstellung einer Beobachtungs- und Logging-Applikation für eine Produktionsanlage
auf Anfrage (Industrie und Maschinenbau, 250-500 Mitarbeiter)

Beschreibung:
Konsolidierung der Überwachung einer Produktionsanlage (z.B. Betriebsmittel- und Rohstoffverbrauch, Produktionskennzahlen), die
bisher durch diverse unabhängige Software-Pakete durchgeführt wurde. Ersetzt wurde die bisher genutzte Software durch eine Lösung
mit einer Client-Server-Architektur.
Folgende Aufgaben werden durch die neue Software abgedeckt:
* Erfassung von Parametern und Kennzahlen von Siemens S7 PLCs
* Betriebsdatenerfassung (BDE)-Rückmeldung an PPS-System
* Logging in MS SQL Server
* Visualisierung der erfassten Daten

Projektmetrik:
Laufzeit: 1,5 Monate
Umfang: 4 Personenmonate

Position: Architekt & Entwickler

Teamgröße: 4

Technologien:

Sprachen:
- C#

Bibliotheken/Frameworks/APIs:
- .Net 4.0
- WPF
- Silverlight
- WCF
- ADO.NET
- ACCON-AGLink
- log4net

Datenbanken:
- Microsoft SQL Server 2008 Express
- SQL Anywhere 9

Tools:
- Visual Studio 2010
- Subversion, TortoiseSvn

Sonstiges:
- XML (Konfiguration des Servers)
- EVOlite PPS-System

Besonderheiten:
- Analyse der aktuellen Lösung und Entwicklung einer Migrationsstrategie
- SOA
- Multithreading
- PLC/SPS

Plattform:
- Windows 7

08/2010 - 08/2010
Erstellung eines Prototyps für die Kernfunktionalität eines Prozessüberwachungs- und -steuerungs-Frameworks inkl. Hardware- Anbindung und Demo-UI
auf Anfrage (Industrie und Maschinenbau, 10-50 Mitarbeiter)

Beschreibung:
Ziel des Frameworks ist die Bereitstellung einer Client-Server-Architektur, die es ermöglicht, eine beliebige Anzahl von Systemen (z.B.
PLC, SAP-System, Datenbank, Anwendung, ...) über eine einheitliche Schnittstelle zu überwachen, zu steuern und zu vernetzen. Dabei ist
eine Hohe Skalierbarkeit bezüglich der Menge der gesteuerten Systeme essentiell.
Für diese Aufgabenstellung musste eine grundlegende Architektur entworfen werden und ein Proof of concept-Prototyp erstellt werden,
der einen vertikalen Durchstich durch das System darstellt (vom UI bis zur Hardware).

Projektmetrik:
Laufzeit: 1 Monat
Umfang: 2 Personenmonate

Position: Architekt & Entwickler

Teamgröße: 2

Technologien:

Sprachen:
- C#

Bibliotheken/Frameworks/APIs:
- .Net 4.0
- WPF
- ACCON-AGLink

Datenbanken:
- Microsoft SQL Server 2008 Express

Tools:
- Visual Studio 2010

Besonderheiten:
- Analyse der Anforderung
- Analyse der abzulösenden Software
- Entwurf der Architektur
- Multithreading
- Überwachung und Steuerung u.a. von Siemens S7

Plattform:
- Windows 7

10/2009 - 07/2010
Neuentwicklung, Organisations-, Facility- und Zutritts-Management
auf Anfrage (Internet und Informationstechnologie, 10-50 Mitarbeiter)

Beschreibung:
Entwicklung einer Web-basierten Lösung mit SOA. Die Kommunikationsschicht wurde mit WCF umgesetzt. Implementiert wurde mit C#
unter Visual Studio 2008, später unter Visual Studio 2010. Für das User Interface wurden einerseits HTML, CSS und Javascript sowie
andererseits Silverlight eingesetzt. Als Webserver kam IIS 6 und 7 zum Einsatz. Server Betriebssysteme waren Windows 2003 und
Windows 2008. Konsequentes Unit-Testing mit dem Microsoft UnitTest-Framework.

Position: Architekt/Projekt-Manager/Entwickler
Meine primäre Aufgabe bestand in der Analyse (OOA) der Anforderungen und dem Objektorientierten Design (OOD) der Logik-Schicht.
Ebenso war ich für das Projekt-Management verantwortlich und habe hier ein agiles Entwicklungsmodell, das an XP und Scrum angelehnt
war, eingeführt. Weiterhin war ich für die Umsetzung von Teilen der Service-Logik in C#, Bereitstellung des WCF-Webservice und der
Anbindung der Service Logik an einen Microsoft SQL Server 2005 und 2008 mittels nHibernate zuständig. Zusätzlich habe ich diverse
Imports implementiert.

Projektmetrik:
Laufzeit: 1 Jahr
Umfang: 5 Personenjahre

Teamgröße: 6

Technologien:

Sprachen:
- C#

Bibliotheken/Frameworks/APIs:
- .NET 3.5, .NET 4.0

Kommunikation:
- SOAP
- WCF

Datenbanken:
- MS SQL Server 2008
- nHibernate
- SQL

Tools:
- Visual Studio 2008 & 2010
- Subversion
- TFS 2010
- Visual Paradigm

Sonstiges:
- XML
- IIS 6, 7
- Internet Explorer 6, 7
- WWF
- KWD
- Enterprise Library, Unity
- T4
- Unity

Besonderheiten:
- SOA
- Dependency injection
- Code-Generierung (C#)
- Unit-Tests

Plattform:
Windows Vista, Windows 7, Windows Server 2003, Windows Server 2008

01/2007 - 09/2009
Neuentwicklung Anlagensteuerungs-Framework
auf Anfrage (Industrie und Maschinenbau, 50-250 Mitarbeiter)

Beschreibung:
Die Kernfunktionaliät der Software ist die Erzeugung von NC-Code für 5- und 6-achsige CNC-Maschinen (mit Siemens Sinumerik 840D
und Siemens S7). Auf der Bedienerseite sind die Anlagen mit einem Industrie-PC (PCU 50) mit Windows Embedded-Betriebssystem
ausgestattet. Anwendung findet die Software ebenso auf externen Arbeitsplatz-PCs zur Arbeitsvorbereitung und zur Simulation.
An die Software werden höchste Ansprüche an Stabilität, Usability und Genauigkeit gestellt.

Weitere Details siehe „Weiterentwicklung und Pflege Anlagensteuerungs-Framework“.

Position: Projektleiter/Architekt/Entwickler
Meine Hauptaufgabe bestand in der Vorgabe der Anforderungen sowie deren Umsetzung in Analyse (OOA) und Design (OOD). Ebenso
war ich für das Projekt-Management zuständig.
Zusätzlich habe ich bei der Implementierung von Kernkomponenten mit C++ mitentwickelt. Hierbei handelte es sich hauptsächlich um
Algorithmen im mathematisch/kinematischen/simulatorischen Bereich. Ebenso habe ich das Grundkonzept für ein dynamisches, aus dem
Modell generierten GUI unter Anwendung von Qt4 erarbeitet.

Projektmetrik:
Laufzeit: 3 Jahre
Umfang: 10 Personenjahre

Teamgröße: 5

Technologien:

Sprachen:
- C++
- PHP
- G-Code

Bibliotheken/Frameworks/APIs:
- Boost
- STL
- Qt 4
- SQLApi
- dxflib
- SINUMERIK HMI programming package

Kommunikation:
- COM
- OPC
- DDE
- Profibus

Datenbanken:
- MySQL
- PostgreSQL
- SQL

Tools:
- Visual Studio 2005
- Subversion
- yWorks yEd

Sonstiges:
- XML
- UML
- Excel

Besonderheiten:
- frei programmierbarer Bearbeitungsablauf- Multithreading
- State machines
- Persistenz
- Adynerisches GUI
- Code-Generierung (C++ & G-Code)
- Mathematik (Bewegungsalgorithmen, Kinematik)
- Scheduling
- Plattformübergreifende Prozesskontrolle
- Naked objects-Pattern
- Multithreading

Plattform:
- Windows XP (Embedded) auf PCU50
- Sinumerik 840D CNC Power/Solution Line
- Simatik SPS

03/2003 - 09/2009
Weiterentwicklung und Pflege Anlagensteuerungs-Framework
auf Anfrage (Industrie und Maschinenbau, 50-250 Mitarbeiter)

Beschreibung:
Die Kernfunktionaliät der Software ist die Erzeugung von NC-Code für die 5- und 6-achsigen CNC-Schleifmaschinen aus eigener
Produktion. Dabei wird auf eine Drei-Säulen-Strategie gesetzt: Die Produkte, die geschliffen werden können, kommen aus den drei
Bereichen Werkzeuge (z.B. Stufenbohrer, Fräser, Abwälzfräser, Schnecken), Medizinaltechnik (z.B. Knieimplantate, Hüftimplantate,
Raspeln) und Sonderanwendungen (z.B. Automobil, Luftfahrt, Abrichtschleifscheiben).

An die Software werden höchste Ansprüche an Stabilität, Usability und Genauigkeit gestellt. Oft werden vom Kunden Toleranzen im
Mikrometerbereich gefordert. Plattform für die Anwendungen sind Steuerungen aus dem Hause Siemens, die auf Bedienerseite mit
einem Industrie-PC mit Windows-Betriebssystem ausgestattet sind. Anwendung findet die Software ebenso auf externen Arbeitsplatz-PCs
zur Arbeitsvorbereitung und zur Simulation.

Um das Kernprodukt zur NC-Code-Erzeugung mit ca. 200 Plug-Ins existiert ein breites Umfeld von Tools. Darunter sind unter anderem
eine Datenbankanwendung zur Verwaltung der eingesetzten Werkzeuge (z.B. Schleifscheiben und Fräser), ein 2,5D-CAD-System, eine
2D-Grafik für die Nutprogrammierung, das Kinematikdefinitionsmodul, ein NC-Code-Editor und diverse Konfigurationsprogramme
vorhanden.

Ein weiteres Highlight der Software-Palette ist die eigenentwickelte 3D-Simulation, mit welcher die Kinematik der Maschine, der Abtrag
am Werkstück sowie Kollisionsproblematiken betrachtet werden können.
Ebenso wird die Software zur Steuerung von Automatisierungslösungen für den mannlosen Betrieb der Anlagen entwickelt.
Automatisierungen umfassen z.B. Lösungen mit Robotern, Stößel-Handlings oder Kettenmagazinen.
Großer Wert wird auch auf die Automatisierung der Software-Entwicklung selbst gelegt.
Es existiert eine breitgefächerte Tool-Chain zur Qualitätssicherung, zur Erstellung der Software und von Installern.
Ältere Software-Versionen wurden mit Object Pascal mit der Delphi-IDE erstellt. Die neue Generation wird mit C++ mit Visual Studio
entwickelt. Ein besonderes Augenmerk wurde diesmal auch auf die Portabilität gelegt, um auch Steuerungen mit einem Nicht-Windows-
Betriebssystem (z.B. Linux) bedienen zu können.

Besonders an der neuen Software sind die Definition der Software-Module mit einer Meta-Sprache aus der C++-Code generiert wird.
Datenspeicherung, GUI und andere Konzepte entstehen automatisch aus der Modul-Definition, es ist keine manuelle Programmierung
von Rahmen-Code nötig.

Projektmetrik:
Laufzeit: 10+ Jahre
Umfang: 30+ Personenjahre

Position: Projektleiter/Architekt/Entwickler

Teamgröße: ca. 10

Technologien:

Sprachen:
- Object Pascal
- G-Code

Bibliotheken/Frameworks/APIs:
- VCL
- SINUMERIK HMI programming package

Kommunikation:
- DDE
- COM
- OPC

Datenbanken:
- Access
- SQL
- ADO
- Jet

Tools:
- Delphi 5
- Delphi 7
- Visual SourceSafe 6.0

Sonstiges:
- Excel (Import von Daten via COM-Schnittstelle)

Besonderheiten:
- Refactoring: Umstrukturierung Plug-in-System, Extrahieren, reimplementieren und reintegrieren der Kommunikationsschnittstelle,
Konsolidierung, Performance-Optimierung
- Code-Generierung (G-Code)
- Mathematik (Bewegungsalgorithmen, Kinematik)
- Plug-in basiertes Framework

Plattform:
- Windows NT 4.0 (Embedded), Windows XP (Embedded) auf PCU50
- Sinumerik 840D CNC Power Line
- Simatik SPS

03/2007 - 09/2007
Neuentwicklung einer konfigurierbaren Scheduling-Software zur Zuführungssteuerung und Produktionsanlagenbestückung
auf Anfrage (Industrie und Maschinenbau, 50-250 Mitarbeiter)

Beschreibung:
Mit dieser Software wird in einem GUI grafisch die Belegung von unterschiedlichen Paletten mit verschiedenen Werkstücken und den
entsprechenden Bearbeitungsprogrammen konfiguriert.

Von den Paletten werden die Werkstücke via Roboter in die Schleifmaschine geladen und nach der Bearbeitung wieder entladen. Die
Software kommuniziert mit dem Fanuc Roboter und der Siemens Sinumerik 840D und steuert damit den vollautomatischen Beladungsund
Fertigungsprozess. Dabei wird erreicht, dass der Großteil der Automatisierungsvorgänge hauptzeitparallel abläuft.

Zusätzlich kann in der Software die Abarbeitungsreihenfolge definiert werden und auch Besonderheiten wie das Weitertakten von
Werkstücken in Zusammenarbeit von Maschine und Roboter, wenn die Teile nicht in einer Aufspannung bearbeitet werden können,
werden abgebildet.

Die Software gibt es in einer Ausführung für einkanalige und zweikanalige NCs. Die zweikanalige Variante ist in der Lage, noch mehr
Vorgänge zu parallelisieren. Hier läuft das steuernde System auch multithreaded, um die parallelen Vorgänge optimal bedienen zu
können.

Die Steuerungslogik wird durch State Machines abgebildet.

Projektmetrik:
Laufzeit: 0,5 Jahre
Umfang: 1 Personenjahr

Position: Architekt/Entwickler

Teamgröße: 2

Technologien:

Sprachen:
- Object Pascal
- G-Code

Bibliotheken/Frameworks/APIs:
- VCL
- SINUMERIK HMI programming package

Kommunikation:
- Profibus
- COM
- OPC

Datenbanken:
- Access
- ADO
- SQL

Tools:
- Delphi 7
- Visual SourceSafe 6.0

Besonderheiten:
- Fanuc Roboter
- State Machine
- 1- und mehrkanalige Variante
- Multithreading

Plattform:
- Windows XP (Embedded) auf PCU50
- Sinumerik 840D CNC Power/Solution Line
- Simatik SPS

10/2002 - 02/2003
Integration einer Bluetooth-Schnittstelle
auf Anfrage (Automobil und Fahrzeugbau, >10.000 Mitarbeiter)

Beschreibung:
Voranalyse und Start einer prototypischen Entwicklung für die Integration einer Bluetooth-Schnittstelle in ein KFZ-Kombiinstrument. Über
die Bluetooth-Schnittstelle sollte ein Mobiltelefon angebunden werden, um Informationen aus dem Internet zu laden.

Projektmetrik:
Laufzeit: 5 Monate
Umfang: 5 Personenmonate

Position: Entwickler

Teamgröße: 1

Technologien:

Sprachen:
- C

Bibliotheken/Frameworks/APIs:
- WinAPI

Tools:
- Visual C++ 6
- Greenhill Compiler

Besonderheiten:
- Windows Demo-Client

Plattform:
- Ercosek (32-Bit Micro-Controller)
- Windows 2000/XP (Demo-Client)

07/2000 - 01/2003
Mifare-Kartenanwendung
auf Anfrage (Internet und Informationstechnologie, 50-250 Mitarbeiter)

Beschreibung:
Die Anwendung dient dazu, Studentenausweise auszulesen und zu beschreiben. Dazu gehört ein mit VCL entwickeltes GUI, die
Datenbankanbindung via BDE und die Anbindung der Hardware über RS232. Teil der Aufgabenstellung war die Entwicklung eines
Abstraktions-Layers für das Protokoll der Hardware, um die Kommunikation mit dem Leser zu kapseln.

Projektmetrik:
Laufzeit: 1,5 Jahre
Umfang: 4 Personenmonate

Position: Entwickler

Teamgröße: 1

Technologien:

Sprachen:
- C++

Bibliotheken/Frameworks/APIs:
- VCL
- STL

Datenbanken:
- BDE

Tools:
- Borland C++ Builder 5

Sonstiges:
- RS232

Besonderheiten:
- Hardware-Anbindung
- Abstraktions-Layer

Plattform:
- Windows 95/98/NT4.0

05/2001 - 06/2001
Ansteuerung eins Mobiltelefons über RS232
auf Anfrage (Automobil und Fahrzeugbau, 5000-10.000 Mitarbeiter)

Beschreibung:
Ansteuerung eines Siemens-Mobiltelefons, um aus einer Windows-Anwendung wählen zu können. Zusätzlich stehen andere über ATBefehle
zur Verfügung stehende Funktionen wie z.B. das Auslesen des Telefonbuchs zur Auswahl.
Dazu wurde das Telefon über eine RS232-Schnittstelle an das System angebunden und über AT-Befehle gesteuert.

Projektmetrik:
Laufzeit: 2 Monate
Umfang: 2 Personenmonate

Position: Entwickler

Teamgröße: 1

Technologien:

Sprachen:
- C

Bibliotheken/Frameworks/APIs:
- WinAPI

Tools:
- Visual C++ 6

Sonstiges:
- AT-Befehle

Plattform:
- Windows NT 4.0

05/2001 - 05/2001
Code-Review
auf Anfrage (Pharma und Medizintechnik)

Beschreibung:
Review von Defibrilator-Software. Die bisher nur auf dem deutschen Markt vertriebenen Geräte sollten auch auf dem amerikanischen
Markt eingeführt werden. Daher musste die Software gewisse QS- und Zertifizierungsmaßnahmen durchlaufen. Dazu gehörte ein Code-
Review durch unabhängige Experten. Dieses habe ich zusammen mit eine Kollegin durchgeführt.

Projektmetrik:
Laufzeit: 2 Wochen
Umfang: 1 Personenmonat

Position: Reviewer

Teamgröße: 2

Technologien:

Sprachen:
- C

Sonstiges:
- PC-Lint

04/2001 - 05/2001
Signalanalyse-Tool
auf Anfrage (Konsumgüter und Handel, >10.000 Mitarbeiter)

Beschreibung:
Für die Halbleiterproduktion wurde ein Tool benötigt, das eine Signalanalyse mit Hilfe einer FFT (Fast Fourier Transform) durchführte.
Dazu wurde von einer Kollegin ein GUI mit C und Tcl/Tk entwickelt. Ich habe hierzu die darunterliegenden Algorithmen implementiert:
- Portierung von bestehendem C-Code zur FFT von einem Solaris-System
- Druckausgabe der Kurven mit PostScript
- Histogramm-Analyse

Projektmetrik:
Laufzeit: 6 Monate
Umfang: 8 Personenmonate

Position: Entwickler

Teamgröße: 2

Technologien:

Sprachen:
- C++
- PostScript

Tools:
- Visual C++ 6
- Borland Builder 5
- gcc

Besonderheiten:
- FFT (Schnelle Fourier-Transformation, Fast Fourier Transform)
- Multiplattform-Entwicklung

Plattform:
- Windows NT 4.0
- Linux
- Solaris

03/2001 - 03/2001
Grafische Debugging-Tools für TV-Geräte
auf Anfrage (Konsumgüter und Handel, >10.000 Mitarbeiter)

Beschreibung:
Für ein neu entwickeltes TV-Geräte wurden folgende Debugging-Tools benötigt:
1. Speicherfragmentierungs- und Memory-Leak-Analyse: Anzeige des Hauptspeichers als Grafik, die bestimmte Speicherblöcke als
Rechtecke darstellt. Jedes Subsystem bekommt eine eigene Farbe zugewiesen. So kann anhand des „Kachelmusters“ untersucht
werden, welche Subsysteme den Speicher fragmentieren und welche Memory-Leaks verursachen.

2. Analyse des internen Message-Systems: Alle internen Messages des Systems werden in Binärdateien gedumpt. Diese Dateien können
eingelesen werden und als sortier- und filterbare Tabellen dargestellt werden (Quelle, Ziel, Nachrichtentyp, Zeitstempel, usw.).
Dabei muss auch eine Big-endian Little-endian Konvertierung durchgeführt werden.

Projektmetrik:
Laufzeit: 1 Monat
Umfang: 1 Personenmonat

Position: Entwickler

Teamgröße: 1

Technologien:

Sprachen:
- C++

Bibliotheken/Frameworks/APIs:
- VCL
- STL

Tools:
- Borland Builder 4

Besonderheiten:
- Big-Endian-/Little-Endian-Problematiken

Plattform:
- Windows NT 4.0

09/2000 - 02/2001
C++-Code-Analyse-Tool
auf Anfrage (Internet und Informationstechnologie, < 10 Mitarbeiter)

Beschreibung:
Tool, das auf Grund von Source-Code-Analyse unter anderem diese Features bietet:
- im Projekt enthaltene Source-Dateien
- Aufruf-Graphen (inkl. Rekursionserkennung)
- Klassenhierarchien (inkl. Member-Funktionen)
Dabei können makefiles, Visual C++ 6-Projekte und Borland C++ Builder 4/5-Projekte als Startpunkt gewählt werden.

Projektmetrik:
Laufzeit: 0,5 Jahre
Umfang: 0,5 Personenjahre

Position: Entwickler

Teamgröße: 1

Technologien:

Sprachen:
- C++

Bibliotheken/Frameworks/APIs:
- MFC
- STL

Tools:
- Visual C++ 6

Plattform:
- Window NT 4.0, Windows 2000

Reisebereitschaft

Verfügbar in den Ländern Deutschland und Schweiz
Vor-Ort Einsätze in D7, ansonsten in D nur mit hohem Remote-Anteil

verfügbar ab Januar 2021
Profilbild von Wolfgang Petroschka Software-Architekt & -Entwickler: C++, REST, MQTT, IIoT aus Trossingen Software-Architekt & -Entwickler: C++, REST, MQTT, IIoT
Registrieren