Помещение значения сигнала в переменную в CAPL

Я пытаюсь получить значение сигнала (из файла DBC) в переменную, но я получаю сообщение "Должно быть постоянное выражение". Если я попытаюсь добавить фильтр как .DefaultValue, это работает, но это не то значение, которое я хочу. Я хочу получить значение сигнала во время вызова этой функции CAPL. Вот пример:

float Cell_Voltage = Mc00_UCell00; (это где я получаю ошибку должно быть константным выражением)

float Cell_Voltage = Mc00_UCell00.DefaultValue; (это работает, но я не хочу значение по умолчанию)

Есть ли фильтр для вытягивания текущего значения сигнала Mc00_UCell0?

2 ответа

В CAPL, чтобы получить целое число от значения сигнала с плавающей запятой, вы должны написать

float Cell_Voltage = $Mc00_UCell00;

Это называется "Прямой доступ к значениям сигнала"

Вы говорите следующие работы:

float Cell_Voltage = Mc00_UCell00.DefaultValue; 

и следующее не работает:

float Cell_Voltage = Mc00_UCell00; 

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

Решите, какой элемент структуры вам нужен, и укажите это с помощью точечной нотации.

Другие вопросы по тегам