home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 4 Drivers / 04-Drivers.zip / swd092.zip / B1807961.TXT next >
Text File  |  1996-07-24  |  17KB  |  353 lines

  1. Bedienungsanleitung: B1807961.TXT zu Superwatchdog SWD1  Datum:18.07.1996
  2. Ing.-Büro Sontopski  21465 Reinbek                     Tel/Fx:040-7223566
  3.  
  4. Adreßeinstellung
  5. ================
  6.  
  7. Ihr SWD1 belegt 2 Adressen im I/O-Bereich Ihres PC's. Ein gesteckter
  8. Jumper bedeutet eine 0 dieser Adreßleitung.
  9.  
  10.         A1 = 0   (intern; nicht zugänglich)
  11.         A0 = 0   IN/OUT Datenport
  12.         A0 = 1   IN  -> Statusport
  13.         A0 = 1   OUT -> Reset SWD1
  14.  
  15. Beispiel: A9 A8   A7 A6 A5 A4   A3 A2 A1 A0
  16.            X  I    I  X  I  X    X  I           I = Jumper; X = offen
  17.            1  0    0  1  0  1    1  0  0  0/1
  18.             2          5             8/9        ->  258h / 259h
  19.  
  20. PC-Reseteingang
  21. ===============
  22. Ein Reset Ihres PC's wird dadurch ausgelöst, daß der Eingang eines
  23. speziell hierfür vorgesehenen IC's auf Masse gelegt wird. Dies geschieht
  24. üblicherweise durch den Resettaster. Diesem Resettaster wird beim SWD1
  25. ein Transistorausgang parallelgeschaltet. Ist die Retriggerzeit des
  26. SWD1 abgelaufen,  wird der Transistor durchgeschaltet und dadurch ein
  27. harter Reset ausgelöst, so als ob Sie die Resettaste gedrückt haben.
  28.  
  29. Installation
  30. ============
  31. Schalten Sie Ihren PC aus und ziehen den Netzstecker. Öffnen Sie das
  32. Gehäuse und stecken SWD1 in einen freien ISA-Steckplatz. Lösen Sie das
  33. Verbindungskabel, welches vom Resettaster zum Motherboard geht, vom
  34. Motherboard und stecken den Stecker auf den ersten Resetausgang (38) des
  35. SWD1. Verbinden Sie nun den freigewordenen Steckplatz des Motherboards
  36. mit dem beiliegendem Kabel mit dem zweiten Resetausgang (39) des SWD1.
  37. Die beiden Resetausgänge des SWD1 sind parallegeschaltet. Bei dieser
  38. Verdrahtung können zwei Probleme entstehen.
  39.  
  40. Das Kabel zum SWD1 ist verdreht. Hierdurch hat Ihr PC Dauerreset.
  41.  
  42.    In der Nähe des Reseteingangs des Motherboards befinden sich Stifte,
  43.    auf denen die Betriebsspannung Ihres PC's liegt. Da eine der beiden
  44.    Leitungen, die zum SWD1 geht, Masse hat, kann es also zum Kurzschluß
  45.    kommen wenn Sie den Stecker falsch aufstecken. Dies ist zwar nicht
  46.    schlimm, da PC-Netzteile üblicherweise kurzschlußfest sind, aber Ihr
  47.    PC funktioniert eben nicht. Da PC-Netzteile teilweise sehr hohe
  48.    Ströme liefern können, besteht die Möglichkeit, daß das
  49.    Verbindungskabel verschmorrt. Bitte beobachten Sie daher beim
  50.    Einschalten Ihres PC's das Verbindungskabel und korrigieren eventuell
  51.    den Sitz des Steckers.
  52.  
  53. Nach erfolgreicher Installation sollte Ihr Resettaster wie gewohnt
  54. funktionieren.
  55.  
  56. Software
  57. ========
  58. Bevor Sie irgendwelche Daten an SWD1 senden, sollten Sie diesen in einen
  59. definierten Zustand bringen. Dies geschieht dadurch, daß Sie einen
  60. Resetpuls per Software auf dem SWD1 auslösen. Wenn Sie 10h zur
  61. Statusadresse schreiben wird SWD1 rückgesetzt. Wenn Sie 82h zur
  62. Statusadresse schreiben, wird SWD1 wieder freigegeben. Halten Sie den
  63. Reset min. 50msec aktiv. Nach einem Reset warten Sie min. 50msec bis Sie
  64. Softwarekommandos an SWD1 senden. Nach einem solchen Reset müssen Sie
  65. noch das Status-FF für den Dateneingang in einen definierten Zustand
  66. bringen. Dies erreichen Sie durch Lesen der Datenadresse (in  al,dx).
  67. Sollte SWD1 einmal "hängen" und auf Ihre Kommandos nicht mehr reagieren,
  68. setzen Sie SWD1 wie beschrieben zurück. Nach einem solchen Resetpuls
  69. sind alle Daten im SWD1 gelöscht, so daß Sie diese neu laden müssen.
  70.  
  71. Der Datenaustausch zwischen CPU und SWD1 erfolgt bitseriell über den
  72. Datenbus (D7). Das ist zwar programmiertechnisch etwas mühselig,
  73. verhindert aber mit sehr großer Sicherheit, daß ein amoklaufendes
  74. Programm zufällig den Watchdog umprogrammiert und damit unbeabsichtigt
  75. außer Funktion setzt. SWD1 hat zwei Status-FF's, deren Zustand Sie durch
  76. lesen der Statusadresse abfragen können. FF1 (D0) wird gesetzt, wenn Sie
  77. ein Bit zum SWD1 schreiben. Wenn SWD1 dieses Bit abholt, wird FF1 wieder
  78. zurückgesetzt. Bevor Sie also ein Bit an SWD1 schreiben, müssen Sie
  79. vorher durch Statusabfrage prüfen, ob das vorher gesendete Bit bereits
  80. abgeholt wurde. FF2 (D1) wird gesetzt, wenn SWD1 ein Bit an die CPU
  81. senden will. Wenn Sie dieses Bit einlesen, wird FF2 automatisch wieder
  82. zurückgesetzt. Bevor Sie also ein Bit von SWD1 lesen, müssen Sie per
  83. Statusabfrage testen, ob überhaupt ein neues Bit zur Verfügung steht.
  84. Bitte beachten Sie, daß das Setzen bzw. Rücksetzen der Status-FF's von
  85. Seiten SWD1 per Software passiert. Nach jeder Schreib- bzw Leseaktion
  86. sollten Sie daher min. 100usec warten, bis Sie eine erneute Aktion
  87. ausführen.
  88.  
  89. SWD1 führt seine Aktionen aus, wenn bestimmte Kommandos übergeben
  90. werden. Ein Kommando kann aus dem Kommandobyte und je nach Notwendigkeit
  91. diversen Datenbytes bestehen. Zur Zeit sind folgende Kommandos
  92. implementiert:
  93.  
  94. Kommando-           Daten-             ;Aktion
  95. byte                byte(s)
  96.    01h            <z1_l><z1_h>         ;lade zähler 1, 16 bit
  97.    02h            <z2_l><z2_h>         ;lade zähler 2, 16 bit
  98.    03h            <z3_l><z3_h>         ;lade zähler 3, 16 bit
  99.    04h            <z1_l><z1_h>
  100.                   <z2_l><z2_h>
  101.                   <z3_l><z3_h>         ;lade zähler 1,2,3
  102.    05h                                 ;start zähler 1
  103.    06h                                 ;stop zähler 1
  104.    07h                                 ;alle zähler = 0
  105.    08h                                 ;reset pc für 1 sec
  106.    09h                                 ;setze zähler 1 auf anfangswert
  107.    0ah                                 ;relais 81 ein während t3
  108.    0bh                                 ;relais 86 ein während t3
  109.    0ch                                 ;pieper 63 ein während t3
  110.    0dh                                 ;relais 81 ein
  111.    0eh                                 ;relais 81 aus
  112.    0fh                                 ;relais 86 ein
  113.    10h                                 ;relais 86 aus
  114.    11h                                 ;temp.regler für lüfter ein
  115.    12h                                 ;temp.regler für Lüfter aus
  116.    13h                                 ;pieper 63 ein
  117.    14h                                 ;pieper 63 aus
  118.    15h                                 ;spannungs- & temperaturüberwachung ein
  119.    16h                                 ;spannungs- & temperaturüberwachung aus
  120.    17h                                 ;usv-überwachung ein
  121.    18h                                 ;usv-überwachung aus
  122.    19h                                 ;zeittackt 1 sec
  123.    1ah      <z(x)_l><z(x)_h>*          ;zählerstand auslesen
  124.  
  125. * diese Bytes werden vom Superwatchdog gesendet.
  126.  
  127. Die einzelnen Kommandos lassen sich, soweit sinnvoll, miteinander
  128. kombinieren. Sollten die vorhandenen Kommandos für Ihre Applikation
  129. nicht ausreichen, beschreiben Sie uns kurz Ihre Problemstellung und wir
  130. prüfen ob eine Implementierung möglich ist. Bei der Grundfunktion des
  131. Watchdogs laufen drei Zeiten nacheinander ab (z1,z2,z3). Die Rasterung
  132. der Zeit beträgt nach dem Reset 0,1sec . Es sind also max. ca. 6500sec
  133. pro Zeit möglich (16-Bit). Mit der Funktion 19h läßt sich der Zeittakt
  134. auf 1sec umschalten. Danach sind also 65000sec pro Zeit möglich. Die
  135. eigentliche Watchdogzeit z1, ist die Zeit, in der das zu überwachende
  136. Programm das Reload-Kommando 09h (setze Zähler 1 auf Anfangswert) an
  137. SWD1 senden sollte, bevor diese Zeit abgelaufen ist. Bleibt dieses
  138. Kommando aus, beginnt die Interruptzeit z2. Während dieser Zeit wird ein
  139. Interrupt, soweit ein entsprechender Jumper gesetzt ist, ausgelöst.  Ein
  140. geeignetes Programm kann in dieser Zeit versuchen Daten aus dem RAM auf
  141. die Platte zu sichern. Diese Möglichkeit ist jedoch mit Vorsicht zu
  142. genießen, da das Reload-Kommando ja nicht grundlos ausgeblieben ist.
  143. Sollte sich Ihr Programm jedoch in einer Endlosschleife aufgehängt
  144. haben, besteht guter Grund zu hoffen, daß Interrupts noch ordnungsgemäß
  145. ausgeführt werden. Nach Ablauf der Interruptzeit z2 beginnt die
  146. Resetzeit z3. Während dieser Zeit wird der Resettransistor angesteuert
  147. und damit ein harter Reset ausgeführt. Nach unserer Erfahrung sollte
  148. diese Zeit min. 0,2sec dauern um einen sicheren Reset Ihres PC's
  149. auszulösen. Am Ende der Resetzeit z3 werden eventuell gesetzte Relais
  150. und der Pieper abgeschaltet.
  151.  
  152. Bei der Implementierung des Watchdogs in Ihre Software gehen Sie bitte
  153. wie folgt vor:
  154. Initialisierung des PC-Timer auf lineares Zählen (wichtig für Delays);
  155.         Unterprogramm => tim0_ini.
  156.  
  157. Reset des Wachdogs;
  158.         Unterprogramm => resmc.
  159.  
  160.         Kommando 04: Laden des Watchdogs mit z1, z2, z3.
  161.  
  162.         Kommando 05: Starten des Watchdogs.
  163.  
  164.         Kommando 09: Zyklisches Reloaden des Watchdogs in einer Zeit
  165.                      kürzer als z1. Fügen Sie den Reloadbefehl 09
  166.                      möglichst in Ihre wichtigste Programmschleife ein,
  167.                      die regelmäßig durchlaufen wird.
  168.  
  169. Pgm. SWD1
  170. =========
  171. Das Programm SWD1 dient zum Test Ihres Watchdogs. Die Funktion c erlaubt
  172. Ihnen die Eingabe der  implementierten Kommandos. Sollte nach der
  173. Eingabe von Kommandos oder Daten die Meldung "Übertragungsfehler"
  174. kommen, setzen Sie Ihren Watchdog zurück und beginnen von vorne. Die
  175. Funktion d startet den Zähler auf Ihrem Watchdog und führt in kurzen
  176. Abständen einen Reload aus. Der Reset wird also nicht ausgelöst. Vor der
  177. Funktion d müssen mit der Funktion c sinvolle Zählerwerte eingegeben
  178. werden. Die Funktion r läßt den Zähler auf dem Watchdog durchlaufen, so
  179. daß nach Ablauf der eingegebenen Zeiten ein Reset des PC's ausgelöst
  180. wird. Die Funktion s stoppt dem Watchdog und führt einen Reset des
  181. Watchdogs aus. Mit der Funtion x kann der Watchdog  laufend resetet
  182. werden bis erneut eine Taste gedrückt wird. Die Funktion t testet
  183. diverse Bauteile und Funktionen Ihres Watchdogs. So werden die Relais
  184. und der Pieper mehrmals ein/ausgeschaltet. Die Zähler geladen,
  185. gestartet, rückgelesen, angezeigt, 1x reload ausgeführt und das
  186. Zeitraster von 0,1sec auf 1sec umgeschaltet.
  187.  
  188. Pgm. SWD1TI
  189. ===========
  190. Das Programm SWD1TI klinkt sich resident in den Zeitgeberinterrupt ein
  191. und setzt den Watchdog ca. alle 0,1sec zurück. Wird SWD1TI erneut
  192. aufgerufen, dann wird SWD1TI wieder aus dem Speicher entfernt. Mit dem
  193. Aufruf von SWD1TI können Sie geeignete Initialisierungswerte für die
  194. Timer z1, z2, z3 übergeben, z. B.:
  195.  
  196.       SWD1TI C8 64 0A     (  z1 = 20sec, z2 = 10sec, z3 = 1sec)
  197.  
  198. Werden keine Werte mit dem Aufruf übergeben, dann wird standardmäßig
  199.  
  200.                 z1 = 64h,  z2 = 00h,  z3 = 0ah 
  201.  
  202. angenommen. 
  203.  
  204. Bei der Verwendung von SWD1TI ist zu bedenken, daß es sich hierbei um
  205. ein Interruptprogramm handelt. Wenn Ihr Programm "abgestürzt" ist, dann
  206. kann dies verschiedene Ursachen haben. Eine Möglichkeit ist, Ihr
  207. Programm befindet sich in einer Endlosschleife weil z.B. eine bestimmte
  208. Bedingung nicht erfüllt wird oder ein Bit umgekippt ist und aus einem jz
  209. ein jnz geworden ist. Das bedeutet aber, daß Interrupts durchaus
  210. ordnungsgemäß bedient werden und damit der Watchdog regelmäßig
  211. zurückgesetzt wird. Aus diesem Grund ist auch das Aufrufen des
  212. Reloadbefehls in einer Interruptroutine möglichst zu vermeiden.
  213.  
  214. Pgm. SWD1CMD
  215. ============
  216. Mit dem Programm SWD1CMD können Sie bei Programmaufruf Kommandos an den
  217. Watchdog übergeben. Wird kein Kommando angegeben, dann erfolgt ein Reset
  218. des Watchdog. Das folgende Batchprogramm wäre eine typische
  219. Anwendung, wobei das Progamm USER automatisch nach einer
  220. bestimmten Zeit (hier ca. 1h) verlassen wird, ein Reload des
  221. WD's ausgeführt wird und anschließend wieder das Programm USER
  222. gestartet wird.
  223.  
  224.         SWD1CMD                 ;Reset Watchdog
  225.         SWD1CMD 04 9000 10 05   ;Kommando 04 -> lade z1 mit 9000h
  226.                                 ;z2 mit 10h, z3 mit 05h
  227.  
  228.         SWD1CMD 05              ;Start Zähler z1
  229.         :loop USER              ;Anwenderprogramm
  230.         SWD1CMD 09              ;Reload Watchdog
  231.         goto loop
  232.  
  233. Vor dem ersten Kommando muß, wie hier gezeigt, ein Reset erfolgen. 
  234.  
  235. Funktion 15h
  236. ============
  237. Mit der Funktion 15h können Sie zusätzlich die Spannungen (+5V, +12V,
  238. -12V) und die Temperatur Ihres PC's überwachen. Mit dem Aufruf der
  239. Funktion 15h zieht Relais 81 an. Einen der jetzt geöffneten Kontakte
  240. können Sie für Fernalarmzwecke verwenden. Das Relais 81 wird
  241. abgeschaltet (Ruhekontakt, Failsafe!!), wenn einer oder mehrere der
  242. folgenden Fehler auftreten:
  243.  
  244. Spannung +5V  = < 4,5V
  245. Spannung +12V = < +10V
  246. Spannung -12V = < -10V
  247. Temperatur    = > 65 Grad C ( R27 = 1k )
  248. Temperatur    = > 35 Grad C ( R27 = 2k7 )
  249. Watchdogzeiten  z1, z2 abgelaufen
  250. Netzspannung des PC's weg
  251.  
  252. Bezüglich der Positionierung des Temperaturfühlers (NTC) beachten Sie
  253. bitte die Hinweise unter  "Lüfterausgang".
  254.  
  255. Funktion 17h
  256. ============
  257. Diverse Betriebssysteme (Novell, OS/2, Windows NT) ermöglichen den
  258. Anschluß des Rechners an USV-Anlagen (unterbrechungsfreie
  259. Spannungsversorgung). Diese Anlagen haben häufig zwei Ausgänge und
  260. einen Eingang über Optokoppler oder Relais.
  261.  
  262.     Powerfail        -> Ausgang "Netzausfall"
  263.     Batt. Low        -> Ausgang "Akkuspannung zu klein"
  264.     Shut Down        -> Eingang  "USV aus"
  265.  
  266. Die oben aufgeführten Betriebssysteme überwachen üblicherweise an einer
  267. COM-Schnittstelle folgende Pins (9-pol D-Sub):
  268.  
  269. Pin 1   (in Carrier Det.)       ->  +12V Batt. o.k.;  -12V Batt. Low
  270. Pin 8   (in CTS)                ->  +12V Power o.k.;  -12V Power failed
  271. Pin 7   (out RTS)               ->  +12V USV shut down
  272. Pin 5   (Ground)                ->  Signalmasse
  273.  
  274. Sollten Sie Ihre USV nicht direkt an die COM-Schnittstelle Ihres
  275. Rechners anschließen können (z.B. TTL-Pegel), dann kann Ihr SWD1
  276. zusätzlich auch diese Aufgabe übernehmen. Die folgende Tabelle zeigt
  277. Ihnen den Zusammenhang der divsersen Ein- und Ausgänge.
  278.  
  279. Signal                      SWD1 in        SWD1 out        COM (i/o)
  280. -------------------------------------------------------------------------
  281. Powerfail               Pos. 52/1*      Pos. 87/2               Pin 8
  282. Batt. Low               Pos. 57/1       Pos. 87/4               Pin 1
  283. Shut Down               Pos. 87/5       Pos. 42/1               Pin 7
  284. Ground                  Pos. 52/2       Pos. 87/7               Pin 5
  285.  
  286. *Pos. 52/1  -> Steckverbinder 52 Pin 1 , Schaltplan S1401952.
  287.  
  288. Sollte es sich bei dem Shut-Down-Eingang Ihrer USV um einen Optokoppler
  289. oder ein Relais handeln, dann kann es notwendig sein, daß Sie zum
  290. Erzielen des notwendigen Schleifenstroms eine Spannung zur Verfügung
  291. stellen müssen. Dies erreichen Sie dadurch, daß Sie den Optokoppler
  292. zwischen Pin 1 Pos. 42 und Pin 2 Pos. 71 anschließen. Bei der
  293. zusätzlichen Verwendung des Watchdogs zur USV-Überwachung ist es sehr
  294. wichtig, daß vorher ein Reset (Programm SWD1CMD) des Watchdogs
  295. ausgeführt wird. Erst danach sind die Ausgänge Powerfail und Batt. Low
  296. richtig initialisiert (+12V) so daß es nicht sofort zu einer
  297. Fehlermeldung kommt, wenn Sie den Powermonitor Ihres Betriebssystems
  298. starten. Einige Betriebssyteme haben die unangenehme Eigenschaft beim
  299. Hochfahren die Pins der Schnittstellen zu bewegen (z.B. +12v  -> -12V
  300. -> +12V). Ist zu diesem Zeitpunkt schon die USV-Überwachung des
  301. Watchdogs aktiv, so würde Ihr System sofort abstürtzen, da ein Shut Down
  302. ausgelöst wird. Aus diesem Grund ist es wichtig, z.B. folgende
  303. Reihenfolge auszuführen:
  304.  
  305.    Betriebssytem Starten
  306.         Reset  SWD1  (SWD1CMD)
  307.       Powermonitor des Betriebssystems starten
  308.           SWD1 USV-Überwachung starten (SWD1CMD 17)
  309.  
  310. Funktion 19h
  311. ============
  312. Mit dieser Funktion können Sie den aktuellen Zählerstand abfragen. Nach
  313. dem Absenden des Funktionsbytes an den SWD1 müssen zwei Bytes vom SWD1
  314. zurückgelesen werden, ansonsten hängt Ihr SWD1.  
  315.  
  316.  
  317.  
  318. Der mitgelieferte Sourcecode der Programme in Assembler ist gut
  319. dokumentiert und gibt Ihnen einen Einblick wie Sie Ihren Watchdog
  320. bedienen können.
  321.  
  322. Die Relaisausgänge
  323. ==================
  324. Aufgrung der geringen Isolationsabstände in der 25-pol SUB-D-Buchse
  325. dürfen mit den Relais keine Netzspannungen geschaltet werden. Sollte
  326. dies jedoch notwendig sein, so benutzen Sie bitte ein zusätzliches
  327. externes Relais. Wenn Sie ein 12V-Relais verwenden, können Sie dessen
  328. Spule direkt zum Relais (86) auf der Leiterplatte parallelschalten, da
  329. der Kollektor des Schalttransistors (84) über den Steckverbinder
  330. zugänglich ist. Dieses Zusatzrelais müßten Sie dann z.B. an der
  331. SUB-D-Buchse an Pin 9 und  Pin 15 anschließen. Der Strom durch die
  332. Spule eines Zusatzrelais sollte einen max. Strom von 300mA nicht
  333. überschreiten.
  334.  
  335. Der Lüfterausgang
  336. =================
  337. Am Lüfterausgang (50 oder 51) können Sie einen normalen 12V PC-Lüfter
  338. anschließen. Ist das Lüfterkommando nicht aktiviert, so ist der Lüfter
  339. ständig eingeschaltet (nach Reset, Pgm. SWD1CMD in autoexec.bat
  340. einfügen!!!!). Ist der Lüfter aktiviert (Kommando 11h), so wird der
  341. Lüfter eingeschaltet, wenn am Temperaturfühler (Pos.26; NTC1; 2k7) ca.
  342. 35°C herrschen. Es ist darauf zu achten, daß sich der Temperaturfühler
  343. möglichst an einer Stelle befindet, an der mit kritischen Temperaturen
  344. gerechnet wird, z.B. RAM-Bänke, CPU, Netzteil. Hierzu kann es nötig
  345. sein, den NTC-Widerstand auszulöten und über ein Verlängerungskabel an
  346. die entsprechende Stelle zu positionieren. Achten Sie dabei darauf, daß
  347. der NTC-Widerstand isoliert montiert wird. Sollten Sie den
  348. NTC-Widerstand über eine Verlängerung angeschlossen haben, prüfen Sie
  349. bitte seine Funktion z.B. mit einem Föhn.
  350.  
  351.  
  352.  
  353.