Uebung_080f: Beispiel für E_CTU¶
Einleitung¶
Diese Übung demonstriert die Verwendung des ereignisgesteuerten Aufwärtszählers E_CTU nach IEC 61499. Mit zwei Tastern wird der Zähler erhöht bzw. zurückgesetzt. Der aktuelle Zählerstand wird auf einem numerischen Display als animiertes Pferd (Einzelframes) dargestellt. Sobald der Zähler den vorgegebenen Grenzwert erreicht, wird ein digitaler Ausgang gesetzt.
Die Übung eignet sich für Anwender, die erste Schritte mit Zählern und Ereignisverkettungen in 4diac machen möchten.
Verwendete Funktionsbausteine (FBs)¶
Sub-Bausteine: Eingabe-Logik (Taster)¶
- DigitalInput_CLK_I1 (Typ:
logiBUS::io::DI::logiBUS_IE)- Parameter:
QI=TRUEInput=Input_I1InputEvent=BUTTON_SINGLE_CLICK
- Funktion: Stellt den ersten Taster (I1) als Ereignisquelle bereit. Jeder einfache Klick erzeugt ein Ereignis
IND.
- Parameter:
- DigitalInput_CLK_I2 (Typ:
logiBUS::io::DI::logiBUS_IE)- Parameter:
QI=TRUEInput=Input_I2InputEvent=BUTTON_SINGLE_CLICK
- Funktion: Stellt den zweiten Taster (I2) als Ereignisquelle bereit. Jeder einfache Klick erzeugt ein Ereignis
IND.
- Parameter:
Sub-Baustein: Aufwärtszähler¶
- E_CTU (Typ:
iec61499::events::E_CTU)- Parameter:
PV=UINT#5(Grenzwert)
- Funktion: Ein ereignisgesteuerter Aufwärtszähler. Jedes Ereignis am Eingang
CUerhöht den internen Zähler CV um 1 und löstCUOaus. Ein Ereignis am EingangRsetzt den Zähler auf 0 zurück und löstROaus. Der AusgangQwirdTRUE, sobaldCV >= PV.
- Parameter:
Sub-Baustein: Ereigniszusammenführung¶
- E_MERGE_2 (Typ:
iec61499::events::E_MERGE_2)- Funktion: Fasst zwei Ereigniseingänge (
EI1,EI2) zu einem gemeinsamen EreignisausgangEOzusammen. Sobald eines der beiden Ereignisse eintrifft, wirdEOausgelöst.
- Funktion: Fasst zwei Ereigniseingänge (
Sub-Baustein: Ausgabe-Logik (digitaler Ausgang)¶
- DigitalOutput_Q1 (Typ:
logiBUS::io::DQ::logiBUS_QX)- Parameter:
QI=TRUEOutput=Output_Q1
- Funktion: Schaltet den digitalen Ausgang Q1. Der Wert am Dateneingang
OUTwird übernommen, wenn ein Ereignis anREQeintrifft.
- Parameter:
Sub-Baustein: Multiplexer¶
- F_MUX_32 (Typ:
iec61131::selection::F_MUX_32)- Parameter:
IN1…IN32= Konstantenframe_00…frame_31(32 Einzelframes einer Pferdeanimation)
- Funktion: Ein 32-fach Multiplexer. Je nach Wert am Auswahleingang
K(0 … 31) wird der entsprechende DateingangINxan den AusgangOUTdurchgeschaltet.
- Parameter:
Sub-Baustein: Numerische Anzeige¶
- Q_NumericValue_1 (Typ:
isobus::UT::Q::Q_NumericValue)- Parameter:
u16ObjId=ObjectPointer_Horse
- Funktion: Zeigt einen übergebenen 32-Bit-Wert (
u32NewValue) numerisch an (hier: als animiertes Pferd über die Einzelframes). Ein Ereignis anREQaktualisiert die Anzeige.
- Parameter:
Programmablauf und Verbindungen¶
Der Ablauf wird durch Ereignisse gesteuert:
- Zählereingang
- Ein Klick auf Taster I1 erzeugt ein Ereignis
INDam BausteinDigitalInput_CLK_I1. -
Dieses Ereignis wird direkt an den Eingang
CUvonE_CTUgeleitet. Der Zähler erhöht sich um 1. -
Reset
- Ein Klick auf Taster I2 erzeugt ein Ereignis
INDanDigitalInput_CLK_I2. -
Dieses Ereignis wird an den Eingang
RvonE_CTUgeleitet. Der Zähler wird auf 0 zurückgesetzt. -
Ereigniszusammenführung
- Sowohl der Ausgang
CUO(nach Zählererhöhung) als auchRO(nach Reset) vonE_CTUwerden an die EingängeEI1undEI2desE_MERGE_2gelegt. -
Der zusammengeführte Ausgang
EOwird bei jeder Zähleränderung aktiv. -
Aktualisierung der Anzeige und des Ausgangs
- Das gemeinsame Ereignis
EOwird parallel an zwei Bausteine weitergeleitet:- Multiplexer: Das Ereignis erreicht den
REQ-Eingang vonF_MUX_32. Der aktuelle ZählerstandCV(Datenverbindung vonE_CTU.CVzuF_MUX_32.K) wählt das passende Frame aus. Der Multiplexer gibt das gewählte Frame an seinem AusgangOUTaus. - Digitale Anzeige: Nachdem der Multiplexer fertig ist (
CNF-Ereignis), wird das Ereignis an denREQ-Eingang vonQ_NumericValue_1weitergegeben. Der DatenwertOUTdes Multiplexers wird als neuer Anzeigewert übernommen.
- Multiplexer: Das Ereignis erreicht den
-
Gleichzeitig wird das Ereignis
EOauch an denREQ-Eingang vonDigitalOutput_Q1gelegt. Der logische WertQvonE_CTU(TRUE wennCV >= 5) wird auf den Ausgang Q1 geschrieben. -
Kommentare im Netzwerk
- Ein Kommentar weist darauf hin, dass eine Typkonvertierung von
UINTnachUDINTbei der VerbindungCV→Knicht notwendig ist, daUDINTimmer einenUINTaufnehmen kann. - Ein weiterer Kommentar erklärt, dass der
E_MERGE_2zwar weggelassen werden könnte, aber die Verwendung den Code sauberer hält (Vermeidung von sich kreuzenden Leitungen).
Zusammenfassung¶
Die Übung veranschaulicht den praktischen Einsatz eines ereignisgesteuerten Aufwärtszählers (E_CTU) in einer 4diac-Umgebung. Lernerfekt:
- Verständnis des Zusammenspiels von Ereignis- und Datenflüssen.
- Anwendung eines Zählers mit Ereignis-Reset.
- Nutzung eines Multiplexers zur Auswahl von Konstanten (Bildframes).
- Kombination von Hardware-Eingängen (Taster) und Ausgängen (digitaler Ausgang, Display).
Voraussetzungen: Grundkenntnisse der IEC 61499 Ereignisverarbeitung und der 4diac-IDE. Die Übung kann direkt in einem Simulationsprojekt oder auf echter logiBUS-Hardware ausgeführt werden.