В симуляции режима external mode вы можете настройки параметров в режиме реального времени и контролировать сигналы целевого приложения. Используя приложение Run on Custom Hardware, можно настроить и работать компьютере разработчика или симуляциях режима external mode специального оборудования, которые используют канал связи XCP.
Для симуляции режима external mode, вас:
Создайте целевое приложение на своем компьютере разработчика.
Разверните целевое приложение в целевой компьютер.
Соедините Simulink® с целевым приложением, которое работает на целевом компьютере.
Запустите выполнение сгенерированного кода на целевом компьютере.
Сконфигурируйте и запустите симуляцию режима external mode, которая использует протокол связи XCP. Во время симуляции:
Контролируйте сигнал при помощи блока Scope, блока Dashboard и Инспектора Данных моделирования.
Настройте параметр при помощи блока Dashboard.
Создайте папку для этого примера.
mkdir ext_mode_xcp_example cd ext_mode_xcp_example
Откройте Simulink и создайте простую модель, xcpExample
, который содержит эти блоки:
Sine Wave
Gain
Scope
Half Gauge
Knob
Дважды кликните блок Sine Wave. Установите Sample time на 0,1, и затем нажмите OK.
Дважды кликните блок Gain. Установите Gain на 2, и затем нажмите OK.
Соедините блок Sine Wave с блоком Gain и назовите связь, например, Test Signal
.
Соедините блок Gain с блоком Scope и назовите связь, например, Output Signal
.
Сконфигурируйте Test Signal
для логгирования:
Выберите Test Signal
.
На вкладке Signal, в разделе Monitor, выбирают Log Signals.
Если вы не включаете логгирование сигнала, вы не можете передать потоком Test Signal
инспектору данных моделирования.
Сконфигурируйте блок Half Gauge, чтобы контролировать значение Test Signal
:
Дважды кликните блок Half Gauge.
В Редакторе Simulink выберите Test Signal
.
В диалоговом окне Block Parameters:
Соедините блок с Test Signal
.
В поле Maximum введите значение, например, 1
.
Нажмите OK.
Сконфигурируйте блок Knob, чтобы настроить параметр Amplitude блока Sine Wave:
Дважды кликните блок Knob.
В Редакторе Simulink выберите блок Sine Wave.
В диалоговом окне Block Parameters:
Соедините блок с параметром Amplitude блока Sine Wave.
В полях Minimum и Maximum введите значения, например, 0.1 и 1 соответственно.
Нажмите OK.
Сохраните модель как xcpExample
.
От вкладки Apps на панели инструментов Simulink, в разделе Setup to Run on Hardware, нажимают Run on Custom Hardware. На всплывающем диалоговом окне Run on Custom Hardware нажмите Finish.
В разделе Hardware задайте системный конечный файл. В данном примере используйте значение по умолчанию, grt.tlc
. Если у вас есть Embedded Coder®, можно задать ert.tlc
.
В галерее Prepare, под Model Configuration, нажимают Hardware Settings. Диалоговое окно Configuration Parameters открывается, отображая настройки Hardware Implementation, которые определяются системным конечным файлом.
На панели Solver:
В поле Type задайте Fixed-step
.
Под Solver details, в поле Fixed-step size, задают значение, например, 0.1.
На Code Generation> панель Optimization, набор Default parameter behavior к Tunable
.
На Code Generation> панель Interface, установите флажок External mode.
Установите Transport layer на XCP on TCP/IP
, который задает ext_xcp
для MEX-file name.
Вы не можете отключить флажок Static memory allocation. Значение Static memory buffer size задает размер ведомой памяти XCP, которая выделяется для логгирования сигнала. В данном примере используйте значение по умолчанию.
Если System target file является ert.tlc
, на Code Generation> панель Templates:
Установите флажок Generate an example main program.
Установите Target operating system на BareBoardExample
.
Используя зарегистрированные API уровня абстракции режима external mode, которые доступны в
, генератор кода создает пример, который показывает, как можно обеспечить целевую возможность соединения режима external mode XCP для несмонтированной платы, которая не запускает операционную систему.matlabroot
\toolbox\coder\xcp\src\target\ext_mode\include\ext_mode.h
Нажмите OK. Затем сохраните модель.
В разделе Run on Hardware:
Чтобы задать значение не по умолчанию для времени остановки симуляции, в поле Stop Time, задают ваше значение, например, inf
.
Щелкнуть. Программное обеспечение:
Создает целевое приложение:
В Windows® процесс сборки создает:
xcpExample.exe
– Исполняемый файл.
xcpExample.pdb
– Файл отладочной информации для сигналов и параметров.
В Linux® процесс сборки помещает отладочную информацию формата DWARF в созданный исполняемый файл ELF, xcpExample
.
Запускает целевое приложение как отдельный процесс на вашем компьютере разработчика.
Подключения Simulink к целевому приложению.
Запускает сгенерированный типовой кодекс.
Чтобы выполнить шаги отдельно, нажмите Monitor & Tune. Под Step By Step Commands щелкните:
Build for Monitoring
Deploy
Connect
Start
Можно контролировать Test Signal
через:
Блок Scope – Дважды кликает блок.
Инспектор Данных моделирования – Нажимает кнопку Simulation Data Inspector. Когда Инспектор Данных моделирования открывается, установите флажок Test Signal, который отображает переданные потоком данные.
Блок Half-Gauge.
Чтобы изменить амплитуду синусоиды, вращайте указатель на блоке Knob к необходимому значению.
Эта таблица описывает больше способов настроить настраиваемые параметры блоков во время симуляции.
Подход | Детали |
---|---|
Model Data Editor | К настройкам параметров через Model Data Editor:
Для получения дополнительной информации смотрите Configure Data Properties при помощи Model Data Editor. |
Диалоговое окно Block Parameter | К настройкам параметров через диалоговое окно Block Parameter:
|
Рабочая область MATLAB® | Если параметры блоков являются переменными рабочего пространства MATLAB:
Для получения дополнительной информации смотрите, Создают и Переменные Редактирования. |
Для получения дополнительной информации о параметре, настраивающемся со сгенерированным кодом, смотрите Симуляцию Режима external mode с TCP/IP или Последовательную передачу и Создайте Настраиваемый Калибровочный Параметр в Сгенерированном коде.
Если ваша модель содержит график Stateflow®, вы можете действие состояния отображения. Для получения дополнительной информации смотрите Анимационные диаграммы Stateflow (Stateflow).
Остановить выполнение сгенерированного типового кодекса перед StopTime
достигнут и отключите целевое приложение, на панели инструментов Simulink Editor, нажмите кнопку Stop.
Если вы хотите отключить целевое приложение от Simulink, не останавливая выполнение кода, щелкнуть. Затем под Step By Step Commands нажмите Disconnect.
Для симуляций режима external mode XCP можно сконфигурировать триггер, который запускает загрузку данных о целевом приложении для контроля сигналов в Simulink.
В Редакторе Simulink сконфигурируйте эти сигналы для логгирования путем щелчка правой кнопкой по каждому сигналу и затем выбора Log Selected Signals:
test_signal
test_carrier
test_output
cmp_output
От вкладки Apps на панели инструментов Simulink, в разделе Setup to Run on Hardware, нажимают Run on Custom Hardware. На всплывающем диалоговом окне Run on Custom Hardware нажмите Finish.
В галерее Prepare, под Model Configuration, нажимают Hardware Settings.
На панели Solver, в поле Type, задают Fixed-step
.
На Code Generation> панель Interface, установите флажок External mode.
Установите Transport layer на XCP on TCP/IP
, который задает ext_xcp
для MEX-file name.
Нажмите OK. Затем сохраните модель.
Чтобы открыть диалоговое окно External Signal & Triggering, из галереи Prepare, под Signal Monitoring & Tracing, нажимают Control Panel.
В разделе Configuration нажмите Signal & Triggering, который открывает диалоговое окно External Signal & Triggering.
Через это диалоговое окно можно выбрать сигналы для контроля и сконфигурировать триггер для загрузки данных из целевого приложения. В данном примере используйте настройки по умолчанию. Например:
Флажок Select all устанавливается — диалоговое окно отображается X
в каждой строке столбца Selected. Можно контролировать все регистрируемые сигналы во время симуляции.
Source установлен в manual – Панель управления Режима external mode обеспечивает ручное управление загрузки данных, например, кнопки Arm Trigger.
Флажок Arm when connecting to target устанавливается — Когда вы соединяете Simulink с целевым приложением, триггер вооружен.
Нажмите OK.
От вкладки Hardware в Редакторе Simulink, в разделе Run on Hardware:
В поле Stop Time задайте свое значение, например, inf
.
Сохраните модель.
Щелкнуть. Программное обеспечение:
Создает целевое приложение:
Запускает целевое приложение как отдельный процесс на вашем компьютере разработчика.
Подключения Simulink к целевому приложению.
Запускает сгенерированный типовой кодекс.
Чтобы просмотреть отображения осциллографа, дважды кликните 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. Чтобы получить и установить значения параметров модели, используйте get_param
и set_param
команды.
Чтобы запустить эти команды, у вас должна быть открытая модель Simulink и выполнение целевого приложения.
Установите режим симуляции модели на режим external mode.
set_param(gcs,'SimulationMode','external');
Соедините Simulink с целевым приложением.
set_param(gcs,'SimulationCommand','connect')
Запустите сгенерированный типовой кодекс.
set_param(gcs,'SimulationCommand','start');
Чтобы настроить параметр, измените его значение переменных рабочей области посредством команды линии. Например, если значение параметров блоков задано как Simulink.Parameter
объект, присвойте новое значение Value
свойство.
myParamObj.Value = 5.23;
Чтобы загрузить новое значение на целевое приложение, обновите модель.
set_param(gcs,'SimulationCommand','update');
Остановите целевое приложение и отключите 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 для специального оборудования, укажите свое пользовательское средство запуска для целевого приложения.
Создайте 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
Чтобы указать реализацию в 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
к пути поиска файлов и обновлению ваши индивидуальные настройки.
addpath(sl_customization_path); sl_refresh_customizations;
Можно запустить целевое приложение с дополнительными аргументами. Можно передать дополнительные аргументы целевому приложению посредством пользовательской реализации средства запуска.
Аргумент | Описание |
---|---|
-w | Укажите, что целевое приложение входит и остается в состоянии ожидания, пока оно не получает сообщение от Simulink. Если вы не задаете |
- tf | Замените параметр модели Задайте
|
Для основанных на хосте симуляций режима external mode можно задать дополнительный rtiostream
аргументы.
Аргумент | Описание |
---|---|
| Задайте уровень многословия:
|
| Для Для На Windows, На Linux, |
| Для |
Эта таблица описывает ограничения, которые применяются к симуляциям режима 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 не поддерживаются. |
Формат отладочного символа компилятора | Ваш набор инструментальных средств должен сгенерировать отладочную информацию в одном из этих форматов:
|
Встроенные параметры | Если вы устанавливаете |
Глобальные переменные | Сигналы, параметры и состояния должны быть заданы как глобальные переменные. Целевые ячейки памяти, где переменные хранятся, должны находиться в диапазоне 0 – 4294967295. |
Структуры параметра | Вы не можете настройки параметров, которые являются структурами. |
Чистый целочисленный код | Чистый целочисленный код поддерживается. Для генерации кода, если Если вы не задаете Если вы задаете
|
Сигналы переменного размера | Загрузка сигналов переменного размера не поддерживается. |
Поддержка компилятора |
|
Endianess | Целевой компьютер, который использует архитектуру с обратным порядком байтов, не поддерживается. |
Обратитесь к гранулярности | Целевой компьютер, который использует адреса слова, не поддерживается. |
Портативные размеры слова | Когда оборудование производственной платформы адресуемо словом, генерация основанного на хосте целевого приложения при помощи портативных размеров слова не поддерживается. Оборудование производственной платформы должно поддержать 8-битные, 16-битные, и 32-битные собственные типы данных. |
Scope and Floating Scope блоки и Средство просмотра Осциллографа | Некоторые типы данных сигнала не поддерживаются. Симуляция производит предупреждение. |
Осциллографы в моделях, на которые ссылаются, | В иерархии модели, если топ-модель запускается в режиме external mode и модели, на которую ссылаются, запускается в нормальном или режиме Accelerator, осциллографы в модели, на которую ссылаются, не отображены. Чтобы контролировать сигналы в модели, на которую ссылаются, включите логгирование сигнала и используйте Инспектора Данных моделирования. |
Ненулевое время начала симуляции | Ненулевая симуляция запускается, времена не поддерживаются. Используйте значение по умолчанию для Solver> Start time, |
Промежуточные значения шага |
Некоторые блоки Simulink могут сгенерировать несколько значений на шаге времени симуляции. Например:
Для каждого временного шага в симуляции режима external mode Simulink загружает из целевого приложения только окончательные значения таких блоков. Simulink не загружает промежуточные значения, сгенерированные во время шага. |
Ограниченные по объему файлом данные | Ограниченные по объему файлом данные не поддерживаются. Например, элементы данных, к которым вы применяете встроенный пользовательский класс памяти Для получения дополнительной информации о |
Упорядоченная по строкам генерация кода | Код, сгенерированный с упорядоченным по строкам форматом, не поддерживается. |
Параллельное выполнение | Параллельное выполнение не поддерживается. Если System target file является ert.tlc и Target operating system является NativeThreadsExample , вы не можете создать целевое приложение. |
Пример VxWorks® | Если System target file является |
Сохранение симуляции выход как отдельный объект | При сохранении симуляции режима external mode XCP выход, когда не поддерживается отдельный объект. Симуляция производит предупреждение. |