CAN_MSG
Einleitung
Der Datentyp CAN_MSG ist eine strukturierte Typdefinition (Struct) zur Repräsentation eines klassischen CAN-Nachrichtenrahmens (ohne Transportprotokoll, TP). Er dient als Container für die wesentlichen Attribute einer CAN-Nachricht, einschließlich Priorität, Nutzdatenlänge und dem eigentlichen Datenpuffer. Dieser Typ ist für den Einsatz in Funktionsblöcken vorgesehen, die CAN-Kommunikation in einem IEC 61499-System implementieren.
Schnittstellenstruktur
Da es sich bei CAN_MSG um einen Datentyp und nicht um einen Funktionsblock handelt, existieren keine Ereignis- oder Adapterschnittstellen. Die Struktur wird ausschließlich über ihre Datenmember definiert.
Daten-Eingänge
(Nicht anwendbar – Datentyp)
Daten-Ausgänge
(Nicht anwendbar – Datentyp)
Ereignis-Eingänge
(Nicht anwendbar – Datentyp)
Ereignis-Ausgänge
(Nicht anwendbar – Datentyp)
Adapter
(Nicht anwendbar – Datentyp)
Funktionsweise
Der CAN_MSG-Typ ist eine passive Datenstruktur. Er kapselt die für eine CAN-Nachricht relevanten Informationen:
Priorität (
u8Priority): Definiert die Arbitrierungspriorität auf dem CAN-Bus. Ein niedrigerer numerischer Wert entspricht einer höheren Priorität.Datenlänge (
u16DaSize): Gibt die tatsächliche Anzahl der genutzten Bytes im Datenpuffer an (0 bis 8).Datenpuffer (
data): Ein Array von 8 Bytes, das die Nutzdaten der Nachricht speichert. Nicht genutzte Bytes sind mit einem Standardwert initialisiert.
Diese Struktur kann als Eingabe- oder Ausgabedatentyp für Funktionsblöcke verwendet werden, die CAN-Nachrichten senden, empfangen, verarbeiten oder loggen.
Technische Besonderheiten
Feste Puffergröße: Das Datenarray ist statisch auf eine Länge von 8 Bytes dimensioniert, was der maximalen Nutzdatenlänge eines klassischen CAN-Frames entspricht.
Initialisierung: Das Datenarray wird standardmäßig mit dem Hexadezimalwert
16#FF(dezimal 255) in allen 8 Positionen vorbelegt. Die Datenlängeu16DaSizeist standardmäßig0, und die Prioritätu8Priorityist standardmäßig7(niedrigste Priorität).Typensicherheit: Die Verwendung eines strukturierten Typs anstelle einzelner Variablen erhöht die Wartbarkeit und Klarheit in der Funktionsblock-Verbindungsansicht.
Zustandsübersicht
(Nicht anwendbar – Datentyp besitzt kein Verhalten oder Zustandsautomaten.)
Anwendungsszenarien
Der CAN_MSG-Typ ist grundlegend für:
CAN-Sender-FBs: Ein FB, der einen
CAN_MSG-Typ als Eingang erhält und dessen Inhalt als physikalischen CAN-Frame auf den Bus sendet.CAN-Empfänger-FBs: Ein FB, der empfangene CAN-Frames in eine Variable vom Typ
CAN_MSGpackt und an nachgelagerte Logik weiterreicht.Nachrichten-Konstruktion: FBs, die aus einzelnen Werten (z.B. aus Sensor-FBs) eine gültige
CAN_MSG-Struktur für die spätere Übertragung aufbauen.Nachrichten-Filterung/Verarbeitung: FBs, die eingehende
CAN_MSG-Strukturen basierend auf Priorität, Dateninhalt oder Länge analysieren und verarbeiten.
⚖️ Vergleich mit ähnlichen Bausteinen
Als Datentyp ist CAN_MSG mit anderen strukturierten Typen in 4diac vergleichbar, die Kommunikationsprotokolle abbilden (z.B. UDP_PACKET, MODBUS_MSG). Sein spezifisches Merkmal ist die enge Abbildung auf die Hardware-Eigenschaften des CAN-Bus-Protokolls (Priorität, 8-Byte-Limit). Im Gegensatz zu einem TP-basierten Nachrichtentyp (z.B. für ISO 11783 oder CANopen) fehlen hier Felder für Paketierung, Sequenznummern oder spezifische Protokollkopfzeilen.
Fazit
Der CAN_MSG-Datentyp stellt eine essentielle und gut strukturierte Grundlage für die Implementierung von CAN-Bus-Kommunikation in 4diac-basierten Steuerungssystemen dar. Durch die Bündelung von Priorität, Länge und Daten in einem einzigen Typ wird die Handhabung von CAN-Nachrichten in Funktionsblock-Netzwerken deutlich vereinfacht und standardisiert. Seine Verwendung ist für alle Anwendungen empfohlen, die den direkten Zugriff auf CAN-Frames erfordern.