이번 글에서는 자동화 설비의 어플리케이션 개발에 상당히 유용한 기능인 Event 구조에 대해 알아보겠습니다. 일반적으로 시퀀스 제어 시스템들은 트리거 신호나 여러 센서들의 신호에 따라 단계별로 공정을 진행합니다. 다시 말해서, 특정 이벤트가 발생했을 때 처리해야 하는 작업들을 프로그램으로 작성하구요. 실제로 해당 이벤트가 발생했을 때 작성된 프로그램이 실행되도록 만들어 주는 것이 필요하다는 의미입니다.
물론 지금까지의 알아본 CASE 구조나 논리 연산자들을 이용해서 특정 트리거 신호의 상태 변화에 따라 반응하도록 프로그램을 작성할 수는 있습니다. 대신에 어떻게 신호를 처리할 것인지에 대한 많은 숙고와 구현 과정에서의 많은 시행 착오를 야기시키기 때문에 그렇게 권장할만한 방법은 아니지요. 이럴 때 사용하는 것이 Event 구조인데요. 지금부터 하나씩 알아가보도록 하겠습니다.
Event 구조도 블록 다이어그램에 추가할 수 있습니다. 위 그림과 같이 블록 다이어그램의 빈 공간을 마우스 우클릭해서 함수 팔레트를 열어준 다음에, 프로그래밍 → 구조 → 이벤트 구조를 선택하구요. 원하는 영역을 마우스로 드래그하면 이벤트 구조를 블록 다이어그램에 추가할 수 있습니다.
함수 팔레트 안에서 선택하는 메뉴만 달라졌을 뿐, 블록 다이어그램에 추가하는 과정은 CASE 구조에서 설명드린 방법과 동일하므로, 이벤트 구조를 추가하는 방법에 대한 구체적인 시연 영상을 확인하실 분들은 아래의 링크를 통해 CASE 구조에 대한 내용을 참고하시기 바랍니다.
[Programming/LabVIEW] - CASE 구조에 대해 알아보자.
블록 다이어그램에 추가된 이벤트 구조는 이전 글에서 살펴본 CASE 구조와 약간은 비슷한 외형을 가지고 있습니다. 일단 가장 눈에 띄는 부분이 제일 상단에 위치하는 이벤트 선택자 라벨인데요. 앞에서 말씀드렸듯이, 이벤트 구조는 특정 이벤트가 발생했을 때 어떤 작업을 처리할 것인지를 작성하기 위한 용도로 사용하기 때문에, 발생할 수 있는 이벤트에 대한 선택자 라벨을 상단 중앙에 배치함으로써, 현재 서브 다이어그램을 통해 보여지는 프로그램이 어떤 이벤트에 대한 프로그램인지를 알려주고 있습니다. 다만 차이가 있다면, CASE 구조에서는 왼쪽편에 위치하는 케이스 선택자로 어떤 데이터가 전달되는지에 따라 케이스를 선택했다면, 이벤트 구조에서는 프런트 패널을 통해 전달되는 사용자 입력부터 프로그램 내부에서 발생하는 특정 데이터의 변화까지, 트리거의 소스로 삼을 수 있는 다양한 이벤트들이 산재해 있기 때문에 특정 터미널을 통해 소스 정보를 수집하는 것이 애매하므로, 별도의 케이스 선택자가 없다는 것입니다. 대신에, 서브 다이어그램 안에서 이벤트 신호를 참조할 수 있도록 왼쪽편에 데이터 노드를 두고 있습니다.
이벤트 케이스에서 새로운 이벤트는 위 그림에서 보여드리는 것처럼 이벤트 구조의 테두리를 마우스 우클릭했을 때 나타나는 팝업 메뉴에서 이벤트 케이스 추가...를 선택하면 추가할 수 있습니다.
실제로 이벤트 케이스 추가... 메뉴를 선택하면 위 그림과 같은 이벤트 편집 대화창이 나타나는데요. 여기서 이벤트의 트리거에 대한 내용을 설정할 수 있습니다. 우선 상단에는 이벤트 선택자 라벨이 가로로 길게 위치하고 있습니다. 현재 어떤 이벤트에 대한 트리거를 설정하고 있는지를 확인할 수 있구요. 드롭 다운 메뉴를 클릭함으로써, 다른 이벤트로 변경할 수도 있습니다.
이벤트 선택자 라벨 아래로는 이벤트 지정자와 이벤트 소스, 그리고 이벤트라는 3개의 설정 영역이 나란히 위치하는데요. 이벤트 소스에서는 이벤트의 트리거 소스로 어떤 정보를 사용할 것인지를 정의하는 부분이고, 이 소스의 어떤 상태에서 이벤트를 트리걸 할 것인지를 이벤트 영역에서 설정합니다. 그리고 그렇게 설정된 이벤트를 최종적으로 이벤트 지정자에 표시하는 방식이지요.
지금까지 이벤트 구조를 블록 다이어그램에 추가하는 방법이나 이벤트 구조의 생긴 형태, 그리고 이벤트를 편집하는 방법들을 나름대로 설명드렸습니다. 물론, 이런 개떡같은 설명만 가지고도 찰떡같이 이해하신 분들도 있으시겠지만, 몇 개의 이미지와 텍스트로 된 설명만으로는 여전히 오리무중인 분들도 있을 것 같아서 간단한 시연 영상을 하나 첨부하였습니다.
자동화 설비에서 특정 이벤트의 발생을 카운팅할 때 주로 사용하는 카운터 모듈을 이벤트 구조를 가지고 랩뷰에서 간단히 구현한 프로그램과 실행 결과를 담은 영상인데요. 이벤트 구조에 대한 설명의 부족한 부분을 충분히 채워줄 수 있지 않을까 생각하구요. 그 외 문의하실 내용이 있으시면 댓글로 알려주시기 바랍니다.
'Programming > LabVIEW' 카테고리의 다른 글
배열 초기화 & 배열 만들기 함수 (0) | 2024.05.25 |
---|---|
SubVI (0) | 2024.05.24 |
Sequence 구조 (0) | 2024.05.22 |
While 루프 (0) | 2024.05.22 |
Feedback Node와 Shift Register (0) | 2024.05.21 |