Как изменить данные сообщения в CAPL, если сообщение генерируется блоком Interactive Generator? - PullRequest
0 голосов
/ 13 июня 2019

Я использую CANalyzer. Я передаю сообщение CAN, используя блок Interactive Generator. Я использую IG для изменения сигналов в передаваемом сообщении вручную. Мне нужно автоматически вычислять контрольную сумму (последний байт в сообщении) каждый раз, когда сообщение отправляется. Контрольная сумма вычисляется из всех предыдущих байтов данных в сообщении (сообщение всегда имеет длину 8 байтов). В IG нет возможности сделать это.

мне нужно: 1. Установите сигналы вручную с помощью IG. 2. Автоматически вычислить значение последнего байта данных в соответствии со значениями предыдущих байтов данных.

Я пытался написать простой код на CAPL, но безуспешно. Я поместил узел программы CAPL после узла IG в окне конфигурации и записал событие сообщения в сценарии CAPL:

on message FooMsg
{
  message FooMsg msg1; // FooMsg is name of message in database

  msg1 = this; // copy message from IG to temporary variable
  // this.byte(7) = 0x11; // not posibble, compiler warning
  msg1.byte(7) = 0x11;  // constant value just for test
  output(msg1); // send message
}

Сообщение передается, но период передачи, установленный в IG, не соблюдается (сообщение передается максимально быстро).

Я думал, что поймал сообщение, сгенерированное IG, изменил его и отправил на шину CAN.

Может кто-нибудь помочь, пожалуйста? Я начинающий в CAPL.

Спасибо

1 Ответ

1 голос
/ 15 июня 2019

Наконец я переработал весь материал, как рекомендовал VioletVynil.Я создал панели, добавил системные переменные и подключил их к элементам управления на панелях, написал код на CAPL для вычисления контрольной суммы и периодической передачи сообщения, и он запускается!Без проблем!И да, дополнительный CRC на полезную нагрузку используется для дополнительной безопасности (применение на железной дороге).Я не разработал протокол связи, я только получил его.

Спасибо!

Всего один вопрос.CANanalyzer не поддерживает переменные среды, он поддерживает только системные переменные.CANoe поддерживает их обоих.Когда мне нужно envVars?Когда мне нужно CANoe вместо CANalyzer?Для моделирования более одного узла в шине ....?

...