NI CompactRIO 웨이브폼 참조 라이브러리

개요

다음 설치 프로그램에는 호스트 VI, FPGA 템플릿 및 NI RIO 하드웨어에서 웨이브폼 데이터 수집을 수행하는 예제 프로젝트가 포함되어 있습니다. 설정 및 수집 VI는 RIO 플랫폼에 대한 최적화 및 모범 사례를 포함하고 있으며 손쉽게 예제를 수정하여 어플리케이션 개발을 시작할 수 있습니다.

내용

다운로드

VIPM 다운로드: 
NI 커뮤니티에서cRIO 웨이브폼 참조 라이브러리를 다운로드하십시오.  LabVIEW 도구 네트워크를 사용하면 설치를 쉽게 할 수 있고 새 업데이트가 배포될 때 자동 알림을 받을 수 있습니다.

소개

재구성 가능한 다수의 I/O(RIO) 어플리케이션은 동기화된 여러 개의 NI C 시리즈 모듈로부터 연속적인 데이터 블록을 수집합니다. 이 튜토리얼에서는 RIO 최적화 방법과 우수 사례를 포함하는 CompactRIO 데이터 수집 VI를 소개하며, 어플리케이션 개발을 빠르게 시작하기 위한 여러 가지 예제를 제공합니다.

그림 1. 연속 수집 예

특징

  • VI는 일반적인 수집 기능을 여러 다양한 수집 모드를 지원하는 로직 블록으로 통합합니다. 예제 프로그램은 다양한 연속 및 유한 수집 방법을 보여줍니다.
  • VI는 NI LabVIEW 웨이브폼 데이터 형식으로 데이터를 표현하므로 기타 일반적인 LabVIEW 소프트웨어 구성 요소와 쉽게 통합할 수 있습니다. 웨이브폼 데이터 형식은 수집된 데이터와 샘플링 주기, 타임스탬프 및 채널 이름과 같은 채널 속성을 묶습니다.
  • VI는 교정 및 스케일링 작업을 FPGA(Field-Programmable Gate Array)로 밀어 호스트 리소스 점유율을 줄입니다. 
  • VI는 DMA FIFO 오버플로(데이터 버퍼가 꽉 차서 데이터가 누락됨), 모듈 언더플로(FPGA 코드 실행이 너무 오래 걸려 모듈이 예상보다 느린 속도로 샘플을 수집), 시작/읽기/중지 타임아웃을 포함하여 발생할 수 있는 모든 종류의 에러를 확인합니다.
  • 포함된 읽기 함수는 폴링 아키텍처를 사용하므로 데이터 수집 중에 CPU 사용량을 사용자가 제어할 수 있습니다.
  • 예제는 매우 유연하게 구성되어 있으므로 여러 다양한 하드웨어 조합에 맞게 수정해 활용할 수 있습니다. 대부분의 어플리케이션의 경우 FPGA VI만 수정하면 됩니다.

팔레트 개요(LabVIEW 2010 및 이후)

cRIO 웨이브폼 라이브러리는 vi.lib\NI 디렉토리에 설치되며 LabVIEW의 애드온 팔레트 아래에 나타납니다.


그림 2: cRIO 웨이브폼 참조 라이브러리 팔레트

예시 프로젝트 개요

cRIO Wfm Examples.lvproj는 일반적인 수집 모드와 호스트 코드를 FPGA 코드에 연결하는 방법을 보여줍니다.  예제는 LabVIEW 환경에서 샘플 프로젝트로 설치되며 시작 창의 프로젝트 생성... 옵션으로 열 수 있습니다.

프로젝트 파일을 다음 위치에서 찾을 수도 있습니다. 

National Instruments\LabVIEW [Version]\ProjectTemplates\Source\cRIOWfm

소스 설치를 편집하지 않으려면 이 예제를 다른 FPGA 타겟으로 이동한 다음 모든 VI에서 "다른 이름으로 저장"을 사용해야 할 것입니다.  더 자세한 정보는 ni.com/info에서 정보 코드 fpgaex를 입력하십시오.


그림 3. 예시 프로젝트 개요

  1. 호스트 예 섹션에서는 다양한 연속 및 유한 수집 예를 보여줍니다.
  2. FPGA 템플릿 섹션에는 델타 시그마 기반 모듈용 템플릿 하나와 SAR 기반 모듈용 템플릿 하나가 있습니다.  FPGA 타겟 아래에는 DMA 채널과 FPGA VI를 하드웨어 구성에 맞추는 방법을 설명하는 PDF 문서도 있습니다.

프로그램 아키텍처 예

유한 수집: 유한 수집 모드는 FPGA가 특정 개수의 샘플을 수집하고 수집을 종료하도록 합니다. 이 수집 모드에서 ConfigTiming.viBufferConfig.vi를 호출하고 호스트 어플리케이션의 데이터 버퍼 크기를 지정된 데이터 포인트 수와 동일하게 설정합니다.

서브셋 읽기를 포함하는 유한 수집: 이 모드도 마찬가지로 채널당 요청된 모든 샘플을 보유하기에 충분한 메모리를 할당합니다. Read(poly).vi에는 Samps Read per Chan이라는 컨트롤이 있어 사용자가 각 호출에 의해 반환되는 블록 크기를 지정할 수 있으므로, 사용자는 여러 개의 서브셋으로 나눠진 유한 수집 데이터를 읽을 수 있습니다. 이는 많은 데이터 처리 어플리케이션에서 유용한 기능입니다. 

소프트웨어 시작 트리거 초기화를 포함하는 유한 수집: 유한 수집이 종료되면 FPGA가 또 다른 수집을 위해 자동으로 초기화됩니다. Start.vi만 호출하면 다시 유한 수집을 시작할 수 있습니다.

연속 수집: 연속 수집 모드는 중지 명령을 받거나 에러(FIFO 오버플로, 모듈 언더플로 등)가 발생할 때까지 FPGA에서 계속 포인트를 수집하도록 합니다. 이 수집 모드에서는 BufferCfg.vi를 사용하여 호스트 어플리케이션의 데이터 버퍼를 읽기 크기보다 몇 배 더 크게 명시적으로 설정하십시오. 이 예제에서는 기본값으로 10배 크기를 사용합니다. 호스트 어플리케이션의 데이터 버퍼가 차면, FPGA에서 FIFO 오버플로가 발생하므로 수집이 중지됩니다.

시작/정지 또는 일시 정지 기능을 포함하는 연속 수집: 유한 수집의 규모가 호스트 컨트롤러에서 사용 가능한 메모리 양에 비해 너무 큰 경우, 상태 머신을 이용하여 유한한 시간 동안 연속 수집을 수행하십시오. Stop.vi를 호출하면 FPGA는 수집을 중지하고 즉시 트리거를 초기화한 후 Start.vi 호출을 기다립니다. 정지 VI는 또한 호스트 어플리케이션의 데이터 버퍼를 비워 다음 수집 작업 때 이전 데이터를 반환하지 않도록 합니다.

연속 수집 벤치마크

목록에 있는 각 컨트롤러에 대해, CompactRIO 연속 수집 예는 데이터를 연속 수집하고 이를 로컬 TDMS 파일, 로컬 2진 파일 또는 TCP/IP를 통해 원격 호스트로 스트리밍했습니다. 대역폭 값은 무기한으로 또는 하드 드라이브가 꽉 찰 때까지 스트리밍할 수 있는 데이터 양을 표시합니다.

디스크로 스트리밍 [TDMS]: 샘플 속도 = 51.2 kS/s

컨트롤러1D 웨이브폼 SGL2D 배열 SGL인터리브 SGL
NI 90746채널 (1.23 MB/s)7채널 (1.43 MB/s)8채널 (1.64 MB/s)
NI 90688채널 (1.64 MB/s)8채널 (1.64 MB/s)9채널 (1.84 MB/s)
NI 90148채널 (1.64 MB/s)10채널 (2.05 MB/s)13채널 (2.66 MB/s)
NI 90769채널 (1.84 MB/s)12채널 (2.45 MB/s)15채널 (3.07 MB/s)
NI 902210채널 (2.05 MB/s)13채널 (2.66 MB/s)19채널 (3.89 MB/s)
NI 902415채널 (3.07 MB/s)19채널 (3.89 MB/s)27채널 (5.53 MB/s)

디스크로 스트리밍 [2진]: 샘플 속도 = 51.2 kS/s

컨트롤러인터리브 SGL
NI 90748채널 (1.64 MB/s)
NI 90689채널 (1.84 MB/s)
NI 901418채널 (3.69 MB/s)
NI 907620채널 (4.10 MB/s)
NI 902225채널 (5.12 MB/s)
NI 902436채널 (7.37 MB/s)

TCP/IP를 통한 스트리밍: 샘플 속도 = 51.2 kS/s

2D 배열 SGL
컨트롤러1D 웨이브폼 SGL2D 배열 SGL인터리브 SGL
NI 907412채널 (2.46 MB/s)13채널 (2.66 MB/s)18채널 (3.69 MB/s)
NI 901412채널 (2.46 MB/s)14채널 (2.87 MB/s)23채널 (4.71 MB/s)
NI 902216채널 (3.28 MB/s)20채널 (4.10 MB/s)35채널 (7.17 MB/s)
NI 902429채널 (5.94 MB/s)32채널 (6.55 MB/s)45채널 (9.22 MB/s)
NI 906840채널 (8.19 MB/s)40채널 (8.19 MB/s)45채널 (9.22 MB/s)

  

추가 자료

토의 및 피드백

이 참조 어플리케이션은 NI 시스템 엔지니어링 그룹이 개발했습니다. 

피드백은 CompactRIO 웨이브폼 참조 어플리케이션 토의 포럼으로 보내주십시오.

Was this information helpful?

Yes

No