Uebung_011b2: Numeric Value Input MUL¶
Bild folgt (sofern vorhanden)
Einleitung¶
Die Übung Uebung_011b2 realisiert eine einfache Multiplikation zweier numerischer Werte. Zwei Eingänge (InputNumber_I1 und InputNumber_I2) lesen je einen DWORD-Wert aus dem ISOBUS-Netzwerk, wandeln diesen in den Datentyp UDINT um und multiplizieren die Ergebnisse miteinander. Das Produkt wird über einen Ausgang (OutputNumber_N1) wieder auf den Bus geschrieben. Die Übung zeigt die Verwendung von Ein-/Ausgabe-FB für numerische Werte und die arithmetische Verknüpfung über IEC 61131-Funktionsbausteine.
Verwendete Funktionsbausteine (FBs)¶
- InputNumber_I1 (Typ:
isobus::UT::io::NumericValue::NumericValue_ID) - Parameter:
QI=TRUE,u16ObjId=InputNumber_I1 - Ereignisausgang:
IND - Datenausgang:
IN(DWORD) -
Funktion: Liest den aktuellen numerischen Wert des ISOBUS-Objekts „InputNumber_I1“ und stellt ihn als DWORD bereit.
-
InputNumber_I2 (Typ:
isobus::UT::io::NumericValue::NumericValue_ID) - Parameter:
QI=TRUE,u16ObjId=InputNumber_I2 - Ereignisausgang:
IND - Datenausgang:
IN(DWORD) -
Funktion: Liest den aktuellen numerischen Wert des ISOBUS-Objekts „InputNumber_I2“ und stellt ihn als DWORD bereit.
-
F_DWORD_TO_UDINT (Typ:
iec61131::conversion::F_DWORD_TO_UDINT) - Ereigniseingang:
REQ, Ereignisausgang:CNF - Dateneingang:
IN(DWORD), Datenausgang:OUT(UDINT) -
Funktion: Wandelt den eingehenden DWORD-Wert in einen vorzeichenlosen 32-Bit-Integer (UDINT) um.
-
F_DWORD_TO_UDINT_1 (Typ:
iec61131::conversion::F_DWORD_TO_UDINT) -
Gleiche Konfiguration und Funktion wie oben, dient der Umwandlung des zweiten Eingangswerts.
-
F_MUL (Typ:
iec61131::arithmetic::F_MUL) - Ereigniseingang:
REQ, Ereignisausgang:CNF - Dateneingänge:
IN1,IN2(beide UDINT), Datenausgang:OUT(UDINT) -
Funktion: Multipliziert die beiden eingehenden UDINT-Werte und gibt das Produkt als UDINT aus.
-
Q_NumericValue (Typ:
isobus::UT::Q::Q_NumericValue) - Parameter:
u16ObjId=OutputNumber_N1 - Ereigniseingang:
REQ - Dateneingang:
u32NewValue(UDINT) - Funktion: Schreibt den übergebenen numerischen Wert auf das ISOBUS-Objekt „OutputNumber_N1“.
Programmablauf und Verbindungen¶
- Ereignissteuerung:
- Sobald
InputNumber_I1einen neuen Wert liefert, feuert dessen EreignisausgangIND. Dieses Ereignis wird zumREQ-Eingang vonF_DWORD_TO_UDINTverbunden. - Gleichzeitig triggert
InputNumber_I2.INDden zweiten UmwandlerF_DWORD_TO_UDINT_1. - Nach Abschluss der jeweiligen Konvertierung feuern die
CNF-Ausgänge beider Umwandler – beide verbunden mit demREQ-Eingang vonF_MUL. (Hinweis: Die beiden Ereignisse werden beim Verbinden implizit ODER-verknüpft, sodass jede neue Eingabe eine Neuberechnung auslöst.) -
Nach der Multiplikation feuert
F_MUL.CNFund triggert den Ausgangs-FBQ_NumericValue. -
Datenfluss:
- Die Datenausgänge
INder Eingabe-FBs werden direkt auf die DateneingängeINder jeweiligen Umwandler gelegt. - Die Ausgänge
OUTder Umwandler (UDINT) gelangen anF_MUL.IN1(ausI1) bzw.F_MUL.IN2(ausI2). - Das Produkt
F_MUL.OUTwird auf den Eingangu32NewValuevonQ_NumericValuegeschrieben und dort auf den Bus ausgegeben.
Die gesamte Logik ist ereignisgesteuert: Sobald ein neuer Messwert an einem der Eingänge anliegt, wird die gesamte Kette durchlaufen und der Ausgang aktualisiert.
Zusammenfassung¶
Die Übung demonstriert den Umgang mit ISOBUS-NumericValue-FBs und IEC 61131-Konvertierungs- sowie Arithmetikbausteinen in einer 4diac-Subapplikation. Ziel ist die einfache Multiplikation zweier Buswerte. Durch die getrennte Ereignisverkettung wird sichergestellt, dass jeder neue Eingangswert sofort verarbeitet wird. Die Übung eignet sich als Grundlage für komplexere Berechnungen mit mehreren Eingängen und Ausgängen.