Для просмотра этого контента требуется подписка на JoVE. Войдите или начните свой бесплатный пробный период.

Методическая статья

Протокол автоматического создания веб-интерфейсов для приложений LabVIEW с использованием протокола удаленного взаимодействия (Remote Interoperability Protocol)

189 просмотров

⸱

DOI:

10.3791/72765

⸱

14 августа 2026 г.

В этой статье

Краткое содержание

В данном исследовании подтверждается эффективность автоматической генерации веб-пользовательского интерфейса на основе протокола удаленной совместимости (remote interoperability protocol, RIP) с двумя различными системами LabVIEW — моделью вентилятора и моделью управления положением двигателя постоянного тока; также приводится воспроизводимая процедура создания, регистрации, развертывания и тестирования обоих примеров.

Аннотация

Удаленные экспериментальные платформы позволяют получать доступ к локальным имитационным моделям или физическим устройствам через сеть, однако традиционные веб-интерфейсы обычно требуют создания отдельной страницы, макета управления и логики передачи данных для каждого эксперимента, что увеличивает затраты на разработку. В данной работе проверяется эффективность установленного рабочего процесса автоматической генерации веб-пользовательского интерфейса (UI) на основе виртуальных приборов (VI) LabVIEW с использованием протокола удаленного взаимодействия (RIP) и приводится воспроизводимый протокол его реализации. Рабочий процесс предполагает создание VI LabVIEW, которые определяют элементы управления вводом и индикаторы вывода на передней панели, регистрацию каждого VI в конфигурации RIP-сервера, чтение полученных метаданных переменных и генерацию соответствующих веб-элементов управления и дисплеев вывода. Caddy используется в качестве обратного прокси-сервера для объединения путей к статическим файлам фронтенда и путей к запросам прикладного программного интерфейса (API) RIP. Рабочий процесс оценивается на двух различных системах: модели скорости вентилятора и модели пропорционально-интегрально-дифференцирующего (ПИД) управления положением двигателя постоянного тока (DC). В обоих случаях веб-страница идентифицирует открытые переменные, записывает пользовательский ввод в бэкенд LabVIEW, считывает выходные данные модели и генерирует интерфейс на основе метаданных RIP. Эти результаты подтверждают эффективность одного и того же процесса автоматической генерации UI для двух различных динамических систем и документируют шаги, необходимые для его воспроизведения.

Введение

С развитием дистанционных экспериментов, онлайн-обучения и технологий интернета вещей обеспечение веб-доступа к локальным имитационным моделям или экспериментальным установкам стало важным направлением развития экспериментальных платформ1,2,3,4. В последних работах лаборатории, оснащенные средствами интернета вещей, были интегрированы с проектным обучением и локальным или удаленным доступом, что демонстрирует непрерывное развитие гибких сетевых экспериментальных платформ в инженерном образовании5. При проведении экспериментов с системами управления пользователям обычно требуется изменять входные параметры в браузере и наблюдать выходные состояния в режиме реального времени6,7. Традиционные методы обычно требуют создания отдельной веб-страницы, логики привязки управления и интерфейса передачи данных для каждого объекта эксперимента8,9. При изменении переменных в серверной модели часто приходится соответствующим образом модифицировать пользовательский интерфейс, что приводит к значительному объему повторяющейся разработки и ограничивает возможность быстрого расширения экспериментальной платформы.

Протокол удаленной совместимости (Remote interoperability protocol, RIP) обеспечивает промежуточный слой (middleware) между серверными экспериментальными моделями и веб-интерфейсами10,11. В подходе автоматической генерации пользовательского интерфейса (UI) на базе RIP, описанном в предыдущих работах, сервер RIP предоставляет метаданные для каждого эксперимента, включая имена переменных, атрибуты ввода/вывода, типы данных, минимальные и максимальные значения, точность, описания и доступные методы чтения/записи11. Затем веб-клиент может использовать эти метаданные для создания соответствующих HTML-элементов, таких как метки, числовые поля ввода, ползунки, логические элементы управления и окна вывода, во время загрузки или обновления страницы11. Настоящий протокол не пересматривает и не переопределяет спецификацию RIP. Вместо этого он использует существующий открытый сервис RIP и логику генерации HTML-интерфейса на основе метаданных RIP в качестве основы для связи и создания интерфейса, и фокусируется на воспроизводимом создании, регистрации, развертывании прокси-серверов и верификации двух примеров VI в LabVIEW.

По сравнению с традиционной разработкой индивидуальных веб-интерфейсов, автоматическая генерация пользовательского интерфейса (UI) на базе RIP снижает необходимость реализации макетов элементов управления, логики привязки переменных и базовых функций связи в тех случаях, когда несколько экспериментов в LabVIEW используют схожие скалярные входные и выходные переменные8,9,10,11. После регистрации нового VI и предоставления доступа к его переменным для сервера RIP одна и та же логика чтения метаданных и генерации элементов управления может быть повторно использована для создания базового веб-интерфейса10,11. Данная функция полезна для быстрого развертывания, проведения учебных демонстраций и создания платформ удаленных лабораторий, требующих согласованного доступа к нескольким аналогичным экспериментам3,8,9. Однако автоматически генерируемый интерфейс также имеет ограничения. Он не может полностью определить физические связи между переменными, автоматически установить соответствия для графиков или спроектировать специализированную визуализацию и механизмы обеспечения безопасности11. Таким образом, ручная разработка веб-интерфейса остается предпочтительной, если эксперимент требует глубоко кастомизированной графики, сложных рабочих процессов пользователя, продвинутой визуализации, аппаратных блокировок безопасности или арбитража записи для нескольких пользователей.

Общая схема выполнения протокола представлена на рисунке 1. В рамках данного процесса виртуальный инструмент (VI) LabVIEW сначала определяет необходимые элементы управления вводом и индикаторы вывода на передней панели (Front Panel). Затем VI регистрируется в конфигурации RIP-сервера путем указания названия эксперимента и пути к VI. После регистрации RIP-сервер считывает метаданные выбранного эксперимента и обеспечивает доступ на чтение/запись к доступным переменным. Веб-страница XHTML использует полученные метаданные для автоматической генерации соответствующих элементов управления вводом и дисплеев вывода, в то время как Caddy обеспечивает единый путь доступа для статической веб-страницы и маршрутов связи с RIP-сервером. В данном исследовании модели вентилятора и двигателя постоянного тока используются как две реализации одного и того же рабочего процесса. Для других экспериментов в LabVIEW, предоставляющих совместимые скалярные, числовые и логические переменные, разработчики могут использовать тот же рабочий процесс «сборка-регистрация-развертывание-проверка» для создания автоматически генерируемого веб-интерфейса, добавляя при необходимости специфическую для конкретного эксперимента визуализацию, логику безопасности или сложные механизмы обработки данных.

В данной статье не предлагается новая архитектура RIP и не расширяется диапазон типов данных, уже поддерживаемых RIP. Вместо этого RIP используется как установленный механизм связи и генерации пользовательского интерфейса (UI) на основе метаданных, а основное внимание уделяется валидации этого процесса с использованием двух различных систем LabVIEW с документированием воспроизводимого протокола реализации. В предыдущей работе был представлен базовый метод автоматической генерации веб-интерфейса на основе метаданных RIP, а в качестве примера был использован эксперимент с онлайн-сервоприводом11. В более ранних исследованиях также описывались архитектуры удаленных лабораторий с веб-доступом, объединяющие интерактивные интерфейсы с инженерным программным обеспечением и LabVIEW9,12. Однако при практическом воспроизведении некоторые модели LabVIEW из первоначального примера оказались зависимы от версии программного обеспечения и совместимости модулей, что затруднило их прямое использование в более новой среде. Таким образом, в данной работе реконструируются два совместимых серверных VI — модель вентилятора и модель пропорционально-интегрально-дифференцирующего (ПИД) позиционного регулирования двигателя постоянного тока (DC) — и к обеим применяется один и тот же процесс генерации UI на основе метаданных. Вкладом данной работы является кросс-системная валидация установленного рабочего процесса RIP и подробный протокол воспроизведения этого процесса, а не расширение универсальности RIP.

Данный протокол предназначен для исследователей, преподавателей и разработчиков лабораторного оборудования, которые уже используют VI в LabVIEW и нуждаются в предоставлении доступа к имитационным моделям или малорисковым экспериментальным системам через веб-браузер без необходимости независимой реализации полноценного пользовательского интерфейса для каждой модели. Протокол особенно подходит для экспериментов, использующих стандартные числовые и логические переменные, настройку параметров и мониторинг состояния в режиме реального времени10,11. Он менее подходит в качестве автономного решения для экспериментов, требующих сложных структур данных, специализированной визуализации, строгих аппаратных блокировок безопасности или многопользовательского арбитража записи11. Целью данной работы является валидация автоматической генерации веб-интерфейса на основе RIP с использованием двух различных систем LabVIEW, а также предоставление полного воспроизводимого протокола — от создания VI бэкенда до взаимодействия через браузер. Протокол включает определение входных и выходных переменных, регистрацию эксперимента на RIP-сервере, генерацию интерфейса на основе метаданных, развертывание прокси-сервера Caddy и проверку удаленного чтения/записи. Применение одного и того же рабочего процесса к моделям вентилятора и двигателя постоянного тока демонстрирует, что установленный процесс может быть воспроизведен без ручного переписывания полноценного веб-интерфейса для каждого примера9,10,11.

Доступ ограничен. Войдите в систему или начните пробный период, чтобы просмотреть этот контент.

Протокол

Выполните следующие действия для сборки, регистрации, развертывания и проверки двух экспериментов LabVIEW с доступом через RIP, следуя рабочему процессу, обобщенному на Рисунке 1. Все инструменты и платформы, использованные в данном исследовании, перечислены в Таблице материалов.

1. Сборка и запуск экспериментальной модели вентилятора

  1. Соберите модель вентилятора VI.
    1. Откройте LabVIEW, создайте новый VI и сохраните файл под именем fengshan.vi. Сохраните VI в любом каталоге, доступном процессу RIP WebService. Папка Private используется только в качестве примера и не задана в RIP жестко. При регистрации эксперимента в RIP укажите фактический путь к выбранному VI.
    2. На передней панели добавьте элементы управления вводом для модели вентилятора. В данном примере назовите элементы управления вводом Активировать, ШИМ (Широтно-импульсная модуляция), Нагрузка, Тау, Максимальная скорость вращения, и НарушениеУстановите Включить в качестве булева контроля и установите ШИМ, Нагрузка, Тау, KMaxRPMи Нарушение в качестве числовых контроллеров с плавающей запятой двойной точности (DBL). См. Дополнительная таблица 1 относительно физического смысла и роли переменных вентилятора в модели.
    3. Добавьте выходные показатели для модели вентилятора. В данном примере назовите выходные показатели СкоростьОбмин, СтабильнаяСкоростьОбмин, ВремяС, НормСкорость, ТокА, и PowerWУстановите все выходные индикаторы как индикаторы DBL.
      ​ПРИМЕЧАНИЕ: Таблица 1 описывает физический смысл и роль в модели этих выходных переменных. Готовая передняя панель вентилятора показана на Рисунок 2Имена переменных, диапазоны и размеры шага, указанные в Таблица 1 опишите два примера, реализованных в данном протоколе. Они не являются жестко заданными требованиями RIP. Для других экспериментов в LabVIEW разработчики могут определять иные имена переменных на передней панели (Front Panel) и числовые свойства. Сервер RIP считывает фактические имена переменных, типы данных, атрибуты ввода-вывода и доступные числовые свойства из метаданных VI, а веб-страница генерирует соответствующие элементы управления и дисплеи на основе полученных метаданных.
    4. Добавьте цикл While на блок-диаграмму. Добавьте два сдвиговых регистра для хранения предыдущая_скорость и время_преди инициализируйте оба значения нулем.
    5. Добавьте узел формулы (Formula Node) внутрь цикла While. Соедините Разрешить, ШИМ, Нагрузка, Тау, KMaxRPM, Возмущение, speed_prev, и предыдущее время к левым входным клеммам узла Formula Node и установите SteadyRPM, speed_next, SpeedNorm, CurrentA, PowerW, и время_далее в качестве правых выходных клемм.
    6. Постройте Включить логику управления вне узла формулы. Используйте Активировать в качестве селекторного сигнала, чтобы u = ШИМ когда Активировать является истинным и u = 0 когда Активировать является ложным.
    7. Введите код модели вентилятора в узел формулы. Используйте этот код для расчета установившейся скорости, фактической скорости, нормированной скорости, тока, мощности и времени работы; полный код приведен в Дополнительном файле с программным кодом 1.
    8. Подключите следующая_скорость выход узла Formula Node в Скорость, об/мин индикатор, и подключите следующая_скорость обратно к правому регистру сдвига для предыдущая_скоростьПодключите SteadyRPM в / к SteadyRPM индикатор
    9. Подключить следующее_время к TimeS индикатор, и подключите следующее время обратно к регистру сдвига вправо для время_предПодключите НормаСкорости, ТокА, и PowerW к соответствующим выходным показателям.
    10. Добавьте функцию Wait внутрь цикла While и установите время ожидания на 50 мс. Добавьте кнопку Stop Local и подключите ее к условному терминалу цикла While.
    11. Сохраните файл fengshan.vi. Готовая блок-схема вентилятора показана на Рисунок 3.
      ТОЧКА ОСТАНОВКИ: После сохранения завершенного VI вентилятора рабочий процесс можно приостановить. Для возобновления работы позже снова откройте сохраненный VI и убедитесь, что все элементы управления, индикаторы на передней панели (Front Panel) и соединения на блок-диаграмме (Block Diagram) сохранены.
  2. Зарегистрируйте эксперимент с вентилятором на сервере RIP.
    1. Откройте RIPWebService.lvproj в обозревателе проектов LabVIEW (LabVIEW Project Explorer)
      .
    2. Откройте файл Configuration.vi в дереве проекта и найдите таблицу конфигурации эксперимента.
    3. Добавьте новую строку эксперимента. В поле «Имя» (Name) введите fan. Укажите полный путь к сохраненному файлу fengshan.vi. Поля регистрации для эксперимента fan показаны на Рисунок 4.
    4. Заполните оставшиеся поля конфигурации. В поле «Авторы» (Authors) укажите автора эксперимента, в поле «Ключевые слова» (Keywords) — Fan, в поле «Описание» (Description) — fan speed model, а в поле «Частота дискретизации» (Sampling Freq) — 200.
    5. В меню LabVIEW выберите Редактировать > Сделать текущие значения значениями по умолчанию. Save Configuration.vi (Сохранение конфигурации.vi).
    6. Перезапустите веб-службу (WebService) RIP и убедитесь, что после перезапуска эксперимент с вентилятором по-прежнему отображается в интерфейсе конфигурации (Configuration).
      ПРИМЕЧАНИЕ: Название эксперимента чувствительно к регистру. Значение fan в конфигурации RIP (RIP Configuration) должно точно совпадать с ID эксперимента, указанным в XHTML-файле фронтенда. Чтобы развернуть другой VI-файл LabVIEW с той же логикой автоматической генерации пользовательского интерфейса, добавьте новую запись об эксперименте в конфигурацию RIP (RIP Configuration), укажите новое значение в поле Name и установите путь в поле Path к соответствующему VI-файлу. Затем используйте это же значение Name в качестве ID эксперимента в XHTML-файле. Переписывать страницу фронтенда для каждой переменной не требуется.
      ​ТОЧКА ПРИОСТАНОВКИ: После сохранения файла Configuration.vi и установки текущих значений в качестве значений по умолчанию рабочий процесс можно остановить. Для последующего возобновления перезапустите RIP WebService и убедитесь, что эксперимент с вентилятором по-прежнему зарегистрирован.
  3. Подготовьте лицевую панель для эксперимента с вентилятором.
    1. Поместите файл Fan_Automatic_UI.xhtml в директорию Client, используемую в качестве корневого каталога фронтенда.
    2. Откройте файл Fan_Automatic_UI.xhtml с помощью текстового редактора.
    3. Найдите переменную идентификатора эксперимента в разделе скрипта и присвойте ей значение fan.
      ПРИМЕЧАНИЕ: Это значение должно точно совпадать с полем Name (Имя) эксперимента с вентилятором в конфигурации RIP. Настройки ID эксперимента и общая логика генерации пользовательского интерфейса на основе метаданных для XHTML-файлов фронтенда показаны в Рисунок 5.
    4. Убедитесь, что страница получает текущий источник доступа через window.location.origin и запрашивает метаданные эксперимента через rip.info()и передает возвращенные метаданные в автоматическоеПостроениеИнтерфейса().
      ПРИМЕЧАНИЕ: На странице не следует вручную жестко задавать имена переменных вентилятора, их диапазоны или величину шага. Вместо этого записываемые переменные генерируются на основе список_записываемых_метаданных, генерируются удобочитаемые переменные из список.читаемых.материалов, а числовые атрибуты, такие как min, max и step, извлекаются из метаданных, возвращаемых сервером RIP.
    5. Сохраните файл Fan_Automatic_UI.xhtml.
      ​ПРИМЕЧАНИЕ: Чтобы использовать ту же логику генерации интерфейса для другого VI в LabVIEW, установите новый идентификатор (ID) эксперимента в файле XHTML и зарегистрируйте соответствующее название эксперимента и путь к VI в конфигурации RIP. Веб-элементы управления и окна вывода данных генерируются в соответствии с метаданными, возвращаемыми для выбранного эксперимента.
  4. Настройте путь доступа Caddy для эксперимента с вентилятором.
    1. Откройте Caddyfile с помощью текстового редактора.
    2. Установите корневой каталог фронтенда на каталог Client, содержащий файл Fan_Automatic_UI.xhtml.
    3. Выберите неиспользуемый локальный порт для Caddy, чтобы обеспечить браузерный доступ к веб-странице и маршрутам RIP. В данном протоколе в качестве примера порта прокси-доступа используется порт 8090.
      ПРИМЕЧАНИЕ: Порт 8090 не требуется для работы RIP или Caddy. Если порт 8090 занят, замените его любым другим свободным локальным портом и используйте этот же порт в адресе браузера.
    4. Добавьте маршрут, который перенаправляет /fan на Fan_Automatic_UI.xhtml.
    5. Определите порт RIP WebService, настроенный в LabVIEW. В данном протоколе в качестве адреса RIP WebService используется http://localhost:8001.
      ПРИМЕЧАНИЕ: Порт 8001 является бэкенд-портом Web-сервиса LabVIEW/RIP, используемым в тестовой среде. Его можно изменить в конфигурации Web-сервиса LabVIEW/RIP. Если используется другой порт, замените http://localhost:8001 в Caddyfile на соответствующий адрес Web-сервиса RIP.
    6. Добавьте правило обратного прокси, которое перенаправляет запросы /RIP/SSE* на адрес RIP WebService, например http://localhost:8001.
    7. Добавьте правило обратного прокси, которое перенаправляет запросы /RIP* на адрес веб-службы RIP, например, http://localhost:8001. Конфигурация Caddyfile представлена в Рисунок 6.
    8. Откройте командную строку в Windows. Перейдите в локальный каталог загрузки или установки Caddy, введя следующую команду:
      cd /d D:\caddy
      ПРИМЕЧАНИЕ: В данном протоколе путь D:\caddy является локальным путем загрузки или установки Caddy, использованным в тестовой среде. Если Caddy находится в другом каталоге, замените D:\caddy соответствующим локальным путем.
    9. Запустите Caddy с указанным Caddyfile, введя следующую команду:
      caddy.exe run --config Caddyfile
    10. Убедитесь, что Caddy запускается без ошибок конфигурации. Откройте адрес http://localhost:8090/fan в веб-браузере и проверьте, что веб-интерфейс fan отображается корректно, как показано на Рисунок 7.
      ​ПРИМЕЧАНИЕ: Если браузер возвращает ошибку 502, убедитесь, что служба RIP WebService запущена, порт RIP WebService в LabVIEW совпадает с адресом обратного прокси-сервера в Caddyfile, а выбранный порт доступа Caddy не занят.
  5. Проверьте результаты работы вентилятора в ходе эксперимента.
    1. Убедитесь, что интерфейсная страница автоматически генерирует Активировать, ШИМ, нагрузка, тау, макс. об/мин K и Нарушение контроли входных данных
    2. Убедитесь, что на главной странице отображается СкоростьОбМин, СтабильнаяСкоростьОбМин, ВремяС, НормированнаяСкорость, ТокА, и PowerW выходные переменные
    3. Отрегулируйте ШИМ (широтно-импульсная модуляция) и пронаблюдать, произойдет ли Скорость (об/мин) возрастает по мере того, как ШИМ (Широтно-импульсная модуляция) увеличивается и уменьшается по мере того, как ШИМ (широтно-импульсная модуляция) снижается.
    4. Отрегулируйте нагрузку и пронаблюдайте, произошло ли SteadyRPM и Скорость (об/мин) снижается по мере увеличения нагрузки.
    5. Отрегулируйте уровень возмущения и пронаблюдайте, произойдет ли Скорость (об/мин), Ток (А), и PowerW изменение в ответ на входное возмущение.
    6. Убедитесь, что TimeS продолжает расти, подтверждая непрерывную работу заднего вентилятора VI.

2. Сборка и развертывание эксперимента по ПИД-регулированию положения двигателя постоянного тока

  1. Постройте модель ПИД-регулятора управления положением двигателя постоянного тока VI.
    1. Откройте LabVIEW, создайте новый VI и сохраните файл под названием Motor.vi. Сохраните VI в любом каталоге, к которому имеет доступ процесс RIP WebService.
      ПРИМЕЧАНИЕ: Папка Private используется только в качестве примера каталога и не заложена в RIP жестко. При регистрации эксперимента RIP укажите фактический путь к выбранному VI.
    2. На передней панели добавьте элементы управления входами для модели ПИД-регулирования положения двигателя постоянного тока. В данном примере назовите элементы управления входами Уставка, Kc, Ti, Td, внешнее воздействиеи Сброс контроляУстановите Уставка, Kc, Ti, Td, и Нарушение в качестве числовых элементов управления DBL, а элемент управления Reset — в качестве логического (Boolean) элемента управления.
      ПРИМЕЧАНИЕ: Таблица 1 описывает физический смысл, роль в модели и рекомендуемый диапазон переменных, используемых в данном примере.
    3. Добавьте выходные показатели для модели ПИД-регулятора управления положением двигателя постоянного тока. В данном примере назовите выходные показатели Положение, напряжение, время, и Измеренная угловая скоростьУстановите все выходные индикаторы как индикаторы DBL. Таблица 1 описывает физический смысл и роль этих выходных переменных в модели. Завершенная передняя панель (Front Panel) для двигателя показана на Рисунок 8.
      ПРИМЕЧАНИЕ: Названия переменных и диапазоны, указанные в Таблица 1 Опишите два примера, реализованных в данном протоколе. Они не являются фиксированными требованиями для рабочего процесса автоматической генерации пользовательского интерфейса (UI) на основе RIP. При использовании другого VI LabVIEW программа RIP считывает фактические имена переменных, типы данных, атрибуты ввода/вывода и доступные числовые свойства из метаданных VI. Таким образом, логика генерации интерфейса не требует жесткого кодирования имен переменных, максимальных и минимальных значений или размеров шага для каждого эксперимента.
    4. Добавьте цикл While на блок-диаграмму. Добавьте шесть регистров сдвига для хранения тета, омега, im, e_prev, integ, и время, и инициализируйте все шесть значений нулем.
    5. Добавьте узел формулы (Formula Node) внутрь цикла While. Согласно представленной схеме модели ПИД-регулирования положения двигателя постоянного тока в Рисунок 9используйте этот узел формулы (Formula Node) в качестве основного модуля вычислений для расчета ошибки, ПИД-регулирования, ограничения напряжения, электрической модели, механической модели и обновления координат.
      ПРИМЕЧАНИЕ: Параметры внутреннего двигателя, используемые в данной модели, такие как R, L, J, b, Kt, Ke, и Vmaxявляются нормализованными параметрами обучающей модели, а не откалиброванными параметрами конкретного физического двигателя. Они были выбраны для получения стабильного и наблюдаемого симулированного отклика при выбранном временном шаге и пределе напряжения, чтобы эффекты от Уставка, Kc, Ti, Td, и Нарушение может быть наглядно продемонстрировано в ходе работы через веб-интерфейс.
    6. Набор заданное значение, тета, омега, интегральная составляющая, предыдущее значение ошибки, интеграл, коэффициент пропорциональности, время интегрирования, время дифференцирования, возмущение, сброс и dt aвходные клеммы узла Formula Node. Установите theta_next, omega_next, im_next, e_next, integ_next, и напряжение в качестве выходных терминалов узла Formula Node.
    7. Подключите Уставка контроль по отношению к sp входной терминал узла Formula Node. Подключите Kc, Ti, Td, и Нарушение в / к / на Kc, Ti, Td, и dнарушениесоответственно, входные терминалы узла «Formula Node».
    8. Преобразуйте логический сигнал управления сбросом (Reset) в числовой сигнал и подключите его к сброс входной терминал узла Formula Node. Выполните сброс состояния, когда сброс не равно 0, и выполнить ПИД-регулирование и обновление состояния двигателя, когда сброс равно 0.
    9. Добавьте числовую константу dt и установите его значение на 0,001 с. Подключите dt к dt входной терминал узла Formula Node и используйте его для обновления времени.
    10. Установите параметры внутренней модели двигателя постоянного тока в узле Formula Node. См. Дополнительная таблица 2 для физического смысла и роли моторных переменных в модели.
    11. Введите код ПИД-регулирования положения двигателя постоянного тока в Formula Node. Используйте данный код для реализации логики сброса, вычисления ошибки, вычисления интегральной составляющей, вычисления дифференциальной составляющей, ПИД-регулирования, ограничения напряжения, обновления значения тока, обновления угловой скорости и обновления положения; полный код приведен в дополнительных файлах с исходным кодом.
    12. Подключение theta_next к Положение индикатор, и подключить theta_next обратно к соответствующему регистру сдвига для тета Подключить омега_следующий к Индикатор измеренной угловой скоростии подключите omega_next обратно к соответствующему регистру сдвига для омега
    13. Подключите напряжение к индикатору напряжения. Подключите im_next, e_next, и integ_next возврат к соответствующим сдвиговым регистрам для im, e_prev, и интегр. соответственно.
    14. Используйте функцию Add (Сложение) вне узла Formula Node для вычисления time_next = time + dt. Подключить время_следующее к Время индикатор, и подключите следующее_время возврат к правому регистру сдвига для времени.
    15. Добавьте функцию Wait (ожидание) внутрь цикла While Loop и установите время ожидания на 1 мс. Добавьте кнопку Stop (стоп) и подключите ее к условному терминалу цикла While Loop.
    16. Сохраните файл Motor.vi. Завершенная блок-схема привода показана на Рисунок 10.
      ТОЧКА ПРИОСТАНОВКИ: После сохранения завершенного виртуального прибора (VI) управления двигателем рабочий процесс можно остановить. Для возобновления работы позже снова откройте сохраненный VI и убедитесь, что все элементы управления, индикаторы на передней панели (Front Panel) и соединения на блок-диаграмме (Block Diagram) сохранены.
  2. Зарегистрируйте эксперимент по исследованию моторики на сервере RIP.
    1. Откройте файл RIPWebService.lvproj в Обозревателе проектов LabVIEW (LabVIEW Project Explorer).
    2. Откройте файл Configuration.vi в дереве проекта и найдите таблицу конфигурации эксперимента.
    3. Добавьте новую строку эксперимента. В поле «Имя» (Name) введите Motor. В поле «Путь» (Path) укажите полный путь к сохраненному файлу Motor.vi. Поля регистрации эксперимента с двигателем показаны на Рисунок 11.
    4. Заполните оставшиеся поля конфигурации. В поле «Авторы» (Authors) укажите автора эксперимента, в поле «Ключевые слова» (Keywords) — Motor, в поле «Описание» (Description) — DC motor position control model, а в поле «Частота дискретизации» (Sampling Freq) — 200.
    5. В меню LabVIEW выберите Редактировать > Сделать текущие значения значениями по умолчанию. Save Configuration.vi (Сохранение конфигурации.vi).
    6. Перезапустите веб-службу RIP WebService и убедитесь, что после перезапуска эксперимент Motor по-прежнему отображается в интерфейсе конфигурации (Configuration).
      ПРИМЕЧАНИЕ: Название эксперимента чувствительно к регистру. Значение Motor в RIP Configuration должно точно совпадать с идентификатором эксперимента, используемым в Motor_Automatic_UI.xhtml. Чтобы развернуть другой VI LabVIEW с той же логикой автоматической генерации пользовательского интерфейса, добавьте новую запись об эксперименте в RIP Configuration, установите новое значение Name и укажите Path к соответствующему файлу VI. Затем используйте то же значение Name в качестве идентификатора эксперимента в XHTML-файле. Страницу интерфейса (front-end) не нужно переписывать для каждой переменной.
      ​ТОЧКА ОСТАНОВКИ: После сохранения Configuration.vi и установки текущих значений в качестве значений по умолчанию рабочий процесс можно остановить. Продолжите выполнение позже, перезапустив RIP WebService и убедившись, что эксперимент Motor по-прежнему зарегистрирован.
  3. Подготовьте стартовую страницу для моторного эксперимента.
    1. Поместите файл Motor_Automatic_UI.xhtml в каталог Client, который используется в качестве корневого каталога фронтенда.
    2. Откройте файл Motor_Automatic_UI.xhtml с помощью текстового редактора.
    3. Найдите переменную experiment ID в разделе скрипта и присвойте ей значение Motor. Это значение должно точно совпадать с полем Name для эксперимента с двигателем в конфигурации RIP. На главной странице раздела «двигатель» используется та же логика генерации пользовательского интерфейса на основе метаданных, которая показана в Рисунок 5; только идентификатор эксперимента изменен для соответствия записи Motor в конфигурации RIP.
    4. Убедитесь, что страница содержит логику чтения метаданных RIP, логику генерации элементов управления HTML, функцию записи RIP и функцию обновления вывода.
      ПРИМЕЧАНИЕ: На странице не следует вручную жестко задавать имена переменных двигателей, их диапазоны или размеры шага. Эти свойства извлекаются из метаданных, возвращаемых сервером RIP, в соответствии с ранее описанным механизмом генерации HTML на основе метаданных RIP.11.
    5. Сохраните Motor_Automatic_UI.xhtml.
      ​ПРИМЕЧАНИЕ: Чтобы использовать ту же логику генерации интерфейса для другого VI в LabVIEW, установите новый ID эксперимента в файле XHTML и зарегистрируйте соответствующее имя эксперимента и путь к VI в конфигурации RIP. Веб-элементы управления и окна вывода генерируются в соответствии с метаданными, возвращаемыми выбранным экспериментом.
  4. Настройте путь доступа Caddy для эксперимента с двигателем.
    1. Откройте Caddyfile с помощью текстового редактора.
    2. Установите корневой каталог фронтенда на каталог Client, содержащий файл Motor_Automatic_UI.xhtml.
    3. Выберите свободный локальный порт для Caddy, чтобы обеспечить доступ через браузер к веб-странице и маршрутам RIP. В данном протоколе в качестве примера порта прокси-доступа используется порт 8090.
      ПРИМЕЧАНИЕ: Порт 8090 не требуется для работы RIP или Caddy. Если порт 8090 занят, замените его любым другим свободным локальным портом и используйте этот же порт в адресе браузера.
    4. Добавьте маршрут, который перенаправляет /motor на Motor_Automatic_UI.xhtml.
    5. Определите порт RIP WebService, настроенный в LabVIEW. В данном протоколе в качестве адреса RIP WebService используется http://localhost:8001.
      ПРИМЕЧАНИЕ: Порт 8001 является серверным портом LabVIEW/RIP WebService, используемым в тестовой среде. Его можно изменить в конфигурации LabVIEW/RIP WebService. Если используется другой порт, замените http://localhost:8001 в файле Caddyfile соответствующим адресом RIP WebService.
    6. Добавьте правило обратного прокси-сервера, которое перенаправляет запросы /RIP/SSE* на адрес RIP WebService, например, http://localhost:8001.
    7. Добавьте правило обратного прокси-сервера, которое перенаправляет запросы /RIP* на адрес веб-сервиса RIP, например http://localhost:8001. Конфигурация Caddyfile показана на Рисунке 6.
    8. Откройте командную строку в Windows. Перейдите в локальный каталог загрузки или установки Caddy, введя следующую команду:
      cd /d D:\caddy
      ПРИМЕЧАНИЕ: В данном протоколе путь D:\caddy является локальным путем загрузки или установки Caddy, используемым в тестовой среде. Если Caddy находится в другом каталоге, замените D:\caddy соответствующим локальным путем.
    9. Запустите Caddy с указанным файлом Caddyfile, введя следующую команду:
      caddy.exe run --config Caddyfile
    10. Убедитесь, что Caddy запускается без ошибок конфигурации. Откройте адрес http://localhost:8090/motor в веб-браузере и проверьте, что веб-интерфейс управления двигателем отображается корректно, как показано на Рисунок 12.
      ​ПРИМЕЧАНИЕ: Если веб-страница двигателя загружается, но выходные значения не обновляются, убедитесь, что RIP WebService запущен, VI двигателя выполняется, порт RIP WebService в LabVIEW совпадает с адресом обратного прокси-сервера в Caddyfile, а маршрут /RIP/SSE* проксируется правильно.
  5. Проверьте результаты работы в эксперименте с двигателем.
    1. Убедитесь, что на пользовательской странице автоматически создается Уставка, Kc, Ti, Td, возмущение, и Сброс контроль входных сигналов.
    2. Убедитесь, что на главной странице отображается Положение, напряжение, время, и Измеренная угловая скорость выходные переменные
    3. Отрегулировать Уставка и проследите, реагирует ли положение на изменение заданного положения.
    4. Отрегулируйте Kc, Ti, и Td и пронаблюдать, произойдет ли Напряжение, Положение, и Измеренная угловая скорость изменение
    5. Отрегулируйте возмущение и наблюдать за тем, изменятся ли положение, управляющее напряжение или измеренная угловая скорость подвержен влиянию чего-либо (или: зависит от) нарушение Пожалуйста, предоставьте исходный текст для перевода.
    6. Нажмите кнопку «Сброс управления» (Reset control) и определите, произошло ли Положение, напряжение, измеренная угловая скорость, и соответствующие внутренние состояния возвращаются в исходные состояния согласно логике сброса.

Доступ ограничен. Войдите в систему или начните пробный период, чтобы просмотреть этот контент.

Результаты

После завершения описанного выше рабочего процесса доступ к эксперименту с вентилятором и эксперименту по ПИД-регулированию положения двигателя постоянного тока можно получить через автоматически сгенерированный веб-интерфейс. Успешный результат подтверждается тремя наблюдениями. Во-первых, веб-страница автоматически создает элементы управления вводом и поля отображения вывода в соответствии с метаданными переменных, полученными от сервера RIP. Во-вторых, когда пользователь изменяет входную переменную на веб-странице, из...

Доступ ограничен. Войдите в систему или начните пробный период, чтобы просмотреть этот контент.

Обсуждение

Критически важным этапом данного протокола является стандартизированное создание и регистрация серверного VI в LabVIEW. Элементы управления и индикаторы на передней панели (Front Panel) должны иметь четкие и уникальные имена переменных, а их типы данных должны соответствовать переменным, используемым в расчетах модели и в процессе чтения/записи RIP. В двух примерах, приведенных в данном протоколе, скалярные числовые переменные определены как элементы управления или индикаторы типа DBL, а булевы переменные — как булевы эл...

Доступ ограничен. Войдите в систему или начните пробный период, чтобы просмотреть этот контент.

Раскрытие информации

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

Благодарности

Данная работа была поддержана Программами подготовки бакалавров по инновациям Уханьского университета.

Доступ ограничен. Войдите в систему или начните пробный период, чтобы просмотреть этот контент.

Материалы

Список материалов, использованных в этой статье
ИмяКомпанияКаталожный номерКомментарии
Прокси-сервер CaddyCaddyН/ДРеверсивный прокси, используемый для обслуживания веб-интерфейса и перенаправления запросов /RIP в RIP WebService
CaddyfileПодготовлен авторамиН/ДОпределяет маршруты статических файлов и маршруты реверсивного прокси для связи через RIP
Fan_Automatic_UI.xhtmlПодготовлен авторамиН/ДВеб-интерфейс на основе метаданных для эксперимента с вентилятором
LabVIEWNational Instruments2026Программное обеспечение, используемое для создания и запуска fengshan.vi и Motor.vi
Операционная система Microsoft WindowsMicrosoftWin11Операционная система, используемая для запуска LabVIEW, RIP WebService, Caddy и браузера
Motor_Automatic_UI.xhtmlПодготовлен авторамиН/ДВеб-интерфейс на основе метаданных для эксперимента с двигателем
Настольный браузер Mozilla FirefoxMozilla2026Настольный браузер, используемый для доступа к веб-интерфейсу, работы с инструментами разработчика, наблюдения за временем/ресурсами и создания скриншотов сети и консоли
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewПринимает RIP POST-запросы и обеспечивает уровень связи WebService, используемый фронтендом браузера
Диспетчер задач WindowsMicrosoftВстроен в WindowsИспользуется для записи показателей загрузки ЦП и использования памяти на уровне процессов для браузера и LabVIEW

Ссылки

  1. Gomes, L., Bogosyan, S. Current trends in remote laboratories. IEEE Trans Ind Electron. 2009;56(12):4744–4756.
  2. Ma, J., Nickerson, J. V. Hands-on, simulated, and remote laboratories: A comparative literature review. ACM Comput Surv. 2006;38(3):7-es.
  3. Heradio, R. et al. Virtual and remote labs in education: A bibliometric analysis. Comput. Educ. 2016;98:14–38.
  4. May, D., Jahnke, I., Moore, S. Online laboratories and virtual experimentation in higher education from a sociotechnical-pedagogical design perspective. J. Comput. High. Educ. 2023;35:203–222.
  5. Amador Nelke, S. et al. Enhancing lessons on the Internet of Things in science, technology, engineering, and medical education with a remote lab. Sensors.2024;24(19):6424.
  6. Lei, Z. et al. Interactive and visualized online experimentation system for engineering education and research. J. Vis. Exp. 2021;(177):e63342.
  7. Zhang, G., Lei, Z., Hu, W., Zhou, H. Online virtual reality networked control laboratory applied in control engineering education. J. Vis. Exp. 2024;(204):e66432.
  8. Fabregas, E., Farias, G., Dormido-Canto, S., Dormido, S., Esquembre, F. Developing a remote laboratory for engineering education. Comput. Educ. 2011;57(2):1686–1697.
  9. Chacón, J., Vargas, H., Farias, G., Sánchez, J., Dormido, S. EJS, JIL Server, and LabVIEW: An architecture for rapid development of remote labs. IEEE Trans. Learn. Technol.2015;8(4):393–401.
  10. Chacón, J., Farias, G., Vargas, H., Visioli, A., Dormido, S. Remote Interoperability Protocol: A bridge between interactive interfaces and engineering systems. IFAC-PapersOnLine.2015;48(29):247–252.
  11. de la Torre, L., Chacón, J., Chaos, D., Heradio, R., Chandramouli, R. Using IoT-type metadata and smart Web design to create user interfaces automatically. IEEE Trans. Ind. Inform. 2023;19(3):3109–3118.
  12. Chaos, D., Chacón, J., Lopez-Orozco, J. A., Dormido, S. Virtual and remote robotic laboratory using EJS, MATLAB, and LabVIEW. Sensors. 2013;13(2):2595–2612.
  13. Haj-Hosseini, N., Jonasson, H., Stridsman, M., Carlsson, L. Interactive remote electrical safety laboratory module in biomedical engineering education. Educ. Inf. Technol. 2024;29:20505–20521.
  14. Galán, D. et al. Safe experimentation in optical levitation of charged droplets using remote labs. J. Vis. Exp. 2019;(143):e58699.
  15. Kurtz, M., Benabbou, A., Pons, C., Broisin, J. Collaboration in virtual and remote laboratories for education: A systematic literature review. Int. J. Comput.-Support. Collab. Learn. 2025;20:549–603.
  16. Zamarreño, J. M., Ríos, J. C., Alonso, G. Virtual and remote laboratory as a complementary support in control education. Discov. Educ. 2025;4:477.
  17. Chacón, J., Sáenz, J., de la Torre, L., Díaz, J. M., Esquembre, F. Design of a low-cost air levitation system for teaching control engineering. Sensors. 2017;17(10):2321.
  18. Stefanovic, M., Cvijetkovic, V., Matijevic, M., Simic, V. A LabVIEW-based remote laboratory experiments for control engineering education. Comput. Appl. Eng. Educ.2011; 19(3):538–549.
  19. González, I., Calderón, A. J., Mejías, A., Andújar, J. M. Novel networked remote laboratory architecture for open connectivity based on PLC-OPC-LabVIEW-EJS integration. Application in remote fuzzy control and sensors data acquisition. Sensors. 2016;16(11):1822.
  20. Abdulwahed, M., Nagy, Z. K. Developing the TriLab, a triple access mode (hands-on, virtual, remote) laboratory, of a process control rig using LabVIEW and Joomla. Comput. Appl. Eng. Educ. 2013;21(4):614–626.

Доступ ограничен. Войдите в систему или начните пробный период, чтобы просмотреть этот контент.

Перепечатки и разрешения

Теги

Веб-пользовательский интерфейсавтоматическая генерация пользовательского интерфейсавиртуальные приборыконфигурация RIP-сервераобратный прокси-серверпрокси-сервер CaddyПИД-регулирование положенияпеременные метаданные

Эта статья была опубликована

Видео скоро будет доступно