Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)

안녕하세요 알렉스 입니다. 오늘은 저번 글과 마찬가지로 프로퍼티 노드에 대해서 설명해 드리겠습니다. 저번에는 프로퍼티 노드 자체를 생성해서 사용했는데 이번에는 참조를 이용해서 만들어보도록 하겠습니다.


제가 참조를 이용해서 프로퍼티 노드를 사용하는 이유는 SubVI때분 입니다. 사실 글로벌 변수로 각 VI들이 데이터를 주고 받을수 있지만 참조를 통해서도 데이터를 교활할수 있습니다.

그럼 먼저 프로젝트를 생성하도록 하겠습니다.


그림1) 프로젝트 생성

그림2) 프로젝트에 Main.vi 생성

먼저 프로젝트를 생성한 후에 Main.vi를 생성해 줍니다. Main.vi는 프로젝트에서 우선적으로 동작될 프로그램 입니다.


그림3) 프런트 패널 디자인

그림4) Stop버튼을 놓을때 스위치로 변경

프런트 패널을 보시면 LED와 Stop버튼만 있습니다. 그림3과 같이 배치 해 주시고 그림4에서 Stop의 기계적 동작을 '놓을때 스위치'로 변경 하면 됩니다.

그림5) Stop버튼에 참조 생성

이제 불리언과 Stop버튼의 참조를 생성해 줍니다. 컨트롤 패널 또는 블록다이어 그램에서 마우스로 해당 컨트롤 또는 변수를 우클릭 한 후에 생성에 들어가면 참조를 생성할수 있습니다.

그림6) 프로퍼티노드 위치

저번 글과 달리 이번에는 참조를 이용한 프로퍼티 노드를 생성하는 방법 입니다. 블록다이어 그램에서 그림6에 위치함 프로퍼티 노드는 생성하시면 됩니다. 프로퍼티 노드 왼쪽에 참조값이 들어가면 기존의 프로퍼티 노드처럼 사용이 가능합니다.

그림7) 프로퍼티노드 속성 선택

프로퍼티 노드를 참조와 연결한 수에 좌클릭을 하시면 여러 속성이 나오는데 지금은 값을 선택하도록 하겠습니다.

그림8) 프로퍼티 노드를 쓰기로 변경

처음 플랫 케이스는 초기화이기 때문에 Stop의 프로퍼티노드를 False로 해야 합니다. 따라서 쓰기로 변경해 줍니다.

그림9) 프로퍼티 노드를 쓰기상태

그림10) 다음 케이스 코딩
 이제 그림10과 같이 블록다이어그램을 코딩해 줍니다. 참조에 연결된(왼쪽) 프로퍼티 노드에서 참조를 출력(오른쪽)해 다음 케이스에 연결해 줍니다. 그 후 위 그림과 같이 코딩을 하시면 됩니다. (not아이콘의 위치는 그림11참고)

그림11) 블록 다이어그램 에서 'Not' 위치

그림12) 프로그램 테스트
이후 테스트를 하면 불리언이 500ms마다 불빛이 바뀌는것을 알수 있습니다.



그림13) While Loop를 SubVI로 변환

그림14) SubVI 구조

이제 While Loop를 SubVI로 바꾸어서 테스트를 할수 있습니다. 만약 참조를 쓰지 않는다면 Main.vi가 가동하는 순간 SubVI는 처음 받는 데이터를 제외하고 더이상 데이터 교환이 일어나지 않는채 계속 SubVI 내부의 While Loop는 반복을 하게 됩니다. 하지만 참조로 연결되어 있어 SubVI와 Main.vi도 서로 데이터를 교환할수 있습니다. 이경우 불리언이 500ms 마다 키고 꺼지는 것과 Stop버튼을 Main.vi에서 누르면 SubVI도 동일하게 적용되서 멈춘다는 것입니다. (SubVI만드는 법은 Lesson 10을 참고하시기 바랍니다.)

그림15) 테스트 정상


참조는 SubVI에 사용하면 편리합니다. 하지만 모든것을 참조를 이용해 짠다면 프로그램의 복잡성은 상당히 높아지게 됩니다. 디버깅을 할려면 일일이 선을 따라가야 하기 때문입니다. 따라서 참조를 최소화로 쓰는 것을 추천 드립니다.



Lesson 12_2 예제 링크


댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2