적합한 네트워킹 프로토콜 사용하기

개요

제어 및 모니터링 어플리케이션은 일반적으로 종종 이더넷을 통해 정보를 교환해야 하는 다양한 시스템을 연결합니다. 임베디드 컨트롤러는 주변 계측기에서 데이터를 읽거나, HMI(인간-기계 인터페이스)로부터 작업자 입력을 수신하거나, 테스트 결과를 중앙 데이터 관리 시스템으로 스트리밍할 수 있습니다. 이러한 작업을 수행하는 데 사용할 수 있는 몇 가지 네트워킹 프로토콜이 있습니다. 이 길라잡이는 어플리케이션에 적합한 프로토콜을 선택할 수 있도록 여러분을 안내합니다. 제어 및 모니터링 어플리케이션에서 사용되는 가장 일반적인 통신 모델을 다루고, 각 상황에 가장 적합한 네트워킹 프로토콜을 권장할 것입니다. 중점적으로 살펴 볼 것은 다음 세 가지 커뮤니케이션 모델입니다.
  • 명령 또는 메시지 기반 통신
  • 프로세스 데이터 통신
  • 스트림/버퍼 통신
그런 후, 다음 네트워킹 프로토콜 중 작업에 가장 적합한 프로토콜을 논의할 것입니다.
  • TCP 및 UDP
  • 네트워크 공유 변수
  • 네트워크 스트림
  • 웹 서비스​

내용

명령, 모니터 또는 스트림

각 통신 유형은 타겟(보통 데이터 수집 시스템 또는 컨트롤러)과 호스트(보통 HMI 디스플레이)를 여러 가지 구성으로 조합합니다. 단일 타겟과 단일 호스트(1:1) 사이에 통신할 수도 있고, 여러 타겟과 단일 호스트 사이에서 통신(N:1)하거나 단일 타겟과 여러 호스트 간 통신(1:N)할 수도 있습니다. 다음 섹션은 기계 제어 분야에서 사용되는 각 통신 유형, 공통 시스템 설정, 네트워킹 및 데이터 전송 요구 사항에 대해 설명합니다.

명령 또는 메시지 기반 통신

명령 또는 메시지 기반 통신은 특정 이벤트에 의해 트리거되는 간헐적 정보 전송입니다. 버튼 누름 또는 알람이 여기에 해당되며, 이는 특정 응답을 트리거합니다. 명령 기반 아키텍처에는 명령자 시스템(호스트)과 작업자 시스템(타겟)의 두 가지 시스템 유형이 포함됩니다. 명령자는 작업자가 실행해야 하는 명령을 보냅니다. 명령은 무손실 방식으로 전달되어야 하며 최소 지연 조건이 있어야 합니다. 예를 들어, 작업자는 버튼을 눌렀을 때, 다시 누를 필요 없이 해당 작업이 실행될 것으로 기대합니다. 또한 시스템이 적절한 시간 내에 응답할 것으로 기대합니다. 가장 일반적인 구성은 1:1이지만 N:1 및 1:N도 가능합니다.

프로세스 데이터 통신

프로세스 데이터 통신은 프로세스 변수의 최신 값을 주기적으로 전송합니다. 이 유형의 통신은 가장 일반적인 통신이며 제어 어플리케이션과 현재 시스템 상태를 표시하는 데 사용되는 HMI에 유용합니다.  예를 들어, 이것은 하나 이상의 임베디드 컨트롤러에서 HMI로 전송되는 주기적인 업데이트에 사용되는 것으로, 기계의 상태를 모니터링합니다.  작업자는 기계의 현재 상태를 확인해야 하므로 무손실 전송은 필요하지 않습니다. 리얼타임 컨트롤러 또는 HMI는 최신 값을 대상으로만 동작하기 때문입니다.

이러한 유형의 데이터 전송은 임베디드 컨트롤러 간에 사용할 수 있으며 빠른 속도가 필요할 수 있습니다.  그러나 프로세스 데이터 통신의 가장 일반적인 용도는 HMI를 업데이트하는 것입니다.  이러한 유형의 통신은 사람이 데이터를 보기 때문에 업데이트 속도가 느려집니다. 일반적으로 1에서 30Hz의 업데이트 속도면 충분합니다. 더 빠른 것은 CPU와 메모리 리소스에 부담을 주며 작업자가 시각적으로 처리할 수 있는 것보다 더 많은 정보를 전달합니다. 경험에 따르면 숫자 표시는 1-2Hz보다 빠르지 않은 속도로 업데이트되어야 하며, 그래픽 표현의 경우 30Hz에서 부드러운 업데이트를 제공합니다.

스트림/버퍼 통신

데이터를 스트리밍할 때 많은 양의 정보가 연속적으로 전송되지만 반드시 실시간으로 전송되는 것은 아닙니다. 이 유형의 통신은 많은 양의 데이터를 보내고 각 데이터 포인트를 캡처해야 할 때 유용합니다. 항상 그런 것은 아니지만 종종 스트리밍은 단방향이며 1:1 구성을 갖습니다. 여기에는 데이터가 손실되지 않도록 하는 지속적인 버퍼링이 포함됩니다. 스트리밍 통신의 일반적인 용도는 타겟이 고속 데이터 수집을 수행하고 있으며, 로깅 또는 후처리를 위해 데이터를 호스트로 전송해야 할 때입니다.

통신 유형

일반 구성

특성

요구 사항

메시지 기반

1:N

이벤트 구동, 명령

짧은 지연 시간, 전달 보장

데이터 처리

N:1

단일 포인트, 현재 값

전달 보장 대신 최신 값

스트림/버퍼

1:1

연속 데이터 전송

높은 처리량, 전달 보장

테이블 1.1. 기계 제어 통신 유형 요약

 

네트워킹 프로토콜

어플리케이션에 대한 네트워킹 프로토콜을 선택할 때는 다음과 같은 여러 요소를 평가해야 합니다.

  • 통신 유형
  • 시스템 구성
  • 성능
  • 사용 편의
  • 지원되는 타사 API

위에서 논의한 통신 유형과 시스템 구성은 어플리케이션의 네트워킹 프로토콜을 선택할 때 가장 큰 결정 요인이 될 것입니다. 성능 및 사용 편의성 요구 사항은 어플리케이션 유형과 프로그래밍 경험에 따라 결정됩니다. 마지막으로, C 또는 VB로 개발된 것과 같은 타사 어플리케이션과 통신하도록 개발하려는 경우, 타사 API와 연결할 수 있는 네트워킹 프로토콜을 사용해야 합니다. 이러한 요소를 검토함으로써 올바른 결정을 내릴 수 있을 것입니다. 위의 요소와 관련된 각 네트워킹 프로토콜의 요약은 테이블 1.2를 참조하십시오.

 

API

유형

성능

사용 편의성

지원 구성

타사 API?

공유 변수

LabVIEW 기능

1:1, N:1, 1:N

Measurement Studio 및 CVI

네트워크 스트림

LabVIEW 기능

1:1

지금은 아님

TCP/UDP

인터넷 프로토콜

1:1, N:1, 1:N

웹 서비스

인터넷 프로토콜

*

 

1:1, N:1, 1:N

테이블 1.2. 네트워킹 프로토콜 요약( = 최고, = 더 나은, = 양호, * = 웹 서비스에서 수행되는 작업에 따라 다름)

TCP 및 UDP

TCP 및 UDP 인터넷 프로토콜은 이 문서에서 설명하는 모든 네트워킹 프로토콜이 사용하는 하위 레벨 원소입니다. 다른 모든 프로토콜은 이 프로토콜 위에서 사용하기 쉬운 추상화를 제공합니다. 이 때문에 TCP와 UDP는 최고의 성능을 제공하며 하위 레벨의 제어를 통해 최고의 유연성을 얻을 수 있게 합니다. TCP와 UDP를 사용하면 STM과 같은 사용자 정의 프로토콜을 만들 수 있습니다.

TCP

TCP는 지점간 신뢰할 수 있는 통신 프로토콜입니다. 데이터는 무손실 방식으로 순서대로 전달됩니다. 이는 연결에 기반한 프로토콜입니다. 이는 데이터를 전송하기 전에 클라이언트와 서버가 확실히 연결되어야 한다는 뜻입니다. 데이터 전달을 보장하기 위해 TCP는 확인 응답을 받을 때까지 데이터를 재전송합니다. TCP 클라이언트와 서버는 지정된 포트를 통해 통신합니다.

UDP

UDP는 지정된 포트에 데이터를 전달하지만 데이터를 보내기 전에 클라이언트와 연결할 필요가 없다는 점에서 TCP와 다릅니다. 목적지에 데이터를 수신하기 위한 연결이 없는 경우, 데이터는 단순히 버려집니다. 배송 성공 여부는 확인되지 않습니다. 따라서 무손실 데이터 전송이 필수적 어플리케이션에서는 UDP를 사용해서는 안됩니다.

UDP 기능은 단일 클라이언트와 통신하거나 데이터를 여러 클라이언트에 브로드캐스트할 수 있습니다. UDP 멀티캐스트는 네트워크의 단일 발신자와 여러 클라이언트 사이에서 발신자가 클라이언트 목록을 관리할 필요 없이 효율적으로 통신하는 데 사용되는 모드입니다. UDP는 여기에서 논의된 모든 프로토콜 중에서 가장 빠른 전송 속도를 가지고 있지만, 데이터 손실이 없는 전송을 보장하지는 않습니다.

TCP 및 UDP는 고 처리량 네트워킹 프로토콜이지만 구현이 용이하지 않다는 단점이 있습니다. 네트워크 연결을 수동으로 관리해야 하며, 각 연결은 하나의 포트를 사용합니다. TCP와 UDP에서는 모든 데이터를 문자열 포맷으로 보내야 합니다. 즉, 발신자가 모든 데이터를 하나의 문자열로 인코딩하고 수신자가 문자열 데이터를 디코딩해야 합니다. 이것은 문자열이 아닌 데이터 전송에 복잡도를 더합니다.

TCP와 UDP는 메시지 기반 통신과 사용자 정의 스트리밍 어플리케이션에 좋은 도구입니다. 모든 유형의 구성을 지원하며 업계 표준이므로 타사 어플리케이션과 함께 사용할 수 있습니다.

네트워크 공유 변수

네트워크 공유 변수는 데이터를 공유하는 데 사용하기 쉬운 LabVIEW 도구입니다. 대부분의 LabVIEW 데이터 타입과 사용자 타입 정의를 지원하며 구현하기 쉽습니다.

LabVIEW의 네트워크 변수는 네트워크 변수 노드, 공유 변수 엔진, NI-PSP(Publish-Subscribe Protocol)의 세 부분으로 구성됩니다. 네트워크 변수 노드는 블록다이어그램에 배치되어 변수 읽기와 쓰기 작업을 수행합니다. 공유 변수 엔진은 게시되는 데이터를 호스팅하는 소프트웨어 구성요소입니다. 이것은 리얼타임 타겟 또는 Windows PC에서 호스팅될 수 있지만, 적어도 하나의 네트워크로 연결된 기계에서 실행되어야 합니다.  NI-PSP는 네트워크 공유 변수의 전송을 최적화하는 NI 고유의 네트워킹 프로토콜입니다. 이 프로토콜은 TCP/IP를 기반으로 하므로 네트워크를 통해 데이터를 효율적이고 신뢰성 있게 전송할 수 있습니다.

네트워크 공개 공유 변수에서는 버퍼링을 활성화할 수 있으며, 이는 유사 무손실 N:1 및 1:N 통신을 쉽게 구현할 수 있는 방법이 필요한 경우에 적합합니다. 공유 변수 버퍼링은 일시적인 네트워크 지연으로 인한 데이터 손실을 방지하는 데 도움이 될 수 있지만, 무손실 데이터 전송을 보장하지는 않습니다. 클라이언트가 다른 클라이언트가 데이터를 읽는 속도보다 빠르게 데이터를 쓰는 경우, 결국 오버플로우가 발생하여 데이터가 손실됩니다. 오버플로우를 방지하기 위해 데이터 흐름이 관리되지는 않습니다. 모든 클라이언트가 충분히 빠른 속도로 데이터를 읽고 있더라도, 데이터가 전송되는 동안 네트워크 중단으로 인해 기반 TCP 연결이 중단되면 데이터가 손실될 수 있습니다. 무손실 점대점 데이터 전송이 필요한 경우 네트워크 스트림이 권장됩니다. 네트워크 공유 변수는 프로세스 변수의 최신 값이 중요한 경우 프로세스 데이터 통신에 가장 적합합니다.

네트워크 스트림

네트워크 스트림은 효율적인 데이터 스트리밍을 제공하도록 설계된 LabVIEW 2010의 기능입니다.  사용하기 쉬운 상위 레벨 추상화를 제공하여 연결, 연결 해제 및 데이터 흐름 제어를 처리하는 동시에 원시 TCP/UDP와 유사한 처리량을 유지합니다. 네트워크 스트림은 데이터 손실이 없는 단방향 일대일 통신 채널로, 발신자와 수신자 단말로 구성됩니다. 손실이 없는 특성 때문에 메시지 통신의 기반으로도 사용될 수 있습니다.

네트워크 스트림은 클러스터와 배열을 포함한 대부분의 LabVIEW 데이터 타입을 네트워크를 통해 전송할 수 있지만, 스트림은 다음 데이터 타입에서 가장 효율적입니다.

  • 숫자형 스칼라
  • 불리언
  • 숫자형 스칼라의 1D 배열
  • 불리언의 1D 배열

네트워크 스트림을 사용하면 컴퓨터에서 컴퓨터로, 컴퓨터에서 리얼타임 타겟으로, 또는 리얼타임 타겟에서 리얼타임 타겟으로 데이터를 전달할 수 있습니다. 네트워크 스트림은 단방향이므로 단말 사이에서 양방향으로 데이터를 전달하려면 두 개의 스트림을 열어야 합니다. 마찬가지로, 여러 타겟에 데이터를 전달해야 하는 경우 여러 스트림을 열어야 합니다.

웹 서비스

웹 서비스를 사용하면 네트워크를 통해 표준 웹 브라우저를 포함한 모든 HTTP 가능 웹 클라이언트와 통신하는 웹 어플리케이션을 생성할 수 있습니다. LabVIEW를 사용하면 VI를 서버측 웹 서비스로 공개할 수 있습니다. 이 VI를 웹 메소드 VI라고 합니다. 이 웹 서비스는 실행 파일의 자체 웹 서버 또는 Application Web Server에 배포되며, Windows PC 및 NI Real-Time 컴퓨팅 플랫폼에서 호스팅될 수 있습니다. 이 LabVIEW 기능은 NI 제품에 국한되지 않는 수많은 HTTP 지원 디바이스 및 어플리케이션과 연결할 수 있다는 장점이 있습니다. 많은 사용자가 다양한 플랫폼과 위치에서 하나 이상의 어플리케이션을 모니터링할 수 있습니다. 사용의 용이성과 효율성은 웹 클라이언트와 사용자의 웹 어플리케이션 프로그래밍에 대한 친숙도에 달려 있습니다.

데이터는 URL과 표준 HTTP 메소드를 사용하여 웹 메소드 VI와 교환됩니다. 예를 들어, POST와 같은 표준 HTTP 메소드를 사용하여 웹 클라이언트에서 웹 메소드 VI의 컨트롤에 입력 데이터를 제공할 수 있습니다. 데이터는 VI의 출력 터미널을 통해서나 웹 서버로 데이터를 스트리밍하여 HTTP 클라이언트로 반환됩니다.  터미널 메소드를 사용하는 경우, 웹 서버가 요청을 수신하면 출력 터미널에 연결된 모든 데이터를 XML(extensible markup language) 문자열로 웹 클라이언트에 반환합니다. 또한 데이터를 HTML(Hypertext Markup Language), JSON(JavaScript Object Notation) 또는 텍스트 포맷으로 반환하도록 웹 서비스를 설정할 수도 있습니다. 그리고 스트림 출력 모드를 사용하도록 웹 메소드 VI를 설정할 수도 있습니다. 이 출력 모드를 사용하면 사용자 정의된 포맷으로 데이터를 반환할 수 있습니다. 버퍼링을 구현하고 사용자 정의 HTML 헤더를 사용할 수 있습니다. 이 두 가지 출력 모드 덕분에 웹 서비스는 모니터링 또는 스트리밍 어플리케이션에 적합합니다.

권장 네트워킹 프로토콜

다음은 기계 제어 분야 각 통신 유형에 가장 적합한 네트워킹 프로토콜을 요약한 것입니다.

명령 또는 메시지 기반 통신

메시지 기반 통신에는 신뢰성 있는 전송과 빠른 전송 속도가 필요합니다. 테이블 1.3에는 메시지 기반 통신의 모든 옵션이 나열되어 있습니다. 이 어플리케이션은 네트워크 스트림으로 가장 잘 작동합니다. 신뢰성 있고 사용하기 쉬우며 빠른 전송 속도를 제공합니다. 그러나 1:N 또는 N:1 시스템 구성이 필요하거나 타사 어플리케이션으로 데이터를 전송해야 하는 경우에는 TCP/UDP가 더 적합합니다. 사용 편의성을 위해 N이 작은 경우에도 여러 네트워크 스트림이 사용될 수 있습니다. 웹 서비스는 파싱 기능이 있는 TCP와 유사한 성능으로 사용할 수 있지만 사용하기가 더 쉽습니다.

API

유형

성능

사용 편의성

지원 구성

타사 API?

문의 내용

네트워크 스트림

LabVIEW 기능

1:1

지금은 아님

권장 프로토콜

TCP/UDP

원시

1:1, N:1, 1:N

N:1 또는 1:N 구성 또는 타사 어플리케이션과의 통신용

 

웹 서비스

LabVIEW 기능

1:1, N:1, 1:N

테이블 1.3 메시지 기반 통신에 적합한 네트워킹 프로토콜

프로세스-데이터 통신

프로세스-데이터 통신에서는 최신 값만 중요합니다. 따라서 보장된 전달 및 전송 속도는 그다지 중요하지 않습니다. 테이블 1.4에는 프로세스-데이터 통신을 위한 모든 옵션이 나열되어 있습니다. 공유 변수는 이 어플리케이션에 권장되는 LabVIEW 기능입니다. 사용하기 쉽고 다양한 시스템 구성이 가능합니다. 또한 네트워크 연결을 자동으로 관리합니다. 여러 곳에 있는 LabVIEW가 설치되지 않은 컴퓨터에서 데이터를 모니터해야 할 때는 웹 서비스를 사용해야 합니다. 마찬가지로, 타사 어플리케이션에서 데이터를 모니터링하는 경우 TCP/UDP를 사용해야 합니다.

API

유형

성능

사용 편의성

지원 구성

타사 API?

문의 내용

공유 변수

LabVIEW 기능

1:1, N:1, 1:N

Measurement Studio 및 CVI

권장 프로토콜

웹 서비스

LabVIEW 기능

1:1, N:1, 1:N

1:N 구성용

TCP/UDP

원시

1:1, N:1, 1:N

타사 어플리케이션과의 통신용

테이블 1.4 프로세스-데이터 통신에 적합한 네트워킹 프로토콜

스트림/버퍼 통신

스트림 통신에는 빠른 전송 속도와 신뢰성 있는 전송이 필요합니다. 테이블 1.5에는 스트림/버퍼 통신을 위한 모든 옵션이 나열되어 있습니다. 이 어플리케이션에는 네트워크 스트림을 사용하는 것이 좋습니다. N:1 또는 1:N 구성과 타사 어플리케이션으로 데이터를 스트리밍해야 하는 경우에는 TCP/UDP를 사용해야 합니다.

API

유형

성능

사용 편의성

지원 구성

타사 API?

문의 내용

네트워크 스트림

LabVIEW 기능

1:1

지금은 아님

권장 프로토콜

TCP/UDP

원시

1:1, N:1, 1:N

N:1 및 1:N 구성 및 타사 어플리케이션과의 통신용

테이블 1.5 스트림/버퍼 통신에 적합한 네트워킹 프로토콜