exponenta event banner

Приложение системы позиционирования DDS

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

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

Для системы позиционирования определения DDS (например, домены, темы, типы и политики QoS) были указаны в XML. В общем рабочем процессе DDS Blockset для импорта этих определений XML используется быстрый запуск приложения DDS. В этом примере XML уже импортирован. Чтобы просмотреть спецификации XML для системы позиционирования, откройте файл XML. positioning_system.xml. Чтобы просмотреть представление этих определений в наборе блоков DDS, откройте словарь DDS:

open positioning_system.sldd

Модель и настройка компонента датчика

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

open_system('ex_accelerometer');

open_system('ex_gps');

В каждой модели датчика можно просмотреть все аспекты Publisher, смоделированные в Simulink:

  1. Логика модели сенсора, которая состоит из функционального блока, моделирующего входные данные сенсора.

  2. Блок «Запись образца DDS», преобразующий данные датчика из типа данных Simulink в тип данных DDS.

  3. Исходящий порт, отправляющий тип данных DDS.

В дополнение к моделированию датчиков, интерфейс DDS был сконфигурирован для каждой модели датчика. Интерфейс DDS для каждого датчика можно просмотреть в редакторе сопоставлений кодов:

  1. На панели инструментов щелкните Интерфейс кода (Code Interface) и выберите Сопоставление кода отдельных элементов (Individual Elements Code Mappings).

  2. На вкладке Outports можно просмотреть, что для параметра Configuration Mode установлено значение Use Writer XML Path. Эта конфигурация задает для DataWriters определения, указанные в XML.

Модель и настройка компонента оценки позиции

Вторым компонентом является модель оценки. Модель оценки принимает данные от датчиков и вычисляет расчетное положение транспортного средства. Модель оценки строится как подписчик на датчики и как издатель на экранный компонент. Чтобы просмотреть структуру и интерфейс модели, откройте модель:

open_system('ex_positionestimator');

В модели оценки можно просмотреть все аспекты подписчика и издателя, смоделированные в Simulink:

  1. Модель оценки имеет два входа, сконфигурированных как типы данных DDS для приема данных датчика.

  2. Модель имеет блок Take DDS Sample, прикрепленный к каждому входу для преобразования типов данных DDS в типы данных Simulink.

  3. Модель оценки вычисляет логику для оценки положения транспортного средства.

  4. Модель использует блок «Запись образца DDS» для преобразования типов данных Simulink в типы данных DDS.

  5. Модель оценки использует выходной порт для отправки оценки в качестве типа данных DDS в экранный компонент.

В дополнение к моделированию модели оценки интерфейс DDS был сконфигурирован для модели оценки. Интерфейс DDS можно просмотреть в редакторе сопоставлений кодов:

  1. На панели инструментов щелкните Интерфейс кода (Code Interface) и выберите Сопоставление кода отдельных элементов (Individual Elements Code Mappings).

  2. На вкладке Inports можно просмотреть, что для параметра Configuration Mode установлено значение Use Reader XML Path. Эта конфигурация задает для DataReaders определения, указанные в XML.

  3. На вкладке Outports можно просмотреть, что для параметра Configuration Mode установлено значение Use Writer XML Path. Эта конфигурация задает для DataWriter определение, указанное в XML.

Модель и настройка экранного компонента

Третьим компонентом является модель отображения. Модель дисплея принимает и графически отображает расчетное положение транспортного средства. Модель отображения строится как подписчик на компонент оценки. Чтобы просмотреть структуру и интерфейс модели, откройте модель:

open_system('ex_resultdisplay');

В модели отображения можно просмотреть все аспекты приложения, которое действует как подписчик, смоделированный в Simulink:

  1. Модель оценки имеет входной порт, сконфигурированный как тип данных DDS для приема оценки местоположения транспортного средства.

  2. Модель имеет блок Take DDS Sample для преобразования типа данных DDS в тип данных Simulink для отображения оценки транспортного средства.

  3. Логика модели компонента дисплея графически показывает оценку положения транспортного средства.

В дополнение к моделированию модели дисплея сконфигурирован интерфейс DDS. Интерфейс DDS можно просмотреть в редакторе сопоставлений кодов:

  1. На панели инструментов щелкните Интерфейс кода (Code Interface) и выберите Сопоставление кода отдельных элементов (Individual Elements Code Mappings).

  2. На вкладке Inports можно просмотреть, что для параметра Configuration Mode установлено значение Use Reader XML Path. Эта конфигурация задает для DataReader определение, указанное в XML.

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

Чтобы визуально показать приложение системы позиционирования DDS, в этом примере моделируется сеть DDS, чтобы показать результаты системы позиционирования. Блок Queue размещается между блоками модели Accelerometer и Position Estimator для моделирования качества обслуживания HISTORY. При моделировании приложения на приборной панели видно, что система оценки положения создает более точное положение транспортного средства, чем входной сигнал датчика.

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.