LabVIEW 블록다이어그램

개요

이 블록다이어그램 소개에서는 이 도구의 개념과 블록다이어그램과 프런트패널의 관계를 살펴봅니다. 또한, 블록다이어그램을 여는 방법, 함수 팔레트에서 객체를 찾아서 블록다이어그램에 놓는 방법, 다른 도구 모음 아이콘을 사용하는 방법도 살펴봅니다. 이에 더해, NI LabVIEW 소프트웨어를 통한 그래픽 코드 생성이라는 중요한 개념을 보여주는 간단한 블록다이어그램을 만드는 방법에 대해서도 배웁니다.

이 블록다이어그램에는 LabVIEW 프로그램의 그래픽 소스 코드가 들어 있습니다. 블록다이어그램의 개념은 논리적이고 간단한 방식으로 그래픽 소스 코드를 사용자 인터페이스에서 분리하는 것입니다. 프런트패널 객체는 블록다이어그램에서 터미널로 나타납니다. 블록다이어그램의 터미널은 해당 프런트패널 객체에 대한 변경 사항을 반영하며, 그 반대도 마찬가지입니다.  

블록다이어그램 윈도우

새 VI를 생성하거나 열면 프런트패널이 자동으로 열립니다. 블록다이어그램을 불러오려면, 메뉴 모음에서 윈도우(WIndow)»블록다이어그램 표시(Show Block Diagram)을 선택하십시오. 또한, <Ctrl-E>를 누르면 블록다이어그램과 프런트패널 사이에서 전환할 수 있습니다.


블록다이어그램 객체 및 환경

블록다이어그램 객체에는 터미널, SubVI, 함수, 상수, 구조와 다른 블록다이어그램의 객체 사이에서 데이터를 전달하는 와이어가 포함됩니다. LabVIEW 도구를 사용하면 VI를 생성, 수정 및 디버깅할 수 있습니다. 도구는 마우스 커서의 특수한 작동 모드로, 커서의 작동 모드는 선택한 도구의 아이콘에 대응합니다. LabVIEW는 마우스의 현재 위치에 따라 사용할 도구를 선택합니다. 도구 팔레트 (메뉴 모음에서 보기(View)»도구 팔레트(Tools Pallette))를 선택하면 필요한 도구를 수동으로 선택할 수 있습니다. 이제 원하는 도구를 선택할 수 있으며 이 도구는 도구(Tools) 팔레트에서 다른 도구를 선택할 때까지 유지됩니다.

블록다이어그램에 객체를 놓으려면, 함수(Functions) 팔레트에서 객체를 끌어서 놓으십시오. 블록다이어그램 작업 공간에서 마우스 오른쪽 버튼을 클릭하면 Functions(함수) 팔레트가 자동으로 나타납니다. 이 팔레트는 함수, 상수, 구조와 몇몇 SubVI를 포함합니다.

함수(Functions) 팔레트의 상단에 있는 두 개의 버튼을 보십시오.

         압정(Thumb Tack) 버튼은 함수(Functions) 팔레트를 블록다이어그램에 고정합니다.

  검색(Search) 버튼을 누르면 검색 대화 상자가 열리고, 이 버튼을 사용해 함수를 이름으로 검색할 수 있습니다.

Search(검색) 버튼을 클릭하여 함수 검색 엔진을 시작합니다. 시작하는 데 약간 시간이 걸립니다.

함수를 찾기 어려울 때 이 도구를 사용하여 이름으로 함수를 검색할 수 있습니다.

원하는 함수가 보이면, 해당 함수를 더블 클릭하십시오. Functions(함수) 팔레트에 해당 함수의 위치가 표시될 것입니다.

참고: 다음 단계를 따라 함수(Functions) 팔레트에서 보이는 서브팔레트를 변경하십시오.

1.       압정 버튼으로 함수(Functions) 팔레트를 블록다이어그램에 고정합니다.

 

2.       함수(Functions) 팔레트를 블록다이어그램에 고정하면 View(보기) 버튼이 나타납니다.

3.       보기(View)를 선택한 후 바로 가기 메뉴에서 보이는 범주 변경(Change Visible Categories)을 선택합니다.

4.       보이는 범주 변경(Change Visible Categories) 대화 상자에서는 가장 많이 사용하는 팔레트를 선택하거나 모두 선택(Select All)을 클릭하여 모든 팔레트를 포함할 수 있습니다.

블록다이어그램의 모양을 변경하려면, 메뉴 모음에서 도구(Tools)»옵션(Options)을 선택합니다. 옵션(Options) 대화 상자에서, 블록다이어그램(Block Diagram) 범주를 선택합니다. 여기서는 블록다이어그램의 모양을 사용자 정의할 수 있습니다. 블록다이어그램의 공간을 절약하려면, 프런트패널 터미널을 아이콘으로 놓기(Place front panel terminals as icons)의 선택을 해제하십시오.


터미널

터미널은 프런트패널 위 객체의 블록다이어그램 모양을 생성합니다. 게다가 터미널은 프런트패널과 블록다이어그램 사이에서 정보를 교환하는 입력 및 출력 포트입니다. 텍스트 기반 프로그래밍 언어의 파라미터 및 상수와 유사한 것으로, 터미널은 컨트롤 또는 인디케이터 터미널, 노드 터미널의 두 가지 타입으로 제공됩니다. 컨트롤 터미널과 인디케이터 터미널은 프런트패널의 컨트롤 및 인디케이터와 연결되어 있습니다.

위의 예에서, 프런트패널 컨트롤 ab에 입력한 데이터는 각 컨트롤 터미널 ab를 통해 블록다이어그램에 들어갑니다. 그러면 이 데이터가 [더하기]와 [빼기] 함수로 들어갑니다. [더하기]와 [빼기] 함수가 계산을 완료하면, 새로운 데이터 값이 생성됩니다. 그 데이터 값은 인디케이터의 터미널로 전달되어, 프런트패널의 인디케이터 a+ba–b를 업데이트합니다.

컨트롤, 인디케이터, 상수

컨트롤, 인디케이터, 상수는 블록다이어그램 알고리즘에서 입력과 출력 역할을 합니다. 컨트롤은 프런트패널에서 값을 받고 데이터를 다른 블록다이어그램 객체에 전달합니다. 인디케이터는 블록다이어그램 로직에서 값을 받고 블록다이어그램에서 프런트패널로 데이터를 전달합니다. 상수는 연결된 객체에 데이터를 전달합니다. 삼각형의 넓이를 계산하는 알고리즘을 생각해 보십시오. 다음과 같은 프런트패널과 블록다이어그램이 있을 수 있습니다.

삼각 배율 상수는 알고리즘 문서를 제외하고는 반드시 프런트패널 윈도우에 나타나는 것은 아닙니다. 단순히 0.5라는 값을 [곱하기] 함수로 전달합니다. 밑변 (cm)높이 (cm) 블록다이어그램 터미널을 살펴보면 넓이 (cm^2) 터미널과 모양이 다릅니다. 이와 같이 블록다이어그램의 컨트롤과 인디케이터 사이에는 두 가지 분명한 차이점이 있습니다. 첫째로 데이터 흐름의 방향을 나타내는 터미널의 화살표가 다릅니다. 컨트롤에 있는 화살표는 데이터가 터미널을 떠남을 보여주는 반면, 인디케이터에 있는 화살표는 데이터가 터미널에 들어옴을 보여줍니다. 두 번째 차이점은 터미널을 둘러싼 테두리입니다. 컨트롤의 테두리 선이 인디케이터의 테두리 선보다 더 두껍습니다.

컨트롤과 인디케이터는 블록다이어그램이나 프런트패널에서 생성할 수 있습니다. 이 길라잡이의 이후 섹션에서 이를 설명합니다.

블록다이어그램 노드

노드는 입력과 출력 중 하나만 있거나 입출력이 모두 있는 블록다이어그램의 객체이며 VI가 실행될 때 동작합니다. 노드는 텍스트 기반 프로그래밍 언어에서의 명령문 (statement), 연산자 (operator), 함수 (function) 및 서브루틴 (subroutine)과 유사한 개념입니다. 노드는 함수도 될 수 있고, SubVI 또는 구조가 될 수도 있습니다. 구조는 케이스 구조, For 루프, While 루프와 같은 프로세스 제어 요소이며, 이후에 설명됩니다. 아래 이미지는 블록다이어그램 노드의 몇 가지 예제를 보여줍니다.

 

 

함수

함수는 LabVIEW의 기본 동작 요소입니다. 함수에는 프런트패널 윈도우나 블록다이어그램 윈도우가 없지만, 컨트롤과 인디케이터처럼 데이터를 전달하기 위한 입력 및 출력 터미널이 있습니다. 블록다이어그램 객체가 함수인지 아닌지는 아이콘 배경색이 옅은 노란색인지를 보고 알 수 있습니다. 함수(Functions) 팔레트에는 수행하는 동작의 유형에 따라 그룹으로 정렬된 함수가 있습니다. 숫자형(Numeric) 서브팔레트를 보면 숫자형 연산을 수행하는 함수가 있습니다.

 

함수의 종류는 다양합니다. 아래와 같이 함수의 배경색은 옅은 노란색이라는 것에 유의하십시오.   

SubVI

SubVI란 다른 VI에서 사용하기 위해 만들었거나, 함수(Functions) 팔레트에서 사용하는 VI입니다. 모든 VI는 SubVI로 사용될 수 있습니다. 블록다이어그램에 있는 SubVI를 더블 클릭하면 해당 SubVI의 프런트패널 윈도우가 나타나고 블록다이어그램에 접근할 수 있습니다. 함수(Functions) 팔레트에서 찾을 수 있는 SubVI의 몇 가지 예제는 다음과 같습니다.

구조

For 루프, 케이스 구조, While 루프를 포함하는 구조는 프로세스 제어에 사용됩니다. 이 부분은 이후의 길라잡이에서 다룹니다. 프로그래밍(Programming) 아래의 함수(Functions) 팔레트에서 구조(Structures) 서브팔레트를 열 수 있습니다.

다음은 여러 가지 구조 예와 그 구조들이 블록다이어그램에서 어떻게 보이는지를 표시합니다.

이제 다음 단계를 따라 아래와 같은 블록다이어그램을 생성하십시오.

1.       도구 모음에서 새 VI를 엽니다. 파일(File)»새 VI(New VI)를 선택합니다.

2.       프로그래밍(Programming) 아래의 숫자형(Numeric) 서브팔레트에서 두 개의 [곱하기] 함수를 블록다이어그램에 놓습니다. 반복하여 블록다이어그램에 두 번째 [곱하기] 함수를 놓습니다.

팁: 블록다이어그램에서 객체를 복사하려면,<ctr> 키를 누른 상태에서 객체를 클릭하고 끌어 놓으십시오.

3.       가장 왼쪽에 있는 [곱하기] 함수 위로 마우스를 이동하여 입력과 출력 터미널이 나타나도록 합니다. 터미널 중 하나 위로 마우스를 움직이면, 와이어 스풀이 마우스가 놓인 터미널의 이름과 함께 나타납니다.

y 터미널에 대한 컨트롤을 생성하려면 해당 터미널 위에서 마우스 오른쪽 버튼을 클릭합니다.

가장 왼쪽에 있는 [곱하기] 함수의 x 터미널에 대해서도 마찬가지로 작업하여 각 입력 터미널에 대해 컨트롤을 추가하십시오.

4.       왼쪽 [곱하기] 함수의 출력 터미널로 마우스 커서를 가져가 오른쪽 [곱하기] 함수의 x 입력에 연결합니다. 와이어 스풀로 바뀌면, 클릭한 상태에서 원하는 입력으로 와이어를 끌어옵니다.

5.       가장 오른쪽 [곱셈] 함수의 y 입력 터미널에서 마우스 오른쪽 버튼을 클릭한 후생성(Create)»상수(Constant)를 선택하여 삼각 배율 상수 0.5를 생성합니다. 상수의 값은 더블 클릭으로 텍스트를 하이라이트하고 새 값을 입력하여 변경할 수 있습니다. 0.5를 입력하고<Enter>를 누릅니다.

  

6.       이제 오른쪽 [곱하기] 함수의 출력에서 마우스 오른쪽 버튼을 클릭한 후 생성(Create)»인디케이터(Indicator)를 선택하여 블록다이어그램 로직의 값을 프런트패널에 전달하는 인디케이터를 생성합니다.

팁: 블록다이어그램이나 프런트패널에 주석을 입력하려면 블록다이어그램을 더블 클릭한 후 자동으로 생성된 텍스트 박스에 주석을 입력합니다.

라벨을 더블 클릭하고 원하는 이름을 입력하여 인디케이터, 컨트롤, 상수의 이름을 변경할 수 있습니다. 라벨이 표시되지 않는 경우, 원하는 객체에서 마우스 오른쪽 버튼을 클릭한 후 보이는 항목(Visible Items)»라벨(Label)을 선택합니다.

7.       이제 <ctr-E>를 누르거나 윈도우(Window)»프런트패널 표시(Show Front Panel)를 선택하여 블록다이어그램에서 생성된 프런트패널을 살펴봅니다. Base (cm)와 Height (cm)라는 두 개의 컨트롤과 Area (cm^2)라는 인디케이터가 자동으로 프런트패널에 생성된 것을 확인합니다. 도구 모음 아이콘에 대해 학습한 후 이 프로그램을 실행해보겠습니다.  

 

블록다이어그램 윈도우 도구 모음

VI를 실행하면 다음 도구 모음이 블록다이어그램에 나타납니다. 블록다이어그램 도구 모음의 일부 버튼을 사용하여 VI를 디버그할 수 있습니다. 이러한 버튼은 이후의 길라잡이에서 다룹니다.

        실행(Run) 버튼을 클릭하여 VI를 실행하십시오. 코드를 컴파일할 필요는 없습니다. LabVIEW가 자동으로 코드를 컴파일합니다. 실행(Run) 버튼이 왼쪽에 보이는 것처럼 하얀 화살표로 나타나면 VI를 실행할 수 있습니다.

        생성 또는 편집한 VI에 에러가 있으면 실행(Run) 버튼이 깨져 보입니다. 블록다이어그램의 연결을 끝낸 후에도 실행(Run) 버튼이 여전히 깨져 있으면 VI가 깨진 상태로, 이 VI는 실행할 수 없습니다. 이 버튼을 클릭하면 모든 에러와 경고를 나열하는 에러 리스트(Error List) 윈도우가 나타납니다.  

        연속 실행(Run Continuously)을 클릭하여 강제 종료하거나 일시 정지할 때까지 계속 실행하십시오. 이 버튼을 다시 클릭하면 연속 실행을 비활성화할 수 있습니다.

        VI가 실행하는 동안 실행 강제 종료(Abort Execution) 버튼이 나타납니다. 다른 어떤 방법으로도 VI를 정지시킬 수 없는 경우, 이 버튼을 클릭하여 VI를 즉시 정지시키십시오. 실행 중인 하나 이상의 최상위 VI가 해당 VI를 사용 중인 경우 버튼은 비활성화됩니다.

주의: 실행 강제 종료(Abort Execution) 버튼은 VI가 현재 반복을 마치기 전이라도 VI를 즉시 정지시킵니다. 외부 하드웨어와 같은 외부 리소스를 사용하는 VI를 강제 종료하는 경우, 해당 외부 리소스를 적절히 리셋 혹은 해제하지 못하여 리소스가 알지 못하는 상태가 될 수 있습니다. VI에 정지 버튼을 만들면 이러한 문제를 피할 수 있습니다.

        일시 정지(Pause) 버튼을 눌러 실행 중인 VI를 정지시키십시오. 일시 정지(Pause) 버튼을 클릭하면, 블록다이어그램에서 실행이 정지된 위치가 하이라이트되고 일시 정지(Pause) 버튼이 빨간색으로 바뀝니다. 일시 정지(Pause) 버튼을 다시 클릭하면 VI를 계속해서 다시 실행할 수 있습니다.

텍스트 셋팅(Text Settings) 풀다운 메뉴를 선택하면 VI에서 선택한 영역에 대한 크기, 스타일, 색 등의 글꼴 설정을 변경할 수 있습니다.

    객체 정렬(Align Objects) 풀다운 메뉴를 클릭하여 수직, 경계, 왼쪽 등을 선택해 축을 따라 객체를 정렬하십시오.  

    객체 간격 조정(Distribute Objects) 풀다운 메뉴를 사용하여 여러 프런트패널 객체를 같은 크기로 조정하십시오.

    객체들이 서로 겹칠 때, 객체들이 쌓인 순서를 결정하려면 재정렬(Reorder) 풀다운 메뉴를 클릭하십시오. 위치 도구로 하나의 객체를 선택한 후 앞으로 이동, 뒤로 이동, 맨 앞으로 이동맨 뒤로 이동 중에서 선택하십시오.  

        기본 도움말 윈도우 표시(Show Context Help Window) 버튼을 클릭하면 기본 도움말 윈도우를 표시할 수 있습니다.

        텍스트 입력(Enter Text)은 이전 값을 대체할 수 있는 새 값이 있다는 것을 알려줍니다. 텍스트 입력(Enter Text) 버튼은 클릭하거나 <Enter> 키를 입력하거나 프런트패널 또는 블록다이어그램 작업 공간을 클릭하면 사라집니다.

블록다이어그램에서 VI 실행하기

마지막으로 생성한 VI에서 연속 실행(Run Continuously) 버튼을 클릭하고 프런트패널의 값을 변경합니다. ab 컨트롤 값을 변경할 때 a*b 인디케이터 값이 어떻게 업데이트되는지 살펴보십시오.

 

앞의 컨트롤에 입력된 값은 블록다이어그램으로 전달되고, 블록다이어그램 로직에 의해 계산된 결과는 프런트패널 인디케이터로 다시 전달됩니다.

실행 강제 종료(Abort Execution) 버튼을 클릭하여 VI를 정지합니다. 메뉴 모음에서 파일(File)»저장(Save)을 선택한 후 프런트패널 윈도우의 오른쪽 위 모서리에 있는 닫기(Close) 버튼을 클릭하여 VI를 저장하고 닫습니다.

블록다이어그램은 모든 가상 계측기에서 가장 기본적인 요소입니다. 블록다이어그램은 데이터 흐름부터 프런트패널의 데이터 입출력에 이르기까지 모든 것을 제어합니다.  LabVIEW 프로그래머는 반드시 블록다이어그램의 작동 방식을 명확하게 이해해야 합니다.

 


동영상           LabVIEW 환경          모듈 홈          FIRST 커뮤니티