본문 바로가기
Engineering

[LabVIEW] 랩뷰 디자인 패턴 사용하기

by 투썬 아빠 2011. 1. 12.



LabVIEW에서 주로 사용 되는 디자인 패턴은 크게 두 분류, '단일 루프 디자인 패턴'과 '여러 루프 디자인 패턴'으로 나뉘게 된다

 

단일 루프 디자인 패턴의 경우 대표적으로 상태 머신 디자인 패턴이 있으며,

여러 루프 디자인 패턴은 생산자-소비자 디자인 패턴을 예로 들 수 있다. 

 

여기에서는 앞서 이야기한 디자인 패턴에 대해 간략히 알아보고, 

LabVIEW에서 기본적으로 제공하는 패턴을 생성하는 법을 알아보도록 하자.

 

 

1. 상태 머신 디자인 패턴

상태 머신 디자인 패턴은 주 어플리케이션 단계에서 루프 내에 케이스 구조를 가지고 있다.

상태 머신 디자인 패턴을 사용하면 조건에 따라 루프가 실행될 때마다 다른 코드를 실행할 수 있다.

각 케이스가 머신의 상태를 정의하므로 상태 머신이라 한다.

LabVIEW의 상태 머신은 While 루프, 케이스 구조 및 시프트 레지스터로 구성된다. 상태 머신의 각 상태가 케이스 구조의 개별 케이스가 된다.

상태가 해당 케이스 내에서 실행해야 하는 VI와 코드를 배치하고, 시프트 레지스터는 루프가 다음에 반복될 때 실행해야 하는 상태를 저장한다.

    

상태 머신 디자인 패턴을 사용하면 블록 다이어그램을 훨씬 작게 만들 수 있으므로, 코드의 가독성이 올라가며, 디버깅이 보다 쉬워 진다.

각 케이스에 따라 다음의 상태가 결정된다는 점이 상태 머신 구조의 장점이다.

 

상태 머신 구조를 잘못 설계하게 되면 상태를 건너 뛸 수 있으며, 두 개 이상의 상태가 동시에 호출되면 하나의 상태만이 처리되고 다른 상태는 실행되지 않는 경우가 발생할 수 있다. 따라서 보다 복잡한 상태 머신 디자인 패턴에서는 상태를 건너 뛰지 않도록 이벤트 또는 상태 큐를 만드는 코드가 추가적으로 포함되어야 한다.

 

 

2. 생산자 - 소비자 디자인 패턴

생산자-소비자 디자인 패턴은 다른 속도에서 실행되는 여러 루프 간의 데이터 공유를 향상 시킨다.

생산자-소비자 디자인 패턴의 병렬 루프는 데이터를 생성하는 루프와 생성된 데이터를 소비하는 루프, 두가지 항목으로 구분된다.

데이터 큐는 루프간의 데이터 통신을 수행하며, 생산자 루프와 소비자 루프간에 데이터를 버퍼링 힌다.

이 디자인 패턴에서는 소비자 루프가 적절한 속도로 데이터를 처리하고, 생산자 루프가 계속해서 추가적인 데이터를 큐에 삽입한다.

이러한 구조의 특성상 소비자 루프의 동작은 생산자 루프에 종속된다.

이는 위의 그림에서 보면 알 수 있는데, 생산자 루프에는 타이밍 vi가 있지만, 소비자 루프에는 타이밍 vi가 없다. 이는 생산자 루프에서 작업하는 속도에 영향을 받아 자동적으로 소비자 루프의 동작 시간이 결정되기 때문이다.

 

 

3. LabVIEW 템플릿을 이용한 기본 패턴 만들기

이 번에는 앞서 언급한 디자인 패턴을 생성하는 방법을 알아보자.

가장 기본적인 방법은 사용자가 직접 설계하는 것이지만, 초보자나 기본적인 디자인 패턴을 사용하고자 한다면, LabVIEW에서 제공하는 템플릿을 사용하기를 추천한다.

1) LabVIEW 실행

LabVIEW를 실행하면 위와 같은 시작 화면이 나타난다.

여기에서 '새로 만들기' 아래의 '기타'를 클릭하도록 하자

2) 템플릿 선택

새로 만들기 창이 나타나면 프로젝트를 생성 및 템플릿을 이용하는 등의 다양한 방법으로 LabVIEW를 시작할 수 있다.

여기에서는 'VI'->'템플릿으로 부터'->'프레임워크'->'디자인 패턴'을 이용하도록 한다.

만들고자 하는 프로그램의 성향에 맞게 디자인패턴을 선택하여 '확인'버튼을 클릭하면 자동으로 기본적인 디자인패턴의 vi가 생성된다.

위의 그림은 템플릿을 이용한 마스터/슬레이브 디자인 패턴의 기본적인 모습이다.


댓글