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

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

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

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

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

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

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

Можно запустить симуляции режима external mode на компьютере разработчика или на специальном оборудовании.

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

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

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

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

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

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

    mkdir ext_mode_xcp_example
    cd ext_mode_xcp_example

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

    • Sine Wave

    • Scope

    • Half Gauge

    • Knob

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

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

  5. Сконфигурируйте сигнал для логгирования:

    1. Щелкните правой кнопкой по Test Signal.

    2. Из контекстного меню выберите Log Selected Signals. Если вы не включаете логгирование сигнала, вы не можете просмотреть сигнал при помощи блока Scope или потоковых данных сигнала Инспектору Данных моделирования.

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

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

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

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

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

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

    4. Нажмите OK.

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

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

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

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

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

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

    4. Нажмите OK.

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

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

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

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

  3. В разделе Prepare нажмите 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. Генератор кода использует matlabroot\toolbox\coder\xcp\src\target\ext_mode\include\ext_mode.h произвести пример основной файл, ert_main.c.

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

  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 к необходимому значению.

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

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

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 (Simulink).

Диалоговое окно 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 загружает новые значения на целевое приложение.

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

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

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

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

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

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

Графические средства управления для симуляций режима external mode XCP

Можно управлять симуляцией режима external mode XCP через:

  • Вкладка Hardware на панели инструментов Simulink Editor. Чтобы отобразить вкладку Hardware, от вкладки Apps на панели инструментов Simulink, нажимают Run on Custom Hardware.

  • Панель управления Режима external mode. Открыть это диалоговое окно, на вкладке Hardware, в разделе Prepare, нажатии кнопки. Затем под Signal Monitoring & Tracing нажмите Control Panel.

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

Действие режима external modeПанель инструментовПанель управления режима external mode

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

Run on Hardware> Build for Monitoring

Нет данных

Запустите приложение на целевом компьютере.

Run on Hardware> Deploy

Нет данных

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

Run on Hardware> Connect

То, когда Simulink соединяется с целевым приложением, Connect появляется, потускнело, и Disconnect активен.

Connect

Когда Simulink соединяется с целевым приложением, изменениями Connect в Disconnect.

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

Run on Hardware> Start

Start Real-Time Code

Когда сгенерированный код начинает выполняться, изменения кнопки в Stop Real-Time Code.

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

Run on Hardware> Disconnect

То, когда Simulink отключается от целевого приложения, Disconnect появляется, потускнело, и Connect активен.

Disconnect

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

В разделе Run on Hardware, кнопке Stop.

Stop Real-Time Code

Настройте пакет параметров блоков.

В разделе Prepare, кнопках Batch Mode и Update All Parameters.

Batch download

Настроить пакет параметров блоков:

  1. В Панели управления Режима external mode выберите Batch download.

    Batch download эквивалентен управлению панелью инструментов Simulink Batch Mode.

  2. В Редакторе Simulink измените необходимые параметры блоков.

  3. Когда вы изменяете параметры, Панель управления Режима external mode отображает это сообщение рядом с Download:

    Parameter changes pending...
    Simulink хранит модифицированные параметры локально.

    Download эквивалентен управлению панелью инструментов Simulink Update All Parameters.

  4. Нажмите Download. Simulink загружает пакет модифицированных параметров к целевому приложению.

Запустите симуляцию режима 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');

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

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

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

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

  1. Создайте rtw.connectivity.Config разделите на подклассы, который требует myCustomLauncher, средство запуска, которое вы обеспечиваете. myCustomLauncher подкласс rtw.connectivity.Launcher. В 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 Файл.

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

    addpath(sl_customization_path);
    sl_refresh_customizations;

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

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

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

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

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

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

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

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

- многословный 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. Для получения дополнительной информации смотрите Значения сигналов Отображения в Диаграммах модели (Simulink).

Инициирование сигнала и архивация данных

Signal & Triggering, Arm Trigger, Cancel Trigger и функции Data Archiving, доступные на External Mode Control Panel, не поддержаны.

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

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

Переопределение настроек логгирования сигналаПереопределение логгирования сигнала настроек при помощи Селектора Логгирования Сигнала не поддержано.

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

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

  • КАРЛИК

  • 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.

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

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

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

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

Пример VxWorks®

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

Похожие темы

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