LabVIEW에는 용도별로 사용하기에 적합한 다양한 데이터 통신 방법이 포함되어 있습니다. 사용자의 어플리케이션에 적합한 데이터 통신 방법을 구현하려면, 다음 토픽에 제시된 개요를 참조하십시오. 특정 데이터 통신 방법에 대한 자세한 정보는 해당 데이터 통신 방법의 제목을 클릭하십시오.

데이터 통신 타입: 데이터 흐름의 원소 버퍼 인터페이스 변수 인터페이스
용도: 대부분의 블록다이어그램 객체 사이에서 데이터를 전송하기. 값을 덮어쓰거나 손실을 방지하는 것이 중요한 경우, 각 위치 사이에서 데이터를 전송하기. 최신 값이 가장 중요한 경우, 메모리에 즉시 접근할 수 있는 값을 저장하기. 경합 조건이 발생하지 않도록 주의해야 합니다.
예: 한 VI의 출력에서 다른 VI의 입력으로 데이터 전달하기. 웨이브폼 얻기; 메시지나 명령 전송하기; 이미지 스트리밍하기. 현재 온도 모니터하기; 시스템 상태 모니터하기.
항목: — 와이어 — 시프트 레지스터 — 피드백 노드 — 채널 와이어

내부 타겟 또는 PC

— 큐 — RT FIFO — 사용자 이벤트 — AMC(Asynchronous Message Communication) 참조 라이브러리

네트워크

— 네트워크 스트림 — TCP — STM(Simple TCP Messaging) 참조 라이브러리

FPGA 내부

— Target-Scoped FIFO — VI-Defined FIFO — DRAM

FPGA에서 호스트로/호스트에서 FPGA로

— DMA FIFO

FPGA에서 FPGA로

— Peer-to-Peer(P2P) FIFO

내부 타겟 또는 PC

— 로컬 변수 — 글로벌 변수 — 기능적인 글로벌 변수(FGV) — 단일 프로세스 공유 변수 — 데이터 값 참조 — 현재 값 테이블(CVT)

네트워크

— 네트워크 공유 변수 — 프로그램적 공유 변수 API — 웹 서비스 — UDP

FPGA 내부

— 글로벌 변수 — 메모리 아이템 — 레지스터 아이템

FPGA에서 호스트로/호스트에서 FPGA로

— 읽기/쓰기 컨트롤 — NI 스캔 엔진 및 변수 — 사용자 정의 I/O 변수

데이터 흐름의 원소

LabVIEW에서 데이터 흐름 프로그래밍 환경의 장점을 활용하려면 와이어, 시프트 레지스터, 피드백 노드, 채널 와이어를 어플리케이션의 주요 데이터 통신 방법으로 사용해야 합니다.

메소드 속성
와이어
  • 블록다이어그램 객체 사이에서 주요 데이터 전송
시프트 레지스터
  • 루프 반복 사이에서 주요 데이터 전송
피드백 노드
  • 코드 반복 사이에서 주요 데이터 전송(루프가 필요하지 않음)
채널 와이어
  • 병렬 코드 섹션 간 비동기식 통신을 위한 주요 데이터 전송

버퍼 인터페이스

한 위치에서 다른 위치로 데이터를 전송할 때 값을 덮어쓰거나 손실하고 싶지 않은 경우에는 버퍼 인터페이스를 사용합니다. 버퍼 인터페이스는 자주 FIFO(선입 선출) 단일 원소 또는 여러 원소의 버퍼로 표현되며, 하나 이상의 발신자가 버퍼의 한쪽에 데이터를 추가하고 다른 한쪽에서 수신자가 데이터를 받습니다.

내부 타겟 또는 PC

방법 속성
  • 크기 조정 및 접근 옵션이 유연함
  • 타이밍 결정성이 높지 않음
RT FIFO (Real-Time Module)
  • 시간 결정성이 있음
  • 폴링 모드(기본)에서는 읽기/쓰기 대기 시간을 시간에 결정적으로 처리하지만 CPU 오버헤드가 높아짐
  • 방해 모드에서는 읽기/쓰기 대기 시간에서 CPU 사용이 최적화되지만, 작업을 시간에 결정적으로 처리하지 않음
  • 크기가 고정되어 있고 접근 옵션이 제한되어 있어서 큐보다 유연성이 적음
사용자 이벤트
AMC(Asynchronous Message Communication) 라이브러리

(ni.com에서 이용가능)

  • 단일 프로세스 및 프로세스 사이에서 메시지 통신
  • 메시징 프레임워크 설계 시, 큐에 비해 사용이 훨씬 용이함
  • 큐 메시지 핸들러(QMH) 템플릿을 포함함 노트: 이것은 ni.com/samplecodelicense에 있는 Sample Code License Terms에 의거한 커뮤니티 컨텐츠입니다.

네트워크

방법 속성
네트워크 스트림
  • 1:1 통신
  • TCP보다 구현이 쉬움
  • 자동으로 연결 해제 및 다시 연결을 처리함
  • 단방향
  • Windows와 Real-Time 시스템에서만 사용 가능
TCP
  • 네크워크 스트림 지원이 없어 네트워크 통신을 필요로하는 어플리케이션에 대한 기능의 폭이 넓음
  • 하위 레벨 프로토콜을 사용하면 구현이 복잡해짐
STM (Simple TCP Messaging) 참조 라이브러리

(ni.com에서 이용 가능)

  • 하위 레벨 TCP 함수의 메시지 래퍼
  • 1:N 단일 서버에서 여러 클라이언트간의 통신을 구현하는데 사용됨 노트: 이것은 ni.com/samplecodelicense에 있는 Sample Code License Terms에 의거한 커뮤니티 컨텐츠입니다.

FPGA 내부

방법 속성
Target-Scoped FIFO (FPGA Module)
VI-defined FIFO (FPGA Module)
  • 구현 옵션은 FIFO가 사용하는 저장 타입(플립 플롭, 룩업 테이블 또는 블록 메모리)을 지정함
  • 각 인스턴스의 리소스를 복제하여 재호출 SubVI에서의 리소스 충돌을 방지함
  • 여러 개의 프로젝트에서 VI에 코드를 재사용하는 것을 용이하게 함
  • 프로젝트 탐색기 윈도우에서 확인 또는 사용자 정의할 수 없음
DRAM (FPGA Module)
  • 메모리 아이템 또는 CLIP 인터페이스를 사용하여 DRAM(Dynamic Random Acess Memory)와 상호작용함
  • Target-Scoped 및 VI-Defined FIFO에 비해 대용량의 버퍼된 메모리 공간을 제공함
  • 시간 결정성이 없는 접근 지연
  • 일부 타겟에서만 사용 가능

FPGA에서 호스트로/호스트에서 FPGA로

방법 속성
DMA FIFO (FPGA Module)

FPGA에서 FPGA로

변수 인터페이스

변수 인터페이스를 사용하면 수신자와 발신자가 최소한의 흐름 제어 또는 흐름 제어 없이 접근이 가능한 메모리에 값을 저장할 수 있습니다. 최신값이 가장 중요하여 이전 값을 덮어써도 되는 경우에는 반드시 변수를 사용해야 합니다. 경합 조건이 발생하지 않도록 주의해야 합니다.

내부 타겟 또는 PC

방법 속성
로컬 변수
  • 단일 VI에서 접근할 수 있는 데이터를 저장함
글로벌 변수
  • 동일한 LabVIEW 어플리케이션 인스턴스에 여러 VI가 접근할 수 있는 데이터를 저장함
기능적인 글로벌 변수(FGV)
  • 초기화하지 않은 시프트 레지스터를 사용하여 글로벌 데이터를 저장하는 VI
  • 스택이나 큐 버퍼와 같은 복잡한 데이터 구조뿐만 아니라, 간단한 글로벌 변수 구현 가능
  • 호출 코드가 변수에 수행할 특정 작업을 정의하여 경쟁 조건을 방지함
단일 프로세스 공유 변수
데이터 값 참조
  • 큰 데이터 세트를 저장함
  • 메모리 관리를 돕고, 데이터 복제를 방지함
현재 값 테이블(CVT)

(ni.com에서 이용 가능)

  • 별도의 구성요소를 갖는 어플리케이션의 변수에 대한 공통 데이터 저장소
  • I/O 작업에 중점을 두어, 계산시 공유 변수보다 적은 리소스를 사용함 노트: 이것은 ni.com/samplecodelicense에 있는 Sample Code License Terms에 의거한 커뮤니티 컨텐츠입니다.

네트워크

방법 속성
네트워크 공유 변수
  • 시간 결정성이 있는 옵션이 있음
  • 값을 모니터하는데 이상적임
  • 네크워크 데이터 서버(공유 변수 엔진)에 값을 저장함
  • 1:N 및 N:1 네트워크 설정을 위한 기본 연결 관리자
프로그램적 공유 변수 API
  • 노드 기반의 정적 연결 대신 변수에 다이나믹한 접근을 제공하여 설계의 확장성을 향상시킴
  • 단일 변수 API 함수를 사용하여 여러 변수에 접근함
  • 네트워크 I/O 변수에 접근함
웹 서비스
  • 표준 HTTP 프로토콜을 사용한 네트워크 데이터 통신
  • 텍스트, 이미지 및 동영상과 같은 표준 MIME 데이터 타입을 스트리밍함
  • LabVIEW VI를 사용하여 웹서비스를 빌드하고 배포함
UDP
  • 디바이스에서 프로세스 사이의 하위 레벨 통신을 위한 단일캐스트(1:1) 및 멀티캐스트(1:N)를 지원함
  • 손실없는 데이터 전송이 요구되지 않는 어플리케이션에서 TCP보다 성능이 더 높음
  • 하위 레벨 프로토콜을 사용하면 구현이 복잡해짐
  • 클라이언트의 데이터 수신을 보장하지 않음

FPGA 내부

방법 속성
글로벌 변수
  • 동일한 LabVIEW 어플리케이션 인스턴스에 여러 VI가 접근할 수 있는 데이터를 저장함
메모리 아이템 (FPGA Module)
  • 값을 여러 데이터 포인트로 저장할 수 있음
  • 구현 옵션은 메모리 아이템이 사용하는 저장 타입(블록 메모리, 룩업 테이블 또는 DRAM)을 지정함
  • Target-Scoped(프로젝트에서 설정) 및 VI-Defined(VI에서 재호출용으로 설정) 옵션
레지스터 아이템 (FPGA Module)
  • 클럭 사이클마다 상태를 게시할 수 있음
  • Target-Scoped(프로젝트에서 설정) 및 VI-Defined(VI에서 재호출용으로 설정) 옵션
  • FIFO보다 FPGA 리소스 소비가 적음

FPGA에서 호스트로/호스트에서 FPGA로

방법 속성
읽기/쓰기 컨트롤 (FPGA Module)
  • FPGA 타겟의 최상위 FPGA VI의 컨트롤이나 인디케이터를 읽거나 씀
NI 스캔 엔진 및 변수

(FPGA Module + 사용자의 타겟에 있는 NI 스캔 엔진 지원)

  • FPGA I/O 데이터와 RT 호스트 사이의 주기적인 단순한 통신
  • FPGA 타겟과 RT 호스트 사이에서 I/O 데이터를 전송하는데 필요한 코드를 줄임
사용자 정의 I/O 변수 (FPGA Module)
  • 하이브리드 모드에서, 스캔 엔진을 사용하여 사용자 정의된 데이터를 전송함
  • FPGA VI와 LabVIEW RT 호스트 VI 사이의 데이터 전송
  • 사용자 정의한 FPGA 처리된 I/O 데이터 전송