Uebung_001c2: DigitalInput_I1 negiert auf DigitalOutput_Q1 --> Eingang abfragen bei Boot.¶
Einleitung¶
Diese Übung realisiert eine einfache Signalverarbeitung: Der digitale Eingang I1 wird negiert und auf den digitalen Ausgang Q1 ausgegeben. Der Eingang wird beim Booten des Systems einmal abgefragt. Ein spezieller Kommentar im Netzwerk weist darauf hin, dass das Verhalten beim Start vom Vorhandensein einer bestimmten Ereignisverbindung (INITO → REQ) abhängt.
Verwendete Funktionsbausteine (FBs)¶
DigitalInput_I1¶
- Typ:
logiBUS::io::DI::logiBUS_IX - Parameter:
QI = TRUEInput = Input_I1- Ereignisschnittstelle:
- Eingang:
REQ(Anforderung zum Lesen des Eingangs) - Ausgang:
IND(Bestätigung: Eingang gelesen),INITO(Initialisierungsbestätigung) - Datenschnittstelle:
- Ausgang:
IN(aktueller digitaler Wert des Eingangs) - Funktionsweise:
Der Baustein liest den digitalen Wert des konfigurierten Eingangs (hier
Input_I1) aus. Gesteuert wird das Lesen über das EreignisREQ. Nach erfolgreichem Lesen wird am AusgangINDein Ereignis ausgegeben und der gelesene Wert überINbereitgestellt.
F_NOT_BOOL¶
- Typ:
iec61131::bitwiseOperators::F_NOT_BOOL - Parameter: Keine.
- Ereignisschnittstelle:
- Eingang:
REQ(Anforderung zur Negation) - Ausgang:
CNF(Bestätigung: Negation ausgeführt) - Datenschnittstelle:
- Eingang:
IN(BOOL-Wert, der negiert werden soll) - Ausgang:
OUT(negierten BOOL-Wert) - Funktionsweise:
Der Baustein führt eine logische Negation auf den anliegenden BOOL-Wert durch. Bei einem Ereignis an
REQwird der Wert anINnegiert und das Ergebnis anOUTausgegeben. Anschließend wirdCNFausgelöst.
DigitalOutput_Q1¶
- Typ:
logiBUS::io::DQ::logiBUS_QX - Parameter:
QI = TRUEOutput = Output_Q1- Ereignisschnittstelle:
- Eingang:
REQ(Anforderung zum Setzen des Ausgangs) - Ausgang:
CNF(Bestätigung: Ausgang gesetzt) - Datenschnittstelle:
- Eingang:
OUT(Wert, der auf den Ausgang geschrieben werden soll) - Funktionsweise:
Der Baustein setzt den digitalen Ausgang
Output_Q1auf den überOUTerhaltenen Wert. Bei einem Ereignis anREQwird der Wert übernommen und der Ausgang physisch aktualisiert. Nach Abschluss wirdCNFausgelöst.
Programmablauf und Verbindungen¶
Die drei Bausteine sind wie folgt miteinander verbunden:
-
Eingangslesen und Negation auslösen
Der EreignisausgangINDvonDigitalInput_I1ist direkt mit dem EreigniseingangREQvonF_NOT_BOOLverbunden. Dadurch wird nach jedem erfolgreichen Einlesen des digitalen Eingangs sofort die Negation des gelesenen Wertes angestoßen. Gleichzeitig wird der DatenwertINvonDigitalInput_I1auf den DateneingangINvonF_NOT_BOOLübertragen. -
Negation und Ausgang setzen
Der EreignisausgangCNFvonF_NOT_BOOList mit dem EreigniseingangREQvonDigitalOutput_Q1verbunden. Sobald die Negation abgeschlossen ist, wird der negierte Wert (vom AusgangOUTvonF_NOT_BOOL) auf den DateneingangOUTvonDigitalOutput_Q1gelegt und der Ausgang aktualisiert. -
Besonderheit beim Booten
Ein wichtiger Aspekt ist die Initialisierung. Der EreignisausgangINITOvonDigitalInput_I1ist mit dem EreigniseingangREQvonDigitalInput_I1(also dem Baustein selbst) zurückverbunden. Diese Verbindung sorgt dafür, dass der Eingang unmittelbar nach dem Booten einmal gelesen wird. Ohne diese Rückkopplung würde der AusgangQ1beim Start den WertFALSEbehalten, weil kein erstes Ereignis ausgelöst wird. Mit der Verbindung wird der Eingang sofort abgefragt, negiert und der Ausgang auf den tatsächlichen (negierten) Wert gesetzt – dieser kann dannTRUEsein.
Der Kommentar im Netzwerk fasst dies zusammen:
„ohne die Linie INITO -> REQ ist der Ausgang Q1 beim Start FALSE. mit der Linie ist er TRUE."
Zusammenfassung¶
Die Übung demonstriert die grundlegende Verwendung von digitalen Ein- und Ausgangsbausteinen in Kombination mit einer logischen Negation. Der Fokus liegt auf dem Verständnis der ereignisgesteuerten Ablaufsteuerung (Ereigniskette) sowie auf dem Initialisierungsverhalten beim Systemstart. Durch die Rückkopplung des INITO-Ereignisses wird sichergestellt, dass der Ausgang bereits beim Booten einen korrekten (negierten) Wert erhält. Dies ist ein typisches Beispiel für die Anwendung von Initialisierungsereignissen in der 4diac-IDE.