Воспроизведите регистрируемые полевые данные J1939 к симуляции

В этом примере показано, как воспроизвести данные J1939 из BLF-файла, полученного от системы J1939 в реальном приложении, таком как транспортное средство, запускающееся в поле. Модель Simulink запускает простой алгоритм средства оценки лошадиной силы, чтобы инициировать отказ, который может произойти в поле. Пример берет вас через часть основанных на модели полевых данных об использовании рабочего процесса, чтобы воссоздать отказ, который присутствовал в алгоритме Simulink, прежде чем это было развернуто на ECU и может быть расширено, чтобы протестировать любую модель алгоритма, чтобы отладить отказы.

J1939 является протоколом более высокого слоя, который использует технологию шины Сети области контроллера (CAN) в качестве физического уровня. Поскольку CAN является базисом передачи данных в системе J1939, инструмент, используемый в поле журналами по умолчанию данные J1939 как системы координат CAN. Этот пример выполняет воспроизведение данных первоначально регистрируемых систем координат CAN по шине CAN из MATLAB и получает в модели Simulink с помощью Конфигурации сети J1939, Настройки Узла J1939, транспортного уровня J1939 CAN, и J1939 Получают блоки.

BLF-файл, используемый в этом примере, был сгенерирован от Векторного КАНОЭ с помощью "Конфигурации системы (J1939)" демонстрационная настройка и изменил использование MATLAB и Vehicle Network Toolbox. Этот пример также использует J1939 DBC-file PowerTrain_J1939.dbc, предоставленный Векторную демонстрационную настройку. Vehicle Network Toolbox обеспечивает блоки Simulink J1939 для получения и передачи групп параметра (PG) с помощью моделей Simulink по CAN. Пример использует MathWorks виртуальные каналы CAN, соединенные в петлевой настройке.

Считайте данные BLF-файла

Используя blfread функция, считанная данные из канала 1 из BLF-файла, который был получен в поле.

canData = blfread("LoggingBLF_J1939Replay.blf",1)
canData=15000×8 timetable
        Time           ID        Extended       Name                      Data                    Length      Signals       Error    Remote
    ____________    _________    ________    __________    ___________________________________    ______    ____________    _____    ______

    0.000568 sec    418316032     true       {0×0 char}    {[          76 52 169 232 0 0 0 0]}      8       {0×0 struct}    false    false 
    0.001128 sec    418316035     true       {0×0 char}    {[          78 52 169 232 0 3 0 0]}      8       {0×0 struct}    false    false 
    0.001688 sec    418316043     true       {0×0 char}    {[          75 52 169 232 0 9 0 0]}      8       {0×0 struct}    false    false 
    0.002244 sec    418316055     true       {0×0 char}    {[         77 52 169 232 0 19 0 0]}      8       {0×0 struct}    false    false 
    0.002796 sec    418316083     true       {0×0 char}    {[         79 52 169 232 0 38 0 0]}      8       {0×0 struct}    false    false 
    0.003364 sec    418316262     true       {0×0 char}    {[      105 52 169 232 0 131 0 16]}      8       {0×0 struct}    false    false 
    0.003932 sec    418316262     true       {0×0 char}    {[      105 52 169 232 0 131 0 16]}      8       {0×0 struct}    false    false 
    0.25158 sec     201326595     true       {0×0 char}    {[252 255 255 255 248 255 255 255]}      8       {0×0 struct}    false    false 
    0.25216 sec     201326603     true       {0×0 char}    {[252 255 255 255 248 255 255 255]}      8       {0×0 struct}    false    false 
    0.25272 sec     217055747     true       {0×0 char}    {[        192 0 0 250 240 240 7 3]}      8       {0×0 struct}    false    false 
    0.2533 sec      217056000     true       {0×0 char}    {[            1 0 0 0 0 252 0 255]}      8       {0×0 struct}    false    false 
    0.25386 sec     217056256     true       {0×0 char}    {[        240 0 125 208 7 0 241 0]}      8       {0×0 struct}    false    false 
    0.25444 sec     418382091     true       {0×0 char}    {[               0 0 0 0 0 1 11 3]}      8       {0×0 struct}    false    false 
    0.25501 sec     418383107     true       {0×0 char}    {[            125 0 0 125 0 0 0 0]}      8       {0×0 struct}    false    false 
    0.2556 sec      418384139     true       {0×0 char}    {[                0 0 0 0 0 0 0 0]}      8       {0×0 struct}    false    false 
    0.25618 sec     419283979     true       {0×0 char}    {[      3 0 0 255 255 255 255 255]}      8       {0×0 struct}    false    false 
      ⋮

Эти данные содержат один представляющий интерес PG для этого примера под названием EEC1_EMS. PG содержит данные, прибывающие из модуля Электронного регулятора Engine. Этот пример управляет набором данных из BLF-файла, чтобы сознательно инициировать тип отказа в демонстрационных целях. Модель Simulink воссоздает этот отказ с помощью модифицированного набора данных.

Откройте модель Simulink

Откройте модель Simulink, которая содержит ваш алгоритм. Модель, содержавшаяся в этом примере, использует основную настройку сети J1939. Для получения дополнительной информации об этой настройке и блоках J1939, смотрите пример Начало работы с Коммуникацией J1939 в Simulink.

open demoVNTSL_J1939ReplayExample

Обзор модели

Модель в качестве примера сконфигурирована, чтобы выполнить получить операцию для EEC1_EMS PG по виртуальному устройству MathWorks 1 канал 1.

  • Блок J1939 Network Configuration сконфигурирован с базой данных Powertrain_J1939.dbc.

  • Блок J1939 CAN Transport Layer устанавливает Устройство на MathWorks виртуальный канал 1. Транспортный уровень сконфигурирован, чтобы передать сообщения J1939 по CAN через заданный виртуальный канал.

  • Блок J1939 Receive получает сообщения, переданные по сети. J1939 Получают, сконфигурирован, чтобы получить EEC1_EMS PG и передает необходимые входные параметры (Фактический Крутящий момент Процента Engine (%) и Скорость вращения двигателя (об/мин)) к Алгоритму Средства оценки Лошадиной силы. Это также сконфигурировано, чтобы передать Engine Потребованный Крутящий момент Процента (%) с блоком оператора отношения. Остальная часть выходных параметров была отключена для простоты.

Алгоритм средства оценки лошадиной силы

Алгоритм Средства оценки Лошадиной силы является простым вычислением, которое берет фактический процент крутящего момента механизма и значения скорости и вычисляет лошадиную силу механизма от них.

Операторы отношения

В модели существует три блока оператора отношения:

  • Оператор отношения 1 сравнивает значение вычисленной лошадиной силы, чтобы обнулить и выводит Boolean.

  • Оператор отношения 2 выдерживает сравнение, значение механизма потребовало процент крутящего момента, чтобы обнулить и выводит Boolean.

  • Оператор отношения 3 сравнивает значение выходных параметров от Операторов отношения 1 и 2 и выводит Boolean, чтобы инициировать состояние лампы Индикатора Отказа.

Инструментальная панель транспортного средства

Инструментальная панель Транспортного средства состоит из быстрого набора, показывающего об/мин механизма, два прибора, показывающие вычисленное значение лошадиной силы и процента механизма, потребовали крутящий момент и лампу Индикатора Отказа.

Создайте канал для воспроизведения

Создайте канал CAN, чтобы воспроизвести сообщения с помощью canChannel функция.

replayChannel = canChannel("MathWorks","Virtual 1",2);

Установите параметры модели и запустите симуляцию

Присвойте время симуляции и запустите симуляцию.

set_param("demoVNTSL_J1939ReplayExample","StopTime","inf");
set_param("demoVNTSL_J1939ReplayExample","SimulationCommand","start");

Сделайте паузу, пока симуляция полностью не запускается.

while strcmp(get_param("demoVNTSL_J1939ReplayExample","SimulationStatus"),"stopped")
end

Запустите канал CAN и воспроизведите данные

Запустите канал CAN MATLAB.

start(replayChannel);
pause(2);

Воспроизведите данные, полученные из BLF-файла. replay операция запускается в течение приблизительно 45 секунд.

replay(replayChannel,canData);

Обзор симуляции

Во время выполнения этого примера наблюдайте модель Simulink. Будут изменения в значении в приборах и переходе красного зеленого света лампы Индикатора Отказа в разделе Vehicle Dashboard.

Блок J1939 Receive получает EEC1_EMS PG из MATLAB, декодирует сигналы интереса и передает их Алгоритму Средства оценки Лошадиной силы. После того, как лошадиная сила вычисляется, Оператор отношения 1 сравнивает свои значения, чтобы обнулить, чтобы определить направление. Блок J1939 Receive также передает Engine Потребованный Крутящий момент Процента Оператору отношения 2. Оператор отношения 2 сравнивает свои значения, чтобы обнулить, чтобы определить направление.

Выход является Boolean 1, если значение больше или равно нулю, или 0, если это меньше (отрицательного) нуля.

Оператор отношения 3 берет выходные параметры более ранних двух операторов отношения и приравнивает их. Если значение для обоих блоки 0 или 1, i.e., положительная лошадиная сила и положительный крутящий момент (1), или отрицательная лошадиная сила и отрицательный крутящий момент (0), это обеспечивает выход 1, который в свою очередь инициировал зеленый свет лампы Индикатора Отказа. Однако, если значение для любого из более ранних блоков оператора отношения напротив другого, i.e., положительная лошадиная сила (1) и отрицательный крутящий момент (0), или отрицательная лошадиная сила (0) и положительный крутящий момент (1), это обеспечивает выход 0, который в свою очередь инициировал красный свет лампы Индикатора Отказа. Эти наблюдения полезны в определении, является ли алгоритм дефектным на основе полевых данных, и можно далее анализировать алгоритм.

Остановите канал CAN

stop(replayChannel);

Остановите симуляцию

set_param("demoVNTSL_J1939ReplayExample","SimulationCommand","stop");