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

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

DOI:

10.3791/72765

14 августа 2026 г.

В этой статье

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

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

Аннотация

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

Введение

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

С развитием дистанционных экспериментов, онлайн-обучения и технологий интернета вещей обеспечение веб-доступа к локальным имитационным моделям или экспериментальным установкам стало важным направлением развития экспериментальных платформ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.

Протокол

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Выполните следующие действия для сборки, регистрации, развертывания и проверки двух экспериментов 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) и определите, произошло ли Положение, напряжение, измеренная угловая скорость, и соответствующие внутренние состояния возвращаются в исходные состояния согласно логике сброса.

Результаты

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

После выполнения описанного выше рабочего процесса доступ к эксперименту с вентилятором и эксперименту по ПИД-регулированию положения двигателя постоянного тока можно получить через автоматически сгенерированный веб-интерфейс. Об успешном результате свидетельствуют три наблюдения. Во-первых, веб-страница автоматически создает элементы управления вводом и поля отображения вывода в соответствии с метаданными переменных, возвращаемыми сервером 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 непрерывно увеличивается, что указывает на выполнение бэкенда fengshan.vi. При увеличении PWM соответствующие значения SpeedRPM и SteadyRPM также растут. При увеличении Load скорость вентилятора снижается, так как load уменьшает установившуюся скорость вращения. При регулировке Disturbance можно наблюдать соответствующие изменения в SpeedRPM, CurrentA и PowerW. Эти наблюдения подтверждают, что входные данные с веб-стороны корректно передаются в бэкенд LabVIEW, а вычисленные выходные данные возвращаются на фронтенд через RIP.

Для эксперимента по ПИД-регулированию положения двигателя постоянного тока после ввода адреса http://localhost:8090/motor в браузере страница автоматически генерирует соответствующие элементы управления и поля вывода на основе метаданных RIP, как показано на рисунке 12. Входные переменные включают Setpoint, Kc, Ti, Td, Disturbance и управление Reset, а выходные переменные включают Position, Voltage, Time и Measured angular velocity. При изменении Setpoint параметр Position реагирует на новое целевое значение. При настройке ПИД-параметров Kc, Ti и Td соответствующим образом изменяются выходной отклик, управляющее voltage и measured angular velocity, что указывает на корректную запись значений параметров, введенных на веб-странице, в серверную модель LabVIEW и их участие в вычислениях системы управления. При активации управления Reset переменные модели возвращаются в исходные состояния согласно логике сброса.

Состояния сбоев на стороне браузера и состояния связи показаны на Рисунке 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. Эти результаты также предоставляют наблюдаемые критерии для разграничения успешной связи и типичных сбоев развертывания, в то время как соответствующие процедуры поиска и устранения неисправностей обсуждаются в разделе «Обсуждение».

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

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

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

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

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

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

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

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

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

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

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

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

Сообщение об ошибке веб-страницы; соединение с localhost отклонено; варианты устранения неполадок браузера.
Рисунок 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. Сторонние пользовательские данные или конфиденциальная информация отсутствуют. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

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

Интерфейс управления вентилятором; диаграмма синхронизации данных с настройками SpeedRPM и CurrentA в веб- и мобильном пользовательских интерфейсах.
Рисунок 17: Одновременный доступ к одной и той же веб-странице на базе RIP из браузера настольного компьютера и мобильного браузера. Страница эксперимента с вентилятором открыта одновременно на ПК и мобильных устройствах, и оба клиента отображают автоматически созданные элементы управления и выходные переменные. Доступ к веб-странице на настольном компьютере был осуществлен через Mozilla Firefox, а к мобильной веб-странице — через мобильный браузер в той же локальной сети. Снимки экрана были сделаны в собственной локальной тестовой среде авторов. Сторонние пользовательские данные или конфиденциальная информация не included. Пожалуйста, нажмите здесь, чтобы просмотреть увеличенную версию этого рисунка.

Имя переменнойТип данныхВход/ВыходФизический смыслРоль в моделиДиапазон/Настройка
EnableBooleanВходПереключатель работы вентилятораОпределяет, получает ли модель входной сигнал ШИМ. Если True, u = ШИМ; если False, u = 0.True / False
PWMDBLВходВход управленияОпределяет базовую интенсивность привода вентилятора и является основным входом, используемым для расчета установившейся скорости SteadyRPM.0-1, шаг 0,01
LoadDBLВходКоэффициент нагрузкиОписывает ослабляющее влияние нагрузки на установившуюся скорость. При увеличении Load установившаяся скорость снижается.0-1, шаг 0,01
TauDBLВходПостоянная времени откликаОпределяет, насколько быстро скорость вентилятора приближается к установившейся скорости из предыдущего состояния.0,1-5, шаг 0,1
KMaxRPMDBLВходМаксимальная скоростьЗадает максимальную скорость, допустимую моделью; используется для ограничения и нормирования скорости.500-6000, шаг 100
DisturbanceDBLВходВход возмущенияПредставляет влияние внешнего возмущения или колебаний нагрузки на установившуюся скорость, ток и мощность.0-1, шаг 0,1
SpeedRPMDBLВыходФактическая скоростьПредставляет текущую выходную скорость вентилятора и обновляется посредством инерционной динамики первого порядка.Рассчитывается моделью
SteadyRPMDBLВыходУстановившаяся скоростьПредставляет теоретическую установившуюся скорость при текущих входных условиях.Рассчитывается моделью
TimeSDBLВыходВремя работыПредставляет непрерывное время работы модели.Рассчитывается моделью
SpeedNormDBLВыходНормированная скоростьПредставляет отношение SpeedRPM к KMaxRPM.0-1 или рассчитывается моделью
CurrentADBLВыходТокПредставляет расчетный ток модели, который изменяется в зависимости от входного сигнала управления и входного возмущения.Рассчитывается моделью
PowerWDBLВыходМощностьПредставляет расчетную мощность модели, вычисляемую на основе константы напряжения и тока.Рассчитывается моделью
SetpointDBLВходЗаданное положениеЗадает положение, которого должен достичь двигатель, и вместе с фактическим положением Position формирует ошибку e.-3-3, шаг 0,1
KcDBLВходПропорциональный коэффициентРегулирует силу отклика ПИД-регулятора на ошибку.0-10, шаг 0,1
TiDBLВходИнтегральное времяРегулирует интегральное действие ПИД-регулятора и используется для уменьшения статической ошибки.0-10, шаг 0,1
TdDBLВходДифференциальное времяРегулирует дифференциальное действие ПИД-регулятора; используется для подавления слишком резких изменений ошибки и улучшения динамического отклика.0-5, шаг 0,1
DisturbanceDBLВходВход возмущенияПредставляет внешнее возмущение, накладываемое на вход двигателя и воздействующее на модель двигателя совместно с управляющим напряжением.0-10, шаг 0,1
Reset controlBooleanВходСброс управленияИнициирует очистку состояния модели, чтобы положение, угловая скорость, ток, ошибка и интегральный член вернулись к своим начальным значениям.True / False
PositionDBLВыходФактическое положениеПредставляет текущее угловое положение двигателя и служит переменной обратной связи для ПИД-регулирования.Рассчитывается моделью
VoltageDBLВыходУправляющее напряжениеПредставляет выход ПИД-регулятора после ограничения напряжения и воздействует на вход двигателя.Рассчитывается моделью; ограничено от -24 до 24 V
TimeDBLВыходВремя работыПредставляет непрерывное время работы модели двигателя.Рассчитывается моделью
Measured angular velocityDBLВыходИзмеренная угловая скоростьПредставляет текущую угловую скорость двигателя и является выходным параметром механического состояния двигателя.Рассчитывается моделью

Таблица 1: Входные и выходные переменные, используемые в примерах с вентилятором и двигателем постоянного тока. В таблице указаны название каждой переменной, тип данных, роль (вход/выход), физический смысл, рекомендуемый диапазон и шаг.

ПараметрЗначениеФизический смыслРоль в модели
R1Сопротивление якоряПредставляет собой член сопротивления в цепи якоря двигателя и определяет падение напряжения R × im в уравнении тока.
L0.5Индуктивность якоряПредставляет индуктивность цепи якоря и определяет скорость изменения тока. Большее значение L приводит к более медленному отклику тока.
J0.01Момент инерцииПредставляет сопротивление ротора двигателя изменениям углового ускорения и определяет скорость изменения угловой скорости.
b0.1Коэффициент вязкого тренияПредставляет механическое демпфирование и описывает демпфирующий момент, который препятствует увеличению угловой скорости при вращении.
Kt0.01Коэффициент крутящего моментаПредставляет собой коэффициент пропорциональности, который преобразует ток якоря в электромагнитный крутящий момент.
Ke0.01Коэффициент противо-ЭДСПредставляет собой коэффициент пропорциональности, с помощью которого угловая скорость создает противо-ЭДС, и описывает влияние скорости на ток через обратную связь.
Vmax24Максимальное управляющее напряжениеПредставляет предел выходного напряжения контроллера и удерживает напряжение в диапазоне от -24 V до 24 V.
dt0.001Шаг дискретного моделированияПредставляет временной интервал для каждого обновления состояния в цикле и используется для обновления тока, угловой скорости, положения и времени работы.

Таблица 2: Внутренние параметры, используемые в модели ПИД-регулятора позиционирования двигателя постоянного тока. В таблице перечислены электрические и механические параметры, их обозначения, числовые значения, единицы измерения и роль в модели.

Дополнительные файлы кода: полные исходные файлы и файлы конфигурации для воспроизведения примеров с вентилятором и двигателем постоянного тока. Дополнительные файлы кода включают код узла формул (Formula Node) LabVIEW, конфигурацию обратного прокси-сервера 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 для экспериментов с вентилятором и двигателем.Пожалуйста, нажмите здесь, чтобы скачать этот файл.

Обсуждение

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Критически важным этапом данного протокола является стандартизированное создание и регистрация серверного VI в LabVIEW. Элементы управления и индикаторы на передней панели (Front Panel) должны иметь четкие и уникальные имена переменных, а их типы данных должны соответствовать переменным, используемым в расчетах модели и в процессе чтения/записи RIP. В двух примерах, приведенных в данном протоколе, скалярные числовые переменные определены как элементы управления или индикаторы типа DBL, а булевы переменные — как булевы элементы управления. Блок-диаграмма (Block Diagram) также должна обеспечивать непрерывное обновление состояния с помощью цикла While, сдвиговых регистров (Shift Registers) и узла формул (Formula Node), чтобы такие переменные, как скорость вентилятора, положение двигателя, угловая скорость двигателя, напряжение и время, могли обновляться во время выполнения. После создания VI имя эксперимента (experiment Name) в конфигурации RIP должно точно совпадать с идентификатором эксперимента (experiment ID), указанным в соответствующем XHTML-файле, а путь к VI (VI Path) должен указывать на фактически сохраненный файл VI. Эти настройки важны, поскольку веб-интерфейс не содержит жестко закодированных переменных для каждого эксперимента; вместо этого он опирается на метаданные, возвращаемые сервером RIP, для идентификации доступных для записи и чтения переменных, их типов данных и числовых свойств10,11.

Основные проблемы при поиске и устранении неисправностей связаны с согласованностью идентификатора эксперимента (experiment ID) в XHTML-файле, конфигурации RIP (RIP Configuration), веб-сервиса RIP (RIP WebService) и настроек прокси-сервера Caddy. Если идентификатор эксперимента в XHTML-файле не совпадает с именем эксперимента (experiment Name) в конфигурации RIP, веб-страница не сможет запросить правильные метаданные и, следовательно, не сможет создать ожидаемые элементы управления и поля вывода. Если путь к VI (VI Path) указан неверно или веб-сервис RIP не запущен, веб-страница может открыться, но связь с серверной частью LabVIEW будет невозможна. Если Caddy не запущен, браузер не сможет получить доступ к выбранному локальному адресу прокси-сервера и может отобразить сообщение ERR_CONNECTION_REFUSED, как показано на Рисунке 13. Если Caddy запущен, но цель обратного прокси-сервера не совпадает с портом веб-сервиса RIP, страница может загрузиться, однако RIP POST-запросы завершатся с ошибкой 502 Bad Gateway, как показано на Рисунке 14. Если маршрут /RIP/SSE* работает некорректно, страница может открыться и отобразить элементы управления, но значения вывода не будут обновляться в режиме реального времени. При нормальной работе в инструментах разработчика браузера должна отображаться успешная загрузка страницы, RIP POST-запросы и активный SSE-запрос с правильным идентификатором эксперимента, как показано на Рисунке 15. Таким образом, поиск и устранение неисправностей следует начинать с проверки идентификатора эксперимента, пути к VI, статуса веб-сервиса RIP, статуса работы Caddy, портов прокси-сервера и маршрута SSE. Если связь по-прежнему работает некорректно, может помочь перезапуск веб-сервиса RIP и Caddy, очистка кэша браузера или повторное тестирование в другом браузере, чтобы отличить особенности конкретного браузера от проблем конфигурации RIP/Caddy.

Данный протокол воспроизводим для обоих примеров, поскольку один и тот же рабочий процесс «сборка — регистрация — развертывание — проверка» применяется как к модели скорости вентилятора, так и к модели ПИД-регулирования положения двигателя постоянного тока. Чтобы снизить зависимость от специализированных библиотек (toolboxes), серверные VI реконструированы с использованием базовых структур LabVIEW, включая элементы управления и индикаторы Front Panel, циклы While Loops, сдвиговые регистры Shift Registers, формульные узлы Formula Nodes, а также стандартные скалярные числовые и логические переменные. Тем не менее, воспроизводимость между версиями LabVIEW, установками Windows и локальными сетевыми средами по-прежнему зависит от таких деталей конфигурации, как пути к файлам, права доступа, локальные порты, команды запуска служб и поведение браузера. Данный рабочий процесс может быть расширен на дистанционные эксперименты с использованием оборудования, однако этот метод не следует интерпретировать как прямое распознавание аппаратного обеспечения на стороне веб-интерфейса. Веб-интерфейс идентифицирует элементы управления и индикаторы Front Panel LabVIEW через метаданные RIP. Следовательно, датчики, исполнительные механизмы, приборы или устройства управления процессами должны быть предварительно подключены и обработаны в серверном VI LabVIEW с помощью соответствующих драйверов оборудования, модулей сбора данных, модулей управления приборами или других механизмов адаптации оборудования. После того как аппаратные измерения и команды управления будут сопоставлены с индикаторами и элементами управления Front Panel, веб-интерфейс на базе RIP сможет распознавать эти переменные так же, как он распознает переменные моделирования, используемые в данном протоколе. Предыдущие исследования удаленных лабораторий на базе LabVIEW показали, что LabVIEW может использоваться в качестве серверной среды для дистанционных экспериментов по теории автоматического управления, робототехнике, установкам управления технологическими процессами, сбору данных с датчиков и взаимодействию с физическими устройствами9,12,17,18,19,20.

Рисунок 16 представляет собой единичный репрезентативный пример реализации, записанный во время эксперимента с локальным вентилятором. Фронтенд-код был инструментализирован для записи времени запроса/ответа метаданных, количества переменных метаданных, времени генерации интерфейса пользователя (UI) на основе метаданных, времени открытия соединения SSE и полученных данных SSE. В данном примере консоль браузера зафиксировала время запроса/ответа метаданных 68,00 ms, определила 7 переменных для записи и 7 переменных для чтения из метаданных RIP, сгенерировала соответствующие элементы UI за 2,00 ms и открыла соединение SSE за 16,00 ms. Повторяющиеся записи данных SSE показали, что такие выходные переменные, как SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA и PowerW, непрерывно поступали из бэкенда LabVIEW. Вид диспетчера задач в том же состоянии локального теста показал загрузку ЦП примерно 1,5% и использование памяти 391,7 MB для процесса Firefox, в то время как процесс LabVIEW на момент захвата показал загрузку ЦП 0% и использование памяти 9,2 MB. Эти наблюдения служат базовым доказательством того, что в среде локального развертывания можно отслеживать извлечение метаданных, генерацию UI на основе метаданных, связь RIP/SSE и накладные расходы ЦП на уровне процессов. Тем не менее, эти данные предназначены для верификации на уровне реализации, а не для всеобъемлющего анализа производительности. В дальнейшей работе остается необходимой систематическая оценка производительности с использованием различных браузеров, повторных испытаний, более высокой нагрузки переменных, физического оборудования и нескольких одновременных пользователей.

Данный метод также имеет свои ограничения, особенно при его распространении на сложные структуры данных, аппаратные эксперименты и многопользовательскую эксплуатацию. Текущий рабочий процесс наиболее подходящий для скалярных числовых и логических переменных ввода/вывода. Он не обеспечивает автоматическую полную поддержку сложных массивов, кластеров, вложенных структур данных, взаимосвязей на графиках или специализированных визуализаций. Такие случаи могут потребовать дополнительных правил сопоставления метаданных или вручную написанных компонентов интерфейса. Автоматически генерируемый пользовательский интерфейс может создавать базовые элементы управления и дисплеи на основе метаданных переменных, но он не может полностью определить физическую взаимосвязь между переменными, выбрать наиболее подходящую визуализацию или спроектировать взаимодействия по безопасности, специфичные для конкретного эксперимента. При распространении рабочего процесса на реальное оборудование требуются дополнительные меры, включая драйверы оборудования, калибровку устройств, ограничения дискретизации, пределы исполнительных механизмов, логику аварийного останова, аутентификацию и механизмы многопользовательского контроля записи. Текущее развертывание также может быть доступно с нескольких клиентских устройств через стандартные веб-браузеры в одной локальной сети. Как показано на Рисунке 17, одна и та же страница эксперимента с вентилятором была открыта одновременно в браузере настольного компьютера и в мобильном браузере, и оба клиента отображали автоматически сгенерированные элементы управления и соответствующие выходные переменные. Это наблюдение указывает на базовую возможность одновременного многоклиентского доступа для просмотра и взаимодействия с одной и той же страницей эксперимента. Однако это не следует интерпретировать как полноценную многопользовательскую систему управления, поскольку текущая реализация не включает в себя выделенную аутентификацию пользователей, блокировку управления, арбитраж параллельной записи, очереди записи или механизмы разрешения конфликтов. Эти ограничения согласуются с предыдущими исследованиями удаленных лабораторий, в которых сложные или совместные удаленные лаборатории обычно требуют проектирования интерфейса под конкретный эксперимент, механизмов синхронизации, ограничений безопасности и логики управления пользователями13,14,15,16,17.

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

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

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

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

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

Материалы

Список материалов, использованных в этой статье
ИмяКомпанияКаталожный номерКомментарии
Прокси-сервер 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

Ссылки

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,
  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.

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

Запросить разрешение на повторное использование текста или иллюстраций этой статьи JoVE

Запросить разрешение

Теги

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

Похожие статьи