Uebung_221b_ALR: Standard IEC 61131-3 ADI_FB_CTUD (Adapter Version, Vorwärts-/Rückwärtszähler, DINT) mit Terminal-Ausgabe (PHYS)¶
Einleitung¶
Diese Übung implementiert einen Vorwärts-/Rückwärtszähler (Up/Down Counter) nach IEC 61131‑3 (Typ ADI_FB_CTUD). Der Zähler wird über digitale Eingänge gesteuert und gibt den aktuellen Zählerstand sowohl über digitale Ausgänge (als Grenzwert‑Signale) als auch über eine Terminal‑Ausgabe (physikalischer Wert) aus. Der Zählbereich arbeitet mit 32‑Bit Ganzzahlen (DINT), wobei auch negative Werte möglich sind.
Schwierigkeitsgrad: Fortgeschritten
Vorkenntnisse: Grundlegende Kenntnisse der 4diac‑IDE und des IEC 61131‑3‑Funktionsbausteinsystems, Verständnis von Adapter‑Schnittstellen.
Lernziele:
- Arbeiten mit dem Zähler‑Baustein ADI_FB_CTUD
- Konfiguration von digitalen Ein‑/Ausgängen über logiBUS‑Adapter
- Umwandlung von Datentypen (DINT → Digitaleingang, DINT → LREAL) für die Terminalausgabe
- Erzeugung von Impulsen für das Laden des Zählwerts (PV)
Verwendete Funktionsbausteine (FBs)¶
Die Übung besteht aus einer flachen Netzwerkstruktur ohne weitere Sub‑Applikationen. Folgende Funktionsbausteine kommen zum Einsatz:
-
ADI_FB_CTUD(Typ:adapter::iec61131::counters::ADI_FB_CTUD)
Der zentrale Vorwärts-/Rückwärtszähler. Er besitzt die Adapter‑SchnittstelleCU(Count Up),CD(Count Down),R(Reset),LD(Load),PV(Preset Value) sowie die AusgängeQU(Überlauf),QD(Unterlauf) undCV(aktueller Zählerwert). -
ADI_DINT_TO_DI(Typ:adapter::conversion::unidirectional::ADI_DINT_TO_DI)
Wandelt einen DINT‑Wert in ein digitales Signal (Adapter‑Schnittstelle) um. Der ParameterOUTist aufDINT#5gesetzt, d. h. der Preset‑Wert für den Zähler wird auf 5 voreingestellt. -
Input_CU,Input_CD,Input_R,Input_LD(Typ:logiBUS::io::DI::logiBUS_IXA)
Digitale Eingangsadapter für die logiBUS‑Hardware. Sie lesen die physischen EingängeI1,I2,I3undI4. Der ParameterQIist aufTRUEgesetzt. -
Output_QU,Output_QD(Typ:logiBUS::io::DQ::logiBUS_QXA)
Digitale Ausgangsadapter.Output_QUschaltet den physischen AusgangQ1,Output_QDden AusgangQ2. Beide habenQI = TRUE. -
ADI_TO_ALR(Typ:adapter::conversion::unidirectional::ADI_TO_ALR)
Wandelt den Adapter‑AusgangCV(Zählerwert) in den DatentypALR(Analog‑LREAL‑Darstellung) um. -
Q_NumericValue_PHYSA_LREAL(Typ:isobus::UT::Q::Q_NumericValue_PHYSA_LREAL)
Gibt den numerischen Wert (LREAL) auf ein Terminal aus. Der ParameterstObjverweist auf das konstante ObjektOutputNumber_N3aus der BibliothekUebungen::const::UT::DefaultPool_Numeric.
Parameterdetails ausgewählter Bausteine¶
| Baustein | Parameter | Wert |
|---|---|---|
ADI_DINT_TO_DI |
OUT |
DINT#5 |
Input_CU |
QI |
TRUE |
Input |
Input_I1 |
|
Input_CD |
QI |
TRUE |
Input |
Input_I2 |
|
Input_R |
QI |
TRUE |
Input |
Input_I3 |
|
Input_LD |
QI |
TRUE |
Input |
Input_I4 |
|
Output_QU |
QI |
TRUE |
Output |
Output_Q1 |
|
Output_QD |
QI |
TRUE |
Output |
Output_Q2 |
|
Q_NumericValue_PHYSA_LREAL |
stObj |
OutputNumber_N3 |
Programmablauf und Verbindungen¶
Signalfluss¶
- Eingänge: Die vier digitalen Eingänge (
I1–I4) werden über die logiBUS‑AdapterInput_CU,Input_CD,Input_R,Input_LDin die Steuerung eingelesen. - Zählersteuerung:
CU(Count Up) vonInput_CU: jedes Ereignis am EingangI1erhöht den Zähler um 1.CD(Count Down) vonInput_CD: Ereignis anI2verringert den Zähler um 1.R(Reset) vonInput_R: Ereignis anI3setzt den Zähler auf 0 zurück.LD(Load) vonInput_LD: Ereignis anI4lädt den Preset‑Wert (PV) in den Zähler.- Preset‑Wert (PV): Der Baustein
ADI_DINT_TO_DIwird beim INIT‑Ereignis vonInput_LDaktiviert (Event‑VerbindungInput_LD.INITO → ADI_DINT_TO_DI.REQ). Er gibt den konstanten WertDINT#5an den Adapter‑EingangPVdes Zählers weiter. Somit wird bei jedem Ladevorgang der Zähler auf 5 gesetzt. - Ausgänge:
QU(Count Up Overflow): geht aufTRUE, wenn der Zähler seinen maximalen Wert erreicht oder überschreitet → wird aufOutput_Q1ausgegeben.QD(Count Down Overflow):TRUEbei Unterschreitung des Minimalwerts →Output_Q2.CV(Current Value) wird überADI_TO_ALRin ein LREAL‑Signal gewandelt und anQ_NumericValue_PHYSA_LREALübergeben. Dieses gibt den aktuellen Zählerstand als numerischen Wert auf dem Terminal (physikalische Ausgabe) aus.
Hinweise zum Aufbau¶
- Kommentare im Netzwerk:
„hier sind negative Werte möglich !“ – Der Zähler
ADI_FB_CTUDarbeitet mit DINT, daher können negative Zählerstände auftreten (z. B. durch mehr Rückwärts‑als Vorwärtsimpulse). „hier gegebenenfalls je einen AX_D_FF einbauen, damit die Events reduziert werden.“ – Bei schnellen Impulsfolgen könnte es erforderlich sein, Flanken‑Filter (z. B.AX_D_FF) zwischen Eingängen und Zähler zu schalten, um die Ereignisrate zu begrenzen und Zählfehler zu vermeiden. - Keine eigenen Sub‑Applikationen: Der gesamte Programmablauf ist in einer Ebene realisiert.
- Die Verbindungen sind als Adapter‑Connections ausgeführt, d. h. die Daten‑ und Ereignisübertragung erfolgt über Adapter‑Schnittstellen.
- Die Ereignisverbindung
Input_LD.INITO → ADI_DINT_TO_DI.REQstellt sicher, dass der Preset‑Wert nur beim Start des Eingangsbausteins (Initialisierung) neu gesendet wird.
Starten der Übung¶
- Die Übung ist als SubAppType (
Uebung_221b_ALR) in der 4diac‑IDE eingebunden. - Voraussetzung ist eine laufende logiBUS‑Hardware mit angeschlossenen Ein‑/Ausgängen (
I1–I4,Q1,Q2). - Das Terminal‑Objekt
OutputNumber_N3muss im Projekt vorhanden sein (aus der BibliothekUebungen::const::UT::DefaultPool_Numeric). - Nach dem Deployment kann die Steuerung durch Anlegen von Impulsen an den Eingängen getestet werden.
Zusammenfassung¶
Die Übung Uebung_221b_ALR demonstriert den Einsatz eines industriellen Vorwärts-/Rückwärtszählers (ADI_FB_CTUD) in der 4diac‑IDE. Durch die Kombination von logiBUS‑Eingängen, Datenkonvertierung und Terminalausgabe wird ein vollständiger Signalpfad von der Hardware bis zur Visualisierung abgebildet. Der Zähler kann über vier digitale Eingänge gesteuert werden, wobei ein fester Preset‑Wert von 5 verwendet wird. Die Ausgabe des aktuellen Zählerstands als Gleitkommazahl auf das Terminal erleichtert die Überwachung und Fehlersuche. Die Übung vermittelt praxisnahe Kenntnisse über Adapter‑Schnittstellen, Ereignissteuerung und Datentypkonvertierung.