방법 논문

원격 상호운용성 프로토콜을 이용한 LabVIEW 애플리케이션용 웹 기반 인터페이스의 자동 생성 프로토콜

DOI:

10.3791/72765

2026년 8월 14일

이 논문에서

요약

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

본 연구는 팬 모델과 직류 모터 위치 제어 모델이라는 두 가지 서로 다른 LabVIEW 시스템을 통해 원격 상호운용성 프로토콜(RIP) 기반의 자동 웹 사용자 인터페이스 생성을 검증하며, 두 예제의 구축, 등록, 배포 및 테스트를 위한 재현 가능한 절차를 제공합니다.

초록

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

원격 실험 플랫폼을 통해 네트워크상에서 로컬 시뮬레이션 모델이나 물리적 장치에 접근할 수 있지만, 기존의 웹 프론트엔드는 일반적으로 각 실험마다 별도의 페이지, 제어 레이아웃 및 데이터 통신 로직이 필요하며 이는 개발 비용을 증가시킵니다. 본 연구에서는 원격 상호운용 프로토콜(RIP)을 사용하여 LabVIEW 가상 악기(VI)로부터 웹 사용자 인터페이스(UI)를 자동으로 생성하는 기구축된 워크플로를 검증하고, 이를 구현하기 위한 재현 가능한 프로토콜을 제공합니다. 해당 워크플로는 프런트 패널에 입력 제어기 및 출력 표시기를 정의하는 LabVIEW VI를 구축하고, 각 VI를 RIP 서버 설정에 등록하며, 생성된 변수 메타데이터를 읽어 해당 웹 제어기 및 출력 디스플레이를 생성합니다. 프론트엔드 정적 파일 경로와 RIP 응용 프로그램 인터페이스(API) 요청 경로를 통합하기 위해 Caddy를 리버스 프록시로 사용합니다. 이 워크플로는 팬 속도 모델과 직류(DC) 모터 비례-적분-미분(PID) 위치 제어 모델이라는 두 가지 서로 다른 시스템으로 평가되었습니다. 두 경우 모두 웹 페이지는 노출된 변수를 식별하고, 사용자 입력을 LabVIEW 백엔드에 쓰고, 모델 출력을 읽으며, RIP 메타데이터로부터 인터페이스를 생성합니다. 이러한 결과는 서로 다른 두 가지 동적 시스템에 걸쳐 동일한 자동 UI 생성 프로세스가 유효함을 검증하며, 이를 재현하는 데 필요한 단계를 기록합니다.

서론

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

원격 실험, 온라인 교육 및 사물인터넷(IoT) 기술의 발전으로 인해, 로컬 시뮬레이션 모델이나 실험 장치에 대한 웹 기반 액세스를 제공하는 것이 실험 플랫폼 개발의 중요한 방향이 되었습니다1,2,3,4. 최근의 연구들은 사물인터넷이 구축된 실험실을 프로젝트 기반 학습 및 로컬 또는 원격 액세스와 더욱 통합함으로써, 공학 교육에서 유연하고 네트워크화된 실험 플랫폼의 지속적인 발전을 입증하였습니다5. 제어 시스템 실험의 경우, 사용자는 일반적으로 브라우저에서 입력 파라미터를 조정하고 출력 상태를 실시간으로 관찰해야 합니다6,7. 전통적인 방법은 일반적으로 각 실험 대상마다 별도의 웹 페이지, 제어 바인딩 로직 및 데이터 통신 인터페이스를 필요로 합니다8,9. 백엔드 모델의 변수가 변경되면 프런트엔드 페이지를 그에 맞게 수정해야 하는 경우가 많으며, 이는 상당한 반복 개발 작업을 초래하고 실험 플랫폼의 신속한 확장을 제한합니다.

원격 상호운용성 프로토콜(Remote interoperability protocol, RIP)은 백엔드 실험 모델과 웹 프런트엔드 사이에 미들웨어 계층을 제공합니다10,11. 이전 연구에서 설명한 RIP 기반 자동 UI 생성 방식에서, RIP 서버는 변수 이름, 입력/출력 속성, 데이터 유형, 최솟값, 최대값, 정밀도, 설명 및 사용 가능한 읽기/쓰기 방법을 포함하여 각 실험에 대한 메타데이터를 제공합니다11. 그러면 웹 클라이언트는 페이지 로딩 또는 새로고침 중에 이 메타데이터를 사용하여 레이블, 숫자 입력 필드, 슬라이더, Boolean 컨트롤 및 출력 디스플레이와 같은 해당 HTML 요소를 생성할 수 있습니다11. 본 프로토콜은 RIP 사양을 재구현하거나 재정의하지 않습니다. 대신, 기존의 오픈 소스 RIP 서비스와 RIP 기반 메타데이터-HTML UI 생성 로직을 통신 및 인터페이스 생성의 기반으로 사용하며, 두 가지 LabVIEW VI 예제의 재현 가능한 구축, 등록, 프록시 배포 및 검증에 중점을 둡니다.

기존의 맞춤형 웹 인터페이스 개발과 비교했을 때, 여러 LabVIEW 실험에서 유사한 스칼라 입력 및 출력 변수가 노출되는 경우 RIP 기반의 자동 UI 생성은 제어 레이아웃, 변수 바인딩 로직 및 기본적인 통신 기능을 구현해야 할 필요성을 줄여줍니다8,9,10,11. 새로운 VI가 등록되고 해당 변수들을 RIP 서버에서 사용할 수 있게 되면, 동일한 메타데이터 읽기 및 제어 생성 로직을 재사용하여 기본적인 웹 인터페이스를 구축할 수 있습니다10,11. 이러한 기능은 신속한 배포, 교육용 시연, 그리고 여러 유사한 실험에 대한 일관된 접근이 필요한 원격 실험실 플랫폼에 유용합니다3,8,9. 하지만 자동 생성된 인터페이스에는 한계 또한 존재합니다. 변수 간의 물리적 관계를 완전히 추론하거나, 차트 매핑을 자동으로 결정하거나, 도메인 특화 시각화 및 안전 상호작용을 설계하지 못합니다11. 따라서 실험에 고도로 맞춤화된 그래픽, 복잡한 사용자 워크플로우, 고급 시각화, 하드웨어 안전 인터록 또는 다중 사용자 쓰기 중재가 필요한 경우에는 수동 웹 인터페이스 개발이 여전히 바람직합니다.

프로토콜의 전체 워크플로우는 그림 1에 요약되어 있습니다. 이 워크플로우에서는 먼저 LabVIEW VI가 프런트 패널에 필요한 입력 컨트롤과 출력 표시기를 정의합니다. 그런 다음 실험 이름과 VI 경로를 지정하여 RIP 서버 설정(RIP Server Configuration)에 VI를 등록합니다. 등록 후, RIP 서버는 선택한 실험의 메타데이터를 읽어 사용 가능한 변수에 대한 읽기/쓰기 액세스를 제공합니다. XHTML 웹 페이지는 반환된 메타데이터를 사용하여 해당하는 입력 컨트롤과 출력 디스플레이를 자동으로 생성하며, Caddy는 정적 웹 페이지와 RIP 통신 경로를 위한 통합 액세스 경로를 제공합니다. 본 연구에서는 동일한 워크플로우의 두 가지 구현 사례로 팬 및 직류 모터 모델을 사용하였습니다. 호환 가능한 스칼라, 수치 및 불리언 변수를 제공하는 다른 LabVIEW 실험의 경우, 개발자는 동일한 구축-등록-배포-검증 워크플로우를 따라 자동으로 생성되는 웹 인터페이스를 구축할 수 있으며, 필요에 따라 실험별 시각화, 안전 로직 또는 복잡한 데이터 처리 기능을 추가할 수 있습니다.

본 논문은 새로운 RIP 아키텍처를 제안하거나 RIP가 이미 지원하는 데이터 유형의 범위를 확장하지 않습니다. 대신, RIP를 확립된 통신 및 메타데이터 기반 UI 생성 메커니즘으로 사용하며, 재현 가능한 구현 프로토콜을 문서화하는 동시에 두 가지 서로 다른 LabVIEW 시스템으로 동일한 프로세스를 검증하는 데 중점을 둡니다. 이전 연구에서는 RIP 메타데이터를 기반으로 한 자동 웹 UI 생성의 기본 방법을 제시하고 온라인 서보 모터 실험을 사례 연구로 활용한 바 있습니다11. 대화형 인터페이스를 엔지니어링 소프트웨어 및 LabVIEW와 결합한 웹 기반 원격 실험실 아키텍처 또한 이전 연구들에서 보고되었습니다9,12. 그러나 실제 재현 과정에서 기존 사례의 일부 LabVIEW 모델들이 소프트웨어 버전 및 모듈 호환성의 영향을 받아 최신 환경에서 직접 사용하기 어려운 점이 있었습니다. 따라서 본 연구에서는 호환 가능한 두 가지 백엔드 VI인 팬 모델과 직류(DC) 모터 비례-적분-미분(PID) 위치 제어 모델을 재구성하고, 두 모델 모두에 동일한 메타데이터 기반 UI 생성 프로세스를 적용합니다. 본 연구의 기여도는 RIP의 범용성 확장보다는 확립된 RIP 워크플로의 교차 시스템 검증과 해당 프로세스를 재현하기 위한 상세 프로토콜을 제공하는 데 있습니다.

본 프로토콜의 대상 사용자는 이미 LabVIEW VI를 사용하고 있으며, 각 모델마다 독립적으로 완전한 맞춤형 프런트 엔드를 구현하지 않고도 웹 브라우저를 통해 시뮬레이션 모델이나 저위험 실험 시스템을 공개하고자 하는 연구자, 교육자 및 실험실 개발자입니다. 본 프로토콜은 표준 수치 및 불리언(Boolean) 변수, 파라미터 조정 및 실시간 상태 모니터링을 사용하는 실험에 특히 적합합니다10,11. 반면 복잡한 데이터 구조, 특수 시각화, 엄격한 하드웨어 안전 인터락 또는 다중 사용자 쓰기 중재가 필요한 실험을 위한 단독 솔루션으로는 적합성이 떨어집니다11. 본 연구의 목적은 두 가지 서로 다른 LabVIEW 시스템을 통해 RIP 기반의 자동 웹 UI 생성을 검증하고, 백엔드 VI 구축부터 브라우저 기반 상호작용까지 재현 가능한 완전한 프로토콜을 제공하는 것입니다. 본 프로토콜에는 입출력 변수 정의, RIP 서버 실험 등록, 메타데이터 기반 UI 생성, Caddy 프록시 배포 및 원격 읽기/쓰기 검증이 포함됩니다. 팬(fan) 및 DC 모터 모델에 동일한 워크플로우를 적용함으로써, 각 예제에 대해 웹 프런트 엔드를 수동으로 완전히 다시 작성하지 않고도 구축된 프로세스를 재현할 수 있음을 입증하였습니다9,10,11.

프로토콜

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

다음 워크플로에 요약된 절차에 따라, 두 개의 RIP 접속 가능 LabVIEW 실험을 구축, 등록, 배포 및 검증하기 위해 다음 단계들을 완료하십시오. 그림 1본 연구에 사용된 모든 도구와 플랫폼은 다음의 목록에 기재되어 있습니다. 재료 표.

1. 팬 모델 실험 구축 및 배치

  1. 팬 모델 VI를 구축하십시오.
    1. LabVIEW를 실행하여 새로운 VI를 생성하고, 파일을 fengshan.vi로 저장하십시오. 해당 VI는 RIP WebService 프로세스가 접근 가능한 모든 디렉토리에 저장할 수 있습니다. Private 폴더는 예시 디렉토리로만 사용되며 RIP에 하드코딩되어 있지 않습니다. RIP 실험 등록 시 실제로 선택한 VI 경로를 입력하십시오.
    2. 전면 패널(Front Panel)에 팬 모델을 위한 입력 컨트롤을 추가하십시오. 이 예제에서는 입력 컨트롤의 이름을 다음과 같이 지정하십시오. 활성화, 펄스 폭 변조 (PWM), 부하, 타우, 최대 회전수(KMaxRPM) 그리고 교란설정 활성화 불리언 제어(Boolean control)로 설정하고, PWM, 부하, 타우, 최대 RPM, 그리고 교란 배정밀도 부동 소수점(DBL) 수치 컨트롤로 설정하십시오. 다음을 참조하십시오. 보충 표 1 팬 변수의 물리적 의미와 모델 내 역할에 대하여.
    3. 팬 모델의 출력 지표를 추가하십시오. 이 예제에서는 출력 지표의 이름을 지정하십시오. 속도RPM, 일정RPM, 시간S, 정규화속도, 전류A, PowerW모든 출력 지표를 DBL 지표로 설정하십시오.
      ​참고: 표 1 이 출력 변수들의 물리적 의미와 모델 내 역할을 설명합니다. 완성된 팬 전면 패널은 다음에서 확인할 수 있습니다. 그림 2에 표시된 변수 이름, 범위 및 단계 크기는 표 1 본 프로토콜에서 구현된 두 가지 예시를 설명합니다. 이는 RIP의 고정된 필수 요구 사항이 아닙니다. 다른 LabVIEW 실험의 경우, 개발자가 서로 다른 프런트 패널 변수 이름과 수치 속성을 정의할 수 있습니다. RIP 서버는 VI 메타데이터로부터 실제 변수 이름, 데이터 유형, 입출력 속성 및 사용 가능한 수치 속성을 읽어오며, 웹 페이지는 반환된 메타데이터를 기반으로 그에 해당하는 제어 장치와 디스플레이를 생성합니다.
    4. 블록 다이어그램에 While 루프를 추가하십시오. 저장을 위해 두 개의 시프트 레지스터를 추가하십시오. 이전 속도이전 시간, 그리고 두 값 모두 0으로 초기화하십시오.
    5. While 루프 내부에 Formula 노드를 추가합니다. 연결하십시오. 활성화, PWM, 부하, 타우, 최대 RPM, 외란, 이전 속도 이전 시간 Formula Node의 왼쪽 입력 단자에 연결하고, 설정하십시오. SteadyRPM, speed_next, SpeedNorm, CurrentA, PowerW, 다음 시간 우측 출력 단자로 사용합니다.
    6. 구축하십시오 활성화 수식 노드 외부에 제어 로직을 사용하십시오. 활성화 선택 신호로 사용하여 u = 펄스 폭 변조(PWM) 언제 활성화 참(True)이며 u = 0 언제 활성화 거짓입니다.
    7. 포뮬러 노드(formula node)에 팬 모델 코드를 입력하십시오. 이 코드를 사용하여 정상 상태 속도, 실제 속도, 정규화된 속도, 전류, 전력 및 작동 시간을 계산하십시오. 전체 코드는 보충 코딩 파일 1(Supplementary Coding File 1)을 참조하십시오.
    8. 연결하십시오. 다음 속도 Formula 노드의 출력을 다음으로 연결합니다. 속도(RPM) 지시약, 그리고 연결 다음 속도 오른쪽 시프트 레지스터로 돌아가서 이전 속도연결하십시오. SteadyRPM ~로의 SteadyRPM 지시약
    9. 연결 다음 시간 ~로의 TimeS 지시약, 그리고 연결 다음 시간 다시 오른쪽 시프트 레지스터로 돌아가서 이전 시간연결하십시오. SpeedNorm, CurrentA,PowerW 해당 출력 지표로.
    10. While 루프 내부에 대기(Wait) 함수를 추가하고 대기 시간을 50ms로 설정하십시오. 로컬 정지(Stop Local) 버튼을 추가하고 이를 While 루프의 조건 터미널에 연결하십시오.
    11. fengshan.vi를 저장하십시오. 완성된 팬 블록 다이어그램은 다음에서 확인할 수 있습니다. 그림 3.
      중단 지점: 완료된 fan VI를 저장한 후 워크플로우를 중단할 수 있습니다. 나중에 저장된 VI를 다시 열어 모든 프런트 패널 제어기, 인디케이터 및 블록 다이어그램 연결이 그대로 유지되고 있는지 확인하여 재개하십시오.
  2. RIP 서버에 팬 실험을 등록하십시오.
    1. LabVIEW 프로젝트 탐색기에서 RIPWebService.lvproj를 여십시오.
      .
    2. 프로젝트 트리에서 Configuration.vi를 열고 실험 설정 표의 위치를 확인하십시오.
    3. 새 실험 행을 추가하십시오. 이름을 fan으로 설정하십시오. 전체 경로를 저장된 fengshan.vi 파일로 설정하십시오. fan 실험의 등록 필드는 다음에서 확인할 수 있습니다. 그림 4.
    4. 나머지 구성 필드를 입력하십시오. 저자(Authors)는 실험 저자로, 키워드(Keywords)는 Fan으로, 설명(Description)은 팬 속도 모델(fan speed model)로, 샘플링 주파수(Sampling Freq)는 200으로 설정하십시오.
    5. LabVIEW 메뉴에서 다음을 선택하십시오. 편집 > 현재 값을 기본값으로 설정. 설정 저장.vi.
    6. RIP WebService를 재시작하고, 재시작 후에도 구성(Configuration) 인터페이스에 팬 실험 항목이 계속 표시되는지 확인하십시오.
      참고: 실험 이름은 대소문자를 구분합니다. RIP Configuration의 fan 값은 프런트엔드 XHTML 파일에 사용된 실험 ID와 정확히 일치해야 합니다. 동일한 자동 UI 생성 로직을 사용하는 다른 LabVIEW VI를 배포하려면, RIP Configuration에 새로운 실험 항목을 추가하고, 새로운 Name 값을 설정한 뒤 Path를 해당 VI 파일로 지정하십시오. 그 다음, XHTML 파일의 실험 ID로 동일한 Name 값을 사용하십시오. 변수마다 프런트엔드 페이지를 새로 작성할 필요는 없습니다.
      ​중단 지점: Configuration.vi를 저장하고 현재 값을 기본값으로 설정한 후, 워크플로우를 중단할 수 있습니다. 나중에 RIP WebService를 재시작하고 팬 실험(fan experiment)이 여전히 등록되어 있는지 확인하여 프로세스를 재개하십시오.
  3. 팬 실험을 위한 프런트엔드 페이지를 준비하십시오.
    1. Fan_Automatic_UI.xhtml 파일을 프런트엔드 루트 디렉토리로 사용되는 Client 디렉토리에 배치하십시오.
    2. 텍스트 편집기로 Fan_Automatic_UI.xhtml 파일을 여십시오.
    3. 스크립트 섹션에서 실험 ID 변수를 찾아 fan으로 설정하십시오.
      참고: 이 값은 RIP Configuration 내 팬 실험의 Name 필드와 정확히 일치해야 합니다. 실험 ID 설정 및 XHTML 프런트엔드 파일을 위한 공유 메타데이터 기반 UI 생성 로직은 다음에서 확인할 수 있습니다. 그림 5.
    4. 페이지가 window.location.origin을 통해 현재 액세스 오리진을 가져오고, 다음을 통해 실험 메타데이터를 요청하는지 확인하십시오. rip.info(), 그리고 반환된 메타데이터를 다음으로 전달합니다. autobuildUI().
      참고: 페이지에 팬 변수 이름, 범위 또는 단계 크기를 수동으로 하드코딩해서는 안 됩니다. 대신, 다음과 같이 기록 가능한 변수를 생성합니다. meta.writables.list, 판독 가능한 변수가 생성됩니다. 메타.읽기가능목록그리고 min, max, step과 같은 수치 속성은 RIP 서버에서 반환된 메타데이터로부터 얻습니다.
    5. Fan_Automatic_UI.xhtml을 저장하십시오.
      ​참고: 다른 LabVIEW VI에 동일한 프런트엔드 생성 로직을 사용하려면, XHTML 파일에서 새로운 실험 ID를 설정하고 RIP Configuration에 해당 실험 이름과 VI 경로를 등록하십시오. 웹 컨트롤 및 출력 디스플레이는 선택한 실험에서 반환된 메타데이터에 따라 생성됩니다.
  4. 팬 실험을 위한 Caddy 접근 경로를 설정하십시오.
    1. 텍스트 편집기로 Caddyfile을 엽니다.
    2. 프런트엔드 루트 디렉토리를 Fan_Automatic_UI.xhtml 파일이 포함된 Client 디렉토리로 설정하십시오.
    3. Caddy가 웹 페이지 및 RIP 경로에 대한 브라우저 액세스를 제공할 수 있도록 사용하지 않는 로컬 포트를 선택하십시오. 본 프로토콜에서는 예시 프록시 액세스 포트로 8090번 포트를 사용합니다.
      참고: RIP 또는 Caddy에서 포트 8090은 필수 사항이 아닙니다. 포트 8090이 이미 사용 중인 경우, 사용하지 않는 다른 로컬 포트로 대체하고 브라우저 주소창에도 동일한 포트를 사용하십시오.
    4. /fan을 Fan_Automatic_UI.xhtml로 리라이트하는 경로를 추가하십시오.
    5. LabVIEW에 설정된 RIP WebService 포트를 확인하십시오. 본 프로토콜에서는 http://localhost:8001을 RIP WebService 주소로 사용합니다.
      참고: 포트 8001은 테스트 환경에서 사용되는 LabVIEW/RIP WebService 백엔드 포트입니다. 이 포트는 LabVIEW/RIP WebService 설정에서 변경할 수 있습니다. 다른 포트를 사용하는 경우, Caddyfile의 http://localhost:8001을 해당 RIP WebService 주소로 대체하십시오.
    6. /RIP/SSE* 요청을 http://localhost:8001과 같은 RIP WebService 주소로 전송하는 리버스 프록시 규칙을 추가하십시오.
    7. /RIP* 요청을 http://localhost:8001과 같은 RIP 웹 서비스 주소로 전송하는 역방향 프록시 규칙을 추가하십시오. Caddyfile 설정은 다음과 같습니다. 그림 6.
    8. Windows에서 명령 프롬프트를 엽니다. 다음 명령어를 입력하여 로컬 Caddy 다운로드 또는 설치 디렉터리로 이동하십시오.
      cd /d D:\caddy
      참고: 본 프로토콜에서 D:\caddy는 테스트 환경에서 사용된 Caddy 다운로드 또는 설치 로컬 경로입니다. Caddy가 다른 디렉토리에 저장되어 있는 경우, D:\caddy를 해당 로컬 경로로 대체하십시오.
    9. 다음 명령어를 입력하여 지정된 Caddyfile로 Caddy를 시작하십시오.
      caddy.exe run --config Caddyfile
    10. Caddy가 설정 오류 없이 시작되는지 확인하십시오. 웹 브라우저에서 http://localhost:8090/fan을 열고, 다음 그림과 같이 팬(fan) 웹 UI가 생성되는지 확인하십시오. 그림 7.
      ​참고: 브라우저에 502 에러가 발생할 경우, RIP WebService가 실행 중인지, LabVIEW의 RIP WebService 포트가 Caddyfile의 리버스 프록시 주소와 일치하는지, 그리고 선택한 Caddy 접속 포트가 사용 중이지 않은지 확인하십시오.
  5. 팬 실험의 작동 결과를 검증하십시오.
    1. 프론트엔드 페이지에서 다음 사항이 자동으로 생성되는지 확인하십시오. 활성화, PWM, 부하, 타우, 최대 회전수(KMaxRPM)교란 입력 제어물
    2. 프런트엔드 페이지에 다음 내용이 표시되는지 확인하십시오. 속도RPM, 일정RPM, 시간S, 정규화속도, 전류A, PowerW 출력 변수
    3. 조절 펄스 폭 변조 (PWM) 및 ~ 여부를 관찰하십시오 속도(RPM) ~함에 따라 증가한다 펄스 폭 변조(PWM) ~함에 따라 증가하고 감소합니다 펄스 폭 변조(PWM) 감소합니다.
    4. 부하를 조절하고 ~인지 관찰하십시오 SteadyRPM 속도(RPM) 부하가 증가함에 따라 감소합니다.
    5. 교란을 조절하고 다음 사항을 관찰하십시오. 속도RPM, 전류A,PowerW 교란 입력에 따른 반응의 변화.
    6. 확인하십시오. TimeS 지속적으로 증가하며, 이는 후면 팬 VI가 계속해서 작동하고 있음을 확인해 줍니다.

2. DC 모터 PID 위치 제어 실험 구축 및 배치

  1. DC 모터 PID 위치 제어 모델 VI를 구축하십시오.
    1. LabVIEW를 실행하고 새로운 VI를 생성한 후, 파일 이름을 Motor.vi로 저장하십시오. 해당 VI는 RIP WebService 프로세스가 접근 가능한 임의의 디렉토리에 저장하십시오.
      참고: Private 폴더는 예시 디렉토리로만 사용되며 RIP에 하드코딩되어 있지 않습니다. RIP 실험 등록 시 실제로 선택한 VI 경로를 입력하십시오.
    2. 프런트 패널(Front Panel)에 DC 모터 PID 위치 제어 모델을 위한 입력 컨트롤을 추가합니다. 본 예제에서는 입력 컨트롤의 이름을 다음과 같이 지정합니다. 설정값, 비례 이득, 적분 시간, 미분 시간, 외란 리셋 컨트롤설정 설정값, 비례 이득(Kc), 적분 시간(Ti), 미분 시간(Td) 그리고 교란 DBL 수치 제어기로 설정하고, Reset 제어기는 Boolean 제어기로 설정하십시오.
      참고: 표 1 이 예제에서 사용된 변수들의 물리적 의미, 모델 내 역할 및 권장 범위를 설명합니다.
    3. DC 모터 PID 위치 제어 모델의 출력 지표를 추가하십시오. 이 예제에서는 출력 지표의 이름을 지정하십시오. 위치, 전압, 시간, 그리고 측정된 각속도모든 출력 표시기를 DBL 표시기로 설정하십시오. 표 1 이 출력 변수들의 물리적 의미와 모델에서의 역할을 설명합니다. 모터의 완성된 프런트 패널(Front Panel)은 다음에서 확인할 수 있습니다. 그림 8.
      참고: 아래에 나열된 변수 이름 및 범위는 표 1 이 프로토콜에서 구현된 두 가지 사례에 대해 설명합니다. 이는 RIP 기반 자동 UI 생성 워크플로우의 고정된 요구 사항이 아닙니다. 다른 LabVIEW VI가 사용될 때, RIP는 VI 메타데이터에서 실제 변수 이름, 데이터 유형, 입출력 속성 및 사용 가능한 수치 속성을 읽어옵니다. 따라서 프런트엔드 생성 로직에서 각 실험의 변수 이름, 최댓값, 최솟값 또는 단계 크기를 하드코딩할 필요가 없습니다.
    4. 블록 다이어그램에 While 루프를 추가하십시오. 저장 공간으로 사용할 6개의 시프트 레지스터를 추가하십시오. 세타(theta), 오메가(omega), 허수부(im), 이전 오차(e_prev), 적분항(integ) 시간, 그리고 6개 값 모두를 0으로 초기화합니다.
    5. While 루프 내부에 Formula 노드를 추가합니다. 다음에 제시된 DC 모터 PID 위치 제어 모델 다이어그램에 따라 그림 9이 Formula Node를 오차 계산, PID 제어, 전압 제한, 전기적 모델, 기계적 모델 및 위치 업데이트를 위한 핵심 계산 모듈로 사용하십시오.
      참고: 이 모델에 사용된 다음과 같은 내부 모터 파라미터는 R, L, J, b, Kt, Ke, 그리고 최대 반응 속도(Vmax), 특정 물리적 모터의 보정된 파라미터가 아니라 정규화된 교육 모델 파라미터입니다. 이 파라미터들은 선택된 시간 단계 및 전압 제한 하에서 안정적이고 관찰 가능한 시뮬레이션 응답을 생성하도록 선택되었으며, 이를 통해 다음의 효과를... 설정값, 비례 이득(Kc), 적분 시간(Ti), 미분 시간(Td)교란 웹 기반 작동 중에 명확하게 입증될 수 있습니다.
    6. 설정 설정값, 세타, 오메가, 적분값, 이전 오차, 적분, 비례이득, 적분시간, 미분시간, 외란, 리셋dt aFormula Node의 입력 단자입니다. 설정하십시오. theta_next, omega_next, im_next, e_next, integ_next,전압 Formula Node의 출력 단자로.
    7. 연결하십시오 설정값 ~에 대한 대조군 종(sp.) Formula Node의 입력 터미널. 연결하십시오. Kc, Ti, Td, 교란 ~에, ~로의 Kc, Ti, Td, 및 d교란 iFormula Node의 입력 터미널들입니다.
    8. Reset 제어 불리언(Boolean) 신호를 수치 신호로 변환하여 다음으로 연결하십시오. 초기화 Formula Node의 입력 터미널. 다음 상황에서 상태 리셋을 실행하십시오. 재설정 0이 아니며, 이때 PID 제어 및 모터 상태 업데이트를 수행한다. 재설정 0과 같습니다.
    9. 수치 상수를 추가하십시오. dt 값을 0.001 s로 설정하십시오. 다음을 연결하십시오. dt ~로의 dt Formula Node의 입력 단자를 사용하여 시간을 업데이트하십시오.
    10. Formula Node에서 DC 모터의 내부 모델 파라미터를 설정하십시오. 다음을 참조하십시오. 부속 표 2 모터 변수의 물리적 의미와 모델 내 역할에 대하여.
    11. Formula Node에 DC 모터 PID 위치 제어 코드를 입력하십시오. 이 코드를 사용하여 리셋 로직, 오차 계산, 적분항 계산, 미분항 계산, PID 제어, 전압 제한, 전류 업데이트, 각속도 업데이트 및 위치 업데이트를 구현하십시오. 전체 코드는 보충 코딩 파일을 참조하십시오.
    12. 연결 theta_next ~에/로의 위치 지시약, 그리고 연결 theta_next 오른쪽 시프트 레지스터로 돌아가서 세타 연결하십시오 오메가_넥스트(omega_next) ~로의 측정 각속도 표시기, 그리고 연결하십시오 오메가_넥스트(omega_next) 다시 오른쪽 시프트 레지스터로 돌아가서 오메가
    13. 전압을 전압 표시기에 연결하십시오. 연결하십시오. im_next, e_next,integ_next 오른쪽 시프트 레지스터로 돌아가기 im, e_prev, 통합, 각각.
    14. 계산을 위해 포뮬러 노드(Formula Node) 외부에 덧셈 함수를 사용하십시오. time_next = time + dt. 연결 다음 시간 ~로(부터) 시간 지시약, 그리고 연결 다음 시간 시간을 위해 다시 오른쪽 시프트 레지스터(Shift Register)로 돌아갑니다.
    15. While 루프 내부에 대기(Wait) 함수를 추가하고 대기 시간을 1ms로 설정하십시오. 정지(Stop) 버튼을 추가하고 이를 While 루프의 조건 터미널에 연결하십시오.
    16. Motor.vi를 저장하십시오. 완성된 모터 블록 다이어그램은 다음에서 확인할 수 있습니다. 그림 10.
      중단 지점: 완성된 모터 VI를 저장한 후, 워크플로를 중단할 수 있습니다. 나중에 저장된 VI를 다시 열어 프런트 패널의 모든 컨트롤, 인디케이터 및 블록 다이어그램 연결 상태가 유지되고 있는지 확인한 후 작업을 재개하십시오.
  2. RIP 서버에 운동 실험을 등록하십시오.
    1. LabVIEW 프로젝트 탐색기에서 RIPWebService.lvproj를 엽니다.
    2. 프로젝트 트리에서 Configuration.vi를 열고 실험 구성 표를 찾으십시오.
    3. 새 실험 행을 추가하십시오. 이름(Name)을 Motor로 설정하십시오. 경로(Path)를 저장된 Motor.vi 파일의 전체 경로로 설정하십시오. 모터 실험 등록 필드는 다음에서 확인할 수 있습니다. 그림 11.
    4. 나머지 설정 필드를 입력하십시오. 저자(Authors)에는 실험 저자를, 키워드(Keywords)에는 Motor를, 설명(Description)에는 DC 모터 위치 제어 모델(DC motor position control model)을, 샘플링 주파수(Sampling Freq)에는 200을 설정하십시오.
    5. LabVIEW 메뉴에서 다음을 선택하십시오. 편집 > 현재 값을 기본값으로 설정. 구성 저장.vi.
    6. RIP WebService를 재시작하고, 재시작 후에도 설정 인터페이스에 Motor 실험이 계속 목록에 표시되는지 확인하십시오.
      참고: 실험 이름은 대소문자를 구분합니다. RIP Configuration의 Motor 값은 Motor_Automatic_UI.xhtml에서 사용된 실험 ID와 정확히 일치해야 합니다. 동일한 자동 UI 생성 로직을 갖는 다른 LabVIEW VI를 배포하려면, RIP Configuration에 새로운 실험 항목을 추가하고, 새로운 Name 값을 설정한 후, Path를 해당 VI 파일로 지정하십시오. 그 다음, XHTML 파일의 실험 ID로 동일한 Name 값을 사용하십시오. 변수마다 프론트엔드 페이지를 다시 작성할 필요는 없습니다.
      ​중단 지점: Configuration.vi를 저장하고 현재 값을 기본값으로 설정한 후, 워크플로를 중단할 수 있습니다. 나중에 RIP WebService를 재시작하고 Motor 실험이 여전히 등록되어 있는지 확인하여 재개하십시오.
  3. 모터 실험을 위한 프런트엔드 페이지를 준비하십시오.
    1. Motor_Automatic_UI.xhtml 파일을 프론트엔드 루트 디렉토리로 사용되는 Client 디렉토리에 배치하십시오.
    2. 텍스트 편집기로 Motor_Automatic_UI.xhtml 파일을 여십시오.
    3. 스크립트 섹션에서 실험 ID(experiment ID) 변수를 찾아 'Motor'로 설정하십시오. 이 값은 RIP 구성(RIP Configuration)에 있는 모터 실험의 이름(Name) 필드와 정확히 일치해야 합니다. 모터 프론트엔드 페이지는 다음에서 보여주는 것과 동일한 메타데이터 기반 UI 생성 로직을 사용합니다. 그림 5; RIP 구성의 Motor 항목과 일치하도록 실험 ID만 변경되었습니다.
    4. 해당 페이지에 RIP 메타데이터 읽기 로직, HTML 컨트롤 생성 로직, RIP 쓰기 함수 및 출력 업데이트 함수가 포함되어 있는지 확인하십시오.
      참고: 페이지에 모터 변수 이름, 범위 또는 단계 크기를 수동으로 하드코딩해서는 안 됩니다. 이러한 속성은 앞서 설명한 RIP 기반 메타데이터-HTML 생성 메커니즘에 따라 RIP 서버에서 반환된 메타데이터로부터 얻습니다.11.
    5. Motor_Automatic_UI.xhtml을 저장하십시오.
      ​참고: 다른 LabVIEW VI에 동일한 프런트엔드 생성 로직을 사용하려면, XHTML 파일에서 새로운 실험 ID(experiment ID)를 설정하고 RIP Configuration에 해당 실험 이름(experiment Name)과 VI 경로(VI Path)를 등록하십시오. 웹 컨트롤 및 출력 디스플레이는 선택된 실험에 의해 반환된 메타데이터에 따라 생성됩니다.
  4. 모터 실험을 위한 Caddy 액세스 경로를 설정하십시오.
    1. 텍스트 편집기로 Caddyfile을 엽니다.
    2. 프론트엔드 루트 디렉토리를 Motor_Automatic_UI.xhtml 파일이 포함된 Client 디렉토리로 설정하십시오.
    3. 웹 페이지 및 RIP 경로에 대한 브라우저 액세스를 제공하기 위해 Caddy가 사용할 사용하지 않는 로컬 포트를 선택하십시오. 본 프로토콜에서는 포트 8090을 예시 프록시 액세스 포트로 사용합니다.
      참고: 8090 포트는 RIP나 Caddy에 필수적인 것이 아닙니다. 8090 포트가 이미 사용 중인 경우, 이를 다른 사용하지 않는 로컬 포트로 변경하고 브라우저 주소창에도 동일한 포트를 입력하십시오.
    4. /motor 경로를 Motor_Automatic_UI.xhtml로 리다이렉트하는 경로를 추가하십시오.
    5. LabVIEW에 설정된 RIP WebService 포트를 확인하십시오. 본 프로토콜에서는 http://localhost:8001을 RIP WebService 주소로 사용합니다.
      참고: 포트 8001은 테스트 환경에서 사용되는 LabVIEW/RIP WebService 백엔드 포트입니다. 이는 LabVIEW/RIP WebService 설정에서 변경할 수 있습니다. 다른 포트를 사용하는 경우, Caddyfile의 http://localhost:8001을 해당 RIP WebService 주소로 교체하십시오.
    6. /RIP/SSE* 요청을 http://localhost:8001과 같은 RIP WebService 주소로 전송하는 리버스 프록시 규칙을 추가하십시오.
    7. /RIP* 요청을 http://localhost:8001과 같은 RIP 웹 서비스 주소로 전송하는 리버스 프록시 규칙을 추가하십시오. Caddyfile 설정은 그림 6에 나와 있습니다.
    8. Windows에서 명령 프롬프트를 엽니다. 다음 명령어를 입력하여 로컬 Caddy 다운로드 또는 설치 디렉터리로 이동하십시오.
      cd /d D:\caddy
      참고: 본 프로토콜에서 D:\caddy는 테스트 환경에서 사용된 Caddy의 로컬 다운로드 또는 설치 경로입니다. Caddy가 다른 디렉토리에 저장되어 있는 경우, D:\caddy를 해당 로컬 경로로 대체하십시오.
    9. 다음 명령어를 입력하여 지정된 Caddyfile로 Caddy를 실행하십시오.
      caddy.exe run --config Caddyfile
    10. Caddy가 설정 오류 없이 시작되는지 확인하십시오. 웹 브라우저에서 http://localhost:8090/motor를 열어, 다음 그림과 같이 모터 웹 UI가 생성되었는지 확인하십시오. 그림 12.
      ​참고: 모터 웹 페이지는 로드되지만 출력 값이 업데이트되지 않는 경우, RIP WebService가 실행 중인지, 모터 VI가 실행되고 있는지, LabVIEW의 RIP WebService 포트가 Caddyfile의 역방향 프록시 주소와 일치하는지, 그리고 /RIP/SSE* 경로가 올바르게 프록시되었는지 확인하십시오.
  5. 모터 실험의 작동 결과를 확인하십시오.
    1. 프런트엔드 페이지에서 자동으로 생성되는지 확인하십시오. 설정값, 비례 이득, 적분 시간, 미분 시간, 외란초기화 입력 제어 장치 제어.
    2. 프런트엔드 페이지에 다음 사항이 표시되는지 확인하십시오. 위치, 전압, 시간, 측정된 각속도 출력 변수
    3. 조절 설정값 그리고 Position이 목표 위치의 변화에 반응하는지 관찰하십시오.
    4. 조정하십시오 Kc, Ti, Td 그리고 ~인지 관찰합니다. 전압, 위치,측정된 각속도 변경.
    5. 조절 외란을 가하고 위치, 제어 전압 또는 측정된 각속도에 변화가 있는지 관찰합니다. ~에 의해 영향을 받습니다 교란 입력
    6. Reset control을 클릭하여 ~인지 확인하십시오. 위치, 전압, 측정된 각속도, 그리고 관련 내부 상태는 리셋 로직에 따라 초기 상태로 돌아갑니다.

결과

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

위에서 설명한 워크플로우를 완료하면, 팬 실험과 DC 모터 PID 위치 제어 실험 모두 자동으로 생성된 웹 프론트엔드를 통해 접속할 수 있습니다. 성공적인 결과는 세 가지 관찰 사항으로 확인할 수 있습니다. 첫째, 웹 페이지는 RIP 서버에서 반환된 변수 메타데이터에 따라 입력 제어 항목과 출력 표시 필드를 자동으로 생성합니다. 둘째, 사용자가 웹 페이지에서 입력 변수를 변경하면 수정된 값이 RIP 인터페이스를 통해 LabVIEW 백엔드 VI에 기록됩니다. 셋째, 백엔드 VI에서 계산된 출력 변수가 RIP를 통해 반환되어 웹 페이지에 실시간으로 갱신됩니다. 팬 실험의 경우, 브라우저에 http://localhost:8090/fan을 입력하면 그림 7에 표시된 것처럼 RIP 메타데이터로부터 입력 제어 항목과 출력 필드가 자동으로 생성됩니다. 입력 측에는 Enable, PWM, Load, Tau, KMaxRPM, Disturbance가 포함되며, 출력 측에는 SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, PowerW가 표시됩니다. 정상 작동 중에 TimeS가 지속적으로 증가하는 것은 백엔드 fengshan.vi가 실행되고 있음을 나타냅니다. PWM을 증가시키면 SpeedRPMSteadyRPM이 이에 따라 증가합니다. Load를 증가시키면 load가 정상 상태 작동 속도를 감소시키므로 팬 속도가 감소합니다. Disturbance를 조정하면 SpeedRPM, CurrentA, PowerW에서 해당하는 변화를 관찰할 수 있습니다. 이러한 관찰 결과는 웹 측의 입력값이 LabVIEW 백엔드로 정확하게 전송되었으며, 계산된 출력값이 RIP를 통해 프론트엔드로 반환되었음을 확인시켜 줍니다.

DC 모터 PID 위치 제어 실험을 위해 브라우저에 http://localhost:8090/motor를 입력하면, 그림 12에 표시된 바와 같이 페이지에서 RIP 메타데이터로부터 해당 제어 및 출력 필드를 자동으로 생성합니다. 입력 변수에는 Setpoint, Kc, Ti, Td, DisturbanceReset 제어가 포함되며, 출력 변수에는 Position, Voltage, Time, Measured angular velocity가 포함됩니다. Setpoint가 변경되면 Position이 새로운 목표 값에 반응합니다. PID 파라미터인 Kc, Ti, Td를 조정하면 출력 응답, 제어 voltagemeasured angular velocity가 그에 따라 변경되며, 이는 웹 페이지에 입력된 파라미터 값이 LabVIEW 백엔드 모델에 정확하게 기록되어 제어 계산에 참여하고 있음을 나타냅니다. Reset 제어가 활성화되면 모델 변수들은 리셋 로직에 따라 초기 상태로 복구됩니다.

브라우저 측의 실패 및 통신 상태는 그림 13, 그림 14, 그림 15에 나와 있습니다. 그림 13은 Caddy가 실행 중이지 않은 브라우저 접속 실패 사례를 보여줍니다. 브라우저가 http://localhost:8090/motor에 접속을 시도하지만 ERR_CONNECTION_REFUSED 메시지가 표시되며, 이는 로컬 프록시 서비스를 사용할 수 없거나 선택한 접속 포트에서 수신 대기 중이 아님을 나타냅니다. 그림 14는 페이지가 로드된 후 발생한 RIP POST 통신 실패를 보여줍니다. 이 경우, 브라우저 콘솔에 RIP POST 요청에 대한 502 Bad Gateway 오류가 보고되며, 이는 프런트 엔드가 프록시 주소에는 도달했으나 요청이 RIP WebService 백엔드로 성공적으로 전달되지 않았거나 처리되지 않았음을 나타냅니다. 이와 대조적으로, 그림 15는 정상적인 브라우저 측 통신 상태를 보여줍니다. 브라우저 개발자 도구에서 페이지 로딩, RIP POST 요청 및 expId=fan인 활성 SSE 요청이 성공적으로 이루어진 것을 확인할 수 있으며, 이는 웹 프런트 엔드가 Caddy 프록시를 통해 RIP WebService와 통신하고 SSE 채널을 통해 실시간 업데이트를 받고 있음을 나타냅니다.

종합하면, 팬 및 모터의 성공적인 결과와 브라우저 측 진단 결과는 동일한 메타데이터 기반 자동 UI 생성 워크플로가 두 가지 서로 다른 LabVIEW 실험에 대해 재현 가능하다는 것을 입증합니다. 이러한 결과는 또한 성공적인 통신과 대표적인 배포 실패를 구별할 수 있는 관찰 가능한 기준을 제공하며, 이에 상응하는 문제 해결 절차는 고찰 섹션에서 논의됩니다.

LabVIEW VI 다이어그램, RIP 서버, Caddy 프록시; 자동 생성된 웹 UI 프로세스 흐름.
그림 1: 전체 실험 시스템 구조. 시스템은 LabVIEW 백엔드 VI, RIP 서버, Caddy 프록시 및 자동 생성된 웹 UI로 구성된다. LabVIEW VI는 모델 변수를 제공하고, RIP 서버는 VI 메타데이터와 변수 값을 읽으며, Caddy는 액세스 경로를 통합하고 교차 출처 액세스를 해결하고, 웹 UI는 컨트롤을 자동으로 생성한다. Caddy의 이름과 로고는 워크플로우에 사용된 Caddy 웹 서버/프록시 구성 요소를 식별하기 위해서만 표시되었다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

입출력이 포함된 모터 제어 시스템 다이어그램; SpeedRPM 차트; PWM, KMaxRPM 설정; 데이터 분석.
그림 2: 팬 VI의 프런트 패널. 프런트 패널에는 Enable, PWM, Load, Tau, KMaxRPMDisturbance를 위한 입력 컨트롤과 SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentAPowerW를 위한 출력 표시기가 포함되어 있습니다. 이 스크린샷은 저자의 로컬 실험 환경의 LabVIEW 2026에서 fengshan.vi의 프런트 패널을 캡처한 것입니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

속도 분석을 위한 수식 노드, while 루프 및 시프트 레지스터가 포함된 모터 제어 알고리즘 다이어그램.
그림 3: 팬 VI의 블록 다이어그램. 팬 모델은 While 루프, 시프트 레지스터, Enable 로직, 수식 노드 및 출력 표시기로 구현되었습니다. 이 스크린샷은 저자의 로컬 실험 환경의 LabVIEW 2026에서 fengshan.vi의 블록 다이어그램을 캡처한 것입니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

데이터 샘플링을 위한 팬 모델 설정 및 카메라 경로를 보여주는 LabVIEW 구성 인터페이스.
그림 4: fan.vi의 구성 페이지. 팬 실험이 RIP 구성에 실험 이름 fan, 실제 VI 경로, 키워드 정보, 설명 및 샘플링 주파수와 함께 등록되어 있습니다. 이 스크린샷은 저자들의 자체 로컬 실험 환경에서 LabVIEW 2026 및 RIP WebService와 함께 사용된 RIP 구성 인터페이스에서 캡처되었습니다. 제3자 사용자 데이터나 기밀 정보는 포함되어 있지 않습니다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

데이터 초기화를 위한 JavaScript 기반의 메타데이터 기반 UI 로직을 보여주는 코드 블록 다이어그램.
그림 5: XHTML 프런트엔드 파일 내의 실험 ID 설정 및 메타데이터 기반 UI 생성 로직.Visual Studio Code에서 연 Fan_Automatic_UI.xhtml 및 Motor_Automatic_UI.xhtml의 XHTML 코드 스크린샷입니다. 팬과 모터 페이지는 동일한 메타데이터 읽기 및 제어 생성 로직을 사용하며, RIP Configuration의 해당 Name 필드와 일치하도록 실험 ID만 변경되었습니다. XHTML 코드 스크린샷은 저자의 로컬 개발 환경에 있는 Visual Studio Code에서 Fan_Automatic_UI.xhtml 및 Motor_Automatic_UI.xhtml을 열어 캡처하였습니다. 코드 파일은 본 프로토콜을 위해 저자들이 준비하였습니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

리버스 프록시, 라우팅 경로 및 포트 설정 세부 사항을 보여주는 Caddy 서버 구성 다이어그램.
그림 6: Caddyfile 설정. Caddyfile은 로컬 프록시 액세스 포트를 정의하고, 프론트엔드 루트 디렉토리를 설정하며, /fan 및 /motor 경로를 해당 XHTML 파일로 리라이트(rewrite)하고, /RIP/SSE* 및 /RIP* 요청을 LabVIEW/RIP WebService 포트로 리버스 프록시합니다. Caddyfile 설정 스크린샷은 저자들의 로컬 개발 환경에서 Visual Studio Code로 연 Caddyfile을 캡처한 것입니다. Caddyfile은 Caddy를 로컬 웹 서버 및 리버스 프록시로 구성하기 위해 저자들이 작성하였습니다. 제3자 사용자 데이터나 기밀 정보는 포함되어 있지 않습니다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

팬 속도 제어 시뮬레이션 다이어그램; 입력 슬라이더, 출력 디스플레이; 기계 시스템 분석.
그림 7: fan.vi의 웹 UI 페이지. 이 웹 인터페이스 스크린샷은 Mozilla Firefox를 사용하여 저자들이 로컬로 배포한 팬 웹 페이지에서 캡처되었습니다. 프론트엔드 페이지는 RIP 서버에서 반환된 변수 메타데이터를 기반으로 입력 제어 장치와 출력 디스플레이를 자동으로 생성합니다. 이 웹 인터페이스 스크린샷은 Mozilla Firefox를 사용하여 저자들이 로컬로 배포한 팬 웹 페이지에서 캡처되었습니다. 표시된 제어 장치와 출력 필드는 저자들의 로컬 실험 환경에 있는 RIP 메타데이터로부터 생성되었습니다. 제3자 사용자 데이터나 기밀 정보는 포함되어 있지 않습니다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

PID 제어 시스템 다이어그램, 모터 위치 피드백, 입출력 프로세스, 각속도 측정.
그림 8: 모터 VI의 프런트 패널. 프런트 패널에는 Setpoint, Kc, Ti, Td, DisturbanceReset 제어를 위한 컨트롤과 Position, Voltage, Time,Measured angular velocity 표시기가 포함되어 있습니다. 이 스크린샷은 저자의 로컬 실험 환경의 LabVIEW 2026에서 Motor.vi의 프런트 패널을 캡처한 것입니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

전압 제한, 전기적 및 기계적 모델을 포함한 수식과 함께 표시된 PID 제어 시스템 다이어그램.
그림 9: DC 모터 PID 위치 제어 모델 다이어그램. 이 다이어그램은 설정값 오차, PID 제어, 전압 제한, 외란 중첩, 전기적 동특성, 기계적 동특성 및 위치 업데이트에서 피드백으로 이어지는 신호 경로를 보여줍니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

시프트 레지스터, 수식 노드, 위치 피드백을 위한 제어 루프를 보여주는 LabVIEW 프로그램 다이어그램.
그림 10: 모터 VI의 블록 다이어그램. 모터 모델은 While 루프, 시프트 레지스터, 수식 노드, 타이밍 로직 및 출력 표시기로 구현되었습니다. 이 스크린샷은 저자들의 로컬 실험 환경 내 LabVIEW 2026의 Motor.vi 블록 다이어그램에서 캡처되었습니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 여기에서 이 그림의 더 큰 버전을 확인하십시오.

LabVIEW 모터 모델 인터페이스, 시뮬레이션 제어를 위한 경로 설정, 샘플링 구성, 모터 설명.
그림 11: Motor.vi의 구성 페이지. 모터 실험은 RIP Configuration에 실험 이름 Motor, 실제 VI 경로, 키워드 정보, 설명 및 샘플링 주파수와 함께 등록됩니다. 이 스크린샷은 저자들의 로컬 실험 환경에서 LabVIEW 2026 및 RIP WebService와 함께 사용된 RIP Configuration 인터페이스에서 캡처되었습니다. 제3자 사용자 데이터나 기밀 정보는 포함되어 있지 않습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

PID 제어 시스템 시뮬레이션; 분석을 위한 입력 슬라이더 및 출력 표시 지표를 포함하는 다이어그램.
그림 12: Motor.vi의 웹 UI 페이지.프론트엔드 페이지는 DC 모터 PID 위치 제어 실험을 위한 입력 컨트롤과 출력 디스플레이를 자동으로 생성합니다. 이 웹 인터페이스 스크린샷은 Mozilla Firefox를 사용하여 저자의 로컬에 배포된 모터 웹 페이지에서 캡처되었습니다. 표시된 컨트롤 및 출력 필드는 저자의 로컬 실험 환경에 있는 RIP 메타데이터로부터 생성되었습니다. 제3자 사용자 데이터나 기밀 정보는 포함되어 있지 않습니다. 여기를 클릭하여 이 그림의 확대 버전을 확인하십시오.

웹페이지 오류 메시지; localhost 연결 거부됨; 브라우저 문제 해결 옵션.
그림 13: Caddy가 실행 중이지 않을 때의 브라우저 접속 실패. Caddy가 시작되지 않은 경우, 프록시된 로컬 주소 http://localhost:8090/motor에 접속할 수 없으며, 브라우저에 ERR_CONNECTION_REFUSED 메시지가 표시됩니다. 이러한 실패 증상은 로컬 Caddy 프록시 서비스를 사용할 수 없거나 선택한 접속 포트에서 수신 대기 중이지 않음을 나타냅니다. 이 브라우저 스크린샷은 저자의 로컬 테스트 환경에서 Mozilla Firefox를 사용하여 캡처되었으며, 로컬 Caddy 프록시가 실행되지 않았을 때의 접속 실패 상태를 보여줍니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 확대 버전을 보려면 여기를 클릭하십시오.

대학 엠블럼이 포함된 팬 디자인; 브라우저 콘솔 오류 컨텍스트에서 표시됨.
그림 14: 페이지 로딩 후의 RIP POST 통신 실패. 브라우저 콘솔에 RIP POST 요청에 대한 502 Bad Gateway 오류가 표시됩니다. 이 결과는 웹 페이지가 Caddy 프록시 주소에는 도달했으나, 요청이 RIP WebService 백엔드로 성공적으로 전달되거나 처리되지 못했음을 나타냅니다. 이 브라우저 콘솔 스크린샷은 저자의 로컬 배포 환경에서 Mozilla Firefox Developer Tools를 사용하여 캡처되었으며, RIP POST 502 Bad Gateway 통신 실패를 보여줍니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

속도 및 전력 매개변수가 포함된 가상 팬 제어 UI로, 네트워크 활동을 보여주는 대시보드 다이어그램.
그림 15: 정상 작동 시의 브라우저 측 통신 상태. 브라우저 개발자 도구는 성공적인 페이지 로딩, RIP POST 요청, 그리고 expId=fan인 활성 SSE 요청을 보여줍니다. 이러한 요청은 웹 프런트엔드가 Caddy 프록시를 통해 RIP WebService와 통신하며 SSE 채널을 통해 실시간 업데이트를 받고 있음을 나타냅니다. 이 브라우저 개발자 도구 스크린샷은 저자들의 로컬 배포 환경에서 Mozilla Firefox를 사용하여 캡처되었으며, 정상적인 RIP POST 및 SSE 통신을 보여줍니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 더 큰 버전을 보려면 여기를 클릭하십시오.

네트워크 요청 오류 및 변수 로딩 상태를 보여주는 Firefox 개발자 콘솔.
그림 16: 팬 실험에 대한 단일 대표 브라우저 콘솔 및 프로세스 수준 리소스 관찰 결과. 이 스크린샷은 로컬 팬 실험 테스트 중에 기록되었습니다. 콘솔에는 메타데이터 요청/응답 시간, 메타데이터 변수 수, 메타데이터 기반 UI 생성 시간, SSE 연결 개시 시간 및 수신된 SSE 데이터가 표시됩니다. 작업 관리자 뷰는 캡처 당시 브라우저 및 LabVIEW 프로세스의 프로세스 수준 CPU 및 메모리 값을 보여줍니다. 이 값들은 개별 테스트에서의 기술적 관찰 결과이며, 재현된 성능 측정치나 통계적 벤치마크가 아닙니다. 이 스크린샷은 저자들의 로컬 테스트 환경에서 Mozilla Firefox 개발자 도구와 Windows 작업 관리자를 통해 캡처되었습니다. 브라우저 콘솔 출력을 기록하기 위해 Mozilla Firefox를 사용하였으며, 브라우저 및 LabVIEW 프로세스의 CPU 및 메모리 사용량을 관찰하기 위해 Windows 작업 관리자를 사용하였습니다. 제3자 사용자 데이터나 기밀 정보는 포함되지 않았습니다. 이 그림의 확대 버전을 보시려면 여기를 클릭하십시오.

팬 제어 인터페이스; 웹 및 모바일 UI의 SpeedRPM, CurrentA 설정 데이터 동기화 다이어그램.
그림 17: 데스크톱 브라우저와 모바일 브라우저에서 동일한 RIP 기반 웹 페이지에 동시 접속한 모습. 팬 실험 페이지가 PC와 모바일 기기에서 동시에 열려 있으며, 두 클라이언트 모두 자동으로 생성된 제어 항목과 출력 변수를 표시하고 있다. 데스크톱 웹 페이지는 Mozilla Firefox를 통해 접속하였으며, 모바일 웹 페이지는 동일한 로컬 네트워크 환경에서 모바일 브라우저를 통해 접속하였다. 스크린샷은 저자들의 자체 로컬 테스트 환경에서 캡처되었다. 제3자의 사용자 데이터나 기밀 정보는 포함되지 않았다. 이 그림의 더 큰 버전을 보시려면 여기를 클릭하십시오.

변수 이름데이터 유형입력/출력물리적 의미모델 내 역할범위/설정
EnableBoolean입력팬 작동 스위치모델이 PWM 입력을 받을지 여부를 제어합니다. True일 때 u = PWM이며, False일 때 u = 0입니다.True / False
PWMDBL입력구동 입력기본 팬 구동 강도를 결정하며, 정상 상태 속도 SteadyRPM을 계산하는 데 사용되는 주 입력입니다.0-1, step 0.01
LoadDBL입력부하 계수부하가 정상 상태 속도에 미치는 감쇠 효과를 나타냅니다. Load가 증가하면 정상 상태 속도가 감소합니다.0-1, step 0.01
TauDBL입력응답 시간 상수팬 속도가 이전 상태에서 정상 상태 속도에 도달하는 속도를 결정합니다.0.1-5, step 0.1
KMaxRPMDBL입력최대 속도모델에서 허용하는 최대 속도를 설정하며, 속도 제한 및 정규화에 사용됩니다.500-6000, step 100
DisturbanceDBL입력외란 입력외부 외란 또는 부하 변동이 정상 상태 속도, 전류 및 전력에 미치는 영향을 나타냅니다.0-1, step 0.1
SpeedRPMDBL출력실제 속도팬의 현재 출력 속도를 나타내며, 1차 관성 역학을 통해 업데이트됩니다.모델에 의해 계산됨
SteadyRPMDBL출력정상 상태 속도현재 입력 조건에서의 이론적인 정상 상태 속도를 나타냅니다.모델에 의해 계산됨
TimeSDBL출력작동 시간모델의 연속 작동 시간을 나타냅니다.모델에 의해 계산됨
SpeedNormDBL출력정규화된 속도SpeedRPM 대비 KMaxRPM의 비율을 나타냅니다.0-1 또는 모델에 의해 계산됨
CurrentADBL출력전류구동 입력 및 외란 입력에 따라 변하는 추정 모델 전류를 나타냅니다.모델에 의해 계산됨
PowerWDBL출력전력전압 상수와 전류로부터 계산된 추정 모델 전력을 나타냅니다.모델에 의해 계산됨
SetpointDBL입력목표 위치모터가 도달해야 할 위치를 설정하며, 실제 위치 Position과 함께 오차 e를 형성합니다.-3-3, step 0.1
KcDBL입력비례 이득오차에 대한 PID 제어기의 응답 강도를 조정합니다.0-10, step 0.1
TiDBL입력적분 시간PID 제어기의 적분 동작을 조정하며, 정상 상태 오차를 줄이는 데 사용됩니다.0-10, step 0.1
TdDBL입력미분 시간PID 제어기의 미분 동작을 조정하며, 과도하게 빠른 오차 변화를 억제하고 동적 응답을 개선하는 데 사용됩니다.0-5, step 0.1
DisturbanceDBL입력외란 입력모터 입력에 중첩된 외부 외란을 나타내며, 제어 전압과 함께 모터 모델에 작용합니다.0-10, step 0.1
Reset controlBoolean입력제어 리셋모델 상태 초기화를 트리거하여 위치, 각속도, 전류, 오차 및 적분 항이 초기 상태로 돌아가게 합니다.True / False
PositionDBL출력실제 위치모터의 현재 각도 위치를 나타내며, PID 제어를 위한 피드백 변수로 사용됩니다.모델에 의해 계산됨
VoltageDBL출력제어 전압전압 제한 후의 PID 제어기 출력을 나타내며, 모터 입력에 작용합니다.모델에 의해 계산됨; -24에서 24 V로 제한됨
TimeDBL출력작동 시간모터 모델의 연속 작동 시간을 나타냅니다.모델에 의해 계산됨
Measured angular velocityDBL출력측정된 각속도모터의 현재 각속도를 나타내며, 모터의 기계적 상태 출력입니다.모델에 의해 계산됨

표 1: 팬 및 DC 모터 예제에 사용된 입력 및 출력 변수. 이 표는 각 변수 이름, 데이터 유형, 입력/출력 역할, 물리적 의미, 권장 범위 및 단계 크기를 나열합니다.

매개변수물리적 의미모델에서의 역할
R1전기자 저항모터 전기자 회로의 저항 항을 나타내며, 전류 방정식에서 전압 강하 R × im을 결정합니다.
L0.5전기자 인덕턴스전기자 회로의 인덕턴스를 나타내며 전류 변화율을 결정합니다. L값이 클수록 전류 응답 속도가 느려집니다.
J0.01관성 모멘트모터 로터의 각가속도 변화에 대한 저항을 나타내며, 각속도가 얼마나 빠르게 변화하는지를 결정합니다.
b0.1점성 감쇠 계수기계적 감쇠를 나타내며, 회전 중 각속도의 증가를 방해하는 감쇠 토크를 설명합니다.
Kt0.01토크 상수전기자 전류를 전자기적 토크로 변환하는 비례 계수를 나타냅니다.
제시된 텍스트가 없어 번역을 진행할 수 없습니다. 번역할 소스 텍스트를 입력해 주시기 바랍니다.0.01역기전력 상수각속도가 역기전력을 생성하는 비율 계수를 나타내며, 속도가 전류에 미치는 피드백 효과를 설명한다.
최대 반응 속도(Vmax)24최대 제어 전압컨트롤러 출력 전압의 한계를 나타내며, 전압을 -24 V에서 24 V 범위 내로 유지합니다.
제시된 텍스트가 없습니다. 번역할 내용을 제공해 주시기 바랍니다.0.001이산 시뮬레이션 단계각 루프 기반 상태 업데이트의 시간 간격을 나타내며, 전류, 각속도, 위치 및 실행 시간을 업데이트하는 데 사용됩니다.

표 2: DC 모터 PID 위치 제어 모델에 사용된 내부 파라미터. 이 표는 모델에서의 전기적 및 기계적 파라미터, 기호, 수치, 단위 및 역할을 나타냅니다.

보충 코딩 파일: 팬 및 DC 모터 예제를 재현하기 위한 전체 소스 및 설정 파일입니다. 보충 코딩 파일에는 본 프로토콜에 사용된 LabVIEW Formula Node 코드, Caddy 리버스 프록시 설정, XHTML 프론트엔드 파일 및 LabVIEW VI 소스 파일이 포함되어 있습니다. Code in LabVIEW Formula Node.docx에는 팬 및 DC 모터 PID 위치 제어 모델을 위한 Formula Node 코드가 포함되어 있습니다. Caddyfile.txt에는 로컬 웹 서버 및 리버스 프록시 설정이 포함되어 있습니다. Fan_Automatic_UI.xhtml 및 Motor_Automatic_UI.xhtml에는 메타데이터 기반 웹 프론트엔드 로직이 포함되어 있습니다. fengshan.vi 및 Motor.vi는 팬 및 모터 실험을 위한 LabVIEW 백엔드 VI 파일입니다.이 파일을 다운로드하려면 여기를 클릭하십시오.

토론

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

이 프로토콜의 핵심 단계는 LabVIEW 백엔드 VI의 표준화된 구축 및 등록입니다. 프런트 패널(Front Panel)의 컨트롤과 인디케이터는 명확하고 고유한 변수 이름을 사용해야 하며, 데이터 유형은 모델 계산 및 RIP 읽기/쓰기 프로세스에서 기대하는 변수와 일치해야 합니다. 본 프로토콜에서 사용된 두 가지 예시의 경우, 스칼라 수치 변수는 DBL 컨트롤 또는 인디케이터로 정의하고, 불리언 변수는 불리언 컨트롤로 정의합니다. 또한 블록 다이어그램(Block Diagram)은 While 루프, 시프트 레지스터(Shift Register) 및 포뮬러 노드(Formula Node)를 통해 연속적인 상태 업데이트를 유지하여 실행 중에 팬 속도, 모터 위치, 모터 각속도, 전압 및 시간과 같은 변수가 업데이트될 수 있도록 해야 합니다. VI 구축 후, RIP 구성의 실험 이름(experiment Name)은 해당 XHTML 파일에 사용된 실험 ID와 정확히 일치해야 하며, VI 경로(VI Path)는 실제 저장된 VI를 가리켜야 합니다. 웹 프런트엔드는 각 실험의 변수를 하드코딩하지 않고, 대신 RIP 서버가 반환하는 메타데이터에 의존하여 쓰기 가능 변수, 읽기 가능 변수, 데이터 유형 및 수치 속성을 식별하므로 이러한 설정이 매우 중요합니다10,11.

주요 트러블슈팅 문제는 XHTML 실험 ID, RIP 구성, RIP WebService 및 Caddy 프록시 설정 간의 일관성과 관련이 있습니다. XHTML 파일의 실험 ID가 RIP 구성의 실험 이름(experiment Name)과 일치하지 않으면, 웹 페이지에서 올바른 메타데이터를 요청할 수 없으므로 예상되는 컨트롤과 출력 필드를 생성할 수 없습니다. VI 경로가 잘못되었거나 RIP WebService가 시작되지 않은 경우, 웹 페이지는 열릴 수 있으나 LabVIEW 백엔드와 통신할 수 없습니다. Caddy가 실행 중이지 않으면 브라우저가 선택한 로컬 프록시 주소에 액세스할 수 없으며, 그림 13에 표시된 것처럼 ERR_CONNECTION_REFUSED 메시지가 나타날 수 있습니다. Caddy가 실행 중이지만 리버스 프록시 대상이 RIP WebService 포트와 일치하지 않는 경우, 페이지는 로드될 수 있으나 RIP POST 요청이 그림 14와 같이 502 Bad Gateway 오류와 함께 실패할 수 있습니다. /RIP/SSE* 경로가 제대로 작동하지 않으면 페이지가 열리고 컨트롤이 표시될 수 있지만, 출력 값이 실시간으로 업데이트되지 않습니다. 정상적인 작동 상태에서는 그림 15와 같이 브라우저 개발자 도구에 페이지 로딩, RIP POST 요청 및 올바른 실험 ID를 가진 활성 SSE 요청이 성공적으로 표시되어야 합니다. 따라서 트러블슈팅은 실험 ID, VI 경로, RIP WebService 상태, Caddy 실행 상태, 프록시 포트 및 SSE 경로를 확인하는 것부터 시작해야 합니다. 통신이 여전히 비정상적인 경우, RIP WebService와 Caddy를 모두 재시작하거나 브라우저 캐시를 지우거나 다른 브라우저에서 테스트를 반복함으로써 브라우저 특정 동작과 RIP/Caddy 구성 문제 사이의 차이를 구분하는 데 도움이 될 수 있습니다.

본 프로토콜은 팬 속도 모델과 DC 모터 PID 위치 제어 모델 모두에 동일한 구축-등록-배포-검증(build-register-deploy-verify) 워크플로우가 적용되므로 두 가지 예제 모두에서 재현 가능합니다. 특수 툴박스에 대한 의존도를 낮추기 위해, 백엔드 VI는 프런트 패널 컨트롤 및 인디케이터, While 루프, 시프트 레지스터, 포뮬러 노드, 그리고 표준 스칼라 숫자 및 불리언 변수를 포함한 기본 LabVIEW 구조를 사용하여 재구성되었습니다. 하지만 LabVIEW 버전, Windows 설치 상태 및 로컬 네트워크 환경 전반의 재현성은 파일 경로, 액세스 권한, 로컬 포트, 서비스 시작 명령 및 브라우저 동작과 같은 구성 세부 사항에 따라 달라질 수 있습니다. 이 워크플로우는 하드웨어 관련 원격 실험으로 확장될 수 있으나, 이 방법을 웹 측에서의 직접적인 하드웨어 인식으로 해석해서는 안 됩니다. 웹 프런트엔드는 RIP 메타데이터를 통해 LabVIEW 프런트 패널의 컨트롤과 인디케이터를 식별합니다. 따라서 센서, 액추에이터, 계측기 또는 공정 제어 장치는 적절한 하드웨어 드라이버, 데이터 수집 모듈, 계측기 제어 모듈 또는 기타 하드웨어 적응 메커니즘을 통해 LabVIEW 백엔드 VI에서 먼저 연결 및 처리되어야 합니다. 하드웨어 측정값과 제어 명령이 프런트 패널 인디케이터 및 컨트롤에 매핑되면, RIP 기반의 웹 프런트엔드는 본 프로토콜에서 사용된 시뮬레이션 변수와 동일한 방식으로 이러한 변수들을 인식할 수 있습니다. 이전의 LabVIEW 기반 원격 실험실 연구들은 LabVIEW가 원격 제어 공학 실험, 로봇 실험, 공정 제어 장비, 센서 데이터 수집 및 물리적 장치 상호작용을 위한 백엔드 환경으로 사용될 수 있음을 보여주었습니다9,12,17,18,19,20.

그림 16은 로컬 팬 실험 중에 기록된 단일 대표 구현 사례를 보여줍니다. 프런트엔드 코드는 메타데이터 요청/응답 시간, 메타데이터 변수 개수, 메타데이터 기반 UI 생성 시간, SSE 연결 개시 시간 및 수신된 SSE 데이터를 기록하도록 도구화되었습니다. 이 사례에서 브라우저 콘솔은 68.00 ms의 메타데이터 요청/응답 시간을 보고했으며, RIP 메타데이터에서 7개의 쓰기 가능 변수와 7개의 읽기 가능 변수를 식별하였고, 이에 해당하는 UI 요소를 2.00 ms 만에 생성하였으며, 16.00 ms 만에 SSE 연결을 개시했습니다. 반복된 SSE 데이터 항목을 통해 SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentAPowerW와 같은 출력 변수들이 LabVIEW 백엔드로부터 지속적으로 수신되었음을 확인했습니다. 동일한 로컬 테스트 상태의 작업 관리자 뷰에서는 Firefox 프로세스의 CPU 사용률이 약 1.5%, 메모리 점유율이 391.7 MB로 나타난 반면, LabVIEW 프로세스는 캡처 시점에 CPU 사용률 0%, 메모리 점유율 9.2 MB를 보였습니다. 이러한 관찰 결과는 로컬 배포 환경에서 메타데이터 검색, 메타데이터 기반 UI 생성, RIP/SSE 통신 및 프로세스 수준의 CPU 오버헤드를 관찰할 수 있다는 기초적인 근거를 제공합니다. 다만, 이 데이터는 종합적인 성능 벤치마크가 아닌 구현 수준의 검증을 목적으로 합니다. 다양한 브라우저, 반복 실험, 더 많은 변수 부하, 물리적 하드웨어 및 다수의 동시 사용자를 대상으로 한 체계적인 성능 평가는 향후 과제로 남아 있습니다.

이 방법은 특히 복잡한 데이터 구조, 하드웨어 실험 및 다중 사용자 운영으로 확장할 때 한계가 있습니다. 현재의 워크플로우는 스칼라 수치 및 Boolean 입력/출력 변수에 가장 적합합니다. 복잡한 배열, 클러스터, 중첩된 데이터 구조, 차트 관계 또는 도메인 특화 시각화에 대해 완전한 자동 지원을 제공하지는 않습니다. 이러한 경우에는 추가적인 메타데이터 매핑 규칙이나 수동으로 작성된 프런트엔드 컴포넌트가 필요할 수 있습니다. 자동 생성된 UI는 변수 메타데이터로부터 기본적인 제어 장치와 디스플레이를 생성할 수 있지만, 변수 간의 물리적 관계를 완전히 추론하거나 가장 적절한 시각화를 선택하거나 실험 특화 안전 상호작용을 설계할 수는 없습니다. 워크플로우를 실제 장비로 확장할 때는 하드웨어 드라이버, 장치 보정, 샘플링 제약, 액추에이터 한계, 비상 정지 로직, 인증 및 다중 사용자 쓰기 제어 메커니즘을 포함한 추가 고려 사항이 필요합니다. 현재의 배포 환경은 동일한 로컬 네트워크 환경 내에서 표준 웹 브라우저를 통해 여러 클라이언트 장치로 접속할 수 있습니다. 그림 17에서 보듯이, 동일한 팬 실험 페이지가 데스크톱 브라우저와 모바일 브라우저에서 동시에 열렸으며, 두 클라이언트 모두 자동 생성된 제어 장치와 이에 상응하는 출력 변수를 표시했습니다. 이러한 관찰 결과는 동일한 실험 페이지를 보고 상호작용하기 위한 기본적인 동시 다중 클라이언트 접속이 가능함을 나타냅니다. 그러나 현재의 구현에는 전용 사용자 인증, 제어 잠금, 동시 쓰기 중재, 쓰기 큐 또는 충돌 해결 메커니즘이 포함되어 있지 않으므로, 이를 완전한 다중 사용자 제어 프레임워크로 해석해서는 안 됩니다. 이러한 한계는 복잡하거나 협업적인 원격 실험실의 경우 일반적으로 실험 특화 인터페이스 설계, 동기화 메커니즘, 안전 제약 및 사용자 관리 로직이 필요하다는 이전의 원격 실험실 연구들과 일치합니다13,14,15,16,17.

이 프로토콜의 방법론적 가치는 새로운 RIP 아키텍처를 도입하거나 RIP가 지원하는 데이터 유형을 확장하는 데 있는 것이 아닙니다. 그 대신, 기설정된 RIP 기반 자동 UI 생성 메커니즘을 다양한 LabVIEW 시스템에 적용하기 위한 완전하고 재현 가능한 구현 경로를 제공하는 데 가치가 있습니다. 각 실험마다 맞춤형 웹 인터페이스를 작성하는 것과 비교했을 때, 백엔드 VI가 호환 가능한 변수를 노출하는 경우8,9,10,11 이 워크플로우는 기본 제어 레이아웃, 변수 바인딩 및 읽기/쓰기 통신 로직의 반복적인 구현을 줄여줍니다. 따라서 이 프로토콜은 공학 교육, 원격 실험실 개발, 그리고 브라우저 기반의 파라미터 조정 및 실시간 상태 모니터링이 필요한 저위험 시뮬레이션 또는 교육용 실험의 신속한 배포에 유용합니다. 향후 연구에서는 이 워크플로우를 더 복잡한 데이터 구조, 물리적 실험 장치, 공식적인 다중 사용자 액세스 제어, 그리고 인터페이스 생성 시간, 통신 지연 시간, 동기화 안정성, 서버 부하, CPU 오버헤드 및 프런트엔드 사용성을 포함한 정량적 성능 평가로 확장해야 합니다.

공개 사항

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

저자들은 언어 교정 목적으로만 AI 보조 도구를 사용하였습니다. 모든 과학적 내용, 실험 절차, 소프트웨어 구현, 도표, 결과, 해석 및 최종 문구는 저자들에 의해 검토, 수정 및 승인되었습니다. 실험 데이터를 생성하는 데 AI 도구는 사용되지 않았습니다.

감사의 글

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

본 연구는 우한 대학교의 학부 혁신 교육 프로그램의 지원을 받아 수행되었습니다.

재료

이 논문에 사용된 재료 목록
이름회사카탈로그 번호댓글
Caddy 프록시 서버CaddyN/AWeb UI를 제공하고 /RIP 요청을 RIP WebService로 전달하는 데 사용되는 리버스 프록시
Caddyfile저자 작성N/ARIP 통신을 위한 정적 파일 경로 및 리버스 프록시 경로를 정의함
Fan_Automatic_UI.xhtml저자 작성N/A팬 실험을 위한 메타데이터 기반 Web 프런트 엔드
LabVIEWNational Instruments2026fengshan.vi 및 Motor.vi를 구축하고 실행하는 데 사용되는 소프트웨어
Microsoft Windows 운영 체제MicrosoftWin11LabVIEW, RIP WebService, Caddy 및 브라우저를 실행하는 데 사용되는 운영 체제
Motor_Automatic_UI.xhtml저자 작성N/A모터 실험을 위한 메타데이터 기반 Web 프런트 엔드
Mozilla Firefox 데스크톱 브라우저Mozilla2026Web UI 접속, 개발자 도구, 타이밍/리소스 관찰 및 네트워크/콘솔 스크린샷 촬영에 사용되는 데스크톱 브라우저
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewRIP POST 요청을 수신하고 브라우저 프런트 엔드에서 사용하는 WebService 통신 계층을 제공함
Windows 작업 관리자MicrosoftWindows 내장브라우저 및 LabVIEW 프로세스의 프로세스 수준 CPU 및 메모리 관찰 내용을 기록하는 데 사용됨

참고문헌

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 논문의 텍스트 또는 그림 재사용 허가 요청

허가 요청

태그

UIRIPCaddyPID
동영상 곧 제공

관련 논문