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 #1

Updated by hidden almost 7 years ago

  • Project changed from Public Support to 11
  • Topic set to DeviceTB::Flexray
  • Customer set to AUDI

Hallo Johannes,

für welche Audi/VW Abteilung arbeitest du bzw. für welches Projekt?


@Flo, bitte übernehmen.

Actions #2

Updated by hidden almost 7 years ago

Hallo Flo,

bin im Projekt der I/AEV-21 mit Felix Friedmann.

Gruß,

Rick

Actions #3

Updated by hidden almost 7 years ago

  • Status changed from New to In Progress
  • Department set to AEV
Actions #4

Updated by hidden almost 7 years ago

  • Status changed from In Progress to Customer Feedback Required

Hallo Rick,

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.

Actions #5

Updated by hidden almost 7 years ago

Ok, danke. Noch eine Frage: 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?

Actions #6

Updated by hidden almost 7 years ago

Hallo Rick,

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 #7

Updated by hidden almost 7 years ago

Hallo Rick,

wenn du keine Fragen mehr hast würde ich das Ticket gerne abschließen.

Actions #8

Updated by hidden almost 7 years ago

Ja klar, kannst du machen.

Actions #9

Updated by hidden almost 7 years ago

  • Project changed from 11 to Public Support
  • Description updated (diff)
  • Status changed from Customer Feedback Required to To Be Closed
  • Private changed from Yes to No
  • Resolution set to Solved Issue

Interessant für alle, keine sensiblen Daten

Actions #10

Updated by hidden almost 7 years ago

  • Status changed from To Be Closed to Closed
Actions #11

Updated by hidden almost 7 years ago

  • Subject changed from FlexRay Coder to FlexRay Coder, Update Bit Handling and Timestamps
Actions #12

Updated by hidden almost 7 years ago

  • Subject changed from FlexRay Coder, Update Bit Handling and Timestamps to Information about FlexRay Coder, Update Bit Handling and Timestamps
Actions

Also available in: Atom PDF