Использование живых IoT-данных в MATLAB с интеграцией RTI Connext DDS
При анализе данных датчиков типичный рабочий процесс включает сбор сырых данных, конвертацию в пригодный формат и затем использование мощных аналитических возможностей MATLAB. Однако этап конвертации данных может быть трудоемким. Благодаря недавней интеграции MathWorks, MATLAB теперь может напрямую подписываться на данные и публиковать их через DDS — де-факто промежуточное ПО для коммуникаций IIoT. Это позволяет разработчикам прототипировать и тестировать аналитику в реальном времени с минимальными накладными расходами.
Начало работы
Перед началом убедитесь, что установлены MATLAB и RTI Connext DDS. В примерах использовались следующие версии:
- MathWorks MATLAB R2016b
- MathWorks DDS Blockset 2.9.2
- RTI Connext DDS 5.2.3 (Linux и Windows)
- RTI Shapes Demo Application (устанавливается с Connext DDS)
- Windows 10 PC
Посмотрите видео установки, чтобы проверить правильность конфигурации всех компонентов: Installation Video.
Инициализация
После установки инициализируйте DDS в MATLAB следующими шагами:
- Импортируйте требуемые IDL-типы данных для вашего проекта.
- Создайте DDS Domain Participant.
- Создайте DDS DataWriter.
- Создайте DDS DataReader.
Импорт IDL-файла автоматически генерирует соответствующие .m файлы для MATLAB. Например, для импорта ShapeType.idl:
> DDS.import('ShapeType.idl','matlab','f')
После импорта тип данных доступен для создания DataReader/DataWriter. Создайте Domain Participant:
> dp = DDS.DomainParticipant;
Подключите писателей и читателей для типа ShapeType в топиках Triangle и Square:
> dp.addWriter('ShapeType','Triangle') > dp.addReader('ShapeType','Square')
Подписка на данные в Shapes Demo
RTI Shapes Demo предоставляет предварительно настроенные топики для Square, Circle и Triangle, все основанные на ShapeType. Используйте демо для создания подписчика на топик Triangle; оставьте настройки QoS по умолчанию.
Публикация данных из MATLAB
С настроенным DataWriter опубликуйте зеленый треугольник:
%% Создание экземпляра ShapeType myData = ShapeType; myData.x = int32(75); myData.y = int32(100); myData.shapesize = int32(50); myData.color = 'GREEN'; %% Запись данных в DDS dp.write(myData);
Shapes Demo отображает единственный зеленый треугольник, как показано ниже:
Другие паттерны публикации:
%% Зеленые треугольники в линию на 1 Гц
for i=1:10
myData.x = int32(20 + 10*i);
myData.y = int32(40 + 10*i);
dp.write(myData);
pause(1);
end
%% Зеленые треугольники в окружность на 20 Гц
for i=1:1000
angle = 10*pi * (i/200);
myData.x = int32(100 + (50 * cos(angle)));
myData.y = int32(100 + (50 * sin(angle)));
myData.shapesize = int32(40);
myData.color = 'GREEN';
dp.write(myData);
pause(0.05);
end
Демо визуализирует эти паттерны как показано:
Публикация данных в Shapes Demo
В Shapes Demo создайте издателя для топика Square. Выберите цвет (например, оранжевый) и оставьте QoS по умолчанию. Демо будет транслировать позицию X,Y квадрата каждые 30 мс.
Подписка на данные в MATLAB
Используйте DataReader Square для потребления данных из Shapes Demo. Прочитайте десять сэмплов с интервалом в одну секунду:
%% Чтение данных
for i=1:10
dp.read()
pause(1);
end
MATLAB выводит десять сообщений, похожих на скриншот ниже:
Продвинутый сценарий: трансформация и визуализация
После установки двунаправленной связи, преобразуйте полученные данные квадрата, поменяв местами X и Y координаты, переопубликуйте как красный треугольник и постройте график X-позиций во времени. Скрипт MATLAB ниже демонстрирует этот рабочий процесс:
%% Выделение массива для 100 сэмплов
xArray = zeros(1,100);
%% Сбор, трансформация и перепубликация
for i=1:100
[myData, status] = dp.read();
if ~isempty(myData)
x = myData(1).x;
y = myData(1).y;
xArray(i) = x;
yArray(i) = y;
myData(1).y = x;
myData(1).x = y;
myData(1).color = 'RED';
dp.write(myData(1));
end
pause(0.05);
end
%% Построение X-позиции
t = 1:100;
plot(t,xArray);
legend('xPos');
xlabel('Time');
ylabel('Position');
title('X Positions');
Shapes Demo теперь показывает красный треугольник, зеркалящий оранжевый квадрат, в то время как MATLAB отображает график X-позиций:
Интеграция DDS с MATLAB оптимизирует прием, внедрение и анализ данных. Хотя эта демо использует простое приложение Shapes, тот же подход работает для любого DDS-ориентированного IoT-источника данных. Для более глубокого понимания интеграции MATLAB с DDS посетите страницу MATLAB DDS Integration на сайте MathWorks. Для изучения Connext DDS обратитесь к ресурсам разработчика здесь.
Интернет вещей
- MQTT против DDS: выбор правильного M2M протокола для IoT
- Уроки Hannover Messe: 5 проверенных стратегий использования IT для промышленных операций
- Обеспечение соответствия данных в Интернете вещей
- Готово ли ваше производство к IoT? Практическое руководство
- Демократизация Интернета вещей: Next-Gen Satellite IoT приносит универсальную, доступную связность
- Раскрытие ценности данных IoT: безопасные стратегии на основе инсайтов
- Превращение данных IoT в бизнес-ценность: практическое руководство
- Использование IoT-данных для производственного совершенства
- Ведущие облачные платформы ИоТ-аналитики на 2026 год
- Типы данных в MATLAB: Полное руководство с примерами