В этом примере показано, как импортировать, смоделируйте и разверните приложение DDS. Пример приложения является системой позиционирования мультидатчика, спроектированной, чтобы оценить положение транспортного средства. Система позиционирования состоит из трех компонентов: компонент датчика, компонент оценки и компонент отображения. В системе позиционирования датчики отправляют данные в компонент оценки, который вычисляет, положение транспортного средства оценивают, что это отправляет к компоненту отображения, чтобы показать визуальным представлением предполагаемого положения транспортного средства.
Для системы позиционирования определения DDS (например, Области, Темы, Типы и политики QoS) были заданы в XML. В общем рабочем процессе DDS Blockset вы используете Быстрый запуск Приложения DDS, чтобы импортировать эти определения XML. В данном примере XML был уже импортирован. Чтобы просмотреть спецификации XML для системы позиционирования, откройте XML-файл positioning_system.xml
. Чтобы просмотреть представление этих определений в DDS Blockset, откройте Словарь DDS:
open positioning_system.sldd
Первый компонент в системе позиционирования является датчиками. Система позиционирования использует акселерометр и GPS, каждый представленный моделью, чтобы оценить положение транспортного средства. Каждая модель датчика создается как Издатель. Чтобы просмотреть структуру модели и интерфейс, откройте модели:
open_system('ex_accelerometer');
open_system('ex_gps');
В каждой модели датчика можно просмотреть каждый аспект Издателя, смоделированного в Simulink:
Логика модели Sensor, которая состоит из Функционального блока, который симулирует входные данные датчика.
Блок Write DDS Sample, который преобразует данные о датчике от типа данных Simulink до типа данных DDS.
Блок Bus Element Out, который отправляет тип данных DDS.
В дополнение к моделированию датчиков интерфейс DDS был сконфигурирован для каждой модели датчика. Можно просмотреть интерфейс DDS для каждого датчика в редакторе Отображений Кода:
На панели инструментов кликните по Интерфейсу Кода и выберите Individual Elements Code Mappings.
На вкладке Outports можно просмотреть это, Режим Настройки установлен в Use Writer XML Path
. Это конфигурации модели DataWriters к определениям задано в XML.
Второй компонент является оценочной моделью. Оценочная модель получает данные из датчиков и вычисляет предполагаемое положение транспортного средства. Модель оценки создается как Подписчик на датчики и как Издатель к компоненту отображения. Чтобы просмотреть структуру модели и интерфейс, откройте модель:
open_system('ex_positionestimator');
В модели оценки можно просмотреть каждый аспект Подписчика и Издателя, смоделированного в Simulink:
Модель оценки имеет два Элемента Шины В блоках, сконфигурированных как типы данных DDS, чтобы получить данные о датчике.
Модели присоединили блок Take DDS Sample к каждому блоку Bus Element In, чтобы преобразовать типы данных DDS в типы данных Simulink.
Модель оценки вычисляет логику, чтобы оценить положение транспортного средства.
Модель использует блок Write DDS Sample, чтобы преобразовать типы данных Simulink в типы данных DDS.
Оценочная модель использует блок Bus Element Out, чтобы отправить оценку как тип данных DDS к компоненту отображения.
В дополнение к моделированию модели оценки интерфейс DDS был сконфигурирован для модели оценки. Можно просмотреть интерфейс DDS в редакторе Отображений Кода:
На панели инструментов кликните по Интерфейсу Кода и выберите Individual Elements Code Mappings.
На вкладке Inports можно просмотреть это, Режим Настройки установлен в Use Reader XML Path
. Это конфигурации модели DataReaders к определениям задано в XML.
На вкладке Outports можно просмотреть это, Режим Настройки установлен в Use Writer XML Path
. Это конфигурации модели DataWriter к определению задано в XML.
Третий компонент является моделью дисплея. Модель дисплея получает и графически отображает предполагаемое положение транспортного средства. Модель дисплея создается как Подписчик на компонент оценки. Чтобы просмотреть структуру модели и интерфейс, откройте модель:
open_system('ex_resultdisplay');
В модели дисплея можно просмотреть каждый аспект приложения, которое действует как Подписчик, смоделированный в Simulink:
Модели оценки сконфигурировали блок Bus Element In как тип данных DDS, чтобы получить оценку положения транспортного средства.
Модель имеет блок Take DDS Sample, чтобы преобразовать тип данных DDS в тип данных Simulink так, чтобы это могло отобразить оценку транспортного средства.
Логика модели компонента отображения графически показывает оценку положения транспортного средства.
В дополнение к моделированию модели дисплея был сконфигурирован интерфейс DDS. Можно просмотреть интерфейс DDS в редакторе Отображений Кода:
На панели инструментов кликните по Интерфейсу Кода и выберите Individual Elements Code Mappings.
На вкладке Inports можно просмотреть это, Режим Настройки установлен в Use Reader XML Path
. Это конфигурации модели DataReader к определению задано в XML.
Чтобы визуально показать приложение системы позиционирования DDS, этот пример симулирует сеть DDS, чтобы показать результаты системы позиционирования. Блок Queue помещается между блоками модели Средства оценки Акселерометра и Положения, чтобы симулировать HISTORY QoS. Когда вы симулируете приложение, вы видите на инструментальной панели, что система оценки положения производит более точное положение транспортного средства, чем вход датчика.
open_system('ex_positioningsystem');
set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','10'); set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','10'); sim('ex_positioningsystem'); set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','100'); set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','100');
Чтобы видеть эффект Качества сервиса (QoS) на оценке, если QoS не чествуется, результаты неточны.
set_param(['ex_positioningsystem/Queue for HISTORY' newline 'QoS Simulation'], ... 'Commented','through') set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','10'); set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','10'); sim('ex_positioningsystem'); set_param('ex_positioningsystem/DDS Samples: GPSPos','TimeSpan','100'); set_param('ex_positioningsystem/DDS Samples: EstPos','TimeSpan','100');
После рассмотрения симуляции системы позиционирования, если требуется развернуть этот пример, можно создать модель и использовать исполняемый файл, чтобы развернуть это приложение на сети DDS.