채널 와이어란 실행 순서를 강제 적용하지 않고 두 개의 병렬 코드 섹션 사이에서 비동기적 통신을 수행하는 LabVIEW의 와이어입니다. 채널 와이어를 사용하는 것은 한 루프에서 참조 번호나 변수를 쓰고 다른 루프에서 이를 읽도록 하는 것과 비슷합니다. 참조 번호나 변수를 사용하는 대신, 와이어를 사용하여 데이터 전송을 그래픽적으로 표현합니다.

다음 그림을 보면 채널 와이어를 사용하여 만든 블록다이어그램이 큐 참조 번호를 사용할 때와 똑같은 기능을 수행할 수 있다는 것을 확인할 수 있습니다.

모든 채널에는 최소 두 개의 끝포인트가 있어야 하며, 이는 발신자와 수신자가 됩니다. 끝포인트는 코드에서 데이터를 교환하는 곳입니다. 발신자 끝포인트는 채널에 데이터를 씁니다. 수신자 끝포인트는 채널로부터 데이터를 읽습니다. 채널 와이어를 사용하여 발신자 끝포인트를 수신자 끝포인트에 연결하면, 병렬 코드 섹션 사이에서 비동기적 데이터 통신이 활성화됩니다.

LabVIEW는 어플리케이션 빌드에 사용할 수 있는 채널 템플릿을 다음과 같이 제공합니다. 각각의 템플릿을 다른 통신 프로토콜을 사용합니다. 사용 중인 통신 방법 및 어플리케이션의 필요에 따라 다음 템플릿 중 하나를 선택할 수 있습니다.

터미널 또는 와이어에서 마우스 오른쪽 버튼을 클릭한 후 생성≫채널 발신자 또는 생성≫채널 수신자를 선택하여 채널 발신자 끝포인트 또는 채널 수신자 끝포인트를 생성할 수 있습니다. 이때 나타나는 채널 끝포인트 선택 대화 상자에서, 읽기/쓰기 전환을 클릭하면 발신자 또는 수신자 끝포인트 사이에서 전환할 수 있습니다. 터미널에서 끝포인트를 생성하면, 채널 템플릿에서 해당 데이터 타입을 전송 타입으로 하는 인스턴스가 생성됩니다.

모든 스트림 채널은 분기할 수 없으며, 이는 한 개 발신자 끝포인트를 한 개 수신자 끝포인트와 연결한다는 것을 의미합니다. 다른 모든 채널은 분기할 수 있으며, 따라서 한 채널에 여러 발신자 또는 여러 수신자가 있을 수 있습니다.

채널의 수명 이해하기

채널의 호출 블록다이어그램이 채널 실행을 제어합니다. 호출 블록다이어그램은 채널의 모든 끝포인트 또는 모든 끝포인트를 호출하는 모든 노드가 포함된 가장 낮은 레벨의 블록다이어그램입니다.

채널은 채널의 호출 블록다이어그램이 실행되기 시작하면 초기화됩니다. 채널의 한 끝포인트에서 마지막 원소? 또는 강제 종료 입력이 참이면 채널이 종료됩니다. 채널이 종료되면, 이후 채널에 작성되는 데이터는 무시됩니다. 채널의 호출 블록다이어그램이 다시 실행되기 시작하면 채널이 다시 초기화됩니다. 호출 블록다이어그램은 구조 노드, 또는 VI의 최상위 레벨 블록다이어그램이거나, 현재 최상위 레벨 VI를 호출하는 더 높은 레벨의 블록다이어그램일 수 있습니다.

다음 그림에서, 채널의 호출 블록다이어그램은 이 VI의 최상위 다이어그램입니다. 채널은 호출 블록다이어그램이 실행되기 시작하면 초기화됩니다. 이는 최상위 레벨 VI가 실행되기 시작하거나 최상위 레벨 VI가 SubVI로 호출될 때마다 채널이 초기화된다는 것을 의미합니다.

다음 그림에서, 채널의 호출 블록다이어그램은 While 루프입니다. 채널은 While 루프가 실행되기 시작하면 초기화됩니다. 이는 While 루프가 반복할 때마다 채널이 초기화된다는 것을 의미합니다.

다음 그림에서, 채널의 호출 블록다이어그램은 최상위 VI가 아니고 현재 최상위 블록다이어그램보다 더 높은 레벨의 블록다이어그램입니다. 채널은 더 높은 레벨의 블록다이어그램이 실행되기 시작하면 초기화됩니다. 이는 더 높은 레벨의 블록다이어그램이 실행되기 시작하거나 더 높은 레벨의 블록다이어그램이 SubVI로 호출될 때마다 채널이 초기화된다는 것을 의미합니다. While 루프가 채널의 끝포인트를 모두 포함하고 있지 않기 때문에 While 루프가 반복될 때 채널은 초기화되지 않습니다.

위의 모든 채널 인스턴스에서, 쓰기 끝포인트는 처음 세 개 값을 채널에 쓰고 마지막 두 개 값은 무시하는데, 이는 배열에서 작성되지 않고 남은 원소의 개수가 2일 때 마지막 원소? 입력이 참으로 되기 때문입니다.

복제 끝포인트 정지하기

채널 수신자 또는 발신자를 생성할 때, 강제 종료를 선택하여 불리언 입력 강제 종료와 함께 끝포인트를 생성합니다. 참이면, 강제 종료가 모든 끝포인트에게 알려 강제 종료됨? 출력을 생성하도록 합니다. 모든 끝포인트는 강제 종료 신호를 보낼 수 있습니다. 채널 와이어가 포함된 루프가 있는 경우, 모든 루프를 끝포인트의 강제 종료됨? 출력에 연결하여 끝포인트가 강제 종료 신호를 보내면 루프를 정지시킵니다. 이 메커니즘에는 로컬이 필요하지 않습니다. 복제 끝포인트를 사용하는 경우, 원래 채널이 강제 종료 값을 제공해야 합니다. 복제 끝포인트는 내부 루프를 정지하고 복제된 채널에 강제 종료 값을 전달합니다.

참조 번호 및 변수와 비교해 볼 때 채널 와이어의 장점

채널 와이어를 사용하면 다음과 같은 장점이 있습니다.

  • 채널 와이어를 사용하면 큐와 같은 참조 번호를 생성 및 삭제할 필요가 없습니다.
  • 채널 와이어를 사용하면 큐를 사용할 때보다 블록다이어그램의 노드 수가 줄어듭니다.
  • 채널 와이어는 데이터가 어디에서 어디로 흐르는지 보여주며, 따라서 참조 번호 및 변수보다 데이터 흐름이 보다 시각적이고 디버깅이 보다 용이합니다.
  • 채널 와이어는 정지 및 강제 종료 신호를 데이터와 통합하기 때문에, 참조 번호 및 변수를 사용하여 그러한 신호를 생성할 때보다 에러 발생 가능성이 낮습니다.
  • 채널 와이어를 사용하면 다른 프로그래밍 언어에서 클로저의 역할을 수행하는 공통 루틴을 생성할 수 있습니다. 채널 와이어를 사용하여 공통 루틴을 생성하는 예는 labview\examples\Channels\Replacing The Function At The Heart Of An Algorithm At Run Time\Replacing The Function At The Heart Of An Algorithm At Run Time.lvproj를 참조하십시오.