summaryrefslogtreecommitdiff
path: root/doc/prozess/gs-prozess-6
diff options
context:
space:
mode:
Diffstat (limited to 'doc/prozess/gs-prozess-6')
-rw-r--r--doc/prozess/gs-prozess-6641
1 files changed, 0 insertions, 641 deletions
diff --git a/doc/prozess/gs-prozess-6 b/doc/prozess/gs-prozess-6
deleted file mode 100644
index a3835cd..0000000
--- a/doc/prozess/gs-prozess-6
+++ /dev/null
@@ -1,641 +0,0 @@
-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")#6  Arbeiten mit gs-Prozess#off("b")#
-
-In diesem Kapitel werden wir Ihnen die Basisbefehle von #on("b")#gs-Prozess#off("b")# vorstellen und
-erläutern, was die einzelnen Befehle bewirken. Dabei werden wir an einfachen
-Beispielen aufzeigen, wie Sie mit #on("b")#gs-Prozess#off("b")# arbeiten können.
-
-Wir gehen hier davon aus, daß die Hardware-Voraussetzungen erfüllt, das Interface-
-System angeschlossen und die Software (#on("b")#gs-Prozess#off("b")#) auf dem Rechner installiert
-sind. Sie sollten #on("b")#gs-Prozess#off("b")# bereits konfiguriert und einen Ein- und Ausgabetest
-durchgeführt haben.
-
-In unserer Beschreibung gehen wir weiterhin davon aus, daß als Interface-System
-eine Compact-Box verwendet wird. Alle hier beschriebenen Beispiele gelten ganz
-genauso für einen Einzelsteckplatz mit Kombikarte (hier müssen Sie nur zusätzlich
-eine Leuchtdiodenanzeige anschließen - aber Sie wissen ja schon, wie das gemacht
-wird.) Bei anderen Hardware-Konfigurationen ist darauf zu achten, daß ggf. andere
-Kanalnummern anzugeben sind.
-
-Die Compact-Box verfügt - genau wie die Kombikarte - über zwei analoge Eingänge
-(Kanal 1 und Kanal 2), über einen digitalen Eingang (Kanal 3) sowie über einen
-digitalen Ausgang (Kanal 4). Wie Sie schon bei der Konfiguration von #on("b")#gs-Prozess#off("b")#
-gesehen haben, haben Sie keinen Einfluß auf die Numerierung der Kanäle - die wird
-vom #on("b")#gs-Prozess#off("b")# vorgegeben. Diese Kanalnummer müssen Sie kennen, wenn Sie das
-System ansprechen (programmieren) wollen (ggf. können Sie die Kanalnummern
-durch Aktivieren des Menupunktes 'Information' unter dem Oberbegriff 'Interface'
-erfragen).
-
-
-#on("b")#6.1  Kleine Beispiele zur digitalen Ausgabe#off("b")#
-
-Bei diesem Einführungsbeispiel wollen wir uns zunächst ausschließlich auf die
-digitale Ausgabe beschränken. Wenn Sie die Compact-Box (oder eine E/A-Karte)
-angeschlossen haben, benötigen Sie hierzu keine zusätzliche Hardware, ansonsten
-schließen Sie bitte an Ihren digitalen Ausgang eine 8-elementige Leuchtdiodenanzeige
-an.
-#page#
-Sie haben sicher schon an einer Autobahnbaustelle ein sogenanntes "Lauflicht"
-gesehen. Es erscheint, als ob ein Licht über die aufgestellten Barken hinwegläuft.
-Dadurch soll auf die Baustellenein- bzw. -ausfahrt hingewiesen werden. Dieser Effekt
-wird dadurch erreicht, daß die Lampen, die an den Barken angebracht sind, nach­
-einander ein- und auch wieder ausgeschaltet werden.
-
-Wir wollen jetzt auf unserer 8-elementigen Leuchtdiodenanzeige ein solches Lauflicht
-nachbilden. Dabei soll das "Licht von rechts nach links über die Anzeige wandern".
-
-Um das Programm zu schreiben, aktivieren Sie im #on("b")#gs-Prozess#off("b")#-Menu unter dem
-Oberbegriff "Programm" den Menupunkt "Neu erstellen". Sie werden dann nach
-einem Namen gefragt, den Sie der Programmdatei geben wollen. Tragen Sie hier
-einen beliebigen Namen ein, und tippen Sie anschließend die <RETURN>-Taste.
-Notieren Sie dann das folgende ELAN-Programm:
-
-#on("b")#
- initialisiere interface;
- REP
- lauflichtdurchgang;
- warte (2.0)
- UNTIL abbruch gewuenscht PER.
-
- lauflichtdurchgang:
- bitmuster ausgeben (4, "OOOOOOOI");
- bitmuster ausgeben (4, "OOOOOOIO");
- bitmuster ausgeben (4, "OOOOOIOO");
- bitmuster ausgeben (4, "OOOOIOOO");
- bitmuster ausgeben (4, "OOOIOOOO");
- bitmuster ausgeben (4, "OOIOOOOO");
- bitmuster ausgeben (4, "OIOOOOOO");
- bitmuster ausgeben (4, "IOOOOOOO")
-#off("b")#
-
-
-Wenn Sie das Programm fertiggeschrieben haben, verlassen Sie die Datei durch die
-Tastenfolge <ESC><q>. Sie gelangen wieder zum Menu und aktivieren jetzt den
-Menupunkt "Starten". Daraufhin wird das Programm übersetzt und ausgeführt.
-#page#
-#on("b")#6.1.1  Möglichkeit eines Programmabbruchs#off("b")#
-
-Wir hoffen natürlich, daß das Programm genau die Ausgabe an der Leuchtdioden­
-anzeige erzeugt, die Sie erwartet haben.
-
-Als Ausgangsbedingung der Schleife haben wir den Testbefehl 'abbruch gewuenscht'
-verwendet. Dieser Befehl wird von #on("b")#gs-Prozess#off("b")# zur Verfügung gestellt. Durch den
-Testbefehl wird überprüft, ab zwischenzeitlich die Tastenkombination <ESC><q>
-eingegeben wurde. Ist das bei unserem Programm der Fall, so wird die Schleife
-('regulär') beendet.
-
-Aber bitte etwas Geduld: Das Programm wird nicht sofort nach Eingabe der Tasten­
-folge "abgebrochen". Hat nämlich gerade ein neuer 'lauflichtdurchgang' begonnen,
-so wird das Refinement natürlich erst vollständig abgearbeitet. Erst dann wird
-geprüft, ob die Tastenfolge zwischenzeitlich eingegeben wurde.
-
-Sollten Sie einmal in einer Situation sein, in der Sie ein Programm tatsächlich
-abbrechen müssen, so ist das (in den meisten Fällen) über die Tastenfolge
-<ESC><h> möglich. Diese Tastenkombination sollten Sie sich für "Notfälle"
-merken. Vielleicht probieren Sie sie gleich an unserem Beispiel aus.
-
-
-#on("b")#6.1.2  Die "sonstigen" Befehle#off("b")#
-
-Gehen wir zunächst auf die beiden Befehle 'initialisiere interface' und 'warte' sowie
-auf den Testbefehl 'abbruch gewuenscht ein:
-
-#on("b")#
-PROC initialisiere interface
-#off("b")#
-
- Jedes Programm zur Prozeßdatenverarbeitung, das auf das Interface-System
- zugreift, sollte mit diesem Befehl beginnen. Durch diesen Befehl wird das System
- in einen definierten Anfangszustand versetzt; systeminterne Variablen werden
- initialisiert, so daß vom Programm aus darauf zugegriffen werden kann.
-#page#
-#on("b")#
-PROC warte (REAL CONST wert)
-PROC warte (INT CONST wert)
-#off("b")#
-
- Der Befehl 'warte' ähnelt dem Ihnen sicher bekannten Befehl 'pause'. Allerdings
- wird hier als Parameter (INT oder REAL) die Wartezeit in Sekunden angegeben -
- bei 'pause' dagegen die Anzahl der Zehntelsekunden. Der eigentliche Unterschied
- besteht aber darin, daß 'warte' im Gegensatz zu 'pause' ein "Nothalt" - d.h. die
- Tastenkombination <ESC><h>, die wir im vorigen Kapitel beschrieben haben
- - registriert. Aus diesem Grunde sollte in Prozeßdatenverarbeitungsprogrammen
- mit 'warte' statt mit 'pause' gearbeitet werden.
-
-
-#on("b")#
-BOOL PROC abbruch gewuenscht
-#off("b")#
-
- Die Prozedur liefert den Wert 'TRUE', wenn zwischenzeitlich die Tasten­
- kombination <ESC><q> eingegeben wurde, sonst den Wert 'FALSE'.
-
-
-#on("b")#6.1.3  Schreibweise für Bitmuster/Bitsymbole#off("b")#
-
-Beim Befehl 'bitmuster ausgeben', wird eine Zeichenkette, die aus 8 Zeichen besteht,
-übergeben - das sog. Bitmsuster. In unserem Falle kommen hier nur die Zeichen 'I'
-und 'O' vor. Ihnen ist sicher die Bedeutung sofort klar gewesen:
-
- 'I' bedeutet, daß an der entsprechenden Position ein High-Pegel (5V) angelegt
- werden soll; 'O' bedeutet, daß an der entsprechenden Position ein Low-
- Pegel (0V) angelegt werden soll.
-
-So werden über den ersten Befehl im Refinement 'lauflichtdurchgang' alle Leucht­
-dioden ausgeschaltet, nur die Leuchtdiode ganz rechts wird angeschaltet. Über den
-zweiten Befehl wird diese wieder ausgeschaltet und dafür aber die zweite von rechts
-eingeschaltet usw.
-#page#
-Neben den Zeichen 'I' und 'O' dürfen auch die Zeichen 'X' und 'T' in der über­
-gebenen Zeichenkette auftauchen. Um die Bedeutung zu verstehen, muß man
-wissen, daß #on("b")#gs-Prozess#off("b")# den jeweils letzten Zustand des digitalen Ausgangs speichert
-(durch 'initialisiere interface' werden alle Ausgänge auf 'O' gesetzt).
-
- 'X' bedeutet, daß an der entsprechenden Position der zuletzt dagewesene
- Zustand erhalten bleibt, d.h. durch diese Ausgabe nicht beeinflußt wird.
-
- 'T' bedeutet, daß an der entsprechenden Position der zuletzt dagewesene
- Zustand "umgekehrt" wird. Lag zuletzt ein Low-Pegel (O) an, so wird
- daraus ein High-Pegel (I) und umgekehrt.
-
-Sie können sich nun sicher sofort erklären, was das folgende Programm bewirkt:
-
-
-#on("b")#
- initialisiere interface;
- bitmuster ausgeben (4, "OIOIOIOI");
- REP
- bitmuster ausgeben (4, "TTTTTTTT");
- warte (1)
- UNTIL abbruch gewuenscht PER
-#off("b")#
-
-
-Durch den ersten Befehl 'bitmuster ausgeben' wird jede zweite Leuchtdiode ange­
-schaltet, die anderen werden ausgeschaltet. Durch den zweiten Befehl in der Schleife
-wird nun jeweils jeder Zustand in "das Gegenteil umgekehrt", so daß ein Blinklicht
-entsteht, bei dem abwechselnd einmal die einen vier, dann die anderen vier Leucht­
-dioden aufleuchten - und das jeweils für eine Sekunde.
-
-
-#on("b")#6.1.4  Befehle für die digitale Ausgabe#off("b")#
-
-Einen Befehl, mit dem der digitale Ausgang des Interfaces angesprochen werden
-kann, haben Sie schon in Kapitel 6.1 kennengelernt:
-#page#
-#on("b")#
-PROC bitmuster ausgeben (INT CONST kanal,
- TEXT CONST zeichenkette)
-#off("b")#
-
-Über den ersten Parameter wird der Kanal angegeben, über den der digitale Ausgang
-angesprochen werden kann; bei uns ist das der Kanal 4 auf der Compact-Box. Über
-den zweiten Parameter wird das sogenannte Bitmuster übergeben; ein Text, der aus
-genau 8 Zeichen besteht. Dabei dürfen die Zeichen "I, O, X und T verwendet werden
-(sehen Sie dazu auch Kapitel 6.1.3).
-
-#on("b")#gs-Prozess#off("b")# stellt noch zwei weitere Befehle für die digitale Ausgabe zur Verfügung.
-Um die Wirkungsweise der Befehle zu verdeutlichen, hier das erste Beispiel (das
-Lauflicht) in einer zweiten Version:
-
-#on("b")#
- initialisiere interface;
- REP
- lauflichtdurchgang;
- warte (2.0)
- UNTIL abbruch gewuenscht PER.
-
- lauflichtdurchgang:
- INT VAR zeiger;
- FOR zeiger FROM 0 UPTO 7 REP
- schalte aktuelle leichtdiode an;
- schalte vorgaenger aus
- PER.
-
- schalte aktuelle leuchtdiode an:
- bitsymbol ausgeben (4, zeiger, "I").
-
- schalte vorgaenger aus:
- IF zeiger = 0
- THEN bitsymbol ausgeben (4, 7, "O")
- ELSE bitsymbol ausgeben (4, zeiger - 1, "O")
- FI.
-#off("b")#
-
-#on("b")#
-PROC bitsymbol ausgeben (INT CONST kanal, bitnummer,
- TEXT CONST zeichen)
-#off("b")#
-#page#
-Während durch den Befehl 'bitmuster ausgeben' auf alle 8 Ausgänge gleichzeitig
-Einfluß genommen werden kann, wird mit dem Befehl 'bitsymbol ausgeben' gezielt
-nur genau einer der 8 Ausgänge, d.h. eines der 8 Bits manipuliert. Welcher Ausgang /
-welches Bit manipuliert werden soll, wird über den zweiten Parameter festgelegt: hier
-kann einer der Werte 0...7 angegeben werden (Beachten Sie die Numerierung der
-Ausgänge (!)).
-
-Als dritter Parameter wird ein Text übergeben, der aus genau einem Zeichen
-bestehen muß. Ebenso wie beim Befehl 'bitmuster ausgeben' sind hier die Zeichen I,
-O, X und T zulässig. Sie haben hier auch die gleiche Bedeutung.
-
-Mit dem dritten Ausgabebefehl für den digitalen Ausgang können wir das Beispiel
-noch in einer dritten Version notieren:
-
-#on("b")#
- initialisiere interface;
- REP
- lauflichtdurchgang;
- warte (2.0)
- UNTIL abbruch gewuenscht PER.
-
- lauflichtdurchgang:
- INT VAR wert :: 1;
- REP
- dezimalwert ausgeben (4, wert);
- wert := 2 * wert
- UNTIL wert > 128 PER.
-#off("b")#
-
-#on("b")#
-PROC dezimalwert ausgeben (INT CONST kanal, wert)
-#off("b")#
-
-'wert' kann Werte zwischen 0 und 255 annehmen. Das zugehörige Bitmuster wird
-dann am angegebenen Kanal ausgegeben. Anhand dieses Befehls wird Ihnen sicher
-auch klar, warum gerade die oben beschriebene Numerierung der Bits gewählt
-wurde.
-#page#
-#on("b")#6.1.5  Befehle für die analoge Ausgabe#off("b")#
-
-Neben der 'digitalen' Ausgabe ist auch eine 'analoge' Ausgabe möglich. Allerdings
-wollen wir die Beschreibung der Befehle an dieser Stelle sehr kurz halten, denn eine
-"analoge" Ausgabe ist nur möglich, wenn Sie eine D/A-Karte besitzen.
-
-Auf der D/A-Karte steht nur ein physikalischer Ausgabekanal zur Verfügung, der von
-#on("b")#gs-Prozess#off("b")# jedoch über zwei Kanalnummern angesprochen werden kann.
-
-Über den Ausgabekanal 1 können Spannungswerte zwischen -5V und +5V aus­
-gegeben werden, über den Ausgabekanal 2 Spannungswerte zwischen 0V und +5V.
-
-Dafür stellt #on("b")#gs-Prozess#off("b")# zwei Befehle bereit:
-
-#on("b")#
-PROC spannungswert ausgeben (INT CONST kanal,
- REAL CONST wert)
-#off("b")#
-
-'wert' kann, in Abhängigkeit vom angegebenen Kanal, Werte zwischen -5.0 und +5.0
-(bei Kanal 1) bzw. 0.0 und +5.0 (bei Kanal 2) annehmen. Bei dem Versuch, Werte
-außerhalb dieser Grenzen anzugeben, erhalten Sie die Fehlermeldung "Der
-Spannungswert ... ist nicht zulässig!".
-
-
-#on("b")#
-PROC wert an analogausgang ausgeben (INT CONST kanal, wert)
-#off("b")#
-
-Für 'wert' kann eine Zahl zwischen 0 und 255 angegeben werden. Dabei wird 0 auf
-den kleinstmöglichen Spannungswert am jeweilgen Kanal (bei Kanal 1 also auf -5V,
-bei Kanal 2 auf 0V) und 255 auf den größtmöglichen Spannungswert am jeweilgen
-Kanal (bei beiden Kanälen auf +5V) abgebildet. Das Intervall zwischen kleinst- und
-größtmöglichem Spannungswert wird in 255 gleichgroße Teilintervalle eingeteilt. Es
-wird nun die Spannung ausgegeben, die der Intervallnummer entspricht.
-Anmerkung: Dieser Befehl hat nur einen "geringen praktischen Nutzwert"; er dient
- vornehmlich dazu, den Wandlungsprozeß zu verdeutlichen.
-#page#
-#on("b")#6.2  Kleine Beispiele zur digitalen Eingabe#off("b")#
-
-Für die im folgenden beschriebenen kleinen Beispiele benötigen Sie einen Code­
-kartenleser und einige Codekarten (können auch von der Fa. AKTRONIK bezogen
-werden). Der Anschluß des Codekartenlesers an Ihr Interface-System ist denkbar
-einfach. Stecken Sie den 8poligen Platinenstecker des Codekartenlesers in die Buchse
-des Digitaleinganges der Steckkarte bzw. der Compact-Box und den 3poligen
-Platinenstecker in die passende Spannungsversorgungsbuchse (12V) am Steckplatz
-bzw. auf der Compact-Box - fertig! Bei eingeschalteter Betriebsspannung müßte nun
-der Codekartenleser beleuchtet sein.
-
-Auf den Lochkarten sind bis zu 8 Löcher eingestanzt. Dabei können bestimmte
-Löcher (Bits) für die Erfassung definierter Merkmale verwendet werden. Dazu kann
-eine Karte in bestimmte Bereiche aufgeteilt werden.
-
-In unserem kleinen Beispiel stellen wir uns vor, daß eine (Modell-)Sparkasse zwei
-Filialen hat. Sie hat an Ihre "Kunden" Codekarten verteilt. Die Filialen sind durch
-Farben gekennzeichnet. Die oberen (höchstwertigen) zwei Bits der Karte sollen diese
-Farbe kodiert enthalten, damit auch der "Sparkassen-Computer" die Farbe schnell
-ermitteln kann. Die Karte soll folgenden Aufbau haben:
-
- +---------------------------------+
- | O o o O o o O |
- | | |
- | Farbbits| Kundennummer |
- | | |
- | | |
- | | |
- | |
- +---------------------------------+
-
-
-#center#Abb.20 Beispiellochkarte
-#page#
-Bit 7 sei für rote, Bit 6 für grüne Farbe gesetzt, d.h. gelocht. Wie wollen jetzt ein
-Programm erstellen, das auf Eingabe einer Karte deren Farbe und den durch die
-ersten 6 Bits bestimmten Wert (Kundennummer) ausgibt:
-
-#on("b")#
- initialisiere interface;
- REP
- erfasse lochkarte
- UNTIL abbruch gewuenscht PER.
-
- erfasse lochkarte:
- warte bis karte im leser;
- gib farbe aus;
- gib kundennummer aus;
- warte bis keine karte im leser.
-
- warte bis karte im leser:
- put ("Bitte eine Codekarte einlegen!"); line;
- WHILE NOT alles abgedunkelt REP
- tue nichts
- END REP;
- WHILE alles abgedunkelt REP
- tue nichts
- END REP;
- warte (1).
-
- warte bis keine karte im leser:
- put ("Bitte die Karte entnehmen!");
- REP
- tue nichts
- UNTIL alles beleuchtet PER.
-
- alles abgedunkelt:
- bitmuster (3) = "OOOOOOOO".
-
- alles beleuchtet:
- bitmuster (3) = "IIIIIIII".
-
- gib farbe aus:
- IF bitsymbol (3, 7) = "I"
- THEN put ("rote Karte"); line
- ELSE put ("grüne Karte");line
- FI;
-#page#
- gib kundennummer aus:
- INT VAR kundennummer :: 0, bitnummer;
- FOR bitnummer FROM 0 UPTO 5 REP
- registriere gesetztes bit
- PER;
- put ("Kundennummer:"); put (kundennummer): line.
-
- registriere gesetztes bit:
- IF bit ist gesetzt (3, bitnummer)
- THEN kundennummer INCR (2 ** bitnummer)
- FI.
-
-
-#off("b")#
- (Hinweis: Es handelt sich hier um ein Beispielprogramm, an dem diverse
- Befehle erläutert werden sollen - die Programmierung ist nicht
- optimal! Im Refinement 'warte bis karte im leser' ist es z.B.
- günstiger, solange einzulesen, bis der eingelesene Wert "stabil" ist.
- Auch das Refinement 'registriere gesetztes bit' würde man so nicht
- programmieren, sondern nach einem Einlesevorgang (Bitmuster)
- über Textoperationen aus dem Bitmuster die 'kundennummer'
- ermitteln...).
-
-Bevor wir Ihnen die Funktionsweise der von #on("b")#gs-Prozess#off("b")# bereitgestellten Prozeduren
-im Detail erläutern, möchten wir Ihnen noch ein paar kurze Erläuterungen zum
-obigen Programm geben.
-
-Besondere Aufmerksamkeit sollten Sie den Refinements 'warte bis karte im leser' und
-'warte bis keine karte im leser' schenken. Im erstgenannten Refinement ist sicherzu­
-stellen, daß das Einschieben der Karte (erst muß alles abgedunkelt werden - dann
-müssen einige Positionen beleuchtet sein) registriert wird. Um Fehlauswertungen der
-Karte zu vermeiden (z.B. beim Verkanten einer Karte) wird zur Sicherheit vor der
-Auswertung eine Sekunde gewartet. Am Ende des Lesevorgangs soll sichergestellt
-werden, daß die Karte auch entnommen worden ist (alle Positionen wieder beleuchtet
-sind).
-#page#
-Wir prüfen im Refinement 'gib farbe aus' nur das 7. Bit (sehen Sie die Erklärung zu
-'bitsymbol'). Ist das Bit gesetzt (die Karte hier gelocht), so identifizieren wir die Farbe
-Rot, sonst Grün. Natürlich ist es möglich, mit 2 "Farbbits" vier Farben zu ver­
-schlüsseln: z.B. Rot, wenn nur Bit 7 gesetzt ist; Grün, wenn nur Bit 6 gesetzt ist; Blau,
-wenn Bit 7 und Bit 6 gesetzt sind; Gelb, wenn weder Bit 7 noch Bit 6 gesetzt sind.
-Dadurch wird der Auswertalgorithmus aber etwas aufwendiger. Vielleicht probieren
-Sie es nacher einmal.
-
-Die Prozedur 'tue nichts' wird schon von #on("b")#gs-Prozess#off("b")# bereitgestellt. Es wird keine
-Aktion ausgeführt - jedoch überprüft, ob zwischenzeitlich die Tastenfolge
-<ESC><h> ("Notbremse") eingegeben wurde. Es empfiehlt sich, diese Prozedur
-gerade in Schleifenrümpfen einzusetzten, damit die Möglichkeit besteht, bei einer
-"Endlosschleife" einen Abbruch herbeizuführen (sonst "hängt" die Task ggf. am
-Interfacekanal)!
-
-
-#on("b")#6.2.1  Befehle für die digitale Eingabe#off("b")#
-
-In Kapitel 6.1.4 haben Sie die Befehle für die digitale Ausgabe kennengelernt, die
-Ihnen #on("b")#gs-Prozess#off("b")# zur Verfügung stellt. Zu jedem dieser drei Befehle gibt es das
-"Gegenstück" auch als Eingabebefehl. Alle Eingabebefehle sind als werteliefernde
-Prozeduren (Funktionen) ausgelegt.
-
-In den Refinements 'alles abgedunkelt' und 'alles beleuchtet' benutzen wir den
-Befehl:
-
-#on("b")#
-TEXT PROC bitmuster (INT CONST kanal)
-#off("b")#
-
-Über den Parameter wird der Kanal angegeben, über den der digitale Eingang ange­
-sprochen werden kann; bei uns ist das der Kanal 3 auf der Compact-Box. Die
-Prozedur liefert einen Text, der aus acht Zeichen besteht. Dabei können nur die
-Zeichen "I und "O" auftreten (sehen Sie dazu auch Kapitel 6.1.3).
-#page#
-Die beiden gerade genannten Refinements hätten aber auch so notiert werden
-können:
-
-#on("b")#
- alles abgedunkelt:
- dezimalwert (3) = 0.
-
- alles beleuchtet:
- dezimalwert (3) = 255.
-#off("b")#
-
-#on("b")#
-INT PROC dezimalwert (INT CONST kanal)
-#off("b")#
-
-Über den Parameter wird der Kanal angegeben, über den der digitale Eingang ange­
-sprochen werden kann; bei uns ist das wieder der Kanal 3 auf der Compact-Box. Die
-Prozedur liefert einen Integer-Wert zwischen 0 und 255 (sehen Sie dazu auch unter
-'dezimalwert ausgeben' im Kapitel 6.1.4).
-
-Den dritten Eingabebefehl für den Digitaleingang, den #on("b")#gs-Prozess#off("b")# bereitstellt, finden
-Sie im Refinement 'gib farbe aus':
-
-#on("b")#
-TEXT PROC bitsymbol (INT CONST kanal, bitnummer)
-#off("b")#
-
-Wie schon bei den anderen beiden Eingabebefehlen wird hier über den ersten
-Parameter der Eingabekanal festgelegt; bei uns auf der Compact-Box ist das wieder
-der Kanal 3. Über den zweiten Parameter wird die Nummer des Bits angegeben,
-dessen Wert ermittelt werden soll. Ist das betreffende Bit gesetzt, so liefert die
-Prozedur das Zeichen "I", sonst das Zeichen "O" (sehen Sie dazu auch das Kapitel
-6.1.3 'Schreibweise für Bitmuster/Bitsymbole').
-
-
-#on("b")#6.2.2  Eingabetests#off("b")#
-
-Neben diesen drei Eingabebefehlen stellt #on("b")#gs-Prozess#off("b")# noch zwei Testbefehle zur
-Verfügung, die man häufig gut verwenden kann. Auf einen greifen wir schon im
-Refinement 'registriere gesetztes bit' zurück:
-#page#
-#on("b")#
-BOOL PROC bit ist gesetzt (INT CONST kanal, bitnummer)
-#off("b")#
-
-Die Parameter sind die gleichen wie beim Befehl 'bitsymbol'. Zunächst liest die
-Prozedur die aktuelle Einstellung am angegebenen Digitaleingang ('kanal') ein und
-untersucht dann das Bit mit der angegebenen Bitnummer (0, ..., 7). Die Prozedur
-liefert den Wert 'TRUE', wenn das Bit mit der entsprechenden Bitnummer gesetzt ist
-(die Prozedur bitsymbol' mit gleichen Parametern also den Wert "I" liefern würde),
-sonst 'FALSE' (die Prozedur bitsymbol' mit gleichen Parametern also den Wert "O"
-liefern würde).
-
-Den zweiten Testbefehl haben wir im obigen Programm noch nicht verwendet. Wir
-könnten damit aber auch die Refinements 'alles abgedunkelt' und 'alles beleuchtet'
-folgendermaßen notieren:
-
-#on("b")#
- alles abgedunkelt:
- bitmuster gleich (3, "OOOOOOOO").
-
- alles beleuchtet:
- bitmuster gleich (3, "IIIIIIII").
-#off("b")#
-
-
-#on("b")#
-BOOL PROC bitmuster gleich (INT CONST kanal,
- TEXT CONST vorgabe)
-#off("b")#
-
-Wie bereits zuvor wird über den ersten Parameter der Kanal angegeben, über den der
-Digitaleingang angesprochen werden kann. Zunächst liest die Prozedur am ange­
-gebenen Kanal die aktuelle Einstellung ein und vergleicht es mit der 'vorgabe'. Der
-eigentliche Vorteil der Prozedur liegt darin, daß bei der Beschreibung der 'vorgabe'
-neben den Zeichen "I" und "O" auch das Zeichen "X" verwendet werden darf. z.B.
-"IOXXXXX". Entspricht das eingelesene Bitmuster der 'vorgabe', so liefert die Prozedur
-den Wert 'TRUE', sonst den Wert 'FALSE'. In gerade genannten Beispiel liefert die
-Prozedur also immer dann 'TRUE', wenn eine Karte mit der Markierung für Rot
-eingeschoben wurde - gleichgültig, welche Kundennummer eingestanzt ist.
-#page#
-#on("b")#6.2.3  Befehle für die analoge Eingabe#off("b")#
-
-Die analoge Eingabe möchten wir Ihnen an einem ganz einfachen Beispiel vor Augen
-führen. Sie brauchen dazu nur ein ganz normales Drehpotentiometer (ca. 5kOhm),
-das Sie in jedem Elektronik-Fachgeschäft für wenig Geld erhalten können. Ein
-solches Drehpotentiometer verfügt über drei Anschlüsse. Wenn man sich den inneren
-Aufbau vor Augen führt, ist die Belegung der drei Anschlüsse auch recht einsichtig.
-
-
- siehe Physikbuch!!
-
-
-
-#on("b")##center#Abb.21 Aufbau eines Drehpotentiometers#off("b")#
-
-Löten Sie ggf. auf die drei Anschlüsse je einen Lötschuh, um eine einfache Steckver­
-bindung zur Kombikarte/Compact-Box herstellen zu können. Wichtig ist vor allem,
-daß der mittlere Anschluß am Drehpotentiometer auf den mittleren Stecksockel am
-Analogeingang auf der Kombikarte/Compact-Box aufgesteckt wird. Die beiden
-anderen Anschlüsse können können Sie beliebig auf die beiden dann noch freien
-Lötstifte (+ und �) des gleichen Analogeingangs aufstecken.
-
-Starten Sie dann das folgende Programm:
-
-#on("b")#
- initialisiere interface;
- page;
- REP
- notiere potentiometerwert
- UNTIL abbruch gewuenscht PER.
-
- notiere potentiometerwert:
- put (wert von analogeingang (1));
- line.
-#off("b")#
-#page#
-Nach dem Start des Programms müßten auf dem Bildschirm untereinander immer
-wieder die gleiche Zahl (ein Wert zwischen 0 und 255) auftauchen. Wenn Sie dann
-am Potentiometer drehen, müßten sich auch die Werte auf dem Bildschirm ändern.
-
-Sie hätten das Refinement 'notiere potentiometerwert' auch folgendermaßen notieren
-können:
-
-#on("b")#
- notiere potentiometerwert:
- put (spannungswert (1));
- line.
-#off("b")#
-
-Statt Wert zwischen 0 und 255 zu erhalten, müßten Sie jetzt Werte zwischen 0.0 und
-5.0 erhalten.
-
-
-#on("b")#
-REAL PROC spannungswert (INT CONST kanal)
-#off("b")#
-
-Über den Parameter wird der Kanal angegeben, über den der analoge Eingang ange­
-sprochen werden kann; bei uns ist das der Kanal 1 (oder 2) auf der Kombikarte/
-Compact-Box. Auf der Kombikarte/Compact-Box können nur Spannungswerte
-zwischen 0.0V und 5.0V eingelesen werden. Auf der A/D-Karte kann der Bereich für
-die einzulesenden Sapnnungwerte durch die Schalterstellung auf der Karte eingestellt
-werden (Sehen Sie dazu auch Kapitel 5.3.1).
-
-
-#on("b")#
-REAL PROC wert von analogeingang (INT CONST kanal)
-#off("b")#
-
-Über den Parameter wird der Kanal angegeben, über den der analoge Eingang ange­
-sprochen werden kann; bei uns ist das der Kanal 1 (oder 2) auf der Kombikarte/
-Compact-Box. Geliefert werden Werte zwischen 0 und 255.
-
-Tatsächlich wird aber ein Spannungswert vom Analogeingang eingelesen. Dieser
-Spannungswert wird vom Analog-Digital-Wandler auf der Karte nach folgendem
-Verfahren gewandelt:
-#page#
-Dem größtmöglichen Spannungswert an diesem Eingang wird der Wert 255, dem
-kleinstmöglichen der Wert 0 zugeordnet. Das Intervall zwischen dem kleinst- und
-größtmöglichen Spannungswert wird in 255 gleichgroße Teilintervalle eingeteilt. Es
-wird nun die Nummer des Intervalls geliefert, in das die eingelesene Spannung fällt.
-Kleinst- und größtmögliche Spannungswerte sind abhängig von der aktuellen Steck­
-karte, Interface-Konfiguration).
-
-
-#on("b")#6.3  Hinweise auf Aufgabenmaterial#off("b")#
-
-Eine Fülle von Beispielanwendungen sind beschrieben in:
-
- Landesinstitut für Schule und Weiterbildung (Hrsg.), Materialien zur Lehrerfort­
- bildung in Nordrhein-Westfalen, Heft 2, Neue Technologien - Informations­
- technologische Inhalte im Wahlpflichtunterricht der Klassen 9/10, 2. über­
- arbeitete Auflage 1987
-