NmSetName
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
psNameFieldverarbeitet.
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]bisdata[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:
Warten: Block wartet auf das
REQ-Ereignis.Verarbeiten: Bei
REQwerden die Eingangsdaten verarbeitet und das Ausgangs-Array berechnet.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ährendNmSetNameeine strukturierte Beschreibung in ein Byte-Array packt, würde ein hypothetischerNmGetName-Block die umgekehrte Operation durchführen: Er extrahiert aus einem gegebenen ISO-NAME-Byte-Array die einzelnen Felder und stellt sie in einerNAMEFIELD_T-Struktur bereit.NmSetNameist somit der „Encoder“, sein Pendant wäre der „Decoder“.Generische Byte-Packer: Im Gegensatz zu generischen Bausteinen, die beliebige Datenstrukturen serialisieren, ist
NmSetNamespezifisch 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.