В симуляции режима external mode вы можете настройки параметров в режиме реального времени и контролировать сигналы целевого приложения. Используя приложение Run on Custom Hardware, можно настроить и запустить симуляции режима external mode (Simulink Coder), которые используют канал связи XCP.
Для симуляции режима external mode, вас:
Создайте целевое приложение на своем компьютере разработчика.
Разверните целевое приложение в целевой компьютер.
Соедините Simulink® с целевым приложением, которое работает на целевом компьютере.
Запустите выполнение сгенерированного кода на целевом компьютере.
Можно запустить симуляции режима external mode на компьютере разработчика или на специальном оборудовании.
Сконфигурируйте и запустите симуляцию режима external mode (Simulink Coder), который использует протокол связи XCP. Во время симуляции:
Контролируйте сигнал при помощи блока Scope, блока Dashboard и Инспектора Данных моделирования.
Настройте параметр при помощи блока Dashboard.
Создайте папку для этого примера.
mkdir ext_mode_xcp_example cd ext_mode_xcp_example
Откройте Simulink и создайте простую модель, xcpExample
, который содержит эти блоки:
Sine Wave
Scope
Half Gauge
Knob
Дважды кликните блок Sine Wave. Установите Sample time на 0,1, и затем нажмите OK.
Соедините блок Sine Wave с блоком Scope и назовите связь, например, Test Signal
.
Сконфигурируйте сигнал для логгирования:
Щелкните правой кнопкой по Test Signal
.
Из контекстного меню выберите Log Selected Signals
. Если вы не включаете логгирование сигнала, вы не можете просмотреть сигнал при помощи блока Scope или потоковых данных сигнала Инспектору Данных моделирования.
Сконфигурируйте блок 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.
В разделе Hardware задайте системный конечный файл. В данном примере используйте значение по умолчанию, grt.tlc
. Если у вас есть Embedded Coder®, можно задать ert.tlc
.
В разделе Prepare нажмите 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. Генератор кода использует
произвести пример основной файл, matlabroot
\toolbox\coder\xcp\src\target\ext_mode\include\ext_mode.hert_main.c
.
Установите Target operating system на BareBoardExample
.
Нажмите 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 к необходимому значению.
Эта таблица описывает больше способов настроиться настраиваемый (Simulink) параметры блоков во время симуляции.
Подход | Детали |
---|---|
Model Data Editor | К настройкам параметров через Model Data Editor:
Для получения дополнительной информации смотрите Configure Data Properties при помощи Model Data Editor (Simulink). |
Диалоговое окно Block Parameter | К настройкам параметров через диалоговое окно Block Parameter:
|
Рабочая область MATLAB® | Если параметры блоков являются переменными рабочего пространства MATLAB:
Для получения дополнительной информации смотрите, Создают и Переменные Редактирования (MATLAB). |
Для получения дополнительной информации о параметре, настраивающемся со сгенерированным кодом, смотрите Симуляцию Режима external mode с TCP/IP или Последовательную передачу и Создайте Настраиваемый Калибровочный Параметр в Сгенерированном коде.
Если ваша модель содержит график Stateflow®, вы можете действие состояния отображения. Для получения дополнительной информации смотрите Анимационные диаграммы Stateflow (Stateflow).
Остановить выполнение сгенерированного типового кодекса перед StopTime
достигнут и отключите целевое приложение, на панели инструментов Simulink Editor, нажмите кнопку Stop.
Если вы хотите отключить целевое приложение от Simulink, не останавливая выполнение кода, щелкнуть. Затем под Step By Step Commands нажмите Disconnect.
Можно управлять симуляцией режима 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 Настроить пакет параметров блоков:
|
Можно использовать команды, чтобы запустить симуляции режима 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');
Для получения дополнительной информации смотрите Симуляции Запуска Программно (Simulink).
Диагностическое Средство просмотра отображает сообщения об ошибке, произведенные 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 | Замените параметр модели StopTime . -tf inf указывает, что модель запускается неопределенно, когда типовой код выполнен. |
Для основанных на хосте симуляций режима 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. Для получения дополнительной информации смотрите Значения сигналов Отображения в Диаграммах модели (Simulink). |
Инициирование сигнала и архивация данных | Signal & Triggering, Arm Trigger, Cancel Trigger и функции Data Archiving, доступные на External Mode Control Panel, не поддержаны. |
Потоковая передача сигнала | Динамический выбор сигналов для потоковой передачи не поддержан. Чтобы выбрать различные сигналы для потоковой передачи, восстановите модель. |
Переопределение настроек логгирования сигнала | Переопределение логгирования сигнала настроек при помощи Селектора Логгирования Сигнала не поддержано. |
Формат отладочного символа компилятора | Ваш набор инструментальных средств должен сгенерировать отладочную информацию в одном из этих форматов:
|
Встроенные параметры | Если вы устанавливаете |
Глобальные переменные | Сигналы, параметры и состояния должны быть заданы как глобальные переменные. Целевые ячейки памяти, где переменные хранятся, должны находиться в диапазоне 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 является |