Симуляция режима 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. Во время симуляции:

  • Отслеживайте сигнал с помощью блока Возможностей, блока Dashboard и Данных моделирования Inspector.

  • Настройте параметр с помощью блока 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. В диалоговом окне Параметров блоков:

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

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

    4. Нажмите OK.

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

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

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

    3. В диалоговом окне Параметров блоков:

      • Соедините блок с параметром 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Генератор кода создает пример, который показывает, как можно обеспечить XCP режима external mode целевое подключение для голой платы, которая не работает под управлением операционной системы.

  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 - нажмите кнопку Данные Моделирования Inspector. Когда откроются Данные моделирования Inspector, установите флажок Test Signal, который отображает потоковые данные.

  • Half-Gauge блок.

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

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

ПодходПодробнее

Model Data Editor

Чтобы настроить параметры через Model Data Editor:

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

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

  3. На вкладке < reservedrangesplaceholder1 > Model Data Editor в столбце Value задайте новые значения для настраиваемых параметров.

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

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

Для получения дополнительной информации см. «Настройка свойств данных при помощи Model Data Editor».

Параметры блоков диалоговое окно

Чтобы настройки параметров через диалоговое окно Параметров блоков:

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

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

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

    3. Щелкните Apply или OK.

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

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

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

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

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

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

Для получения дополнительной информации см. раздел «Создание и редактирование переменных».

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

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

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

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

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

Триггерные Контроли сигналов для симуляций Режима external mode XCP

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

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

  2. В Редактор сконфигурируйте эти сигналы для логгирования, щелкнув правой кнопкой мыши каждый сигнал и затем выбрав 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.

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

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

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

Для получения информации о контроле сигналов и опциях триггера смотрите XCP External Mode Панель и 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. Чтобы настроить параметр, измените его значение переменных рабочей области с помощью команды line. Для примера, если параметры блоков значение заданы как 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');

The 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');

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

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

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

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

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

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

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

-tf time

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

Задайте time в:

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

  • Шаги базовой скорости, если PurelyIntegerCode установлено в 'on'.

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

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

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

-verbose level

Задайте уровень подробностей:

  • 0 -- Нет информации

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

-портовый number

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

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

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

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

-baud 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, не поддерживаются. Для сбора и экспорта данных можно использовать Данные моделирования Inspector.

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

Если вы используете Signal Logging Selector для переопределения настроек логгирования сигналов, элементы управления для переопределения настроек Decimation и Limit data points не поддерживаются.

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

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

  • КАРЛИК

  • PDB

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

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

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

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

Параметрические структуры

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

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

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

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

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

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

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

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

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

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

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

Адресная зернистость

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

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

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

Scope и Floating Scope блоки и Средство Просмотра

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

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

Возможности в ссылочных моделях

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

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

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

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

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

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

Данные с разбиением на файлы

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

Для получения дополнительной информации о FileScope класс памяти, см. «Выбор класса памяти для управления представлением данных в сгенерированном коде».

Генерация кода основной строки

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

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

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

VxWorks® пример

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

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

Похожие темы

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