diff options
Diffstat (limited to 'prozess/ls-Prozess 5')
-rw-r--r-- | prozess/ls-Prozess 5 | 829 |
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 - - |