В этом примере показано, как импортировать, моделировать и развернуть приложение DDS. Примером применения является мультисенсорная система позиционирования, предназначенная для оценки положения транспортного средства. Система позиционирования состоит из трех компонентов: компонента датчика, компонента оценки и компонента отображения. В системе позиционирования датчики посылают данные в компонент оценки, который вычисляет оценку положения транспортного средства, которую он посылает в компонент отображения, чтобы показать в качестве визуального представления оцененного положения транспортного средства.
Для системы позиционирования определения DDS (для примера, Областей, тем, типов и политик QoS) были заданы в XML. В общем рабочем процессе DDS Blockset для импорта этих определений используется приложение DDS Quick Start. В данном примере XML уже импортирован. Чтобы просмотреть спецификации XML для системы позиционирования, откройте файл XML positioning_system.xml
. Чтобы просмотреть представление этих определений в DDS Blockset, откройте DDS-словарь:
open positioning_system.sldd
Первым компонентом в системе позиционирования являются датчики. Система позиционирования использует акселерометр и GPS, каждый из которых представлен моделью, для оценки положения транспортного средства. Каждая модель датчика сконструирована как Publisher. Чтобы просмотреть структуру модели и интерфейс, откройте модели:
open_system('ex_accelerometer');
open_system('ex_gps');
В каждой модели датчика можно просмотреть каждый аспект Publisher, смоделированный в Simulink:
Логика модели Sensor, которая состоит из блока Function, который имитирует входные данные датчика.
Блок Write DDS Sample, который преобразует данные датчика из типа данных Simulink в тип данных DDS.
Порт вывода, который отправляет тип данных DDS.
В дополнение к моделированию датчиков, интерфейс DDS был сконфигурирован для каждой модели датчика. Вы можете просмотреть интерфейс DDS для каждого датчика в редакторе Отображения:
На панели инструментов нажмите Code Interface и выберите Individual Elements Code Mappings.
На вкладке Outports можно просмотреть, что для параметра Configuration Mode задано значение Use Writer XML Path
. Эта конфигурация устанавливает для DataWriters определения, указанные в XML.
Второй компонент является оценочной моделью. Оценочная модель получает данные от датчиков и вычисляет расчетное положение транспортного средства. Модель оценки строится как абонент датчиков и как издатель компонента отображения. Чтобы просмотреть структуру модели и интерфейс, откройте модель:
open_system('ex_positionestimator');
В модели оценки можно просмотреть каждый аспект Subscriber и Publisher, смоделированных в Simulink:
Модель оценки имеет два входных порта, сконфигурированных как типы данных DDS, чтобы получить данные датчика.
Модель имеет блок Take DDS Sample, присоединенный к каждому Inport, чтобы преобразовать типы данных DDS в типы данных Simulink.
Модель оценки вычисляет логику, чтобы оценить положение транспортного средства.
Модель использует блок Write DDS Sample, чтобы преобразовать типы данных Simulink в типы данных DDS.
Оценочная модель использует выходной порт, чтобы отправить оценку как тип данных DDS в компонент отображения.
В дополнение к моделированию модели оценки, интерфейс DDS был сконфигурирован для модели оценки. Вы можете просмотреть интерфейс DDS в редакторе Code Mappings:
На панели инструментов нажмите Code Interface и выберите Individual Elements Code Mappings.
На вкладке Inports можно просмотреть, что для параметра Configuration Mode задано значение Use Reader XML Path
. Эта конфигурация устанавливает для DataReaders определения, указанные в XML.
На вкладке Outports можно просмотреть, что для параметра Configuration Mode задано значение Use Writer XML Path
. Эта конфигурация устанавливает значение DataWriter в определении, указанном в XML.
Третьим компонентом является модель отображения. Модель отображения получает и графически отображает предполагаемое положение транспортного средства. Модель отображения строится как абонент компонента оценки. Чтобы просмотреть структуру модели и интерфейс, откройте модель:
open_system('ex_resultdisplay');
В модели отображения можно просмотреть каждый аспект приложения, которое действует как Подписчик, смоделированный в Simulink:
Модель оценки имеет входной порт, сконфигурированный как тип данных DDS, чтобы принять оценку положения транспортного средства.
Модель имеет Взятие блок Выборки DDS для преобразования типа данных DDS в тип данных Simulink, чтобы он мог отображать оценку транспортного средства.
Логика модели компонента отображения графически показывает оценку положения транспортного средства.
В дополнение к моделированию модели отображения был сконфигурирован интерфейс DDS. Вы можете просмотреть интерфейс DDS в редакторе Code Mappings:
На панели инструментов нажмите Code Interface и выберите Individual Elements Code Mappings.
На вкладке Inports можно просмотреть, что для параметра Configuration Mode задано значение Use Reader XML Path
. Эта конфигурация устанавливает DataReader в определение, заданное в XML.
Чтобы визуально показать приложение системы позиционирования DDS, этот пример моделирует сеть DDS, чтобы показать результаты системы позиционирования. Блок Queue помещается между блоками модели Accelerometer и Position Estimator, чтобы симулировать 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.