이전 글에서도 말씀드렸듯이, 사용하려는 목적이나 성격은 비슷하지만 타입이 다른 데이터들을 하나의 그룹으로 묶어 놓은 것이 클러스터입니다. 다른 PC 기반의 프로그램에서 말하는 구조체와 같은 개념이라고 보시면 되는데요. 프런트 패널에서 클러스터를 어떻게 추가하는지 알아보았으니, 이번에는 블록 다이어그램에서 클러스터를 어떻게 활용하는지 알아보겠습니다.
위 그림은 이전 글에서 컨베이어를 제어하기 위한 명령들을 모아서 생성했었던 클러스터 오브젝트인데요. 그냥 하나의 오브젝트 형태로 블록 다이어그램에 추가되어 있는 것을 볼 수 있습니다. 다시 말해, 이 상태 그대로 다른 오브젝트에 와이어를 연결해 봤자, 2개의 불리언 타입과 하나의 숫자형 타입이 하나로 묶여 있는 클러스터 타입 그대로 데이터가 전달된다는 말이구요. 프로그램 안에서 불리언 데이터끼리 논리 연산을 진행하거나, 숫자형 데이터를 가지고 산술 연산을 진행하기 위해서는 개별적인 데이터를 추출할 수 있어야 합니다. 즉, 여러 신호선을 둘러싸고 있는 외피를 벗겨서, 각각의 신호선을 끄집어 내야 한다는 말이지요.
이럴 때 사용하는 함수가 클러스터 풀기 함수입니다. 클러스터 풀기 함수는 위 그림에서 보시는 것과 같이 2가지가 있는데요. 하나는 그냥 풀기 함수이고, 다른 하나는 이름으로 풀기 함수입니다.
그냥 풀기 함수와 이름으로 풀기 함수의 차이를 위 그림에서 확인하실 수 있는데요. 두 함수 모두 클러스터의 내부 원소들을 개별적인 와이어로 연결할 수 있다는 공통점을 가지고 있으나, 그냥 풀기 함수의 경우에는 클러스터에 추가된 원소들의 데이터 타입만 표시되구요. 이름으로 풀기 함수의 경우에는 데이터의 라벨이 표시됩니다.
하나의 클러스터에 묶여 있다 하더라도, 데이터들에는 순서가 존재합니다. 정확히는 클러스터 데이터를 구성할 때 추가된 순서인데요. 그냥 풀기 함수의 경우에는 지금 말씀드린 순서에 따라 위에서부터 차례로 데이터가 표시됩니다. 반면에 이름으로 풀기의 경우에는 클러스터에 포함된 데이터의 라벨이 표시되기 때문에, 어떤 데이터인지 명확히 구분된다는 장점도 있구요. 라벨 부분을 클릭해서 원하는 데이터를 선택할 수도 있습니다. 그래서 그냥 풀기 함수의 경우에는 크기를 조절할 수 없지만, 이름으로 풀기의 경우에는 위/아래로 크기를 늘이고 줄일 수 있습니다.
반대로, 여러 데이터를 하나의 클러스터로 묶어줄 수도 있는데요. 이럴 때 클러스터 묶기 함수를 사용하면 됩니다. 클러스터 묶기 함수도 위 그림에서 보시는 것과 같이 2가지를 제공하고 있는데, 하나가 그냥 묶기 함수이고, 다른 하나는 이름으로 묶기 함수입니다.
풀기 함수때와 마찬가지로 그냥 묶기 함수의 경우에도 데이터 타입만 표시됩니다. 정확히는 와이어로 연결된 데이터의 타입이 표시되는 것이구요. 이렇게 연결된 데이터를 하나로 묶은 클러스터 데이터가 출력으로 반환됩니다.
이름으로 묶기 함수의 경우에도 데이터의 라벨이 표시됩니다. 그래서, 클러스터 타입 내부에 어떤 라벨의 데이터가 필요한지를 알려줘야 하기 때문에, 이름으로 묶기 함수의 위쪽으로 클러스터 타입을 연결하는 별도의 입력이 있구요. 해당 입력으로 연결된 타입의 라벨들이 이름으로 표시됩니다. 이것을 바꿔 말하면, 그냥 묶기 함수의 경우에도 클러스터 타입을 전달하는 별도의 입력이 함수 상단에 위치하지만, 그림에서 보시는 것처럼 굳이 타입을 연결하지 않더라도 무리 없이 클러스터 타입이 만들어지지만, 이름으로 묶기 함수의 경우에는 정확한 라벨을 알아야 하므로, 반드시 표본이 되는 클러스터 타입이 상단에 연결되어야 합니다. 그렇다고 해서, 일반적인 묶기 함수가 클러스터 내부의 데이터 순서까지 무시하는 것은 아니라는 점, 참고하시기 바랍니다.
'Programming > LabVIEW' 카테고리의 다른 글
파일로 출력하기 - TXT (0) | 2024.06.08 |
---|---|
랩뷰의 디자인 패턴 : 생산자/소비자 패턴 (0) | 2024.06.05 |
랩뷰의 디자인 패턴 : 상태머신 (2) | 2024.06.04 |
랩뷰로 Modbus 통신하기 (Program) (0) | 2024.05.30 |
랩뷰로 Modbus 통신하기 (with I/O Server) (0) | 2024.05.29 |