DEENESPTFRRUARHIKOZHNL

CAN Transport Layer (CanTp)

ModulCanTp (CAN Transport Layer)
BSW-Modul-ID35
Standard-Header#include "CanTp.h"
SWS-SpezifikationAUTOSAR_SWS_CANTransportLayer.pdf
ClusterCAN

دليل الوحدةمولَّد بالذكاء الاصطناعي

يجزئ الرسائل الطويلة إلى أطر CAN ويعيد تجميع الأجزاء المستلمة مع التحكم في التدفق.
مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: claude-opus-5-5 · الجهد: high · درجة الحرارة: غير قابل للتحكم · الموجّه: 69cea53d1819 المصدر أسئلة مفتوحة (1)
المرساة السببية: R20-11 صالح اعتبارًا من R20-11 مُركَّب حديثًا لهذا الإصدار من المواصفة.
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

يجزئ الرسائل الطويلة إلى أطر CAN ويعيد تجميع الأجزاء المستلمة مع التحكم في التدفق.

يجزئ CAN Transport Layer الرسائل التي لا تتسع في إطار CAN، ويتحكم في تدفق البيانات عبر Flow Control ويعيد تجميع الأجزاء المستلمة وفقاً للمواصفة ISO 15765-2 [SWS_CanTp_00033]. ويقع بين PduR وCanIf، ولا يمتلك مخزناً مؤقتاً خاصاً لبيانات الحمولة، وينسخ بيانات الإرسال والاستقبال جزءاً فجزءاً عبر خدمات النسخ للطبقة العليا [SWS_CanTp_00298]. وينهي كل عملية إرسال مقبولة ببلاغ إلى الطبقة العليا، بنجاح مع E_OK، أو عند انتهاء المهلة أو الإلغاء مع E_NOT_OK. كل ذلك يتطلب CanTp_Init؛ وتراقب MainFunction الدورية فترات انتهاء المهلة.

CanTp هو CAN Transport Layer. يجزئ الرسائل الطويلة إلى أطر CAN، ويتحكم في تدفق البيانات ويعيد تجميع الأجزاء المستلمة؛ ويتبع في ذلك ISO 15765-2 ما لم تنص المواصفة على خلاف ذلك [SWS_CanTp_00033]. يقع النموذج بين PduR وCanIf ولا يمتلك مخزناً مؤقتاً خاصاً لبيانات الحمولة. وينسخ البيانات جزءاً فجزءاً عبر خدمات النسخ للطبقة العليا [SWS_CanTp_00298] [SWS_CanTp_00216].

kontext Nutzer DCM / Com (TP-Nutzer) PduR PduR Nutzer->PduR TP-Dienste CanTp CanTp PduR->CanTp CanTp_Transmit CanTp_CancelTransmit / CanTp_CancelReceive CanTp_ChangeParameter / CanTp_ReadParameter CanTp->PduR PduR_CanTpStartOfReception PduR_CanTpCopyRxData / PduR_CanTpCopyTxData PduR_CanTpRxIndication / PduR_CanTpTxConfirmation CanIf CanIf CanTp->CanIf CanIf_Transmit (SF, FF, CF, FC) Det DET CanTp->Det Det_ReportError Det_ReportRuntimeError CanIf->CanTp CanTp_RxIndication CanTp_TxConfirmation BswM BswM (Modusmanagement) BswM->CanTp CanTp_Init / CanTp_Shutdown Sched Schedule Manager (zyklischer Task) Sched->CanTp CanTp_MainFunction

مخطط السياق: واجهات CanTp مع PduR وCanIf وإدارة الأنماط ومجدول المهام وDET. المصادر: [SWS_CanTp_00216]، SWS CanTp ص. 17

بعد التشغيل يكون CanTp في CANTP_OFF [SWS_CanTp_00168]. ينقل CanTp_Init مع CanTp_ConfigType [SWS_CanTp_00208] جميع الوصلات إلى حالة السكون [SWS_CanTp_00030]؛ وبعد ذلك يسري CANTP_ON [SWS_CanTp_00170]. يغلق CanTp_Shutdown جميع الوصلات دون إخطار أي جهة [SWS_CanTp_00202] [SWS_CanTp_00200]. تعمل قنوات الاتصال بشكل مستقل عن بعضها البعض بمؤقتات خاصة بها [SWS_CanTp_00122]. وإذا كانت قناة الإرسال مشغولة، يرفض CanTp الطلبات الجديدة بـ E_NOT_OK [SWS_CanTp_00123].

عند الإرسال، يقيم CanTp_Transmit الطول فقط (وMetaData إن وجدت) [SWS_CanTp_00225]. واعتماداً على الطول، يتبع ذلك SF أو جلسة مجزأة [SWS_CanTp_00232]. ولكل جزء، يجلب CanTp البيانات عبر PduR_CanTpCopyTxData [SWS_CanTp_00086] وينتظر بعد FF وكل كتلة تحت N_Bs وصول إطار التحكم في التدفق Flow Control [SWS_CanTp_00315]. تفسير: يبلغ الاستدعاء فقط عن القبول؛ بينما تكتمل عملية النقل الفعلية بشكل غير متزامن عبر PduR_CanTpTxConfirmation [SWS_CanTp_00176] [SWS_CanTp_00204]. سؤال (مفتوح)

عند الاستقبال، يطلب CanTp أولاً مخزناً مؤقتاً عبر PduR_CanTpStartOfReception [SWS_CanTp_00079]. بعد ذلك ينسخ كل CF عبر PduR_CanTpCopyRxData [SWS_CanTp_00269]. وإذا كان التخزين المؤقت شحيحاً، يستعلم CanTp عنه مجدداً في كل دورة MainFunction ويرسل WFTmax كحد أقصى من FC(WAIT) [SWS_CanTp_00222] [SWS_CanTp_00223]. وفي النهاية يأتي PduR_CanTpRxIndication [SWS_CanTp_00084]. وتراقب CanTp_MainFunction الدورية فترات انتهاء المهلة [SWS_CanTp_00164].

استقبال مُجزأ لـ N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK، حجم الذاكرة المؤقتة المتاحPduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopلكل CF من كتلة ماCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, Restpufferaltالذاكرة المؤقتة المتبقية لا تكفي للكتلة التاليةN_Br قيد التشغيلCanTp_MainFunctionPduR_CanTpCopyRxData(الطول 0، NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)بحد أقصى WFTmax من المراتPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

مخطط تسلسلي: استقبال مجزأ مع التفاوض على التخزين المؤقت والتحكم في التدفق CTS/WAIT. المصادر: [SWS_CanTp_00269]، [SWS_CanTp_00222]، SWS CanTp ص. 38

يعالج CanTp الأخطاء بثلاث طرق. يبلغ عن أخطاء التطوير إلى DET ويعيد E_NOT_OK [SWS_CanTp_00294]. أما أخطاء البروتوكول مثل فترات انتهاء المهلة فتجهض الجلسة وتذهب مع E_NOT_OK إلى PduR [SWS_CanTp_00205] [SWS_CanTp_00311]. ويسري الأمر نفسه على عمليات الإلغاء بناءً على طلب عبر خدمات الإلغاء Cancel [SWS_CanTp_00255] [SWS_CanTp_00263]. وفيما يخص المعرّفات غير الصالحة في خدمات الإلغاء، يتطلب الإصدار R20-11 CANTP_E_PARAM_ID [SWS_CanTp_00254]، بينما تذكر الإصدارات الأحدث رموزاً أخرى.

الدور في حزمة CAN: بروتوكول نقل بين PduR وCanIf

CanTp هو CAN Transport Layer. يجزئ الرسائل التي لا تتسع في إطار CAN فردي إلى أجزاء، ويتحكم في تدفق البيانات، ويعيد تجميع الأجزاء المستلمة (SWS CanTp ص. 24، SWS CanTp ص. 17). يستند ذلك إلى ISO 15765-2: تنطبق جميع توصيات هذا المعيار ما لم تستبعدها المواصفة صراحةً [SWS_CanTp_00033]. ويجري CanTp التجزئة وإعادة التجميع فقط في الحالة CANTP_ON [SWS_CanTp_00238].

في الاتجاه الأعلى، يوفر CanTp لـ PduR الخدمات التالية: CanTp_Transmit [SWS_CanTp_00212]، وCanTp_CancelTransmit [SWS_CanTp_00246]، وCanTp_CancelReceive [SWS_CanTp_00257]. وبنفسه يستدعي CanTp صعوداً PduR_CanTpStartOfReception وPduR_CanTpCopyRxData وPduR_CanTpCopyTxData وPduR_CanTpRxIndication وPduR_CanTpTxConfirmation، ونزولاً CanIf_Transmit [SWS_CanTp_00216]. وتبلغ الطبقة السفلى عن الأطر المستلمة عبر CanTp_RxIndication [SWS_CanTp_00078] وعن تأكيدات الإرسال عبر CanTp_TxConfirmation [SWS_CanTp_00076]. ويجب أن تكون كلتا الوظيفتين قابلتين للاستدعاء في سياق المقاطعة [SWS_CanTp_00235] [SWS_CanTp_00236]. وتشير مواضع أحدث في الوثائق إلى أن الجهة المستدعية هي موجه L-SDU (LSduR) (SWS CanTp ص. 27). في المقابل، تتحدث متطلبات R20-11 عن CAN Interface، مثل [SWS_CanTp_00031] و[SWS_CanTp_00335].

لا يمتلك CanTp مخزناً مؤقتاً خاصاً لبيانات الحمولة. فهو يجلب بيانات الإرسال مباشرة من الطبقة العليا [SWS_CanTp_00298]، وينسخ البيانات المستلمة مباشرة إلى ذاكرتها (SWS CanTp ص. 35). وتنتج عن ذلك فترات قفل للطبقة العليا (SWS CanTp ص. 35):

  • تبقي مخزن الإرسال المؤقت مقفلاً بمجرد عودة CanTp_Transmit بـ E_OK، حتى يصل PduR_CanTpTxConfirmation.
  • تبقي مخزن الاستقبال المؤقت مقفلاً بمجرد تقديمها BUFREQ_OK رداً على PduR_CanTpStartOfReception، حتى يصل PduR_CanTpRxIndication.
kontext Nutzer DCM / Com (TP-Nutzer) PduR PduR Nutzer->PduR TP-Dienste CanTp CanTp PduR->CanTp CanTp_Transmit CanTp_CancelTransmit / CanTp_CancelReceive CanTp_ChangeParameter / CanTp_ReadParameter CanTp->PduR PduR_CanTpStartOfReception PduR_CanTpCopyRxData / PduR_CanTpCopyTxData PduR_CanTpRxIndication / PduR_CanTpTxConfirmation CanIf CanIf CanTp->CanIf CanIf_Transmit (SF, FF, CF, FC) Det DET CanTp->Det Det_ReportError Det_ReportRuntimeError CanIf->CanTp CanTp_RxIndication CanTp_TxConfirmation BswM BswM (Modusmanagement) BswM->CanTp CanTp_Init / CanTp_Shutdown Sched Schedule Manager (zyklischer Task) Sched->CanTp CanTp_MainFunction

مخطط السياق: يقع CanTp بين PduR وCanIf. وتتم تهيئته بواسطة إدارة الأنماط، ويُشغّل دورياً بواسطة مجدول المهام، ويبلغ عن الأخطاء إلى DET. المصادر: [SWS_CanTp_00216]، [SWS_CanTp_00217]، [SWS_CanTp_00164]، SWS CanTp ص. 17، Mode Management Guide ص. 54

دورة الحياة: CANTP_OFF وCanTp_Init وقنوات اتصال مستقلة

يعرف CanTp الحالتين CANTP_OFF وCANTP_ON [SWS_CanTp_00027]. بعد التشغيل، يكون النموذج في CANTP_OFF [SWS_CanTp_00168]؛ وفقط هناك يجوز تحديث تهيئة ما بعد البناء (Post-Build). [SWS_CanTp_00169]

يتلقى CanTp_Init مؤشراً إلى CanTp_ConfigType [SWS_CanTp_00208] [SWS_CanTp_00340]. تهيئ الدالة جميع المتغيرات العامة وتضع كل وصلة في حالة السكون CANTP_RX_WAIT أو CANTP_TX_WAIT [SWS_CanTp_00030]؛ وبعد ذلك يسري CANTP_ON [SWS_CanTp_00170]. يجب على البيئة المحيطة استدعاء CanTp_Init قبل أي استخدام آخر [SWS_CanTp_00199]. وفي دليل إدارة الأنماط، تتولى ذلك قاعدة BswM بعد NvM_ReadAll (Mode Management Guide ص. 54). ويؤدي الاستدعاء مجدداً في CANTP_ON إلى تجاهل جميع الوصلات الجارية والعودة إلى حالة السكون [SWS_CanTp_00273] [SWS_CanTp_00111].

يغلق CanTp_Shutdown جميع الوصلات المفتوحة، ويحرر الموارد ويضبط CANTP_OFF [SWS_CanTp_00202]. ولا يخطر CanTp أي جهة بعمليات الإرسال الملغاة [SWS_CanTp_00200] (SWS CanTp ص. 58).

في CANTP_ON، تعمل عدة وصلات في وقت واحد [SWS_CanTp_00096]:

  • يتم تعيين كل N-SDU بشكل ثابت لقناة اتصال. وتمتلك كل قناة مؤقتات ومخازن مؤقتة وآلة حالات خاصة بها [SWS_CanTp_00121] [SWS_CanTp_00122].
  • القنوات مرئية داخلياً فقط [SWS_CanTp_00285]. ويحدد عددَها أداةُ التهيئة [SWS_CanTp_00289].
  • إذا كانت قناة الإرسال في CANTP_TX_PROCESSING، يرفض CanTp الطلبات الجديدة عبر CanTp_Transmit بـ E_NOT_OK [SWS_CanTp_00123]. ويسري الأمر نفسه على N-SDU موجودة بالفعل في جلسة جارية [SWS_CanTp_00206].
  • إذا اشتركت عدة N-SDUs في قناة واحدة ولم تكن هناك قناة حرة متاحة، يرفض CanTp الإرسال أو يجهض الاستقبال [SWS_CanTp_00288] (SWS CanTp ص. 42).
lebenszyklus cluster_on CANTP_ON cluster_rx Rx-Verbindungskanal cluster_tx Tx-Verbindungskanal PowerUp Einschalten OFF CANTP_OFF (تهيئة ما بعد البناء قابلة للتغيير) PowerUp->OFF RXW CANTP_RX_WAIT OFF->RXW CanTp_Init (erfolgreich) TXW CANTP_TX_WAIT OFF->TXW CanTp_Init (erfolgreich) RXP CANTP_RX_PROCESSING RXW->RXP SF/FF empfangen RXP->RXW لا يُتوقع أي N-PDU إضافي أو إلغاء TXP CANTP_TX_PROCESSING TXW->TXP CanTp_Transmit = E_OK TXP->OFF CanTp_Shutdown (دون إشعار) TXP->TXW انتهى الإرسال أو إلغاء

مخطط الحالات: بعد CanTp_Init، تنتقل قنوات الاستقبال والإرسال بشكل مستقل عن بعضها البعض بين WAIT وPROCESSING؛ ويعيد CanTp_Shutdown إلى CANTP_OFF. المصادر: [SWS_CanTp_00027]، [SWS_CanTp_00030]، [SWS_CanTp_00170]، [SWS_CanTp_00202]، SWS CanTp ص. 27

الإرسال: من CanTp_Transmit إلى التأكيد

يتلقى CanTp_Transmit المعلمتين TxPduId وPduInfoPtr [SWS_CanTp_00212]. وبدون MetaData، يقيّم CanTp الطول الإجمالي فقط SduLength ولا يصل إلى مخزن البيانات المؤقت [SWS_CanTp_00225] [SWS_CanTp_00299]. ومع MetaData، يحفظ بالإضافة إلى ذلك معلومات العنوان لجميع SF وFF وCF [SWS_CanTp_00334]. وإذا كانت البيانات تتسع في N-PDU واحدة، يرسل CanTp إطار SF، وإلا فإنه يفتح جلسة متعددة الأطر [SWS_CanTp_00232] (SWS CanTp ص. 60). وينتج الحد الأقصى لطول الإرسال (TX_DL) من PduLength في EcuC [SWS_CanTp_00354]. تفسير: يبلغ الاستدعاء بشكل متزامن فقط عما إذا كان قد تم قبول الطلب؛ أما عملية النقل الفعلية فتتم بشكل غير متزامن [SWS_CanTp_00176]. سؤال Q-b6d13590324e2906 (مفتوح) وبعد القبول، يبلغ CanTp عن الانتهاء في جميع الأحوال عبر PduR_CanTpTxConfirmation [SWS_CanTp_00177] [SWS_CanTp_00204].

لكل جزء (SF، FF، CF) يستدعي CanTp PduR_CanTpCopyTxData [SWS_CanTp_00086]؛ وحتى الاستدعاء الأول، يعمل المؤقت N_Cs [SWS_CanTp_00167]. وإذا قدمت الطبقة العليا BUFREQ_E_BUSY، يعيد CanTp المحاولة لاحقاً [SWS_CanTp_00184]. ويضبط CanTp معلمة إعادة المحاولة دائماً على NULL، لأن المواصفة ISO 15765-2 لا تتضمن إعادة المحاولة [SWS_CanTp_00272].

بعد FF وبعد آخر CF من كل كتلة، ينتظر CanTp تحت N_Bs وصول إطار التحكم في التدفق Flow Control Frame [SWS_CanTp_00315]. ومن خلاله، يتيح المستقبل أطر CF إضافية أو يؤخرها [SWS_CanTp_00282]. وإذا اكتملت الجلسة بنجاح، يتبع ذلك PduR_CanTpTxConfirmation مع E_OK [SWS_CanTp_00090]. ويوضح تدفق السحب (Pull) نفسه مثالُ الـ 50 بايت (SWS CanTp ص. 37) ومسار DCM إلى CanTp (SWS PduR ص. 104).

إرسال مُجزأ لـ N-SDUPduRCanTpCanIfUse Case: بدء/تحفيزCanTp_Transmit(TxPduId, PduInfoPtr)فقط SduLength (+ MetaData)E_OKN_Cs قيد التشغيلUse Case: First FramePduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(FF)CanTp_TxConfirmation(E_OK)N_Bs قيد التشغيل: انتظار FCCanTp_RxIndication(FC: CTS, BS, STmin)loopلكل CF من كتلة ما (أطر BS، الفاصل الزمني STmin)PduR_CanTpCopyTxData()BUFREQ_OKCanIf_Transmit(CF)CanTp_TxConfirmation(E_OK)انتظار FC مجددًا بعد كل كتلة (N_Bs)Use Case: AbschlussPduR_CanTpTxConfirmation(E_OK)

مخطط تسلسلي: يطلب CanTp البيانات مجزأة من PduR، وينتظر بعد FF وكل كتلة وصول إطار Flow Control، ويؤكد أخيراً بـ E_OK. المصادر: [SWS_CanTp_00212]، [SWS_CanTp_00086]، [SWS_CanTp_00315]، [SWS_CanTp_00090]، SWS CanTp ص. 73

الاستقبال: التفاوض على التخزين المؤقت، والتحكم في التدفق وإعادة التجميع

مع كل SF أو FF وارد، يبلغ CanTp عن بدء الاستقبال عبر PduR_CanTpStartOfReception [SWS_CanTp_00079]. ويعود حجم المخزن المؤقت المتاح عبر معلمة إخراج ويجوز أن يكون أصغر من N-SDU [SWS_CanTp_00080]. ومع FF، يبدأ CanTp مسبقاً المؤقت N_Br [SWS_CanTp_00166]. ولا يرسل إطار التحكم في التدفق إلا عندما تتوفر النتيجة؛ ويعتمد محتواه على هذه النتيجة [SWS_CanTp_00064] [SWS_CanTp_00277]. وتحمل جميع إطارات FC الخاصة بجلسة استقبال القيم نفسها لـ BS وSTmin [SWS_CanTp_00067]. ويتبع FC بعد كل BS من الأطر المتتالية Consecutive Frames [SWS_CanTp_00278].

بعد كل CF، يسلم CanTp بيانات الحمولة عبر PduR_CanTpCopyRxData ويعرف أثناء ذلك المخزن المؤقت المتبقي [SWS_CanTp_00269]. وفي CAN 2.0، يبلغ ذلك ستة أو سبعة بايتات لكل CF. وإذا لم يكن المخزن المؤقت المتبقي بعد آخر CF من كتلة ما كافياً للكتلة التالية، يبدأ CanTp المؤقت N_Br [SWS_CanTp_00325] [SWS_CanTp_00082]. وطالما أن هذا المؤقت يعمل:

  • يستعلم CanTp عن التخزين المؤقت في كل دورة لـ MainFunction، وذلك بطول 0 وNULL_PTR [SWS_CanTp_00222]؛
  • يرسل CanTp بحد أقصى WFTmax من إطارات FC(WAIT) المتتالية [SWS_CanTp_00223] (SWS CanTp ص. 38).

إذا انتهت الجلسة، بنجاح أو بدونه، يستدعي CanTp PduR_CanTpRxIndication [SWS_CanTp_00084]. ومع الحشو وبدونه، يمرر CanTp بايتات البيانات المستخدمة فعلياً فقط إلى الطبقة العليا [SWS_CanTp_00116].

استقبال مُجزأ لـ N-SDUCanIfCanTpPduRUse Case: First FrameCanTp_RxIndication(FF)N_Br gestartetPduR_CanTpStartOfReception(TpSduLength)BUFREQ_OK، حجم الذاكرة المؤقتة المتاحPduR_CanTpCopyRxData(FF-Daten)CanIf_Transmit(FC: CTS, BS, STmin)loopلكل CF من كتلة ماCanTp_RxIndication(CF)PduR_CanTpCopyRxData(6/7 Byte)BUFREQ_OK, Restpufferaltالذاكرة المؤقتة المتبقية لا تكفي للكتلة التاليةN_Br قيد التشغيلCanTp_MainFunctionPduR_CanTpCopyRxData(الطول 0، NULL_PTR)BUFREQ_OK, RestpufferCanIf_Transmit(FC: WAIT)بحد أقصى WFTmax من المراتPuffer ausreichendCanIf_Transmit(FC: CTS)Use Case: Letzter Consecutive FrameCanTp_RxIndication(letzter CF)PduR_CanTpCopyRxData()PduR_CanTpRxIndication(E_OK)

مخطط تسلسلي: استقبال مجزأ مع التفاوض على التخزين المؤقت، والتحكم في التدفق كتلياً ومرحلة انتظار عند شح التخزين المؤقت. المصادر: [SWS_CanTp_00079]، [SWS_CanTp_00269]، [SWS_CanTp_00222]، [SWS_CanTp_00084]، SWS CanTp ص. 76

rxstart Ein CanTp_RxIndication: تم استقبال SF أو FF Kanal Kanal in CANTP_RX_PROCESSING? Ein->Kanal Art مع MetaData أو N_AI آخر؟ Kanal->Art نعم Sor PduR_CanTpStartOfReception() Kanal->Sor لا Ign Frame ignorieren Art->Ign نعم Neu laufenden Empfang abbrechen, Frame als neuen Empfang behandeln Art->Neu nein (gleiche N_AI) Neu->Sor Erg قيمة الإرجاع؟ Sor->Erg NotOk إلغاء الاستقبال: لا يوجد FC، ولا توجد PduR_CanTpRxIndication Erg->NotOk BUFREQ_E_NOT_OK Ovfl FF: FC(OVFLW) senden, abbrechen SF: abbrechen Erg->Ovfl BUFREQ_E_OVFL Typ Frame-Typ? Erg->Typ BUFREQ_OK Sf SF: Daten kopieren, PduR_CanTpRxIndication Typ->Sf SF Puf FF: هل تكفي الذاكرة المؤقتة للكتلة التالية؟ Typ->Puf FF Cts FC(CTS) senden Puf->Cts نعم Br N_Br starten, Puffer in MainFunction abfragen Puf->Br لا

مخطط النشاط: هكذا يقرر CanTp عند ورود SF أو FF بناءً على حالة القناة ونتيجة PduR_CanTpStartOfReception. المصادر: [SWS_CanTp_00124]، [SWS_CanTp_00337]، [SWS_CanTp_00081]، [SWS_CanTp_00318]، [SWS_CanTp_00353]، SWS CanTp ص. 67

العنونة، وMetaData والحشو

تسمح العنونة الوظيفية (1:n) لـ SF فقط [SWS_CanTp_00092]. ويرفض CanTp أي جلسة مجزأة عبر مقبض وظيفي ويبلغ عن CANTP_E_INVALID_TATYPE [SWS_CanTp_00093] (SWS CanTp ص. 39). وفي العنونة الممتدة (Extended) أو المختلطة (Mixed)، يحدد CanTp الـ N-SDU من N_TA أو N_AE في بايت البيانات الأول [SWS_CanTp_00095] [SWS_CanTp_00284] [SWS_CanTp_00283]. وفيما يخص تعيين المعرفات، ينطبق ما يلي (SWS CanTp ص. 44):

  • يتم تعيين كل NSduId لـ LSduId واحدة تحديداً [SWS_CanTp_00035].
  • يحدد LSduId الخاص بـ FC مع N_TA أو N_AE معاً NSduId واحدة تحديداً [SWS_CanTp_00094].
  • لا يجوز لعدة N-SDUs الإشارة إلى نفس N-PDU إلا مع العنونة Extended/Mixed أو مع MetaData [SWS_CanTp_00328].

تعمل الوصلات العامة مع MetaData. يحفظ CanTp معلومات العنوان من SF أو FF [SWS_CanTp_00330]، ويمررها إلى PduR_CanTpStartOfReception [SWS_CanTp_00331] ويتحقق من أطر CF التالية مقارنة بها [SWS_CanTp_00333]. وإذا كانت القناة تستقبل بالفعل، يتجاهل CanTp أي SF أو FF إضافي يحتوي على MetaData [SWS_CanTp_00337].

يتم تفعيل الحشو (Padding) لكل N-SDU (SWS CanTp ص. 43). وقيمة الحشو هي CANTP_PADDING_BYTE [SWS_CanTp_00059]. وبالنسبة للأطر التي لا تتجاوز حمولتها 8 بايتات، ينطبق ما يلي:

  • مع Rx-Padding، يقبل CanTp كلاً من SF وآخر CF بـ 8 بايتات فقط [SWS_CanTp_00344] ويرسل إطارات FC بـ 8 بايتات [SWS_CanTp_00347].
  • مع Tx-Padding، يملأ CanTp كلاً من SF وآخر CF حتى 8 بايتات [SWS_CanTp_00348].

إذا لم يتطابق طول الإرسال مع أي DLC صالح، يملأ CanTp حتى القيمة الصالحة الأعلى التالية [SWS_CanTp_00351]. ويشتق CanTp طول الاستقبال RX_DL من أول CAN_DL مستلمة [SWS_CanTp_00350].

مراقبة الوقت، ومعلمات وقت التشغيل والإلغاء بناءً على طلب

يتم استدعاء CanTp_MainFunction [SWS_CanTp_00213] دورياً. وتراقب N_As وN_Bs وN_Cs وN_Ar وN_Br وN_Cr بالإضافة إلى STmin [SWS_CanTp_00164] (SWS CanTp ص. 63). ويعتمد نبضها على CanTpMainFunctionPeriod [SWS_CanTp_00300]. ويجب أن تتطابق هذه القيمة مع زمن دورة المهمة المستدعية (SWS CanTp ص. 77). وكمثال على ذلك، يذكر تحليل التوقيت مهمة مدتها 5 مللي ثانية (TR Timing Analysis ص. 117).

تصل خدمتان في وقت التشغيل إلى معلمتي الاستقبال BS وSTmin لـ N-SDU: يقوم CanTp_ChangeParameter بتعديلهما [SWS_CanTp_00302]، ويقرؤهما CanTp_ReadParameter [SWS_CanTp_00323]. وكلاهما متاح فقط عندما يكون CanTpChangeParameterApi = TRUE (SWS CanTp ص. 61). تعد BS مجرد قيمة قصوى يجوز لـ CanTp عدم بلوغها لأسباب تتعلق بالتخزين المؤقت [SWS_CanTp_00091]. بين FF وآخر CF من جلسة استقبال جارية، يرفض CanTp أي تعديل بـ E_NOT_OK [SWS_CanTp_00303] [SWS_CanTp_00304]. وفي الوصلات العامة يسري التعديل على الجميع [SWS_CanTp_00338].

يمكن إلغاء عمليات الإرسال الجارية بناءً على طلب:

التصرف في حالة الخطأ

أخطاء التطوير. إذا كان الاكتشاف نشطاً، يبلغ CanTp عن الخطأ إلى DET ويعيد E_NOT_OK [SWS_CanTp_00294] [SWS_CanTp_00217] (SWS CanTp ص. 49). يحدد [SWS_CanTp_00293] الرموز. الحالات النموذجية:

اختلاف بين الإصدارات: بالنسبة لمعرف PduId غير صالح في خدمات الإلغاء، يتطلب R20-11 CANTP_E_PARAM_ID [SWS_CanTp_00254] [SWS_CanTp_00260]. وتذكر مواضع أحدث في المستندات CANTP_E_INVALID_TX_ID أو CANTP_E_INVALID_RX_ID بدلًا من ذلك (SWS CanTp ص. 59). بالنسبة إلى R20-11، يسري المتطلب.

أخطاء وقت التشغيل. يتم إرسالها إلى Default Error Tracer [SWS_CanTp_00352]:

  • CANTP_E_PADDING: الإطار قصير للغاية على الرغم من الحشو [SWS_CanTp_00345] [SWS_CanTp_00346] [SWS_CanTp_00349].
  • CANTP_E_OPER_NOT_SUPPORTED: يؤثر الإلغاء على وحدة N-SDU بدون نقل جارٍ [SWS_CanTp_00254].
  • بالنسبة لأخطاء البروتوكول، يذكر موضع المستند بالإضافة إلى ذلك CANTP_E_COM وCANTP_E_RX_COM وCANTP_E_TX_COM (SWS CanTp ص. 52).

أخطاء البروتوكول. تنهي الجلسة بإرسال E_NOT_OK إلى الطبقة العليا [SWS_CanTp_00205]:

يقوم PduR بتمرير التأكيد السلبي إلى المستخدم، على سبيل المثال إلى DCM، الذي يتولى بعد ذلك عملية الاستعادة (Error Description ص. 29، Error Description ص. 28). ويتولى DEM معالجة أخطاء الإنتاج عبر FiM [SWS_CanTp_00291].

abbruch cluster_tx Sendeseite cluster_rx Empfangsseite t1 PduR_CanTpCopyTxData = BUFREQ_E_NOT_OK TA Sendesitzung abbrechen t1->TA t2 N_Cs abgelaufen t2->TA t3 N_As abgelaufen t3->TA t4 N_Bs abgelaufen t4->TA t5 FC مع OVFLW أو FS غير صالح t5->TA t6 FC أقصر من 8 بايت عند إضافة حشو Tx t6->TA t7 CanIf_Transmit(SF/FF/CF) = E_NOT_OK t7->TA t8 CanTp_TxConfirmation(E_NOT_OK) t8->TA t9 CanTp_CancelTransmit = E_OK t9->TA r1 N_Ar abgelaufen RA Empfangssitzung abbrechen r1->RA r2 N_Cr abgelaufen r2->RA r3 PduR_CanTpCopyRxData = BUFREQ_E_NOT_OK r3->RA r4 WFTmax FC(WAIT) erreicht r4->RA r5 آخر CF قصير للغاية عند إضافة حشو Rx r5->RA r6 CanIf_Transmit(FC) = E_NOT_OK r6->RA r7 CanTp_CancelReceive = E_OK r7->RA TC PduR_CanTpTxConfirmation(E_NOT_OK) TA->TC RC PduR_CanTpRxIndication(E_NOT_OK) RA->RC

مخطط النشاط: تنتهي جميع أسباب الإلغاء لكل اتجاه بإشعار سلبي إلى PduR. المصادر: [SWS_CanTp_00205]، [SWS_CanTp_00343]، [SWS_CanTp_00355]، [SWS_CanTp_00342]، [SWS_CanTp_00223]، [SWS_CanTp_00084]، Error Description ص. 28

أدلة تفصيلية إضافية

دليل تم إنشاؤه بواسطة الذكاء الاصطناعي استنادًا إلى مقتطفات مواصفات CanTp (R20-11). المتطلبات المرتبطة وحدها هي الملزمة؛ وتُستخدم مواضع المستندات من الإصدارات الأخرى لأغراض التوضيح فقط.

CAN Transport Layer (CanTp)

Provides segmentation and reassembly of CAN messages up to 4095 bytes (ISO 15765-2).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

دالة CanTp_Init [SWS_CanTp_00208] 📄 PDF

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

This function initializes the Can Tp module.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 62b706f68200 المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

تقوم الدالة المتزامنة وغير القابلة لإعادة الدخول (non-reentrant) CanTp_Init بتهيئة الوحدة CanTp‏ [SWS_CanTp_00208]. وتستقبل عبر المعامل CfgPtr مؤشراً إلى بيانات توصيف ما بعد البناء (CanTp_ConfigType) وليس لها قيمة إرجاع [SWS_CanTp_00208]. يجب على بيئة الوحدة استدعاء CanTp_Init بشكل إلزامي قبل أن يمكن استخدام الوحدة لعمليات معالجة أخرى [SWS_CanTp_00199].

أثناء التهيئة، تتم تهيئة جميع المتغيرات العامة للوحدة وتعيين جميع اتصالات بروتوكول النقل إلى حالة فرعية لـ CANTP_ON، والتي لا يكون فيها إرسال مقسم ولا استقبال مقسم نشطاً [SWS_CanTp_00030]. وتكون مسارات الاستقبال عندئذٍ في الحالة CANTP_RX_WAIT ومسارات الإرسال في الحالة CANTP_TX_WAIT [SWS_CanTp_00030]. بعد التنفيذ الناجح، تنتقل الوحدة إلى الحالة الداخلية CANTP_ON [SWS_CanTp_00170].

إذا تم استدعاء CanTp_Init عندما تكون الوحدة بالفعل في الحالة العامة CANTP_ON، فإن الدالة تعيد تعيين الوحدة إلى الحالة Idle، بحيث لا تكون عمليات إرسال أو استقبال قيد التشغيل [SWS_CanTp_00111].

إذا كان اكتشاف أخطاء التطوير (Development Error Detection) مفعلاً، فإن الوحدة CanTp تبلغ عن الخطأ CANTP_E_UNINIT إذا حاولت PDU Router أو واجهة CAN تنفيذ دوال الوحدة (باستثناء CanTp_GetVersionInfo) قبل استدعاء CanTp_Init [SWS_CanTp_00031].

أُنشئ هذا النص بواسطة ذكاء اصطناعي استنادًا إلى المواصفة.

دليل المنفِّذ قيد الإعداد (التعقيد I2)

دالة CanTp_Shutdown [SWS_CanTp_00211] 📄 PDF

void CanTp_Shutdown (void);

This function is called to shutdown the Can Tp module.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: e5430e2cac5b المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

الاستخدام وسياق الاستدعاء

تُستخدم الدالة CanTp_Shutdown لإيقاف تشغيل وحدة CanTp بالكامل بصورة منظمة ([SWS_CanTp_00211]). يتم توفير الواجهة عبر ملف الترويسة CanTp.h وتحمل معرّف الخدمة 0x02 ([SWS_CanTp_00211]). تتم معالجة الاستدعاء بشكل متزامن، ولا يقبل أي معلمات تمرير ولا يُرجع أي قيمة إرجاع ([SWS_CanTp_00211]).

انتقال الحالة وعملية التنظيف

عند التنفيذ، تغلق CanTp_Shutdown جميع اتصالات بروتوكول النقل التي لا تزال معلقة، وتحرر كافة الموارد المخصصة، وتنقل وحدة CanTp إلى الحالة CANTP_OFF ([SWS_CanTp_00202]). أحد الجوانب الأساسية لسلوك الإلغاء هو أنه يجب صراحةً عدم إطلاق أي إخطار للطبقات العليا لعمليات إرسال الإطارات أو استقبال الإطارات التي لا تزال معلقة ([SWS_CanTp_00200]).

التزامن والشروط الحدية

تم تحديد الدالة على أنها غير قابلة لإعادة الدخول (Non Reentrant) ([SWS_CanTp_00211]). وبالتالي، لا يجوز استدعاؤها في الوقت نفسه من سياقات تنفيذ أو روتينات مقاطعة مختلفة. ولا تظهر في نطاق خدمات الواجهة أي رموز أخطاء محددة أو إخطارات موجهة إلى إدارة الأخطاء.

تم إنشاء ملاحظة الاستخدام هذه تلقائيًا استنادًا إلى مواصفة AUTOSAR Classic الإصدار R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد I1)

دالة CanTp_Transmit [SWS_CanTp_00212] 📄 PDF

Std_ReturnType CanTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

Requests transmission of a PDU.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 7a5280a26edd المصدر أسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

الاستخدام

تُستخدم الدالة CanTp_Transmit لطلب إرسال N-SDU عبر طبقة نقل CAN [SWS_CanTp_00212]. ويتم تمرير معرّف PDU المراد إرسالها (TxPduId) بالإضافة إلى مؤشر إلى البيانات والطول والبيانات الوصفية (PduInfoPtr) كمعاملات [SWS_CanTp_00212]. ويُبلغ الاستدعاء بالقبول الناجح عبر E_OK أو برفض الطلب عبر E_NOT_OK [SWS_CanTp_00212]. وبينما يتم تأكيد الاستدعاء بشكل متزامن، فإن تنفيذ الإرسال يكون غير متزامن [SWS_CanTp_00176] (تفسير: من المرجح أن عبارة «Synchronous» في جدول المواصفة تشير إلى استلام الطلب). سؤال Q-df438ddaa4963aba (مفتوح)

التفاعل ومعالجة PDU

في حالة وحدات N-SDU ذات البيانات الوصفية، تقوم الوحدة النمطية بحفظ معلومات العنوان (بناءً على تنسيق العنونة مثل Normal أو Extended أو Mixed 11 bit أو Normal fixed أو Mixed 29 bit) لاستخدامها مع وحدات SF- وFF- وCF-N-PDU وكذلك لتحديد وحدات FC-N-PDU [SWS_CanTp_00334]. وإذا لم يتم استخدام أي بيانات وصفية، فإن CanTp_Transmit للتحضير لـ SF- أو FF-PCI يصل فقط إلى بيان الطول SduLength ولا يستخدم مخزن بيانات N-SDU المؤقت [SWS_CanTp_00225].

معالجة الأخطاء والتزامن

  • فحص الأخطاء: إذا تم تفعيل DET وكان PduInfoPtr مؤشر NULL، فإن الدالة تبلغ عن الخطأ CANTP_E_PARAM_POINTER وتعود دون اتخاذ أي إجراء آخر [SWS_CanTp_00321].
  • انشغال القناة: إذا كانت القناة المخصصة في الحالة CANTP_TX_PROCESSING أو كانت هناك جلسة قيد التشغيل بالفعل لمعرّف N-SDU، فسيتم رفض طلب الإرسال وإرجاع E_NOT_OK [SWS_CanTp_00123]، [SWS_CanTp_00206].
  • إعادة الدخول: الخدمة قابلة لإعادة الدخول (reentrant) لمعرّفات PDU المختلفة، ولكنها ليست قابلة لإعادة الدخول لنفس معرّف PDU [SWS_CanTp_00212].

تم توليد هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR Classic R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد I2)

دالة CanTp_CancelTransmit [SWS_CanTp_00246] 📄 PDF

Std_ReturnType CanTp_CancelTransmit (PduIdType TxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: f7624766b8a1 المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

تطلب الدالة المتزامنة CanTp_CancelTransmit إلغاء إرسال PDU قيد التشغيل في وحدة اتصال تابعة [SWS_CanTp_00246] وبذلك تبدأ عملية إلغاء عملية الإرسال [SWS_CanTp_00274]. يتم تمرير مُعرِّف PDU المعنية (TxPduId) كمعامل [SWS_CanTp_00246]. كقيمة إرجاع، يشير E_OK إلى التنفيذ الناجح للإلغاء بواسطة الوحدة الهدف، في حين يشير E_NOT_OK إلى الرفض [SWS_CanTp_00246].

بعد استدعاء الدالة، يتم إلغاء الإرسال على الاتصال المعني [SWS_CanTp_00243]. وإذا تم تنفيذ الإلغاء بنجاح، فإن الوحدة CanTp تستدعي إلزامياً التأكيد PduR_CanTpTxConfirmation بالنتيجة السلبية E_NOT_OK لإبلاغ الطبقات العليا بالإلغاء [SWS_CanTp_00255].

عند تفعيل ميزة اكتشاف أخطاء التطوير (Development Error Detection)، يتحقق CanTp_CancelTransmit من صلاحية TxPduId: وفي حال وجود معلَمة غير صالحة، يتم إنشاء خطأ التطوير CANTP_E_PARAM_ID وإرجاع E_NOT_OK [SWS_CanTp_00254]. وإذا طُلب الإلغاء لوحدة N-SDU ليست قيد عملية النقل حاليًا، يُبلّغ الموديول عن خطأ وقت التشغيل CANTP_E_OPER_NOT_SUPPORTED إلى Default Error Tracer (DET) ويُرجع أيضًا E_NOT_OK [SWS_CanTp_00254].

فيما يتعلق بالتزامن، فإن الدالة قابلة لإعادة الدخول (reentrant) لمعرّفات PDU مختلفة، ولكن لا يجوز استدعاؤها بالتزامن لـ TxPduId نفسها [SWS_CanTp_00246].

تم إنشاء إشعار الاستخدام هذا تلقائيًا بناءً على مواصفة AUTOSAR.

دليل المنفِّذ قيد الإعداد (التعقيد I2)

دالة CanTp_CancelReceive [SWS_CanTp_00257] 📄 PDF

Std_ReturnType CanTp_CancelReceive (PduIdType RxPduId);

Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: ccccdf72ba41 المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

تُلغي الدالة CanTp_CancelReceive بشكل متزامن الاستقبال الجاري لوحدة PDU في موديول بروتوكول نقل تابع [SWS_CanTp_00257]. وهي متوفرة عبر ملف الرأس CanTp.h ولها معرّف الخدمة 0x4c [SWS_CanTp_00257].

الاستخدام وشروط الاستدعاء

يتم تمرير معرّف PDU المراد إلغاؤها عبر معلَمة الإدخال RxPduId [SWS_CanTp_00257]. وتتم معالجة الاستدعاء بشكل متزامن وهو محدد بأنه غير قابل لإعادة الدخول (Non Reentrant) [SWS_CanTp_00257]. وتُرجع الواجهة من النوع Std_ReturnType كقيمة إرجاع:

  • E_OK: نَفّذ الموديول الهدف الإلغاء بنجاح [SWS_CanTp_00257].
  • E_NOT_OK: رَفَض الموديول الهدف الإلغاء [SWS_CanTp_00257].

معالجة الأخطاء

عند تفعيل ميزة اكتشاف أخطاء التطوير (Development Error Detection)، تتحقق الدالة من صحة المعلَمة RxPduId [SWS_CanTp_00260]:

  • إذا كانت قيمة RxPduId غير صالحة، يُبلّغ CanTp_CancelReceive عن خطأ التطوير CANTP_E_PARAM_ID ويُرجع E_NOT_OK [SWS_CanTp_00260].
  • إذا طُلب الإلغاء لوحدة N-SDU ليست حاليًا في عملية استقبال جارية، يُبلّغ الموديول عن خطأ وقت التشغيل CANTP_E_OPER_NOT_SUPPORTED إلى Default Error Tracer ويُرجع E_NOT_OK [SWS_CanTp_00260].

التفاعل مع الموديولات المجاورة

إذا تم تنفيذ إلغاء الاستقبال بنجاح، يستدعي CanTp دالة الرد (callback) PduR_CanTpRxIndication بنتيجة الإشعار E_NOT_OK لإبلاغ الطبقة الأعلى بالإلغاء [SWS_CanTp_00263].

يستند إشعار الاستخدام هذا إلى مواصفة AUTOSAR Classic R20-11 وقد تم توليده تلقائيًا.

دليل المنفِّذ قيد الإعداد (التعقيد I1)

دالة CanTp_ChangeParameter [SWS_CanTp_00302] 📄 PDF

Std_ReturnType CanTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);

Request to change a specific transport protocol parameter (e.g. block size).

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 2d391dbc31e8 المصدر
مترجم من الدليل الألمانيمُولَّد بالذكاء الاصطناعيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

تُستخدم الدالة المتزامنة CanTp_ChangeParameter لتغيير معلَمة محددة لبروتوكول النقل في وقت التشغيل، مثل حجم الكتلة ([SWS_CanTp_00302]). وتقوم الخدمة، المتوفرة عبر ملف الرأس CanTp.h، بأخذ معرّف PDU (id) ومعرّف المعلَمة (parameter) بالإضافة إلى القيمة الجديدة المراد تعيينها (value) ([SWS_CanTp_00302]). عند التنفيذ بنجاح، تُرجع الدالة E_OK؛ وإذا فشل التغيير أو رُفض، فإنها تُرجع E_NOT_OK ([SWS_CanTp_00302]).

تنطبق المتطلبات التالية فيما يتعلق بالتزامن وشروط الاستدعاء:

  • الواجهة مصممة لتكون غير قابلة لإعادة الدخول (Non Reentrant) ([SWS_CanTp_00302]).
  • إذا كانت وحدة N-SDU المعنية في عملية استقبال جارية بالفعل وقت الاستدعاء، فإن CanTp_ChangeParameter تُلغى فورًا، وتُرجع E_NOT_OK ولا تُغيّر قيمة المعلَمة ([SWS_CanTp_00304]).

يوجد تفاعل خاص في حالة الاتصالات العامة (generic connections): إذا تم استدعاء الدالة لوحدة N-SDU مع MetaData، يتم تطبيق تغيير المعلَمة على جميع الاتصالات العامة واعتماده لكافة عمليات الاستقبال اللاحقة ([SWS_CanTp_00338]).

تم إنشاء ملاحظة الاستخدام هذه بصورة آلية استناداً إلى متطلبات المواصفات.

دليل المنفِّذ قيد الإعداد (التعقيد I1)

دالة CanTp_ReadParameter [SWS_CanTp_00323] 📄 PDF

Std_ReturnType CanTp_ReadParameter (PduIdType id, TPParameterType parameter, uint16* value);

This service is used to read the current value of reception parameters BS and STmin for a specified N - SDU.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 949f6cb3df18 المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

الاستخدام

تُستخدم الدالة المتزامنة CanTp_ReadParameter لقراءة القيمة الحالية لمعلَمات الاستقبال BS (Block Size) أو STmin (Separation Time minimum) لوحدة N-SDU استقبال محددة [SWS_CanTp_00323]. ويكون التصريح متوفرًا عبر ملف الرأس CanTp.h [SWS_CanTp_00323].

تحتوي الواجهة على المعلمات التالية:

  • id (in): معرّف وحدة N-SDU المستلَمة (من النوع PduIdType) التي تُقرأ معلَمة الاستقبال الخاصة بها [SWS_CanTp_00323].
  • parameter (in): يحدد المعلَمة المراد قراءتها (BS أو STmin من النوع TPParameterType) [SWS_CanTp_00323].
  • value (out): مؤشر إلى uint16 يتم من خلاله توفير قيمة المعلَمة المقروءة [SWS_CanTp_00323].

تُرجع الدالة Std_ReturnType كقيمة إرجاع؛ حيث تشير E_OK إلى قبول الطلب وE_NOT_OK إلى الرفض [SWS_CanTp_00323].

معالجة الأخطاء

إذا كانت ميزة اكتشاف أخطاء التطوير (Development Error Detection) مفعلة، فإن CanTp_ReadParameter يتحقق من صلاحية المعلَمتين id وparameter [SWS_CanTp_00324]. وإذا كانت إحدى هاتين المعلَمتين غير صالحة، تُبلّغ الدالة عن خطأ التطوير CANTP_E_PARAM_ID وتُرجع E_NOT_OK [SWS_CanTp_00324].

التزامن والقيود

تم تحديد الدالة على أنها غير قابلة لإعادة الدخول (Non Reentrant) [SWS_CanTp_00323]. ويجب على جهات الاستدعاء تجنب عمليات الوصول المتوازية إلى الواجهة نفسها.

تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على وثائق مواصفات AUTOSAR R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد I1)

دالة CanTp_MainFunction [SWS_CanTp_00213] 📄 PDF

void CanTp_MainFunction (void);

The main function for scheduling the CAN TP.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 64a7b42182e1 المصدر أسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

تُستخدم الدالة CanTp_MainFunction كنقطة دخول مركزية للجدولة الدورية لبروتوكول نقل CAN (CAN TP) [SWS_CanTp_00213]، [SWS_CanTp_00164]. وهي تمتلك معرّف الخدمة 0x06، ولديها البنية void CanTp_MainFunction(void) وتكون متاحة عبر ملف الرأس SchM_CanTp.h [SWS_CanTp_00213]. وهي لا تستقبل أي معاملات ولا تقدم قيمة إرجاع [SWS_CanTp_00213].

سياق الاستدعاء والتحكم الزمني

وفقًا لمدة الدورة المطلوبة، يتم بدء الاستدعاء إما بواسطة Schedule Manager أو بواسطة الوحدة النمطية Free Running Timer [SWS_CanTp_00164]. وداخل الوحدة النمطية، تتولى CanTp_MainFunction المراقبة الزمنية والتحكم في إجراءات البروتوكول [SWS_CanTp_00164]. وتحديدًا تشارك الدالة في معالجة المؤقتات والشروط الزمنية التالية:

  • مهل البروتوكول للإرسال والتأكيد: N_As وN_Bs وN_Cs بالإضافة إلى N_Ar وN_Br وN_Cr [SWS_CanTp_00164].
  • الالتزام بالحد الأدنى لوقت فصل الأطر STMmin [SWS_CanTp_00164].

معالجة الأخطاء والتزامن

لم يتم تعريف رموز أخطاء محددة لـ DET أو DEM لهذه الدالة في حمولة البيانات. تفسير: كدالة جدولة يتم استدعاؤها دوريًا، من المرجح ألا تكون CanTp_MainFunction قابلة لإعادة الدخول (nicht-reentrant) وتتطلب معدل استدعاء متسق لضمان التناقص الصحيح للمؤقتات الداخلية. سؤال Q-2fe22e31085abf49 (مفتوح)

تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد I1)

دالة CanTp_RxIndication [SWS_CanTp_00214] 📄 PDF

void CanTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

Indication of a received PDU from a lower layer communication interface module.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 38e732456055 المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

الاستخدام والدلالات

تبلغ الدالة المتزامنة [SWS_CanTp_00214] وحدة نقل CAN باستلام N-PDU بواسطة وحدة واجهة اتصال تابعة. يمرر الاستدعاء معرّف PDU المستلمة (RxPduId) بالإضافة إلى الطول (SduLength)، والبيانات المفيدة (SduDataPtr)، والبيانات الوصفية المقترنة عبر المؤشر PduInfoPtr. الدالة ليس لها قيمة إرجاع.

التزامن وسياق الاستدعاء

الدالة قابلة لإعادة الدخول لمعرّفات PDU المختلفة، ولكنها غير قابلة لإعادة الدخول لنفس معرّف PDU [SWS_CanTp_00214]. يجوز استدعاء CanTp_RxIndication في سياق المقاطعة، على سبيل المثال مباشرةً من مقاطعة استلام CAN [SWS_CanTp_00235].

التفاعل في الاتصالات العامة

عند الاستدعاء للإطارات المفردة (SF) أو الإطارات الأولى (FF) التي تحتوي على بيانات وصفية، تحفظ CanTp معلومات العنوان المضمنة (مثل N_SA وN_TA في العنونة العادية الثابتة أو عنونة 29 بت المختلطة). تُستخدم هذه المعلومات لإنشاء الاتصال بالطبقة العليا، وإرسال إطارات التحكم في التدفق (FC)، والتعرف على الإطارات المتتالية (CF) [SWS_CanTp_00330]. في إطارات CF اللاحقة وإطارات FC المستلمة، تتحقق CanTp من بيانات العنوان للبيانات الوصفية بمطابقتها مع القيم المحفوظة [SWS_CanTp_00333]، [SWS_CanTp_00336].

معالجة الأخطاء والحشو (Padding)

إذا كان DET مفعلًا وكان PduInfoPtr مؤشرًا فارغًا NULL، فإن الدالة تبلغ عن الخطأ CANTP_E_PARAM_POINTER وتعود دون اتخاذ أي إجراء [SWS_CanTp_00322]. وإذا كان التحقق من الحشو مفعلًا للإطارات ذات الحمولة الصافية التي تصل إلى 8 بايت (CanTpRxPaddingActivation أو CanTpTxPaddingActivation تساوي CANTP_ON)، فسيتم إبلاغ DET بخطأ وقت التشغيل CANTP_E_PADDING في حالة وجود أخطاء في الطول:

  • يتم رفض SF ذي SduLength < 8 [SWS_CanTp_00345].
  • يؤدي آخر CF ذو SduLength != 8 إلى إلغاء الاستقبال الجاري عبر PduR_CanTpRxIndication() مع E_NOT_OK [SWS_CanTp_00346].
  • يؤدي FC المستلم ذو SduLength < 8 إلى إلغاء الإرسال الجاري عبر PduR_CanTpTxConfirmation() مع E_NOT_OK [SWS_CanTp_00349].

تم إنشاء هذا النص بواسطة ذكاء اصطناعي وهو مخصص كدليل إرشادي. والمستند المرجعي الملزم هو مواصفة AUTOSAR.

دليل المنفِّذ قيد الإعداد (التعقيد I2)

دالة CanTp_TxConfirmation [SWS_CanTp_00215] 📄 PDF

void CanTp_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 2541d17fed91 المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

توفر وحدة CanTp دالة رد النداء المتزامنة CanTp_TxConfirmation (معرّف الخدمة 0x40) عبر الترويسة CanTp.h، لتلقي استدعاءات التأكيد لوحدات PDU المرسلة [SWS_CanTp_00076] [SWS_CanTp_00215]. ومن خلال هذه الواجهة، تبلغ وحدة واجهة الاتصال التابعة عن نجاح الإرسال أو فشل إرسال PDU [SWS_CanTp_00215].

المعلمات وقيم الإرجاع

الدالة لا تُرجع أي قيمة (void) وتتوقع معلمتي إدخال [SWS_CanTp_00215]:

  • TxPduId: معرّف PDU المنقولة [SWS_CanTp_00215].
  • result: حالة الإرسال. تؤكد القيمة E_OK نجاح الإرسال، بينما تشير E_NOT_OK إلى فشل إرسال PDU [SWS_CanTp_00215].

معالجة الأخطاء

إذا تم استدعاء CanTp_TxConfirmation مع قيمة النتيجة E_NOT_OK، فإن وحدة CanTp تلغي جلسة الإرسال المقترنة [SWS_CanTp_00355].

التزامن وسياق التنفيذ

فيما يتعلق بالتزامن، فإن الدالة قابلة لإعادة الدخول لمعرّفات PDU المختلفة، ولكنها غير قابلة لإعادة الدخول لنفس معرّف PDU [SWS_CanTp_00215]. ويجب أن تكون قابلة للاستدعاء في سياق المقاطعة، ويجوز استدعاؤها على سبيل المثال مباشرةً من مقاطعة إرسال CAN [SWS_CanTp_00236].

تم إنشاء ملاحظة الاستخدام هذه تلقائيًا استنادًا إلى مواصفات AUTOSAR Classic الإصدار R20-11.

دليل المنفِّذ قيد الإعداد (التعقيد I2)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_CanTp
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_CanTp@rel:R20-11#700f4323
Content hash
700f4323
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CANTransportLayer.pdf#nameddest=SWS_CanTp_00208

خريطة المواضيع

عرض التفاصيل

اختر عنصرًا من المخطط.

التهيئة والحالة

This function returns the version information of the Can Tp module.

void CanTp_GetVersionInfo (Std_VersionInfoType* versioninfo);
CanTp_Init دالة

This function initializes the Can Tp module.

void CanTp_Init (const CanTp_ConfigType* CfgPtr);

الخدمات

Requests cancellation of an ongoing reception of a PDU in a lower layer transport protocol module.

Std_ReturnType CanTp_CancelReceive (PduIdType RxPduId);

Requests cancellation of an ongoing transmission of a PDU in a lower layer communication module.

Std_ReturnType CanTp_CancelTransmit (PduIdType TxPduId);

Request to change a specific transport protocol parameter (e.g. block size).

Std_ReturnType CanTp_ChangeParameter (PduIdType id, TPParameterType parameter, uint16 value);

This service is used to read the current value of reception parameters BS and STmin for a specified N - SDU.

Std_ReturnType CanTp_ReadParameter (PduIdType id, TPParameterType parameter, uint16* value);

This function is called to shutdown the Can Tp module.

void CanTp_Shutdown (void);

Requests transmission of a PDU.

Std_ReturnType CanTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);

دوال الاستدعاء الراجع

Indication of a received PDU from a lower layer communication interface module.

void CanTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

void CanTp_TxConfirmation (PduIdType TxPduId, Std_ReturnType result);

دورية

The main function for scheduling the CAN TP.

void CanTp_MainFunction (void);

الأنواع

Data structure type for the post - build configuration parameters.