안녕하세요. 오늘은 프로퍼티 노드에 대해서 설명을 드리겠습니다.
프로퍼티 노드를 사용하는 방법은 2가지가 있는데 참조를 이용하는 방법과 직접 프로퍼티 노드를 생성해서 사용하는 방법이 있습니다. 오늘은 프로퍼티노드만을 이용해서 카운트를 올리는 프로그램을 만들도록 하겠습니다.
|
그림1) 버튼생성후 기계적동작 변경 |
새로운 VI를 생성후 그림 1과 같은 버튼을 설정 합니다. 스위치의 기계적 상태는 '놓을때 위치'로 설정을 합니다. 이후 'Start', 'Hold', 'Reset', 'Stop' 버튼을 만들어 같은 기계적 상태로 놓습니다.
|
그림2) 숫자형 컨트롤 생성 |
|
그림3) 숫자형 컨트롤 글짜크기 변경 |
|
그림4) 숫자형 컨트롤의 형을 변경 |
그림2~4까지 숫자형 컨트롤을 만들고 프런트 패널에 배치합니다.
|
그림5) 프런트패널 완성 |
|
그림6) 숫자형 컨트롤을 인디게이터로 변경 |
숫자형 인디게이터는 Count에만 사용하기 때문에 블록 다이어그램에서 인디게이터로 변환합니다.
|
그림7) 플랫 시퀸스, While, 이벤트 케이스 생성후 프로퍼티 생성그림7과 같이 플랫 시퀸스안에 케이스를 2개를 만듭니다. 2번째 케이스에 While루프와 그안에 이벤트 케이스를 만들어 줍니다. |
첫번째 케이스에 각 버튼을 초기화 해야 하기 때문에 그림7에서 블록다이어그램에 있는 버튼을 우클릭후 프로퍼티 노드에 들어가서 값을 선택합니다.
|
그림8) 프로퍼티에 값과비활성화 포함 |
프로퍼티노드는 원하는 많큼 층을 만들수가 있습니다. 마우스로 프로퍼티노드를 아래로 끌면 다른 속성의 프로퍼티노드가 생성됩니다. 그리고 초기화하는 케이스에 비활성화를 선택해 줍니다.
|
그림9) 초기화 케이스구조 |
그림9는 프로그램이 처음 시작될때 버튼들을 초기화 해줍니다. 처음 시작되면 'Start', 'Stop' 버튼을 제외하고 모두 비활성화 상태가 됩니다.
|
그림10) 타임아웃시 코딩 |
그림10과 같이 타임아웃을 코딩합니다. 위 사진에서 이벤트 케이스는 200ms마다 한번씩 Start값이 참이면 1씩 올라가는 것을 알수 있습니다. Count 인디게이터는 이벤트 케이스 바깥 오른쪽에 있습니다.
위와 같은 아이콘은 쉬프트 레지스터로
Lesson6을 참고 부탁드립니다.
|
그림11) 이벤트 케이스 추가 |
|
그림12) 이벤트 케이스 추가(총4개) |
그림11,12와 같이 이벤트 케이스를 추가를 해줍니다. 자세한 추가 방법에 대해서는
Lesson 7을 참고해 주시기 바랍니다.
|
그림13) 이벤트케이스 Stop |
사용자가 Stop을 누를시 다시 확인하는 메세지를 띄우고 정지를 하는 코드를 만듭니다.
|
그림14) 이벤트케이스 Reset |
|
그림15) 이벤트케이스 Reset |
Reset버튼을 누를시 Count값이 0으로 초기화(그림14) 합니다. 동시에 'Hold', 'Reset'버튼을 비활성화 합니다.
|
그림16) 이벤트케이스 Hold |
|
그림17) 이벤트케이스 Hold |
Hold버튼을 누를시 Count값이 정지(그림10,17) 합니다. 동시에 'Hold', 'Reset'버튼을 비활성화 합니다.
|
그림18) 이벤트케이스 Start |
|
그림19) 이벤트케이스 Start |
Start버튼을 누를시 Count값이 증가(그림10,18) 합니다. 동시에 'Start', 'Reset', 'Stop'버튼을 비활성화 합니다.
|
그림20) 프로그램 테스트1 |
|
그림22) 프로그램 테스트2 |
어느 버튼을 누르냐에 따라 사용자가 누를수 있는 버튼수를 제한할수가 있습니다. 이렇게 프로퍼티 노드를 사용하는 이유는 사용자가 실수로 다른 버튼을 눌러 프로그램이 오류에 걸리지 않게 하기 위한 것입니다.
예를 들어 이미 Count가 올라가고 있는 상황에서 사용자가 Stop를 눌러버리면 숫자가 올라가는 도중 프로그램이 종료됩니다. 따라서 사용자가 어떤 버튼을 누르냐에 따라서 다음에 누를수 있는 버튼을 결정할수 있습니다.
그럼 다음에는 참조를 이용해서 프로퍼티 노드를 사용하는 법에 대해서 설명해 드리겠습니다.
댓글
댓글 쓰기