AlPgnRxNew8Bcylc_REQ

image

Einleitung

Der Funktionsblock AlPgnRxNew8Bcylc_REQ dient zur zyklischen Anforderung von Daten über ein CAN-Netzwerk gemäß dem ISOBUS-Standard (ISO 11783). Sein Hauptzweck ist die Installation und Verwaltung von Empfangsparametern für spezifische Parameter Group Numbers (PGNs). Der Baustein ermöglicht die Konfiguration eines zyklischen Empfangs und überwacht den Datenfluss, indem er bei erfolgreichem Empfang, bei Timeouts oder bei Fehlern entsprechende Ereignisse auslöst.

AlPgnRxNew8Bcylc_REQ

Schnittstellenstruktur

Ereignis-Eingänge

  • INIT: Initialisiert den Funktionsblock.

  • install: Löst die Installation einer Empfangs-PGN (RX) mit den zugehörigen Konfigurationsparametern aus. Die mitgeführten Daten sind: u32Pgn, NmSource, u16DaSize, u8Priority, u16DefRepRate, u16CtrlTime.

Ereignis-Ausgänge

  • INITO: Bestätigt die abgeschlossene Initialisierung.

  • installO: Signalisiert den Abschluss des Installationsvorgangs. Führt den PGN_handle als Ergebnis mit.

  • IND: Wird ausgelöst, wenn neue Daten empfangen wurden. Führt bTimeout, s32TimeStamp und Data mit.

  • TIMEOUT: Wird bei einem Kontrollzeit-Timeout ausgelöst. Führt bTimeout und s32TimeStamp_timeout mit.

  • dataERR: Zeigt einen Fehler bei den empfangenen Daten an. Führt den Fehlercode dataERRC mit.

  • pgnERR: Zeigt einen Fehler bei der PGN-Verarbeitung an. Führt den Fehlercode pgnERRC mit.

Daten-Eingänge

  • u32Pgn (UDINT): Die zu empfangende Parameter Group Number (PGN). Gültiger Bereich: 0 bis 0x3FFFF.

  • NmSource (isobus::pgn::ISONETEVENT_T): Definiert den Kommunikationspartner (z.B. eine bestimmte Node-Adresse).

  • u16DaSize (UINT): Die zu erwartende Datenlänge der PGN in Bytes (0..8).

  • u8Priority (USINT): Die Standard-Priorität für diese PGN (0..7, wobei 0 die höchste Priorität ist). Initialwert: 7.

  • u16DefRepRate (UINT): Das erwartete zyklische Sendeintervall der Quell-PGN in Millisekunden (0 … 0xFDFF ms).

  • u16CtrlTime (UINT): Die Kontrollzeit in Millisekunden (0 … 0xFDFF ms), nach deren Überschreitung ohne Empfang ein TIMEOUT-Ereignis generiert wird.

Daten-Ausgänge

  • PGN_handle (INT): Ein Handle (Bezeichner) für die erfolgreich installierte PGN. Im Fehlerfall wird ein ungültiger Handle (HANDLE_UNVALID) zurückgegeben.

  • dataERRC (INT): Fehlercode, der bei einem dataERR-Ereignis ausgegeben wird.

  • pgnERRC (INT): Fehlercode, der bei einem pgnERR-Ereignis ausgegeben wird.

  • bTimeout (BOOL): Statusflag für einen aufgetretenen Timeout. TRUE = Timeout ist eingetreten, FALSE = kein Timeout. Initialwert: FALSE.

  • s32TimeStamp_timeout (DINT): Zeitstempel in Millisekunden, zu dem der Timeout erkannt wurde.

  • s32TimeStamp (DINT): Zeitstempel in Millisekunden des zuletzt empfangenen gültigen Datensatzes. Initialwert: -1.

  • Data (isobus::pgn::CAN_MSG): Puffer, der die empfangenen CAN-Nachrichtendaten enthält.

Adapter

Dieser Funktionsblock verwendet keine Adapter-Schnittstellen.

Funktionsweise

  1. Initialisierung: Durch das INIT-Ereignis wird der Baustein in einen betriebsbereiten Grundzustand versetzt, was durch INITO quittiert wird.

  2. PGN-Installation: Das install-Ereignis konfiguriert eine neue Empfangs-PGN. Alle notwendigen Parameter (PGN, Quelle, Datenlänge, etc.) werden übergeben. Bei erfolgreicher Konfiguration antwortet der Block mit installO und liefert einen gültigen PGN_handle. Bei Fehlern werden pgnERR oder dataERR ausgelöst.

  3. Zyklischer Empfang: Nach erfolgreicher Installation überwacht der Baustein den CAN-Bus auf Nachrichten der konfigurierten PGN und Quelle.

  4. Datenindikation: Bei Empfang einer gültigen Nachricht wird das IND-Ereignis ausgelöst. Die Daten (Data), ein Zeitstempel (s32TimeStamp) und der Timeout-Status (bTimeout=FALSE) werden ausgegeben.

  5. Timeout-Überwachung: Überschreitet die Zeit seit dem letzten empfangenen Paket die konfigurierte u16CtrlTime, wird das TIMEOUT-Ereignis ausgelöst. bTimeout wird auf TRUE gesetzt und ein Zeitstempel (s32TimeStamp_timeout) bereitgestellt.

  6. Fehlerbehandlung: Treten Protokoll- oder Datenfehler auf, werden die Ereignisse pgnERR bzw. dataERR mit den entsprechenden Fehlercodes generiert.

Technische Besonderheiten

  • Der Baustein ist speziell für den Einsatz in ISOBUS-Umgebungen (Landtechnik) vorgesehen und nutzt typsichere Datentypen aus der isobus::pgn-Bibliothek (CAN_MSG, ISONETEVENT_T).

  • Die Timeout-Überwachung (u16CtrlTime) ist unabhängig vom erwarteten Sendeintervall (u16DefRepRate) und dient der Robustheit, um ausgefallene Kommunikationspartner zu erkennen.

  • Der PGN_handle ermöglicht die eindeutige Identifikation und spätere Verwaltung (z.B. Deinstallation) einer konfigurierten PGN-Instanz innerhalb einer Applikation.

Zustandsübergangsübersicht

  1. Nicht initialisiert: Nach dem Start. Auf INIT wartend.

  2. Bereit: Nach INITO. Kann install-Anfragen entgegennehmen.

  3. Installiert: Nach erfolgreichem installO. Überwacht aktiv den CAN-Bus auf die konfigurierte PGN.

    • Bei Empfang: Übergang in Zustand „Daten verfügbar“ (löst IND aus), danach Rückkehr zu „Installiert“.

    • Bei Timeout: Löst TIMEOUT aus, bleibt im Zustand „Installiert“ (weitere Überwachung).

    • Bei Fehler: Löst pgnERR/dataERR aus, bleibt im Zustand „Installiert“.

Anwendungsszenarien

  • ISOBUS-Implementierungen: Empfang von zyklischen Daten (z.B. Drehzahl, Druck, Position) von einem Steuergerät (ECU) eines Anbaugeräts im Traktor.

  • Überwachungsfunktionen: Kontinuierliche Überprüfung, ob eine kritische Komponente (z.B. Motorsteuerung) noch „lebendig“ ist und Daten sendet (mittels CtrlTime).

  • Datenlogger: Zyklisches Sammeln von Prozessdaten aus dem CAN-Netzwerk für Analyse- oder Speicherzwecke.

⚖️ Vergleich mit ähnlichen Bausteinen

  • E_CTU vs. AlPgnRxNew8Bcylc_REQ: Ein einfacher Zähler (E_CTU) hat keine Netzwerkfunktionalität. Dieser Baustein ist ein spezialisierter, anwendungsnaher Kommunikationsblock für ein bestimmtes Protokoll (ISOBUS).

  • Generische CAN-RX-Blöcke: Im Gegensatz zu Blöcken, die rohe CAN-IDs und Daten empfangen, arbeitet dieser Block auf der höheren, standardisierten PGN-Ebene des ISOBUS und übernimmt die protokollspezifische Dekodierung und Parameterverwaltung.

🛠️ Zugehörige Übungen

Fazit

Der AlPgnRxNew8Bcylc_REQ ist ein essentieller Baustein für die Implementierung von ISOBUS-konformen Empfangsfunktionalitäten in 4diac. Er abstrahiert die Komplexität der CAN-Kommunikation und bietet eine saubere, ereignisgesteuerte Schnittstelle zur zuverlässigen, zyklischen Datenerfassung mit integrierter Fehler- und Timeout-Erkennung. Seine Verwendung erhöht die Wiederverwendbarkeit und Robustheit von Steuerungsapplikationen in der Landtechnik.