Создавание моделей Simulink, чтобы передать данные

Отправка и получение данных посредством обратной петли последовательного порта

Этот раздел обеспечивает пример, который создает простую модель с помощью блоков Instrument Control Toolbox™ в сочетании с другими блоками в библиотеке Simulink®. Пример иллюстрирует, как отправить данные в простое устройство закольцовывания, соединенное с последовательным портом компьютера COM1 и считать что данные назад в вашу модель.

Вы будете использовать блок To Instrument, чтобы записать значение в последовательный порт на вашем компьютере, и затем использовать блок Query Instrument, чтобы считать то же самое значение назад в вашу модель.

Примечание

Имена блока не показывают по умолчанию в модели. Чтобы отобразить скрытые имена блока при работе в модели, выберите Display и снимите флажок Hide Automatic Names.

Шаг 1: создайте новую модель

Чтобы запустить Simulink и создать новую модель, введите следующее в командной строке MATLAB®:

simulink

В начальной странице Simulink нажмите Blank Model, и затем Create Model. Пустое, окно Editor открывается.

В Редакторе нажмите File> Save, чтобы присвоить имя к вашей новой модели.

Шаг 2: откройте библиотеку блоков

В окне редактора моделей нажмите кнопку Library Browser или нажмите View> Library Browser.

Браузер Библиотеки Simulink открывается. Его левая панель содержит дерево доступных библиотек блоков в алфавитном порядке. Нажмите Instrument Control Toolbox узел.

Чтобы использовать блок, добавьте его в существующую модель или создайте новую модель.

Шаг 3: перетащите блоки Instrument Control Toolbox в модель

Чтобы использовать блоки в модели, кликните по блоку в библиотеке и, удержав кнопку мыши вниз, перетащите его в Редактор Simulink. В данном примере вам нужен один экземпляр К Инструменту и Инструментальным блокам Запроса в вашей модели.

Примечание

Блок To Instrument может использоваться с этими интерфейсами: VISA, GPIB, Последовательный, TCP/IP и UDP. Это не поддержано в этих интерфейсах: SPI, I2C и Bluetooth.

Перетащите блоки Instrument Control Toolbox в модель

Шаг 4: перетащите другие блоки, чтобы завершить модель

Этот пример требует еще двух блоков. Один блок обеспечивает данные, которые отправляются в инструмент; другой блок отображает данные, полученные от инструмента.

Поскольку данные, отправленные в инструмент, будут константой, можно использовать блок Constant с этой целью. Доступ к блоку путем расширения узла Simulink в дереве браузера и нажатия на запись библиотеки Sources. От блоков на правой панели перетащите блок Constant в Редактор Simulink и поместите его слева от блока To Instrument.

Перетащите постоянный блок к окну модели

Отобразить данные получило от инструмента, можно использовать блок Display. Чтобы получить доступ к блоку Display, кликните по записи библиотеки Sinks в расширенном узле Simulink в дереве браузера. От блоков, отображенных на правой панели, перетащите блок Display в Редактор Simulink и поместите его справа от блока Query Instrument.

Шаг 5: соедините блоки

Установите связь между блоком Constant и блоком To Instrument. Быстрый способ установить связь состоит в том, чтобы выбрать блок Constant, нажать и удержать клавишу Ctrl, и затем кликнуть по блоку To Instrument.

Таким же образом установите связь между выходным портом блока Query Instrument и входным портом блока Display.

Примечание

Два блока непосредственно не соединяются вместе в модели. Единственная связь между ними через инструмент, который является обратной петлей, соединенной с последовательным портом COM1. Поскольку нет никакой прямой связи между этими двумя блоками, необходимо рассмотреть их синхронизацию при выполнении модели. Блок Query Instrument не получает свой вход от блока To Instrument, таким образом, это не имеет никакого способа знать, когда данные из инструмента доступны. Поэтому необходимо установить параметры блоков писать данные в обратную петлю, прежде чем модель попытается получить данные из обратной петли.

Шаг 6: задайте значения параметров блоков

Установите параметры для блоков в вашей модели путем двойного клика по блоку.

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

Нажмите ОК, чтобы закрыть диалоговое окно.

Дважды кликните блок Query Instrument, чтобы открыть его диалоговое окно параметров. Убедитесь, что значения на вкладке Hardware Configuration совпадают с Аппаратными значениями на блоке To Instrument.

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

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

Дважды кликните блок Constant, чтобы открыть его диалоговое окно параметров. Измените Постоянное значение в значение, которое вы хотите отправить в инструмент. В данном примере изменение:

  1. Constant value к 25.

  2. Sample time к 1.

Нажать ОК.

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

Шаг 7: задайте приоритет блока

Блок с самым низким номером получает самый высокий приоритет. В Редакторе Simulink щелкните правой кнопкой по блоку и выберите Properties. Введите приоритетный номер в поле Priority в диалоговом окне Block Properties. Чтобы гарантировать, что блок To Instrument сначала завершает записывание данные к обратной петле, перед, блок Query Instrument читает его, установите приоритет блока To Instrument к 1 и блок Query Instrument к 2.

Внимание

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

Чтобы понять больше о приоритетах блока, см. документацию Simulink.

Шаг 8: запустите симуляцию

Чтобы запустить симуляцию, нажмите зеленую кнопку Run на панели инструментов Simulink Editor. Можно использовать опции панели инструментов, чтобы задать, сколько времени запустить симуляцию и остановить рабочую симуляцию. Можно также запустить симуляцию путем выбора Simulation > Run.

Когда вы запускаете симуляцию, постоянное значение, которое вы задали (25), записано в инструмент (последовательная обратная петля), получено от инструмента и показано в блоке Display.

Во время симуляции строка состояния в нижней части Редактора Simulink обновляет прогресс симуляции.

Отправка и получение данных по сети TCP/IP

Этот пример создает простую модель с помощью Инструментальных Блоков управления в библиотеке блоков в сочетании с другими блоками в Библиотеке Simulink. Этот пример также иллюстрирует, как отправить данные в сервер эха с помощью TCP/IP и считать что данные назад в модель.

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

Примечание

Имена блока не показывают по умолчанию в модели. Чтобы отобразить скрытые имена блока при работе в модели, выберите Display и снимите флажок Hide Automatic Names.

Шаг 1: создайте сервер эха

Откройте порт на своем компьютере, чтобы работать сервером эха, который можно использовать, чтобы отправить и получить сигналы через TCP/IP. Чтобы создать сервер эха, введите эту команду в MATLAB:

echotcpip('on', 50000)

Порт 50000 открывается на вашей машине, чтобы работать сервером эха и включить ее.

Шаг 2: создайте новую модель

Чтобы запустить Simulink и создать новую модель, введите следующее в командной строке MATLAB:

simulink

В начальной странице Simulink нажмите Blank Model, и затем Create Model. Пустое, окно Editor открывается.

В Редакторе нажмите File> Save, чтобы присвоить имя к вашей новой модели.

Шаг 3: откройте библиотеку блоков

В окне редактора моделей нажмите кнопку Library Browser или нажмите View> Library Browser.

Браузер Библиотеки Simulink открывается. Его левая панель содержит дерево доступных библиотек блоков в алфавитном порядке. Нажмите Instrument Control Toolbox узел.

Чтобы использовать блок, добавьте его в существующую модель или создайте новую модель.

Шаг 4: перетащите блоки Instrument Control Toolbox в модель

Чтобы использовать блоки в модели, кликните по каждому блоку в библиотеке и, удержав кнопку мыши вниз, перетащите его в Редактор Simulink. Для этой модели вам нужен один экземпляр TCP/IP, Отправляют, и TCP/IP Получают блоки в вашей модели.

Перетащите блоки Instrument Control Toolbox в модель

Шаг 5: перетащите блоки Sine Wave и Scope, чтобы завершить модель

Этот пример требует еще двух блоков. Один блок отображает данные, полученные от получить блока, и другой блок является данными, которые будут отправлены в отправить блок.

Блоку TCP/IP Send нужен источник данных для данных, которые будут отправлены. Добавьте блок Sine Wave в модель, чтобы отправить сигналы в блок TCP/IP Send. Чтобы получить доступ к блоку Sine Wave, расширьте узел Simulink в дереве браузера и кликните по записи библиотеки Sources. От блоков на правой панели перетащите блок Sine Wave в модель и поместите его слева от блока TCP/IP Send.

Перетащите блок Sine wave к модели

Чтобы отобразить данные, полученные блоком TCP/IP Receive, используйте блок Scope. Чтобы получить доступ к этому блоку, кликните по записи библиотеки Sinks в расширенном узле Simulink в дереве браузера. От блоков на правой панели перетащите блок Display в модель и поместите его справа от блока TCP/IP Receive.

Перетащите блок Scope к модели

Шаг 6: соедините блоки

Установите связь между блоком Sine Wave и блоком TCP/IP Send. Быстрый способ установить связь состоит в том, чтобы выбрать блок Sine Wave, нажать и удержать клавишу Ctrl, и затем кликнуть по блоку TCP/IP Send. Таким же образом установите связь между выходным портом блока TCP/IP Receive и входным портом блока Scope.

Шаг 7: задайте значения параметров блоков

Установите параметры для блоков в вашей модели путем двойного клика по блоку.

Сконфигурируйте Отправить Блок.  Дважды кликните блок TCP/IP Send, чтобы открыть его диалоговое окно параметров. Установите Удаленное поле адреса на localhost и поле Port к 50000, поскольку это - адрес, вы устанавливаете сервер эха на то, когда вы запустили его.

Нажмите Apply и затем OK.

Сконфигурируйте Получить Блок.  Дважды кликните блок Receive, чтобы открыть его диалоговое окно параметров. Установите поле Remote address на localhost и поле Port к 50000. Измените Data type в double. Поле Block sample time установлено в 0.01 по умолчанию. Шаг расчета блока здесь должен совпадать с тем в блоке Sine Wave, поэтому подтвердите, что они оба установлены в 0.01.

Нажать ОК.

Сконфигурируйте Блок Sine wave.  Дважды кликните блок Sine Wave, чтобы открыть его диалоговое окно параметров. Установите поле Sample time на 0.01.

Нажать ОК.

Шаг 8: задайте приоритеты блока

Чтобы запустить симуляцию правильно, задайте порядок, в котором Simulink должен обработать блоки. Щелкните правой кнопкой по блоку и выберите Properties. Введите приоритетный номер в поле Priority. В этом случае установите приоритет TCP/IP Send к 1 и TCP/IP Receive к 2.

Внимание

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

Считайте документацию Simulink, чтобы понять больше о приоритетах блока.

Также необходимо установить два параметра на модели. В Редакторе Simulink выберите Simulation > Model Configuration Parameters. В диалоговом окне Configuration Parameters, набор поле Type к Fixed-step и набор поле Solver к discrete (no continuous states).

Шаг 9: запустите симуляцию

Чтобы запустить симуляцию, нажмите зеленую кнопку Run на панели инструментов Simulink Editor. Можно использовать опции панели инструментов, чтобы задать, сколько времени запустить симуляцию и остановить его. Можно также запустить симуляцию путем выбора Simulation > Run.

В то время как симуляция запускается, строка состояния в нижней части Редактора Simulink обновляет прогресс симуляции.

Шаг 10: просмотрите результат

Дважды кликните блок Scope, чтобы просмотреть сигнал на графике, когда это получено блоком TCP/IP Receive.

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