Симуляция режима external mode с TCP/IP или последовательной связью

Настройте и запустите симуляцию режима external mode, которая использует TCP/IP или последовательный (RS-232) канал связи.

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

  2. Создайте целевой исполняемый файл.

  3. Запустите целевое приложение.

  4. Настройки параметров.

Пример, в котором используется цель GRT, не требует внешнего оборудования. Сгенерированный исполняемый файл запускается:

  • На компьютере разработчика, на котором размещен Simulink® и Simulink Coder™.

  • Как отдельный процесс от MATLAB® и Simulink.

Создайте и сконфигурируйте модель

В этой части примера вы создаете простую модель, ex_extModeExample. Вы также создаете папку с именем ext_mode_example для хранения модели и сгенерированного исполняемого файла.

Чтобы создать папку и модель:

  1. В командной строке MATLAB введите:

    mkdir ext_mode_example
  2. Делайте ext_mode_example ваша рабочая папка:

    cd ext_mode_example
  3. Создайте модель в Simulink с Sine Wave блоком для входного сигнала, двумя блоками Gain параллельно и двумя блоками Scope. Обязательно пометьте блоки Gain и Scope как показано на рисунке.

  4. Задайте и присвойте двух рабочих пространств MATLAB, A и B:

    A = 2;
    B = 3;
  5. Откройте блок Gain A и установите его параметр Gain на переменную A.

  6. Откройте блок Gain B и установите его параметр Gain на переменную B.

    Когда целевое приложение построено и подключено к Simulink во режиме external mode, можно загрузить новые значения усиления в выполняющееся целевое приложение. Для этого можно назначить новые значения переменным рабочей области A и B, или отредактируйте значения в диалоговом окне параметров блоков. Для получения дополнительной информации см. Раздел «Настройки параметров».

  7. Проверьте операцию модели. Откройте блоки Scope и запустите модель. Когда A = 2 и B = 3, отобразится выход как показано на рисунке.

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

Создайте целевой исполняемый файл

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

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

  2. В Hardware разделе из списка System Target File Description выберите Generic Real-Time Target (grt.tlc).

  3. В Prepare разделе нажмите Hardware Settings. Откроется диалоговое окно Параметры конфигурации (Configuration Parameters), в котором отображаются Hardware Implementation настройки, определяемые системным целевым файлом.

  4. На панели Solver:

    1. В Type поле выберите Fixed-step.

    2. В Solver поле выберите discrete (no continuous states).

    3. Нажмите Solver details. В поле Fixed-step size задайте 0.1. (В противном случае, когда вы генерируете код, процесс сборки Simulink Coder выдает предупреждение и задает значение.)

    4. Нажмите Apply.

  5. На панели Data Import/Export снимите флажки Time и Output. В этом примере данные не регистрируются в рабочей области или в MAT-файле. Нажмите Apply.

  6. На панели Code Generation > Optimization проверьте, что для Default parameter behavior задано значение Tunable. Если вы вносите изменения, нажмите Apply.

  7. На панели Code Generation > Interface в разделе Data exchange interface выберите External mode.

  8. В разделе External mode configuration убедитесь, что значение по умолчанию tcpip выбран для параметра Transport layer.

    Режим external mode поддерживает связь через TCP/IP, последовательные и пользовательские транспортные протоколы. Этот MEX-file name задает имя файла MEX, который реализует коммуникацию хоста с объектом. Значение по умолчанию для TCP/IP ext_comm, файл MEX, поставляемый с программным обеспечением Simulink Coder. Вы можете переопределить это значение по умолчанию, предоставив другие файлы. Если необходимо поддержать другие транспортные слои, см. раздел «Создание транспортного уровня для TCP/IP или коммуникации в последовательном режиме external mode».

    Поле MEX-file arguments позволяет вам задать аргументы, такие как номер порта сервера TCP/IP, которые будут переданы программе внешнего интерфейса. Эти аргументы относятся только к используемому внешнему интерфейсу. Для получения информации о настройке этих аргументов см. Дополнительные аргументы файла MEX для транспорта TCP/IP и Дополнительные аргументы файла MEX для последовательного транспорта.

    Этот пример использует аргументы по умолчанию. Оставьте поле MEX-file arguments пустым.

    Флажок Static memory allocation управляет выделением памяти для буферов связи режима external mode в целевой системе. В данном примере не устанавливайте флажок. Для получения дополнительной информации смотрите Управление Выделением Памяти для Буферов Связи в Целевой.

  9. Нажмите кнопку Apply, чтобы сохранить настройки режима external mode.

  10. Сохраните модель.

  11. Выберите панель Code Generation. Убедитесь, что Generate code only сброшена.

  12. Чтобы сгенерировать код и создать целевое приложение, в окне модели нажмите Ctrl+B. Или на вкладке Hardware, в разделе Run on Hardware, нажмите Monitor & Tune. Затем, под Step By Step Commands, нажмите Build for Monitoring.

    Программное обеспечение создает ex_extModeExample исполняемый файл в рабочей папке.

Запуск целевого приложения

Теперь вы запускаете ex_extModeExample целевой исполняемый файл и использование Simulink в качестве интерактивного фронтэнда к выполняемому целевому приложению. Исполняемый файл находится в вашей рабочей папке. Запустите целевое приложение и установите связь между Simulink и объектом.

Примечание

Программа режима external mode, такая как ex_extModeExample является исполняемым файлом на основе хоста. Его выполнение не привязано ни к операционной системе реального времени (RTOS), ни к периодическому прерыванию таймера, и оно не запускается в режиме реального времени. Программа просто запускается как можно быстрее, и единицы времени, которые она отсчитывает, являются симулированными модулями времени, которые не соответствуют времени в мире вне программы.

Чтобы запустить целевое приложение:

  1. На вкладке Hardware, в разделе Run on Hardware:

    1. В поле Stop Time задайте inf, что заставляет модель запускаться, пока целевое приложение не получит стоповое сообщение от Simulink

    2. Нажмите Monitor & Tune. Затем, под Step By Step Commands, нажмите Deploy.

    Целевое приложение начинает выполнение и переходит в состояние ожидания.

  2. Откройте блоки Scope в модели. Сигналы не видны на возможностях, пока вы не начнете выполнение модели.

  3. На вкладке Hardware, в разделе Run on Hardware, нажмите Monitor & Tune. Затем, под Step By Step Commands, нажмите Connect. Это действие инициирует квитирование между Simulink и целевым приложением. Когда Simulink и цель подключены, кнопка Connect изменяется на Disconnect.

  4. В разделе Run on Hardware щелкните, который начинает выполнение сгенерированного кода модели. Две возможности в модели отображают выходы блоков Gain A и B.

Вы установили связь между Simulink и запущенным целевым приложением. Теперь можно настроить параметры блоков в Simulink и наблюдать эффекты изменений параметров.

Настройки параметров

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

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

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

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

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

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

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

/* Parameters (auto storage) */
struct P_ex_extModeExample_T_ {
  real_T A;                            /* Variable: A
                                        */
  real_T B;                            /* Variable: B
                                        */
  real_T SineWave_Amp;                 /* Expression: 1
                                        */
  real_T SineWave_Bias;                /* Expression: 0
                                        */
  real_T SineWave_Freq;                /* Expression: 1
                                        */
  real_T SineWave_Phase;               /* Expression: 0
                                        */
};

Алгоритм сгенерированного кода использует это поле в коде, который представляет Gain A блока. В этом случае переменная глобальной структуры ex_extModeExample_P использует тип P_ex_extModeExample_T_:

ex_extModeExample_B.GainA = ex_extModeExample_P.A * rtb_SineWave;

Когда вы меняете значение A в базовом рабочем пространстве симуляция загружает новое значение в поле A в целевом приложении.

Можно изменить выражения в параметрах блоков Sine Wave во время симуляции, потому что сгенерированный код создает поле в глобальной структуре ex_extModeExample_P для представления каждого параметра в блоке. Когда вы меняете выражение в диалоговом окне блока, симуляция сначала оценивает новое выражение. Затем симуляция загружает полученное числовое значение в соответствующее поле структуры в целевом приложении.

См. «Создание настраиваемого параметра калибровки в сгенерированном коде».

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

Чтобы одновременно отсоединить Simulink от хоста/целевой коммуникации и завершить выполнение целевого приложения, на вкладке Hardware, в разделе Run on Hardware, нажмите Stop.

Управление выделением памяти для буферов связи в целевой системе

Если установить флажок Code Generation > Interface > Static memory allocation (для целей GRT и ERT), генератор кода производит код для режима external mode, который использует только статическое выделение памяти (код «malloc-free»). Выбор Static memory allocation включает параметр Static memory buffer size. Используйте этот параметр, чтобы задать размер статического буфера памяти режима external mode. Значение по умолчанию является 1 000 000 байт. Если вы вводите слишком маленькое значение для программы, симуляция режима external mode вызывает ошибку нехватки памяти, когда она пытается выделить больше памяти, чем указано. В таких случаях увеличьте значение в поле Static memory buffer size и перегенерируйте код.

Чтобы определить, сколько памяти выделить, включите подробный режим на цели (путем включения OPTS="-DVERBOSE" на make командная строка). Во время выполнения режим external mode отображает объем памяти, который он пытается выделить, и объем памяти, доступный ему каждый раз, когда он пытается выделить. В случае сбоя выделения можно использовать этот журнал консоли для определения необходимого значения для поля Static memory buffer size.

TCP/IP или панель управления последовательного режима external mode

Панель управления режимом external mode обеспечивает управление для операций TCP/IP или последовательного режима external mode, включая:

Чтобы открыть диалоговое окно Панель управления режим external mode, на вкладке Hardware, в разделе Prepare, нажмите Control Panel.

Подключение, запуск и остановка

Панель управления режима external mode выполняет те же функции подключения/отключения и запуска/останова, что и на вкладке Hardware на панели инструментов Simulink (см. «Сводные данные графических элементов управления для TCP/IP или Симуляции последовательного режима external mode»).

Нажатие кнопки Connect соединяет вашу модель с ожидающим или запущенным целевым приложением. Во время подключения кнопка изменяется на кнопку Disconnect. Disconnect отключает вашу модель от целевого окружения, но не останавливает выполнение кода в реальном времени в целевом окружении.

При нажатии кнопки Start Real-Time Code целевое устройство начинает запускать код в реальном времени. В то время как код в реальном времени запускается в целевом окружении, кнопка изменяется на кнопку Stop Real-Time Code. Stop Real-Time Code останавливает выполнение целевого приложения и отключает вашу модель от целевого окружения.

Загрузка данных сигнала целевого приложения на хост

Панель управления режимом external mode позволяет запускать и отменять отправку данных на хост. Адресатом для выгруженных данных может быть блок scope, блок Display, блок To Workspace или другой блок или подсистема, перечисленные в Блоках и Подсистемах, совместимых с Режимом external mode.

Кнопки Arm Trigger и Cancel Trigger обеспечивают ручное управление загрузкой данных в совместимые блоки или подсистемы, кроме плавающих возможностей. (Для плавающих возможностей используйте раздел Floating scope панели управления режима external mode.)

  • Чтобы вызвать загрузку данных в совместимые блоки или подсистемы, нажмите кнопку Arm Trigger. Кнопка изменяется на Cancel Trigger.

  • Чтобы отменить загрузку данных, нажмите кнопку Cancel Trigger. Кнопка возвращается к Arm Trigger.

Можно инициировать загрузку данных вручную или автоматически. Чтобы сконфигурировать сигналы и триггеры для загрузки данных, смотрите Configure Host Monitoring of Целевое Приложение Signal Data.

Подмножество блоков, совместимых с режимом external mode, включая Scope, Time Scope и To Workspace, позволяет вам записывать загруженные данные на диск. Для настройки архивации данных смотрите Конфигурация архивации хоста данных целевого сигнала целевого приложения.

Раздел Floating scope панели управления режима external mode определяет, когда и как долго данные загружаются в блоки плавающих возможностей. При использовании во режиме external mode плавающие возможности:

  • Не отображаться в диалоговом окне «Внешний сигнал и триггер».

  • Не регистрируйте данные во режиме external mode архивации.

  • Поддержите только ручное срабатывание.

Раздел Floating scope содержит следующие параметры:

  • Enable data uploading опция, которая функционирует как кнопка Arm Trigger для плавающих возможностей. Когда цель отключена, опция управляет, следует ли вооружать триггер при соединении плавающих возможностей. Когда цель подключена, опция действует как кнопка-переключатель, чтобы вооружить или отменить триггер.

    • Чтобы инициировать загрузку данных в плавающие возможности, выберите Enable data uploading.

    • Чтобы отменить загрузку данных в плавающие возможности, очистите Enable data uploading.

  • Duration edit, которое задает количество шагов базовой скорости, для которых режим external mode регистрирует данные плавающих возможностей после события триггера. По умолчанию задано значение auto, что приводит к использованию значения длительности, заданного в диалоговом окне External Signal & Triggering. Значение длительности по умолчанию является 1000 шагом базовой скорости.

Загрузка параметров в целевое приложение

Опция Batch download на панели управления режима external mode включает или отключает изменение пакетного параметра.

По умолчанию загрузка пакета отключена. Если загрузка пакета отключена, при нажатии кнопки OK или Apply изменения, внесенные непосредственно в параметры блоков путем редактирования диалоговых окон параметра блока, отправляются в конечный объект. При выполнении Update Diagram отправляются изменения переменных рабочего пространства MATLAB.

Если вы выбираете Batch download, кнопка Download активируется. Пока вы не нажмете Download, изменения, внесенные в параметры блоков, сохраняются локально. При нажатии Download изменения отправляются в одной передаче.

Когда изменения параметров ожидают пакетной загрузки, на панели управления режима external mode отображается сообщение Parameter changes pending... справа от кнопки Download. Это сообщение остается видимым, пока механизм Simulink не получит уведомление о том, что новые параметры были установлены в векторе параметров целевой системы.

Следующий рисунок показывает Панель управления режима external mode с активированной опцией Batch download и ожидающими изменений параметров.

Сконфигурируйте мониторинг хоста данных сигнала целевого приложения

Роль триггера в загрузке данных сигнала

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

  • Когда триггер вооружен, программное обеспечение проверяет условия триггера, которые позволяют начать загрузку данных.

  • Если триггер не вооружен, программное обеспечение не проверяет условия триггера, и загрузка данных не может начаться.

  • Триггер может быть подключен автоматически, при подключении хоста к цели, или вручную, нажав кнопку Arm Trigger на панели управления режима external mode.

Когда триггер вооружен и условия триггера достигнуты, триггер запускается, и начинается загрузка данных.

Когда данные были собраны в течение определенной длительности, событие триггера завершается, и загрузка данных останавливается. Триггер может затем перевооружаться или оставаться невооруженным, пока вы не нажмете кнопку Arm Trigger.

Чтобы выбрать сигналы целевого приложения для загрузки и настройки запуска загрузки, смотрите Настройте Загрузку Данных Сигнала.

Сконфигурируйте загрузку сигнальных данных

Нажатие кнопки Signal & Triggering на панели управления режима external mode открывает диалоговое окно External Signal & Triggering.

Диалоговое окно External Signal & Triggering отображает список блоков и подсистем в вашей модели, которые поддерживают загрузку сигнала режима external mode. Для получения информации о том, какие типы блоков совместимы с режимом external mode, смотрите Блоки и Подсистемы, совместимые с режимом external mode.

В диалоговом окне External Signal & Triggering можно выбрать сигналы, которые собираются из целевой системы и просматриваются во режиме external mode. Можно также выбрать триггерный сигнал, который запускает загрузку данных на основе достижения определенных условий сигнала и определять условия запуска.

Опции триггера по умолчанию

Предыдущий рисунок показывает настройки по умолчанию диалогового окна External Signal & Triggering. Операция по умолчанию диалогового окна External Signal & Triggering упрощает мониторинг целевого приложения. Если вы используете настройки по умолчанию, вам не нужно предварительно конфигурировать сигналы и триггеры. Вы запускаете целевое приложение и соединяете с ним движок Simulink. Выбираются блоки, совместимые с режимом external mode, и триггер активируется. Загрузка сигнала начинается сразу после подключения к целевому приложению.

По умолчанию строение параметров триггера:

  • Select all: on

  • Source: руководство

  • Mode: normal

  • Duration: 1000

  • Delay: 0

  • Arm when connecting to target: on

Выберите сигналы для загрузки

Блоки, совместимые с режимом external mode в вашей модели, появляются в списке Signal selection диалогового окна External Signal & Triggering. Этот список используется для выбора сигналов, которые необходимо просмотреть. В столбце Selected - X появляется для каждого выбранного блока.

Флажок Select all устанавливает все сигналы. По умолчанию Select all выбран.

Если Select all очищен, можно выбрать или удалить отдельные сигналы с помощью опций on и off. Чтобы выбрать сигнал, щелкните его запись списка и выберите опцию on. Чтобы удалить сигнал, щелкните его запись списка и выберите опцию off.

Кнопка Clear all очищает все сигналы.

Сконфигурируйте опции триггера

Как описано в разделе «Роль триггера в загрузке данных сигнала», загрузка данных сигнала зависит от триггера. Триггер определяет условия, которые должны быть выполнены для начала загрузки. Кроме того, триггер должен быть вооружен, чтобы началась загрузка данных. Когда триггер вооружен и условия триггера достигнуты, триггер запускается и начинается загрузка. Когда данные были собраны в течение определенной длительности, событие триггера завершается, и загрузка данных останавливается.

Чтобы контролировать, когда и как данные сигнала собираются (загружаются) из целевой системы, сконфигурируйте следующие Trigger options в диалоговом окне External Signal & Triggering.

  • Source: manual или signal. Управляет тем, запускает ли кнопка или сигнал загрузку данных.

    Выбор manual указывает режиму external mode использовать кнопку Arm Trigger на панели управления режима external mode в качестве триггера для начала загрузки данных. При нажатии кнопки Arm Trigger начинается загрузка данных.

    Выбор signal предписывает режиму external mode использовать триггерный сигнал в качестве триггера для начала загрузки данных. Когда триггерный сигнал удовлетворяет условиям триггера (то есть сигнал пересекает уровень триггера в заданном направлении), происходит событие триггера. (Задайте условия триггера в Trigger signal разделе.) Если триггер включен, режим external mode контролирует вхождение события триггера. Когда происходит событие триггера, начинается отправка данных.

  • Mode: normal или one-shot. Определяет, переворачивается ли триггер после завершения события триггера.

    В normal режим, режим external mode автоматически переворачивает триггер после каждого события триггера. Следующая загрузка данных начинается, когда срабатывает триггер.

    В one-shot mode, режим external mode собирает только один буфер данных каждый раз, когда вы запускаете триггер.

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

  • Duration: Задает количество шагов базовой скорости, для которых режим external mode загружает данные после события триггера (по умолчанию это 1000). Например, если Duration установлено на 1000, а базовая (самая быстрая) скорость модели составляет одну секунду:

    • Для сигнала, дискретизированного с базовой частотой, одна секунда (1,0 Гц), режим external mode собирает 1000 смежных выборок во время события триггера.

    • Для сигнала, дискретизированного в две секунды (0,5 Гц), режим external mode собирает 500 выборки во время события триггера.

  • Delay: Указывает задержку, применяемую к набору данных. Задержка представляет количество времени, прошедшее между событием триггера и началом набора данных. Задержка выражается в шагах базовой скорости. Он может быть положительным или отрицательным (по умолчанию 0). Отрицательная задержка соответствует предварительному перемещению. Когда задержка отрицательная, данные за время, предшествующее событию триггера, собираются и загружаются.

  • Arm when connecting to target: Выбран или удален. Независимо от того, запускает ли кнопка или сигнал загрузку данных (как определено Source), триггер должен быть вооружен, чтобы можно было начать загрузку данных.

    Если вы выбираете эту опцию, соединяете с целью рычаги триггера.

    • Если триггерная Source manual, загрузка данных начинается немедленно.

    • Если триггерная Source signalнемедленно начинается мониторинг триггерного сигнала. Загрузка данных начинается, когда триггерный сигнал удовлетворяет условиям триггера (как определено в Trigger signal разделе).

    Если вы снимаете Arm when connecting to target, вручную вооружите триггер, нажав кнопку Arm Trigger на панели управления режима external mode.

При симуляции во режиме external mode каждая скорость в модели создает буфер на цели. Каждая запись в буфере достаточно велика, чтобы хранить все данные, требуемые для каждого сигнала в этой скорости, в течение одного временного шага (время плюс данные плюс индексы режима external mode, идентифицирующие сигнал). Количество записей в циклическом буфере определяется параметром Duration триггера режима external mode (ExtModeTrigDuration). Память, выделенная на цели для буферизации сигналов, пропорциональна Duration и количеству загрузок сигналов. Этот Duration также предоставляет индикацию количества шагов базовой скорости с данными журнала после события триггера во режиме external mode.

Значение Duration задает количество смежных точек данных, которые должны быть собраны в каждом буфере данных. Вы должны ввести Duration значение, равное количеству непрерывных точек выборки, которые вы должны собрать, а не полагаться на серию буферов, чтобы быть непрерывными. Если вы вводите значение, меньше, чем общее количество точек выборки, можно потерять точки выборки за время, потраченное на перенос значений из буфера данных в рабочее пространство MATLAB. Программа Simulink поддерживает непрерывность точек только в одном буфере. Между буферами из-за времени переноса некоторые выборки могут быть опущены.

Значение Duration может повлиять на Limit data points to last значение блоков Scope и To Workspace. Количество точек выборки, которые блоки сохраняют в рабочем пространстве MATLAB, меньше двух значений. Чтобы задать количество точек выборки, которые сохраняют блоки, очистите Limit data points to last. Затем используйте команду Duration, чтобы указать количество сохраненных точек выборки.

Выберите триггерный сигнал

Можно назначить один сигнал в качестве триггерного сигнала. Чтобы выбрать триггерный сигнал, из меню Source в разделе Trigger options выберите signal. Это действие включает параметры в разделе Trigger signal. Затем выберите сигнал в списке Signal selection и нажмите кнопку Trigger Signal.

Когда вы выбираете сигнал, чтобы быть триггером, T появляется в Trigger столбце списка Signal selection. На следующем рисунке Scope A сигнал является триггером. Scope B также выбран для просмотра, как обозначено X в столбце Selected.

После выбора триггерного сигнала можно использовать раздел Trigger signal, чтобы задать условия триггера и задать параметры Port и Element триггера.

Установите условия триггера

Используйте раздел Trigger signal диалогового окна External Signal & Triggering, чтобы задать условия и атрибуты триггера. Trigger signal параметры активируются только, когда для Source параметра триггера задано значение signal в разделе Trigger options.

По умолчанию любой элемент первого входного порта заданного триггерного блока может вызвать запуск триггера (то есть Port 1, любой элемент). Можно изменить это поведение, скорректировав значения Port и Element в Trigger signal разделе. Поле Port принимает число или ключевое слово last. Поле Element принимает число или ключевые слова any или last.

В Trigger signal разделе также задаются условия, при которых происходит событие триггера.

  • Direction: rising, falling, или either. Направление, в котором сигнал должен перемещаться, когда он пересекает пороговое значение. Значение по умолчанию является rising.

  • Level: Значение, указывающее порог, через который должен проходить сигнал в заданном направлении, чтобы запустить триггер. По умолчанию уровень равен 0.

  • Hold-off: Применяется только к normal режим. Выражается в шагах базовой скорости, Hold-off является временем между завершением одного события триггера и перевооружением триггера.

Изменяйте сигнал и триггерные Опции во время соединения

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

Если триггер вооружен (для примера, если выбрана опция Arm when connecting to the target trigger, которая является заданной по умолчанию), диалоговое окно External Signal & Triggering не может быть изменено. Для изменения сигнала и опций запуска:

  1. Откройте панель управления режима external mode.

  2. Нажмите Cancel Trigger. Срабатывание и отображение выгруженных остановок данных.

  3. Откройте диалоговое окно External Signal & Triggering и измените опции сигнала и триггера по мере необходимости. Например, в разделе Signal selection можно включить или отключить возможности, а в разделе Trigger options изменить Mode триггера, например, с normal на one-shot.

  4. Нажмите Arm Trigger. Запуск и отображение загруженных данных возобновляется с вашими изменениями.

Сконфигурируйте архивацию данных сигнала целевого приложения

Во режиме external mode можно использовать блоки Осциллограф Simulink и To Workspace для архивации данных на диск.

Чтобы понять, как работают функции архивирования, учитывайте обработку данных, когда архивирование не включено. Существует два случая, режим с одним выстрелом и режима normal mode.

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

  • В режим normal mode режима external mode автоматически переворачивает триггер после каждого события триггера. Следовательно, можно думать о режиме normal mode как о серии one-shots. Каждый one-shot в этой серии, кроме последнего, упоминается как промежуточный результат. Поскольку триггер может сработать в любой момент, запись промежуточных результатов в рабочую область может привести к непредсказуемой перезаписи переменных рабочей области. По этой причине поведение по умолчанию состоит в том, чтобы записать только результаты из последнего one-shot в рабочую область. Промежуточные результаты отбрасываются. Если известно, что между триггерами существует достаточно времени для проверки промежуточных результатов, можно переопределить поведение по умолчанию, выбрав опцию Write intermediate results to workspace. Эта опция не защищает данные рабочей области от перезаписи последующими триггерами.

Если вы используете блок Осциллограф Simulink для архивации данных на диск, откройте диалоговое окно параметры и выберите Log data to workspace опции. Опция требуется по следующим причинам:

  • Данные сначала переносятся из буфера данных возможностей в рабочее пространство MATLAB, перед записью в MAT-файл.

  • Значение Variable name, введенное в диалоговом окне параметры, совпадает с значением в рабочем пространстве MATLAB и MAT-файле. Включение сохранения данных позволяет сохранить переменную с именем Variable name параметра в MAT-файл.

Примечание

Если вы не выбираете опцию Возможностей блока Log data to workspace, создаются MAT-файлы для логгирования данных, но они пусты.

Диалоговое окно Enable Data Archiving поддерживает:

  • Примечания к папке

  • Заметки к файлу

  • Автоматическое архивирование данных

На панели управления режима external mode нажмите кнопку Data Archiving, чтобы открыть диалоговое окно «Включить архивацию данных». Если ваша модель подключена к целевому окружению, отключите ее во время настройки архивирования данных. Чтобы включить другие элементы управления в диалоговом окне, выберите Enable archiving.

Эти операции поддерживаются диалоговым окном «Включить архивацию данных».

Примечания к папке

Чтобы добавить аннотации для набора связанных файлов данных в папку, в диалоговом окне «Включить архивацию данных» нажмите кнопку Edit Directory Note. Откроется редактор MATLAB. Поместите комментарии, которые необходимо сохранить в файл, в указанную папку в этом окне. По умолчанию комментарии сохраняются в папке, в которую последний раз записываются при архивировании данных.

Заметки к файлам

Чтобы добавить аннотации для отдельного файла данных, в диалоговом окне «Включить архивацию данных» нажмите кнопку Edit File Note. Откроется окно поиска файлов, в котором по умолчанию устанавливается последний файл, в который вы написали. Выбор MAT-файла открывает окно редактирования. В этом окне добавьте или отредактируйте комментарии, которые необходимо сохранить в отдельном MAT-файле.

Автоматическое архивирование данных

Чтобы настроить автоматическую запись результатов логгирования на диск, опционально включая промежуточные результаты, используйте опцию Enable archiving и элементы управления, которые она включает. Диалоговое окно содержит следующие связанные элементы управления:

  • Directory: Задает папку, в которой сохраняются данные. Если вы выбираете Increment directory when trigger armed, режим external mode добавляет суффикс.

  • File: Указывает имя файла, в котором сохраняются данные. Если вы выбираете Increment file after one-shot, режим external mode добавляет суффикс.

  • Increment directory when trigger armed: Каждый раз, когда вы нажимаете кнопку Arm Trigger, режим external mode использует другую папку для записи файлов журнала. Папки называются пошагово, например dirname1, dirname2и так далее.

  • Increment file after one-shot: Новые буферы данных сохраняются в инкрементных файлах: filename1, filename2и так далее. Увеличение количества файлов происходит автоматически в режиме normal mode.

  • Append file suffix to variable names: Каждый раз, когда режим external mode увеличивает имена файлов, каждый файл содержит переменные с одинаковыми именами. Выбор Append file suffix to variable name приводит к тому, что каждый файл содержит уникальные имена переменных. Для примера режима external mode сохраняет переменную с именем xdata в инкрементных файлах (file_1, file_2, и так далее) как xdata_1, xdata_2и так далее. Этот подход поддерживает загрузку MAT-файлов в рабочую область и сравнение переменных в командной строке MATLAB. Без уникальных имен каждый образец xdata перезаписывает предыдущий в рабочем пространстве MATLAB.

  • Write intermediate results to workspace: Если вы хотите, чтобы программное обеспечение Simulink Coder записывало промежуточные результаты в рабочую область, выберите эту опцию.

Сводные данные графических элементов управления для симуляции TCP/IP или последовательного режима external mode

Вы можете управлять симуляцией TCP/IP или последовательного режима external mode через:

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

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

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

Действие режима 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 и Download

Блоки и подсистемы, совместимые с режимом external mode

Совместимые блоки

Во режиме external mode можно использовать следующие типы блоков для приема и просмотра сигналов, загруженных из целевого приложения:

  • Плавающие блоки Scope и Scope

  • Спектры Analyzer и Time Scope из продукта DSP System Toolbox™

  • Отображать блоки

  • В блоки Рабочей области

  • Пользовательские блоки S-Function

    Метод режима external mode встроен в S-функцию API. Этот метод позволяет записанным пользователем блокам поддерживать режим external mode. См. matlabroot/ simulink/include/simstruc.h.

  • XY Graph блоки

Можно обозначить определенные подсистемы как Signal Viewing Subsystems и использовать их для приема и просмотра сигналов, загруженных из целевого приложения. Для получения дополнительной информации смотрите Signal Viewing Subsystems.

Вы выбираете блоки и подсистемы, совместимые с режимом external mode, и запускаете триггер, используя диалоговое окно External Signal & Triggering. По умолчанию такие блоки в модели выбираются, и ручной триггер устанавливается на вооружение при соединении с целевым приложением.

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

Подсистема просмотра сигналов является атомарной подсистемой, которая инкапсулирует обработку и просмотр сигналов, принятых от целевой системы. Подсистема просмотра сигналов работает только на хосте и не генерирует код в целевой системе. Signal Viewing Subsystems работает в нормальном режиме, Accelerator, Rapid Accelerator и внешних режимах симуляции.

Примечание

Подсистемы просмотра сигналов неактивны, если помещены в SIL или PIL компонент, такой как верхняя модель в SIL или PIL режиме, Model блок в SIL или PIL режиме или блок SIL или PIL. Однако компонент SIL или PIL может подавать подсистему просмотра сигналов, работающую в поддерживаемом режиме.

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

Как и другие блоки, совместимые с режимом external mode, подсистемы просмотра сигналов отображаются в диалоговом окне External Signal & Triggering.

Чтобы объявить подсистему подсистемой просмотра сигналов:

  1. В диалоговом окне Параметров блоков выберите опцию Treat as atomic unit.

    Для получения дополнительной информации об атомарных подсистемах смотрите Генерацию управления функциями для подсистем.

  2. Чтобы включить свойство SimViewingDevice, используйте set_param команда:

    set_param('blockname', 'SimViewingDevice','on')

    'blockname' - имя подсистемы.

  3. Убедитесь, что подсистема соответствует следующим требованиям:

    • Это должен быть чистый блок Sink. То есть он не должен содержать блоки Outport или блоки Data Store. Он может содержать Goto блока, только если соответствующие блоки From содержатся в контурах подсистемы.

    • Он не должен иметь непрерывных состояний.

Следующая модель, sink_examp, содержит атомарную подсистему, theSink.

Подсистема theSink применяет коэффициент усиления и смещение к его входному сигналу и отображает его на блоке Scope.

Если theSink объявляется как Подсистема Просмотра Сигналов, сгенерированное целевое приложение включает только код для блока Sine Wave. Если theSink выбран и вооружен в диалоговом окне External Signal & Triggering, целевое приложение загружает сигнал синусоиды в theSink во время симуляции. Можно затем изменить параметры блоков в theSink и наблюдать загруженный сигнал.

Если theSink не были объявлены как подсистема просмотра сигналов, ее блоки Gain, Constant и Sum выполнялись бы как код подсистемы на целевой системе. Сигнал Sine Wave будет загружен в двигатель Simulink после обработки этими блоками и просмотра на sink_examp/theSink/Scope2. Требования к обработке целевой системы будут увеличены дополнительной обработкой сигналов и загрузкой изменений параметров блоков с хоста.

Поддерживаемые блоки для архивирования данных

Во режиме external mode для архивации данных на диск можно использовать следующие типы блоков:

  • Блоки Scope

  • В блоки Рабочей области

Архивирование данных конфигурируется с помощью диалогового окна Enable Data Archiving, как описано в разделе Configure Host Archiving of Целевое Приложение Signal Data.

Механизм режима external mode для загрузки настраиваемых параметров

В зависимости от настройки опции Default parameter behavior, когда генерируется целевое приложение, существуют различия в способе обработки обновлений параметра. Механизм загрузки описывает операцию связи в режиме external mode с Default parameter behavior установленным на Tunable. Inlined и Tunable Parameters описывает операцию режима external mode с Default parameter behavior, установленной на Inlined.

Механизм загрузки

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

Когда вы меняете параметр в блоке, механизм Simulink вызывает внешний интерфейс файл MEX, передавая новые значения параметров (наряду с другой информацией) в качестве аргументов. Файл MEX внешнего интерфейса содержит код, который реализует одну сторону канала межпроцессной связи (IPC). Этот канал соединяет процесс Simulink (где выполняется файл MEX) с процессом, который выполняет внешнюю программу. Файл MEX передает новые значения параметров с помощью этого канала во внешнюю программу.

Другая сторона канала связи реализована во внешней программе. Эта сторона записывает новые значения параметров в структуру параметра целевого устройства (model_P).

Сторона Simulink инициирует операцию загрузки параметра путем отправки сообщения, содержащего информацию о параметре, во внешнюю программу. В терминологии вычислений клиент/сервер сторона Simulink является клиентом, а внешняя программа - сервером. Эти два процесса могут быть удаленными или локальными. Там, где клиент и сервер удалены, для передачи данных используется протокол, такой как TCP/IP. Если клиент и сервер являются локальными, для передачи данных может использоваться последовательное соединение или общая память.

Следующий рисунок показывает эту связь. Механизм Simulink вызывает Файл MEX внешнего интерфейса каждый раз, когда вы изменяете параметры в блок схеме. Затем файл MEX загружает параметры во внешнюю программу с помощью канала связи.

Архитектура режима external mode

Inlined и настраиваемые параметры

По умолчанию параметры (кроме перечисленных в TCP/IP и ограничениях последовательного Режима external mode) в режим external mode программе настраиваются; то есть вы можете изменить их с помощью механизма загрузки, описанного в этом разделе.

Если вы задаете Default parameter behavior Inlined (на панели Optimization диалогового окна Configuration Parameters) генератор кода Simulink Coder встраивает числовые значения параметров модели (константы) вместо символьных имен параметров в сгенерированный код. Параметры Inlining генерируют меньший и более эффективный код. Однако inlined параметры, потому что они эффективно становятся константами, не настраиваются.

Программа Simulink Coder позволяет вам улучшить общую эффективность путем встраивания большинства параметров, сохраняя при этом гибкость настройки во время выполнения для выбранных параметров, важных для вашего приложения. Когда вы инлайн параметры, вы можете использовать Simulink.Parameter объекты, чтобы удалить отдельные параметры из inlining и объявить их настраиваемыми. Кроме сложения, можно использовать эти объекты для управления представлением параметров в сгенерированном коде.

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

Автоматическая загрузка параметров на узел/конечный узел.  Каждый раз, когда механизм Simulink соединяется с целевым приложением, которое было сгенерировано с Default parameter behavior значением Inlinedцелевое приложение загружает текущее значение его настраиваемых параметров на хост. Эти значения присваиваются соответствующим переменным рабочего пространства MATLAB. Эта процедура синхронизирует хост и цель относительно значений параметров.

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

Автоматическая загрузка параметров происходит только в том случае, если целевое приложение сгенерировано с Default parameter behavior установленным на Inlined. Механизм загрузки описывает операцию связи в режиме external mode с Default parameter behavior установленным на Tunable.

Выберите коммуникационный протокол для клиента и сервера

Введение

Продукт Simulink Coder обеспечивает код для реализации как клиентской, так и серверной стороны связи в режиме external mode с помощью TCP/IP или последовательных протоколов. Можно использовать реализацию режима external mode на базе сокетов, предоставляемую продуктом Simulink Coder с сгенерированным кодом, при условии, что ваша целевая система поддерживает TCP/IP. Если нет, используйте или настройте предоставленную опцию последовательного транспортного слоя.

Низкоуровневый транспортный слой обрабатывает физическую передачу сообщений. И механизм Simulink, и код модели не зависят от этого слоя. Транспортный слой и код, непосредственно взаимодействующие с транспортным слоем, изолированы в отдельных модулях, которые форматируют, передают и принимают сообщения и пакеты данных.

Использование реализации TCP/IP

Можно использовать реализацию режима external mode на основе TCP/IP с программами в реальном времени на Open Group UNIX® или компьютерные системы. Для получения справки по настройке транспортных слоев режима external mode см. раздел Создание транспортного уровня для TCP/IP или Коммуникация последовательного режима external mode.

Чтобы использовать режим external mode Simulink по TCP/IP:

  • Убедитесь, что задан внешний интерфейс, Файл MEX для транспорта TCP/IP вашего целевого устройства.

    Цели, предоставленные MathWorks® укажите имя внешнего интерфейса, Файла MEX в matlabroot/ toolbox/simulink/simulink/extmode_transports.m. Имя интерфейса отображается как неотредактируемый текст в External mode configuration разделе панели Interface диалогового окна Параметры конфигурации. Значение по умолчанию TCP/IP ext_comm.

    Чтобы задать транспорт TCP/IP для пользовательского целевого устройства, необходимо добавить запись следующей формы к sl_customization.m файл по пути MATLAB:

    function sl_customization(cm)
      cm.ExtModeTransports.add('stf.tlc', 'transport', 'mexfile', 'Level1');
    %end function
    • stf.tlc - имя системного целевого файла, для которого вы регистрируете транспорт (для примера, 'mytarget.tlc')

    • transport - транспортное имя, отображаемое в меню Transport layer на панели Interface диалогового окна Configuration Parameters (для примера, 'tcpip')

    • mexfile - имя связанного с транспортом внешнего Файла MEX интерфейса (для примера, 'ext_comm')

    Можно задать несколько целей и/или транспортов с дополнительными cm.ExtModeTransports.add для примера:

    function sl_customization(cm)
      cm.ExtModeTransports.add('mytarget.tlc', 'tcpip', 'ext_comm', 'Level1');
      cm.ExtModeTransports.add('mytarget.tlc', 'serial', ...
                               'ext_serial_win32_comm', 'Level1');
    %end function
  • Убедитесь, что файл make-файла шаблона настроен для связи исходных файлов для кода сервера TCP/IP и что он определяет флаги компилятора при построении сгенерированного кода.

  • Создайте внешнюю программу.

  • Запустите внешнюю программу.

  • Установите модель Simulink в режим external mode и соединитесь с целью.

Следующий рисунок показывает структуру реализации на основе TCP/IP.

Клиент/сервер на основе TCP/IP Реализации для Режима external mode

Дополнительные аргументы файла MEX для транспорта TCP/IP.  В диалоговом окне Внешний целевой интерфейс (External Target Interface) можно задать необязательные аргументы, которые передаются в режим external mode Файла MEX интерфейса для связи с выполняющими целевыми узлами.

  • Целевое сетевое имя: сетевое имя компьютера, управляющего внешней программой. По умолчанию это компьютер, на котором работает продукт Simulink, например 'myComputer'. Можно также использовать IP-адрес, например '148.27.151.12'.

  • Уровень подробностей: управляет уровнем детализации информации, отображаемой во время передачи данных. Значение либо 0 или 1 и имеет следующее значение:

    0 - Нет информации
    1
    - Подробная информация

  • Номер порта TCP/IP-сервера: Значение по умолчанию 17725. Вы можете изменить номер порта на значение между 256 и 65535 чтобы избежать конфликта портов.

Аргументы являются позиционными и должны быть заданы в следующем порядке:

<TargetNetworkName> <VerbosityLevel> <ServerPortNumber>

Например, если вы хотите задать уровень подробностей (второй аргумент), то вы также должны задать имя целевой сети (первый аргумент). Аргументы могут быть разделены белыми пространствами или запятыми. Для примера:

'148.27.151.12' 1 30000

Можно задать опции командной строки для внешней программы при ее запуске. См. «Запуск внешней программы».

Использование последовательной реализации

Управление коммуникацией хоста/целевого устройства по последовательному каналу аналогично управлению коммуникацией хоста/целевого устройства по каналу TCP/IP.

Чтобы использовать режим external mode Simulink по последовательному каналу, необходимо:

  • Убедитесь, что задан файл MEX внешнего интерфейса для последовательного транспорта вашего целевого устройства.

    Цели, предоставленные MathWorks, задают имя внешнего интерфейса файла MEX в matlabroot/ toolbox/simulink/simulink/extmode_transports.m. Имя интерфейса отображается как неотредактируемый текст в External mode configuration разделе панели Interface диалогового окна Параметры конфигурации. Серийный номер по умолчанию serial.

    Чтобы задать последовательный транспорт для пользовательского целевого устройства, необходимо добавить запись следующей формы в sl_customization.m файл по пути MATLAB:

    function sl_customization(cm)
      cm.ExtModeTransports.add('stf.tlc', 'transport', 'mexfile', 'Level1');
    %end function
    • stf.tlc - имя системного целевого файла, для которого вы регистрируете транспорт (для примера, 'mytarget.tlc')

    • transport - транспортное имя, отображаемое в меню Transport layer на панели Interface диалогового окна Configuration Parameters (для примера, 'serial')

    • mexfile - имя связанного с транспортом внешнего Файла MEX интерфейса (для примера, 'ext_serial_win32_comm')

    Можно задать несколько целей и/или транспортов с дополнительными cm.ExtModeTransports.add для примера:

    function sl_customization(cm)
      cm.ExtModeTransports.add('mytarget.tlc', 'tcpip', 'ext_comm', 'Level1');
      cm.ExtModeTransports.add('mytarget.tlc', 'serial', ...
                               'ext_serial_win32_comm', 'Level1');
    %end function
  • Убедитесь, что файл make-файла шаблона настроен на связывание исходных файлов для кода последовательного сервера и что он определяет флаги компилятора при построении сгенерированного кода.

  • Создайте внешнюю программу.

  • Запустите внешнюю программу.

  • Установите модель Simulink в режим external mode и соединитесь с целью.

Дополнительные аргументы файла MEX для последовательного транспорта.  В MEX-file arguments поле панели Interface диалогового окна Параметров конфигурации можно задать аргументы, которые передаются в режим external mode Файла MEX интерфейса для связи с выполняющими целевыми объектами. Для последовательного транспорта необязательные аргументы для ext_serial_win32_comm являются следующими:

  • Уровень подробностей: Этот аргумент управляет уровнем детализации информации, отображаемой во время передачи данных. Значение этого аргумента:

    • 0 (нет информации), или

    • 1 (подробная информация)

  • Идентификатор последовательного порта: идентификатор порта хоста, заданный как целое число или вектор символов. Например, укажите идентификатор порта USB в последовательный преобразователь следующим '/dev/ttyusb0'. Simulink Coder префиксирует целочисленные идентификаторы портов с \\.\COM в Windows® и по /dev/ttyS на Unix.

    При запуске целевого приложения с помощью последовательного соединения необходимо указать идентификатор порта, который будет использоваться для подключения его к узлу. Сделайте это, включив -port опция командной строки. Для примера:

    mytarget.exe -port 2 -w
  • Скорость передачи данных: Задайте целое значение. Значение по умолчанию 57600.

Аргументы опций файла MEX являются позиционными и должны быть заданы в следующем порядке:

<VerbosityLevel> <SerialPortID> <BaudRate>

Например, если вы хотите задать идентификатор последовательного порта (второй аргумент), то вы также должны задать уровень подробностей (первый аргумент). Аргументы могут быть разделены белыми пространствами или запятыми. Для примера:

1 '/dev/ttyusb0' 57600

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

Запуск внешней программы

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

Если целевое приложение выполняется на той же машине, что и хост, и связь осуществляется через последовательный кабель закольцовывания, идентификатор порта целевого компьютера должен отличаться от идентификатора порта хоста (как указано в MEX-file arguments поле редактирования).

Чтобы запустить внешнюю программу, вы вводите команду формы:

model -opt1 ... -optN

model - имя внешней программы и -opt1 ... - optN являются опциями. (См. раздел «Опции командной строки для внешней программы».) В примерах в этом разделе имя внешней программы ext_example.

Выполнение внешней программы в среде Windows.  В среде Windows можно запустить внешние программы одним из следующих способов:

  • Откройте окно командной строки. В командной строке введите имя целевого исполняемого файла с последующими возможными опциями, такими как:

    ext_example -tf inf -w
  • Также можно запустить целевой исполняемый файл из Командного окна MATLAB. Команде должен предшествовать восклицательная точка (!) и последующий амперсанд (&), как в следующем примере:

    !ext_example -tf inf -w &

    Амперсанд (&) приводит к тому, что операционная система порождает другой процесс для запуска целевого исполняемого файла. Если вы не включаете амперсанд, программа все еще запускается, но вы не можете вводить команды в командной строке MATLAB или вручную завершать выполнение исполняемого файла.

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

  • Откройте Xterm окно. В командной строке введите имя целевого исполняемого файла с последующими возможными опциями, такими как:

    ./ext_example -tf inf -w
  • Также можно запустить целевой исполняемый файл из Командного окна MATLAB. Вы должны запустить его в фоновом режиме, чтобы вы все еще могли получить доступ к окружению Simulink. Команде должен предшествовать восклицательная точка (!), dot slash (./указывающий на текущую директорию), и далее ampersand (&), как в следующем примере:

    !./ext_example -tf inf -w &

    Амперсанд (&) приводит к тому, что операционная система порождает другой процесс для запуска целевого исполняемого файла.

Командная строка для Опций внешней программы.  Целевые исполняемые файлы режима external mode, сгенерированные генератором кода Simulink Coder, поддерживают следующие опции командной строки:

  • -tf n

    The -tf опция переопределяет время остановки, установленное в модели Simulink. Аргумент n задает количество секунд, в течение которых будет выполняться программа. Значение inf указывает модели запускаться бесконечно. В этом случае код модели запускается до тех пор, пока целевое приложение не получит сообщение об остановке от механизма Simulink.

    В следующем примере устанавливается время остановки 10 секунд.

    ext_example -tf 10

Когда целочисленные цели ERT строятся и выполняются в режим external mode, параметр времени остановки (-tf) интерпретируется целевым объектом как количество шагов базовой скорости, а не как количество секунд для выполнения.

  • -w

    Дает указание целевому приложению войти в состояние ожидания до получения сообщения от хоста. На данной точке цель работает, но не выполняет код модели. Начальное сообщение отправляется при выборе Start Real-Time Code из меню Simulation или при нажатии кнопки Start Real-Time Code на панели управления режима external mode.

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

  • -port n

    Номер порта TCP/IP или идентификатор последовательного порта, n, для целевого приложения. Номер порта целевого приложения должен совпадать с номером порта хоста для транспорта TCP/IP. Номер порта зависит от типа транспорта.

    • Для транспорта TCP/IP: номер порта является целым числом между 256 и 65535, со значением по умолчанию 17725.

    • Для последовательного транспорта: Идентификатор порта является целым числом или вектором символов. Например, укажите идентификатор порта USB в последовательный преобразователь следующим '/dev/ttyusb0'

  • -baud r

    Опция, заданный как целое число, доступна только для последовательной передачи.

Реализуйте слой протокола режима external mode

Если вы хотите реализовать свой собственный транспортный слой для связи во режиме external mode, необходимо изменить определенные модули кода, предоставляемые продуктом Simulink Coder, и создать новый внешний интерфейс файл MEX. Смотрите раздел «Создание транспортного слоя для передачи TCP/IP или последовательного режима external mode».

Программное использование режима external mode

Можно запустить симуляции режима external mode из командной строки MATLAB или программно в скриптах. Используйте get_param и set_param команды для извлечения и установки значений параметров командной строки симуляции модели, таких как SimulationMode и SimulationCommand, и параметры командной строки режима external mode, такие как ExtModeCommand и ExtModeTrigType.

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

  1. Смените модель Simulink на режим external mode:

    set_param(gcs,'SimulationMode','external')
  2. Подключите открытую модель к загруженному целевому приложению:

    set_param(gcs,'SimulationCommand','connect')
  3. Запустите целевое приложение:

    set_param(gcs,'SimulationCommand','start')
  4. Остановите выполнение целевого приложения:

    set_param(gcs,'SimulationCommand','stop')
  5. Отсоедините целевое приложение от модели:

    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 команды.

Чтобы настроить параметр рабочей области, измените его значение в командной строке. Если параметром рабочей области является Simulink.Parameter объект, присвойте новое значение Value свойство.

myVariable = 5.23;
myParamObj.Value = 5.23;

Чтобы загрузить параметр рабочей области во режиме external mode, вы обновляете диаграмму модели. Следующая команда симуляции модели инициирует обновление модели:

set_param(gcs,'SimulationCommand','update')

Чтобы запустить или отменить загрузку данных в возможностях, используйте ExtModeCommand значения armFloating и cancelFloating, или armWired и cancelWired. Например, чтобы инициировать и затем отменить загрузку данных в проводные (нефлоагрегирующие) возможности:

set_param(gcs,'ExtModeCommand','armWired')
set_param(gcs,'ExtModeCommand','cancelWired')

В следующей таблице перечислены параметры командной строки режима external mode, которые можно использовать в get_param и set_param команды. Таблица содержит краткое описание, допустимые значения (по умолчанию выделяются жирным шрифтом) и отображение с эквивалентами диалогового окна Режим external mode. Для параметров режима external mode, которые эквивалентны опциям Interface панели в диалоговом окне Параметры конфигурации, смотрите Параметры конфигурации модели: Интерфейс генерации кода.

Командные строки режима external mode режима

Параметр и значенияЭквивалентное диалоговое окноОписание
ExtModeAddSuffixToVar
off, on
Включить архивацию данных: Append file suffix to variable names флажокИнкрементируйте имена переменных для каждого инкрементного имени файла.
ExtModeArchiveDirName
character vector
Включите архивацию данных: Directory текстовое полеСохраните данные в указанной папке.
ExtModeArchiveFileName
character vector
Включите архивацию данных: File текстовое полеСохраните данные в указанном файле.
ExtModeArchiveMode
character vector - off, auto, manual
Включить архивацию данных: Enable archiving флажок

Активируйте функции автоматического архивирования данных.

Чтобы задать manual, запуск set_param(gcs, 'ExtModeArchiveMode', 'manual').

Обратите внимание, что если вы задаете auto, ExtModeAutoIncOneShot установлено в on.

ExtModeArmWhenConnect
off, on
Внешний сигнал & Триггеринг: Arm when connecting to target флажокВооружите триггер, как только программное обеспечение Simulink Coder соединится с целью.
ExtModeAutoIncOneShot
off, on
Включить архивацию данных: Increment file after one-shot флажокСохраните новые буферы данных в инкрементных файлах.
ExtModeAutoUpdateStatusClock(Только платформы Windows)
off, on
НедоступноПостоянно загружайте и отображайте целевое время в строке состояния окна модели.
ExtModeBatchMode
off, on
Панель управления режима external mode: Batch download флажокВключите или отключите загрузку параметров в пакетном режиме.
ExtModeChangesPending
off, on
НедоступноКогда ExtModeBatchMode включено, указывает, остаются ли параметры в очереди параметров, которые будут загружены в целевой объект.
ExtModeCommand
character vector - armFloating, armWired, cancelFloating, cancelWired
  • armFloating и cancelFloating эквивалентны установке и снятию флажка Панель управления режима external mode Floating scope > Enable data uploading

  • armWired и cancelWired эквивалентны кнопкам панели управления режима external mode Arm Trigger и Cancel Trigger

Выполните команду режим external mode для целевого приложения.
ExtModeConnected
off, on
Панель управления режима external mode: Connect/Disconnect кнопкаУкажите состояние соединения с целевым приложением.
ExtModeEnableFloating
off, on
Панель управления режима external mode: Enable data uploading флажокВключите или отключите резервирование и отмену триггеров при установлении соединения с плавающими возможностями.
ExtModeIncDirWhenArm
off, on
Включить архивацию данных: Increment directory when trigger armed флажокЗапись файлов журнала в инкрементальные папки каждый раз, когда триггер вооружен.
ExtModeLogAll
off, on
Внешний сигнал & Триггеринг: Select all флажокЗагрузите доступные сигналы от цели на хост.
ExtModeParamChangesPending
off, on
НедоступноКогда программное обеспечение Simulink Coder подключено к целевому объекту и ExtModeBatchMode включено, указывает, остаются ли параметры в очереди параметров, которые будут загружены в целевой объект. Более эффективный, чем ExtModeChangesPending, потому что он проверяет подключение к целевому объекту.
ExtModeSkipDownloadWhenConnect
off, on
НедоступноПодключиться к целевому приложению без загрузки параметров.
ExtModeTrigDelay
integer (0)
Внешний сигнал & Триггер: Delay текстовое полеЗадайте количество времени (выраженное в шагах базовой скорости), которое проходит между вхождением триггера и началом набора данных.
ExtModeTrigDirection
character vector - rising, falling, either
Внешний сигнал и триггеры: Direction менюУкажите направление, в котором сигнал должен перемещаться, когда он пересекает пороговое значение.
ExtModeTrigDuration
integer (1000)
Внешний сигнал & Триггер: Duration текстовое полеУкажите количество шагов базовой скорости, для которых режим external mode должен регистрировать данные после события триггера.
ExtModeTrigDurationFloating
character vector - integer (auto)
Панель управления режима external mode: Duration текстовое полеЗадайте длительность для плавающих возможностей. Если auto задано, значение ExtModeTrigDuration используется.
ExtModeTrigElement
character vector - integer, any, last
Внешний сигнал & Триггер: Element текстовое полеЗадайте элементы входного порта указанного триггерного блока, которые могут привести к срабатыванию триггера.
ExtModeTrigHoldOff
integer (0)
Внешний сигнал & Триггер: Hold-off текстовое полеЗадайте шаги базовой скорости между завершением события триггера и перевооружением триггера.
ExtModeTrigLevel
integer (0)
Внешний сигнал & Триггер: Level текстовое полеЗадайте пороговое значение, через которое должен пройти триггерный сигнал для запуска триггера.
ExtModeTrigMode
character vector - normal, oneshot
Внешний сигнал и триггеры: Mode менюУкажите, должен ли триггер автоматически перевооружаться после каждого события триггера или только один буфер данных должен быть собран каждый раз, когда триггер вооружен.
ExtModeTrigPort
character vector - integer (1), last
Внешний сигнал & Триггер: Port текстовое полеУкажите вход порт указанного блока триггера, элементы которого могут привести к срабатыванию триггера.
ExtModeTrigType
character vector - manual, signal
Внешний сигнал и триггеры: Source менюЗадайте, начинать ли регистрацию данных, когда триггер вооружен или когда заданный триггерный сигнал удовлетворяет условиям триггера.
ExtModeUploadStatus
character vector - inactive, armed, uploading
НедоступноВозвращает состояние механизма загрузки режима external mode - неактивный, вооруженный, или загрузка.
ExtModeWriteAllDataToWs
off, on
Включить архивацию данных: Write intermediate results to workspace флажокЗапись промежуточных результатов в рабочую область.

Анимируйте диаграммы Stateflow во режиме external mode

Если у вас есть Stateflow®можно анимировать график во режиме external mode. Во режиме external mode можно анимировать состояния на графике и просматривать сигналы тестовой точки в плавающих возможностях или средстве просмотра сигналов.

Анимируйте состояния во время симуляции во режиме external mode

Для анимации состояний на графике во режиме external mode:

  1. Загрузите график, который необходимо анимировать, на конечный компьютер.

  2. В диалоговом окне Параметры конфигурации установите флажок External mode.

  3. Откройте диалоговое окно Панель управления режим external mode.

  4. Нажмите Signal & Triggering.

  5. В диалоговом окне External Signal & Triggering установите эти параметры.

    В:Выберите:
    Signal selection панельГрафик, которую вы хотите анимировать
    Trigger options панельArm when connecting to target флажок
    Trigger options панельnormal из раскрывающегося меню в Mode поле
  6. Создайте модель, чтобы сгенерировать исполняемый файл.

  7. Развертывание целевого приложения.

  8. Подключите Simulink к целевому приложению.

  9. Запустите выполнение сгенерированного кода модели. График подсвечивает состояния во время их выполнения.

Просмотр Тестовой точки данных в плавающих Возможностях и средствах просмотра сигналов

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

Чтобы просмотреть данные тестовой точки во время симуляции во режиме external mode:

  1. Откройте Model Explorer, и для всех данных, которые вы хотите просмотреть, выполните следующие шаги:

    1. На средней Contents панели выберите состояние или локальные данные, представляющие интерес.

    2. На правой Dialog панели выберите вкладку Logging и установите Test point флажок.

  2. Из плавающих возможностей или средства просмотра сигналов нажмите кнопку выбора сигнала:

    Откроется диалоговое окно Signal Selector (Выбор сигнала).

  3. На панели Model hierarchy Signal Selector выберите график.

  4. В меню List contents Signal Selector выберите Testpointed/Logged signals only, а затем выберите сигналы, которые вы хотите просмотреть.

  5. Симулируйте модель во режиме external mode, как описано в Animate States во время симуляции во режиме external mode.

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

Для получения дополнительной информации см. «Поведение возможностей и средств просмотра в режиме Rapid Accelerator».

Ограничения TCP/IP и последовательного режима external mode

ФункцияПодробнее
Изменение параметров

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

  • Количество состояний, входов или выходов блока

  • Количество шага расчета или шагов расчета

  • Алгоритм интегрирования для непрерывных систем

  • Имя модели или блока

Если вы вносите эти изменения в блок, то необходимо перестроить программу с помощью только что сгенерированного кода.

Можно изменить параметры в блоках представления передаточной функции и пространства состояний определенными способами:

  • Параметры (числитель и полиномы знаменателя) для Transfer Fcn (непрерывных и дискретных) и Discrete Filter блоков могут быть изменены (пока количество состояний не меняется).

  • Нулевые значения в блоках State-Space и Zero Pole (как непрерывные, так и дискретные) в пользовательских или вычисленных параметрах (то есть матрицах A, B, C и D, полученных преобразованием нули полюса в пространство состояний) не могут быть изменены после запуска внешней симуляции.

  • В блоке State-Space, если вы задаете матрицы в управляемой канонической реализации, то допускаются все изменения в матрицах A, B, C, D, которые сохраняют эту реализацию и размерности матриц.

Если Диаграмма Simulink не соответствует внешней программе, Simulink выдает ошибку, указывающую, что контрольные суммы не совпадают. Контрольные суммы учитывают модели верхнего уровня, но не ссылочные модели. Используйте обновлённый блок, чтобы перестроить целевое приложение.

Загрузка данных

Загрузка значений данных для типов с фиксированной точкой или перечисленных типов в параметры рабочей области не поддерживается.

Загрузка сигналов переменного размера

Загрузка сигналов переменного размера не поддерживается для этих целей:

  • Функции Simulink Real-Time™

  • Техасский Instruments™ C2000™

Отображение значения сигналов в симуляции

Графическое отображение значений сигналов в моделях (описано в Display Signal Values in Диаграммы модели) не поддерживается. Например, вы не можете использовать выбор меню Data Display in Simulation Show Value Labels When Hovering, Toggle Value Labels When Clicked и Show Value Label of Selected Port.

Настраиваемые параметры структуры

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

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

Поддерживается чистый целочисленный код.

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

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

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

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

  • Когда 16-битный или 32-битный счетчик такта переполнен, время симуляции в блоках Scope возвращается к нулю.

Половинная точность

Типы данных половинной точности не поддерживаются.

Архивирование данных

Для архивации данных на диск поддерживаются блоки Scope и To Workspace. Однако другие возможности не поддерживаются для архивирования данных. Для примера вы не можете использовать блоки Floating Возможностей или объекты Средств просмотра и Generators Manager средства просмотра для архивирования данных.

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

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

Однако, если верхняя модель изменена для симуляции в режиме normal mode, поведение областей в ссылочных моделях отличается между режимом normal и Accelerator. Возможности в ссылочной модели симуляции в режим normal mode отображаются, в то время как возможности в ссылочной модели симуляции в режиме Accelerator не отображаются.

Время начала симуляции

Ненулевое время начала симуляции не поддерживается. В диалоговом окне Параметров конфигурации Solver панели оставьте Start time значение по умолчанию 0.0.

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

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

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

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

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

Сигналы с пользовательскими классами памяти

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

Использование printf Операторы

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

Аргументы в командной строке

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

  • Для анализа аргументов в командной строке требуется sscanf функция, которая увеличивает размер программы для некоторых целевых компьютеров.

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

Если ваш целевой компьютер не поддерживает синтаксический анализ аргументов в командной строке, задайте определение макроса препроцессора EXTMODE_DISABLE_ARGS_PROCESSING=1 для целевого компилятора целевых приложений.

Чтобы заменить -w можно использовать эту команду, чтобы указать, что целевое приложение входит и остается в состоянии ожидания, пока не получит сообщение Connect от Simulink:

set_param(modelName, 'OnTargetWaitForStart', 'on');
Процесс сборки предоставляет необходимую опцию (-DON_TARGET_WAIT_FOR_START=1) компилятору.

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

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

Похожие темы