AlPgnRxNew8Bcylc
Einleitung
Der Funktionsblock AlPgnRxNew8Bcylc dient dem zyklischen Empfang von Daten über ein ISOBUS-Netzwerk gemäß dem Parameter Group Number (PGN) Protokoll. Er ermöglicht die Konfiguration und Überwachung von Empfangskanälen für spezifische PGNs, inklusive der Handhabung von Timeouts und Fehlerzuständen. Der Block ist für den Einsatz in Steuerungssystemen konzipiert, die eine zuverlässige und überwachte Kommunikation mit anderen ISOBUS-Geräten erfordern.
Schnittstellenstruktur
Ereignis-Eingänge
INIT: Initialisiert den Funktionsblock.
install: Installiert einen neuen Empfangskanal für eine spezifische PGN. Löst die Konfiguration mit den zugehörigen Daten-Eingängen aus.
Ereignis-Ausgänge
INITO: Bestätigt die abgeschlossene Initialisierung.
installO: Signalisiert den Abschluss einer Installationsanfrage. Liefert den zugewiesenen
PGN_handle.IND: Wird ausgelöst, wenn neue Daten für die konfigurierte PGN empfangen wurden.
TIMEOUT: Signalisiert, dass für die konfigurierte PGN ein Timeout aufgetreten ist.
dataERR: Zeigt einen Fehler bei den empfangenen Daten an.
pgnERR: Zeigt einen Fehler im Zusammenhang mit der PGN-Konfiguration oder -Verarbeitung an.
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 (Netzwerk-Management-Quelle).
u16DaSize (UINT): Die zu erwartende Datenlänge der PGN in Bytes (0..8).
u8Priority (USINT): Die Standard-Priorität dieser PGN (0..7, wobei 0 die höchste Priorität ist). Initialwert: 7.
u16CtrlTime (UINT): Die Kontrollzeit (Timeout-Zeit) für den Empfang dieser PGN in Millisekunden (0 … 0xFDFF ms). Ein Wert von 0 deaktiviert die Timeout-Überwachung.
Daten-Ausgänge
PGN_handle (INT): Ein Handle, das den erfolgreich installierten Empfangskanal identifiziert. Im Fehlerfall wird
HANDLE_UNVALIDausgegeben.dataERRC (INT): Fehlercode, der bei Auslösung des
dataERR-Ereignisses gesetzt wird.pgnERRC (INT): Fehlercode, der bei Auslösung des
pgnERR-Ereignisses gesetzt wird.bTimeout (BOOL): Zeigt an, ob ein Timeout aufgetreten ist (
TRUE= Timeout,FALSE= kein Timeout). Initialwert:FALSE.s32TimeStamp_timeout (DINT): Zeitstempel des aufgetretenen Timeouts in Millisekunden.
s32TimeStamp (DINT): Zeitstempel der zuletzt empfangenen Nachricht in Millisekunden. Initialwert: -1.
Data (isobus::pgn::CAN_MSG): Puffer, der die empfangenen Nutzdaten enthält.
Adapter
Dieser Funktionsblock verwendet keine Adapter.
Funktionsweise
Initialisierung: Durch das
INIT-Ereignis wird der Funktionsblock betriebsbereit gemacht. Die Bestätigung erfolgt überINITO.Kanalinstallation: Ein Empfangskanal wird durch das
install-Ereignis konfiguriert. Die dazugehörigen Parameter (u32Pgn,NmSource,u16DaSize,u8Priority,u16CtrlTime) definieren den gewünschten Datenstrom. Bei Erfolg wird ein eindeutigerPGN_handlezurückgegeben (installO). Bei Fehlern werdenpgnERRoderdataERRausgelöst.Zyklischer Empfang: Sobald ein Kanal installiert ist, lauscht der Block auf Nachrichten der konfigurierten PGN von der angegebenen Quelle. Bei Empfang einer gültigen Nachricht werden die Daten im
Data-Ausgang bereitgestellt und dasIND-Ereignis ausgelöst. Ders32TimeStampwird aktualisiert.Timeout-Überwachung: Ist
u16CtrlTime> 0, überwacht der Block die Zeit zwischen empfangenen Nachrichten. Wird innerhalb dieses Zeitfensters keine neue Nachricht empfangen, wird dasTIMEOUT-Ereignis ausgelöst,bTimeoutaufTRUEgesetzt unds32TimeStamp_timeoutaktualisiert.Fehlerbehandlung: Protokollfehler oder ungültige Konfigurationen führen zur Auslösung der entsprechenden Fehlerereignisse (
dataERR,pgnERR) mit zugehörigem Fehlercode.
Technische Besonderheiten
Der Block unterstützt die spezifischen Datentypen
isobus::pgn::CAN_MSGundisobus::pgn::ISONETEVENT_Taus der ISOBUS-PGN-Bibliothek.Die Timeout-Überwachung ist optional und kann durch Setzen von
u16CtrlTimeauf 0 deaktiviert werden.Der
PGN_handledient als Referenz für den installierten Kanal und kann für spätere Verwaltungsoperationen (z.B. Deinstallation) notwendig sein.
Zustandsübersicht
Nicht initialisiert: Nach dem Start. Auf
INITwartend.Bereit: Nach erfolgreicher Initialisierung (
INITO). Kanninstall-Anfragen entgegennehmen.Empfangsbereit (Kanal aktiv): Nach erfolgreicher Installation eines Kanals (
installO). Überwacht den Bus auf die konfigurierte PGN und löstINDbei Empfang oderTIMEOUTbei Überschreitung der Kontrollzeit aus.Fehlerzustand: Wird durch die Ereignisse
pgnERRoderdataERRsignalisiert. Der genaue Fehler ist dem jeweiligen Fehlercode zu entnehmen. Der Block kann in der Regel nach Behebung der Ursache weiter verwendet werden.
Anwendungsszenarien
Landmaschinensteuerung: Empfang von Arbeitsgerätedaten (z.B. Drillmaschinen-Status) von einem Anbaugerät am ISOBUS.
Fahrzeugdiagnose: Zyklischer Empfang von Motordaten (Drehzahl, Temperatur) zur Anzeige und Überwachung im Terminal.
Implement Control: Empfang von Sollwerten (z.B. Soll-Tiefe) von einer Bedienkonsole für einen hydraulischen Unterlenker.
⚖️ Vergleich mit ähnlichen Bausteinen
Im Gegensatz zu generischen CAN-Empfangsblöcken ist AlPgnRxNew8Bcylc speziell auf das ISOBUS-PGN-Protokoll zugeschnitten. Er bietet höhere Abstraktion durch direkte PGN-Adressierung, integrierte Partnererkennung (NmSource) und automatische Timeout-Verwaltung. Einfache Empfangsblöcke würden diese Protokollschicht und Verwaltungsfunktionen nicht bereitstellen.
🛠️ Zugehörige Übungen
Fazit
Der AlPgnRxNew8Bcylc ist ein essentieller Baustein für robuste ISOBUS-Anwendungen, die zyklische Daten von anderen Netzwerkteilnehmern empfangen müssen. Durch seine integrierten Funktionen zur Kanalverwaltung, Zeitüberwachung und Fehlererkennung vereinfacht er die Entwicklung zuverlässiger Kommunikationsschnittstellen erheblich und entlastet den Applikationsentwickler von niedriglegigen Protokolldetails.