summaryrefslogtreecommitdiff
path: root/app/gs.process/1.02/doc/gs-prozess-9
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
committerLars-Dominik Braun <lars@6xq.net>2019-02-04 13:09:03 +0100
commit04e68443040c7abad84d66477e98f93bed701760 (patch)
tree2b6202afae659e773bf6916157d23e83edfa44e3 /app/gs.process/1.02/doc/gs-prozess-9
downloadeumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.gz
eumel-src-04e68443040c7abad84d66477e98f93bed701760.tar.bz2
eumel-src-04e68443040c7abad84d66477e98f93bed701760.zip
Initial import
Diffstat (limited to 'app/gs.process/1.02/doc/gs-prozess-9')
-rw-r--r--app/gs.process/1.02/doc/gs-prozess-9477
1 files changed, 477 insertions, 0 deletions
diff --git a/app/gs.process/1.02/doc/gs-prozess-9 b/app/gs.process/1.02/doc/gs-prozess-9
new file mode 100644
index 0000000..6551b01
--- /dev/null
+++ b/app/gs.process/1.02/doc/gs-prozess-9
@@ -0,0 +1,477 @@
+limit (11.0)##pagelength (16.5)##block#
+#start (2.0,0.0)#
+#page (1)#
+#headodd#
+#center#gs-Prozess#right#%
+
+#end#
+#headeven#
+%#center#gs-Prozess
+
+#end#
+#center#1
+
+#on("b")#9  Hinweise für den Systembetreuer/   Programmierer#off("b")#
+
+Sie haben wahrscheinlich bisher - ausschließlich zu Testzwecken - mit nur einem
+Interface-System gearbeitet. In diesem Kapitel möchten wir Ihnen Vorschläge
+machen, wie Sie Ihr Tasksystem organisieren können, um möglichst effektiv und
+störungsfrei mit der vorhandenen Hardware zu arbeiten.
+
+Neben den Möglichkeiten der Organisation des Systems werden wir Ihnen zeigen, wie
+Sie eine einmal vorgenommene Konfiguration/Organisation "fixieren", d.h. schützen
+können.
+
+Im letzten Teil dieses Kapitels werden wir für den #on("b")#routinierten(!) Programmierer#off("b")#,
+Möglichkeiten aufzeigen, wie man, unter weitgehender Umgehung von #on("b")#gs-Prozess#off("b")#,
+Programme für spezielle Anwendungen entwickeln kann. Schon an dieser Stelle sei
+ausdrücklich gesagt, daß dabei alle "Sicherheiten", die #on("b")#gs-Prozess#off("b")# normalerweise
+bietet, nicht (mehr) vorhanden sind.
+
+
+#on("b")#9.1  Vergabe der Kanäle/Organisation des Tasksystems#off("b")#
+
+Zur optimalen Organisation Ihres Systems sollten Sie wissen, in welcher Task die
+Konfiguration sinnvollerweise vorzunehmen ist. Da die Aspekte sehr vielfältig sind,
+werden wir verschiedene Situationen beschreiben. Lesen Sie die Ausführungen zu der
+Situation, die der Ihren am ehesten entspricht.
+
+
+#on("b")#
+1) Es stehen mehrere MUFIs als Adapter zur Verfügung. Alle MUFIs sollen
+ im Terminalkanal betrieben werden. Die Arbeitsplätze sind alle mit
+ dem gleichen Interfacesystem ausgestattet.
+#off("b")#
+#page#
+ Sie sind hervorragend ausgestattet. Die Organisation und Konfiguration des
+ Systems ist sehr einfach:
+
+ Es ist sinnvoll, die Konfiguration von #on("b")#gs-Prozess#off("b")# in der Task vorzunehmen, in
+ der Sie #on("b")#gs-Prozess#off("b")# installiert haben. Das hat den Vorteil, daß alle Sohntasks,
+ die sich anschließend anmelden, diese Konfiguration "erben".
+
+ Bei dieser Ausstattung ist es sinnvoll die Konfiguration zu "fixieren", um irrtüm­
+ lichen oder "böswilligen" Umkonfigurationen vorzubeugen. Sehen Sie dazu
+ Kapitel 9.4.
+
+
+#on("b")#
+2) Es stehen mehrere MUFIs als Adapter zur Verfügung. Alle MUFIs sollen
+ im Terminalkanal betrieben werden. Die Arbeitsplätze sind aber mit
+ verschiedenen Interface-Systemen ausgestattet.
+#off("b")#
+
+ Wenn die Bestückung der einzelnen Arbeitsplätze ständig wechselt, ist es nicht
+ sinnvoll, eine generelle Konfiguration vorzugeben. Teilen Sie jedem Anwender
+ mit, daß er selbst für die Konfiguration seines Systems zuständig ist. Er sollte bei
+ jedem Neuankoppeln seiner Task zumindest die Konfiguration überprüfen und
+ ggf. den Vorgaben entsprechend eine Anpassung vornehmen. Es ist nicht sinn­
+ voll, die jeweilige Konfiguration zu fixieren.
+
+ Wenn Sie zwar unterschiedliche Interface-Systeme verwenden, aber die Inter­
+ face-Systeme einzelnen MUFIs eindeutig zuordnen können, lohnt es sich schon,
+ eine Konfiguration des Systems vorzugeben.
+
+ Richten Sie zu diesem Zwecke so viele Tasks ein, wie Sie unterschiedliche
+ Interface-Systeme zur Verfügung haben, und ordnen Sie jedem Interface-System
+ eindeutig je eine Task zu. Die Namen der Tasks sollten Sie so wählen, daß sofort
+ ersichtlich ist, welchem Interface-System sie zugeordnet ist.
+
+ Nehmen Sie in jeder Task eine Konfiguration von #on("b")#gs-Prozess#off("b")# entsprechend
+ dem zugeordneten Interface-System vor.
+#page#
+ Auch hier ist es sinnvoll, die vorgenommenen Konfigurationen zu "fixieren", um
+ irrtümlichen oder "böswilligen" Umkonfigurationen vorzubeugen. Sehen Sie
+ dazu Kapitel 9.4.
+
+ Die Anwender sollten sich später jeweils als Sohntask der Task anmelden, die
+ sich dem an ihrem Arbeitsplatz vorhandenen Interface-System eindeutig zu­
+ ordnen läßt.
+
+
+#on("b")#
+3) Es steht nur ein MUFI als Adapter zur Verfügung. Das MUFI soll im
+ Terminalkanal betrieben werden.
+#off("b")#
+
+ Je nachdem, ob Sie eine feste Hardware am MUFI betreiben oder nicht, sollten
+ Sie sich an den beiden zuvor beschriebenen Fällen orientieren.
+
+
+#on("b")#
+4) Es steht nur ein RS232-Adapter oder ein MUFI, das als Endgerät an
+ einer separaten Schnittstelle betrieben werden soll, zur Verfügung. Es
+ soll nur von einem Arbeitsplatz/einer Task aus mit dem angeschlos­
+ senen Interface-System gearbeitet werden.
+#off("b")#
+
+ Nehmen Sie die Installation/Konfiguration wie unter 5) beschrieben vor.
+ Arbeiten Sie nur in der Task, in der Sie die Konfiguration vorgenommen haben.
+
+
+#on("b")#
+5) Es steht nur ein Adapter zur Verfügung. Sie wollen aber die Möglichkeit
+ schaffen, daß von verschiedenen Tasks abwechselnd darauf zugegriffen
+ werden kann.
+#off("b")#
+
+ Es ist gleichgültig, ob Sie ein MUFI oder einen RS232-Adapter verwenden - sie
+ sollten den Adapter an einer separaten seriellen Schnittstelle betreiben.
+#page#
+ Auch wenn Sie ein MUFI besitzen, kann es vorteilhaft sein, das MUFI nicht im
+ Terminalkanal, sondern an einer separaten Schnittstelle zu betreiben:
+
+ Beim Betrieb im Terminalkanal kann nämlich nur die Task mit dem MUFI
+ kommunizieren, die an das Terminal gekoppelt ist, in dessen Zuleitung das
+ MUFI eingebaut ist. Das wird hier zum Nachteil, denn wenn eine andere Task
+ auf das Interface-System zugreifen möchte, muß erst die alte Task abgekoppelt
+ und die neue an das Terminal mit dem MUFI angekoppelt werden.
+
+ Der Betrieb an einer separaten Schnittstelle bietet hier wahrscheinlich viel­
+ fältigere Möglichkeiten, wenngleich Sie dadurch auch Geschwindigkeitsein­
+ bußen hinnehmen müssen.
+
+ #on("b")#gs-Prozess#off("b")# bietet Ihnen bei Betrieb eines Adapters an einer separaten seriellen
+ Schnittstelle nämlich die Möglichkeit, abwechselnd von verschiedenen Tasks auf
+ den Adapter und das angeschlossene Interface-System zugreifen zu können.
+
+ Teilen Sie bei der Installation (automatischen Generierung) von #on("b")#gs-Prozess#off("b")#
+ dem System gleich mit, daß Sie Ihren Adapter (ob nun MUFI oder
+ RS232-Adapter) an einer separaten seriellen Schnittstelle betreiben wollen.
+ Schon bei dieser Installation werden Sie nach der Kanalnummer gefragt.
+
+ Wir gehen hier davon aus, daß Sie immer mit dem gleichen Interface-System an
+ diesem Adapter arbeiten werden. In diesem Falle empfiehlt es sich, gleich in der
+ Task, in der Sie die Installation vorgenommen haben, auch die Konfiguration
+ von #on("b")#gs-Prozess#off("b")# vorzunehmen und die Konfiguration zu "fixieren". Durch die
+ Konfiguration in dieser Task, "erben" alle Sohntasks, die anschließend ange­
+ meldet werden, diese Konfiguration.
+
+ Wenn Sie sich mit 'taskinfo <RETURN>' einen Katalog ausgeben lassen,
+ werden Sie feststellen, daß eine weitere Task als unbenannter Sohn ("-") Ihrer
+ Task eingerichtet worden ist. Sie haben nämlich Ihre Task zu einer "zentralen
+ Abwicklungstask" gemacht - genauer gesagt die unbenannte Sohntask.
+#page#
+ Wenn Sie aus Ihrer Task, in der Sie die Konfiguration vorgenommen haben, mit
+ dem Interface-System kommunizieren, erfolgt der Zugriff über diese unbe­
+ nannte Sohntask!
+
+ Sie schaffen dadurch aber zusätzlich die Möglichkeit, daß mehrere Sohntasks -
+ natürlich abwechselnd - über diese "zentrale Abwicklungstask" mit dem Inter­
+ face-System kommunizieren. Selbstverständlich setzt der Zugriff auf das Inter­
+ face-System eine Absprache zwischen den Beteiligten voraus!
+
+
+ Gerade in der Aufbauphase, wenn erst wenige Geräte zur Verfügung stehen, ist
+ das eine Möglichkeit, von verschiedenen Arbeitsplätzen aus mit nur einem Adap­
+ ter/Interface-System Prozeßdatenverarbeitung zu betreiben.
+
+
+#on("b")#
+6) Sie wollen mehrere Adapter an separaten seriellen Schnittstellen
+ betreiben.
+#off("b")#
+
+ In diesem Falle ist es sinnvoll - bevor Sie eine Konfiguration vornehmen - gleich
+ nach der Installation von #on("b")#gs-Prozess#off("b")# für jeden einzelnen Adapter eine Sohntask
+ unter der Task einzurichten, in der #on("b")#gs-Prozess#off("b")# installiert ist. Jede dieser Sohn­
+ tasks koppeln Sie mit einem festen Kanal, an dem ein Adapter/Interface-System
+ angeschlossen ist.
+
+ Sie brauchen dazu #on("b")#gs-Prozess#off("b")# nicht mehrfach zu installieren; wir haben für
+ diesen Fall vorgesorgt. Für die Kopplung der Tasks an die einzelnen Kanäle steht
+ die Prozedur 'PROC interfacekanal (INT CONST kanalnummer)' zur Verfügung.
+ Geben Sie also in einer Task z.B. das Kommando 'interfacekanal (5)
+ <RETURN>', so wird von dieser Task aus das Interface-System am Kanal 5
+ angesprochen.
+
+ Über die Prozedur 'INT PROC interfacekanal' können Sie sich in jeder Task
+ informieren, über welchen Kanal die Kommunikation mit dem Interface-System
+ abgewickelt wird: z.B. mit 'put (interfacekanal) <RETURN>'.
+#page#
+ Ihnen ist sicher klar, daß es auch hier sinnvoll ist, den Namen der jeweiligen
+ Task so zu wählen, daß daraus sofort der betreffende Interfacekanal ablesbar
+ ist.
+
+ In jeder so an einen Kanal gekoppelten Task sollten Sie die Konfiguration von
+ #on("b")#gs-Prozess#off("b")# vornehmen und ggf. "fixieren". Jede solche Task richtet auto­
+ matisch eine unbenannte Sohntask ("-") ein, die sich wie eine "zentrale Ab­
+ wicklungstask" verhält. Wenn Sie also aus Ihrer Task oder aus neu einge­
+ richteten Sohntasks mit dem Interface-System kommunizieren, so erfolgt das
+ über die "zentrale Abwicklungstask".
+
+
+#on("b")#9.2  Informationsprozeduren#off("b")#
+
+Zur Information stehen dem Systembetreuer drei wichtige Prozeduren zur Verfügung:
+
+#on("b")#
+TEXT PROC adapterart
+#off("b")#
+
+Hiermit können Sie in Erfahrung bringen, welche Interfaceanpassung z.Z. in der
+aktuellen Task insertiert ist: MUFI im Terminalkanal, MUFI als Endgerät oder
+AKTRONIK-Adapter (RS232-Adapter).
+
+
+#on("b")#
+INT PROC interfacekanal
+#off("b")#
+
+Hiermit können Sie in Erfahrung bringen, über welchen Kanal z.Z. mit dem Inter­
+face-System aus der Task kommuniziert wird. Die Prozedur steht allerdings nur dann
+zur Verfügung, wenn das Interface-System an einer separaten Schnittstelle betrieben
+wird - sonst erscheint der Hinweis 'FEHLER: unbekanntes Kommando'.
+
+Es gibt noch einen Befehl, mit dem Sie sich über den Zustand des Interface-Systems
+informieren können:
+#page#
+#on("b")#
+PROC oeffne interface (INT VAR testwert)
+#off("b")#
+
+Die Prozedur versucht, die aktuelle Betriebsart einzustellen. Anschließend erhalten
+Sie eine 'Erfolgsauskunft'. Dabei bedeuten:
+
+ 0 - alles okay
+ -1 - Interface ist noch nicht konfiguriert
+ -2 - Interface-Task ist besetzt
+ -3 - Interfacekanal ist belegt
+ -4 - Interface meldet sich nicht
+ -5 - Interface kann nicht geöffnet werden
+
+Ist der Adapter an einer separaten Schnittstelle angeschlossen, so arbeitet der Befehl
+über die "zentrale Abwicklungstask". Als Antwort können alle genannten Codes auftre­
+ten; beim MUFI im Terminalkanal allerdings nur die Codes 0, -1 und -4. Die oben
+genannten Fehlermeldungen sind detailliert in Kapitel 5.5 erläutert.
+
+Sie sollten anschließend #on("b")#unbedingt#off("b")# das Kommando 'schliesse interface' geben: Eine
+eventuell durch 'oeffne interface' vollzogene Betriebsartumstellung wird dadurch
+rückgängig gemacht.
+
+
+
+#on("b")#9.3  Neufestlegung des Interfacekanals#off("b")#
+
+Wenn Sie mit MUFI(s) im Terminalkanal arbeiten, spielen Kanalnummern für das
+Ansprechen des/der MUFIs keine Rolle. Das jeweilige MUFI kann in diesem Falle
+nämlich immer nur von der Task aus angesprochen werden, die an das Terminal
+gekoppelt ist, in dessen Zuleitung das MUFI eingebaut wurde.
+
+Wenn Sie Adapter (MUFI oder RS232-Adapter) an separaten seriellen Schnittstellen
+betreiben, so legen Sie schon bei der Installation von #on("b")#gs-Prozess#off("b")# den Kanal fest,
+über den die Task mit dem Interface-System kommuniziert. Wie wir schon oben be­
+schrieben haben, können Sie den Interface-Kanal mit der Prozedur 'PROC interface­
+kanal (INT CONST kanalnummer)' neu festlegen. Beachten Sie dabei aber bitte
+folgendes:
+#page#
+Wenn Sie in einer Task #on("b")#gs-Prozess#off("b")# konfigurieren und zuvor entschieden haben, daß
+der Adapter an einer separaten Schnittstelle betrieben wird, so wird automatisch eine
+unbenannte Sohntask ("-") eingerichtet. Diese Sohntask wird zur "zentralen Abwick­
+lungstask". Wenn Sie nun aus der Task, in der Sie die Konfiguration vorgenommen
+haben, oder aus einer Sohntask dieser Task, die anschließend eingerichtet wird, mit
+dem Interface-System kommunizieren, so erfolgt diese Kommunikation über diese
+unbenannte Sohntask. Daher wählten wir die Bezeichnung "zentrale Abwicklungs­
+task".
+
+Da die "zentrale Abwicklungstask" den "Zustand der Vatertask" in dem Augenblick
+erbt, in dem Sie eingerichtet wird, würde eine später erfolgende Neufestlegung des
+Interfacekanals nicht von Ihr registriert und damit auch nicht wirksam.
+
+#on("b")#Es ist unbedingt notwendig#off("b")#, in der Task, in der Sie eine Neufestlegung des Interface-
+Kanals vornehmen, #on("b")#gs-Prozess#off("b")# auch neu zu konfigurieren! Bei der Neukonfiguration
+wird nämlich die unbenannte Sohntask gelöscht und neu eingerichtet.
+
+(Das hier beschriebene Phänomen ist Ihnen wahrscheinlich schon aus der
+PRINTER-Task bekannt).
+
+Hinsichtlich der Sicherheit des Systems hat dieses Vorgehen aber einen Vorteil: wenn
+in den "zugänglichen Sohntask", die über eine "zentrale Abwicklungstask" mit dem
+Interface-System kommunizieren eine Neueinstellung des Interface-Kanals vorge­
+nommen wird, so bleibt diese unwirksam (solange in der Sohntask nicht umkonfigu­
+riert wird - was sich aber verhindern läßt! Sehen Sie dazu das folgende Kapitel!).
+
+
+#on("b")#9.4  Fixieren der Konfiguration#off("b")#
+
+Prinzipiell kann in jeder Task, in der #on("b")#gs-Prozess#off("b")# zur Verfügung steht, die Konfigura­
+tion (von #on("b")#gs-Prozess#off("b")#) vorgenommen werden. Gerade von unerfahrenen Anwendern
+könnte aber irrtümlich eine Umkonfiguration vorgenommen werden. Aber nicht nur
+das: auch erfahrene Anwender könnten "böswillig" die Konfiguration verändern. Aus
+diesem Grunde ist es ggf. sinnvoll, eine vorgenommene Konfiguration zu fixieren
+(schützen).
+#page#
+Dazu steht die Prozedur 'PROC pdv konfiguration zugelassen (BOOL CONST ent­
+scheidung)' zur Verfügung. Mit dem Kommando 'pdv konfiguration zugelassen
+(FALSE) <RETURN>' sperren Sie in der aktuellen Task und in allen Sohntasks, die
+sich #on("b")#anschließend#off("b")# unter dieser Task anmelden, den Menupunkt 'k Konfigurieren'
+unter dem Oberbegriff 'Interface'.
+
+Sofern nötig, können Sie diese Sperre mit dem Kommando 'pdv konfiguration zuge­
+lassen (TRUE) <RETURN>' wieder aufheben, #on("b")#allerdings nur in der Task, in der Sie
+auch die Sperre gesetzt haben#off("b")#, denn #on("b")#gs-Prozess#off("b")# merkt sich diesen Tasknamen!
+Wenn Sie also ein Password auf diese Task legen, und damit anderen den Zugang
+verwehren, kann auch eine "böswilligie Umkonfiguration" verhindert werden.
+
+
+#on("b")#9.5  Mögliche Fehlerfälle#off("b")#
+
+Wenn Fehlermeldungen auftreten, so finden Sie Fehlerbeschreibungen und Möglich­
+keiten zur Abhilfe im Kapitel 5.5 beschrieben. Auf einen Fehlerzustand möchten wir
+Sie hier noch besonders hinweisen:
+
+#on("b")#Interfacekanal ist belegt!#off("b")#
+
+ Über den angegebenen Kanal greift schon eine andere Task auf das angeschlos­
+ sene Interface-System zu. Vielleicht wurde der betreffende Kanal auch zuvor für
+ andere Zwecke verwendet - anschließend hat der Benutzer den Kanal nicht
+ ordentlich freigegeben. Geben Sie in der 'gib kommmando'-Ebene den Befehl
+ 'taskinfo (2) <RETURN>'. In der Spalte mit der Überschrift 'CHAN' müßte jetzt
+ irgendwo die Kanalnummer auftauchen. Steht die Kanalnummer bei einem Sohn
+ der Task 'SUPERVISOR', so liegt der letztgenannte Fall vor, sonst der erstge­
+ nannte.
+
+ Abhilfe: Schließen Sie Ihr Interface-System an einen anderen Kanal an oder
+ bitten Sie den betreffenden Anwender, den Kanal freizugeben.
+ Ist das nicht möglich, so kann aus einer Systemtask das Kommando
+ 'end (canal (kanalnummer))' <RETURN>' gegeben werden. Statt
+ 'kanalnummer' ist natürlich die tatsächliche Nummer (z.B. '4')
+ anzugeben.
+#page#
+#on("b")#9.6  Weitere Möglichkeiten#off("b")#
+
+Ihnen ist sicher aufgefallen, daß wir uns bemüht haben, einen sinnvollen Kompro­
+miß zwischen Sicherheit in der Handhabung und Geschwindigkeit des Systems zu
+finden. In Zweifelsfällen haben wir uns eher zugunsten der Sicherheit entschieden.
+
+Sicher werden Sie inzwischen bemerkt haben, daß die Kommunikation mit einem
+Adapter (MUFI oder RS232-Adapter) an einer separaten seriellen Schnittstelle recht
+zeitaufwendig ist.
+
+Prinzipiell standen uns bei der Konzeption zwei Möglichkeiten zur Verfügung: Ent­
+weder wir gestalten jeden Basisbefehl so, daß wir uns zu Beginn der Ausführung
+jeweils direkt an den betreffenden Kanal ankoppeln und am Ende der Ausführung
+des Befehls wieder abkoppeln - oder wir richten eine "zentrale Abwicklungstask" ein
+und nutzen die Intertaskkommunikation des EUMELs. Wir haben uns nach diversen
+Tests für die zweite Variante entschieden: Einmal zeigte sich, daß dieses Verfahren
+weit weniger zeitaufwendig ist als das ständige An- und Abkoppeln an den Interface-
+Kanal. Zum anderen konnten wir so die Möglichkeit schaffen, über diese "zentrale
+Abwicklungstask" den abwechselnden, koordinierten Zugriff mehrerer Tasks auf ein
+Interface-System zu realiseren.
+
+Wenn Sie nun aber spezielle Anwendungen schreiben wollen, für die die Geschwin­
+digkeit beim Ansprechen des Interface-Systems an einer separaten Schnittstelle nicht
+ausreicht, so möchten wir Ihnen hier noch eine Möglichkeit aufzeigen, dieses
+Problem zu bewältigen.
+
+Auch an dieser Stelle sei noch einmal ausdrücklich darauf hingewiesen, daß Sie bei
+dieser Programmiermöglichkeit auf alle Sicherheiten, die Ihnen #on("b")#gs-Prozess#off("b")# bietet,
+verzichten müssen. Deshalb sollten Sie diesen Weg nur beschreiten, wenn Sie ein
+hinlängliches Maß an Programmierroutine besitzen! Die zur Verfügung stehenden
+Befehle und die Besonderheiten möchten wir Ihnen an einem kleinen Beispiel­
+programm aufzeigen:
+#page#
+#on("b")#
+ LET ausgabekanal = 4,
+ eingabekanal = 3;
+
+ INT VAR test, eingabewert;
+ INT VAR terminalkanal :: channel (myself);
+ schliesse interface;
+ continue (interfacekanal);
+ oeffne interface direkt (test);
+ IF test < 0
+ THEN continue (terminalkanal);
+ errorstop ("Funktionsfehler Interface-System")
+ FI;
+ initialisiere interface direkt;
+ eigentliches programm;
+ schliesse interface direkt;
+ continue (terminalkanal).
+
+ eigentliches programm:
+ direkt ausgeben (ausgabekanal, 3);
+ eingabewert := direkteingabe (eingabekanal).
+#off("b")#
+
+Wenn Sie ein solches Programm geschrieben haben, starten Sie es bitte mit dem
+Befehl 'run pdv' oder aus dem Menusystem heraus mit der Menufunktion 's Starten'.
+(Bei 'run' kann der Befehl 'schliesse interface' gestrichen werden!).
+
+Für die eigentliche Programmierung des Interface-Systems stehen Ihnen nur zwei
+Befehle zur Verfügung:
+
+#on("b")#
+PROC direkt ausgeben (INT CONST kanal, wert)
+#off("b")#
+
+ - ermittelt den auszugebenden Wert durch die Rechnung
+
+#on("b")##center#ausgabe = wert MOD 256#off("b")#
+
+ und gibt diesen am Ausgabekanal aus.
+
+ Der Befehl ähnelt dem Befehl 'dezimalwert ausgeben' - hat aber im Gegensatz
+ dazu keinerlei "Fehlerfänger": so werden Sie z.B. nicht darauf aufmerksam
+ gemacht, wenn der angegebene Kanal gar kein Ausgang ist, etc.)
+#page#
+#on("b")#
+INT PROC direkteingabe (INT CONST kanal)
+#off("b")#
+
+ - liest den aktuell anliegenden Wert am angegebenen Kanal ein.
+ - liefert einen INT-Wert mit 0 � 'wert' � 255.
+
+ Der Befehl ähnelt dem Befehl 'dezimalwert' - hat aber im Gegensatz dazu
+ ebenfalls keinerlei "Fehlerfänger"!
+
+
+Das obige Programm beginnt mit dem Befehl 'schliesse interface'. Sicher kommt es
+Ihnen sonderbar vor, daß zu Beginn des Programms das Interface geschlossen wird,
+wo wir es doch eigentlich "öffnen" müßten. Ihnen wird die Funktion aber sofort klar,
+wenn Sie sich die Situation vor Augen führen:
+
+Als Sie #on("b")#gs-Prozess#off("b")# in Ihrer Task konfiguriert haben, und festlegten, daß der Adapter
+an einer separaten Schnittstelle "hängt", richtete #on("b")#gs-Prozess#off("b")# automatisch eine
+unbenannte Sohntask ("-") als "zentrale Abwicklungstask" ein, die durch das
+Kommando 'run pdv' bzw. durch die Menufunktion 's Starten' an den Interfacekanal
+gekoppelt wird. Der Befehl 'schliesse interface' koppelt die Task "-" wieder vom Inter­
+face-Kanal ab, so daß Sie direkt darauf zugreifen können. Außerdem werden die
+internen Einstellungen im Adapter wieder in Ausgangsstellung gebracht.
+
+Mit der Prozedur 'PROC oeffne interface direkt (INT VAR testwert)' sprechen Sie das
+Interface neu an. Dabei wird ein angeschlossener Adapter automatisch auf Betriebs­
+bereitschaft getestet und dann auf den Betrieb an einer separaten seriellen Schnitt­
+stelle umgestellt (nur beim MUFI).
+
+Über 'testwert' erhalten Sie eine Rückmeldung. Dabei haben die gelieferten 'test­
+werte' folgende Bedeutung:
+
+ 0 - Interface betriebsbereit
+ -4 - Interface #on("b")#nicht#off("b")# betriebsbereit
+ (Interface meldet sich nicht)
+#page#
+Der Befehl 'initialisiere interface direkt' wirkt ähnlich wie der schon oben be­
+schriebene Befehl 'initialisiere interface', jedoch #on("b")#nicht#off("b")# über den "Umweg zentrale
+Abwicklungstask" - sondern halt 'direkt' am Interface-Kanal. Einzige Aufgabe hier:
+Alle Ausgabe-Kanäle auf Wert '0' bzw. Nullspannung setzen.
+
+Durch das abschließende 'schliesse interface direkt' bringen Sie ein angeschlossenes
+MUFI wieder in die "Ausgangsstellung".
+
+Beachten Sie bei der Programmierung bitte unbedingt, daß Sie ständig zwischen dem
+Kanal, an dem Sie arbeiten (Terminal) und dem Interfacekanal hin- und herschalten
+(müssen), wenn Ein- oder Ausgaben auf dem Terminal erfolgen sollen. Die direkte
+Programmierung lohnt sich demnach nur, wenn aufeinanderfolgende Aktionen am
+Interfacekanal durchgeführt werden (z.B. Schrittmotorsteuerungen etc.).
+
+Treten Programmfehler auf, während Sie an den Interfacekanal gekoppelt sind,
+haben Sie keine Chance, von Ihrem Terminalkanal aus auf das Interface zuzugreifen
+- denn das "hängt am Interfacekanal" (z.B. bei "Programmabsturz" oder Endlos­
+schleife).
+
+Bei Ihrer Programmierung sollten Sie diesem Fall vorbeugen (disable stop - enable
+stop). Ansonsten müßten Sie aus einer Systemtask den Kanal "abschießen". Geben
+Sie dazu in einer Systemtask z.B. das Kommando 'end (canal (5)) <RETURN>',
+wenn das Interface-System über den Kanal 5 angesprochen wird.
+