Как сгенерировать возможные значения сигнала из dbc в качестве общего вывода с помощью CAPL

Я использую Canoe версии 10.0, и я хотел спросить, есть ли умный способ сгенерировать необязательное значение сигнала из базы данных в другое значение.

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

Я видел, что есть опции, такие как getSignal, setSignal и т. Д., Но мне не удалось понять, как их правильно использовать для достижения моей цели.

Спасибо за помощь.


person Rubins    schedule 08.01.2018    source источник
comment
извините, не могли бы вы привести пример псевдокода, чего вы собираетесь достичь? генерировать необязательное значение сигнала из базы данных в другое значение не ясно.   -  person An Other    schedule 12.01.2018


Ответы (2)


Вкратце: нет, вы не можете получить доступ к символьным значениям из CAPL для данного сигнала, описанного в базе данных dbc / fibex. Таким образом, вы не можете позвонить, например:

 SetSignal (SignalnamefromDbc, SNA_VALUE); /*SNA_VALUE defined in dbcis 7*/

Есть несколько обходных путей, но мне нужно больше информации о том, что ваша симуляция может и чего не может.

Например: OEM-производители вместе с Vector обычно пишут определенные библиотеки dll для генерации реалистичных значений сигнала без вашего конкретного запроса. Эти dll обычно связаны с узлом моделирования и могут быть активированы / нарушены / остановлены в любой момент во время моделирования.

person VioletVynil    schedule 21.09.2018

Я знаю, что это было давно, но я понимаю следующее.

Особенно, когда я знаю, что база данных содержит такую ​​информацию, как длина сигнала, стартовый бит и минимальное и максимальное возможные значения.

Обычно база данных определяется в 2 файлах:

  • DBC (формат от VECTOR), который определяет сигналы, имя, начало бита, длину и т. Д.
  • Файл EXCEL, который определяет периодичность кадров и сигнализирует о значениях по умолчанию.

Вы можете вводить файлы DBC непосредственно в CANoe / CANalyser, и CAPL сможет напрямую получить доступ к значениям сигналов.

on message ABSdata // <== frame name as defined in the DBC file
{
  if (this.DIR == RX) 
  {
    // CarSpeed is a signal belonging to the frame ABSdata
    write("The signal value of car speed is %d", this.CarSpeed);
  }
}

Нет необходимости писать какую-либо сложную функцию для извлечения значения сигнала. CANoe / CANalyser выполнит правильное декодирование, если вы предоставите правильный файл DBC.

person Robert    schedule 25.12.2019