Schlagwörter
Skills
Softwareentwicklung (Fullstack) Schwerpunkt:
- C#, .Net /.Net Core, C++/CLI, Visual Studio
- Delphi
Der Schwerpunkt meiner Arbeit hat sich in den letzten 15 – 20 Jahren hin zu Anwendungen im Bereich der Videotechnik, hardwarenah, Echtzeitverarbeitung und damit Multithreadding/Multiprocessing und Interprozesskommunikation (IPC) entwickelt. Durch die zumeist 24/7 Laufzeit dieser Anwendungen, ist die Erstellung von Windows Diensten/Services dabei obligatorisch.
Bei diesen Projekten gehörte immer wieder die Kommunikation mit Hardware und Schnittstellen aus anderen Bereichen zu meinen Aufgaben. Wie z.B. per RS232/RS485 Schnittstelle, OPC, TCP/UDP Schnittstellen, um Daten oder Befehle zu empfangen oder zu senden. Vom einfachen I/O-Modul über Kommunikation mit Leitsystemen/SCADA-Systemen bis hin zu komplexen asynchronen Kommunikationsprotokollen, z.B. mit einem Zutrittskontrollsystem oder einer Gefahren-/Störmeldeanlage.
Zudem habe ich Erfahrung im Bereich der Softwareentwicklung mit:
- C++
- SQL
- COBOL
- PHP
- JavaScript
- HTML
Technologien, Protokolle, Tools, Bibliotheken, SDKs, etc.:
- Streaming Media
- MS Windows Presentation Foundation (WPF)
- MS Windows Communication Foundation (WCF)
- Wix Toolset (incl. customized Bootstrapper)
- TCP, UDP, RTP, RTSP, RTCP u.a.
- OPC DA / OPC UA
- H.263, H.264, H.265
- ONVIF
- FFMPEG
- Boost Library
- RS-232 / RS-485
- MS SQL Management Studio
- Unit Testing
- SKDs von Milestone (MIP SDK), Genetec, Axis, Bosch, u.a.
- Bosch RCP+, Axis VAPIX und Protokolle andere Hersteller
Konzepte für, und Planung von Projekten, kann ich sowohl anforderungsorientiert autonom als auch im Team mit Mitarbeitern von Auftraggebern und Endkunden durchführen. Ich verstehe hierbei selbstverständlich die „Sprache“ der Informatiker, also auch weitgehend der Elektrotechniker und durch meine frühere Berufsausbildung zum Datenverarbeitungskaufmann (Programmierung/Organisation) auch von Verwaltung/Kaufleuten. Ich habe in der Vergangenheit mit Elektro-Technikern/Ingenieuren zusammengearbeitet und verfüge aufgrund eigener Interessen über elektrotechnisches Wissen und kann bis zu einem gewissen Grad elektrotechnische Pläne lesen. Testumgebungen kann ich somit in der Regel selbst einrichten und anschließen. Die den Normen und Vorschiften entsprechende Installation/Montage beim Kunden oder für Vorführungen, überlasse ich grundsätzlich den elektrotechnischen Fachleuten.
Bei Videoprojekten, sowohl im Security- als auch industriellen Bereich, hatte ich bereits mit dem Betriebsrat von Kunden bei Konzept/Planung als auch bei der Abnahme zu tun. Ich sehe mich hierbei zumeist als neutrale, ausgleichende Person im Prozess, ohne dabei das Projektziel des Kunden aus den Augen zu verlieren.
Durch ein Projekt auf einer Megayacht, bin ich zudem auch mit der Arbeit auf/für Schiffe vertraut. Zuletzt, bei einem Upgrade 2019, habe ich mehrere Wochen in Singapur gearbeitet, sowohl an der Marina liegend, in der Werft im Trockendock, als auch mit täglichen pendeln auf Reede.
Projekthistorie
Seit 2011 führe ich Aktualisierungen, Softwarepflege, Bugfixing und Weiterentwicklung an einem Videomanagementsystem für ein australisches Unternehmen durch.
Der Programmcode aus C# und C++ mit Visual Studio wurde von einem anderen Softwareentwickler übernommen. Dieser Stand 2011 rund eine Woche zur Verfügung. Seither ist aus dem ursprünglichen Projektteam niemand mehr verfügbar. Mit zwei Softwareentwicklern haben wir uns in das Projekt mit über 80 Projektdateien (Anwendungen, Dienste, DLLs), in C++ (vorrangig im Backend) und C# (Frontend) eingearbeitet. Anfangs standen neben Einbindung neuer Kamera- und Encodermodelle vor allem das Bugfixing und Verbesserung der Stabilität im Vordergrund. Später kam auch das Hinzufügen neuer Funktionen und Einbinden neuer Gerätehersteller (Treiberentwicklung) hinzu.
Meine Arbeiten hierbei fallen jeweils nach Anforderung/Auftrag an.
Technologien: C#, C++, .Net Framework, H.263, H.264, H.265, RTSP, RTP, RTCP, TCP, UDP, Bosch RCP+, Axis VAPIX, ONVIF, DirectX, Visual Studio, Wix Toolset, MS SQL Server
Projektdauer durch Corona bedingt und da bestimmte Tests nur bei mehrtägigen Produktionsstillstandzeiten durchgeführt werden konnten.
Technologie: C#, .Net-Framework, C++/CLI, PRTG, Genetec Security Center SDK
Ein Projekt aus den Jahren 2008/2009, dass seither unverändert im 24/7-Betrieb lief, modernisiert.
Aus den Projektdaten von 2008/2009 und dem bis dahin einzigen nötigen Wartungseinsatz 2017, zusammen mit dem elektrotechnischen Projektpartner ein Konzept entworfen. Die Aufgabenverteilung sah vor, dass Softwareanpassungen und IT-Arbeiten, wie Servereinrichtung, Softwareinstallationen und -einrichtung, Datenübernahmen, Softwareupgrades, etc. von mir durchgeführt werden und Logistik, elektrotechnische Arbeiten wie Montagen, Kabelarbeiten, Hardwareupgrades von meinem Projektpartner.
- Austausch der analogen, an Encoder angeschlossenen, PTZ Außenkameras durch IP PTZ Kameras. Diese Kameras werden auch zum Manövrieren benötigt.
- Anpassung des 2008 in Delphi entwickelten Videotreibers (wird als DLL von Visualisierung geladen) für die Visualisierung und des 2008 im Projekt entwickelten ManoeuvringProgramms. Insbesondere PTZ-Steuerung von RS485 auf IP umgestellt, so wie Anpassungen RCP+ und BiCOM, z.B. für das Homeing der Kameras zur korrekten Blickwinkeldarstellung in Relation zum Schiff. Aktualisierung Bosch Video SKD Stand 2008 auf Stand 2019.
- Austausch Server und Workstations (Windows 2003 Server / XP > Windows 2016 Server / 10)
- Softwareanpassungen zur Kompatibilität mit Windows 2016 Server und Windows 10
- Upgrade Zutrittskontrollsystem von Software/Versionstand 2008 auf 2019 in mehreren Schritten, unter Berücksichtigung der komplexen, intern konfigurierten, Funktionalität von Betriebsmodi, Türen, I/O-Modulen, etc..
- Anpassung des 2008 entwickelten Treibers (wird von Visualisierung als DLL geladen) für das Socket Interface vom Zutrittskontrollsystem.
- Anpassung des 2008 entwickelten NMEA-Treibers für die Visualisierung (wird von dieser als DLL geladen), an eine zum gleichen Zeitpunkt ausgetauschte, neue Brandmeldeanlage.
- Softwareupgrade/Hardwareumstellung Videomanagementsystem/-recorder
- Funktionale Verbesserungen
- Dokumentation
- Abnahme mit Chief Engineer und Eignervertretung.
- Vorbereitung soweit möglich in Deutschland. Zwei Einsätze auf der Megayacht in Singapur (2 und 3 Wochen) an Marina liegend, im Trockendock, auf Reede mit täglichem pendeln per Wassertaxi.
Technologien: Delphi, BOSCH RCP+, BOSCH BiCom, BOSCH VideoSDK, IP-Kameras, RS485, NMEA, PVIS Visualisierung (Schille), NEDAP AEOS, AEOS Socket Interface, Windows 10, Windows 2016 Server, MS SQL Server
Auf Basis einer von mir durchgeführten Machbarkeitsstudie von 2016, das Programm zu Livedateneinblendung im Walzwerk umgebaut zu einer Erweiterung des Genetec Security Centers und um Zustandsschaltung erweitert. Es können beliebig viele Zustände konfiguriert werden und dabei definiert werden welche Kameras im jeweiligen Zustand live angezeigt werden können und aufgezeichnet werden. Livebilder werden hierbei nicht abgelöscht, sondern zeigen keinen Stream mehr an, wird wieder ein Zustand geschaltet wo das Livebild gesehen werden darf, wird dieses auch automatisch wieder angezeigt. Es wurden vorerst die Zustände „Stillstand“ und „Produktion“ konfiguriert.
Tests und Teile der Entwicklung konnten nur während längerer Stillstandzeiten durchgeführt werden.
Technologien: C#, .Net-Framework, C++/CLI, Genetec Security Center SDK, TCP, Advantech ADAM 6066
Für einen Auftraggeber dessen Stream-Client weiterentwickelt, bzw. Anpassungen auf das aktuelle FFPMEG Library durchgeführt. Die Arbeiten erfolgten nach Vorgaben des Auftraggebers mit einer Demoanwendung. Die Implementierung meiner Arbeiten in den Sourcecode des Produktivsystems/Trunk erfolgte dann wieder durch Mitarbeiter des Auftraggebers.
Technologien: C#, .Net-Framework, C++/CLI, FFMPEG
Durch eine Umstellung/Erweiterung im Prozessleitsystem, werden zudem nun über ein weiteres Protokoll auch Daten für die Liveeinblendung von einem Teilstück der Produktionsstraße bereitgestellt, das vorher nicht berücksichtigt war. Dieses Protokoll in das Programm eingebunden. Hierbei wurde es notwendig den Kameras Koordinaten zuzuordnen.
Technologien: C#, .Net-Framework, C++/CLI, Bosch RCP+ Protokoll, Genetec Security Center SDK
Die Steuerung des Videowand erfolgt über Befehle des Leitsystems, die Kommunikation zwischen Videowand und Leitsystem erfolgt per OPC. Die Videowandsoftware bietet virtuelle Kreuzschienen, mittels der über die SPS der Tunnelanlage und deren beliebig konzipierten Kreuzschiene, analoge Kameras auf eine begrenzte Anzahl von Encodern in der Tunnelanlage aufgeschaltet werden und zur Videowand gestreamt werden können. Andere Tunnelanlagen verfügen über IP-Kameras oder IP-Kanäle je analoger Kamera und werden direkt gestreamt. Die Videowand ist über mehrere Videowandrechner je Standort redundant ausgelegt, so dass ein Ausfall von einzelnen Videowandrechnern oder Monitoren zwar die Zahl der verfügbaren Monitore begrenzt, aber die generelle Funktionsfähigkeit der Wand bestehen bleibt. Funktionen wie Alarmaufschaltungen, Quad-Aufschaltung, vordefinierte Layouts, Touren über einzelne oder mehrere Tunnelanlagen, automatische Verteilung der Konfiguration auf die Systeme beider Leitstellen. Depacketizing, Decoding, Rendering erfolgt komplett auf den Videowandrechnern u.a. mit DirectX. Unterstützung von H.263 und H.264. Videohardware von Bosch, Axis, Siemens (SISTORE) wird unterstütz.
Die Umsetzung erfolgte in mehreren Schritten. Zeitweise, wegen der kurzfristig nötigen Verfügbarkeit und Inkompatibilität der alten Decoder-Hardware zu einer umgerüsteten Tunnelanlage, wurde eine frühe Alphaversion nur für H.264 auf nur einem Monitor der Wand eingesetzt und die alte Software angepasst Befehle an die neue zu senden.
Technologien: C#, .Net-Framework, C++/CLI, MS WCF, MS WPF, RTPS, RTP, RTCP, H.263, H.264, OPC DA 2.0, TCP, UDP, DirectX, BOSCH RCP+, Axis Vapix
Technologien: C#, C++/CLI, .Net-Framework, Genetec Security Center SDK
Technologien: C#, C++/CLI, .Net-Framework, Axis VAPIX, TCP Server
An 8 Zugängen zum Werksgelände und Gebäuden ist eine Klingelanlage mit Gegensprechstelle installiert. Die Rufziele an den Klingelanlagen sind die einzelnen Abteilungen. Damit auch eine visuelle Kontrolle vor dem Öffnen eines Zugangs/einer Zufahrt vorgenommen werden kann, sollen die zuständigen Mitarbeiter in den Abteilungen jeweils das Videobild der Überwachungskamera an dem Zugang für den Zeitraum des Zutrittsvorgangs sehen können. Hierzu haben die Mitarbeiter die Clientsoftware auf ihren PCs installiert. Meldet sich der Mitarbeiter im Pförtnersystem an, werden von den Zugängen die Rufe für seine Abteilung nicht mehr zum Empfang geleitet, sondern zu seinem Telefon. Auf seinem PC öffnet sich automatisch das Videobild zum jeweiligen Zugang, wenn ein Ruf erfolgt. Der Mitarbeiter kann über die Clientsoftware den Zugang öffnen und danach das Videobild noch über eine vordefinierte Zeit einsehen. Zur Projektrealisierung werden die SIP-Telegramme der VoIP-Telefonanlage im Netzwerk von dem Dienst auf dem Server mitgelesen und ausgewertet, sowie die relevanten Rufweiterleitungen in der VoIP-Telefonanlage eingestellt.
Technologien: C#, C++/CLI, .Net-Framework, Video over IP, Voice over IP, SIP