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 ' 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) ', 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) '. #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) ' 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) ' 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) '. 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))' ' 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)) ', wenn das Interface-System über den Kanal 5 angesprochen wird.