$#+ Übersicht
{bmc wand.bmp}
Relaiswand; die Steckdosen rechts unten werden geschaltet
Dieses Programm ist vorgesehen für:
•	Temperatursteuerung und -kontrolle in Thermokammer bei Abwesenheit
•	Aufnahme langwieriger Messreihen

Dieses Programm ermöglicht:
•	die zeitliche Steuerung von 8 Relais
•	die triggergesteuerte Steuerung der Relais (3 Eingänge)
•	die Steuerung von 3 weiteren Ausgängen (neben den 8 Relais)

Dieses Programm benötigt:
•	Windows 95 oder höher, Windows NT 4 oder neuer (getestet mit Windows XP SP2)
•	eine Parallelport-Relaiskarte (Conrad, Pollin, Reichelt – sind eh’ alle gleich)
•	eine Aufstock-Karte mit 3 opto-isolierten (prellfreien) Trigger-Eingängen und 3 Trigger-Ausgängen (Entwicklung an der TU Chemnitz) [es geht aber auch ohne]
•	ein Parallelport (direkt, PCMCIA oder h#s USB2LPT), USB-Druckerkabel funktionieren nicht L
•	Administratorrechte zum Zugriff aufs Parallelport (nur NT4 oder höher) M
•	so gut wie keinen Platz auf Ihrer Festplatte J

Features:
•	Es wird alles automatisch gespeichert. In einer handhabbaren INI-Datei, nicht in der Registry. Das zuletzt verwendete Programm, die aktuelle Zeile, die Fensterposition und -größe…
•	Natürlich gibt’s auch den normalen Datei-Öffnen- und -Speichern-Dialog
•	Eine Log-Datei wird bei Bedarf mitgeschrieben
•	Drag-und-Drop
•	Starten einer Anwendung (neben der Relaissteuerung)
•	Alle Eingabe-Elemente mit Hilfefunktion mittels F1-Taste

Programm-Erstellung (Hilfsmittel):
•	Visual C 8 (Visual Studio 2005)
•	Hilfe-Compiler (Help Workshop)
•	ein Installations-Erstellungs-Programm wurde nicht verwendet, viel zu viel Overhead

geschrieben:
•	Henrik Haftmann, 11/06 – 4/07

$#+ Trigger-Eingänge
{bmc box.bmp}
Blick in die Steuerbox
Die linke Klemmenleiste sowie die linken drei BNC-Buchsen sind die drei Trigger-Eingänge.
Mittels Schalter wird ausgewählt, ob die Quelle eine Gleichspannung oder ein Kontakt ist.
Betriebsart Quelle = Spannungsquelle (Schalthebel oben):
Gleichspannung 5 .. 48 V
Polarität der angelegten Spannungsquelle egal.
Strombelastung: 1 mA bei 48 V
Alle Eingänge sind komplett potenzialfrei.
Betriebsart Quelle = Kontakt (Schalthebel unten):
Gleichspannungsausgang 24 V, Kontaktstrom: 0,5 mA
Polarität: Pluspol innen (BNC) bzw. bezeichnete Schraubklemme
Anschlüsse sind untereinander potenzialmäßig verbunden, jedoch potenzialfrei zur übrigen Schaltung (PC, Trigger-Eingänge in Betriebsart Quelle = Spannungsquelle, Trigger-Ausgänge).
Schalterstellung und Anschlüsse: siehe auch beiliegenden Handzettel!
Prellfreiheit durch Verwendung von Optokopplern.

$#+ Trigger-Ausgänge
{bmc box.bmp}
Blick in die Steuerbox
Die rechte Klemmenleiste sowie die rechten drei BNC-Buchsen sind die drei Trigger-Ausgänge.
Mittels Schalter wird ausgewählt, ob der Ausgang eine Gleichspannungsquelle oder ein Kontakt ist.
Betriebsart Spannungsquelle (Schalthebel unten):
24 V, Pluspol innen (BNC) bzw. bezeichnete Schraubklemme.
Strombelastbarkeit: 100 mA (Summe aller drei Ausgänge).
Spannungsquelle-Ausgänge sind untereinander potenzialmäßig verbunden, jedoch potenzialfrei zur übrigen Schaltung (PC, Trigger-Ausgänge in Betriebsart Kontakt, Trigger-Eingänge).
Betriebsart Kontakt (Schalthebel oben):
Schaltspannung max. 48 V, Schaltstrom max. 1 A, mit selbstrückstellender Sicherung abgesichert.
Polarität der angelegten Spannungsquelle egal.
Als Kontakt fungiert ein Optokoppler mit Darlington-Transistor und Gleichrichter, sodass wegen der Diodenflussspannungen die direkte Ansteuerung eines TTL-kompatiblen Eingangs nicht möglich ist. Als Ausweg benutze man die Betriebsart Spannungsquelle und einen npn-Hilfstransistor mit Basisvorwiderstand 4,7 kW.
„Hochgezogene“ CMOS- und Schmitt-Trigger-Eingänge (mit Schaltschwelle bei 2,5 V) sollten keine Probleme machen.
Alle Ausgänge sind komplett potenzialfrei.
Schalterstellung und Anschlüsse: siehe auch beiliegenden Handzettel!
Prellfreiheit durch Verwendung von Optokopplern.

$#+ {bmc radio.bmp} Uhrzeit
Auswahl einer Uhrzeit als Auslöser für die ausgewählte Zeile des Programms.
Die Uhrzeit bezieht sich auf den nächstmöglichen Treffer, also ggf. am nächsten Tag!

$#+ {bmc check.bmp} Relativ-Zeit
Die Zeitangabe bezieht sich nicht auf Mitternacht, sondern auf den Start des Programms. So als ob die Uhr beim Programmstart auf 0 Uhr gestellt worden wäre.

$#+ {bmc radio.bmp} Wartezeit
Auswahl einer Wartezeit oder Dauer als Auslöser für die ausgewählte Zeile des Programms.

$#+ {bmc edit.bmp} Stunde
Eingabe einer Uhrzeit oder Wartezeit in ganzen Stunden (zusätzlich zu den anderen Angaben).
Bei Wartezeit sind 255 Stunden (reichlich 10 Tage) möglich, sonst nur bis max. 23 h.

$#+ {bmc edit.bmp} Minute
Eingabe einer Uhrzeit oder Wartezeit in ganzen Minuten (zusätzlich zu den anderen Angaben).
Nur bis max. 59 min.

$#+ {bmc edit.bmp} Sekunde
Eingabe einer Uhrzeit oder Wartezeit in ganzen Sekunden (zusätzlich zu den anderen Angaben).
Nur bis max. 59 s.

$#+ {bmc edit.bmp} Hundertstel
Eingabe einer Uhrzeit oder Wartezeit in Hundertstel Sekunden (zusätzlich zu den anderen Angaben).
Nur bis max. 99 1/100 s.

$#+ {bmc radio.bmp} Trigger
Auswahl eines externen Pegels oder Ereignisses als Auslöser für die ausgewählte Zeile des Programms.
Das Programm wird fortgesetzt, wenn der externe Pegel den angegebenen Zustand hat.
Tipp:	Auf eine Flanke warten Sie, indem Sie zwei Programmschritte mit entgegen gesetzten Pegeln direkt aufeinander folgen lassen.
Tipp:	Auf einen Pegel nach Ablauf einer Mindestzeit warten Sie, indem Sie davor einen Programmschritt mit Wartezeit platzieren.
Hinweis:	Eine Höchstzeit auf einen Pegel zu warten ist zurzeit nicht möglich.

$#+ {bmc edit.bmp} Trigger
Eingabe einer Triggerquelle 1, 2 oder 3.
Den aktuellen Zustand kann man an der Anzeige links unten sehen.
Siehe:	Hardware-Anschluss

$#+ {bmc radio.bmp} Trigger High
Programmfortsetzung wenn Triggerquelle High ist (d.h. Spannung vorhanden oder Kontakt geschlossen).
Den aktuellen Zustand kann man an der Anzeige links unten sehen.
Siehe:	Hardware-Anschluss

$#+ {bmc radio.bmp} Trigger Low
Programmfortsetzung wenn Triggerquelle Low ist (d.h. keine Spannung oder Kontakt offen).
Den aktuellen Zustand kann man an der Anzeige links unten sehen.
Siehe:	Hardware-Anschluss

$#+ {bmc check.bmp} Schleifen-Start
Mit der.ausgewählte Zeile des Programms beginnt eine Schleife mit der daneben angebbaren Anzahl von „Runden“.
Es müssen genauso viele Schleifen-Enden im Programm vorhanden sein.
Die maximale Verschachtelungstiefe beträgt 6.

$#+ {bmc edit.bmp} Runden
Anzahl der Schleifendurchläufe zwischen Schleifen-Start der ausgewählte Zeile des Programms und zugehörigem Schleifen-Ende.
0 bedeutet unendlich und darf nur in der äußersten Schleife verwendet werden. Der Abbruch ist dann nur mit der Stopp-Taste möglich.

$#+ {bmc check.bmp} Schleifen-Ende
Mit der ausgewählten Zeile des Programms endet eine Schleife.
Schleifen-Beginn und Schleifen-Ende dürfen in einem Programmschritt zusammen fallen;
dies ist jedoch selten sinnvoll.

$#+ {bmc edit.bmp} Programm-Start
Mit Erreichen der Triggerbedingung wird ein beliebiges (DOS- oder Windows-) Programm gestartet. Es kann auch ein Dokument „gestartet“ werden. Die Angabe von Kommandozeilenparametern ist hiermit möglich.
Sinnvoll für weitergehende Automatisierungsmaßnahmen. Als Spielerei kann auch eine Musik-Datei wiedergegeben werden.
Mit der Taste „…“ daneben kann eine Datei ausgewählt werden.
Löschen des Programmstarts erfolgt durch Leeren dieses Eingabefeldes.

$#+ {bmc but.bmp} Auswahl Programm-Start
Mit Erreichen der Triggerbedingung wird ein beliebiges (DOS- oder Windows-) Programm gestartet. Es kann auch ein Dokument „gestartet“ werden.
Löschen des Programmstarts erfolgt durch Leeren des Eingabefeldes links daneben.
Die Angabe von Kommandozeilenparametern erfolgt ebenfalls über die Eingabezeile.

$#+ {bmc led0.bmp} LED-Anzeige Relais-Ausgänge
Anzeige und Steuerung der Relais. Steuerung mit Mausklick oder Tasten 1 bis 8.
Taste 9 schaltet alle Relais ein, Taste 0 schaltet alle Relais aus.

$#+ {bmc but.bmp} Alles EIN
Schaltet alle Relais ein.

$#+ {bmc but.bmp} Alles AUS
Schaltet alle Relais aus.

$#+ {bmc led1.bmp} LED-Anzeige Trigger-Eingänge
Anzeige der Trigger-Eingänge. Keine Steuermöglichkeit!
Siehe:	Hardware-Anschluss

$#+ {bmc led2.bmp} LED-Anzeige Trigger-Ausgänge
Anzeige und Steuerung der Trigger-Ausgänge. Steuerung mit Mausklick oder Tasten 1 bis 3.
Taste 9 schaltet alle Ausgänge ein, Taste 0 schaltet alle Ausgänge aus.
Siehe:	Hardware-Anschluss

$#+ {bmc ZeileNeu.bmp} Neue Programm-Zeile
Fügt eine Programmzeile oberhalb der markierten Zeile ein. Alle Daten werden von der markierten Zeile übernommen (svw. kopiert).
7	Einfg-Taste in Programm-Liste drücken.
Tipp:	Zum Anhängen von Programmzeilen klicken Sie einfach mit der Maus in die Freifläche.

$#+ {bmc ZeileLöschen.bmp} Programm-Zeile löschen
Löscht die markierte Programmzeile.
7	Entf-Taste in Programm-Liste drücken.

$#+ {bmc ZeileRunter.bmp} markierte Zeile nach unten
Bewegt die markierte Programmzeile nach unten.
7	Strg+â-Taste in Programm-Liste drücken.

$#+ {bmc ZeileHoch.bmp} markierte Zeile nach oben
Bewegt die markierte Programmzeile nach oben.
7	Strg+á-Taste in Programm-Liste drücken.

$#+ Programm-Liste
Mehrspaltige Liste für das Steuerprogramm.
	Spalte	Bedeutung
	1	Trigger-Bedingung
	2	Schleifen-Parameter
	3	{bmc led0.bmp} Voreinstellung der Relais
	4	{bmc led2.bmp} Voreinstellung der Trigger-Ausgänge
Hinweis:	Die Eingabe der Trigger-Bedingung und Schleifen-Parameter erfolgt im linken Teil des Dialogs!
Hinweis:	Voreinstellungen für Relais und Trigger-Ausgänge werden erst beim Verlassen der Programmzeile wirksam!
7	Neben den üblichen Tasten folgende Extra-Funktionen
Einfg	= neue Programm-Zeile
Entf	= markierte Zeile löschen
Strg+â	= markierte Zeile nach unten
Strg+á	= markierte Zeile nach oben
1..8	= Relais voreinstellen (grüne LEDs)
A..C	= Trigger-Ausgänge voreinstellen (gelbe LEDs)
8	Neben den üblichen Maus-Funktionen folgende Extras
Klicken auf grüne LED: Relais voreinstellen
Klicken auf gelbe LED: Trigger-Ausgänge voreinstellen
Klicken auf Weißraum unten: neue Programmzeile anhängen

$#+ {bmc but.bmp} Start
Start des Relais-Steuerprogramms.
Die Logdatei wird fortgeführt und ein Start-Eintrag eingesetzt.
Die aktuelle Zeile (in der auf das angegebene Ereignis gewartet wird) wird gelb hervorgehoben.
Die Relais und die Triggerausgänge werden nachher gesetzt!
Die Statusanzeige wechselt zur Anzeige der Laufzeit.
Programmende durch Drücken von Stop.
Programmfortschaltung durch Schritt.
Den aktuellen Stand der Relais und Trigger-Ein/Ausgänge kann man am Anzeigefeld sehen und auch beeinflussen.

$#+ {bmc but.bmp} Stopp
Anhalten und Beenden des Relais-Steuerprogramms.
Die Logdatei wird um einen Eintrag ergänzt und geschlossen.
Relais oder Trigger werden nicht gesetzt!
Die Statusanzeige wechselt zur Anzeige der geschätzten Ausführungszeit.

$#+ {bmc but.bmp} Schritt
Start oder Fortsetzen des Programms um 1 Schritt.
Ideal zum Testen – oder wenn überraschend ein Trigger ausfällt.

$#+ {bmc edit.bmp} Adresse
Festlegung der Portadresse des verwendeten Parallelports.
M	Sie können (für PCMCIA-Karten) eine wahlfreie Adresse eingeben.
Der verwendete Treiber öffnet ein riesiges Sicherheitsloch, und mit der Adresse Ihrer Festplatte o.ä. können Sie durchaus richtig Schaden anrichten.

$#+ {bmc check.bmp} Strobe benutzen
Die (hier verwendete) Sundox-Relaiskarte benötigt Strobe zur Übernahme der Relais-Ausgabe.
Karten von Conrad, Reichelt und Pollin benötigen kein Strobe, es stört jedoch nicht.
In einer späteren Softwareversion könnte RELAIS.EXE mehr Trigger- Ein- und Ausgänge unterstützen…

$#+ {bmc check.bmp} Piepser bei jedem Schritt
Zur akustischen Untermalung eines Schrittes. Gilt nicht für die Taste „Schritt“, solche Schritte bekommen keinen Sound.