Hier ist die Dokumentationsseite für die Übung 126b.
Uebung_126b: Übung zu ISOBUS Send Message Cyclic (mit CB) SINUS-Funktion Plotten¶
Einleitung¶
Die Übung Uebung_126b demonstriert das zyklische Senden einer ISOBUS-Nachricht, bei der die Nutzdaten (Data Payload) dynamisch über einen Callback-Mechanismus generiert werden. Konkret wird eine Sinus-Funktion erzeugt, deren Werte in das erste Byte der CAN-Nachricht geschrieben werden. Dies dient beispielsweise dazu, Signalverläufe zu simulieren und diese anschließend in Diagnose-Tools wie dem PCAN-Explorer zu plotten.
Das Hauptmerkmal dieser Übung ist die Trennung von Kommunikationsmanagement (im Haupt-Netzwerk) und Datengenerierung (in einer Sub-Application), verbunden über einen Adapter.
Verwendete Funktionsbausteine (FBs)¶
Haupt-Netzwerk¶
Im Hauptnetzwerk werden folgende Bausteine verwendet, um die Kommunikation zu initiieren:
-
NmGetCfInfo_1 (
isobus::pgn::NmGetCfInfo):- Dient zum Abrufen von Netzwerkinformationen und Filtern der Zieladresse.
- Parameter:
u8CanIdx=NODE1member=networkaddress=PEAK_ADDmask=PEAK_FLT
-
AlPgnTxNew8Bcycl_REQ (
isobus::pgn::tx::AlPgnTxNew8Bcycl_REQ):- Dieser Baustein ist für das zyklische Senden einer 8-Byte großen Nachricht zuständig.
- Er verfügt über einen Adapter-Anschluss (
CB), über den die Datenanforderung (Callback) abgewickelt wird. - Parameter:
u32Pgn=61184(Die verwendete Parameter Group Number)u16DaSize=8(Datenlänge in Bytes)u8Priority=3(Priorität der Nachricht)u16DefRepRate=500(Zykluszeit in Millisekunden)
-
DataSupply (
Uebungen::Uebung_126b_sub):- Eine Sub-Application, welche die Logik zur Datenerzeugung (Sinus-Kurve) enthält.
Sub-Bausteine: DataSupply (Uebung_126b_sub)¶
Diese Sub-Application kapselt die Logik zur Berechnung der Sinuswerte.
- Typ: SubApp
-
Verwendete interne FBs:
- CallbackFB:
isobus::pgn::tx::CallbackFB- Dieser Baustein dient als Schnittstelle zum zyklischen Sender. Wenn der Sender Daten benötigt, triggert dieser FB die Berechnungskette.
- Parameter:
DI1(Eingang für die berechneten Datenstruktur)
- GEN_SIN:
OSCAT::Basic::POUs::Engineering::signal_generators::GEN_SIN- Erzeugt ein sinusförmiges Signal.
- Parameter:
PT=T#10s(Periodendauer)AM=10.0(Amplitude)OS=5.0(Offset/Verschiebung)DL=0.0
- F_LREAL_TO_USINT:
iec61131::conversion::F_LREAL_TO_USINT- Konvertiert den Gleitkommawert des Sinus-Generators in eine vorzeichenlose kleine Ganzzahl (USINT).
- F_USINT_TO_BYTE:
iec61131::conversion::F_USINT_TO_BYTE- Wandelt den USINT-Wert in ein Byte um.
- BYTES_TO_ARR08B:
logiBUS::utils::conversion::arr::reversing::BYTES_TO_ARR08B- Erstellt ein Byte-Array aus 8 Einzelbytes.
- Der berechnete Sinus-Wert wird an
IN_00angelegt. - Parameter
IN_01bisIN_07sind statisch16#00.
- STRUCT_MUX:
eclipse4diac::convert::STRUCT_MUX- Verpackt das Byte-Array in die
isobus::pgn::CAN_MSGStruktur. - Attribut:
StructuredType=isobus::pgn::CAN_MSG
- Verpackt das Byte-Array in die
- CallbackFB:
-
Funktionsweise: Sobald der
CallbackFBein Event empfängt (getriggert durch den zyklischen Sender im Hauptprogramm), aktiviert er denGEN_SIN. Der aktuelle Sinuswert wird berechnet, konvertiert (LREAL -> USINT -> BYTE) und in das erste Byte eines Arrays geschrieben. Dieses Array wird in eine CAN-Nachricht-Struktur verpackt und über denCallbackFBzurück an das Hauptprogramm gegeben.
Programmablauf und Verbindungen¶
- Initialisierung: Der Baustein
NmGetCfInfo_1ermittelt beim Start die notwendigen Netzwerkinformationen. - Konfiguration: Sobald die Netzwerkinformationen verfügbar sind (
INDEvent), wird der SenderbausteinAlPgnTxNew8Bcycl_REQinstalliert (install). - Zyklischer Betrieb:
- Der
AlPgnTxNew8Bcycl_REQBaustein ist auf eine Wiederholrate von 500ms eingestellt. - Alle 500ms löst er über den Adapter-Anschluss
CB(verbunden mitDataSupply.PLUG1) eine Anfrage aus.
- Der
- Datenberechnung:
- Innerhalb der Sub-App
DataSupplyempfängt derCallbackFBdie Anfrage. - Dies triggert die Signalkette: Der Sinus-Generator
GEN_SINberechnet den nächsten Wert basierend auf der aktuellen Zeit. - Aufgrund der Parameter (Amplitude 10, Offset 5) erzeugt der Generator Werte im Bereich von -5.0 bis +15.0. Da die Konvertierung auf
USINTerfolgt, werden negative Werte typischerweise auf 0 geklemmt.
- Innerhalb der Sub-App
- Rückgabe und Senden:
- Der berechnete Wert landet im ersten Byte der Nutzdaten.
- Die Daten werden über den Adapter zurück an
AlPgnTxNew8Bcycl_REQgeleitet. - Der Baustein sendet die PGN 61184 mit den aktuellen Daten auf den CAN-Bus.
Lernziele:
* Verständnis des Adapter-Konzepts (Plugs/Sockets) in 4diac.
* Nutzung von Callback-Mechanismen für "Just-in-Time" Datenerzeugung bei zyklischen Sendern.
* Verwendung von OSCAT-Bibliotheksbausteinen (GEN_SIN) zur Signalsimulation.
* Datenkonvertierung und Strukturierung für ISOBUS/CAN-Nachrichten.
Zusammenfassung¶
Die Übung 126b zeigt eine elegante Methode, um Simulationsdaten (hier eine Sinuskurve) über den ISOBUS zu senden. Durch die Auslagerung der Datenerzeugung in eine Sub-Applikation und die Nutzung der Callback-Schnittstelle bleibt die Hauptanwendung übersichtlich und der zyklische Sender kümmert sich autonom um das Timing, während die aktuellen Daten bei jedem Zyklus frisch berechnet werden. Das Ergebnis kann im PCAN-Explorer als Wellenform visualisiert werden (Byte 0 der Nachricht).