본문으로 바로가기

SubVI

category Programming/LabVIEW 2021. 8. 9. 15:34
반응형

SubVI

대부분의 프로그래밍 언어가 그러하듯이, 프로그램 안에서 처리해야 하는 연산이 늘어나면 늘어날수록 프로그램은 복잡해지고 보기 불편해진다. 그래서, C#이나 파이썬과 같은 프로그램에서는 따로 함수를 정의함으로써 메인 프로그램이 복잡해지는 것을 어느 정도 막아준다. 같은 함수를 여러군데에서 호출할 때, 작성된 코드를 재사용할 수 있다는 점도 무시할 수 없는 이점 중 하나이다.

위 그림과 같은 상황을 예로 들어보자. 랩뷰에서 제공하는 삼각함수를 사용하기 위해서는 라디안 데이터가 입력 데이터로 필요하다.

만약, 각도보다 라디안을 사용하는 것이 더 수월한 경우에는 이런 부분이 문제가 되지 않지만, 라디안보다 각도를 사용하는 것이 더 수월한 경우에는 삼각함수를 사용하기 전, 위 그림과 같이 각도를 라디안으로 변경해주는 작업이 선행되어야 한다. 삼각함수의 역함수를 사용했을 때 반환되는 라디안 데이터를 각도로 변환해주는 반대 상황도 마찬가지이다.

삼각함수를 사용할 때마다 위 그림과 같은 코드를 일일이 붙여줘야 한다고 생각해보면, 상당히 귀찮은 작업이 될 수 있다. 앞에서 이야기한 C#이나 파이썬의 경우, 이렇게 데이터를 변환해주는 코드를 함수로 정의해주고 이를 호출해줌으로써 귀찮아질 수 있는 반복 작업을 간단히 우회할 수 있다.

랩뷰도 이러한 함수를 정의하고 호출해서 사용하는 기능을 제공하고 있다.

간단하게 제작된 영상을 통해 SubVI를 만드는 방법을 알아보자.

프로그램에 추가된 SubVI를 더블클릭하면, 위 그림과 같이 SubVI의 프론트 패널과 블록 다이어그램을 열 수 있다. 위 영상에서와 같이 마우스를 이용해서 추가한 영역의 프로그램 코드가 SubVI의 블록 다이어그램에 그대로 구현되어 있다.

본격적으로 프로그램의 실행 과정을 살펴보자. 지금의 예제 프로그램에서 SubVI는 각도 데이터를 라디안 데이터로 변환해주는 연산을 위해 만들어졌다. 다시 말해, 목적대로 SubVI가 동작하기 위해서는 호출 과정에서 하나의 각도 데이터가 전달되어야 하고, 연산 처리 결과인 라디안 데이터를 호출한 위치로 반환해주어야 한다는 의미이다. 특정 VI가 다른 VI를 호출한다는 부분 대신, 사용자가 데이터를 입력하고 실행 결과를 확인한다는 관점에서 바라본다면 데이터를 전달 받기 위한 컨트롤 오브젝트결과를 반환하기 위한 인디케이터가 각각 필요하다는 의미로 해석할 수 있다. 그리고, 랩뷰에서는 SubVI를 생성하는 과정에서 필요한 컨트롤과 인디케이터 오브젝트를 자동으로 추가해준다.

SubVI를 함수의 개념으로 접근했을 때, 꼭 하나의 입력 매개 변수와 출력 매개 변수가 아닌, 다수의 입/출력 매개 변수를 가질 수 있다. 그리고, 이러한 입/출력 매개 변수는 SubVI의 입/출력 터미널로 매핑되어 다른 VI에 의해 호출될 때 데이터를 교환한다. 입/출력 매개 변수와 입/출력 터미널 사이의 매핑 작업은 SubVI의 프론트 패널에서 진행된다. 프론트 패널의 오른쪽 윗 부분에는 SubVI를 표현하는 아이콘과 입/출력 터미널을 정의하는 부분이 나란히 붙어있는데,

입/출력 터미널을 정의하는 부분을 마우스 오른쪽 클릭해서 터미널을 추가하거나 삭제할 수 있고, 패턴 자체를 변경할 수도 있다. 입/출력 터미널에 매개 변수를 매핑하면, 해당 터미널에는 매개 변수의 데이터 타입을 의미하는 색이 채워진다.

오브젝트의 매핑은 마우스를 이용해서 진행한다. 먼저, 입/출력 터미널의 빈 곳 중 원하는 터미널을 클릭하고, 프론트 패널의 오브젝트를 선택하면 매핑이 이루어진다.

지금까지의 과정을 통해 SubVI를 만들고 다른 VI에서 호출함으로써 자칫 복잡해질 수 있는 프로그램을 보다 간결하게 만들어줄 수 있고, 특정 코드를 재사용함으로써 효율적인 프로그램의 작성도 가능해진다. 작성하려는 프로그램이 복잡하면 복잡할수록 이런 SubVI들의 유용함은 더욱 빛을 발할 수 밖에 없는데, 그럼에도 불구하고 지금까지의 내용만으로 다수의 SubVI를 이용해서 프로그램을 작성한다면, 상당히 곤란한 상황을 직면하게 될 수 있다.

처음 SubVI를 생성하면 랩뷰는 위 그림과 같은 아이콘과 사각 박스 형태로 SubVI를 표현한다. 앞에서 이야기한 대로, 몇 개의 SubVI가 사용되는 경우라면 약간의 코멘트 처리만으로도 어떤 목적의 SubVI인지 구별할 수 있을 것이다. 하지만, 복잡한 연산의 프로그램을 다수의 SubVI로 나눠서 구현한 경우라면, 비슷하게 생긴 아이콘들로 구성된 SubVI들의 개별적인 역할을 직관적으로 확인하기는 어려워진다. 이를 위해 랩뷰에서는 아이콘 편집 기능을 제공한다.

SubVI의 입/출력 터미널 옆에 위치하고 있는 아이콘 부분을 더블 클릭하면, 위 그림과 같은 아이콘 데이터 화면이 나타난다. 여기에서 SubVI의 기능을 설명하는 간단한 아이콘을 어렵지 않게 직접 제작할 수 있고, 이를 통해 각 SubVI들을 빠르게 구분할 수 있게 된다. 물론, 그럴싸한 아이콘을 만들기 위해서는 공돌이 & 공순이 답지 않은 미적 감각이 필요하긴 하지만…. ㅎㅎㅎ

반응형

'Programming > LabVIEW' 카테고리의 다른 글

랩뷰에서 파이썬 호출하기  (0) 2021.08.09
랩뷰에서 파이썬 실행하기  (0) 2021.08.09
SET과 MAP 데이터의 함수들  (0) 2021.08.07
MAP 데이터 타입  (0) 2021.08.06
SET 데이터 타입  (0) 2021.08.03