Симуляция режима external mode при помощи коммуникации XCP

В симуляции режима external mode вы можете настройки параметров в режиме реального времени и контролировать сигналы целевого приложения. Используя приложение Run on Custom Hardware, можно настроить и работать компьютере разработчика или симуляциях режима external mode специального оборудования, которые используют канал связи XCP.

Для симуляции режима external mode, вас:

  1. Создайте целевое приложение на своем компьютере разработчика.

  2. Разверните целевое приложение в целевой компьютер.

  3. Соедините Simulink® с целевым приложением, которое работает на целевом компьютере.

  4. Запустите выполнение сгенерированного кода на целевом компьютере.

Запустите симуляцию режима external mode XCP на компьютере разработчика

Сконфигурируйте и запустите симуляцию режима external mode, которая использует протокол связи XCP. Во время симуляции:

  • Контролируйте сигнал при помощи блока Scope, блока Dashboard и Инспектора Данных моделирования.

  • Настройте параметр при помощи блока Dashboard.

Сконфигурируйте контроль сигналов и параметр, настраивающийся для XCP

  1. Создайте папку для этого примера.

    mkdir ext_mode_xcp_example
    cd ext_mode_xcp_example

  2. Откройте Simulink и создайте простую модель, xcpExample, который содержит эти блоки:

    • Sine Wave

    • Gain

    • Scope

    • Half Gauge

    • Knob

  3. Дважды кликните блок Sine Wave. Установите Sample time на 0,1, и затем нажмите OK.

  4. Дважды кликните блок Gain. Установите Gain на 2, и затем нажмите OK.

  5. Соедините блок Sine Wave с блоком Gain и назовите связь, например, Test Signal.

  6. Соедините блок Gain с блоком Scope и назовите связь, например, Output Signal.

  7. Сконфигурируйте Test Signal для логгирования:

    1. Выберите Test Signal.

    2. На вкладке Signal, в разделе Monitor, выбирают Log Signals.

    Если вы не включаете логгирование сигнала, вы не можете передать потоком Test Signal инспектору данных моделирования.

  8. Сконфигурируйте блок Half Gauge, чтобы контролировать значение Test Signal:

    1. Дважды кликните блок Half Gauge.

    2. В Редакторе Simulink выберите Test Signal.

    3. В диалоговом окне Block Parameters:

      • Соедините блок с Test Signal.

      • В поле Maximum введите значение, например, 1.

    4. Нажмите OK.

  9. Сконфигурируйте блок Knob, чтобы настроить параметр Amplitude блока Sine Wave:

    1. Дважды кликните блок Knob.

    2. В Редакторе Simulink выберите блок Sine Wave.

    3. В диалоговом окне Block Parameters:

      • Соедините блок с параметром Amplitude блока Sine Wave.

      • В полях Minimum и Maximum введите значения, например, 0.1 и 1 соответственно.

    4. Нажмите OK.

  10. Сохраните модель как xcpExample.

Задайте оборудование и подготовьте модель

  1. От вкладки Apps на панели инструментов Simulink, в разделе Setup to Run on Hardware, нажимают Run on Custom Hardware. На всплывающем диалоговом окне Run on Custom Hardware нажмите Finish.

  2. В разделе Hardware задайте системный конечный файл. В данном примере используйте значение по умолчанию, grt.tlc. Если у вас есть Embedded Coder®, можно задать ert.tlc.

  3. В галерее Prepare, под Model Configuration, нажимают Hardware Settings. Диалоговое окно Configuration Parameters открывается, отображая настройки Hardware Implementation, которые определяются системным конечным файлом.

  4. На панели Solver:

    1. В поле Type задайте Fixed-step.

    2. Под Solver details, в поле Fixed-step size, задают значение, например, 0.1.

  5. На Code Generation> панель Optimization, набор Default parameter behavior к Tunable.

  6. На Code Generation> панель Interface, установите флажок External mode.

  7. Установите Transport layer на XCP on TCP/IP, который задает ext_xcp для MEX-file name.

  8. Вы не можете отключить флажок Static memory allocation. Значение Static memory buffer size задает размер ведомой памяти XCP, которая выделяется для логгирования сигнала. В данном примере используйте значение по умолчанию.

  9. Если System target file является ert.tlc, на Code Generation> панель Templates:

    • Установите флажок Generate an example main program.

    • Установите Target operating system на BareBoardExample.

      Используя зарегистрированные API уровня абстракции режима external mode, которые доступны в matlabroot\toolbox\coder\xcp\src\target\ext_mode\include\ext_mode.h, генератор кода создает пример, который показывает, как можно обеспечить целевую возможность соединения режима external mode XCP для несмонтированной платы, которая не запускает операционную систему.

  10. Нажмите OK. Затем сохраните модель.

Создание и запуск целевого приложения

В разделе Run on Hardware:

  1. Чтобы задать значение не по умолчанию для времени остановки симуляции, в поле Stop Time, задают ваше значение, например, inf.

  2. Щелкнуть. Программное обеспечение:

    1. Создает целевое приложение:

      • В Windows® процесс сборки создает:

        • xcpExample.exe – Исполняемый файл.

        • xcpExample.pdb – Файл отладочной информации для сигналов и параметров.

      • В Linux® процесс сборки помещает отладочную информацию формата DWARF в созданный исполняемый файл ELF, xcpExample.

    2. Запускает целевое приложение как отдельный процесс на вашем компьютере разработчика.

    3. Подключения Simulink к целевому приложению.

    4. Запускает сгенерированный типовой кодекс.

    Чтобы выполнить шаги отдельно, нажмите Monitor & Tune. Под Step By Step Commands щелкните:

    1. Build for Monitoring

    2. Deploy

    3. Connect

    4. Start

Сигнал монитора и настройка параметров

Можно контролировать Test Signal через:

  • Блок Scope – Дважды кликает блок.

  • Инспектор Данных моделирования – Нажимает кнопку Simulation Data Inspector. Когда Инспектор Данных моделирования открывается, установите флажок Test Signal, который отображает переданные потоком данные.

  • Блок Half-Gauge.

Чтобы изменить амплитуду синусоиды, вращайте указатель на блоке Knob к необходимому значению.

Эта таблица описывает больше способов настроить настраиваемые параметры блоков во время симуляции.

ПодходДетали

Model Data Editor

К настройкам параметров через Model Data Editor:

  1. На вкладке Hardware Редактора Simulink, в разделе Prepare, нажимают Tune Parameters, который открывает Model Data Editor.

  2. Если вы хотите обновить несколько настраиваемых параметров одновременно в разделе Prepare, нажмите Batch Mode.

  3. На вкладке Parameters Model Data Editor, в столбце Value, задают новые значения для ваших настраиваемых параметров.

  4. Если Batch Mode выбран, нажмите Update All Parameters или нажмите Ctrl+D. Simulink загружает новые значения на целевое приложение одновременно.

    Если Batch Mode не выбран, то сразу после того, как вы задаете новое значение, Simulink загружает новое значение на целевое приложение.

Для получения дополнительной информации смотрите Configure Data Properties при помощи Model Data Editor.

Диалоговое окно Block Parameter

К настройкам параметров через диалоговое окно Block Parameter:

  1. Для каждого блока, который вы хотите обновить:

    1. Дважды кликните блок, который открывает диалоговое окно Block Parameter.

    2. В полях параметра задайте новые значения параметров.

    3. Нажмите Apply или OK.

  2. Если Batch Mode выбран, нажмите Update All Parameters или нажмите Ctrl+D. Simulink загружает новые значения на целевое приложение одновременно.

    Если Batch Mode не выбран, то сразу после того, как вы нажимаете Apply или OK, Simulink загружает новые значения блока на целевое приложение.

Рабочая область MATLAB®

Если параметры блоков являются переменными рабочего пространства MATLAB:

  1. В Командном окне присвойте новые значения переменным.

  2. На вкладке Hardware Редактора Simulink, в разделе Prepare, нажимают Update All Parameters (Ctrl+D). Simulink загружает новые значения на целевое приложение.

Для получения дополнительной информации смотрите, Создают и Переменные Редактирования.

Для получения дополнительной информации о параметре, настраивающемся со сгенерированным кодом, смотрите Симуляцию Режима external mode с TCP/IP или Последовательную передачу и Создайте Настраиваемый Калибровочный Параметр в Сгенерированном коде (Embedded Coder).

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

Остановите целевое приложение

Остановить выполнение сгенерированного типового кодекса перед StopTime достигнут и отключите целевое приложение, на панели инструментов Simulink Editor, нажмите кнопку Stop.

Если вы хотите отключить целевое приложение от Simulink, не останавливая выполнение кода, щелкнуть. Затем под Step By Step Commands нажмите Disconnect.

Инициированный контроль сигналов для симуляций режима external mode XCP

Для симуляций режима external mode XCP можно сконфигурировать триггер, который запускает загрузку данных о целевом приложении для контроля сигналов в Simulink.

  1.  Создайте простую модель в локальной папке.

  2. В Редакторе Simulink сконфигурируйте эти сигналы для логгирования путем щелчка правой кнопкой по каждому сигналу и затем выбора Log Selected Signals:

    • test_signal

    • test_carrier

    • test_output

    • cmp_output

  3. От вкладки Apps на панели инструментов Simulink, в разделе Setup to Run on Hardware, нажимают Run on Custom Hardware. На всплывающем диалоговом окне Run on Custom Hardware нажмите Finish.

  4. В галерее Prepare, под Model Configuration, нажимают Hardware Settings.

  5. На панели Solver, в поле Type, задают Fixed-step.

  6. На Code Generation> панель Interface, установите флажок External mode.

  7. Установите Transport layer на XCP on TCP/IP, который задает ext_xcp для MEX-file name.

  8. Нажмите OK. Затем сохраните модель.

  9. Чтобы открыть диалоговое окно External Signal & Triggering, из галереи Prepare, под Signal Monitoring & Tracing, нажимают Control Panel.

  10. В разделе Configuration нажмите Signal & Triggering, который открывает диалоговое окно External Signal & Triggering.

    Через это диалоговое окно можно выбрать сигналы для контроля и сконфигурировать триггер для загрузки данных из целевого приложения. В данном примере используйте настройки по умолчанию. Например:

    • Флажок Select all устанавливается — диалоговое окно отображается X в каждой строке столбца Selected. Можно контролировать все регистрируемые сигналы во время симуляции.

    • Source установлен в manual – Панель управления Режима external mode обеспечивает ручное управление загрузки данных, например, кнопки Arm Trigger.

    • Флажок Arm when connecting to target устанавливается — Когда вы соединяете Simulink с целевым приложением, триггер вооружен.

  11. Нажмите OK.

  12. От вкладки Hardware в Редакторе Simulink, в разделе Run on Hardware:

    1. В поле Stop Time задайте свое значение, например, inf.

    2. Сохраните модель.

    3. Щелкнуть. Программное обеспечение:

      1. Создает целевое приложение:

      2. Запускает целевое приложение как отдельный процесс на вашем компьютере разработчика.

      3. Подключения Simulink к целевому приложению.

      4. Запускает сгенерированный типовой кодекс.

Чтобы просмотреть отображения осциллографа, дважды кликните ScopeA и ScopeB.

Чтобы контролировать сигналы в Инспекторе Данных моделирования, в разделе Review Results, нажимают кнопку the Data Inspector.

От Панели управления Режима external mode можно приостановить или возобновить логгирование сигнала и контроль. В разделе Connection and triggering нажмите Cancel Trigger или Arm Trigger соответственно.

Чтобы остановить выполнение целевого приложения и отключить Simulink от целевого окружения, нажмите Stop Real-Time Code.

Для получения информации о контроле сигналов и триггерных опциях, см. Панель управления Режима external mode XCP и XCP External Signal & Triggering Dialog Box.

Запустите симуляцию режима external mode XCP из командной строки

Можно использовать команды, чтобы запустить симуляции режима external mode XCP. Чтобы получить и установить значения параметров модели, используйте get_param и set_param команды.

Чтобы запустить эти команды, у вас должна быть открытая модель Simulink и выполнение целевого приложения.

  1. Установите режим симуляции модели на режим external mode.

    set_param(gcs,'SimulationMode','external');

  2. Соедините Simulink с целевым приложением.

    set_param(gcs,'SimulationCommand','connect')

  3. Запустите сгенерированный типовой кодекс.

    set_param(gcs,'SimulationCommand','start');

  4. Чтобы настроить параметр, измените его значение переменных рабочей области посредством команды линии. Например, если значение параметров блоков задано как Simulink.Parameter объект, присвойте новое значение Value свойство.

    myParamObj.Value = 5.23;

  5. Чтобы загрузить новое значение на целевое приложение, обновите модель.

    set_param(gcs,'SimulationCommand','update');

  6. Остановите целевое приложение и отключите Simulink от целевого окружения.

    set_param(gcs,'SimulationCommand','stop');

    Чтобы отключить Simulink от целевого приложения, не останавливая выполнение сгенерированного кода, используйте эту команду:

    set_param(gcs,'SimulationCommand','disconnect');

set_param команды, которые используют 'SimulationCommand' аргумент является асинхронным. Если при запуске команды последовательно из скрипта, каждая команда запускается, не ожидая предыдущей команды, чтобы завершиться. Чтобы проверять, что каждая команда завершена в скрипте, используют get_param команда с 'SimulationStatus' аргумент. Например, для шагов 1 - 3, задайте эти команды в скрипте:

set_param(gcs,'SimulationMode','external');
set_param(gcs,'SimulationCommand','connect');

isExternalSimulationActive = false;
while ~isExternalSimulationActive
    simStatus = get_param(gcs, 'SimulationStatus');
    isExternalSimulationActive = strcmp(simStatus, 'external');
end
set_param(gcs,'SimulationCommand','start');

Для получения дополнительной информации смотрите Симуляции Запуска Программно.

Диагностическое Средство просмотра отображает сообщения об ошибке, произведенные get_param и set_param команды.

Укажите пользовательское средство запуска

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

  1. Создайте rtw.connectivity.Config Подкласс (Embedded Coder), который требует myCustomLauncher, средство запуска, которое вы обеспечиваете. myCustomLauncher подкласс rtw.connectivity.Launcher (Embedded Coder). В myCustomLauncher, чтобы поддержать функциональность с одним нажатием кнопки, обеспечьте реализацию getApplicationStatus метод. Для коммуникатора и подклассов разработчика, можно использовать фиктивные классы.

    classdef myTargetConnectivityConfig < rtw.connectivity.Config
      methods
        % Constructor
        function this = myTargetConnectivityConfig(componentArgs)
          
          % Launcher with port 0 argument to start TCP/IP server on free port
          modelName = componentArgs.getModelName();
          bDirInfo = RTW.getBuildDir(modelName);
          exeName = fullfile(bDirInfo.CodeGenFolder, modelName);
          if ispc
            exeName = [exeName, '.exe'];
          end
          launcher = myCustomLauncher(componentArgs);
          launcher.setExe(exeName);
    
          % Create dummy communicator and builder
          communicator = rtw.connectivity.RtIOStreamHostCommunicator.empty();
          builder = rtw.connectivity.MakefileBuilder.empty();
    
          % Call super class constructor to register components
          this@rtw.connectivity.Config(componentArgs, builder, launcher, communicator);
        end
      end
    end

  2. Чтобы указать реализацию в Simulink, создайте sl_customization.m файл.

    function sl_customization(cm)
      cm.registerTargetInfo(@loc_createConfig);
    end
    % local function
    function config = loc_createConfig
      config = rtw.connectivity.ConfigRegistry;
      config.ConfigClass = 'myTargetConnectivityConfig';
    
      % Specify compatible model configuration. For example,
      % through SystemTargetFile and TargetHWDeviceType properties.
      config.SystemTargetFile = {'ert.tlc'};
      config.TargetHWDeviceType = { 'ARM Compatible->ARM Cortex' };
    end
    Смотрите Создают sl_customization.m Файл (Embedded Coder).

  3. Добавьте папку, содержащую sl_customization.m к пути поиска файлов и обновлению ваши индивидуальные настройки.

    addpath(sl_customization_path);
    sl_refresh_customizations;

Аргументы целевого приложения

Можно запустить целевое приложение с дополнительными аргументами. Можно передать дополнительные аргументы целевому приложению посредством пользовательской реализации средства запуска.

АргументОписание
-w

Укажите, что целевое приложение входит и остается в состоянии ожидания, пока оно не получает сообщение от Simulink.

Если вы не задаете -w, целевое приложение сразу выполняет типовой код. Типовой кодекс запускается со значениями параметров со времени, когда вы создали модель.

- tf time

Замените параметр модели StopTime.

Задайте time \in:

  • Секунды, если PurelyIntegerCode установлен в 'off'.

  • Базовая ставка продвигается если PurelyIntegerCode установлен в 'on'.

-tf inf указывает, что модель запускается неопределенно, когда типовой код выполнен.

Для основанных на хосте симуляций режима external mode можно задать дополнительный rtiostream (Embedded Coder) аргументы.

АргументОписание

- многословный level

Задайте уровень многословия:

  • 0 - Никакая информация

  • 1 - Подробная информация

- порт number

Для XCP on TCP/IP транспортный уровень, задайте номер порта сервера TCP/IP. Используйте целочисленное значение между 256 и 65535. Значение по умолчанию 17725.

Для XCP on Serial транспортный уровень, задайте ID последовательного порта. Например:

На Windows, 'COM1' или 1 для COM1, 'COM2' или 2 для COM2, и так далее.

На Linux, '/dev/ttyS0', и так далее.

- бод value

Для XCP on Serial транспортный уровень, задайте значение бода: 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600 (значение по умолчанию), или 115200.

Ограничения режима external mode XCP

Эта таблица описывает ограничения, которые применяются к симуляциям режима external mode то использование коммуникация XCP.

ФункцияДетали

Обновления параметра та структура модели изменения

Вы не можете измениться:

  • Количество состояний, входных параметров или выходных параметров блока

  • Шаг расчета или количество шагов расчета

  • Алгоритм интегрирования для непрерывных систем

  • Имя модели или блока

Если вы делаете обновления параметра, которые изменяют структуру модели, необходимо восстановить целевое приложение.

Можно изменить числитель и параметры полинома знаменателя для Transfer Fcn, Discrete Transfer Fcn и блоков Discrete Filter, если количество состояний не изменяется.

Вы не можете изменить нулевые записи в State-Space, Zero-Pole и блоках Discrete Zero-Pole в заданных пользователями или вычисленных параметрах, то есть, A, B, C, и матрицах D, полученных нулевым полюсным к преобразованию пространства состояний.

В блоке State-Space, если вы задаете матрицы в управляемой канонической реализации, затем превращается в A, B, C, и матрицы D, которые сохраняют эту реализацию и размерности матриц, позволены.

Если Диаграмма Simulink не совпадает с целевым приложением, Simulink производит ошибку при утверждении, что контрольные суммы не соответствуют. Контрольные суммы учитывают топ-моделей, но не модели, на которые ссылаются. Чтобы восстановить целевое приложение, используйте обновленную блок-схему.

Отображение значения сигналов

Графический дисплей значений сигналов во время симуляции не поддерживается. Например, вы не можете использовать пункты меню Data Display in Simulation Show Value Labels When Hovering, Toggle Value Labels When Clicked и Show Value Label of Selected Port. Для получения дополнительной информации смотрите Значения сигналов Отображения в Диаграммах модели.

Архивация данных

Функции Data Archiving, доступные на External Mode Control Panel, не поддерживаются. Можно использовать Инспектора Данных моделирования, чтобы собрать и экспортировать данные.

Переопределение настроек логгирования сигнала

Если вы используете Селектор Логгирования Сигнала, чтобы заменить настройки логгирования сигнала, средства управления, чтобы заменить настройки Decimation и Limit data points не поддерживаются.

Формат отладочного символа компилятора

Ваш набор инструментальных средств должен сгенерировать отладочную информацию в одном из этих форматов:

  • КАРЛИК

  • PDB

Встроенные параметры

Если вы устанавливаете DefaultParameterBehavior к 'Inlined', генератор кода встраивает числовые значения параметра модели вместо символьных названий параметра в сгенерированном коде. Можно использовать Simulink.Parameter объекты удалить удаляют параметры из встраивания и объявляют настраиваемые параметры. Однако, когда вы соединяете Simulink с целевым приложением, числовые значения настраиваемых параметров автоматически не загружаются на модель. Simulink производит предупреждение.

Глобальные переменные

Сигналы, параметры и состояния должны быть заданы как глобальные переменные. Целевые ячейки памяти, где переменные хранятся, должны находиться в диапазоне 0 – 4294967295.

Структуры параметра

Вы не можете настройки параметров, которые являются структурами.

Чистый целочисленный код

Чистый целочисленный код поддерживается. Для генерации кода, если PurelyIntegerCode 'on', задайте FixedStep с разрешением, которое больше или равно 1 микросекунде. Например, задайте 1.000001, но не 1.0000001.

Если вы не задаете-tf finalTime в команде выполнения целевое приложение запускает сгенерированный типовой кодекс неопределенно, игнорируя StopTime.

Если вы задаете-tf finalTime в команде выполнения:

  • finalTime значение представляет шаги базовой ставки, не секунды.

  • Максимальное значение для finalTime, в метках деления, MAX_int32_T.

Сигналы переменного размера

Загрузка сигналов переменного размера не поддерживается.

Поддержка компилятора

lcc-win64 не поддерживается.

Endianess

Целевой компьютер, который использует архитектуру с обратным порядком байтов, не поддерживается.

Обратитесь к гранулярности

Целевой компьютер, который использует адреса слова, не поддерживается.

Портативные размеры слова

Когда оборудование производственной платформы адресуемо словом, генерация основанного на хосте целевого приложения при помощи портативных размеров слова не поддерживается. Оборудование производственной платформы должно поддержать 8-битные, 16-битные, и 32-битные собственные типы данных.

Scope and Floating Scope блоки и Средство просмотра Осциллографа

Некоторые типы данных сигнала не поддерживаются. Симуляция производит предупреждение.

Осциллографы в моделях, на которые ссылаются,

В иерархии модели, если топ-модель запускается в режиме external mode и модели, на которую ссылаются, запускается в нормальном или режиме Accelerator, осциллографы в модели, на которую ссылаются, не отображены. Чтобы контролировать сигналы в модели, на которую ссылаются, включите логгирование сигнала и используйте Инспектора Данных моделирования.

Ненулевое время начала симуляции

Ненулевая симуляция запускается, времена не поддерживаются. Используйте значение по умолчанию для Solver> Start time, 0.0.

Промежуточные значения шага

Некоторые блоки Simulink могут сгенерировать несколько значений на шаге времени симуляции. Например:

Для каждого временного шага в симуляции режима external mode Simulink загружает из целевого приложения только окончательные значения таких блоков. Simulink не загружает промежуточные значения, сгенерированные во время шага.

Ограниченные по объему файлом данные

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

Для получения дополнительной информации о FileScope класс памяти, смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code (Embedded Coder).

Упорядоченная по строкам генерация кода

Код, сгенерированный с упорядоченным по строкам форматом, не поддерживается.

Параллельное выполнение

Параллельное выполнение не поддерживается. Если System target file является ert.tlc и Target operating system является NativeThreadsExample, вы не можете создать целевое приложение.

Пример VxWorks®

Если System target file является ert.tlc и Target operating system является VxWorksExample, вы не можете создать целевое приложение.

Сохранение симуляции выход как отдельный объектПри сохранении симуляции режима external mode XCP выход, когда не поддерживается отдельный объект. Симуляция производит предупреждение.

Похожие темы

Внешние веб-сайты