NI 하드웨어 및 소프트웨어로 Real-Time 시스템 구축하기

개요

NI Real-Time 하드웨어와 소프트웨어는 긴밀하게 연동되어 정확한 타이밍에 어플리케이션을 안정적이고 결정론적으로 확실하게 실행합니다. 이 문서에서는 NI Real-Time 시스템을 생성하는 데 필요한 다양한 구성요소를 설명하고 사용 가능한 하드웨어와 소프트웨어 옵션을 확인하며 프로젝트에 가장 적합한 옵션을 선택하는 방법을 간략하게 설명합니다.

NI Real-Time 시스템을 구축하려면 개발 소프트웨어와 하드웨어 플랫폼을 모두 선택해야 합니다. 각 옵션에 대한 자세한 정보는 다음 섹션을 확인하십시오. 이 백서를 읽기 전에 Real-Time 시스템의 기본은 물론 Real-Time 시스템 구축이 프로젝트에 어떤 이점이 있는지 이해하는 것이 좋습니다. Real-Time 시스템이 필요한가요?를 읽고 이 정보를 검토하십시오.

Real-Time 시스템을 구축할 때 Real-Time 작동이 가능한 OS를 선택해야 합니다. NI Real-Time 개발 도구는 필요한 모든 Real-Time OS (RTOS) 소프트웨어와 함께 제공되므로 이 구성요소를 별도로 선택할 필요가 없습니다. NI는 하드웨어 플랫폼에 따라 NI Linux Real-Time OS 또는 Phar Lap ETS OS를 사용합니다. 

개발 환경 선택

Real-Time 프로그램을 개발하기 위해 LabVIEW 그래픽 프로그래밍, LabWindows™/CVI ANSI C 환경 (Phar Lap용) 또는 원하는 Linux 호환 C/C++ 개발 환경 (NI Linux Real-Time용)을 사용할 수 있습니다.

개발 옵션: LabVIEW Real-Time 그래픽 프로그래밍

그림 1. LabVIEW를 사용한 그래픽 프로그래밍

NI가 지원하는 Real-Time 하드웨어를 그래픽으로 프로그래밍하려면 LabVIEW를 LabVIEW Real-Time Module과 함께 사용해야 합니다. LabVIEW Real-Time을 사용하면 신뢰할 수 있는 하드 Real-Time 어플리케이션을 생성하고 하드웨어에 다운로드한 다음 하나의 도구로 사용하여 디버깅하고 실행할 수 있습니다.

여러 가지 PID(Proportional Integral Derivative) 컨트롤 함수를 비롯하여 LabVIEW와 함께 제공되는 대부분의 내장된 수학 및 신호 처리 알고리즘을 리얼타임 어플리케이션에서 사용할 수 있습니다. 또한 MATLAB 노드를 사용하여 리얼타임 시스템에서 텍스트 수학 스크립트를 실행하거나 MathWorks, Inc. Simulink® 소프트웨어에서 생성한 모델 또는 LabVIEW Model Interface Toolkit 옵션을 사용하여 기타 모델링 환경에서 생성한 모델을 통합할 수 있습니다.

LabVIEW Real-Time: 어플리케이션 개발, 다운로드, 실행

LabVIEW에서 Real-Time 어플리케이션을 개발할 경우, LabVIEW 프로젝트 탐색기를 사용하여 프로그램 (VI)을 구성하고 프로그램이 실행될 하드웨어를 할당합니다. 범용 Windows 호스트 컴퓨터에서 코드를 개발한 다음 이더넷을 연결하거나 USB를 연결하여 Real-Time 하드웨어에 배포합니다.

 

그림 2. LabVIEW 프로젝트 탐색기를 사용하여 LabVIEW 프로그램 (VI)을 관리하고 Real-Time 타겟에 할당합니다.

LabVIEW에서 Real-Time 프로그램을 개발하는 것은 PC용 표준 LabVIEW 어플리케이션을 개발하는 것과 거의 비슷합니다. Real-Time VI 팔레트에는 다음을 포함하여 Real-Time 시스템과 관련된 몇 가지 추가 함수가 포함되어 있습니다.

  • 프로그램 실행이 중지된 경우 일부 하드웨어 타겟을 자동으로 다시 시작하는 워치독 함수
  • Real-Time 프로그램의 부분들 간에 데이터를 결정론적으로 통신하는 함수
  • 여러 CPU 코어가 있는 시스템에서 로드 밸런싱을 설정하는 유틸리티
  • Real-Time 프로그램에서 루프 실행을 정밀하게 제어하는 타이밍 함수

하드웨어에서 LabVIEW Real-Time 코드를 테스트하려면 실행 화살표를 클릭하면 됩니다. 그러면 어플리케이션이 Real-Time 하드웨어에 배포되고 실행이 시작됩니다. Real-Time 프로그램이 Real-Time 타겟에서 실제로 실행되고 있는 경우에도 개발 컴퓨터에서 하이라이트 실행, 단일 단계별 실행, 브레이크포인트와 같은 표준 NI 디버깅 도구를 사용할 수 있습니다.

Real-Time 프로그램을 완성하면 LabVIEW에서 실행 파일을 빌드하고 시작 어플리케이션으로 Real-Time 하드웨어에 다운로드할 수 있습니다. Real-Time 하드웨어를 재부팅하면 프로그램이 자동으로 안정적인 독립 실행형으로 실행됩니다.

LabVIEW Real-Time: 병렬 코드 섹션 및 멀티코어 처리에 우선순위 할당하기

LabVIEW의 데이터 흐름 프로그래밍 모델을 사용하면 텍스트 기반 프로그래밍 언어의 순차적 아키텍처에 국한될 필요가 없습니다. 실행 순서는 노드 간 데이터 흐름에 따라 결정되기 때문에 여러 연산을 병렬로 실행하는 어플리케이션을 쉽게 생성할 수 있습니다. 또한 LabVIEW를 사용하면 Timed 루프 구조를 사용하여 스레드 우선순위를 쉽게 할당할 수 있습니다. 아래와 같이 각 루프에는 설정 가능한 타이밍 소스, 주기, 우선순위 등이 있습니다.

그림 3. LabVIEW Timed 루프 구조를 사용하여 다른 코드 섹션의 우선순위와 프로세서 할당을 지정합니다. 

LabVIEW Real-Time은 멀티코어 처리를 지원하고 코드의 병렬 섹션을 개별 OS 스레드에 자동으로 맵핑하므로 수동으로 생성하고 관리할 필요가 없습니다. 또한 기본적으로 이러한 스레드는 Real-Time 하드웨어에서 사용 가능한 CPU 전체에 걸쳐 자동으로 밸런싱됩니다.

Real-Time 시스템의 성능과 신뢰성을 더 향상시키려면, 원하는 경우 Timed 루프가 특정 프로세서 코어에 수동으로 할당되도록 선택할 수 있습니다. 예를 들어, 프로세서의 코어 하나를 타이밍 결정성 높은 하나의 루프에 할당하고 이를 다른 코어에서 실행되는 덜 중요한 작업과 분리할 수 있습니다.

문제 해결 옵션: Real-Time Trace Viewer로 디버깅하기

고급 멀티코어 디버깅의 경우, Real-Time Trace Viewer를 사용하여 코드 실행을 정지하거나 일시 정지하지 않고 LabVIEW 또는 LabWindows/CVI Real-Time 프로그램의 성능을 확인할 수 있습니다. Real-Time 코드를 최소한으로 수정하여 어플리케이션 성능을 파일에 기록하고 호스트 컴퓨터로 전송하여 확인하고 분석할 수 있습니다. Trace Tool Viewer는 멀티스레드 코드 실행을 그래픽으로 표시하는 동시에 스레드 스왑, 상호 배제, 메모리 할당을 강조 표시합니다. Real-Time Trace Viewer를 사용하면 원하지 않는 실행 특성과 찾기 어려운 경쟁 조건을 파악하여 어플리케이션 성능을 최적화할 수 있습니다.

C 및 C++용 개발 옵션

조직에서 C 또는 C++로 표준화하는 경우, LabWindows/CVI 개발 환경 또는 기타 개발 환경을 사용할 수 있습니다. LabWindows/CVI Real-Time은 Real-Time PXI 컨트롤러만 지원하지만, CompactRIO 컨트롤러와 같이 NI Linux Real-time을 사용하는 타겟은 오픈 소스이므로 원하는 개발 도구를 사용할 수 있습니다. Linux Real-Time용 C/C++ Development Tools 사용에 대한 자세한 사항은 NI Linux Real-Time용 C/C++ 개발 시작하기를 참조하십시오.

NI 하드웨어 플랫폼 및 I/O 모듈 선택하기

모든 NI Real-Time 하드웨어 플랫폼은 공통 아키텍처를 기반으로 합니다. 즉, LabVIEW Real-Time으로 작성한 프로그램은 약간 수정하거나 전혀 수정하지 않고도 여러 NI 하드웨어에서 작동합니다. 특히 각 하드웨어 플랫폼은 프로세서, RAM, 비휘발성 스토리지, I/O 버스 인터페이스를 비롯한 기성 컴퓨팅 구성요소를 갖추고 있습니다. 일부 하드웨어 플랫폼에는 LabVIEW FPGA Module을 사용하여 프로그래밍할 수 있는 사용자 프로그래밍 가능 FPGA가 있습니다.

PXI (PCI Extensions for Instrumentation: 계측용 PCI 확장)

업계 표준 PXI 플랫폼은 타이밍과 트리거링 라인이 통합된 견고한 섀시, 임베디드 컨트롤러 및 플러그인 I/O 모듈로 구성됩니다. 시리얼, USB, 기가비트 이더넷, GPIB 포트도 컨트롤러에 내장되어 있습니다. PXI Real-Time 하드웨어는 LabVIEW Real-Time 또는 LabWindows/CVI Real-Time을 사용하여 프로그래밍할 수 있습니다.

Windows를 실행하는 기존 PXI 컨트롤러를 Real-Time 컨트롤러로 변경하려는 경우, LabVIEW Real-Time 배포 라이센스를 구입하여 컨트롤러를 변환하거나 듀얼 부팅 시스템을 설정할 수 있습니다.

온라인 PXI Advisor를 사용하여 컨트롤러, 섀시, I/O 모듈, 소프트웨어가 포함된 자체 PXI Real-Time 시스템을 조립할 수 있습니다.


그림 4. PXI 하드웨어는 Real-Time 프로젝트를 위한 견고한 고성능 옵션을 제공합니다.

NI PXI 하드웨어는 전자 컨트롤 유닛의 HIL (hardware-in-the-loop) 테스트와 머신 상태 모니터링 어플리케이션용 진동 분석과 같은 고성능 Real-Time 시스템에 사용되기도 합니다. Real-Time PXI 시스템을 사용하는 경우, 어플리케이션에서 정밀한 I/O 트리거링과 다중 모듈 동기화를 단순화하는 고급 타이밍 및 동기화 하드웨어 기능을 사용할 수 있습니다.

CompactRIO

CompactRIO는 Real-Time 프로세서, FPGA, C 시리즈 I/O 모듈을 결합하며 패키지화된 보드 레벨 폼 팩터로 제공됩니다. 또한 시리얼, USB, 이더넷 포트가 컨트롤러에 내장되어 있습니다.

온라인 CompactRIO Advisor를 사용하여 컨트롤러, I/O 모듈, 소프트웨어가 포함된 CompactRIO 시스템을 조립할 수 있습니다.

 

그림 5. 패키지화된 CompactRIO 컨트롤러는 Real-Time 어플리케이션을 위한 유연하고 견고하며 이동 가능한 옵션을 제공합니다.

LabVIEW Real-Time 또는 C/C++ 개발 도구를 사용하여 CompactRIO 컨트롤러에서 프로세서를 프로그래밍할 수 있습니다. LabVIEW FPGA를 사용하여 FPGA 코드를 개발할 수도 있습니다. 프로세서의 IO 데이터에 접근하기 위해 NI-DAQmx API, NI의 동급 최고 측정용 프로그래밍 API 또는 NI 스캔 엔진을 사용할 수 있습니다. 또는 LabVIEW FPGA를 사용하여 FPGA에서 직접 데이터에 접근할 수 있습니다. 

 

그림 6. CompactRIO의 이기종 아키텍처는 Real-Time 프로세서, 재구성 가능 FPGA 및 I/O를 갖추고 있습니다.

CompactRIO 하드웨어는 상태 모니터링, HIL (hardware-in-the-loop) 테스트, 물리적 시스템 테스트 및 머신 컨트롤 등 산업용 어플리케이션에 자주 사용됩니다.

sbRIO (CompactRIO 단일 보드 컨트롤러)와 같은 CompactRIO 보드 레벨 컨트롤러는 패키지화된 CompactRIO 컨트롤러와 동일한 아키텍처를 가지나 견고한 시스템 패키지가 없으며 폼 팩터가 더 작습니다.

그림 7. CompactRIO 보드 레벨 컨트롤러는 패키지화된 CompactRIO 컨트롤러와 동일한 아키텍처를 가지나 폼 팩터가 더 작습니다.

유연성, 신뢰성, 고성능이 요구되는 대용량 어플리케이션을 사용하면서도 sbRIO (CompactRIO 단일 보드 컨트롤러) 또는 SOM (System on Module)의 이점을 누릴 수 있습니다.