이 콘텐츠를 보려면 JoVE 구독이 필요합니다. 로그인하거나 오늘 무료 평가판을 시작하세요.

방법 논문

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

189 조회수

⸱

DOI:

10.3791/72765

⸱

2026년 8월 14일

이 논문에서

요약

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

초록

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

서론

원격 실험, 온라인 교육 및 사물인터넷(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.

액세스가 제한되었습니다. 이 콘텐츠를 보려면 로그인하거나 체험판을 시작하세요.

프로토콜

다음 워크플로에 요약된 절차에 따라, 두 개의 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을 클릭하여 ~인지 확인하십시오. 위치, 전압, 측정된 각속도, 그리고 관련 내부 상태는 리셋 로직에 따라 초기 상태로 돌아갑니다.

액세스가 제한되었습니다. 이 콘텐츠를 보려면 로그인하거나 체험판을 시작하세요.

결과

위에서 설명한 워크플로우를 완료하면, 자동으로 생성된 웹 프런트 엔드를 통해 팬 실험과 DC 모터 PID 위치 제어 실험 모두에 접속할 수 있습니다. 성공적인 결과는 세 가지 관찰 사항으로 확인할 수 있습니다. 첫째, 웹 페이지가 RIP 서버에서 반환된 변수 메타데이터에 따라 입력 제어 항목과 출력 표시 필드를 자동으로 생성합니다. 둘째, 사용자가 웹 페이지에서 입력 변수를 변경하면 수정된 값이 RIP 인터페이스를 통해 LabVIEW 백엔드 VI에 기록됩니다. 셋째, 백엔드 VI에서 계산된 출력 변수가 RIP를 통해 반환되어 웹 페이지에 실시간으로 업데이트됩니다. 팬 실험의 경우, 브라우저에 http://localhost:8090/fan을 입력하면 그림 7에 표시된 것처럼 RIP 메타데이터를 기반으로 입력 제어 항목과 출력 필드가 페이지에 자동으로 생성됩니다. 입력 측에는 Enable, PWM, Load, Tau, KMaxRPM, 및 Disturbanc...

액세스가 제한되었습니다. 이 콘텐츠를 보려면 로그인하거나 체험판을 시작하세요.

토론

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

액세스가 제한되었습니다. 이 콘텐츠를 보려면 로그인하거나 체험판을 시작하세요.

공개 사항

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

감사의 글

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

액세스가 제한되었습니다. 이 콘텐츠를 보려면 로그인하거나 체험판을 시작하세요.

재료

이 논문에 사용된 재료 목록
이름회사카탈로그 번호댓글
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 및 메모리 관찰 내용을 기록하는 데 사용됨

참고문헌

  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.

액세스가 제한되었습니다. 이 콘텐츠를 보려면 로그인하거나 체험판을 시작하세요.

재인쇄 및 허가

태그

웹 사용자 인터페이스자동 UI 생성가상 악기RIP 서버 설정리버스 프록시Caddy 프록시PID 위치 제어가변 메타데이터

이 논문이 게재되었습니다

동영상 곧 제공