Über den Autor

 

Tätigkeiten

Software-Entwicklung /
Programmierung
  • Windows (95 / 98 / 2000 / XP)
  • Embedded Systems / Echtzeitanwendungen / Treiber
  • Serielle Kommunikation / Implementierung spezieller Protokolle
  • Code-Generatoren
  • Tools zur (Mess-) Datenauswertung
  • Visualisierungs-Software
  • Legacy-Systeme
Coaching / Schulung / Training
  • Einführung in das Arbeiten mit Echtzeit-Betriebssystemen
Fachliche Schwerpunkte
  • Windows
  • Communication
  • Embedded Systems
  • Echtzeit-Betriebssysteme

 

Ausbildung

 --> 1984 Informatik-Studium an der TU Berlin, Abschluss als Diplom-Informatiker
1985 - 1991 Angestellter Software-Entwickler
  • Portierung von Betriebssystemen auf kundenspezifische Hardware (Concurrent DOS auf Intel 80x86, OS-9 auf Motorola 68xxx)
  • Integration spezieller device driver
  • Entwicklung von Echtzeit-Anwendungen
  • Entwicklung eines MS DOS kompatiblen Betriebssystem-Kerns ohne File-System: TDOS (Technical DOS)
1992 - 1997 Angestellter Software-Entwickler
  • Aufbau und Betreuung einer Entwicklungsumgebung für Echtzeitanwendungen (pSOS auf Motorola 68xxx)
  • Portierung von pSOS auf diverse Plattformen
  • Entwicklung von Schulungsmaterial
  • Betreuung diverser Echtzeit-Anwendungen
  • Programmierung von Windows-Anwendungen (Integration von C++ und FORTRAN in eine Delphi-Anwendung)
1997 --> Freier Software-Entwickler

 

Hardware

Echtzeitsysteme OS-9, pSOS, RTKernel auf MS DOS
Embedded Systeme Intel 80x86, Motorola 68xxx
Mikrocontroller Intel 80x86, Motorola 68xxx, 8048 / 8051 Derivate, PIC 16Cxx
Modems Automatische Datenerfassung von Fernmessnetz
Motorola Portierung von OS-9 und pSOS auf 68xxx
PC Windows, serielle Kommunikation, Protokolle, Datenkonvertierung

 

Betriebssysteme

CP/M Meine erste Portierung eines Betriebssystems (1985)
Darauf aufbauend: Concurrent CP/M (später: Concurrent DOS)
Echtzeitbetriebssysteme OS-9, pSOS, RTKernel unter MS DOS
MS-DOS In- und auswendig (s.u. *TDOS)
OS/9 Portierung auf kundenspezifische Hardware
pSOS Portierung auf verschiedene Plattformen: 68020, 68030, 68332
Windows 3.1, 95 - XP / Multi-Language Anwendungen / Portierung 16 -> 32 Bit / Legacy Software / ...
Linux Privates Interesse, Portierungstests

*TDOS:
Ich habe - das ist bereits einige Jahre her - einen MS DOS kompatiblen Betriebssystem-Kern entwickelt: TDOS (Technical DOS) - ein DOS ohne File-System. Damit konnten wir auf kundenspezifischer Hardware (einen x86 vorausgesetzt) Programme laufen lassen, die mit Turbo Pascal / Turbo C erstellt worden waren.

Wurde zusätzlich ein "Echtzeit-Zusatz" für MS DOS eingesetzt (z.B. RTKernel), hatten wir sogar ein Echtzeit-Betriebssystem zur Verfügung - und programmierten in Turbo Pascal, während andere Entwickler sich mit den damals quälend langsamen Compilern und Linkern abmühten. Auf der Software-Seite hatten wir damit schon damals einige der Vorteile, die heute die Industrie-PCs so attraktiv machen: Software läuft unverändert auf Entwicklungs- und Zielsystem.

 

Programmiersprachen, Compiler und verwandte Kenntnisse

Assembler 68xxx, 80x86
C Diverse für Microcontroller
C++ Borland C++ 1.0 - 5.0, CPP Builder (5.0), MFC basics
Delphi 1.0 - 5.0, Multi-language (C, FORTRAN), Portierung 16 -> 32 Bit
Forth Sprache interessante eine ist
Fortran Schon etwas her, muss auch nicht sein
Pascal Turbo 2.0 - 7.0, s. auch Delphi
Yacc / Lex Für erstaunlich viele Dinge einsetzbar, letzthin zur Implementierung eines DXF-Interpreters
Tcl Mein Favorit heute, wenn es nicht um Echtzeitfähigkeit geht. Unschlagbar in der leichten Kombinierbarkeit mit C: Deutlich kürzere Entwicklungszeiten in Tcl (statt z.B. in C), ergänzt um lokale Optimierungen in C an den Stellen, wo es auf Geschwindigkeit ankommt.
XML / XPATH / XSLT / DOM Einsatz in einigen Projekten
Borland C und C++ Compiler seit Turbo C 2.0
Borland Pascal / Delphi seit Turbo Pascal 1.0
Microsoft Visual C++ 6.0
Linux gcc
Keil 8048 / 8051 Derivate
Raisonance 8048 / 8051 Derivate
CCS PIC-Prozessoren
Make In verschiedenen Dialekten

 

Datenbanken

BDE: Im Rahmen von Delphi-Anwendungen
mySQL: Unter Linux in einem System verteilter Rechner
Wenn Sie nicht volle Datenbank-Funktionalität brauchen (SQL-Abfragen, Report-Generierung, etc.), sondern nur strukturierte Informationen speichern wollen (persistent storage), gibt es andere Lösungen, die u.U. sehr viel leistungsfähiger sind. So kenne ich z.B. die Meta4-Library recht gut und bin damit sehr zufrieden:
  • Die Library selbst ist sehr kompakt.
  • Die Daten-Files haben wenig Overhead.
  • Sie ist schnell.

 

Datenkommunikation

RS232 / RS485 Treiber f. versch. UARTs, versch. Protokolle (pSOS, OS-9, MS DOS, Windows NT)
HDLC / PPP Protokoll Low-Level Implementierung zur Sicherung der Datenkommunikation

 

Besondere Erfahrungen/Methoden/Spezialkenntnisse

Besondere Erfahrungen
  • Portierungen von (Echtzeit-) Betriebssystemen - und zwar ohne den Einsatz eines ICE (In Circuit Emulator)
  • Echtzeitanwendungen für Embedded Systems
  • Anwendungsprogrammierung PC (DOS, Windows 3.1 / 95 - XP)
  • Multi-Language Anwendungen unter Windows
  • Entwicklung von Code-Generatoren
Methoden
  • Objektorientiertes Design und Programmierung
  • Ereignisgesteuerte, visuelle, strukturierte Programmierung
Spezialkenntnisse
  • Hardware-nahe Programmierung
    Treiber für diverse UARTS (Motorola, Intel, Zilog), Timer, RTCs, AD/DA-Wandler, etc.
  • Spezifizieren und Programmieren mit Zustandsautomaten (ein ausgesprochen leistungsfähiger Ansatz)
  • Lex & Yacc: Tools, die eigentlich der Entwicklung von Compilern dienen. Interessanterweise auch für andere Anwendungen sehr nützlich, da bestimmte Anforderungen hiermit sehr produktiv erfüllt werden können.
  • Lint: Kein (C/C++) Programm verlässt meinen Rechner, ohne von Lint überprüft worden zu sein. Ergebnis: Sehr stabile Programme, praktisch keine unentdeckten Fehler.
  • Langjährige Erfahrungen im Design von Software
    Ein oft unterschätzter Aspekt der Software-Entwicklung.
  • Tcl: Ermöglicht deutlich kürzere Entwicklungszeiten. Unterstützt auch objekt-orientierte Entwicklung. Und falls etwas in Tcl nicht möglich ist (etwa Low-Level Systemaufrufe) oder zu lange dauert, dann werden nur diese speziellen Teile in C oder C++ geschrieben.
  • Legacy-Software: In diesem Bereich gibt es zwei unterschiedliche Aufgabenstellungen
    1. Alte MS-DOS Programme auch unter den aktuellen Betriebssystemen nutzen.
    2. Ein MS-DOS Programm (im Prinzip) nur noch ein einziges Mal laufen lassen, es auf Daten zugreifen lassen, die nur dieses Programm noch lesen kann, und diese Daten dann in ein heute übliches Format exportieren.
    Mitunter ist hierfür ein tiefer Griff in die Trickkiste notwendig ...

 

Bisherige Projekte

Ich betreue kontinuierlich frühere Projekte aus dem Bereich "Embedded Systems" bei anfallenden Modifikationen.


Einige "Highlights" der letzten Jahre
 
Projekt Berechnung elektrischer Netze
Beschreibung In einem Forschungsprojekt hatte ein Hochschulinstitut die Aufgabe übernommen, die Software für die Berechnung der Parameter elektrischer Netze für Windparks zu erstellen und einem Software-Unternehmen zur Integration in dessen Konfigurations-Tool für Windparks zur Verfügung zu stellen.

Das elektrotechnische Know-How für die eigentliche Berechnung kam natürlich von der Hochschule. Mein Part bestand in der software-technischen Umsetzung, der Definition von Schnittstellen zwischen den einzelnen Programmteilen sowie der Festlegung von Ein- und Ausgabeformaten (in XML).
Programmiersprache(n) Tcl und C


Projekt Unterstützung bei Messdatenauswertung
Beschreibung Für Messdaten, die in einem spezifischen (XML) Format vorlagen, sollten grundlegende Funktionsbausteine zur Verfügung gestellt werden
  • Zusammenführen der Daten aus mehreren, zeitlich parallelen Dateien
  • Abarbeiten beliebig langer Zeitreihen (mehrere zeitlich aufeinander folgende Dateien)
  • Toleranz gegenüber dem Wegfallen bzw. Hinzukommen einzelner Messwerte
  • Auswahl der jeweils interessierenden Werte
  • Mittelwert- und Summenbildung
  • Berechnete Werte nach Formel selbst erzeugen

Zum Teil konnten Ergebnisse aus einem früheren Projekt übernommen werden (s.u. "Tool zur Hilfe bei Messdatenauswertung").

Es stellte sich heraus, dass das Programm bei der Bearbeitung grosser Datenmengen zu langsam war. Daher wurde in einem Folgeprojekt an der Optimierung gearbeitet, indem

  • ein schnellerer XML-Parser eingesetzt wurde,
  • durch genaues Timing einige Designschwächen aufgedeckt und beseitigt wurden und
  • eine bestimmte Operation in C realisiert wurde.
Die Summe dieser Modifikationen brachte eine 6 - 8 mal höhere Bearbeitungsgeschwindigkeit.
Programmiersprache(n) Tcl und C


Projekt Code-Generator für ein Datenerfassungsprogramm
Beschreibung Für häufig wechselnde Messaufgaben auf der Basis von HP-Datenloggern war es schwierig und fehleranfällig, die Umkonfiguration der Logger und die damit einhergehende Anpassung des Datenerfassungsprogramms immer synchron zu halten.
Daher wurde eine graphische Benutzerschnittstelle entwickelt, mit deren Hilfe der Benutzer
  • den jeweils benutzten Einschub des Loggers auswählt,
  • die einzelnen Kanäle hinsichtlich ihrer Messparameter konfiguriert und
  • symbolische Informationen (Art des Messwerts, Dimension, etc.) eingibt.
  • Aus diesen Informationen wird dann das eigentliche Programm zur Messwerterfassung erzeugt.
Mit dem Einsatz dieses Programms ging die Fehlerrate bei der Pflege der jeweiligen Konfiguration der Datenlogger drastisch zurück.
Programmiersprache(n) Tcl


Projekt Tool zur Hilfe bei Messdatenauswertung
Beschreibung Jeder kennt die Situation: Es scheint, als würde jeder, der Messdaten erfasst, sein eigenes Format zur Speicherung "erfinden". Ergebnis: Viel Aufwand, wenn solche Daten ausgewertet werden sollen.
Hier wurde dieses Problem dadurch in Angriff genommen, dass einzelne Bausteine (in objektorientierter Form) entwickelt wurden, die zunächst einmal überhaupt den Zugriff auf die Daten ermöglichen, indem sie
  • die unterschiedlichsten Datenformate lesen können,
  • die verschiedensten Möglichkeiten, Datum und Uhrzeit zu dekodieren, kennen,
  • eine Auswahl der jeweils interessierenden Messwerte erlauben
  • und dies alles für beliebig lange Zeiträume auch über mehrere Dateien.
  • Weiterhin wurden Objekte entwickelt, um Daten zu komprimieren (Mittelwert- bzw. Summenbildung) oder zu expandieren (falls etwa Stundenwerte vorliegen, ein Simulationsprogramm aber 10 Minuten Mittelwerte erwartet) und natürlich um die - möglicherweise komprimierten - Daten in beliebiger Darstellung ausgeben zu können.
Damit existieren Software-Bausteine, die vom Anwender mit Hilfe einer Konfigurationsdatei nach seinen Erfordernissen geeignet zusammen geschaltet werden können - also eine Programmmierer-Schnittstelle.
Der nächste Schritt wäre die Entwicklung einer graphischen Benutzeroberfläche, damit keine Programmierkenntnisse zur Nutzung der hier zur Verfügung stehenden Funktionen mehr notwendig sind. Leider standen hierfür bisher keine Mittel zur Verfügung.
Programmiersprache(n) Tcl


Projekt Programm zum Software-Update (Flash) diverser Steuergeräte eines Herstellers über RS 232, RS 485, RS 485 Bus oder Modem unter Benutzung des HDLC-Protokolls (Windows)
Beschreibung Anforderungen
  1. Es sollten beliebig viele Schnittstellen eines Typs unterstützt werden (immerhin unterstützen intelligente serielle Zusatzkarten bis zu 64 Schnittstellen).
  2. Bei Benutzung eines bus-fähigen Mediums sollten dort beliebig viele Endgeräte angeschlossen sein können.
  3. Die Software sollte so strukturiert sein, dass die Benutzung eines weiteren Mediums (z.B CAN-Bus) leicht realisiert werden kann und sich nahtlos in die bestehende Oberfläche einpassen lässt.
  4. Die Kernfunktionalität sollte als DLL zur Verfügung stehen, damit sie auch von anderen Programmen genutzt werden konnte.
  5. Auch die Implementierung der Kommunikationsfunktionen der Endgeräte (x86 Clones) gehörte zum Lieferumfang.

Der Zufall wollte es, dass ich noch den Artikel Virtuality von Herb Sutter (C/C++ User's Journal September 2001) in Erinnerung hatte. Dort ging es um die Frage, wie das Interface von C++ Klassen unter verschiedenen Randbedingungen aussehen sollte, und das passte hier einfach auf das Problem, einheitliche Schnittstellen für ganz unterschiedliche Kommunikationsmedien zur Verfügung zu stellen (und damit auch (3) zu ermöglichen).

Programmiersprache(n) C++ für alle Windows-spezifischen Teile, C für die Low-Level Funktionen der Kommunikation, die auch in den Endgeräten benutzt werden sollten und Tcl zur Realisierung eines Batch-Betriebs (durch Entwicklung einer einfachen "Sprache").


Projekt Grossküchengeräte-Controller auf Basis eines PIC 16C74A
Beschreibung Implementierung der Funktionalität 12 verschiedener Geräte (von Kochkessel bis schwenkbarer Bratpfanne)
Bedienung/Anzeige lokal / Monitoring durch Leitsystem (RS 485-Bus) / Steuerung remote durch Leitsystem.
Besonderheit: Es war kein Emulator verfügbar und der Compiler schien mitunter fehlerhaften Code zu produzieren - eine echte Herausforderung.
Programmiersprache(n) C


Projekt Software-Entwicklung für eine neuentwickelte EIB-Komponente
Beschreibung Im Rahmen eines Folgeprojekts zu "Standardisierung der Datenkommunikation ..." (s.u.) wurde eine Baugruppe entwickelt, die als Bindeglied zwischen Geräten wie Wechselrichter, Dieselgenerator, u.ä. und dem EIB diente. Das Ziel war, in grösseren Photovoltaik-Anlagen die einzelnen Geräte mittels EIB zu vernetzen, um Datenabfragen und Schaltvorgänge zu ermöglichen.
Baugruppe und Software wurden zwar fertiggestellt, aber das Interesse der Industrie an dieser Lösung war gering.


Projekt Portierung eines DOS-Programms zur Fernabfrage von Messstellen nach Windows 95 / Windows NT und Visualisierung der Online-Messwerte.

Anforderungen: Auswahl der Standorte via Landkarte, Parallelbetrieb mehrerer Modems zur gleichzeitigen Darstellung mehrerer Messstellen, Ersatz des (Assembler-) Treibers, der das Protokoll (DIN 19244) implementierte

Beschreibung Delphi für die Oberfläche, C++ für die serielle Kommunikation (dabei Zustandsprogrammierung für die Implementierung des Protokolls)


Projekt Portierung eines Windows-Programms von 16 nach 32 Bit
Beschreibung Anforderungen: Der Quellcode bestand aus Delphi, C++ und FORTRAN Modulen, Funktionsaufrufe gab es in alle denkbaren Richtungen.
Besonderheit: Der FORTRAN-Compiler war leider nicht im Hause verfügbar.


Projekt Standardisierung der Datenkommunikation bestimmter Komponenten auf Basis des EIB
Arbeiten Zusammenfassung des bisher erarbeiteten Diskussionsstands zu einer Diskussionsvorlage, die sich an die Teilnehmer eines Industrie-Arbeitskreises richtete, Diskussion der Vorlage mit einigen Industrievertretern, Überarbeitung der Vorlage, Präsentation der Ergebnisse auf einer Sitzung des Arbeitskreises.


Projekt Referenzimplementierung eines proprietären seriellen Protokolls

Zielsetzung: Dieses Programm simuliert einen "Slave" (hinsichtlich der Kommunikation) und dient als Referenz gegenüber zukünftigen Geräten (auch anderer Hersteller).
Zusatzanforderung: Das Programm sollte als Echtzeit-Anwendung ausgelegt sein, damit der Kommunikationsteil unverändert in das Endgerät (ein "Embedded PC") übernommen werden kann.

Beschreibung C, MS DOS


Projekt Das leidige Jahr-2000-Problem (Oder: Warum sollte ausgerechnet ich davon verschont bleiben?)

Ein Datenlogger liefert die Jahreszahl zwar korrekt, aber zweistellig. Die Datenbank, in der die Daten letztendlich landen sollen, arbeitet mittlerweile mit vierstelligen Jahreszahlen. Ausserdem gibt es Sekundär-Programme, die "zwischen" Datenlogger und Datenbank angesiedelt sind und ihrerseits bestimmte Dateien erzeugen. Sie müssen ebenfalls angepasst werden.
Schlussendlich sind noch alle bisher erzeugten (ASCII-) Dateien auf das neue - vierstellige - Format umzustellen.

Beschreibung C, Pascal

 

Sonstige Anmerkungen

Besondere Interessen
Intelligente Datenanalyse
Mögliche Anwendungen:
  • Flexible Auswahl interessierender (Mess-) Daten aus möglicherweise sehr umfangreichen Datenmengen (Vorverarbeitung).
  • Überprüfung der Plausibilität, um z.B. Ausfälle von Sensoren automatisch zu erkennen
  • Beschleunigung von Simulationsrechnungen: Sind die Zwischenergebnisse eines Simulationsprogramms verfügbar, könnten sie analysiert werden. Bei einem ungünstigen Verlauf würde die Simulation abgebrochen und mit modifizierten Parametern neu gestartet
Realisierung: Durch den Einsatz einer speziell angepassten "Sprache" etwa das Folgende ermöglichen:
Suche alle Punkte, an denen die Frequenz um mehr als 5 % vom Sollwert abweicht und zeige sämtliche Messdaten in einem Zeitfenster [-10 ms, +5 ms]


Systeme, die weitestgehend konfigurierbar sind und deren genaue Funktion erst durch den Kunden bzw. Endanwender festgelegt werden (z.B. durch den Einsatz einer speziell angepassten Script-Sprache).
Beispiel:
Intelligenter Datenlogger, der bestimmte Daten überwacht und beim Eintreten von Triggerbedingungen Sonderfunktionen aktiviert: best. Daten mit höherer zeitlicher Auflösung speichern, die Zentrale anrufen, etc.
Auswahl der kritischen Daten und Festlegung - auch komplexer - Trigger-Bedingungen erfolgt durch Endanwender.
Beispiel:
Bereits erfasste (Mess-) Daten auf Plausibilität / Korrektheit / best. Bedingungen überprüfen, wobei die einzelnen Parameter erst durch den Anwender und nicht durch den Programmierer festgelegt werden.

 

Kontaktinformationen

Name Helmut Giese
Anschrift Königstor 59, 34119 Kassel
Tel. 0561 / 739 35 30 oder 0561 / 766 59 50
email hgiese@ratiosoft.com

 

Mögliche Einsatzorte

  • Raum Nordhessen bevorzugt
  • Telearbeit bevorzugt
  • Andere Einsatzorte: nach Absprache

 

Fremdsprachen

Englisch
fliessend
Französisch
fortgeschritten

Index

Home   Top  

Copyright © Helmut Giese, email: hgiese@ratiosoft.com
Parkstr. 41, 34119 Kassel, Tel.: 0561 - 766 59 50, Fax: 0561 - 766 59 51
Königstor 59, 34119 Kassel, Tel.: 0561 - 739 35 30, Fax: 0561 - 739 35 31

Web Design von Bianca Engler:   email    internet