Симуляция режима 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, включите Hold Updates.

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

  4. Выключите Hold Updates или нажмите Update All Parameters (Ctrl+D). Simulink загружает новые значения на целевое приложение одновременно.

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

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

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

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

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

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

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

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

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

    Если Hold Updates выключен, то сразу после того, как вы нажимаете 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 команды.

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

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

АргументОписание
-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 не поддерживаются.

Логгирование сигнала подсистемы

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

Например, если сигналы в блоке Enabled Subsystem сконфигурированы для логгирования, программное обеспечение регистрирует значения сигналов, даже когда управляющий сигнал для подсистемы не больше нуля. В этом случае регистрируемые значения являются значениями, которые имели сигналы, когда управляющий сигнал в последний раз был больше нуля.

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

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

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

  • КАРЛИК

  • PDB

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На Windows и компьютерах Linux, поддерживается параллельное выполнение.

На компьютерах Mac не поддерживается параллельное выполнение с помощью нативного примера потоков. Если флажки External mode и Allow tasks to execute concurrently on target устанавливаются, вы не можете создать целевое приложение, если вы не используете пакет поддержки целевого компьютера, который поддерживает параллельное выполнение для симуляций режима external mode.

На компьютере Windows, во время выполнения, основной шаг расчета в целевом приложении квантуется к самому близкому кратному системный интервал прерывания по таймеру (обычно 15,625 мс). Производящие подуровни являются ожидаемыми множителями основной частоты дискретизации. Регистрируемые метки времени в Инспекторе данных моделирования (SDI) соответствуют временам симуляции, а не тактовые стеной времена. Как пример, эта таблица показывает времена шага для модели Simulink, которая имеет основной шаг расчета 10 мс и шаг расчета подуровня 20 мс.

Базовая ставкаПодуровень
Шаг Тактовое стеной время (мс) Регистрируемая метка времени (мс)ШагТактовое стеной время (мс)Регистрируемая метка времени (мс)
000000
1 15.625 10   
2 31.250 20 1 31.250 20
3 46.875 30   
4 62.500 40 2 62.500 40

VxWorks® пример

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

Сохранение симуляции выход как отдельный объектПри сохранении симуляции режима external mode XCP выход, когда не поддерживается отдельный объект. Симуляция производит предупреждение.
Упаковка структуры и выравниваниеДля упаковки и выравнивания структур C, ваш компилятор должен поддержать #pragma pack директива препроцессору. В противном случае целевое приложение может произвести неопределенное поведение.

Похожие темы

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

Для просмотра документации необходимо авторизоваться на сайте