Zum Inhalt

Uebung_218b: Standard IEC 61131-3 FB_CTD_UDINT (Rückwärtszähler, UDINT) mit Terminal-Ausgabe (PHYS)

Uebung_218b_network


Einleitung

Diese Übung implementiert einen Rückwärtszähler (Down Counter) nach IEC 61131-3 vom Typ FB_CTD_UDINT (Zählwert als UDINT).
Der Zähler wird über zwei digitale Eingänge gesteuert: Ein Impuls an Eingang I1 (CD) zählt den aktuellen Wert um 1 herunter, ein Impuls an Eingang I2 (LD) lädt den voreingestellten Wert (PV) in den Zähler.
Der aktuelle Zählerstand wird sowohl als physikalischer Wert (LREAL) über ein Terminal ausgegeben (FB Q_NumericValue_PHYS_LREAL) als auch als digitales Signal (Q1) bereitgestellt – Q1 ist TRUE, sobald der Zählerstand Null erreicht hat.
Die Übung zeigt die direkte Verbindung von UDINT auf LREAL ohne manuelle Konvertierung und demonstriert die Kombination von Zählerlogik mit physischer Ausgabe.

Verwendete Funktionsbausteine (FBs)

Die Übung besteht aus einer SubApplikation (SubAppType), die fünf Funktionsbausteine enthält.
Nachfolgend werden alle verwendeten FBs beschrieben.

Sub-Bausteine:

  1. FB_CTD_UDINT (IEC 61131‑3 Rückwärtszähler)
  2. Typ: iec61131::counters::FB_CTD_UDINT
  3. Parameter:
    • PV = UDINT#10 (Voreinstellwert)
  4. Ereigniseingänge:
    • REQ – wird durch einen steigenden Impuls der Eingänge CD oder LD getriggert
  5. Ereignisausgänge:
    • CNF – quittiert die Ausführung nach einem REQ
  6. Dateneingänge:
    • CD – Zählimpuls (herunterzählen)
    • LD – Ladeimpuls (setzt Zähler auf PV)
  7. Datenausgänge:
    • Q (BOOL) – TRUE wenn Zählerstand = 0
    • CV (UDINT) – aktueller Zählerstand
  8. Funktionsweise:
    Der Baustein realisiert einen flankengetriggerten Abwärtszähler. Bei einem positiven Impuls auf CD wird CV um 1 dekrementiert; bei LD wird CV auf den Wert in PV gesetzt. Der Ausgang Q wird TRUE, sobald CV den Wert 0 erreicht.

  9. Input_CD (Digitaler Eingang I1)

  10. Typ: logiBUS::io::DI::logiBUS_IX
  11. Parameter:
    • QI = TRUE (Aktivierung)
    • Input = Input_I1 (physischer Anschluss)
  12. Ereignisausgang:
    • IND – wird bei einer steigenden Flanke am Eingang gesendet
  13. Datenausgang:
    • IN (BOOL) – aktueller Zustand des Eingangs
  14. Funktionsweise:
    Stellt den physischen digitalen Eingang I1 (z. B. Taster oder Sensor) im System bereit. Bei Änderung des Zustands wird das Ereignis IND ausgelöst.

  15. Input_LD (Digitaler Eingang I2)

  16. Typ: logiBUS::io::DI::logiBUS_IX
  17. Parameter:
    • QI = TRUE
    • Input = Input_I2
  18. Ereignisausgang:
    • IND
  19. Datenausgang:
    • IN (BOOL)
  20. Funktionsweise:
    Identisch zu Input_CD, jedoch an physischem Eingang I2 angeschlossen – dient als Ladeimpuls für den Zähler.

  21. Output_Q1 (Digitaler Ausgang Q1)

  22. Typ: logiBUS::io::DQ::logiBUS_QX
  23. Parameter:
    • QI = TRUE (Aktivierung)
    • Output = Output_Q1 (physischer Ausgang)
  24. Ereigniseingang:
    • REQ – triggert die Ausgabe des aktuellen Werts am Ausgang
  25. Dateneingang:
    • OUT (BOOL) – Wert, der am Ausgang ausgegeben werden soll
  26. Funktionsweise:
    Setzt den physischen digitalen Ausgang Q1 auf den Wert, der am Dateneingang OUT anliegt. Sobald der Zähler Q = TRUE liefert, wird Q1 aktiv.

  27. Q_NumericValue_PHYS_LREAL (Terminal-Ausgabe)

  28. Typ: isobus::UT::Q::Q_NumericValue_PHYS_LREAL
  29. Parameter:
    • stObj = OutputNumber_N3 (Referenz auf das Terminal‑Ausgabeobjekt)
  30. Ereigniseingang:
    • REQ – triggert die Ausgabe des aktuellen physikalischen Werts
  31. Dateneingang:
    • lrPhys (LREAL) – der auszugebende physikalische Wert
  32. Funktionsweise:
    Der Baustein übernimmt einen LREAL-Wert und gibt ihn über ein Terminal aus (z. B. auf einem Bedienpanel oder in einer Konsole). Der Zählerstand CV vom Typ UDINT wird ohne Konvertierung direkt an diesen Eingang angeschlossen.

Programmablauf und Verbindungen

Der Ablauf wird durch die Ereignis- und Datenverbindungen im SubAppNetwork gesteuert:

  • Ereignisverkettung:
  • Eine steigende Flanke an Input_CD oder Input_LD (jeweils IND) löst den Ereigniseingang REQ des Zählers FB_CTD_UDINT aus.
  • Nach Verarbeitung quittiert der Zähler mit CNF. Dieses Ereignis wird an zwei Stellen weitergeleitet:

    • Zum einen an Output_Q1.REQ – damit der aktuelle boolesche Zustand (Q) am physischen Ausgang ausgegeben wird.
    • Zum anderen an Q_NumericValue_PHYS_LREAL.REQ – damit der aktuelle Zählerstand auf dem Terminal erscheint.
  • Datenverkettung:

  • Der Datenausgang Input_CD.IN ist mit dem Zählereingang FB_CTD_UDINT.CD verbunden – das Signal des Tasters I1 wird als Zählimpuls verwendet.
  • Input_LD.IN ist mit FB_CTD_UDINT.LD verbunden – der Taster I2 lädt den Voreinstellwert.
  • Der Zählerausgang Q (BOOL) geht an den Dateneingang OUT von Output_Q1.
  • Der Zählerausgang CV (UDINT) geht an den Dateneingang lrPhys von Q_NumericValue_PHYS_LREAL.

Die beiden Kommentare im Netzwerk weisen darauf hin, dass alternativ auch der normale Ausgang (Q) verwendet werden könnte, und dass UDINT ohne explizite Konvertierung auf LREAL geschlossen werden darf (intern erfolgt eine implizite Typumwandlung).

Zusammenfassung

  • Lernziele: Kennenlernen und Anwenden des IEC 61131‑3 Rückwärtszählers (CTD) mit UDINT-Zählwerten, sowie die Integration von digitalen Ein‑/Ausgängen und einer physischen Terminalausgabe.
  • Schwierigkeitsgrad: Einfach bis mittel – geeignet zum Einstieg in die Zählerlogik und die Verwendung von physikalischen Ausgabeblöcken.
  • Vorkenntnisse: Grundlegende Kenntnisse der 4diac‑IDE und einfacher IEC‑61131‑3 Bausteine.
  • Bedienung:
  • Ordnen Sie die physischen Eingänge I1 (Taster für Herunterzählen) und I2 (Taster für Laden) an.
  • Der Ausgang Q1 schaltet, sobald der Zählerstand Null erreicht.
  • Das Terminal (OutputNumber_N3) zeigt den aktuellen Zählerstand als LREAL-Wert an.
  • Starten Sie die Übung durch Auslösen einer steigenden Flanke an einem der Eingänge.

Die Übung demonstriert eine vollständige, praxisnahe Zähleranwendung mit sowohl digitaler als auch visualisierter Rückmeldung.