Есть ли способ изменить сообщения CANoe Rx перед получением на шине? - PullRequest
0 голосов
/ 14 декабря 2018

Я получаю сообщение CAN от моего контроллера (предположим, ID сообщения = 0x100, сигналы S1, S2), но я хочу изменить сигналы сообщения Canoe Rx до его получения на шине.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Если вы не можете изменить сообщение до того, как оно будет отправлено контроллером, единственным вариантом для изменения вашего сообщения является HIL (Hardware In the Loop), который вы размещаете между отправителем (Controller) и CANoe VN на шине.

Например, они называются модулями CANStress, если вы хотите использовать продукты Vector.

Они будут прослушивать сообщения на вашей шине, и при заданном (вами) триггере будут перезаписывать физический уровень на то, что вы пожелаете, успешно изменяя или вводя ошибку в шину.

Имейте в виду, что изменение сигналов означает, что вы должны знать их отображение, а также как пересчитать тег CRC и также изменить его, в противном случае CANoe VN не примет ваше сообщение и сообщит Rx_ErrПроверка CRC .

0 голосов
/ 15 декабря 2018

в основном, если вы хотите что-то изменить в кадре CAN, вы можете сделать что-то подобное в capl.

Пример:

 Framename: TEMP
 Signal you want to change: S1, S2
on message TEMP /* or "on message 0x100" in your case */
{
 /* if you have a dbc or arxml assigned to the canoe project you can directly 
  * use frame names and signal names to manipulate the data.
  * if not you need to use it's ID and write over the bytes on it. 
  */
 this.S1 = whatever_value;
 this.S2 = whatever_value;
 output(this);
}

Если у вас нетФайл DBC / ARXML добавлен в проект, но я настоятельно рекомендую это сделать.Единственное, что вам нужно изменить в приведенном выше коде, - это указать, какие байты вы перезаписываете.

Вы изменяете это:

 this.S1 = whatever_value;
 this.S2 = whatever_value;

На это:

 this.byte(0) = whatever_value;
 this.byte(1) = whatever_value;

Но вам нужно знать, какие байты нужно перезаписать.

...