#$K+{bml sensokom.bmp} Inhalt
Das Programm SENSOKOM dient zur Ansteuerung eines Sensokom-Datenerfassungsmoduls am RS485-Bus für das Praktikum „ISM“. Es agiert als DDE-Client.

{bml dipic.bmp}  Einführung in Hard- und Software
{bml window.bmp}  Werkzeugleiste und Statuszeile
{bml adjust.bmp}  Bedienung der Dialoge
{bml dde.bmp}  SENSOKOM und DDE
{bml dipic.bmp}  Obskure Menüpunkte?

h#s  © Technische Universität Chemnitz, Fachbereich Mess- und Sensortechnik

#$K+{bml sensokom.bmp} Einführung in Hard- und Software
In diesem Kapitel werden auf das gesamte Programm bezogene Eigenschaften erörtert:

Erforderliche Hardware
Installation
Arbeitsprinzip und Programmaufteilung
Geschichte des Programms

#$+K{bml dipic.bmp} Erforderliche Hardware
Für dieses Programm sind 3 Komponenten erforderlich:

ein Computer
die Sensokom-Datenerfassungseinheit mit Stromversorgung, darin das Programm „UNI50A“
ein RS232-zu-RS485-Umsetzer nebst zugehöriger DDE-Treibersoftware

Das Programm SENSOKOM.EXE erfordert mindestens einen 80286-Prozessor unter Windows 3.1 im Standard-Modus. Als Grafikkarte genügt jeder für Windows benutzbare monochrome oder farbige Grafikadapter.
Wenn diese Hilfedatei überhaupt gelesen werden kann, sollten soeben genannte Bedingungen bereits erfüllt sein.

#$+K{bml dipic.bmp} Installation
Dieses Programm besteht aus folgenden Dateien:
SENSOKOM.EXE	das Programm, evtl. unter anderem Namen, wie SK31.EXE (mit BC3.1 übersetzt), SK5_32.EXE (BC5, Win32)
SENSOKOM.HLP	diese Hilfedatei
SENSOKOM.INI	eine Initialisierungsdatei im Windows-Verzeichnis. Sie wird automatisch angelegt.

Es existiert kein eigenständiges Installationsprogramm. Die beiden ersten Dateien werden einfach in ein Verzeichnis auf die Festplatte kopiert (das Programm läuft auch von Diskette, aber naja!) und das Symbol (Icon) im Programm-Manager bzw. Startmenü erstellt. Ein erster Probelauf erzeugt dann die SENSOKOM.INI-Datei im Windows-Verzeichnis.

Die Deinstallation erfolgt durch Löschen der drei oben genannten Dateien und Entfernen des Icons aus dem Programm-Manager. SENSOKOM.EXE hinterläßt keine weiteren Spuren im Windows-System – oder doch: .SES-Dateien verweisen ungefragt auf SENSOKOM.

#$+K{bml dipic.bmp} Arbeitsprinzip, Programmaufteilung
Das Programm ist als Single-Document-Interface unter Verwendung der Werkzeugleiste und Statuszeile aus der COMMCTRL.DLL (bzw. COMCTL32.DLL) aufgebaut. Ist diese DLL nicht vorhanden (unter Windows 3.1 der Fall), gibt es diese Extras nicht. Dabei ist das Programm auf nackte Windows-API zurechtgestutzt und so für 16 und 32 bit kompilierbar.

#$+K{bml dipic.bmp} Geschichte des Programms
Dezember 1995
Abgabe der Diplomarbeit von Thomas Heinß: Aufbau des Praktikumsversuchs „ISM“ (das Thema hatte eine wissenschaftlichere Bezeichnung)
Das 16-bit-Programm wurde mit Borland C++ 4.0 unter Verwendung der Object Windows Library (OWL) erstellt und „wog“ mit allen DLLs 3 Megabyte, passte auch gepackt nicht auf eine Diskette. Sämtliche Bildchen sowie das ungefähre Aussehen der Dialoge stammen von diesem Original.
Wie üblich bei Diplomarbeiten lassen die Studenten einen hübschen, dicken Brocken Arbeit fallen, und die Mitarbeiter dürfen es ausbaden – oder vergessen.
Ende 1996 (?)
Die Umstellung auf die neue deutsche Rechtschreibung gelang nur teilweise, weil fast nichts in den Ressourcen steckte und der Quelltext mangels BC4 nicht übersetzbar war.
April 1997
Aus dem Quelltext der „Treiber“-DLL wurde die Ursache laufender Schutzverletzungen getilgt; der Treiber blockiert aber nach wie vor Windows komplett. Der Quelltext war nach einigen Schwierigkeiten mit BC3.1 übersetzbar. Eigentlich war es kein „Treiber“, sondern ein plumpes Konglomerat mit über 50 fast gleichartigen Eintrittspunkten. Eine DLL war wohl bloß fürs „informatik-mäßige“ Aussehen dazu.
April 1997
Die Treiber-DLL wurde auf Windows-COMM-Funktionen umgeschrieben, Windows blockiert nun nicht mehr, aber dennoch muss man auf das „Such-Ende“ warten (bei jedem Programmstart erforderlich)
Mai 1997
Ein BC4 wurde aufgetrieben, nach mühevoller Kleinarbeit der Projekteinstellung (die Projektdatei wurde bei der Abgabe unterschlagen!) ist das Programm übersetzbar.
11. September 2001
Erster Generalangriff – die Treiber-DLL wurde auf C (statt C++) und zurückgestutzt, ist für jedes Speichermodell übersetzbar, mit SMALL wird die DLL doch etwas kleiner.
Komplett neue, ordentlich funktionierende Dialoge, soweit es geht auf Windows-API, für analoge Eingabe und digitale Ausgabe (die digitalen Anschlüsse des SENSOKOM-Transmitters scheinten aber damals schon nicht zu funktionieren).
Die DLL-Version der OWL wurde durch die statisch gebundene Version ersetzt (Projekt-Schalter), die Programmgröße betrug „nur noch“ ca. 1 Megabyte. Alle Rechtschreibfehler sind nun ausgemerzt, aber immer noch die alten Macken…
Juni 2002
Von der Diplomarbeit fehlte immer noch ein lesbarer Ausdruck! Die .SAM-Dateien habe ich ins AmiPro geladen (na, erstmal 500 Rechtschreibfehler entfernen) und dann endlich in ordentliches PostScript / PDF umwandeln. Sichtung aller (10!?) Disketten und geordneter „Upload“ zum Archiv.
Februar 2003
Erstellung eines neuen Treiber-Konzepts in Form eines universell nutzbaren DDE-Servers, damit nun via Netzwerk-DDE auch Abfrage nicht-lokaler RS485-Busse möglich. Lauffähigkeit unter Windows NT auch ohne Portzugriff eingebaut und getestet. Anbindung an HP-VEE geglückt, aber ein modernisierter Praktikumsversuch wurde nicht fertig (tja, das war mal wieder Aufgabe eines Studenten).
März-April 2003
Zweiter Generalangriff – Alle Dialoge wurden konsequent auf nackte Windows-API umgestellt, das Projekt ist nun auch mit Borland C++ 4.5 und 5.0 sowie in 16 und 32 bit übersetzbar.
Anbindung an im Februar geschriebenen DDE-Server.
Die Programmgröße ist auf 500 KB gesunken, die übelsten Macken sind verschwunden. Leider hin und wieder Schutzverletzungen aus den Untiefen der OWL, besonders bei der 16-Bit-Version.
Januar-Februar 2004
Letzter Generalangriff – Umstellung des Hauptprogramms auf Windows-API, Werkzeugleiste und Statuszeile aus Windows' COMMCTRL.DLL (für 16bit war's im Nachhinein ziemlich qualvoll). Endlich volle Kontrolle über alle Macken, und bis auf das „Mitzoomen“ des Fensterinhaltes ist jetzt wirklich alles weg. So gut wie alle Fensterpositionen und Einstellungen werden auch endlich gespeichert.
Übersetzbar mit BC3.1 bis BC5.0 und MSVC, in allen Speichermodellen, was will man mehr? Die 16-Bit-Version ist 100 KB klein (ein Dreißigstel der ursprünglichen Größe!), 32bittrig sind es 130 KB, und es läuft auch unter Windows 3.1 ganz prima. (Dazu kommen allenfalls 14 Kilobyte RS485-zu-DDE-Umsetzer).
Nun gibt es auch eine (diese) Hilfedatei dazu.
Resümee:
Neu schreiben ist besser! Aber wieviel Diplomarbeiten darf man auf ein Thema herausgeben, bis es endlich ordentlich ist?

#$K+{bml Sensokom.bmp} Werkzeugleiste und Statuszeile
Das Programm arbeitet mit der Windows-eigenen Version von Werkzeugleiste und Statuszeile.
Sie können bei Platzbedarf über entsprechende Menüpunkte im Menü „Bearbeiten“ ausgeschaltet werden.

Beachte: Die Windows-Werkzeugleiste ist immer schon konfigurierbar gewesen! Da sie aber nur mit Maus überhaupt nutzbar ist, erfolgt auch die Anpassung ausschließlich mit der Maus:
·	Umschalt+Maustaste verschiebt einen Knopf (ähnlich Drag und Drop), das Herausziehen des Knopfes aus der Werkzeugleiste führt zum Entfernen des Knopfes
·	Doppelklick in den freien Bereich der Werkzeugleiste ruft einen Konfigurationsdialog auf. Damit können entfernte Knöpfe auch wieder eingefügt werden.

# Werkzeugleisten-Konfiguration
Dieser Dialog ist nahezu selbsterklärend.

SENSOKOM bietet noch 3 Extra-Knöpfe an, die standardmäßig nicht eingeschaltet sind, u. a. zum Ein/Ausschalten des Rasters.

Eine gemachte Neuordnung der Werkzeugleiste wird sofort gespeichert.

#$K+{bml sensokom.bmp} Laden und Speichern
Das Programm speichert Messreihen in einem eigensinnigen (svw. bekloppten) Format, aber immerhin war es von Anfang an ein ASCII-Format.

Die ersten beiden Zeilen enthalten die Messart und die darzustellende Analog-Einheit.

Die übrigen Zeilen bilden eine Tabulator-separierte Liste, die von praktisch jedem Tabellen-Programm (Origin, Excel) gelesen werden kann.

Als Beispiel:
Spannungsmessung
V
Thu Feb 19 03:21:47 2004	0.100000	0	0	0
Thu Feb 19 03:21:48 2004	0.320000	0	0	0
Thu Feb 19 03:21:49 2004	-0.270000	0	0	0
…

In Excel kann diese Datei bspw. mit der Funktion „Importierten – Kommaseparierte Liste“ eingelesen werden; als Trennzeichen ist „Tabulator“ auszuwählen. Die ersten beiden Zeilen sind entweder vorher (aus der Datei) oder danach (im Excel) zu löschen.

Achtung: Das gespeicherte Datumsformat ist abhängig davon, ob eine 16-bit- oder eine 32-bit-Version der SENSOKOM.EXE lief, und, im Falle von 32 bit, von der Einstellung in der Systemsteuerung! SENSOKOM selbst macht keinen sinnvollen Gebrauch von der linken Spalte!

#$K+{bml Sensokom.bmp} Bedienung der Dialoge
Hier erfolgen genaue Hinweise zur Bedienung der im Programm vorkommenden Dialogfenster. Die entsprechende Hilfeseite ist auch mit dem Hilfe-Knopf innerhalb der jeweiligen Dialogbox erreichbar.
Achtung: Die in den Dialogen machbaren globalen Einstellungen werden automatisch, aber erst beim regulären Beenden des Programms, gespeichert.

Konfiguration der PC-Schnittstelle
RS485-Bus durchsuchen
Analoge Mess-Parameter
Digitale (Ein/)Ausgänge
RS485-Interface des Transmitters
Display, Tabelle und Schaltung

#$K+{bml adjust.bmp} Konfiguration der PC-Schnittstelle
Etwas irreführend ist es, dass dieser DDE-Client überhaupt eine PC-Schnittstelle konfiguriert: die Konfigurationsdaten, an welchem Rechner welche Schnittstelle mit welcher Baudrate arbeitet, kann alles über einen geeigneten DDE-Server eingestellt werden. Das Risiko liegt beim Anwender von Netzwerkfreigaben (siehe Hilfe zu RS485DDE).

Schalter „Netzwerk-DDE“
Editierfeld „Server“
Auswahl „Schnittstelle“
Auswahl „Baudrate“
Schalter "OK"

# Schalter „Netzwerk-DDE“
Dieser „Hauptschalter“ schaltet zwischen lokalem DDE und Netzwerk-DDE um. Zu den Unterschieden siehe unten.

# Editierfeld „Server“
Für Netzwerk-DDE wird hier der Windows-Freigabename des DDE-Server-Rechners eingetragen.

Hinweis: Unter Windows 9x muss hierzu explizit „NETDDE.EXE“ auf dem Server gestartet werden, bspw. über das Autostartmenü oder (besser) über den Registrierungseintrag HKLM\Software\Microsoft\Windows\CurrentVersion\RunServices.

Voreingestellt ist „Amarillo“, der Rechner am Praktikumsplatz.
Das Editierfeld ist grau und unzugänglich, wenn Netzwerk-DDE ausgeschaltet ist.

# Auswahl „Schnittstelle“
Eine von drei seriellen Schnittstellen kann ausgewählt werden.
Bei Netzwerk-DDE hängt die tatsächliche Zuordnung von der Konfiguration der DDE-Freigabe (DDESHARE.EXE) ab; dort kann „COM3“ durchaus „COM9“ öffnen, wenn vorhanden und so eingestellt.

Voreingestellt ist COM2; bei Rechnern mit nur einer seriellen Schnittstelle COM1.

# Auswahl „Baudrate“
Die Übertragungsgeschwindigkeit in Schritt pro Sekunde (etwa 10 Schritt pro Byte) ist hier einstellbar, wirkt aber nur bei lokaler DDE-Verbindung.

Voreingestellt sind 9600 Baud, entsprechend knapp 1000 Bytes pro Sekunde.
Die Auswahl ist grau, wenn der Schalter „Netzwerk-DDE“ an ist.

# Schalter „OK“
Der Dialog wird unter Übernahme der angegebenen Werte beendet.

Bei eingeschaltetem Netzwerk-DDE wird versucht, das Programm NETDDE.EXE zu starten und eine Verbindung zum angegebenen Server (Windows-Freigabename) mit dem Thema „RS485-COMx“ (x je nach Schnittstelle) einzurichten. Es obliegt dem Administrator des Servers, eine entsprechende Freigabe einzurichten. Die Baudrate wird ignoriert, sie muss am Server eingestellt werden.

Bei ausgeschaltetem Netzwerk-DDE wird versucht, das Programm RS485DDE.EXE zu starten und eine DDE-Konversation zum Server „RS485“, Thema „COMx y,n,8,1“ (x = Schnittstelle, y = Baudrate) zu eröffnen.

Schlagen die Konversationen fehl, kann ein erneuter Versuch unternommen werden (Wiederholung) oder auch ohne DDE-Konversation fortgefahren werden. Ohne DDE ist keine Messreihen-Aufnahme möglich; das Laden und Betrachten vorhandener Messreihen ist uneingeschränkt möglich.)
Siehe auch: DDE

#$K+{bml adjust.bmp} RS485-Bus durchsuchen
Damit kann man alle Sensokom-Module, die am RS485-Bus angeschlossen sind, auffinden und einen von ihnen auswählen.

Anzeige „Abgefragte Adressen“
Liste „Belegte Adressen“
Schalter „Suche / Stopp“
Schalter „OK“

# Anzeige „Abgefragte Adressen“
Der Fortschrittsbalken zeigt an, welche Adresse (von 1 bis 255) gerade abgefragt wird.

# Liste „Belegte Adressen“
Hier werden die gefundenen Adressen aufgelistet. Davon kann einer für das Programm (die Konversation) ausgewählt werden.

# Schalter „Suche / Stopp“
Die Suche wird hiermit gestartet und angehalten. (Nicht die ESC-Taste dazu benutzen!) Da die Moduladressen üblicherweise niedrig liegen, braucht man üblicherweise nicht den ganzen Bereich bis 255 abzusuchen.

# Schalter „OK“
Die in der Liste selektierte Adresse wird übernommen und fortan damit kommuniziert. (Auf den Bestand der DDE-Verbindung hat die Moduladresse keinen Einfluss.)
Der Schalter ist grau, wenn keine Adresse in der Liste ausgewählt ist. Ohne erfolgreiche Suche gibt es auch keine Adresse zum Auswählen!

#$K+{bml adjust.bmp} Analoge Mess-Parameter
Dieser sehr umfangreiche Dialog ermöglicht die Einstellung (fast) aller Messmethoden sowie einer Linearisierungskennlinie.

Kombinationsfenster „Art der Messung“
Kombinationsfenster „Maximalwert“
Kombinationsfenster „Steuerstrom“
Eingaben zum Thermoelement
Editierfeld „Mittelungen“
Kombinationsfenster „Displayeinheit“
Kombinationsfenster „Kommastellen“
Linearisierungs-Kennline
Schalter „Übernehmen“ und „OK“

# Kombinationsfenster „Art der Messung“
Dieser Hauptschalter hat Einfluss auf eine Reihe weiterer Dialogelemente, nicht jedoch auf die Displayeinheit(!). Manche Messarten sind nicht implementiert.

# Kombinationsfenster „Maximalwert“
Je nach Messart stehen 10 verschiedene Maximalwerte – entsprechend den 10 verschiedenen programmierbaren Brückenverstärkungen des Gerätes – zur Verfügung. Bei Widerstandsmessung ist der Maximalwert (und damit der Inhalt des Fensters) auch vom Steuerstrom abhängig.

# Kombinationsfenster „Steuerstrom“
Das Gerät hat eine in 4 festen Stufen programmierbare Stromquelle, die bei Spannungs- und Strommessung beliebig verwendbar ist; bei Widerstandmessung wird dieser Konstantstrom durch den Widerstand geschickt.

# Eingaben zum Thermoelement
Bei den Temperaturmess-Betriebsarten können DIN-gerechte Thermoelemente verwendet werden, die ohne weiteren Abgleich die richtige Temperatur liefern.
In den übrigen Betriebsarten sind diese Knöpfe und Fenster grau.

# Editierfeld „Mittelungen“
Das Gerät macht stets 10 Messungen (Samples) pro Sekunde. Es kann jedoch 1..255 Werte davon akkumulieren und dann den Mittelwert – entsprechend weniger oft – am Display ausgeben.
Mehr als 10 Mittelungen sind für die praktische Programm-Anwendung weniger sinnvoll.

# Kombinationsfenster „Displayeinheit“
Das Gerät kann eine beliebige Zeichenfolge hinter dem Zahlenwert darstellen, bspw. „Gramm“ wenn über einen Dehnmessstreifen eine Waage benutzt wird. Bei Einstellung auf „Ohm“ generiert das Programm ein Omega-Symbol (W) zur Anzeige.
Wie für solche Anzeigen üblich stehen wichtige griechische Symbole, akzentuierte Zeichen (sämtliche Umlaute) sowie alle halbbreiten Katakana (eine der beiden jap. Silbenschriften) zur Verfügung; das Programm kann dies (noch) nicht umsetzen (die Unicode-Plattform steht noch aus); entsprechende Tabellen sind jedoch bereits integriert, siehe DRV_DDE.C.

# Kombinationsfenster „Kommastellen“
Als Einschränkung gilt hier, dass der Maximalwert mit Vorzeichen, allen Kommastellen und Einheit aufs 8stellige Display passen muss.

# Linearisierungs-Kennline
Eine Linearisierungskennlinie kann hier punktweise (als Zahlenpaar, nicht mit der Maus) eingegeben werden. Mindestens sind 2 Paare erforderlich (bspw. zur 1:1-Umsetzung), maximal 20 Paare erlaubt.
Gespeichert wird stets automatisch eine „backup.lin“, die durch Umbenennen zum Laden benutzt werden kann. (Idiotisches Vorgehen, habe ich mir ja nicht ausgedacht!)
Zur schnellen Eingabe von Werten ist es zweckmäßig, das Listenfenster fokussiert zu halten. Die erste Spalte gibt den internen Digitalwert am A/D-Wandler an.

# Schalter „Übernehmen“ und „OK“
Beide Schalter schicken die gemachten Einstellungen zum SENSOKOM-Modul (das kann bei einer langen Linearisierungskennlinie und besonders bei Netzwerk-DDE eine reichliche Sekunde dauern, es erscheint eine Sanduhr). Das Schaltbild, falls eingeblendet, wird aktualisiert.
Der OK-Schalter beendet den Dialog anschließend, sodass er genauso wirkt wie der „Übernehmen“-Schalter, gefolgt von „Abbruch“.

#$K+{bml adjust.bmp} Digitale (Ein/)Ausgänge
Dieser Dialog ermöglicht die Einstellung der digitalen Ausgänge, dass sie beim Erreichen bestimmter Schwellwerte schalten (bspw. Heizung, Pumpe…).
Für beide Ausgangsklemmen steht je ein halber Dialog zur Verfügung, der sich nahezu selbst erklärt.

Die Klemme 6 kann Ein- oder Ausgang sein, die Klemme 7 ist nur Ausgang.
Beide Klemmen können (theoretisch) vom Rechner gesteuert werden; es funktioniert davon jedoch nichts, nicht einmal mit der originalen DOS-Software.

Schalter „Übernehmen“ und „OK“
Beide Schalter schicken die gemachten Einstellungen zum SENSOKOM-Modul (das kann etwas dauern, es erscheint eine Sanduhr). Das Schaltbild, falls eingeblendet, wird aktualisiert.
Der OK-Schalter beendet den Dialog anschließend, sodass er genauso wirkt wie der „Übernehmen“-Schalter, gefolgt von „Abbruch“.

#$K+{bml adjust.bmp} RS485-Interface des Transmitters
An diesem Dialog sollte man den geringsten Bedarf verspüren, daran herumzuspielen. Er dient zur Ver(!)stellung des Sensokom-Moduls. Aber keine Panik, hat man etwas total verstellt und kennt die Einstellung nicht mehr (und es kommt wegen falscher Baudrate keine Kommunikation zu Stande), fragt man mit dem einen Knopf am Gerät Adresse und Baudrate ab, vereinzelt das Gerät am Bus (schaltet die anderen Geräte ab) und stellt nun die passende Baudrate am RS485-Bus ein (nur lokal oder am Netzwerk-DDE-Server möglich).

Editierfeld „Adresse“
Damit ist die künftige Adresse gemeint, unter der das Modul nach Aus- und Einschalten anzusprechen ist.

Wellenschalter „Baudrate“
Ebenfalls: Die künftige Baudrate.

Schalter „OK“
Die Einstellungen werden zum SENSOKOM-Modul geschickt, es erscheint anschließend eine Aufforderung zum Aus- und Einschalten des Moduls. Um mit den veränderten Werten zu arbeiten, muss auch eine neue Baudrate eingestellt und/oder eine neue Adresse gesucht werden.

#$K+{bml adjust.bmp} Eingabe Wertepaar
Entweder wird gerade ein minimaler und maximaler Wert (für die Y-Darstellung) oder ein Linearisierungspaar (gemessener Istwert, anzuzeigender Sollwert) verlangt.

Bei der Eingabe der Gleitkommazahlen darf Komma (deutsch) oder Punkt (englisch) als Dezimaltrennzeichen verwendet werden.

#$K+{bml adjust.bmp} Eingabe Intervall
Vor der Aufnahme einer Messreihe steht die Angabe des Intervalls (= zeitlicher Abstand zwischen zwei Messpunkten) sowie die voraussichtliche Anzahl der Messungen.

Für beste Strörunterdrückung sollte die Anzahl der Mittelungen (im Dialog für Analoge Mess-Parameter) dem Messintervall entsprechend sein; für den Praktikumsversuch sind davon abweichende Einstellungen absichtlich vorgeschrieben.

Bei „unendlicher“ Messung geht es auch nach Ablauf der angegebenen Messungen weiter, bis abgebrochen wird oder der Speicher voll ist.

#$K+{bml adjust.bmp} Display, Tabelle und Schaltung
Diese drei Dialoge sind nicht-modal (blockieren das Hauptfenster nicht) und sind dazu gedacht, ständig geöffnet zu sein.

Display
…dient als „Verlängerung“ der LCD-Anzeige des Sensokom-Transmitters, zum besseren Ablesen durch die Studenten während des Praktikumversuchs. Unverzichtbar bei Netzwerk-DDE.

Tabelle
…liefert etwas mehr Informationen als „Display“, nämlich den Status der digitalen Anschlüsse sowie die Programmversion auf dem Sensokom-Transmitter.

Schaltung
…zeigt die für die aktuelle Konfiguration gültige Beschaltung des Sensokom-Transmitters an, sehr wichtig!

Alle drei nichtmodalen Dialoge merken sich ihre Position bezüglich zum Hauptfenster; ihr Einschaltzustand und diese Positionen werden auch gespeichert und beim Start von SENSOKOM wiederhergestellt.

Bug: Solange einer dieser Dialoge geöffnet ist, kann SENSOKOM nicht ohne Maus benutzt werden.

#$K+{bml Sensokom.bmp} DDE - Dynamischer Datenaustausch
Das Programm SENSOKOM.EXE ist ein einfacher DDE-Client für RS485DDE.

Mit folgenden Service-Thema-Paaren werden Konversationen eröffnet:
	Service	Thema
lokal:	RS485	COMx y,n,8,1	(x = Schnittstelle, y = Baudrate)
Netzwerk:	\\server\NDDE$	RS485-COMx	(server = DDE-Server, x = wählbarer Teil des Freigabe-Namens)

Mit dem Modul (genauer: dem DDE-Server) wird mit folgenden Transaktionen gearbeitet:
	hin	zurück
Request:	#aa:>	abcdefghi	Abfrage Display, aa = Moduladresse (hex.), a..h = Display-Inhalt, i = Bits
	%aaS:>	12345678abcdefgh	Abfrage Seriennummer, 1..8 = Nummer, a..h = Dateiname (bspw. UNI50A)
	%aaRnaaaa:>:	bb[cc[ddee]]	Byte vom Speicher lesen, n = Anzahl Bytes, (1, 2, 4), aaaa = Adresse (hex.), bb, cc, dd, ee = Bytes
Poke:	%aaW1aaaabb;	1 Byte in Speicher schreiben (mehrere gingen nicht)

Der „hin“-String steckt stets im „Item“-Name.
Die ominösen Endemarkierungen (:>;) aktivieren die automatischen Prüfsummenberechnungen im DDE-Server. Damit bleiben diese dem SENSOKOM-Programm erspart.
Der Mikrocontroller des Sensokom-Moduls speichert Word- und DWord-Werte in Motorola-Notation!

#$K+{bml Sensokom.bmp} Obskure Menüpunkte?
Einige Menüpunkte sind nicht gerade selbsterklärend; den ersten Hinweis bekommt man jedoch durch Beachtung der Statuszeile!

Bearbeiten – Ansicht – Kennlinie
Der Graf schaltet auf „Kennlinie“ um, d. h. auf Geraden zwischen den Messpunkten. Wenn dies schon so eingestellt ist, passiert nichts.

Bearbeiten – Ansicht – Messpunkte
Der Graf schaltet auf „Säulendiagramm“ um, d. h. auf Geraden zwischen der Nulllinie und den Messpunkten. Wenn dies schon so eingestellt ist, passiert nichts.

Bearbeiten – Wertebereich – Benutzerdefiniert
Für die Grenzen der angezeigten Y-Werte (Ordinate) können eigene Angaben gemacht werden, bspw. zur vergrößerten Darstellung kleiner Messwerte, oder zum Angleichen mehrerer Messreihen (bspw. vor dem Ausdruck). Es folgt ein Dialog zur Eingabe der beiden Grenzen.
Bei Messen – Start werden die Grenzen ebenfalls vorher abgefragt; größere Messwerte werden jedoch trotzdem aufgezeichnet.

Bearbeiten – Wertebereich – Erfasster
Für die Grenzen der angezeigten Y-Werte (Ordinate) werden automatisch Minima und Maxima der Messwerte herangezogen.
Auch während des Messens (nach Messen – Start) werden Minima und Maxima ständig aktualisiert, und die Kurve wird gestaucht.
Steht der (interne) Schalter bereits auf automatische Anpassung, passiert beim Anwählen dieses Menüpunktes nichts.

Bearbeiten – Wertebereich – Nulllinie erzwingen
Da bei der automatischen Grenzwertermittlung bei ausschließlich positiven (oder negativen) Messwerten keine Null zu sehen wäre, kann mit diesem Schalter die Nulllinie erzwungen werden, d. h. das Minimum ist stets £ 0 und das Maximum stets ³ 0.
Das Anwählen des Menüpunktes schaltet den Status wechselweise ein und aus, ein Haken zeigt den Schaltzustand an.

Bearbeiten – Raster
Im eingeschalteten Zustand werden 9 gleichverteilte waagerechte Rasterlinien eingeblendet.
Das Anwählen des Menüpunktes schaltet den Status wechselweise ein und aus, ein Haken zeigt den Schaltzustand an.

Bearbeiten – Kopieren
Das gerade angezeigte Diagramm wird als Vektorgrafik in die Zwischenablage kopiert. So kann das Bild bequem weiterverarbeitet und in hoher Qualität ausgedruckt werden.
Die Ablage erfolgt im anisotropischen Modus, d. h. der Anwender darf die Grafik beliebig in X- und Y-Richtung skalieren; übertreiben sollte man es aber nicht.

Messen – Starten
Es geht nicht sofort los; vorher werden Intervall (= Zeit zwischen 2 Messungen) und beabsichtigte Anzahl der Messungen erfragt.
Bei benutzerdefiniertem Wertebereich werden außerdem noch die Grenzen der darzustellenden Messwerte abgefragt.
Erst dann geht es los – Abbruch kann jederzeit mit der ESC-Taste und dem entsprechenden Menüpunkt erfolgen.

# Messen – Unendlich messen
Nicht ganz unendlich: Nach Erfassung der beabsichtigten Anzahl von Messungen werden 10 weitere Messungen angehangen, solange, bis der verwendete Speicher voll ist: Bei 16 bit der lokale Heap, also max. ca. 40 KByte (ca. 1500 Werte), bei 32 bit … wahrscheinlich bis der Rechner wegen Speichermangel abstürzt.
Dabei wird in der Anzeige die Messkurve entsprechend gestaucht, um rechts Platz für weitere Werte zu machen.

Messen – Stoppen
Das ist beinahe selbsterklärend.
Die noch verbleibenden Messpunkte werden (aus dem Speicher) verworfen, die Kurve in horizontaler Richtung gestreckt.

#$K+{bml Sensokom.bmp} Weiterführende Dokumentationen
Hier befinden sich Hinweise, die sowohl das Verständnis der Software-Bedienung fördern soll, als auch zur Pflege und Weiterentwicklung des Programms SENSOKOM.EXE und der zugehörigen Hardwarekomponenten.

Hilfe erstellen
Der Hilfe-Quelltext (sensokom.rtf) wurde mit Microsoft Word 2.0 erstellt.
Diese Hilfe ist mit folgenden Kommandozeilen zu erstellen:
rtfmod -e sensokom.rtf
hcp sensokom.hpj
copy sensokom.hlp ..

# {bml Sensokom.bmp} SENSOKOM © h#s 2004. Erstellt mit BORLAND C 3.1..5.0. Dieses Programm wurde für die Technische Universität Chemnitz, Fachbereich Mess- und Sensortechnik, angefertigt.