home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 4 Drivers
/
04-Drivers.zip
/
swd092.zip
/
B1807961.TXT
next >
Wrap
Text File
|
1996-07-24
|
17KB
|
353 lines
Bedienungsanleitung: B1807961.TXT zu Superwatchdog SWD1 Datum:18.07.1996
Ing.-Büro Sontopski 21465 Reinbek Tel/Fx:040-7223566
Adreßeinstellung
================
Ihr SWD1 belegt 2 Adressen im I/O-Bereich Ihres PC's. Ein gesteckter
Jumper bedeutet eine 0 dieser Adreßleitung.
A1 = 0 (intern; nicht zugänglich)
A0 = 0 IN/OUT Datenport
A0 = 1 IN -> Statusport
A0 = 1 OUT -> Reset SWD1
Beispiel: A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
X I I X I X X I I = Jumper; X = offen
1 0 0 1 0 1 1 0 0 0/1
2 5 8/9 -> 258h / 259h
PC-Reseteingang
===============
Ein Reset Ihres PC's wird dadurch ausgelöst, daß der Eingang eines
speziell hierfür vorgesehenen IC's auf Masse gelegt wird. Dies geschieht
üblicherweise durch den Resettaster. Diesem Resettaster wird beim SWD1
ein Transistorausgang parallelgeschaltet. Ist die Retriggerzeit des
SWD1 abgelaufen, wird der Transistor durchgeschaltet und dadurch ein
harter Reset ausgelöst, so als ob Sie die Resettaste gedrückt haben.
Installation
============
Schalten Sie Ihren PC aus und ziehen den Netzstecker. Öffnen Sie das
Gehäuse und stecken SWD1 in einen freien ISA-Steckplatz. Lösen Sie das
Verbindungskabel, welches vom Resettaster zum Motherboard geht, vom
Motherboard und stecken den Stecker auf den ersten Resetausgang (38) des
SWD1. Verbinden Sie nun den freigewordenen Steckplatz des Motherboards
mit dem beiliegendem Kabel mit dem zweiten Resetausgang (39) des SWD1.
Die beiden Resetausgänge des SWD1 sind parallegeschaltet. Bei dieser
Verdrahtung können zwei Probleme entstehen.
Das Kabel zum SWD1 ist verdreht. Hierdurch hat Ihr PC Dauerreset.
In der Nähe des Reseteingangs des Motherboards befinden sich Stifte,
auf denen die Betriebsspannung Ihres PC's liegt. Da eine der beiden
Leitungen, die zum SWD1 geht, Masse hat, kann es also zum Kurzschluß
kommen wenn Sie den Stecker falsch aufstecken. Dies ist zwar nicht
schlimm, da PC-Netzteile üblicherweise kurzschlußfest sind, aber Ihr
PC funktioniert eben nicht. Da PC-Netzteile teilweise sehr hohe
Ströme liefern können, besteht die Möglichkeit, daß das
Verbindungskabel verschmorrt. Bitte beobachten Sie daher beim
Einschalten Ihres PC's das Verbindungskabel und korrigieren eventuell
den Sitz des Steckers.
Nach erfolgreicher Installation sollte Ihr Resettaster wie gewohnt
funktionieren.
Software
========
Bevor Sie irgendwelche Daten an SWD1 senden, sollten Sie diesen in einen
definierten Zustand bringen. Dies geschieht dadurch, daß Sie einen
Resetpuls per Software auf dem SWD1 auslösen. Wenn Sie 10h zur
Statusadresse schreiben wird SWD1 rückgesetzt. Wenn Sie 82h zur
Statusadresse schreiben, wird SWD1 wieder freigegeben. Halten Sie den
Reset min. 50msec aktiv. Nach einem Reset warten Sie min. 50msec bis Sie
Softwarekommandos an SWD1 senden. Nach einem solchen Reset müssen Sie
noch das Status-FF für den Dateneingang in einen definierten Zustand
bringen. Dies erreichen Sie durch Lesen der Datenadresse (in al,dx).
Sollte SWD1 einmal "hängen" und auf Ihre Kommandos nicht mehr reagieren,
setzen Sie SWD1 wie beschrieben zurück. Nach einem solchen Resetpuls
sind alle Daten im SWD1 gelöscht, so daß Sie diese neu laden müssen.
Der Datenaustausch zwischen CPU und SWD1 erfolgt bitseriell über den
Datenbus (D7). Das ist zwar programmiertechnisch etwas mühselig,
verhindert aber mit sehr großer Sicherheit, daß ein amoklaufendes
Programm zufällig den Watchdog umprogrammiert und damit unbeabsichtigt
außer Funktion setzt. SWD1 hat zwei Status-FF's, deren Zustand Sie durch
lesen der Statusadresse abfragen können. FF1 (D0) wird gesetzt, wenn Sie
ein Bit zum SWD1 schreiben. Wenn SWD1 dieses Bit abholt, wird FF1 wieder
zurückgesetzt. Bevor Sie also ein Bit an SWD1 schreiben, müssen Sie
vorher durch Statusabfrage prüfen, ob das vorher gesendete Bit bereits
abgeholt wurde. FF2 (D1) wird gesetzt, wenn SWD1 ein Bit an die CPU
senden will. Wenn Sie dieses Bit einlesen, wird FF2 automatisch wieder
zurückgesetzt. Bevor Sie also ein Bit von SWD1 lesen, müssen Sie per
Statusabfrage testen, ob überhaupt ein neues Bit zur Verfügung steht.
Bitte beachten Sie, daß das Setzen bzw. Rücksetzen der Status-FF's von
Seiten SWD1 per Software passiert. Nach jeder Schreib- bzw Leseaktion
sollten Sie daher min. 100usec warten, bis Sie eine erneute Aktion
ausführen.
SWD1 führt seine Aktionen aus, wenn bestimmte Kommandos übergeben
werden. Ein Kommando kann aus dem Kommandobyte und je nach Notwendigkeit
diversen Datenbytes bestehen. Zur Zeit sind folgende Kommandos
implementiert:
Kommando- Daten- ;Aktion
byte byte(s)
01h <z1_l><z1_h> ;lade zähler 1, 16 bit
02h <z2_l><z2_h> ;lade zähler 2, 16 bit
03h <z3_l><z3_h> ;lade zähler 3, 16 bit
04h <z1_l><z1_h>
<z2_l><z2_h>
<z3_l><z3_h> ;lade zähler 1,2,3
05h ;start zähler 1
06h ;stop zähler 1
07h ;alle zähler = 0
08h ;reset pc für 1 sec
09h ;setze zähler 1 auf anfangswert
0ah ;relais 81 ein während t3
0bh ;relais 86 ein während t3
0ch ;pieper 63 ein während t3
0dh ;relais 81 ein
0eh ;relais 81 aus
0fh ;relais 86 ein
10h ;relais 86 aus
11h ;temp.regler für lüfter ein
12h ;temp.regler für Lüfter aus
13h ;pieper 63 ein
14h ;pieper 63 aus
15h ;spannungs- & temperaturüberwachung ein
16h ;spannungs- & temperaturüberwachung aus
17h ;usv-überwachung ein
18h ;usv-überwachung aus
19h ;zeittackt 1 sec
1ah <z(x)_l><z(x)_h>* ;zählerstand auslesen
* diese Bytes werden vom Superwatchdog gesendet.
Die einzelnen Kommandos lassen sich, soweit sinnvoll, miteinander
kombinieren. Sollten die vorhandenen Kommandos für Ihre Applikation
nicht ausreichen, beschreiben Sie uns kurz Ihre Problemstellung und wir
prüfen ob eine Implementierung möglich ist. Bei der Grundfunktion des
Watchdogs laufen drei Zeiten nacheinander ab (z1,z2,z3). Die Rasterung
der Zeit beträgt nach dem Reset 0,1sec . Es sind also max. ca. 6500sec
pro Zeit möglich (16-Bit). Mit der Funktion 19h läßt sich der Zeittakt
auf 1sec umschalten. Danach sind also 65000sec pro Zeit möglich. Die
eigentliche Watchdogzeit z1, ist die Zeit, in der das zu überwachende
Programm das Reload-Kommando 09h (setze Zähler 1 auf Anfangswert) an
SWD1 senden sollte, bevor diese Zeit abgelaufen ist. Bleibt dieses
Kommando aus, beginnt die Interruptzeit z2. Während dieser Zeit wird ein
Interrupt, soweit ein entsprechender Jumper gesetzt ist, ausgelöst. Ein
geeignetes Programm kann in dieser Zeit versuchen Daten aus dem RAM auf
die Platte zu sichern. Diese Möglichkeit ist jedoch mit Vorsicht zu
genießen, da das Reload-Kommando ja nicht grundlos ausgeblieben ist.
Sollte sich Ihr Programm jedoch in einer Endlosschleife aufgehängt
haben, besteht guter Grund zu hoffen, daß Interrupts noch ordnungsgemäß
ausgeführt werden. Nach Ablauf der Interruptzeit z2 beginnt die
Resetzeit z3. Während dieser Zeit wird der Resettransistor angesteuert
und damit ein harter Reset ausgeführt. Nach unserer Erfahrung sollte
diese Zeit min. 0,2sec dauern um einen sicheren Reset Ihres PC's
auszulösen. Am Ende der Resetzeit z3 werden eventuell gesetzte Relais
und der Pieper abgeschaltet.
Bei der Implementierung des Watchdogs in Ihre Software gehen Sie bitte
wie folgt vor:
Initialisierung des PC-Timer auf lineares Zählen (wichtig für Delays);
Unterprogramm => tim0_ini.
Reset des Wachdogs;
Unterprogramm => resmc.
Kommando 04: Laden des Watchdogs mit z1, z2, z3.
Kommando 05: Starten des Watchdogs.
Kommando 09: Zyklisches Reloaden des Watchdogs in einer Zeit
kürzer als z1. Fügen Sie den Reloadbefehl 09
möglichst in Ihre wichtigste Programmschleife ein,
die regelmäßig durchlaufen wird.
Pgm. SWD1
=========
Das Programm SWD1 dient zum Test Ihres Watchdogs. Die Funktion c erlaubt
Ihnen die Eingabe der implementierten Kommandos. Sollte nach der
Eingabe von Kommandos oder Daten die Meldung "Übertragungsfehler"
kommen, setzen Sie Ihren Watchdog zurück und beginnen von vorne. Die
Funktion d startet den Zähler auf Ihrem Watchdog und führt in kurzen
Abständen einen Reload aus. Der Reset wird also nicht ausgelöst. Vor der
Funktion d müssen mit der Funktion c sinvolle Zählerwerte eingegeben
werden. Die Funktion r läßt den Zähler auf dem Watchdog durchlaufen, so
daß nach Ablauf der eingegebenen Zeiten ein Reset des PC's ausgelöst
wird. Die Funktion s stoppt dem Watchdog und führt einen Reset des
Watchdogs aus. Mit der Funtion x kann der Watchdog laufend resetet
werden bis erneut eine Taste gedrückt wird. Die Funktion t testet
diverse Bauteile und Funktionen Ihres Watchdogs. So werden die Relais
und der Pieper mehrmals ein/ausgeschaltet. Die Zähler geladen,
gestartet, rückgelesen, angezeigt, 1x reload ausgeführt und das
Zeitraster von 0,1sec auf 1sec umgeschaltet.
Pgm. SWD1TI
===========
Das Programm SWD1TI klinkt sich resident in den Zeitgeberinterrupt ein
und setzt den Watchdog ca. alle 0,1sec zurück. Wird SWD1TI erneut
aufgerufen, dann wird SWD1TI wieder aus dem Speicher entfernt. Mit dem
Aufruf von SWD1TI können Sie geeignete Initialisierungswerte für die
Timer z1, z2, z3 übergeben, z. B.:
SWD1TI C8 64 0A ( z1 = 20sec, z2 = 10sec, z3 = 1sec)
Werden keine Werte mit dem Aufruf übergeben, dann wird standardmäßig
z1 = 64h, z2 = 00h, z3 = 0ah
angenommen.
Bei der Verwendung von SWD1TI ist zu bedenken, daß es sich hierbei um
ein Interruptprogramm handelt. Wenn Ihr Programm "abgestürzt" ist, dann
kann dies verschiedene Ursachen haben. Eine Möglichkeit ist, Ihr
Programm befindet sich in einer Endlosschleife weil z.B. eine bestimmte
Bedingung nicht erfüllt wird oder ein Bit umgekippt ist und aus einem jz
ein jnz geworden ist. Das bedeutet aber, daß Interrupts durchaus
ordnungsgemäß bedient werden und damit der Watchdog regelmäßig
zurückgesetzt wird. Aus diesem Grund ist auch das Aufrufen des
Reloadbefehls in einer Interruptroutine möglichst zu vermeiden.
Pgm. SWD1CMD
============
Mit dem Programm SWD1CMD können Sie bei Programmaufruf Kommandos an den
Watchdog übergeben. Wird kein Kommando angegeben, dann erfolgt ein Reset
des Watchdog. Das folgende Batchprogramm wäre eine typische
Anwendung, wobei das Progamm USER automatisch nach einer
bestimmten Zeit (hier ca. 1h) verlassen wird, ein Reload des
WD's ausgeführt wird und anschließend wieder das Programm USER
gestartet wird.
SWD1CMD ;Reset Watchdog
SWD1CMD 04 9000 10 05 ;Kommando 04 -> lade z1 mit 9000h
;z2 mit 10h, z3 mit 05h
SWD1CMD 05 ;Start Zähler z1
:loop USER ;Anwenderprogramm
SWD1CMD 09 ;Reload Watchdog
goto loop
Vor dem ersten Kommando muß, wie hier gezeigt, ein Reset erfolgen.
Funktion 15h
============
Mit der Funktion 15h können Sie zusätzlich die Spannungen (+5V, +12V,
-12V) und die Temperatur Ihres PC's überwachen. Mit dem Aufruf der
Funktion 15h zieht Relais 81 an. Einen der jetzt geöffneten Kontakte
können Sie für Fernalarmzwecke verwenden. Das Relais 81 wird
abgeschaltet (Ruhekontakt, Failsafe!!), wenn einer oder mehrere der
folgenden Fehler auftreten:
Spannung +5V = < 4,5V
Spannung +12V = < +10V
Spannung -12V = < -10V
Temperatur = > 65 Grad C ( R27 = 1k )
Temperatur = > 35 Grad C ( R27 = 2k7 )
Watchdogzeiten z1, z2 abgelaufen
Netzspannung des PC's weg
Bezüglich der Positionierung des Temperaturfühlers (NTC) beachten Sie
bitte die Hinweise unter "Lüfterausgang".
Funktion 17h
============
Diverse Betriebssysteme (Novell, OS/2, Windows NT) ermöglichen den
Anschluß des Rechners an USV-Anlagen (unterbrechungsfreie
Spannungsversorgung). Diese Anlagen haben häufig zwei Ausgänge und
einen Eingang über Optokoppler oder Relais.
Powerfail -> Ausgang "Netzausfall"
Batt. Low -> Ausgang "Akkuspannung zu klein"
Shut Down -> Eingang "USV aus"
Die oben aufgeführten Betriebssysteme überwachen üblicherweise an einer
COM-Schnittstelle folgende Pins (9-pol D-Sub):
Pin 1 (in Carrier Det.) -> +12V Batt. o.k.; -12V Batt. Low
Pin 8 (in CTS) -> +12V Power o.k.; -12V Power failed
Pin 7 (out RTS) -> +12V USV shut down
Pin 5 (Ground) -> Signalmasse
Sollten Sie Ihre USV nicht direkt an die COM-Schnittstelle Ihres
Rechners anschließen können (z.B. TTL-Pegel), dann kann Ihr SWD1
zusätzlich auch diese Aufgabe übernehmen. Die folgende Tabelle zeigt
Ihnen den Zusammenhang der divsersen Ein- und Ausgänge.
Signal SWD1 in SWD1 out COM (i/o)
-------------------------------------------------------------------------
Powerfail Pos. 52/1* Pos. 87/2 Pin 8
Batt. Low Pos. 57/1 Pos. 87/4 Pin 1
Shut Down Pos. 87/5 Pos. 42/1 Pin 7
Ground Pos. 52/2 Pos. 87/7 Pin 5
*Pos. 52/1 -> Steckverbinder 52 Pin 1 , Schaltplan S1401952.
Sollte es sich bei dem Shut-Down-Eingang Ihrer USV um einen Optokoppler
oder ein Relais handeln, dann kann es notwendig sein, daß Sie zum
Erzielen des notwendigen Schleifenstroms eine Spannung zur Verfügung
stellen müssen. Dies erreichen Sie dadurch, daß Sie den Optokoppler
zwischen Pin 1 Pos. 42 und Pin 2 Pos. 71 anschließen. Bei der
zusätzlichen Verwendung des Watchdogs zur USV-Überwachung ist es sehr
wichtig, daß vorher ein Reset (Programm SWD1CMD) des Watchdogs
ausgeführt wird. Erst danach sind die Ausgänge Powerfail und Batt. Low
richtig initialisiert (+12V) so daß es nicht sofort zu einer
Fehlermeldung kommt, wenn Sie den Powermonitor Ihres Betriebssystems
starten. Einige Betriebssyteme haben die unangenehme Eigenschaft beim
Hochfahren die Pins der Schnittstellen zu bewegen (z.B. +12v -> -12V
-> +12V). Ist zu diesem Zeitpunkt schon die USV-Überwachung des
Watchdogs aktiv, so würde Ihr System sofort abstürtzen, da ein Shut Down
ausgelöst wird. Aus diesem Grund ist es wichtig, z.B. folgende
Reihenfolge auszuführen:
Betriebssytem Starten
Reset SWD1 (SWD1CMD)
Powermonitor des Betriebssystems starten
SWD1 USV-Überwachung starten (SWD1CMD 17)
Funktion 19h
============
Mit dieser Funktion können Sie den aktuellen Zählerstand abfragen. Nach
dem Absenden des Funktionsbytes an den SWD1 müssen zwei Bytes vom SWD1
zurückgelesen werden, ansonsten hängt Ihr SWD1.
Der mitgelieferte Sourcecode der Programme in Assembler ist gut
dokumentiert und gibt Ihnen einen Einblick wie Sie Ihren Watchdog
bedienen können.
Die Relaisausgänge
==================
Aufgrung der geringen Isolationsabstände in der 25-pol SUB-D-Buchse
dürfen mit den Relais keine Netzspannungen geschaltet werden. Sollte
dies jedoch notwendig sein, so benutzen Sie bitte ein zusätzliches
externes Relais. Wenn Sie ein 12V-Relais verwenden, können Sie dessen
Spule direkt zum Relais (86) auf der Leiterplatte parallelschalten, da
der Kollektor des Schalttransistors (84) über den Steckverbinder
zugänglich ist. Dieses Zusatzrelais müßten Sie dann z.B. an der
SUB-D-Buchse an Pin 9 und Pin 15 anschließen. Der Strom durch die
Spule eines Zusatzrelais sollte einen max. Strom von 300mA nicht
überschreiten.
Der Lüfterausgang
=================
Am Lüfterausgang (50 oder 51) können Sie einen normalen 12V PC-Lüfter
anschließen. Ist das Lüfterkommando nicht aktiviert, so ist der Lüfter
ständig eingeschaltet (nach Reset, Pgm. SWD1CMD in autoexec.bat
einfügen!!!!). Ist der Lüfter aktiviert (Kommando 11h), so wird der
Lüfter eingeschaltet, wenn am Temperaturfühler (Pos.26; NTC1; 2k7) ca.
35°C herrschen. Es ist darauf zu achten, daß sich der Temperaturfühler
möglichst an einer Stelle befindet, an der mit kritischen Temperaturen
gerechnet wird, z.B. RAM-Bänke, CPU, Netzteil. Hierzu kann es nötig
sein, den NTC-Widerstand auszulöten und über ein Verlängerungskabel an
die entsprechende Stelle zu positionieren. Achten Sie dabei darauf, daß
der NTC-Widerstand isoliert montiert wird. Sollten Sie den
NTC-Widerstand über eine Verlängerung angeschlossen haben, prüfen Sie
bitte seine Funktion z.B. mit einem Föhn.