LabVIEW에서 기본 TCP/IP 통신 구현하기

설명

IP (Internet Protocol), UDP (User Datagram Protocol) 및 TCP (Transmission Control Protocol)는 네트워크 통신을 위한 기본 도구입니다. TCP/IP란 이름은 인터넷 프로토콜에서 가장 잘 알려진 프로토콜인 Transmission Control Protocol과 Internet Protocol에서 유래합니다. TCP/IP를 사용하면 단일 네트워크 또는 상호 연결된 네트워크(인터넷)에서 통신할 수 있습니다.

TCP/IP 통신은 신뢰할 수 있는 성능을 제공하기 위해 복잡하게 구성되어 있는 네트워크 통신을 손쉽게 활용할 수 있도록 간단한 사용자 인터페이스를 제공합니다. TCP/IP 통신의 작동 원리에 대한 자세한 내용은 TCP/IP 및 UDP에서 LabVIEW 사용하기 어플리케이션 노트(아래 링크)를 참조하십시오. TCP에 대한 기술적인 세부사항은 TCP 스펙(아래 링크)을 참조하십시오.

LabVIEW에서 TCP 통신에는 함수»데이터 통신»프로토콜»TCP 팔레트에 있는 TCP/IP 함수를 사용합니다. DAQ, 계측기 및 파일 I/O 통신과 마찬가지로 프로세스에는 연결 열기, 정보 읽기 및 쓰기, 연결 닫기가 포함되어 있습니다.

대부분의 I/O 통신에서, 프로세서는 항상 디스크 드라이브 서버, 외부 계측기 서버 또는 DAQ 보드 서버에 대한 연결을 시작하는 클라이언트입니다. TCP/IP 연결을 통해 컴퓨터는 클라이언트나 서버로 작동할 수 있습니다. 다음 블록다이어그램은 TCP 연결 열기를 통해 원격 서버에 대한 연결을 시작하는 클라이언트 어플리케이션을 나타냅니다. 서버 또는 데몬은 원격 연결을 수신하고 적절하게 응답합니다.


LabVIEW 사용자는 TCP/IP 통신을 위한 사용자 정의 어플리케이션을 개발할 수 있습니다. 프로그래머는 클라이언트와 서버를 모두 개발해야 합니다. LabVIEW를 사용하여 TCP 클라이언트를 만드는 방법에 대한 자세한 내용은 TCP/IP 및 UDP에서 LabVIEW 사용하기 어플리케이션 노트(아래 링크)를 참조하십시오.

누구나 서버에 연결을 시도할 수 있기 때문에 서버 액세스를 제어해야 하는 경우도 있습니다. 다음 블록다이어그램은 TCP 수신 VI의 원격 주소 출력값을 사용하여 원격 클라이언트에 서버 액세스 권한이 있는지 여부를 확인하는 방법을 보여 줍니다.





통신 어플리케이션 개발하기
대부분 어플리케이션은 하나의 값을 쓰고 읽는 것보다 더 많은 작업을 수행합니다. 통신은 프로토콜이 관련된 지속적인 프로세스입니다. 예를 들어 클라이언트가 8비트 정수로 다음 4개 명령을 서버에 보낸다고 가정합니다.
1 = 데이터 수집 및 확인
2 = 데이터 전송
3 = 상태 확인
4 = 연결 닫기

다음 블록다이어그램에서는 While 루프가 VI의 나머지 부분을 둘러쌉니다. 이를 통해 VI는 각 연결이 닫힌 후 다시 시작할 필요 없이 여러 순차 연결을 처리할 수 있습니다. VI는 여러 개의 동시 연결을 처리할 수 없습니다. 외부 케이스 구조에 따라 유효한 연결이 발생되었는지 여부가 결정됩니다. 유효한 연결이 없으면 아무 일도 일어나지 않습니다. 유효한 연결이 발생하면 VI는 TCP/IP 포트에서 1바이트를 읽는 While 루프에 들어갑니다. 이 바이트는 클라이언트의 명령 1~4를 포함합니다. 읽기 타임아웃 기간 내에 명령이 수신되지 않으면 내부 케이스 구조의 기본 케이스는 내부 While 루프의 연속 터미널에 참 값을 보내 연결을 활성 상태로 유지합니다.




다음 블록다이어그램은 내부 케이스 문의 기타 4개 케이스를 보여 줍니다. 각 케이스는 서버에서 보낼 수 있는 특정 명령을 처리합니다. 각 케이스는 연속 터미널에 정보를 보내 루프를 계속할지 여부를 결정합니다. 특히 Quit 케이스는 항상 거짓 값을 반환합니다. 루프를 떠난 후 서버는 클라이언트에 대한 연결을 닫습니다.


 
 


이러한 타입의 서버 아키텍처를 사용하면 더 복잡한 네트워크 통신 절차를 위한 유연한 서버를 개발할 수 있습니다. 여러분이 개발하는 프로토콜은 아마도 위에 소개한 예제보다 훨씬 복잡할 것입니다.