summaryrefslogtreecommitdiff
path: root/prozess/ls-Prozess 5
diff options
context:
space:
mode:
Diffstat (limited to 'prozess/ls-Prozess 5')
-rw-r--r--prozess/ls-Prozess 5829
1 files changed, 0 insertions, 829 deletions
diff --git a/prozess/ls-Prozess 5 b/prozess/ls-Prozess 5
deleted file mode 100644
index a9b5028..0000000
--- a/prozess/ls-Prozess 5
+++ /dev/null
@@ -1,829 +0,0 @@
-(*
-
- **********************************************************
- **********************************************************
- ** **
- ** ls-Prozess 5 **
- ** **
- ** Version 1.02 **
- ** **
- ** (Stand : 26.01.90) **
- ** **
- ** **
- ** **
- ** Autoren: Bruno Pollok, Bielefeld **
- ** Wolfgang Weber, Bielefeld **
- ** **
- ** **
- ** Copyright (C) 1988 Eva Latta-Weber, Bielefeld **
- ** Copyright (C) 1990 ERGOS GmbH, Siegburg **
- **********************************************************
- **********************************************************
-
- *)
-PACKET ls prozess 5 DEFINES
- pdv konfiguration zugelassen,
- pdv konfiguration evtl aktivieren,
- pdv konfiguration zeigen,
- pdv kanal konfigurieren,
- pdv interfaceausgabe testen,
- pdv interfaceeingabe testen:
-LET max steckplaetze = 4,
- max portanzahl = 4,
- anzahl kartensorten = 5,
- betriebsart = 1,
- keine karte = 1,
- ea karte = 2,
- kombi = 3,
- da karte = 4,
- ad karte = 5,
-
- compact = 6,
- einzel = 7,
- mehrfach = 8;
-LET testfenster x = 11,
- testfenster y = 5,
- testfenster xsize = 59,
- testfenster ysize = 15;
-WINDOW VAR testfenster :: window (testfenster x, testfenster y,
- testfenster xsize, testfenster ysize);
-INT VAR steckplatzart :: 0;
-BOOL VAR mit konfigurationsmoeglichkeit :: TRUE;
-TASK VAR konfigurationsmanager :: niltask;
-
-ROW max steckplaetze INT VAR kartenart :: ROW max steckplaetze INT :
- (keine karte, keine karte,
- keine karte, keine karte);
-LET SPANNUNG = ROW 2 REAL,
- PORT = ROW 3 INT,
- KARTE = ROW max portanzahl PORT;
-ROW anzahl kartensorten KARTE CONST karte :: ROW anzahl kartensorten KARTE :
-(* ---------------------------------------------------------------------- *)
-( KARTE : (
-(* ---------------------------------------------------------------------- *)
-
-(* *) PORT : (nicht belegt, 0, 0), (* Port 1 *)
-(* leere *) PORT : (nicht belegt, 0, 0), (* Port 2 *)
-(* Karte *) PORT : (nicht belegt, 0, 0), (* Port 3 *)
-(* *) PORT : (nicht belegt, 0, 0)), (* Port 4 *)
-(*----------------------------------------------------------------------- *)
- KARTE : (
-(* ---------------------------------------------------------------------- *)
-(* *) PORT : (digital ein, 1, 3), (* Port 1 *)
-
-(* E/A *) PORT : (digital aus, 1, 1), (* Port 2 *)
-(* Karte *) PORT : (digital ein, 1, 3), (* Port 3 *)
-(* *) PORT : (digital aus, 1, 1)), (* Port 4 *)
-(*----------------------------------------------------------------------- *)
- KARTE : (
-(* ---------------------------------------------------------------------- *)
-(* *) PORT : (analog ein, 2, 2), (* Port 1 *)
-(* Kombi *) PORT : (analog ein, 3, 2), (* Port 2 *)
-
-(* Karte *) PORT : (digital ein, 1, 3), (* Port 3 *)
-(* *) PORT : (digital aus, 1, 1 )), (* Port 4 *)
-(*----------------------------------------------------------------------- *)
- KARTE : (
-(* ---------------------------------------------------------------------- *)
-(* *) PORT : (analog aus, 1, 1), (* Port 1 *)
-(* D/A *) PORT : (analog aus, 1, 3), (* Port 2 *)
-(* Wandler *) PORT : (nicht belegt, 0, 0), (* Port 3 *)
-
-(* *) PORT : (nicht belegt, 0, 0)), (* Port 4 *)
-(*----------------------------------------------------------------------- *)
- KARTE : (
-(* ---------------------------------------------------------------------- *)
-(* *) PORT : (analog ein, 1, 1), (* Port 1 *)
-(* A/D *) PORT : (analog ein, 1, 3), (* Port 2 *)
-(* Wandler *) PORT : (nicht belegt, 0, 0), (* Port 3 *)
-(* *) PORT : (nicht belegt, 0, 0)) (* Port 4 *)
-
-(*----------------------------------------------------------------------- *)
- );
-PROC pdv konfiguration zugelassen (BOOL CONST wahrheitswert):
- teste berechtigung;
- mit konfigurationsmoeglichkeit := wahrheitswert;
- IF mit konfigurationsmoeglichkeit
- THEN konfigurationsmanager := niltask
- ELSE konfigurationsmanager := myself
- FI.
- teste berechtigung:
- enable stop;
- IF NOT (konfigurationsmanager = niltask OR
-
- konfigurationsmanager = myself)
- THEN errorstop ("Befehl ist nur in Task '" +
- name (konfigurationsmanager) + "' zugelassen!")
- FI.
-END PROC pdv konfiguration zugelassen;
-PROC pdv konfiguration evtl aktivieren:
- IF mit konfigurationsmoeglichkeit
- THEN activate (3)
- ELSE deactivate (3)
- FI
-END PROC pdv konfiguration evtl aktivieren;
-PROC pdv kanal konfigurieren:
- TEXT CONST info :: " "15"Auswahl der Steckplatzart "14" "13""13""
-
- + " c Compactbox "13""
- + " e Einzelsteckplatz "13""
- + " m Mehrfachsteckplatz ",
- liste :: "Compact"13"Einzel"13"Mehrfach",
- tasten :: "cemCEM";
- INT VAR auswahl := menualternative (info, liste, tasten, 5, FALSE);
- SELECT auswahl OF
- CASE 1, 101, 104 : trage compactbox ein;
- zeige kanalbelegung (0)
- CASE 2, 102, 105 : trage einzelplatzbelegung ein;
-
- zeige kanalbelegung (0)
- CASE 3, 103, 106 : bearbeite die steckplaetze einzeln
- END SELECT;
- beende kanaldaten eintragen.
- trage compactbox ein:
- steckplatzart := compact;
- trage steckplatzbelegung ein (1, kombi);
- trage steckplatzbelegung ein (2, keine karte);
- trage steckplatzbelegung ein (3, keine karte);
- trage steckplatzbelegung ein (4, keine karte).
- trage einzelplatzbelegung ein:
- steckplatzart := einzel;
- trage steckplatzbelegung ein (1, ermittelte kartenart (0));
-
- trage steckplatzbelegung ein (2, keine karte);
- trage steckplatzbelegung ein (3, keine karte);
- trage steckplatzbelegung ein (4, keine karte).
- bearbeite die steckplaetze einzeln:
- INT VAR platz;
- steckplatzart := mehrfach;
- FOR platz FROM 1 UPTO max steckplaetze REP
- trage steckplatzbelegung ein (platz, ermittelte kartenart (platz));
- zeige kanalbelegung (platz * 10)
- PER.
-END PROC pdv kanal konfigurieren;
-PROC pdv konfiguration zeigen:
- SELECT steckplatzart OF
-
- CASE compact : zeige kanalbelegung (0)
- CASE einzel : zeige kanalbelegung (0)
- CASE mehrfach : zeige belegung einzelner steckplaetze
- OTHERWISE noch nicht konfiguriert
- END SELECT.
- noch nicht konfiguriert:
- menuinfo (" "15"Warnung: "14" "13""13""13""
- + " Das Interface wurde noch nicht konfiguriert! "13""13""
- + " In diesem Zustand sind weder Eingaben noch "13""
- + " Ausgaben über das Interface möglich. "13"").
-
- zeige belegung einzelner steckplaetze:
- TEXT CONST info ::
- " "15"Eingestellt: Mehrfachsteckplatz "14" "13""13""
- + " 1 Info Steckplatz 1 "13""
- + " 2 Info Steckplatz 2 "13""
- + " 3 Info Steckplatz 3 "13""
- + " 4 Info Steckplatz 4 "13""13""
- + " z Zurück ins Hauptmenü ",
- liste :: "1"13"2"13"3"13"4"13"z",
-
- tasten :: "1234zZ";
- INT VAR auswahl;
- REP auswahl := menualternative (info, liste, tasten, 5, FALSE);
- SELECT auswahl OF
- CASE 1, 101 : zeige kanalbelegung (10)
- CASE 2, 102 : zeige kanalbelegung (20)
- CASE 3, 103 : zeige kanalbelegung (30)
- CASE 4, 104 : zeige kanalbelegung (40)
- END SELECT
- UNTIL (auswahl = 5) OR (auswahl > 104) PER
-END PROC pdv konfiguration zeigen;
-PROC pdv interfaceausgabe testen:
- gestalte testfenster ("Ausgabetest");
-
- disable stop;
- teste interface;
- IF NOT is error
- THEN teste interface ausgabe
- FI;
- IF is error
- THEN fehlerbehandlung
- ELSE schliesse interface;
- enable stop;
- beseitige testfenster;
- refresh submenu
- FI.
- fehlerbehandlung:
- TEXT VAR meldung :: errormessage;
- clear error;
- schalte alles aus;
- schliesse interface;
- enable stop;
- cursor off;
- regenerate menuscreen;
- menuinfo (" " + invers (meldung)).
-END PROC pdv interfaceausgabe testen;
-
-PROC pdv interfaceeingabe testen:
- gestalte testfenster ("Eingabetest");
- disable stop;
- teste interface;
- IF NOT is error
- THEN teste interface eingabe
- FI;
- IF is error
- THEN fehlerbehandlung
- ELSE schliesse interface;
- enable stop;
- beseitige testfenster;
- refresh submenu
- FI.
- fehlerbehandlung:
- TEXT VAR meldung :: errormessage;
- clear error;
- schalte alles aus;
- schliesse interface;
- enable stop;
- cursor off;
-
- regenerate menuscreen;
- menuinfo (" " + invers (meldung)).
-END PROC pdv interfaceeingabe testen;
-PROC beseitige testfenster:
- INT VAR z;
- FOR z FROM testfenster y + testfenster ysize DOWNTO testfenster y - 1 REP
- cursor (testfenster x - 1, z);
- out (""5"")
- PER
-END PROC beseitige testfenster;
-PROC gestalte testfenster (TEXT CONST funktionsart):
- show (testfenster);
- cursor (testfenster x - 1, testfenster y + testfenster ysize - 2);
- out (balken links + (testfenster xsize * waagerecht) + balken rechts);
-
- cursor (testfenster, 1, 2);
- out (testfenster, center (testfenster, invers (funktionsart)))
-END PROC gestalte testfenster;
-PROC testfensterfussnote (TEXT CONST meldung):
- cursor (testfenster, 2, testfenster ysize);
- out (testfenster, meldung)
-END PROC testfensterfussnote;
-PROC teste interfaceausgabe:
- INT VAR kanalnummer, steckplatz, port;
- TEXT VAR nummer :: "";
- enable stop;
- REP hole kanalnummer;
- teste ausgabe an kanal
- PER.
- hole kanalnummer:
- SELECT steckplatzart OF
-
- CASE compact : kanalnummer := 4; steckplatz := 1; port := 4
- CASE einzel : kanalnummer muss evtl erfragt werden
- CASE mehrfach : kanalnummer muss erfragt werden
- OTHERWISE errorstop ("Interface ist noch nicht konfiguriert!")
- END SELECT;
- cursor (testfenster, 2, 5);
- out (testfenster, "Ausgabe an Kanal " + text (kanalnummer) + klammer +
- kanalbeschreibung (steckplatz, port));
- IF steckplatzart = mehrfach
- THEN cursor (testfenster, 25, 6);
-
- out (testfenster, "in Steckplatz " + text (steckplatz))
- FI;
- out (testfenster, ")").
- klammer:
- IF kanalnummer < 10
- THEN " (= "
- ELSE " (= "
- FI.
- kanalnummer muss evtl erfragt werden:
- SELECT kartenart [1] OF
- CASE kombi : kanalnummer := 4; steckplatz := 1; port := 4
- CASE eakarte : kanalnummer := 2; steckplatz := 1; port := 2
- CASE dakarte : frage nach kanalnummer auf da karte;
- steckplatz := 1; port := kanalnummer
-
- OTHERWISE errorstop ("Keine Ausgabe an " + kartenname + " möglich!")
- END SELECT.
- kartenname:
- IF kartenart [1] = ad karte
- THEN "A/D-Karte"
- ELSE "leeren Steckplatz"
- FI.
- frage nach kanalnummer auf da karte:
- menufootnote ("Zurück zum Hauptmenü: <ESC><q>");
- testfensterfussnote ("Bitte eine Kanalnummer eingeben!");
- cursor (testfenster, 2, 5);
- out (testfenster, "Ausgabe - Kanal (1 oder 2): ");
- cursor on;
- REP inchar (nummer)
- UNTIL (pos ("12", nummer) > 0) OR esc q gedrueckt PER;
-
- cursor off;
- IF nummer = ""27""
- THEN LEAVE teste interface ausgabe
- ELSE kanalnummer := int (nummer)
- FI.
- esc q gedrueckt:
- (nummer = ""27"") AND (incharety (20) = "q").
- kanalnummer muss erfragt werden:
- TEXT VAR exit char;
- menufootnote ("Zurück zum Hauptmenü: <ESC><q>");
- testfensterfussnote ("Bitte eine Kanalnummer eingeben!");
- cursor (testfenster, 2, 5);
- out (testfenster, "Ausgabe - Kanal:");
- cursor on;
- REP cursor (testfenster, 19, 5);
-
- editget (testfenster, nummer, 4, 4, "", "q", exit char)
- UNTIL (exit char = ""27"q") OR ausgabekanal eingegeben PER;
- cursor off;
- IF exit char = ""27"q"
- THEN LEAVE teste interface ausgabe
- FI.
- ausgabekanal eingegeben:
- kanalnummer := abs (int (nummer));
- steckplatz := kanalnummer DIV 10;
- port := kanalnummer MOD 10;
- IF steckplatz = 0 THEN steckplatz := 1 FI;
- cursor (testfenster, 2, 7);
- IF (kanalnummer < 1) OR (kanalnummer > 49)
-
- THEN out (testfenster, "Unzulässige Kanalnummer! "); FALSE
- ELIF (port = 0) OR (port > max portanzahl) OR kein ausgabeport
- THEN out (testfenster, "Dies ist kein Ausgabe-Kanal! "); FALSE
- ELSE out (testfenster, " "); TRUE
- FI.
- kein ausgabeport:
- (port betriebsart <> digital aus) AND (port betriebsart <> analog aus).
- port betriebsart: karte [sorte][port][betriebsart].
- sorte : kartenart [steckplatz].
-
- teste ausgabe an kanal:
- TEXT VAR wert;
- cursor (testfenster, 1, 8);
- out (testfenster, testfenster xsize * "-");
- cursor (testfenster, 2, 11);
- out (testfenster, "Ausgabewert: ");
- testfenster fussnote ("Bitte einen Wert zwischen 0 und 255 eingeben!");
- menufootnote ("'Werte ausgeben' beenden: <ESC><q>");
- cursor on;
- REP cursor (testfenster, 15, 11);
- wert := "0";
- editget (testfenster, wert, 4, 4, "", "qh", exit char);
- IF exit char = return
-
- THEN ausgeben (kanalnummer, int (wert) MOD ganzzahlobergrenze)
- ELIF exit char = ""27"h"
- THEN errorstop ("Programm-Abbruch durch <ESC><h>!")
- FI
- UNTIL exitchar = ""27"q" PER;
- cursor off;
- IF (steckplatzart = mehrfach) OR (kartenart [1] = da karte)
- THEN cursor (testfenster, 1, 5);
- out (testfenster, (2 * testfenster xsize) * " ");
- cursor (testfenster, 2, 11);
- out (testfenster, " ");
-
- testfenster fussnote ((testfenster xsize - 2) * " ")
- ELSE LEAVE teste interfaceausgabe
- FI.
- return: ""13"".
-END PROC teste interfaceausgabe;
-PROC teste interfaceeingabe:
- INT VAR kanalnummer, steckplatz, port;
- TEXT VAR nummer :: "";
- enable stop;
- REP hole kanalnummer;
- teste eingabe vom kanal
- PER.
- hole kanalnummer:
- IF steckplatzart = 0
- THEN errorstop ("Interface ist noch nicht konfiguriert!")
- ELSE kanalnummer erfragen
-
- FI;
- cursor (testfenster, 2, 5);
- out (testfenster, "Eingabe von Kanal " + text (kanalnummer) + klammer +
- kanalbeschreibung (steckplatz, port));
- IF steckplatzart = mehrfach
- THEN cursor (testfenster, 26, 6);
- out (testfenster, "in Steckplatz " + text (steckplatz))
- FI;
- out (testfenster, ")").
- klammer:
- IF kanalnummer < 10
- THEN " (= "
- ELSE " (= "
- FI.
- kanalnummer erfragen:
- SELECT steckplatzart OF
-
- CASE compact : drei kanaele anbieten;
- steckplatz := 1; port := kanalnummer
- CASE einzel : zwei oder drei kanaele anbieten;
- steckplatz := 1; port := kanalnummer
- CASE mehrfach : alle kanaele moeglich
- END SELECT.
- drei kanaele anbieten:
- menufootnote ("Zurück zum Hauptmenü: <ESC><q>");
- testfensterfussnote ("Bitte eine Kanalnummer eingeben!");
- cursor (testfenster, 2, 5);
- out (testfenster, "Eingabe - Kanal (1, 2 oder 3): ");
-
- cursor on;
- REP inchar (nummer)
- UNTIL (pos ("123", nummer) > 0) OR esc q gedrueckt PER;
- cursor off;
- IF nummer = ""27""
- THEN LEAVE teste interface eingabe
- ELSE kanalnummer := int (nummer)
- FI.
- esc q gedrueckt:
- (nummer = ""27"") AND (incharety (20) = "q").
- zwei oder drei kanaele anbieten:
- SELECT kartenart [1] OF
- CASE kombi : drei kanaele anbieten
- CASE ad karte : zwei kanaele anbieten
- CASE ea karte : kanalnummer := 1
-
- OTHERWISE errorstop ("Eingabe bei " + kartenname + " nicht möglich!")
- END SELECT.
- kartenname:
- IF kartenart [1] = da karte
- THEN "D/A-Karte"
- ELSE "leerem Steckplatz"
- FI.
- zwei kanaele anbieten:
- menufootnote ("Zurück zum Hauptmenü: <ESC><q>");
- testfensterfussnote ("Bitte eine Kanalnummer eingeben!");
- cursor (testfenster, 2, 5);
- out (testfenster, "Eingabe - Kanal (1 oder 2): ");
- cursor on;
- REP inchar (nummer)
- UNTIL (pos ("12", nummer) > 0) OR esc q gedrueckt PER;
-
- cursor off;
- IF nummer = ""27""
- THEN LEAVE teste interface eingabe
- ELSE kanalnummer := int (nummer)
- FI.
- alle kanaele moeglich:
- TEXT VAR exit char;
- menufootnote ("Zurück zum Hauptmenü: <ESC><q>");
- testfensterfussnote ("Bitte eine Kanalnummer eingeben!");
- cursor (testfenster, 2, 5);
- out (testfenster, "Eingabe - Kanal:");
- cursor on;
- REP cursor (testfenster, 19, 5);
- editget (testfenster, nummer, 4, 4, "", "q", exit char)
- UNTIL (exit char = ""27"q") OR eingabekanal eingegeben PER;
-
- cursor off;
- IF exit char = ""27"q"
- THEN LEAVE teste interface eingabe
- FI.
- eingabekanal eingegeben:
- kanalnummer := abs (int (nummer));
- steckplatz := kanalnummer DIV 10;
- port := kanalnummer MOD 10;
- IF steckplatz = 0 THEN steckplatz := 1 FI;
- cursor (testfenster, 2, 7);
- IF (kanalnummer < 1) OR (kanalnummer > 49)
- THEN out (testfenster, "Unzulässige Kanalnummer! "); FALSE
- ELIF (port = 0) OR (port > max portanzahl) OR kein eingabeport
-
- THEN out (testfenster, "Dies ist kein Eingabe-Kanal! "); FALSE
- ELSE out (testfenster, " "); TRUE
- FI.
- kein eingabeport:
- (port betriebsart <> digital ein) AND (port betriebsart <> analog ein).
- port betriebsart: karte [sorte][port][betriebsart].
- sorte : kartenart [steckplatz].
- teste eingabe vom kanal:
- cursor (testfenster, 1, 8);
- out (testfenster, testfenster xsize * "-");
- cursor (testfenster, 2, 11);
-
- out (testfenster, "Eingelesener Wert: ");
- testfenster fussnote (" ");
- menufootnote ("'Werte einlesen' beenden: <ESC><q>");
- REP cursor (testfenster, 21, 11);
- out (text (eingabe (kanalnummer), 3));
- warte (0.1)
- UNTIL abbruch gewuenscht PER;
- IF (steckplatzart = einzel) AND (kartenart [1] = ea karte)
- THEN LEAVE teste interfaceeingabe
- ELSE cursor (testfenster, 1, 5);
- out (testfenster, (2 * testfenster xsize) * " ");
-
- cursor (testfenster, 2, 11);
- out (testfenster, " ")
- FI.
-END PROC teste interfaceeingabe;
-TEXT PROC kanalbeschreibung (INT CONST steckplatz, port):
- IF steckplatzart = compact
- THEN port auf compactbox
- ELSE port auf steckkarte
- FI.
- port auf compactbox:
- portbeschreibung + " der Compact-Box".
- port auf steckkarte:
- SELECT kartenart [steckplatz] OF
- CASE kombi : portbeschreibung + " der Kombi-Karte"
- CASE ea karte : portbeschreibung + " der E/A-Karte"
-
- CASE da karte : portbeschreibung + " der D/A-Karte"
- CASE ad karte : portbeschreibung + " der A/D-Karte"
- OTHERWISE ""
- END SELECT.
- portbeschreibung:
- SELECT 2 + karte [kartenart [steckplatz]][port][betriebsart] OF
- CASE 1 : "Digitalausgang"
- CASE 3 : "Digitaleingang"
- CASE 0 : "Analogausgang " + text (port)
- CASE 4 : "Analogeingang " + text (port)
- OTHERWISE ""
- END SELECT.
-END PROC kanalbeschreibung;
-PROC trage steckplatzbelegung ein (INT CONST steckplatz, art):
-
- INT VAR port;
- kartenart [steckplatz] := art;
- klaere spannungsbereiche;
- FOR port FROM 1 UPTO max portanzahl REP
- trage kanaldaten ein (kanalnummer, spannungsbereich, portdaten);
- IF steckplatz = 1
- THEN trage kanaldaten ein (port, spannungsbereich, portdaten)
- FI
- PER.
- kanalnummer: port + 10 * steckplatz.
- portdaten : karte [kartenart [steckplatz]][port].
- spannungsbereich:
- IF port = 1
- THEN bereich von e1
- ELIF port = 2
- THEN bereich von e2
-
- ELSE SPANNUNG : (0.0, 0.0)
- FI.
- klaere spannungsbereiche:
- SPANNUNG VAR bereich von e1, bereich von e2;
- SELECT kartenart [steckplatz] OF
- CASE kombi : spannungsbereich 0 bis 5 volt
- CASE da karte : setze spannungsbereiche
- CASE ad karte : erfrage adkarte schalterstellungen
- OTHERWISE alles auf 0 setzen
- END SELECT.
- spannungsbereich 0 bis 5 volt:
- bereich von e1 := SPANNUNG : (0.0, 5.0);
- bereich von e2 := SPANNUNG : (0.0, 5.0).
- setze spannungsbereiche:
-
- bereich von e1 := SPANNUNG : (-5.0, 5.0);
- bereich von e2 := SPANNUNG : ( 0.0, 5.0).
- alles auf 0 setzen:
- bereich von e1 := SPANNUNG : (0.0, 0.0);
- bereich von e2 := SPANNUNG : (0.0, 0.0).
-erfrage adkarte schalterstellungen:
- REP
- hole schalterstellung
- UNTIL schalterstellung sinnvoll PER;
- bestimme spannungsbereiche (schalterzustand, bereich von e1, bereich von e2).
- hole schalterstellung:
- TEXT VAR schalterzustand := menuanswer (infotext, "00000000", 5).
- infotext:
-
- ueberschrift
- + " Bitte die aktuelle Schalterstellung eintragen: "13""13""
- + " Es bedeutet : 1 - Schalterstellung 'on' "13""
- + " 0 - Schalterstellung 'off' "13""13""
- + " Nummer : 12345678 "13""
- + " |||||||| ".
- ueberschrift:
- IF steckplatzart = mehrfach
- THEN " "15"Angabe der Schalterstellungen auf der A/D-Karte "14""13""
- + " "15" in Steckplatz "
- + text (steckplatz) + ": "14""13""13""
-
- ELSE " "15"Angabe der Schalterstellungen auf der A/D-Karte: "14""13""13""
- FI.
- schalterstellung sinnvoll:
- (length (schalterzustand) = 8) AND nur nullen und einsen.
- nur nullen und einsen:
- BOOL VAR ok := TRUE; INT VAR m;
- FOR m FROM 1 UPTO 8 REP
- IF NOT ((schalterzustand SUB m) = "1" OR (schalterzustand SUB m ) = "0")
- THEN ok := FALSE
- FI
- PER;
- ok.
-END PROC trage steckplatzbelegung ein;
-INT PROC ermittelte kartenart (INT CONST steckplatz):
- TEXT CONST info e :: " "15"Angabe der Interfacekarte: "14" "13""13""
-
- + " k Kombikarte "13""
- + " e E / A - Karte "13""
- + " d D / A - Wandler - Karte "13""
- + " a A / D - Wandler - Karte "13""
- + " 0 Keine Steckkarte ",
- info m :: " "15"Angabe der Interfacekarte für Steckplatz "
- + text (steckplatz) + ": "14" "13""13""
- + " k Kombikarte "13""
-
- + " e E / A - Karte "13""
- + " d D / A - Wandler - Karte "13""
- + " a A / D - Wandler - Karte "13""
- + " 0 Keine Steckkarte ",
- liste :: "Kombi"13"E/A"13"D/A"13"A/D"13"Keine",
- tasten :: "keda0KEDA";
- INT VAR auswahl := menualternative (infotext, liste, tasten, 5, FALSE);
- SELECT auswahl OF
- CASE 1, 101, 106 : kombi
-
- CASE 2, 102, 107 : eakarte
- CASE 3, 103, 108 : dakarte
- CASE 4, 104, 109 : adkarte
- OTHERWISE keine karte
- END SELECT.
- infotext:
- IF steckplatz = 0
- THEN info e
- ELSE info m
- FI.
-END PROC ermittelte kartenart;
-PROC zeige kanalbelegung (INT CONST steckplatz):
- ROW 4 TEXT VAR kanalnummer;
- kanalnummer [1] := text (steckplatz + 1, 2);
- kanalnummer [2] := text (steckplatz + 2, 2);
- kanalnummer [3] := text (steckplatz + 3, 2);
-
- kanalnummer [4] := text (steckplatz + 4, 2);
- IF steckplatzart = compact
- THEN zeige compactboxbelegung
- ELSE zeige steckplatz mit karte
- FI.
- zeige steckplatz mit karte:
- SELECT kartenart [steckplatznummer] OF
- CASE kombi : zeige steckplatz mit kombi
- CASE eakarte: zeige steckplatz mit eakarte
- CASE dakarte: zeige steckplatz mit dakarte
- CASE adkarte: zeige steckplatz mit adkarte
- OTHERWISE zeige steckplatz ohne karte
- END SELECT.
-
- steckplatznummer:
- IF steckplatz = 0
- THEN 1
- ELSE steckplatz DIV 10
- FI.
- zeige compactboxbelegung:
- menuinfo (
- " "15"Eingestellt: Compactbox "14" "13""13""
- + " Belegung der Kanäle: "13""13""13""
- + kanalnummeranzeige kombikarte).
- zeige steckplatz mit kombi:
- menuinfo (ueberschrift + " mit Kombikarte: "14" "13""13""
- + " Belegung der Kanäle: "13""13""13""
- + kanalnummeranzeige kombikarte).
-
- zeige steckplatz mit eakarte:
- menuinfo (ueberschrift + " mit E / A - Karte: "14" "13""13""
- + " Belegung der Kanäle: "13""13""13""
- + kanalnummeranzeige eakarte).
- zeige steckplatz mit dakarte:
- menuinfo (ueberschrift + " mit D / A - Karte: "14" "13""13""
- + " Belegung der Kanäle: "13""13""
- + kanalnummeranzeige dakarte).
- zeige steckplatz mit adkarte:
- hole spannungsbereiche;
- menuinfo (" " + ueberschrift + " mit A / D - Karte: "14""13""13""
-
- + " Zwei analoge Eingänge stehen zur Verfügung: "13""13""
- + kanalnummeranzeige adkarte).
- hole spannungsbereiche:
- SPANNUNG VAR e1 bereich, e2 bereich;
- hole spannungsbereich (steckplatz + 1, e1 bereich [1], e1 bereich [2]);
- hole spannungsbereich (steckplatz + 2, e2 bereich [1], e2 bereich [2]).
- zeige steckplatz ohne karte:
- IF steckplatz = 0
- THEN menuinfo (
- " "15"Einzelsteckplatz ohne Steckkarte: "14" "13""13""13""
- + " Es sind weder Ein- noch Ausgaben möglich! "13"")
-
- ELSE menuinfo (
- " "15"Steckplatz "
- + text (steckplatz DIV 10) + " ohne Steckkarte: "14""13""13""13""
- + " Es sind hier weder Ein- noch Ausgaben möglich! "13"")
- FI.
- ueberschrift:
- IF steckplatz = 0
- THEN " "15"Einzelsteckplatz"
- ELSE " "15"Steckplatz " + text (steckplatz DIV 10)
- FI.
- kanalnummeranzeige kombikarte:
- " "15"Kanal " + kanalnummer [1]
- + ": "14" Analogeingang 1 (E1) "13""13""
-
- + " "15"Kanal " + kanalnummer [2]
- + ": "14" Analogeingang 2 (E2) "13""13""
- + " "15"Kanal " + kanalnummer [3]
- + ": "14" Digitaleingang "13""13""
- + " "15"Kanal " + kanalnummer [4]
- + ": "14" Digitalausgang "13"".
- kanalnummeranzeige eakarte:
- " "15"Kanal " + kanalnummer [1]
- + ": "14" Digitaleingang "13""13""
- + " "15"Kanal " + kanalnummer [2]
- + ": "14" Digitalausgang "13""13""
-
- + " ( "15"Kanal " + kanalnummer [3]
- + ": "14" Digitaleingang (= Kanal " + kanalnummer [1] + ") )"13""13""
- + " ( "15"Kanal " + kanalnummer [4]
- + ": "14" Digitalausgang (= Kanal " + kanalnummer [2] + ") )"13"".
- kanalnummeranzeige adkarte:
- " "15"Kanal " + kanalnummer [1]
- + ": "14" (E1) Spannungsbereich " + bereich1 + ""13""13""
- + " "15"Kanal " + kanalnummer [2]
- + ": "14" (E2) Spannungsbereich " + bereich2 + ""13"".
-
- bereich1:
- IF e1 bereich [1] = 0.0
- THEN " 0.000 V - +" + text (e1 bereich [2], 6, 3) + " V "
- ELSE text (e1 bereich [1], 7, 3) + " V - +" + text (e1 bereich [2], 6, 3) + " V "
- FI.
- bereich2:
- IF e2 bereich [1] = 0.0
- THEN " 0.000 V - +" + text (e2 bereich [2], 6, 3) + " V"
- ELSE text (e2 bereich [1], 7, 3) + " V - +" + text (e2 bereich [2], 6, 3) + " V"
- FI.
- kanalnummeranzeige dakarte:
- " Die Karte stellt einen Analogausgang zur Verfügung, "13""
-
- + " der auf zwei Arten angesprochen werden kann: "13""13""13""
- + " "15"Kanal " + kanalnummer [1]
- + ": "14" Spannungsbereich -5 V - +5 V "13""13""
- + " "15"Kanal " + kanalnummer [2]
- + ": "14" Spannungsbereich 0 V - +5 V "13"".
-END PROC zeige kanalbelegung;
-PROC bestimme spannungsbereiche (TEXT CONST schalterstellung,
- SPANNUNG VAR bereich von e1,
- SPANNUNG VAR bereich von e2):
-
- bestimme bereich von e1;
- bestimme bereich von e2.
- bestimme bereich von e1:
- IF schalter 3 geschlossen
- THEN umax1 := 0.25
- ELIF schalter 2 geschlossen
- THEN umax1 := 2.5
- ELIF schalter 1 geschlossen
- THEN umax1 := 25.0
- ELSE umax1 := 0.0
- FI;
- IF schalter 8 geschlossen
- THEN symmetrische spannungsmessung ueber e1
- ELSE asymmetrische spannungsmessung ueber e1
- FI.
- schalter 1 geschlossen: (schalterstellung SUB 1) = on.
-
- schalter 2 geschlossen: (schalterstellung SUB 2) = on.
- schalter 3 geschlossen: (schalterstellung SUB 3) = on.
- schalter 8 geschlossen: (schalterstellung SUB 8) = on.
- umin1: bereich von e1 [1].
- umax1: bereich von e1 [2].
- symmetrische spannungsmessung ueber e1:
- umax1 := umax1 / 2.0;
- umin1 := - umax1.
- asymmetrische spannungsmessung ueber e1:
- umin1 := 0.0.
- bestimme bereich von e2:
- IF schalter 6 geschlossen
- THEN umax2 := 0.25
- ELIF schalter 5 geschlossen
-
- THEN umax2 := 2.5
- ELIF schalter 4 geschlossen
- THEN umax2 := 25.0
- ELSE umax2 := 0.0
- FI;
- IF schalter 7 geschlossen
- THEN symmetrische spannungsmessung ueber e2
- ELSE asymmetrische spannungsmessung ueber e2
- FI.
- schalter 4 geschlossen: (schalterstellung SUB 4) = on.
- schalter 5 geschlossen: (schalterstellung SUB 5) = on.
- schalter 6 geschlossen: (schalterstellung SUB 6) = on.
- schalter 7 geschlossen: (schalterstellung SUB 7) = on.
-
- umin2: bereich von e2 [1].
- umax2: bereich von e2 [2].
- symmetrische spannungsmessung ueber e2:
- umax2 := umax2 / 2.0;
- umin2 := - umax2.
- asymmetrische spannungsmessung ueber e2:
- umin2 := 0.0.
- on: "1".
-END PROC bestimme spannungsbereiche
-END PACKET ls prozess 5
-
-