본문 바로가기
Engineering

[cRIO] 3. Choosing a cRIO Programming Mode

by 투썬 아빠 2013. 2. 21.



 

cRIO를 처음 접하면 가장 생소한 것이 Real-Time Contrlloer와 FPGA의 관계입니다. 이는 '[cRIO] 1. cRIO Architecture'에서 간략히 설명하였습니다. 그렇다면 이제는 cRIO를 이용한 프로그래밍 방법에 대해 알아보겠습니다.

 

이 내용들은 NI에서 제공하는 'NI LabVIEW for CompactRIO Developer's Guide'를 바탕으로 함을 미리 알려드립니다.

 

cRIO를 이용한 프로그래밍 방법은 크게 2가지로 구분 됩니다.

<그림 1 cRIO의 프로그래밍 모드>

 

1. LabVEW FPGA Interface Mode

FPGA Interface를 이용하면 사용하고자 하는 I/O를 직접 프로그래밍 하여야 합니다. 즉, FPGA vi를 구성하여 사용할 I/O를 하나씩 정의하는 것입니다. Scan Interface에 비하여 상대적으로 사용이 어려운 면은 있지만 FPGA의 성능을 그대로 사용할 수 있기 때문에 프로그래밍 방법에 따라 최고의 I/O 접근 속도를 보입니다.

      

2. RIO Scan Interface Mode

 이는 FPGA가 아닌 Real-Time Processor를 프로그래밍 하는 것입니다. 이 모드는 NI에서 미리 정의된 FPGA 메모리 맵을 이용하는 것입니다. 미리 정의 된 I/O의 메모리 맵을 주기적으로 스캔하면서 I/O의 데이터를 사용하는 정도로 이해하시면 됩니다. 때문에 별도의 FPGA 프로그래밍 없이 RIO 제품의 I/O 및 샤시에 연결된 모듈을 사용할 수 있습니다. 하지만 FPGA Interface를 사용할 때에 비하여 느린 속도로 I/O에 접근합니다.


요약하자면 FPGA 프로그래밍 없이 I/O를 사용하는 방법이 Scan Interface입니다. 이와 반대로 FPGA를 프로그래밍 하여 I/O를 사용하는 방법이 FPGA Interface입니다.

 


 1. LabVIEW FPGA Interface를 사용하는 경우

LabVIEW FPGA를 이용하여 고속 데이터 수집, 제어, 타이밍 및 트리거링을 만들 수 있습니다. 뿐만 아니라 RT Procesor와 함께 사용도 가능합니다. 일반 적으로 아래의 경우 FPGA Interface를 사용합니다.


  

<그림 2 LabVIEW FPGA를 이용하여 FPGA를 직접 정의할 수 있습니다.>

 

1. Maximum Performance and Reliability

 개발하는 어플리케이션을 FPGA로 컴파일하여 사용하면 작성한 S/W 코드가 하드웨어적으로 구현이 됩니다. 또한 완벽한 병렬처리가 가능하기 때문에 최적의 속도와 응답성을 가집니다. 그 이유는 FPGA 칩은 OS를 바탕으로 동작하는 것이 아니기 때문입니다. 즉, S/W 타이밍이 아닌 H/W의 전기적 신호로 동작하는 것입니다.

  

2. High-Speed Waveform Acquisition/Generation ( > 500 Hz )

 RIO Scan Interface는 500Hz 이하의 루프 컨트롤이 가능하도록 되어 있습니다. 하지만 많은 C시리즈 모듈은 Scan Interface의 속도 보다 빠른 수집 및 생성 성능을 가지고 있습니다. 만약 사용하는 모듈의 성능을 최대로 적용 하고자 할 경우에는 LabVIEW FPGA를 이용하여 직접 정의 하여야 합니다.


3. Hardware-Based Analysis/Generation and Coprocessing

 보편적으로 cRIO를 이용한 데이터 수집 및 분석을 할 경우 FPGA를 이용하여 데이터를 수집하고 이를 RT Processor에서 분석을 합니다. 분석할 데이터의 양이 많을 경우 만약 RT Processor에서 모든 것을 처리하게 되면 CPU 사용량이 증가하면서 다른 작업 및 연산에 영향을 미칠 수 있습니다. (2. Designing a cRIO Software Architecure의 <그림 3 Process 동작 시간의 중요성> 참고) 이런 경우 FPGA영역에서 수집된 데이터를 분석하도록 구성하면 시스템의 성능을 향상시킬 수 있습니다.


4. Highest Performance Control

 FPGA는 고속 수집 및 생성에만이 아니며, 다양한 제어 알고리즘을 구성하는데 사용할 수 있습니다. 즉, PID 제어와 같은 정시성이 보장 되어야하는 제어를 FPGA를 이용하여 할 수도 있는 것입니다.


 이처럼 FPGA는 다양한 경우에 사용이 가능하며, 시스템의 성능을 극대화 하는데 중요한 역할을 합니다. 실제 FPGA를 사용하는 것은 추후에 이야기 하도록 하겠습니다.



2. RIO Scan Interface를 사용하는 경우

 RIO Scan Interface를 이용하면 단일 I/O에 접근 하는데, 수백 Hz의 속도를 사용할 수 FPGA 코드를 작성할 필요가 없습니다. RT환경에서 이미 정의된 I/O 메모리 맵을 Scan Engine이 Scan하여 사용하는 것입니다. 이 때 RT VI에서는 각 I/O를 변수형태로 접근하여 사용하며 Scan 타이밍마다 변수(I/O)의 값을 읽거나 씁니다. 앞서 언급한 바와 같이 FPGA Interface에 비해 느린 속도를 가지기 때문에 500Hz 이상의 루프속도를 필요로 한다면 FPGA Interface를 이용 하시기 바랍니다.

  

<그림 4 RIO Scan Interface구성요소에 대한 블록다이어그램>

 

 RIO Scan Interface를 사용하기로 한다면, 필요한 성능이나 루프 타이밍 그리고 사용할 I/O의 채널 수 등을 고려해야 합니다. 아래 그림은 RIO Interface를 이용한PID와 AI, AO를 각각 1채널씩 사용할 때 채널 개수 대비 CPU 사용량을 보여줍니다. 100Hz 속도 이상으로 처리를 할 경우 CPU 사용량이 급증하는 것을 볼 수 있습니다. 때문에 RIO Scan Interface는 500Hz이하로 사용하는 것이 바람직하면 그 이상의 경우 FPGA로 처리하는 것이 좋습니다.

<그림 5 AI + PID + AO의 FPGA 와 RIO Interface간의 벤치마킹>

     

 이처럼 RIO Scan Interface가 고속의 데이터 수집 및 제어에는 적합하지 않지만 다양한 장점을 가지고 있습니다.

●프로그래밍의 편리 : 사용할 I/O를 드래그 & 드롭 함으로써 LabVIEW RT Vi에서 개발이 가능합니다. 

I/O 모듈을 동적으로 인식 : 사용하고자 하는 C 모듈이 프로젝트에서 미리 설정되지 않더라도, 추 후에 연결함으로써 모듈을 인식할 수 있습니다.

진단 및 디버깅 : 배포된 시스템 관리자를 통해 프로그램이 동작하는 중에도 현재의 I/O 값을 확인할 수 있습니다.

 

모든 cRIO 하드웨어가 RIO Scan Interface를 지원하는 것은 아닙니다. 또한 몇몇 C 시리즈 모듈의 경우 반드시 FPGA로 사용해야하는 것도 있습니다. 이는 'NI C Series Module Compatibility Chart'를 참고하시기 바랍니다.



3. RIO Scan Interface 사용하기

 cRIO를 이용하여 Scan Interface 개발 환경을 만드는 방법은 첨부파일을 참고하시기 바랍니다. 


Compact RIO를 이용하여 Scan Engine 프로젝트 생성하기.pdf


 Scan Interface 개발환경을 구축하면 현재 cRIO에 연결되어 있는 C 모듈들이 프로젝트에 함께 나타납니다. 각 모듈에는 사용할 수 있는 I/O들이 변수형태로 있습니다. 이를 RT vi로 드래그 & 드롭 함으로써 사용할 수 있습니다.

   

 

<그림 6 모듈의 IO 변수를RT vi의 블록다이어그램으로 사용 가능>

 

 또한 Scan Engine은 Timed-Loop의 클럭 소스로 제공이 됩니다. Scan Engine에 동기화를 선택하시면 해당 Timed-Loop는 Scan Engine 타이밍에 으로 동작하며 I/O 업데이트 타이밍과 동기화 됩니다.

<그림 7 Scan Engine을 TImed-Loop의 타이밍 소스로 선택>


4. Hybrid Mode로 사용하는 경우

 cRIO를 이용하여 시스템을 개발할 때, 항상 FPGA Interface 혹은 Scan Interface만을 사용하는 것은 아닙니다. 경우에 따라 두  가지 모드를 혼합하여 사용할 필요도 있습니다. 대표적인 예는 C 시리즈의 모션 모듈은 Scan Interface를 이용하고 데이터 수집 모듈은 FPGA Interface를 이용할 때입니다. 이처럼 FPGA Interface와 Scan Interface를 함께 사용하는 것을 Hybrid Mode라고 합니다.

 

<그림 8 Hybrid Mode의 구성>

 Hybrid Mode프로젝트를 구성하는 방법은 'How Can I Use Scan Engine and FPGA Simultaneously on a CompactRIO(Hybrid Mode)?'문서를 참고하기 바랍니다. Hybrid 모드를 이용할 때 가장 중요하게 고려할 것은 Scan Interface를 사용하기 위해 3개의 DMA FIFO가 사용되는 것입니다. 때문에 사용하는 cRIO에 충분한 DMA FIFO가 남아있는지 확인을 하여야 합니다.

 

 

 지금까지 cRIO의 프로그래밍 모드와 어떤 경우에 각 모드를 사용하는지에 대해 알아보았습니다. 다음 장에서는 LabVIEW Real-Time 어플리케이션 개발에 대해 알아보겠습니다.


댓글