NmSetName

image

Einleitung

Der Funktionsblock NmSetName dient der Konvertierung einer strukturierten Namensfeld-Definition in ein kompaktes, 8-Byte langes ISO-NAME gemäß der Spezifikation ISO 11783-5 (Abschnitt 5.1.2). Dieser Baustein ist ein wesentlicher Bestandteil für die Geräteidentifikation und -adressierung in ISOBUS-Netzwerken (Landwirtschaftliche und Forstmaschinen). Er übernimmt die Bit-genaue Zuordnung der einzelnen Felder einer NAMEFIELD_T-Struktur in das entsprechende Byte-Array eines CF_NAME_T.

Schnittstellenstruktur

Ereignis-Eingänge

  • REQ: Dieses Ereignis löst die Konvertierung aus. Bei seinem Eintreffen werden die anliegenden Daten am Eingang psNameField verarbeitet.

Ereignis-Ausgänge

  • CNF: Dieses Ereignis signalisiert den Abschluss der Verarbeitung. Es wird nach der erfolgreichen Umwandlung der Eingangsdaten generiert.

Daten-Eingänge

  • psNameField (isobus::pgn::NAMEFIELD_T): Die Eingangsstruktur, die alle Einzelkomponenten eines ISOBUS-Namens (wie Herstellercode, Geräteklasse, Funktionsinstanz, etc.) in einem für den Programmierer gut handhabbaren Format enthält.

Daten-Ausgänge

  • (Unbenannt) (isobus::pgn::CF_NAME_T): Der Ausgang liefert das resultierende 8-Byte große ISO-NAME-Array (data[0] bis data[7]), das direkt in ISOBUS-Nachrichten verwendet werden kann.

Adapter

Dieser Funktionsblock verwendet keine Adapter.

Funktionsweise

Der Baustein arbeitet als reiner Daten-Transformer. Bei Auslösung durch das REQ-Ereignis liest er die Werte aus der Eingangsstruktur psNameField und verteilt sie gemäß der ISO-Norm bitweise auf die acht Bytes des Ausgangs-Arrays. Die Logik besteht aus einer sequentiellen Abfolge von bitweisen Operationen (AND, OR, SHL) und Typkonvertierungen. Jede Zeile im ST-Code setzt bestimmte Bits in einem spezifischen Byte des CF_NAME_T-Ausgangs, während die restlichen Bits unverändert bleiben (durch die AND-Operationen maskiert). Nachdem alle Bytes gesetzt sind, wird das CNF-Ereignis ausgegeben.

Technische Besonderheiten

  • Bitweise Verarbeitung: Die Kernfunktionalität basiert auf präzisen bitweisen Operationen, um die komplexe Struktur des ISO-NAME in ein kompaktes Byte-Array zu packen.

  • Typensicherheit: Es werden explizite Typkonvertierungen (z.B. DWORD_TO_BYTE, WORD_TO_BYTE) verwendet, um die korrekte Datenhandhabung sicherzustellen.

  • Normkonformität: Die Implementierung folgt strikt der Bit-Zuordnung, wie sie in ISO 11783-5 definiert ist.

  • Zustandslos: Der Block besitzt keinen internen Zustand zwischen zwei Aufrufen. Die Ausgabe hängt ausschließlich von den aktuellen Eingabedaten ab.

Zustandsübersicht

Der Funktionsblock ist zustandslos. Sein Verhalten lässt sich als einfache, deterministische Funktion beschreiben:

  1. Warten: Block wartet auf das REQ-Ereignis.

  2. Verarbeiten: Bei REQ werden die Eingangsdaten verarbeitet und das Ausgangs-Array berechnet.

  3. Bestätigen: Unmittelbar nach der Berechnung wird das CNF-Ereignis ausgegeben. Der Block kehrt danach direkt wieder in den Wartezustand (1) zurück.

Anwendungsszenarien

  • Initialisierung eines ISOBUS-Knotens: Beim Start eines Steuergeräts (ECU) in einem ISOBUS-Netzwerk muss dessen eindeutiger NAME aus konfigurierbaren Parametern (z.B. aus einem NVRAM) zusammengesetzt und in die Kommunikationsstack eingetragen werden.

  • Dynamische Gerätekonfiguration: In Systemen, wo sich die Geräteeigenschaften (z.B. Funktionsinstanz) zur Laufzeit ändern können, wird dieser Block verwendet, um den neuen, gültigen NAME zu generieren.

  • Test- und Simulationstools: Zum Erzeugen von korrekten ISO-NAMEs für die Simulation verschiedener virtueller Geräte in einem ISOBUS-Netzwerk.

⚖️ Vergleich mit ähnlichen Bausteinen

  • Gegenstück NmGetName: Während NmSetName eine strukturierte Beschreibung in ein Byte-Array packt, würde ein hypothetischer NmGetName-Block die umgekehrte Operation durchführen: Er extrahiert aus einem gegebenen ISO-NAME-Byte-Array die einzelnen Felder und stellt sie in einer NAMEFIELD_T-Struktur bereit. NmSetName ist somit der „Encoder“, sein Pendant wäre der „Decoder“.

  • Generische Byte-Packer: Im Gegensatz zu generischen Bausteinen, die beliebige Datenstrukturen serialisieren, ist NmSetName spezifisch auf die ISO 11783-NAME-Struktur optimiert und garantiert so Normkonformität ohne zusätzliche Konfiguration.

🛠️ Zugehörige Übungen

Fazit

Der NmSetName-Funktionsblock ist ein spezialisierter, unverzichtbarer Baustein für die ISOBUS-Kommunikation. Er abstrahiert die komplexe, bitgenaue Zusammensetzung des ISO-NAME gemäß der Norm und bietet dem Anwender eine einfache, strukturierte Schnittstelle. Seine deterministische und zustandslose Funktionsweise macht ihn robust und einfach in Steuerungsabläufe zur Geräteinitialisierung und -konfiguration integrierbar.