Project

General

Profile

Actions

Support Request #10828

closed

Timing behaviour in ADTF Message Bus

Added by hidden about 4 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Normal
Customer:
AUDI
Department:
EF
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
No Customer Feedback
Product Issue Numbers:
Affected Products:
Platform:
Windows 10 64bit
Topic:
ADTF::MessageBus
FAQ Links:

Description

Supportanfrage

Wir haben den Usecase, dass wir ein dSpace VEOS mit ADTF koppeln müssen. VEOS sendet zu einem bestimmten Zeitpunkt Daten über den MessageBus in mehreren Streams an ADTF. Diese werden dort verarbeitet und wieder zurück geschickt. Die momentane Implementierung ist noch in ADTF 2.14.3, wir werden aber zukünftig auch auf ADTF 3 umsteigen. Den Messagebus werden wir aber erst einmal aufgrund Verfügbarkeit des Blocksets in VEOS behalten müssen.
Da der Messagebus in dem VEOS-Blockset über UDP läuft und dieses Protokoll ja keine Handshakes o.Ä. hat, stellt sich uns nun die Frage des Zeitverhaltens: Rechnet ADTF erst los, wenn die Daten wirklich konsistent sind, sprich wenn alle Streams empfangen wurden? Oder muss man da spezielle Vorkehrungen treffen?
Momentan wird noch in einem kleinen zeitlichen Abstand ein separater Trigger über den Messagebus gesendet, der die Berechnung der relevanten Filter auslöst. Aber wir sind uns nicht sicher, ob selbst dort gewährleistet ist, dass dieser Trigger aufgrund der geringen Größe nicht schon vor den anderen Streams eingelesen wird und die Berechnung zu früh startet.

Wie ist Ihre Einschätzung zu dieser Problematik? Gibt es sowohl in ADTF2 als auch ADTF3 bereits Mechanismen, die sicherstellen, dass immer mit korrekten Daten gerechnet wird, oder müssen wir uns selbst darum kümmern?

Lösung

Was sind bei Euch Streams? Letzendlich verschickt der MessageBus für jeden Datenstrom (der als Pin rausgeführt wird) eigene Nachrichten, dies allerdings sequenziell auf dem einen Channel (wenn ihr nur einen verwendet wovon ich ausgehe). Hierbei kann es nicht passieren, dass eine Nachricht eine andere "überholt". Die Source in ADTF als Empfänger weiß allerdings nichts darüber wie die verschiedenen Daten/Samples der Streams zueinander korrelieren, kann also z.b. nicht warten bis für jeden Stream eine neue Nachricht angekommen ist um sie dann weiterzuleiten (eine Stream könnte ja auch mehr Samples liefern als ein anderer).

Deshalb bleiben Euch zwei Lösungen:
  1. Ihr verschickt so wie beschrieben am Ende eine "Fertig" Nachricht/Sample. Ein Delay ist dabei aber nicht notwendig.
  2. Ihr erweitert/verändert die ADTF 3 MessageBus Channel Implementierung (als Quellen verfügbar) sodass die wartet bis auf allen "Streams" Nachrichten angekommen sind, wenn in Eurem Use Case auf jedem Stream gleich viele Samples ankommen sollen.

Related issues

Related to Public Support - Support Request #10007: Communication between dSpace VEOS and ADTF 3.xClosedActions
Actions

Also available in: Atom PDF