블록다이어그램의 데이터 흐름
- 업데이트 날짜:2025-08-27
- 3분 (읽기 시간)
LabVIEW는 데이터 흐름 모델에 따라 VI를 실행합니다. 블록다이어그램은 필요한 모든 입력을 받은 후에 실행됩니다. 노드가 실행되면, 출력 데이터를 생성한 후 이를 데이터 흐름 경로에 따라 다음 노드로 전달합니다. 노드를 통과하는 데이터의 흐름은 블록다이어그램에 있는 VI 및 함수의 실행 순서를 결정합니다.
Visual Basic, C++, JAVA 및 대부분의 다른 텍스트 기반 프로그래밍 언어는 프로그램 실행에 흐름 제어 모델을 따릅니다. 흐름 제어에서, 프로그램 원소의 순서는 프로그램의 실행 순서를 결정합니다.
LabVIEW에서, 명령의 순서가 아닌 데이터의 흐름이 블록다이어그램 원소의 실행 순서를 결정합니다. 그러므로, 동시 작업을 할 수 있는 블록다이어그램을 생성할 수 있습니다. 예를 들어, 다음 블록다이어그램에서와 같이 두 개의 For 루프를 동시에 실행하고 프런트패널에 결과를 디스플레이할 수 있습니다.
LabVIEW는 여러개의 실행 스레드와 VI를 동시에 실행하는 멀티태스킹 및 멀티스레드 시스템입니다.
데이터 의존성과 인위적인 데이터 의존성
흐름 제어 모델의 실행은 명령에 따라서 수행됩니다. 데이터 흐름은 데이터에 의해 실행되거나 데이터 의존적으로 실행됩니다. 다른 노드에서 데이터를 받는 노드는 항상 다른 노드가 실행을 완전히 끝낸 이후에 실행됩니다.
와이어가 연결되지 않은 블록다이어그램 노드는 임의의 순서로 실행될 수 있습니다. 데이터 의존성이 없을 때 흐름 파라미터를 사용하여 실행 순서를 컨트롤할 수 있습니다. 흐름 파라미터를 사용할 수 없을 때 시퀀스 구조를 사용하여 실행 순서를 컨트롤할 수 있습니다.
데이터 의존성 잃기
데이터 의존성이 없을 때 실행이 왼쪽에서 오른쪽, 위에서 아래쪽으로 진행된다고 가정하지 마십시오. 필요한 경우 데이터 흐름을 연결해서 이벤트의 순서를 명백히 정의합니다.
다음 블록다이어그램에서, [2진 파일로부터 읽기] 함수가 [파일 닫기] 함수에 연결되지 않았기 때문에 [2진 파일로부터 읽기] 함수와 [파일 닫기] 함수 사이에 의존성이 없습니다. 어떤 함수가 먼저 실행될지 결정할 방법이 없기 때문에 이 예제는 의도한대로 실행되지 않을 것입니다. [파일 닫기] 함수가 먼저 실행되면, [2진 파일로부터 읽기] 함수는 작동할 수 없습니다.
다음 블록다이어그램은 [2진 파일로부터 읽기] 함수의 출력을 [파일 닫기] 함수에 연결하여 의존성을 만듭니다. [파일 닫기] 함수는 [2진 파일로부터 읽기] 함수의 출력을 받기 전까지는 실행되지 않습니다.
흐름 파라미터
일반적으로 참조 번호 또는 에러 클러스터인 흐름 파라미터는 대응하는 입력 파라미터와 같은 값을 반환합니다. 이 파라미터를 사용하여 데이터 의존성이 없을 때 실행 순서를 컨트롤할 수 있습니다. 실행하려는 첫번째 노드의 흐름 출력을 실행하려는 다음으로 실행하려는 노드의 대응하는 입력에 연결하여 인위적인 데이터 의존성을 생성합니다. 이러한 흐름 파라미터 없이 원하는 순서대로 데이터 연산을 수행하려면 반드시 시퀀스 구조를 사용해야 합니다.
데이터 흐름과 메모리 관리
데이터 흐름 실행은 실행 흐름 제어 모델보다 메모리 관리가 쉽습니다. LabVIEW에서는 변수에 메모리를 할당하거나 변수에 값을 지정하지 않습니다. 대신에, 데이터 전달을 나타내는 와이어를 가진 블록다이어그램을 생성합니다.
데이터를 생성하는 VI와 함수는 자동적으로 해당 데이터에 대한 메모리를 할당합니다. VI 또는 함수가 더 이상 데이터를 사용하지 않을 때, LabVIEW는 할당된 메모리를 해제합니다. 새 데이터를 배열 또는 문자열에 추가할 때, LabVIEW는 새 데이터를 관리할 수 있는 충분한 메모리를 할당합니다.
LabVIEW가 자동적으로 메모리를 관리하기 때문에, 언제 메모리를 할당하고 해제할지를 조절하기 어렵습니다. VI가 큰 데이터 세트를 다루는 경우, 메모리 할당이 언제 이루어지는지 알 필요가 있습니다. 관련된 원리를 이해하는 것은 메모리의 사용이 극히 적은 VI를 만드는데 도움이 될 수 있습니다. 메모리 사용을 최소화하는 것은 VI의 실행 속도를 높이는 데 도움이 될 수 있습니다.