Project

General

Profile

Actions

Support Request #676

closed

Information about FlexRay Coder, Update Bit Handling and Timestamps

Added by hidden almost 7 years ago. Updated over 6 years ago.

Status:
Closed
Priority:
Normal
Customer:
AUDI
Department:
AEV
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Platform:
Windows 7 64bit
Topic:
DeviceTB::Flexray
FAQ Links:

Description

Supportanfrage

Hallo,

ich habe einige Fragen bzgl. der Verwendung das FlexRay Coders, des Update-Bits und der Signal- und PDU-Events auf die man sich registrieren kann.

Update-Bit: Beim verändern des Update-Bits ist mir aufgefallen, dass jedes Signal einen unterschiedlichen Zeitstempel haben kann. Nach meinem Verständnis ist das auch richtig so, außer für den Modus: USE_RECEIVED_VALUE. Sollten in diesem Modus nicht alle Signale immer den gleichen Zeitstempel haben? Wie kann ich vom Coder erfahren, ob sich ein Signal geändert hat oder nicht? Oder muss ich mir eigene Kontrollstrukturen pro PDU und Signal erstellen?

Signal/PDU Events: Ich habe meinen Filter als Listener beim Coder registriert und die Run-Methode implementiert wie im ./examples/demo_signal_decoder Beispiel. Beim Empfangen eines Mediasamples aktiviere ich alle PDUs und alle Signale aller PDUs im Coder. Anschließend übertrage ich das Mediasample in den Coder via ReceiveData. Im Fall des Signal Events bekomme ich stets ein Array von Signalen obwohl es heißt "If signals are present in the same PDU, the event will be emitted once for each signal". Sind diese Signale nun nur diese, die sich geändert haben? Oder sind es stets alle Signale einer PDU? Oder kann es sogar sein, dass in dem Array Signale verschiedener PDUs enthalten sind?

GetSignalValue: Unter welcher Bedingung gibt diese Methode ERR_FAILED zurück? Ist ERR_FAILED gleichbedeutend mit "Signal hat sich nicht geändert" oder "Signal undefiniert"?

Vielen Dank für die Hilfe.

Mit freundlichen Grüßen,

Rick Vogel

Lösung

USE_RECEIVED_VALUE. Sollten in diesem Modus nicht alle Signale immer den gleichen Zeitstempel haben?

Das hat eigentlich nichts mit dem Zeitstempel zu tun, sondern mit dem Wert des Signals.

Wie kann ich vom Coder erfahren, ob sich ein Signal geändert hat oder nicht? Oder muss ich mir eigene Kontrollstrukturen pro PDU und Signal erstellen?

Ein Zugriff auf das Update Bit ist nicht vorhanden, siehe DevTB SDK Doku High level signal handling:

If the update bit is used according to the configuration of property flexray_updatebit_behavior the user 
will in any way get only valid PDUs and signals, but there is no access to the update bit itself. 
If this information is vital to your implementation feel free to access the raw values of a FlexRay frame 
as explained in Low level FlexRay data handling

Signal/PDU Events: Ich habe meinen Filter als Listener beim Coder registriert und die Run-Methode implementiert wie im ./examples/demo_signal_decoder Beispiel. Beim Empfangen eines Mediasamples aktiviere ich alle PDUs und alle Signale aller PDUs im Coder. Anschließend übertrage ich das Mediasample in den Coder via ReceiveData. Im Fall des Signal Events bekomme ich stets ein Array von Signalen obwohl es heißt "If signals are present in the same PDU, the event will be emitted once for each signal". Sind diese Signale nun nur diese, die sich geändert haben? Oder sind es stets alle Signale einer PDU? Oder kann es sogar sein, dass in dem Array Signale verschiedener PDUs enthalten sind?

Alle aktualisierten Signale (je nach Konfiguration des Update Bit Verhaltens) sind darin enthalten.

GetSignalValue: Unter welcher Bedingung gibt diese Methode ERR_FAILED zurück? Ist ERR_FAILED gleichbedeutend mit "Signal hat sich nicht geändert" oder "Signal undefiniert"?

Ja, die liebe Doku...
ERR_FAILED kann in der ::GetSignalValue kann eigentlich nur vorkommen, wenn der Coder mit der angegeben SignalID nichts anfangen kann, heißt nicht im Buffer gefunden werden kann.

Jedes tSignalValue das man von GetSignalValue zurückbekommt hat einen Timestamp. In meinem Export sind die Timestamps aller Signale in einer PDU gleich. Kann man das auch annehmen, dass sie das immer sind? Wie stehen diese Timestamps im Bezug zum Mediasample Timestamp, das man dem Coder übergibt?

tSignalValue.nTimeStamp entspricht tFlexRayData.nTimeStamp, also dem Hardwarezeitstempel der PDU oder Frame.
Diese bleiben auch in der Struktur bei Übergabe an den Flexray Config Codec und können via Macros bei Bedarf bedient werden.

Nicht zu verwechseln mit den Zeitstempel des MediaSamples (ADTF Stream Time), ein Media Samples kann aus mehreren Flexray Frames/PDUs bestehen.

Beachte:
Bei allen Zeitstempeln findet ein Sync2Ref statt um mögliche Drifts zu kompensieren und verschiedene Datenquellen anhand der ADTF Stream Time zu syncen.

Actions

Also available in: Atom PDF