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::CallbackFBDieser 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_SINErzeugt 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_USINTKonvertiert den Gleitkommawert des Sinus-Generators in eine vorzeichenlose kleine Ganzzahl (USINT).
F_USINT_TO_BYTE:
iec61131::conversion::F_USINT_TO_BYTEWandelt den USINT-Wert in ein Byte um.
BYTES_TO_ARR08B:
logiBUS::utils::conversion::arr::reversing::BYTES_TO_ARR08BErstellt 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_MUXVerpackt das Byte-Array in die
isobus::pgn::CAN_MSGStruktur.Attribut:
StructuredType=isobus::pgn::CAN_MSG
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.
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.
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).