AUTOSAR_SWS_CANTransportLayer
FIG-3392e1f7b163f8ea
1006 × 634 px
1 Release(s)
Figure 6: Example of transmit process
SHA-256 Inhalts-Fingerabdruck:
3392e1f7b163f8eab88cd83557bb5110c84dad03be2c8b885bef148164f33f4b
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: Sequenzdiagramm / Interaktionsdiagramm (vereinfachte UML-Sequenzdarstellung mit Bus-Ereignismarkern).
- Architektur-Kontext: AUTOSAR Classic Platform (R4.0.3), Communication Stack (ComStack). Dargestellt ist das Zusammenspiel zwischen dem PDU Router (
PduR) als oberer Schicht und dem CAN Transport Layer (CanTp, ISO 15765-2) bei einer segmentierten Datentransmission (Payload-Länge = 50 Bytes > 8 Bytes CAN-Frame-Limit). Das Diagramm visualisiert das entkoppelte Pull-Verfahren zur Pufferbereitstellung viaCopyTxDatabis zum Transmit-Abschluss (TxConfirmation).
2. Komponenten, Entitäten & Schnittstellen
- Akteure / Module:
PduR(PDU Router): Vermittler und Puffer-Koordinator der oberen Schichten (z. B. COM, DCM).CanTp(CAN Transport Layer): Segmentierung, Reassemblierung und Flow-Control nach ISO 15765-2.- Untere Schicht / Bus (implizit via Ereignissymbole dargestellt):
CanIf/ CAN-Treiber / CAN-Bus.
- Schnittstellen / Service-APIs:
CanTp_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr): Initiale synchrone Sendeanforderung durch die obere Schicht (mit Gesamtlänge 50 Bytes).PduR_CanTpCopyTxData(PduIdType TxPduId, const PduInfoType* PduInfoPtr, const RetryInfoType* RetryInfoPtr, PduLengthType* AvailableDataPtr): Callback-Funktion der oberen Schicht. Dient dem bedarfsgesteuerten Kopieren von Segmentdaten in den TP-internen Puffer bzw. direkt zur Frame-Assemblierung.PduR_CanTpTxConfirmation(PduIdType TxPduId, Std_ReturnType result): Asynchrone Abschlussmeldung der Transportsitzung (E_OK/NTFRSLT_OK).
- Timer & Parameter:
N_Cs(Sender-seitiger Timeout): Zeitüberwachung zwischen der Anforderung/Bereitstellung der Daten (CopyTxData) und dem Senden des Consecutive Frames (CF) bzw. Bestätigung der Übertragung.
3. Dynamisches Verhalten & Sequenzablauf
- Phase 1 – Initialisierung der Übertragung & First Frame (FF):
PduRtriggertCanTp_Transmit(PDU-ID, Länge = 50 Byte).CanTpstellt fest, dass Segmentierung nötig ist (> 8 Bytes) und fordert unmittelbar synchron viaPduR_CanTpCopyTxDatadie Nutzdaten für das erste Segment an.CanTpassembliert und sendet das First Frame („Start sending data.“ anCanIf/Bus).
- Phase 2 – Flusskontrolle & N_Cs-Überwachung:
- Nach dem First Frame (und intern empfangenem/ausgewertetem Flow Control Frame, hier abstrahiert) startet die consecutive Übertragungsphase unter Überwachung des ISO-15765-2-Timers
N_Cs.
- Nach dem First Frame (und intern empfangenem/ausgewertetem Flow Control Frame, hier abstrahiert) startet die consecutive Übertragungsphase unter Überwachung des ISO-15765-2-Timers
- Phase 3 – Segmentierte Übertragung (Consecutive Frames – CF):
- Vor jedem Aussenden eines Folge-Frames (
CF) ruftCanTperneutPduR_CanTpCopyTxDataauf, um die nächsten Bytes inkrementell abzurufen. CanTpversendet den jeweiligen Consecutive Frame („Sending CF“).- Dieser Vorgang iteriert (symbolisiert durch die vertikalen Auslassungspunkte), bis alle 50 Bytes vollständig übermittelt wurden.
- Vor jedem Aussenden eines Folge-Frames (
- Phase 4 – Transmit-Bestätigung:
- Nach erfolgreicher Übertragung und Bestätigung des letzten CF auf dem Bus meldet
CanTpden Gesamtabschluss überPduR_CanTpTxConfirmation(id, OK)an denPduR. - Die Transport-Session wird in
CanTpfreigegeben.
- Nach erfolgreicher Übertragung und Bestätigung des letzten CF auf dem Bus meldet
4. Normative Relevanz & Entwickler-Hinweise
- Pull-Mechanismus statt Pre-Buffering: Der Entwickler der oberen Schicht (
PduR/Dcm/Com) darf nicht davon ausgehen, dass die gesamten 50 Bytes bei Aufruf vonCanTp_Transmitkopiert werden.CanTpfordert Daten häppchenweise exakt dann an, wenn der nächste Frame zur Übertragung ansteht. - API-Konformität
CopyTxData:- Der übergebene Zeiger
PduInfoPtr->SduDataPtrmuss vom oberen Layer mit genau der Anzahl Bytes befüllt werden, diePduInfoPtr->SduLengthanfordert. AvailableDataPtrmuss die verbleibende Restdatenmenge im Puffer der oberen Schicht zurückgeben.- Wenn der obere Puffer temporär leer ist (
BUFREQ_E_BUSY), mussCanTpdas Senden anhalten; läuft dabei der TimerN_Csab, brichtCanTpdie Session mit Fehler ab (PduR_CanTpTxConfirmation(id, E_NOT_OK)).
- Der übergebene Zeiger
- Timing-Restriktion (
N_Cs):PduR_CanTpCopyTxDatamuss deterministisch und mit minimaler Latenz ausgeführt werden (typischerweise im Kontext derCanTp_MainFunctionoder einesTxConfirmation-Interrupts), umN_Cs-Timeout-Verletzungen zu verhindern.
- Reentrancy & Kontext:
CanTp_Transmitist nicht reentrant für dieselbeTxPduId. Der Puffer muss bis zum Eintreffen derPduR_CanTpTxConfirmationgelockt bzw. konsistent gehalten werden.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.