После завершения описанного выше рабочего процесса доступ к эксперименту с вентилятором и эксперименту по ПИД-регулированию положения двигателя постоянного тока можно получить через автоматически сгенерированный веб-интерфейс. Успешный результат подтверждается тремя наблюдениями. Во-первых, веб-страница автоматически создает элементы управления вводом и поля отображения вывода в соответствии с метаданными переменных, полученными от сервера RIP. Во-вторых, когда пользователь изменяет входную переменную на веб-странице, измененное значение записывается в бэкенд-VI LabVIEW через интерфейс RIP. В-третьих, выходные переменные, рассчитанные бэкенд-VI, возвращаются через RIP и обновляются на веб-странице в режиме реального времени. Для эксперимента с вентилятором после ввода http://localhost:8090/fan в браузере страница автоматически генерирует элементы управления вводом и поля вывода на основе метаданных RIP, как показано на Рисунке 7. Сторона ввода включает Enable, PWM, Load, Tau, KMaxRPM и Disturbance, в то время как сторона вывода отображает SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA и PowerW. При нормальной работе значение TimeS непрерывно увеличивается, что указывает на выполнение бэкенд-VI fengshan.vi. При увеличении PWM соответственно увеличиваются SpeedRPM и SteadyRPM. При увеличении Load скорость вентилятора снижается, поскольку load уменьшает установившуюся скорость вращения. При регулировке Disturbance можно наблюдать соответствующие изменения в SpeedRPM, CurrentA и PowerW. Эти наблюдения подтверждают, что входные данные со стороны веб-интерфейса правильно передаются в бэкенд LabVIEW, а рассчитанные выходные данные возвращаются на фронтенд через RIP.
Для эксперимента по ПИД-регулированию положения двигателя постоянного тока после ввода адреса http://localhost:8090/motor в браузере страница автоматически генерирует соответствующие элементы управления и поля вывода на основе метаданных RIP, как показано на Рисунок 12Входные переменные включают Заданное значение, Kc, Ti, Td, воздействие (возмущение)и Сброс контроль, а выходные переменные включают Положение, напряжение, время, и Измеренная угловая скоростьг. Когда Уставка изменяется, Положение реагирует на новое заданное значение. Когда параметры ПИД-регулятора Kc, Ti, и Td отрегулированы, выходной сигнал, контроль напряжениеи измеренная угловая скорость соответствующим образом изменяются, указывая на то, что значения параметров, введенные на веб-странице, правильно записываются в модель LabVIEW в фоновом режиме (back-end) и участвуют в вычислениях управления. При активации функции Reset control переменные модели возвращаются в свои исходные состояния в соответствии с логикой сброса.
Состояния сбоя и связи на стороне браузера показаны на рисунке 13, рисунке 14, рисунке 15. На рисунке 13 представлен случай сбоя доступа браузера, при котором Caddy не запущен. Браузер пытается перейти по адресу http://localhost:8090/motor, но выводит сообщение ERR_CONNECTION_REFUSED, что указывает на недоступность локального прокси-сервиса или на то, что он не прослушивает выбранный порт доступа. На рисунке 14 показан сбой связи RIP POST после загрузки страницы. В этом случае консоль браузера сообщает об ошибке 502 Bad Gateway для запроса RIP POST, что означает, что фронтенд достиг адреса прокси-сервера, но запрос не может быть успешно перенаправлен или обработан бэкендом RIP WebService. Напротив, на рисунке 15 показано нормальное состояние связи на стороне браузера. Инструменты разработчика браузера демонстрируют успешную загрузку страницы, запросы RIP POST и активный SSE-запрос с expId=fan, что свидетельствует о взаимодействии веб-фронтенда с RIP WebService через прокси-сервер Caddy и получении обновлений в реальном времени через SSE-канал.
В совокупности успешные результаты работы вентилятора и двигателя, а также результаты диагностики на стороне браузера демонстрируют, что один и тот же рабочий процесс автоматической генерации пользовательского интерфейса на основе метаданных может быть воспроизведен для двух различных экспериментов в LabVIEW. Эти результаты также обеспечивают наблюдаемые критерии для разграничения успешной связи и типичных сбоев развертывания, в то время как соответствующие процедуры устранения неполадок рассматриваются в разделе «Обсуждение».

Рисунок 1Общая структура экспериментальной системыСистема состоит из серверного VI на базе LabVIEW, RIP-сервера, прокси-сервера Caddy и автоматически генерируемого веб-интерфейса. VI LabVIEW предоставляет переменные модели, RIP-сервер считывает метаданные и значения переменных VI, Caddy унифицирует путь доступа и решает проблему кросс-доменного доступа, а веб-интерфейс автоматически создает элементы управления. Название и логотип Caddy приведены исключительно для идентификации компонента веб-сервера/прокси-сервера Caddy, используемого в рабочем процессе. Нажмите здесь, чтобы просмотреть эту иллюстрацию в увеличенном размере.

Рисунок 2: Передняя панель VI вентилятора. Передняя панель содержит элементы управления вводом для Enable, PWM, Load, Tau, KMaxRPM и Disturbance, а также выходные индикаторы для SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA и PowerW. Этот скриншот был сделан с передней панели fengshan.vi в LabVIEW 2026 в собственной локальной экспериментальной среде авторов. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 3Блок-схема VI вентилятора. Модель вентилятора реализована с помощью цикла While Loop и сдвиговых регистров, Активировать логика, узел формул (Formula Node) и выходные индикаторы. Данный скриншот был сделан с блок-диаграммы fengshan.vi в LabVIEW 2026 в локальной экспериментальной среде авторов. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 4: Страница конфигурации fan.vi. Эксперимент с вентилятором зарегистрирован в RIP Configuration с указанием названия эксперимента (fan), фактического пути к VI, ключевых слов, описания и частоты дискретизации. Данный скриншот был сделан в интерфейсе RIP Configuration, используемом с LabVIEW 2026 и RIP WebService в собственной локальной экспериментальной среде авторов. Пользовательские данные третьих лиц или конфиденциальная информация не представлены. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 5: Настройки ID эксперимента и логика генерации пользовательского интерфейса на основе метаданных в XHTML-файлах фронтенда. Скриншоты XHTML-кода были сделаны из файлов Fan_Automatic_UI.xhtml и Motor_Automatic_UI.xhtml, открытых в Visual Studio Code. Страницы вентилятора и двигателя используют одну и ту же логику чтения метаданных и генерации элементов управления; изменен только ID эксперимента для соответствия соответствующему полю Name в конфигурации RIP. Скриншоты XHTML-кода были сделаны из файлов Fan_Automatic_UI.xhtml и Motor_Automatic_UI.xhtml, открытых в Visual Studio Code в локальной среде разработки авторов. Файлы кода были подготовлены авторами специально для данного протокола. Сторонние пользовательские данные или конфиденциальная информация не включены. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 6: Конфигурация Caddyfile. Caddyfile определяет локальный порт доступа прокси, задает корневой каталог фронтенда, перенаправляет маршруты /fan и /motor на соответствующие XHTML-файлы и осуществляет обратное проксирование запросов /RIP/SSE* и /RIP* на порт Web-сервиса LabVIEW/RIP. Скриншот конфигурации Caddyfile был сделан из файла Caddyfile, открытого в Visual Studio Code в локальной среде разработки авторов. Caddyfile был подготовлен авторами для настройки Caddy в качестве локального веб-сервера и обратного прокси. Сторонние пользовательские данные или конфиденциальная информация не включены. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 7: Веб-интерфейс fan.vi. Скриншот данного веб-интерфейса был сделан авторами с их локально развернутой веб-страницы управления вентилятором с помощью браузера Mozilla Firefox. Фронтенд-страница автоматически генерирует элементы управления вводом и дисплеи вывода на основе метаданных переменных, возвращаемых RIP-сервером. Скриншот данного веб-интерфейса был сделан авторами с их локально развернутой веб-страницы управления вентилятором с помощью браузера Mozilla Firefox. Отображаемые элементы управления и поля вывода были сгенерированы из метаданных RIP в локальной экспериментальной среде авторов. Данные сторонних пользователей или конфиденциальная информация не включены. Пожалуйста, нажмите здесь, чтобы просмотреть этот рисунок в большем размере.

Рисунок 8: Передняя панель Motor.vi. Передняя панель содержит элементы управления для Setpoint, Kc, Ti, Td, Disturbance и Reset, а также индикаторы Position, Voltage, Time и Measured angular velocity. Этот скриншот был сделан с передней панели Motor.vi в LabVIEW 2026 в локальной экспериментальной среде авторов. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 9: Схема модели ПИД-регулирования положения двигателя постоянного тока. На схеме показан путь сигнала от ошибки уставки, ПИД-регулирования, ограничения напряжения, суперпозиции возмущений, электрической динамики, механической динамики и обновления положения до обратной связи. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 10: Блок-схема VI двигателя. Модель двигателя реализована с помощью цикла While Loop, регистров сдвига (Shift Registers), формульного узла (Formula Node), логики синхронизации и выходных индикаторов. Этот скриншот был сделан с блок-схемы Motor.vi в LabVIEW 2026 в собственной локальной экспериментальной среде авторов. Пользовательские данные третьих лиц или конфиденциальная информация не приводятся. Пожалуйста, нажмите здесь, чтобы просмотреть этот рисунок в большем размере.

Рисунок 11: Страница конфигурации Motor.vi. Эксперимент с двигателем зарегистрирован в RIP Configuration с указанием названия эксперимента Motor, фактического пути к VI, ключевых слов, описания и частоты дискретизации. Данный скриншот был сделан в интерфейсе RIP Configuration, используемом с LabVIEW 2026 и RIP WebService в локальной экспериментальной среде авторов. Пользовательские данные третьих лиц или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 12: Веб-интерфейс Motor.vi. На главной странице автоматически создаются элементы управления вводом и индикаторы вывода для эксперимента по ПИД-регулированию положения двигателя постоянного тока. Данный скриншот веб-интерфейса был сделан с локально развернутой веб-страницы управления двигателем авторов с помощью браузера Mozilla Firefox. Отображаемые элементы управления и поля вывода были созданы на основе метаданных RIP в локальной экспериментальной среде авторов. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть этот рисунок в большем размере.

Рисунок 13: Ошибка доступа через браузер при неработающем Caddy. Если Caddy не запущен, проксированный локальный адрес http://localhost:8090/motor недоступен, и браузер выводит сообщение ERR_CONNECTION_REFUSED. Данный симптом ошибки указывает на то, что локальная служба прокси-сервера Caddy недоступна или не прослушивает выбранный порт доступа. Этот скриншот браузера был сделан с помощью Mozilla Firefox в собственной локальной тестовой среде авторов и демонстрирует состояние неудачного доступа при неработающем локальном прокси-сервере Caddy. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 14: Сбой связи при RIP POST после загрузки страницы. В консоли браузера отображается ошибка 502 Bad Gateway для запроса RIP POST. Этот результат указывает на то, что веб-страница достигла адреса прокси-сервера Caddy, но запрос не может быть успешно перенаправлен на бэкенд RIP WebService или обработан им. Данный скриншот консоли браузера был сделан с помощью Mozilla Firefox Developer Tools в собственной локальной среде развертывания авторов и демонстрирует сбой связи RIP POST 502 Bad Gateway. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 15: Статус связи на стороне браузера при нормальном функционировании. Инструменты разработчика браузера показывают успешную загрузку страницы, RIP POST-запросы и активный SSE-запрос с expId=fan. Эти запросы указывают на то, что веб-интерфейс взаимодействует с RIP WebService через прокси-сервер Caddy и получает обновления в реальном времени через канал SSE. Данный скриншот инструментов разработчика браузера был сделан с помощью Mozilla Firefox в локальной среде развертывания авторов и демонстрирует нормальную связь по RIP POST и SSE. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 16: Типичный пример мониторинга ресурсов на уровне консоли браузера и процессов для эксперимента с вентилятором. Скриншот был сделан во время локального тестового эксперимента с вентилятором. В консоли отображаются время запроса/ответа метаданных, количество переменных метаданных, время генерации пользовательского интерфейса на основе метаданных, время открытия SSE-соединения и полученные SSE-данные. Окно диспетчера задач показывает значения загрузки CPU и использования памяти на уровне процессов для браузера и процессов LabVIEW в момент захвата. Эти значения являются описательными наблюдениями из данного отдельного теста и не представляют собой воспроизводимые измерения производительности или статистический эталон. Данный скриншот был получен с помощью инструментов разработчика Mozilla Firefox и диспетчера задач Windows в локальной тестовой среде авторов. Mozilla Firefox использовался для записи вывода консоли браузера, а диспетчер задач Windows — для наблюдения за использованием CPU и памяти процессами браузера и LabVIEW. Сторонние пользовательские данные или конфиденциальная информация не included. Нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Рисунок 17: Одновременный доступ к одной и той же веб-странице на базе RIP через браузер настольного компьютера и мобильный браузер. Страница эксперимента с вентилятором открыта одновременно на ПК и мобильном устройстве, и оба клиента отображают автоматически сгенерированные элементы управления и выходные переменные. Доступ к веб-странице на ПК был осуществлен через Mozilla Firefox, а к мобильной веб-странице — через мобильный браузер в той же локальной сети. Скриншоты были сделаны в собственной локальной тестовой среде авторов. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.
| Имя переменной | Тип данных | Ввод/вывод | Физический смысл | Роль в модели | Диапазон/Настройка |
| Включить | Булево значение | Пожалуйста, введите текст, который необходимо перевести. | Переключатель работы вентилятора | Определяет, получает ли модель ШИМ-сигнал на входе. Если значение True, то u = ШИМ; если False, то u = 0. | Верно / Неверно |
| ШИМ (широтно-импульсная модуляция) | Двухслойный липидный слой (DBL) | Пожалуйста, предоставьте исходный текст для перевода. | Входной сигнал привода | Определяет базовую интенсивность привода вентилятора и является основным входным параметром, используемым для расчета установившейся скорости SteadyRPM. | 0–1, шаг 0,01 |
| Загрузка | Двухсвязный лиганд | Пожалуйста, предоставьте исходный текст для перевода. | Коэффициент нагрузки | Описывает влияние нагрузки на снижение установившейся скорости. При увеличении нагрузки установившаяся скорость снижается. | 0–1, шаг 0,01 |
| Тау-белок | Двойное слепое исследование (DBL) | Пожалуйста, предоставьте текст для перевода. | Постоянная времени отклика | Определяет, насколько быстро скорость вращения вентилятора достигает установившегося значения из предыдущего состояния. | 0,1–5, шаг 0,1 |
| Максимальное число оборотов в минуту (KMaxRPM) | DBL | Пожалуйста, предоставьте исходный текст для перевода. | Максимальная скорость | Устанавливает максимально допустимую моделью скорость и используется для ограничения и нормализации скорости. | 500-6000, шаг 100 |
| Нарушение | Двойное слепое исследование | Пожалуйста, предоставьте исходный текст для перевода. | Входное воздействие возмущения | Демонстрирует влияние внешнего возмущения или колебаний нагрузки на установившуюся скорость, ток и мощность. | 0–1, шаг 0,1 |
| Скорость (об/мин) | DBL | Результат | Фактическая скорость | Отражает текущую скорость вращения вентилятора и обновляется в соответствии с инерционной динамикой первого порядка. | Рассчитано моделью |
| SteadyRPM | Двусторонний лиганд (DBL) | Результат | Установившаяся скорость | Представляет собой теоретическую установившуюся скорость при данных условиях ввода. | Рассчитано моделью |
| TimeS | ДБЛ | Результат | Время выполнения | Отражает время непрерывной работы модели. | Вычислено моделью |
| SpeedNorm | ДБЛ | Результат | Нормированная скорость | Представляет собой отношение SpeedRPM к KMaxRPM. | от 0 до 1 или рассчитано моделью |
| Ток А | Двойное слепое исследование | Вывод | Текущий | Представляет собой расчетный ток модели, который изменяется в зависимости от входного сигнала управления и входного сигнала возмущения. | Рассчитано моделью |
| PowerW | DBL | Выход | Мощность | Представляет собой расчетную мощность модели, вычисленную на основе константы напряжения и силы тока. | Рассчитано моделью |
| Уставка | Двухслойная липидная мембрана (DBL) | Пожалуйста, предоставьте текст для перевода. | Желаемая должность | Задает положение, которого должен достичь двигатель, и формирует ошибку e относительно текущего положения Position. | -3-3, этап 0.1 |
| Kc | Двухслойный липидный слой (DBL) | Пожалуйста, предоставьте исходный текст для перевода. | Пропорциональный коэффициент усиления | Регулирует силу отклика ПИД-регулятора на ошибку. | 0–10, шаг 0,1 |
| Ti | Двусторонняя лигандная связь (DBL) | Пожалуйста, предоставьте исходный текст для перевода. | Интегральное время | Регулирует интегральную составляющую ПИД-регулятора и используется для уменьшения статической ошибки. | 0–10, шаг 0,1 |
| Td | Двойная слепая проба (ДСП) | Пожалуйста, предоставьте текст для перевода. | Производная по времени | Регулирует дифференциальную составляющую ПИД-регулятора и используется для подавления слишком резких изменений ошибки и улучшения динамического отклика. | 0–5, шаг 0,1 |
| Нарушение | ДБЛ (двусторонний лимфатический обход) | Пожалуйста, предоставьте исходный текст для перевода. | Входное возмущение | Представляет собой внешнее возмущение, накладываемое на вход двигателя и воздействующее на модель двигателя совместно с управляющим напряжением. | 0–10, шаг 0,1 |
| Сброс управления | Булева логика | Пожалуйста, предоставьте исходный текст для перевода. | Сброс управления | Запускает сброс состояния модели, чтобы положение, угловая скорость, ток, ошибка и интегральный член вернулись к своим начальным значениям. | Верно / Неверно |
| Положение | Двойное слепое исследование | Вывод | Фактическое положение | Представляет текущее угловое положение двигателя и служит переменной обратной связи для ПИД-регулирования. | Рассчитано моделью |
| Напряжение | Двухслойный липидный слой (DBL) | Вывод | Контрольное напряжение | Представляет собой выходной сигнал ПИД-регулятора после ограничения напряжения и подается на вход двигателя. | Рассчитано моделью; ограничено диапазоном от -24 до 24 В |
| Время | Двойное слепое исследование | Результат | Время выполнения | Обозначает время непрерывной работы модели двигателя. | Вычислено моделью |
| Измеренная угловая скорость | Двустороннее связывание (DBL) | Результат | Измеренная угловая скорость | Отражает текущую угловую скорость двигателя и является выходным параметром механического состояния двигателя. | Рассчитано моделью |
Таблица 1: Входные и выходные переменные, используемые в примерах с вентилятором и двигателем постоянного тока. В таблице указаны название каждой переменной, тип данных, роль (вход/выход), физический смысл, рекомендуемый диапазон и шаг.
| Параметр | Значение | Физический смысл | Роль в модели |
| R | 1 | Сопротивление якоря | Представляет собой член сопротивления в цепи якоря двигателя и определяет падение напряжения R × im в уравнении тока. |
| L | 0.5 | Индуктивность якоря | Обозначает индуктивность цепи якоря и определяет скорость изменения тока. Чем больше значение L, тем медленнее отклик тока. |
| J | 0.01 | Момент инерции | Представляет собой сопротивление ротора двигателя изменениям углового ускорения и определяет скорость изменения угловой скорости. |
| b | 0.1 | Коэффициент вязкого демпфирования | Представляет собой механическое демпфирование и описывает демпфирующий момент, который препятствует увеличению угловой скорости при вращении. |
| Kt | 0.01 | Постоянная крутящего момента | Представляет собой коэффициент пропорциональности, который пересчитывает ток якоря в электромагнитный момент. |
| Ке | 0.01 | Коэффициент противо-ЭДС (константа обратной электродвижущей силы) | Представляет собой коэффициент пропорциональности, определяющий величину противо-ЭДС, генерируемой угловой скоростью, и описывает влияние скорости на ток через эффект обратной связи. |
| Vmax | 24 | Максимальное управляющее напряжение | Определяет предел выходного напряжения контроллера и удерживает напряжение в диапазоне от -24 В до 24 В. |
| dt | 0.001 | Шаг дискретного моделирования | Представляет собой временной интервал для каждого обновления состояния в цикле и используется для обновления тока, угловой скорости, положения и времени работы. |
Таблица 2: Внутренние параметры, использованные в модели ПИД-регулирования положения двигателя постоянного тока. В таблице приведены электрические и механические параметры, их обозначения, числовые значения, единицы измерения и роль в модели.
Дополнительные файлы кода: полные исходные файлы и файлы конфигурации для воспроизведения примеров с вентилятором и двигателем постоянного тока. Дополнительные файлы кода включают код узла формул LabVIEW (Formula Node), конфигурацию обратного прокси-сервера Caddy, файлы интерфейса XHTML и исходные файлы VI LabVIEW, использованные в данном протоколе. Файл Code in LabVIEW Formula Node.docx содержит код узла формул для моделей ПИД-регулирования положения вентилятора и двигателя постоянного тока. Файл Caddyfile.txt содержит конфигурацию локального веб-сервера и обратного прокси-сервера. Файлы Fan_Automatic_UI.xhtml и Motor_Automatic_UI.xhtml содержат логику веб-интерфейса на основе метаданных. Файлы fengshan.vi и Motor.vi являются серверными VI-файлами LabVIEW для экспериментов с вентилятором и двигателем.Пожалуйста, нажмите здесь, чтобы скачать этот файл.