Как проверить параметры тайм-аута N_As, N_Ar в протоколе CanTp, используя скрипт CAPL или любым другим возможным способом? - PullRequest
0 голосов
/ 11 марта 2020

В рамках тестов, связанных с протоколом CanTp, я пытался проверить N_As и N_Ar ошибки тайм-аута, где N_AsMax = 1000ms и N_ArMax = 1000ms.

Возможно ли создать N_As и N_Ar таймауты с CANalyzer и / или с использованием CAPL? Было бы очень полезно, если бы вы могли поделиться возможным способом проверки этих параметров синхронизации с помощью CANalyzer или CANoe.

1 Ответ

1 голос
/ 18 марта 2020

CanTP - это протокол для расширения максимальной длины данных (в байтах) любого данного кадра данных CAN на традиционные 8 байтов, пожалуйста, обратитесь к ISO 15765-2. Здесь вы можете иметь одиночные кадры или мультикадры, которые представляют собой последовательности связанных кадров, каждый из которых несет часть общего блока PDU. Кадр управления потоком отправляется, обычно получателем, для адресации и инструктирования передатчика по протоколу, который будет использоваться для разделения кадра.

В соответствии с документами ,

N_Ar [это] Время передачи кадра CAN (любого N-PDU) на стороне приемника (см. ИСО 15765-2)

N_As [Это] Время передачи кадра CAN (любой N-PDU) на стороне отправителя (см. ISO 15765-2).

Кроме того, актуальны следующие требования:

[SWS_CanTp_00075] fЕсли подтверждение передачи не получено по истечении максимального времени (равного N_As), модуль CanTp должен действовать так, как если бы он получил подтверждение неудачной передачи, и любое позднее подтверждение должно игнорироваться. Модуль CanTp должен отменить (внутренне) неудачную передачу. ⌋ ()

[SWS_CanTp_00311] ⌈ В случае возникновения тайм-аута N_Ar (подтверждение от драйвера CAN для любого из отправленных кадров F C) модуль CanTp должен прервать прием и уведомить верхний уровень этой ошибки вызывается функцией индикации PduR_CanTpRxIndication () с результатом E_NOT_OK. ⌋ ()

Возвращаясь к вашему вопросу:

Можно ли создать тайм-ауты N_As и N_Ar с CANalyzer и / или с помощью CAPL?

Да, с помощью файла osek_tp.dll, который вы должны иметь при локальной установке CANoe (я использую CANoe v10.0). Примеры того, как его использовать, хорошо документированы в справочном документе AN-IND-1-012_CAPL_Callback_Interface.pdf , опять же, он должен распространяться в вашей папке установки CANoe.

Согласно этому документу ,

По сути, OSEK_TP.DLL реализует функциональность внедрения ошибок, которая должна быть включена явно, чтобы предотвратить непреднамеренное использование. После активации можно установить конкретную ошибку c для соединения, которое будет выполнено во время следующей передачи данных.

Я бы настоятельно рекомендовал прочитать его и обратиться к соответствующей документации. также. Я надеюсь, что это указывает на правильное направление.

Дополнительная информация:

...