MoonNote

반응형
     

 

 

 

이번 시간에는 분기문 또는 조건문에 대해서 알아보겠습니다. 프로그래밍 언어란 결국에는 사람의 생각하는 방법을 모방하여 문법을 형성한 것인데요. 프로그래밍이 아니더라도 우리는 항상 매번 선택을 해야하는 순간들이 있죠..이 선택 한번에 의해 결과는 달라지게 되는데, 이러한 특성을 가지고 있는 것이 바로 조건문(분기문)입니다. 프로그래밍을 접해보신 분들이라면 우리가 익히 알고 있는 If문, Switch/Case문 등이 바로 이런 문법이라고 할 수 있겠네요. LabVIEW에서는 CASE 구조 하나로 조건에 따른 서로 다른 기능을 구현할 수 있습니다.

 

분기문, 선택의 갈림길에 놓인 사용자

 

케이스 구조(CASE Structure)

케이스 구조는 함수 팔레트 >> 프로그래밍 >> 구조 >> 케이스 구조를 선택하시면 생성하실 수 있습니다.

랩뷰(LabVIEW) 케이스 구조 위치


케이스 구조를 선택한 다음 블록다이어그램에서 원하는 크기만큼 드래그하면 아래의 이미지처럼 생성이 됩니다. 구성은 총 3가지(선택자 라벨, 서브다이어그램, 케이스 선택자)로 구성되며 각각의 구성 요소들에 대한 설명은 아래와 같습니다.

LabVIEW 케이스 구조(CASE Structure)

① 선택자 라벨 : 케이스가 실행시키는 값을 디스플레이합니다. 

② 서브다이어그램(케이스) : 특정 케이스(조건)일 때 실행될 코드를 작성하는 공간입니다.

③ 케이스 선택자 : 케이스 구조를 실행시키기 위한 입력 값을 받아오는 터미털입니다. 기본 데이터 타입 3가지(숫자, 문자, 불리언)과 에러 클러스터를 연결할 수 있습니다.

 

 

 

위의 이미지에서 케이스 선택자의 색상이 녹색인 것은 최초 케이스 구조 생성시 연결 타입이 기본적으로 불리언(참/거짓)으로 지정이 되어있기 때문입니다. 한 번에 단 하나의 서브다이어그램만 볼 수 있으며 실행 단계 또한 하나의 케이스만 실행합니다. 다른 케이스로의 전환은 선택자 라벨 옆의 좌우 화살표를 클릭하여 케이스를 넘기거나 서브다이어그램쪽에 마우스 커서를 위치시켜두고 "Ctrl + 마우스 휠"을 통하여 케이스를 전환할 수 있습니다.

케이스 전환 방법

 

케이스 구조 사용 예시

한번 케이스 구조 사용 예시를 들어보겠습니다. 데이터 값을 측정하여 LabVIEW 웨이브폼 차트로 보고있다고 가정해보겠습니다. 이 때 디스플레이 버튼을 누르면 데이터를 차트에 디스플레이하고, 누르지 않았다면 'NaN' 값을 연결하여 차트에 데이터를 표시하지 않도록 설계해보겠습니다. 예시에서는 Sine 파형 측정을 하도록 작성하였고, 아래는 이를 코드로 표현해보았을 때 블록다이어그램 이미지입니다. 이미지의 반대쪽 케이스는 단순 입출력 터널들끼리 와이어링 연결만 되어있으니 참고 부탁 드립니다.

 

케이스 구조(CASE Structure) 사용 예시 코드

실행해보면 버튼을 눌렀는지 여부(조건)에 따라서 그래프에 데이터를 표시하거나 하지 않는 것을 확인할 수 있습니다.

 

실행 결과 화면 : 버튼 눌림 여부(조건)에 따른 데이터 그래프 표시

 

TIP
 
 

'NaN'은 Not-a-Number라는 의미로 숫자 값이 아니다라는 의미입니다. 그래프 또는 차트에 NaN으로 입력을 넣어주게 되면 플롯이 표시되지 않습니다.

 

 

숫자형, 문자형 케이스 및 기본 케이스 설정

기본적으로 케이스 구조에 연결 가능한 타입은 숫자형, 문자, 불리언 3가지 타입이 가능하였는데요.(에러 클러스터는 설명에서는 제외) 불리언의 경우 예시에서 살펴보았기 때문에 생략하고 나머지 숫자형과 문자형 케이스에 대해서 살펴보겠습니다. 불리언 데이터의 경우 값이 무조건 참 또는 거짓 2개로만 가지지만 숫자형과 문자형의 경우 고려해야할 조건들이 훨씬 많을 때가 있습니다. 어떤 경우인지 살펴보면 다음과 같습니다.

 

- 숫자형 : ¹범위를 가진 조건, ²동일한 기능이지만 입력 값이 다를 경우(예: 1, 3, 5일 때 A라는 기능 실행), ³지정하지 않은 값이 들어올 경우

- 문자형 : ¹지정하지 않은 값이 들어올 경우

 

숫자형 케이스

먼저 케이스 선택자에 숫자형 데이터를 와이어링시켜서 '숫자형 케이스'로 타입을 변경시켜줍니다.

숫자형 케이스 구조(Numeric case structure)

 

범위를 지정해주고 싶을 경우 선택자 라벨을 클릭하여 커서가 활성화 되었을 때 점 두개(..)를 이용하여 범위를 지정할 수 있습니다. 범위(시작~끝), 지정한 값 이상 또는 이하로 설정하였을 때 선택자 라벨 이미지입니다.

선택자 라벨 - 숫자형 케이스 범위 지정

 

연속적이지 않은 입력 값들에 대해 동일한 기능을 설정하고자 한다면 콤마(,)를 가지고 설정을 해주면됩니다.

여러 입력 값들을 하나의 케이스를 사용하도록 설정

 

문자형 케이스

문자형 케이스도 숫자형과 마찬가지로 케이스 선택자에 문자형 타입을 와이어링하여 문자형 케이스로 변경합니다.

문자형 케이스 구조(String case structure)

 

문자형 케이스의 경우 선택자 라벨에 따옴표(" ") 사이 값으로 케이스를 판별합니다. 숫자형처럼 범위를 지정하는 경우는 없지만 문자 입력같은 경우도 워낙 값이 다양하기에 모든 경우의 수를 코드로 작성하기란 쉽지 않습니다. 이럴 때 사용하는 것이 케이스 구조의 '기본 케이스' 옵션인데요.  '기본' 케이스는 말 그대로 코드로 미리 설정해둔 값 이외의 값이 케이스 선택자로 들어올 경우 미리 지정해둔 '기본' 케이스 속의 서브다이어그램을 실행시키는 기능입니다. 숫자형 케이스 역시 기본 케이스 지정을 통해 설정한 값 이외의 입력에 대한 처리를 할 수 있습니다. (불리언 케이스도 기본 케이스 지정이 있었지만 어차피 거짓, 참 값만 존재해서인지 최신 버전에서는 따로 라벨에 표시되지는 않는 것 같습니다..) 내가 원하는 케이스를 '기본'으로 설정하려면 케이스 구조를 선택한다음 경계 또는 선택자 라벨에서 우클릭하여 '기본 케이스로 지정' 아이템을 선택하시면 됩니다.

 

'기본' 케이스 설정 화면

 

따로 설정하지 않았다면 케이스 구조의 기본 케이스 설정 또한 입력 데이터 타입의 기본 값을 기준으로 설정이 되어있으니 이 점 참고하시기 바랍니다. 기본 데이터 타입 3가지에 대한 기본 값은 0, ""(빈 문자열), 거짓 값입니다.

데이터 타입 기본 값


에러 케이스 구조(Error CASE structure)

기본 3가지 타입 외에도 에러 클러스터를 케이스 선택자에 와이어링할 수 있는데요. 이 때 케이스 구조는 에러 핸들링을 할 수 있는 에러 케이스 구조가 됩니다. 에러 케이스라고해도 결국엔 에러 클러스터 안의 에러 유무(불리언) 정보를 가지고 케이스를 선택하게 되는 형태이며 케이스 구조 외에도 불리언 입력을 받는 LabVIEW 노드들은 최신 버전에서는 바로 에러 데이터를 와이어링할 수 있도록 지원하고 있습니다.(구버전 랩뷰는 클러스터 풀기로 에러 유무(불리언) 값만 와이어링해야지 연결이 되었었습니다.)

 

LabVIEW 에러 케이스 구조(Error CASE structure)

이상으로 LabVIEW 조건문, CASE 구조에 대해서 알아보았습니다.

 

 

 

 

 

 

※ 이 글이 도움이 되었다면 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band