Autor Thema: Programmieren in Strukturiertem Text (ST) V1.45 (Update 14.11.2024)  (Gelesen 12422 mal)

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Programmieren in Strukturiertem Text (ST) V1.45 (Update 14.11.2024)
« am: März 10, 2022, 14:04:47 Nachmittag »
Hallo easy-Freunde,

vielleicht interessieren sich einige von Euch für das Programmieren in "Strukturiertem Text" (ST)?

In diesem Dokument habe ich kurz einiges zusammengestellt, um in die Programmierung von ST einzusteigen.

https://magentacloud.de/s/tYfkwj49yg9RAdW

- easySoft 8.25 jetzt mit Funktionsbausteinen SR-Flip-Flop (FF) und Flankenerkennung (ED) (Seite 9)
- SINT, UINT, Zweierkomplement (Seite 7f)
- Beobachten von Anwenderbausteinen in der Simulation mit easySoft V8 jetzt möglich

Anregungen willkommen.  :)

Grüße
Konni

PS: Ich erlaube mir Beiträge zu löschen, damit dieses Thema übersichtlich bleibt.

« Letzte Änderung: November 14, 2024, 12:17:41 Nachmittag von Konni66 »
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
UF-MenuSelect V1.10: Menüstruktur mit Anwenderbaustein am easyE4
« Antwort #1 am: März 24, 2022, 13:22:23 Nachmittag »
Hallo zusammen,

hier ein Beispielprogramm zum Thema "Menüstruktur mit D-Textanzeigen am easyE4".
Das Projekt enthält das Hauptprogramm, um die Verwendung des des Anwenderbausteins "UF-MenuSelect V1.10" zu demonstrieren.
Hauptprogramm und Anwenderbaustein wurden in strukturiertem Text (ST) erstellt.

Öffnet ihr das Projekt in easySoft V7, wird der UF eurer Anwenderbaustein-Bibliothek automatisch hinzugefügt.

Natürlich kann der Anwenderbaustein auch in FUP oder KOP verwendet und seine Funktion (kein Kennwort) eingesehen werden.

Grüße
Konni

« Letzte Änderung: März 25, 2022, 07:36:29 Vormittag von Konni66 »
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Programmieren in Strukturiertem Text (ST) - Anwenderbaustein UF-ZylTank V1.00
« Antwort #2 am: März 24, 2022, 16:51:44 Nachmittag »
...ein neuer Anwenderbaustein für die easyE4-Anwender.


Der Anwenderbaustein berechnet nach Angabe von Radius (IA1) und Höhe (IA2) eines zylindrischen Behälters dessen Volumen.
Gibt man die Maße in dm an, wird das Volumen in Litern ausgegeben.
An IA3 übergibt man  die Füllhöhe (Istwert) durch einen Distanzsensor.
So kann dann das aktuelle Volumen in Litern und in % vom Gesamtvolumen ausgegeben werden.
Mittels 2 Konstanten werden Grenzwerte parametriert.
Neben den analogen Ausgängen besitzt der "UF-ZylTank V1.00" noch digitale Ausgänge, die von den Grenzwerten und durch Überlauf gesteuert werden.

Wertüberläufe bei der Berechnung werden über einen Fehlerausgang E1 angezeigt.

Das Beispielprojekt in FUP demonstriert die Verwendung des UF; der UF selbst wurde in ST erstellt und ist nicht durch ein Passwort geschützt.

Grüße
Konni


« Letzte Änderung: März 29, 2022, 16:50:39 Nachmittag von Konni66 »
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #3 am: März 28, 2022, 09:43:26 Vormittag »
Flankenerkennung in ST als Anwenderbausteine.

Wie im Dokument "Programmieren in ST" bereits beschrieben, müssen die Erkennung der steigenden oder fallenden Flanken in ST ausprogrammiert werden.
Dieses kleine Demo-Projekt enthält zwei Anwenderbausteine (r_Trig und f_Trig), die diese Funktionen zur Verfügung stellen.

Bei Programmen in Programmiermethoden FUP und KOP ergibt die Verwendung der Anwenderbausteine wenig Sinn, da in diesen beiden "Sprachen" die integrierte Flankenerkennung genutzt werden kann. (siehe "Spulenfunktion" für Ausgänge und Merker).

Das .ZIP-File enthält eine Demoprojekt in ST für die Anwenderbausteine r_Trig und f_Trig.
Die UFs wurden ebenso in ST erstellt und sind nicht durch ein Passwort geschützt.



« Letzte Änderung: Juni 29, 2022, 17:28:46 Nachmittag von Konni66 »
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #4 am: März 28, 2022, 10:29:15 Vormittag »
Anwenderbaustein Motorstarter V1.00 (Selbsthaltung) in ST

Sollen ein oder mehrere Motoren mittels Selbsthaltung ein- und ausgeschaltet werden, kann man hierfür einen Anwenderbaustein verwenden.
Dieses Beispiel zeigt die Verwendung des "UF-Motorstart V1.00" für 2 Motoren.
Hauptprogramm und Anwenderbaustein sind in ST geschrieben.
Die beiden Ausdrücke im UF können natürlich auch einfach ins Hauptprogramm eingefügt werden. Mittels UF ist es aber komfortabler.  ;)
Entscheidet selbst, was sinnvoller ist.

Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #5 am: März 28, 2022, 12:16:46 Nachmittag »
Anwenderbaustein Stern-Dreieck-Starter in ST

Will man einen Stern-Dreieck-Starter realisieren, kann man dies im Hauptprogramm formulieren, oder einen Anwenderbaustein verwenden.
Hier ein Beispiel, wie der Stern-Dreieck-Starter in ST aussehen kann: "UF-YD-Starter V1.00"
Hauptprogramm und Anwenderbaustein wurden in ST erstellt.
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #6 am: März 28, 2022, 13:24:56 Nachmittag »
Anwenderbaustein UF-Wendestarter V1.00 in ST

Soll die Drehrichtung einen Motors umgeschaltet werden können, benötigt man einen Motor-Wendestarter.
Die Umschaltung der Drehrichtung kann direkt aus einer Drehrichtung in die andere erfolgen, oder über die AUS-Taste.
Bei diesem Anwenderbaustein kann über den I6 definiert werden, ob eine Drehrichtungsumkehr direkt oder nur über Aus erfolgen darf:
I6=FALSE = Umschaltung über Aus; I6=TRUE = Umschaltung direkt ohne Aus

Hauptprogramm und Anwenderbaustein wurden in ST erstellt.
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #7 am: März 28, 2022, 16:12:06 Nachmittag »
Anwenderbaustein Bit im Datenwort prüfen, setzen oder rücksetzen:
"UF-CSR_Bit_MW V1.00"

Oft bekommt ein Steuerprogramm 16 Bit-Informationen in Form eines ganzen Statuswortes (16 Bit) übertragen; oder die Steuerung muss ein Steuerwort bitweise ändern.
(Siehe Steuer- und Statuswort bei der Kommunikation mit einem XV-Panel über Modbus TCP)

Beispiel:

Statuswort    Bedeutung                 Zustand (Bit)                     
Bit 1         Bereitschaft ein          0
Bit 2         Druckluft i.O.            1
Bit 3         Hydraulik i.O.            1
...           (div. Status)             0..0
Bit 14        NOT-AUS Anlage okay       1
Bit 15        Materialspeicher leer     0
Bit 16        Materialspeicher > 50%    1


Inhalt Statuswort:    40.966 dez = 1010000000000110 bin

Aus dem Zahlenwert 40.966 gilt es herauszufinden, ob z. B. die Druckluftversorgung (Bit 2) gewährleistet ist.

Mit dem UF-CSR_Bit_MW V1.00 wird ein Bit auf TRUE geprüft (check), gesetzt (set) oder rückgesetzt (reset). (Betriebsart 0, 1 oder 2)

Im Beispielprojekt wird die Verwendung des UF-CSR_Bit_MW V1.00 demonstriert.
Hauptprogramm und Anwenderbaustein wurden in ST erstellt.


« Letzte Änderung: April 01, 2022, 18:48:39 Nachmittag von Konni66 »
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #8 am: März 28, 2022, 17:13:31 Nachmittag »
Schon gewusst?

Auf Ein- und Ausgänge kann man per Index zugreifen.
Sinnvoll, wenn man die Status von aufeinanderfolgenden Operanden in einem Byte, Wort oder Doppelwort an eine andere Steuerung in der Anlage versenden möchte.

Hier ein Bespiel, wie man die Zustände aller Ein-, Ausgänge und 16 Diagnose-Bits (ID1 bis ID16) per Index einliest und in zwei Merker-Worte "packt".
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #9 am: April 01, 2022, 11:49:27 Vormittag »
Anwenderbaustein UF-CP_EXP V1.00 - Erweiterter Vergleicher.

Der Herstellerbaustein CP-Vergleicher (Comparator) bietet 3 Ausgänge:
I1 < I2 (LT - less than)
I1 = I2 (EQ - equal)
I1 > I2 (GT - greater than)

Um einen Vergleich z. B. auf <= (kleiner-gleich) durchzuführen, werden die Herstellerbausteinausgänge CPxxLT und CPxxEQ miteinander ODER-verknüpft. (I1 < I2 ODER I1 = I2). Siehe NW2 und NW3 im Hauptprogramm.

Der UF-CP_EXP V1.00 (Comparator Expanded "erweitert") besitzt 5 Ausgänge:

I1 <= I2 (LTEQ - less than, equal)
I1 < I2 (LT - less than)
I1 = I2 (EQ - equal), NOT UFxxQ3 bedeutet Ungleichheit
I1 > I2 (GT - greater than)
I1 >= I2 (GTEQ - greater than, equal)

Tipps:
- Der invertierte Vergleich von I1 >= I2 ist I1 < I2 (NICHT I1 <= I2); der von I1 <= I2 ist I1 > I2 (NICHT I1 >= I2).
- Schaut euch die Strategie zur Verringerung der benötigten Abarbeitungsdauer (verschachtelte IF..ELS_IF-Abfrage) im Anwenderbaustein an. Wie wahrscheinlich ist es, dass der Vergleich von 2 Byte-, Wort- oder Doppelwort-Werten Gleichheit ergibt?
- Der invertierte Ausgang Q3 (EQ), also NOT UFxxQ3, steht für die Ungleichheit der Werte I1 und I2.

Das Hauptprogramm zu Demonstration des Bausteins wurde in FUP, der Anwenderbaustein UF-CP_EXP V1.00 natürlich in ST erstellt.

Grüße
Konni
« Letzte Änderung: April 01, 2022, 12:00:09 Nachmittag von Konni66 »
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #10 am: April 01, 2022, 15:47:52 Nachmittag »
Anwenderbaustein UF-DEMUX4_12Q, Demultiplexer Wert -> 12 Ausgänge

Will man einen dezimalen Wert in einzelne Ausgänge zerlegen, ist dafür ein Demultiplexer (Decoder) notwendig.
Dieser Anwenderbaustein ermittelt aus dem Eingangszahlenwert den entsprechend zu setzenden Ausgang.
Für die maximal 12 möglichen Ausgänge eines Anwenderbausteins benötigt man nicht alle 4 Bits des niederwertigsten Nibble https://de.wikipedia.org/wiki/Nibble.

Wahrheitstabelle
                        Q
                        0 0 0 0 0 0 0 0 0 1 1 1
dezimal   binär   1 2 3 4 5 6 7 8 9 0 1 2



000001 0 0 0 0 0 0 0 0 0 0 0
100010 1 0 0 0 0 0 0 0 0 0 0
200100 0 1 0 0 0 0 0 0 0 0 0
300110 0 0 1 0 0 0 0 0 0 0 0
401000 0 0 0 1 0 0 0 0 0 0 0
501010 0 0 0 0 1 0 0 0 0 0 0
601100 0 0 0 0 0 1 0 0 0 0 0
701110 0 0 0 0 0 0 1 0 0 0 0
810000 0 0 0 0 0 0 0 1 0 0 0
910010 0 0 0 0 0 0 0 0 1 0 0
1010100 0 0 0 0 0 0 0 0 0 1 0
1110110 0 0 0 0 0 0 0 0 0 0 1
1211000 0 0 0 0 0 0 0 0 0 0 0    ab hier (12) Werte ungültig, alle Qs abgeschaltet
1311010 0 0 0 0 0 0 0 0 0 0 0
1411100 0 0 0 0 0 0 0 0 0 0 0
1511110 0 0 0 0 0 0 0 0 0 0 0

Das ZIP-File enthält zwei Hautprogramme zum Demonstrieren des Anwenderbausteins UF-DEMUX4_12Q:
- 12stelliges Lauflicht, Frequenz mit Potentiometer einstellbar in FUP
- 12 Anzeigetexte mit Potentiometer auswählen in ST

Der Anwenderbaustein wurde in ST erstellt.
Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #11 am: April 01, 2022, 18:47:39 Nachmittag »
Anwenderbaustein UF-V_CHG_Trig V1.00 (Value Change Trigger)

Dieser Anwenderbaustein überwacht (wenn EN aktiv) permanent den Wert am Bausteineingang IA1.
Weicht der Eingangswert vom letzten erfassten ab, wird der Ausgang Q1 für die Dauer eines Zyklus gesetzt.
So kann durch den überwachten Wert eine Aktion getriggert werden.

Der Anwenderbaustein UF-V_CHG_Trig V1.0 wurde in ST, das Beispielprogramm, eine Alarmanlage, in FUP erstellt.


Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #12 am: April 01, 2022, 18:55:56 Nachmittag »
Betrifft: UF-DEMUX4_12Q

Hallo Konni,

sehr schönes Beispiel, allerdings würde ich den Code in der UF "für mich" ein wenig abändern (da ich sehr code-faul bin) wollen ;)
und einen Wert an IA01 außerhalb der Range anzugeben um keinen Ausgang zu setzen ist Geschmacksache, man kann ja das "+1" weglassen.

//Baustein wird nur ausgeführt, wenn sich der Wert am Eingang IA1 ändert.
IF IA1<>MD02 OR NOT M1 THEN //Wenn es einen neuen Wert (ungleich dem alten in MD02) gibt oder bei Erstausführung

FOR MD01 := 1 TO 12 BY +1 DO //Alle 12 Ausgänge setzen
  Q[MD1]:= (IA1+1 = MD01);
END_FOR;

MD02:=IA01; //den zukünftigen "alten" Wert speichern
M1:=TRUE; //Verriegelung bei der Erstusführung

//Genau einen Ausgang entspr. des Eingangswertes einschalten

END_IF;

GLG
« Letzte Änderung: April 01, 2022, 18:59:47 Nachmittag von weiss_nix »
Sollte ich (gefährliches) Halbwissen verbreiten, beuge ich demütig mein Haupt mit der Gewissheit versagt zu haben!
WICHTIG: Sämtliche Programme dienen lediglich der Veranschaulichung von Funktionen und sind nicht für den Produktiveinsatz geeignet!

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 788
  • Think easy!
    • mollgruppe
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #13 am: April 02, 2022, 14:35:56 Nachmittag »
Hallo Konni,

Habe noch ein paar Hinweise zu Bindungsstärke und Klammern.

Zitat
Achtung: Auch bei logischen Verknüpfungen gelten Rechenregeln. Eine der zahlreichen Regeln ist z. B. die Regel,
dass eine UND-Verknüpfung vor der ODER-Verknüpfung ausgeführt wird.
So ergeben folgende Verknüpfungen NICHT das gleiche Ergebnis (Beispiel Selbsthaltung):
 
Q01:=I01 AND I02 AND I03 AND (I04 OR Q01); //Motorschütz M1
 
Q01:=I01 AND I02 AND I03 AND I04 OR Q01;   //Motorschütz M1

Unten angefügt ein Bild mit der Wertigkeit von Bindungen, wobei auch Rechenoperationen darunter fallen.

Desweiteren sollte man noch sagen, das mit der Verwendung von Timern in CASE-Anweisungen und Schleifen seht vorsichtig umgegangen werden sollte. Man muss sich dabei immer die Frage stellen, was die Timerspulen machen, wenn eine Statusänderung innerhalb der Anweisung kommt. Wenn zB. der Timer in der CASE 1: steht, wird dieser in n: nicht mehr bearbeitet/rückgesetzt.

Gruß Thomas
Weil Einfach einfach Einfach ist!

Offline Konni66

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 268
  • Keine Panik!
    • Eaton Trainingscenter Bonn
Antw:Programmieren in Strukturiertem Text (ST) V1.3 (Update 15.03.2022)
« Antwort #14 am: April 04, 2022, 10:52:33 Vormittag »
Betrifft: UF-DEMUX4_12Q

Hallo Konni,

sehr schönes Beispiel, allerdings würde ich den Code in der UF "für mich" ein wenig abändern (da ich sehr code-faul bin) wollen ;)
und einen Wert an IA01 außerhalb der Range anzugeben um keinen Ausgang zu setzen ist Geschmacksache, man kann ja das "+1" weglassen.

//Baustein wird nur ausgeführt, wenn sich der Wert am Eingang IA1 ändert.
IF IA1<>MD02 OR NOT M1 THEN //Wenn es einen neuen Wert (ungleich dem alten in MD02) gibt oder bei Erstausführung

FOR MD01 := 1 TO 12 BY +1 DO //Alle 12 Ausgänge setzen
  Q[MD1]:= (IA1+1 = MD01);
END_FOR;

MD02:=IA01; //den zukünftigen "alten" Wert speichern
M1:=TRUE; //Verriegelung bei der Erstusführung

//Genau einen Ausgang entspr. des Eingangswertes einschalten

END_IF;

GLG

Guck an, unser weiss_nix, liefert eine richtig knackige Alternative. Sehr, sehr schön!
Und jetzt muss ich für unsere Einsteiger erklären, wie das funktioniert?!  ;)

Weiss_nix hat in die Zuweisung (Q[MD1]:=)das Ergebnis (TRUE oder FALSE) eines Vergleichs (IA1+1 = MD1) eingebaut.
Nehmen wir an, der Eingangswert sei 0. Darauf addieren wir eine 1, weil es den Q0 nicht gibt und unser Schleifenzähler von 1 bis 12 läuft. Jetzt vergleichen wir das mit dem FOR-Schleifenzähler MD1.
Das Ergebnis dieses Vergleichs ist TRUE (was wir dem Q[MD1] zuweisen), wenn der Schleifenzähler den gleichen Wert besitzt, wie der Eingangswert+1. -> (0+1 = 1) = TRUE
In unserem Fall wird dann der Q1 gesetzt.

Lässt man das +1 weg, wird beim Eingangswert 0 (und >12) kein Ausgang gesetzt.

Weiss_nix, dass ist was für Fortgeschrittene, du Tiefstapler. (Nick-Namen ändern?  ;))

Zur Geschmackssache: Diese Funktionsweise ist an den 74154 (ein Standard TTL-Baustein) angelehnt - mit invertierter Ausgangslogik.
Wenn wir hier fertig sind, kann sich jeder die Bausteine so anpassen, dass sie für seine Zwecke passen.  ;)
Es gibt ja immer viele (lange, kurze, Irr-) Wege nach Rom.

Grüße
Konni


Die Programmierbeispiele sind zu Schulungszwecken gedacht. Trotz sorgfältiger Erstellung und Funktionsprüfung können Fehler nicht ausgeschlossen werden. Daher erfolgt die Verwendung der Programmteile in eigener Verantwortung.