[Matlab] Использование файлов DBC в связи CAN (Vehicle Network Toolbox)
[Matlab] Использование файлов DBC в связи CAN (Vehicle Network Toolbox)

Открыть файл DBC

использовать canDatabase открыть файл demoVNT_CANdbFiles.dbc,Этот документ приведен в качестве официального примера.,Вы также можете использовать свой собственный документ DBC. Дальше в основном используем EngineMsg Это сообщение:

Вставьте сюда описание изображения
Вставьте сюда описание изображения
Язык кода:javascript
копировать
db = canDatabase("demoVNT_CANdbFiles.dbc")

Matlab читает dbc следующим образом:

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Проверьте свойство Messages, чтобы увидеть имена всех сообщений, определенных в этом файле (в соответствии с CANoe):

Язык кода:javascript
копировать
db.Messages
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Просмотр информации о сообщении

использовать messageInfo Посмотреть сообщение EngineMsg информация, включая идентификатор, длину данных и список сигналов.

Язык кода:javascript
копировать
messageInfo(db, "EngineMsg")
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Просмотр информации о сигнале

использовать signalInfo Посмотреть сообщение EngineMsg средний сигнал EngineRPM Информация, включая тип, порядок байтов, размер и коэффициенты, используемые для преобразования исходного сигнала в физическую величину.

Язык кода:javascript
копировать
signalInfo(db, "EngineMsg", "EngineRPM")
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Создание сообщений с использованием определений базы данных

Создайте новое сообщение, указав DBC и имя сообщения, которое нужно применить. Сигналы CAN в этом сообщении выражаются в инженерных единицах в дополнение к байтам необработанных данных.

Язык кода:javascript
копировать
msgEngineInfo = canMessage(db, 'EngineMsg')
Вставьте сюда описание изображения
Вставьте сюда описание изображения

также,canMessage Вы также можете создать сообщение с указанным идентификатором:

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Просмотр информации о сигнале нового сообщения

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

Язык кода:javascript
копировать
msgEngineInfo.Signals

Начальные значения следующие:

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Изменение информации о сигнале

Напишите непосредственно в сигнал, чтобы изменить его значение. Вы можете увидеть изменения в Data:

Язык кода:javascript
копировать
msgEngineInfo.Signals.EngineRPM = 5500.25
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Считайте текущее значение сигнала:

Язык кода:javascript
копировать
msgEngineInfo.Signals
Вставьте сюда описание изображения
Вставьте сюда описание изображения

При записи непосредственно в сигнал он автоматически преобразуется и используетсябаза. данных Определение упаковки в сообщенияданные(Десятичный-шестнадцатеричный)середина。Напишите нижеVehicleSpeedData

Язык кода:javascript
копировать
msgEngineInfo.Signals.VehicleSpeed = 70.81
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Просмотр текущих сигналов:

Язык кода:javascript
копировать
msgEngineInfo.Signals
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Получать сообщения с информацией о базе данных

Подключите базу данных к CAN канал, канал сообщение для автоматического преобразования базы Определение данных применяется к входящим сообщениям. база данные анализируют только определенные сообщения. Остальные сообщения принимаются в исходном виде.

Язык кода:javascript
копировать
rxCh = canChannel("MathWorks", "Virtual 1", 2);
rxCh.Database = db
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Получить сообщение

Начать канал,Создайте несколько потоков сообщений(случайный),Затем раскодируйте сообщение в Получить сообщение. И посмотрите на первые несколько строк полученного сообщения.

Язык кода:javascript
копировать
start(rxCh);
generateMsgsDb();
rxMsg = receive(rxCh, Inf, "OutputFormat", "timetable");
rxMsg(1:15, :)
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Остановите принимающий канал и удалите его из рабочей области.

Язык кода:javascript
копировать
stop(rxCh);
clear rxCh

Проверьте полученные сообщения

Проверьте полученные сообщения Используйте вместеDBCдекодирование:

Язык кода:javascript
копировать
rxMsg(1, :)
Вставьте сюда описание изображения
Вставьте сюда описание изображения
Язык кода:javascript
копировать
rxMsg.Signals{1}
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Извлечь все экземпляры указанного сообщения

Извлеките все экземпляры сообщения и просмотрите первые несколько экземпляров этого конкретного сообщения.

Язык кода:javascript
копировать
allMsgEngine = rxMsg(strcmpi('EngineMsg', rxMsg.Name), :);
allMsgEngine(1:15, :)
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Отрисовка физических значений сигналов (парсинг сообщений)

использовать canSignalTimetable Переупакуйте данные сигнала в сообщении в расписание сигналов и просмотрите первые несколько строк расписания сигналов.

Язык кода:javascript
копировать
signalTimetable = canSignalTimetable(rxMsg, 'EngineMsg');
signalTimetable(1:15, :)
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Постройте сигнал как функцию времени:

Язык кода:javascript
копировать
plot(signalTimetable.Time, signalTimetable.VehicleSpeed)
title('Vehicle Speed from EngineMsg', 'FontWeight', 'bold')
xlabel('Timestamp')
ylabel('Vehicle Speed')
Вставьте сюда описание изображения
Вставьте сюда описание изображения

Кроме того, значение сообщения или семафора можно произвольно изменять в рабочей области.

Вставьте сюда описание изображения
Вставьте сюда описание изображения

Закрыть файл DBC

Удалите переменные файла DBC из рабочей области и закройте доступ к файлу DBC.

Язык кода:javascript
копировать
clear db

Вот и все.

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.