Bedienungsanleitung: B1807961.TXT zu Superwatchdog SWD1 Datum:18.07.1996 Ing.-Bro 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 hierfr 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 gedrckt 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 rckgesetzt. 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 mssen Sie noch das Status-FF fr 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 zurck. Nach einem solchen Resetpuls sind alle Daten im SWD1 gel”scht, so daá Sie diese neu laden mssen. Der Datenaustausch zwischen CPU und SWD1 erfolgt bitseriell ber den Datenbus (D7). Das ist zwar programmiertechnisch etwas mhselig, 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 zurckgesetzt. Bevor Sie also ein Bit an SWD1 schreiben, mssen Sie vorher durch Statusabfrage prfen, 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 zurckgesetzt. Bevor Sie also ein Bit von SWD1 lesen, mssen Sie per Statusabfrage testen, ob berhaupt ein neues Bit zur Verfgung steht. Bitte beachten Sie, daá das Setzen bzw. Rcksetzen 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 ausfhren. SWD1 fhrt 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 ;lade z„hler 1, 16 bit 02h ;lade z„hler 2, 16 bit 03h ;lade z„hler 3, 16 bit 04h ;lade z„hler 1,2,3 05h ;start z„hler 1 06h ;stop z„hler 1 07h ;alle z„hler = 0 08h ;reset pc fr 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 fr lfter ein 12h ;temp.regler fr Lfter aus 13h ;pieper 63 ein 14h ;pieper 63 aus 15h ;spannungs- & temperaturberwachung ein 16h ;spannungs- & temperaturberwachung aus 17h ;usv-berwachung ein 18h ;usv-berwachung aus 19h ;zeittackt 1 sec 1ah * ;z„hlerstand auslesen * diese Bytes werden vom Superwatchdog gesendet. Die einzelnen Kommandos lassen sich, soweit sinnvoll, miteinander kombinieren. Sollten die vorhandenen Kommandos fr Ihre Applikation nicht ausreichen, beschreiben Sie uns kurz Ihre Problemstellung und wir prfen 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„á ausgefhrt werden. Nach Ablauf der Interruptzeit z2 beginnt die Resetzeit z3. W„hrend dieser Zeit wird der Resettransistor angesteuert und damit ein harter Reset ausgefhrt. 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 fr 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 krzer als z1. Fgen 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 zurck und beginnen von vorne. Die Funktion d startet den Z„hler auf Ihrem Watchdog und fhrt in kurzen Abst„nden einen Reload aus. Der Reset wird also nicht ausgel”st. Vor der Funktion d mssen 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 fhrt einen Reset des Watchdogs aus. Mit der Funtion x kann der Watchdog laufend resetet werden bis erneut eine Taste gedrckt 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, rckgelesen, angezeigt, 1x reload ausgefhrt 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 zurck. Wird SWD1TI erneut aufgerufen, dann wird SWD1TI wieder aus dem Speicher entfernt. Mit dem Aufruf von SWD1TI k”nnen Sie geeignete Initialisierungswerte fr 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 "abgestrzt" 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 erfllt 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 zurckgesetzt 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 ausgefhrt 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 fr 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 Bezglich der Positionierung des Temperaturfhlers (NTC) beachten Sie bitte die Hinweise unter "Lfterausgang". 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 aufgefhrten 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 Verfgung stellen mssen. 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 ausgefhrt 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 wrde Ihr System sofort abstrtzen, da ein Shut Down ausgel”st wird. Aus diesem Grund ist es wichtig, z.B. folgende Reihenfolge auszufhren: 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 mssen zwei Bytes vom SWD1 zurckgelesen 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 drfen 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 Lfterausgang ================= Am Lfterausgang (50 oder 51) k”nnen Sie einen normalen 12V PC-Lfter anschlieáen. Ist das Lfterkommando nicht aktiviert, so ist der Lfter st„ndig eingeschaltet (nach Reset, Pgm. SWD1CMD in autoexec.bat einfgen!!!!). Ist der Lfter aktiviert (Kommando 11h), so wird der Lfter eingeschaltet, wenn am Temperaturfhler (Pos.26; NTC1; 2k7) ca. 35øC herrschen. Es ist darauf zu achten, daá sich der Temperaturfhler 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, prfen Sie bitte seine Funktion z.B. mit einem F”hn.