Моделирование узла / ЭБУ в CAPL

Я пытаюсь смоделировать узел в CAPL, который дает диагностический ответ на запросы тестера. В CANoe я добавил 2 сетевых узла: 1) ЭБУ и 2) Тестер.

//**In Tester.can**

DiagRequest service req; // In variables, with corresponding service from cdd

on key 'a'
{
    read_diag_addr_request();
}

void read_diag_addr_request()
{
    DiagSetTarget ("Target");    
    DiagResize(Diag_addr_req,2);
    DiagSetprimitiveByte(req,1,0x1A);   
    DiagSetprimitiveByte(req,2,0xB0);   
    DiagSendRequest(req);   
} 

//**In ECU.can**

DiagResponse service res; // In variables, with corresponding service from cdd

on diagResponse *
{
    write("IN DIAG_RESPONSE");
    DiagResize(res,3);
    DiagSetprimitiveByte(res,0,0x5A);   
    DiagSetprimitiveByte(res,1,0xB0);  
    DiagSetprimitiveByte(res,2,0x"data"); 
    DiagSendResponse(res);  
}

Запрос тестера [1A B0] виден в окне трассировки, но положительного ответа не наблюдается.

Примечание: учитывайте только положительный ответ, и запрос тестера правильный. Я попытался получить ответ, используя событие message *, и это отлично работает.

Может ли кто-нибудь помочь мне разобраться в проблеме при использовании функции CAPL DiagSendResponse?

Спасибо


person jerinj    schedule 14.03.2017    source источник


Ответы (1)


Возможно, вам потребуется использовать обработчик «on DiagRequest *» в модуле Ecu.can, поскольку вы хотите реагировать на полученный запрос с помощью Response.

"on diagresponse *" вызывается, если вы получаете ответ.

person kesselhaus    schedule 23.06.2017