VIPM 다운로드:
NI 커뮤니티에서cRIO 웨이브폼 참조 라이브러리를 다운로드하십시오. LabVIEW 도구 네트워크를 사용하면 설치를 쉽게 할 수 있고 새 업데이트가 배포될 때 자동 알림을 받을 수 있습니다.
재구성 가능한 다수의 I/O(RIO) 어플리케이션은 동기화된 여러 개의 NI C 시리즈 모듈로부터 연속적인 데이터 블록을 수집합니다. 이 튜토리얼에서는 RIO 최적화 방법과 우수 사례를 포함하는 CompactRIO 데이터 수집 VI를 소개하며, 어플리케이션 개발을 빠르게 시작하기 위한 여러 가지 예제를 제공합니다.
그림 1. 연속 수집 예
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. 예시 프로젝트 개요
유한 수집: 유한 수집 모드는 FPGA가 특정 개수의 샘플을 수집하고 수집을 종료하도록 합니다. 이 수집 모드에서 ConfigTiming.vi는 BufferConfig.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 웨이브폼 SGL | 2D 배열 SGL | 인터리브 SGL |
---|---|---|---|
NI 9074 | 6채널 (1.23 MB/s) | 7채널 (1.43 MB/s) | 8채널 (1.64 MB/s) |
NI 9068 | 8채널 (1.64 MB/s) | 8채널 (1.64 MB/s) | 9채널 (1.84 MB/s) |
NI 9014 | 8채널 (1.64 MB/s) | 10채널 (2.05 MB/s) | 13채널 (2.66 MB/s) |
NI 9076 | 9채널 (1.84 MB/s) | 12채널 (2.45 MB/s) | 15채널 (3.07 MB/s) |
NI 9022 | 10채널 (2.05 MB/s) | 13채널 (2.66 MB/s) | 19채널 (3.89 MB/s) |
NI 9024 | 15채널 (3.07 MB/s) | 19채널 (3.89 MB/s) | 27채널 (5.53 MB/s) |
디스크로 스트리밍 [2진]: 샘플 속도 = 51.2 kS/s
컨트롤러 | 인터리브 SGL |
---|---|
NI 9074 | 8채널 (1.64 MB/s) |
NI 9068 | 9채널 (1.84 MB/s) |
NI 9014 | 18채널 (3.69 MB/s) |
NI 9076 | 20채널 (4.10 MB/s) |
NI 9022 | 25채널 (5.12 MB/s) |
NI 9024 | 36채널 (7.37 MB/s) |
TCP/IP를 통한 스트리밍: 샘플 속도 = 51.2 kS/s
컨트롤러 | 1D 웨이브폼 SGL | 2D 배열 SGL | 인터리브 SGL |
---|---|---|---|
NI 9074 | 12채널 (2.46 MB/s) | 13채널 (2.66 MB/s) | 18채널 (3.69 MB/s) |
NI 9014 | 12채널 (2.46 MB/s) | 14채널 (2.87 MB/s) | 23채널 (4.71 MB/s) |
NI 9022 | 16채널 (3.28 MB/s) | 20채널 (4.10 MB/s) | 35채널 (7.17 MB/s) |
NI 9024 | 29채널 (5.94 MB/s) | 32채널 (6.55 MB/s) | 45채널 (9.22 MB/s) |
NI 9068 | 40채널 (8.19 MB/s) | 40채널 (8.19 MB/s) | 45채널 (9.22 MB/s) |
이 참조 어플리케이션은 NI 시스템 엔지니어링 그룹이 개발했습니다.
피드백은 CompactRIO 웨이브폼 참조 어플리케이션 토의 포럼으로 보내주십시오.