강제 변환점
- 업데이트 날짜:2025-08-27
- 5분 (읽기 시간)
강제 변환점은 블록다이어그램 노드에 나타나며, 노드에 전달된 값을 LabVIEW가 다른 형으로 변환시켰음을 나타냅니다. LabVIEW는 변환이 일어나는 곳의 터미널 경계에 강제 변환점을 놓습니다. VI와 함수에는 많은 터미널이 있을 수 있으므로, 한 터미널에서 다른 터미널로 연결할 경우 아이콘 내에 강제 변환점이 나타날 수 있습니다.
빨간색 강제 변환점
한 숫자형 타입의 데이터를 그와 다른 숫자형 타입의 터미널에 와이어로 연결하거나, 배리언트가 아닌 데이터를 배리언트 터미널에 연결할 때 LabVIEW는 블록다이어그램 노드에 빨간색 강제변환점을 나타냅니다.
예를 들어 LabVIEW는 다음 그림에서 [더하기] 함수에 빨간색 강제 변환점을 놓는데, 이는 해당 함수는 서로 일치하는 숫자형 데이터 타입을 갖는 두 개의 입력을 요구하지만 이 함수가 배정도 부동소수와 정수라는 서로 다른 데이터 타입의 입력들을 받았기 때문입니다. 이 경우 데이터 타입이 유사하므로 LabVIEW는 정수를 강제 변환하고 더하기 작업을 수행할 수 있습니다.
파란색 강제 변환점
함수에 대한 고정 소수점 출력 셋팅을 설정할 때 LabVIEW는 파란색 강제 변환점을 숫자형 함수의 출력 터미널에 나타냅니다. 이 점은 LabVIEW가 오버플로우 및 반올림 에러 방지 목적으로 출력 데이터 타입을 자동 조정하지 않는다는 것을 나타냅니다.
다음 블록다이어그램에서 파란색 강제 변환점을 볼 수 있습니다.
정확성 유지 및 메모리 사용 최적화를 위해 강제 변환점 제거하기
강제 변환점은 다음과 같은 방법으로 메모리 사용 또는 VI의 전체 성능에 영향을 줄 수 있습니다:
- 타입 정의 강제 변환—타입 정의의 인스턴스를 같은 타입 정의에 링크되어 있지 않은 객체에 연결하는 경우, VI는 부정확한 결과를 생성할 수 있습니다.
- 스칼라 숫자형 강제 변환—서로 다른 숫자형 타입을 조작하는 경우, LabVIEW는 데이터 타입이 일치하도록 데이터를 강제 변환합니다. 이 강제 변환이 발생할 때 VI는 정확하지 않은 결과를 생성합니다.
- 큰 배열 강제 변환—데이터 타입을 매우 큰 배열로 강제 변환하는 경우, VI는 대량의 메모리를 사용하게 되고 실행에 시간이 더 걸리게 됩니다.
데이터 타입을 일치시켜서 불필요한 강제 변환을 방지할 수 있습니다.
타입 정의 강제 변환
타입 정의의 인스턴스를 동일한 타입 정의에 링크되어 있지 않은 객체에 연결하는 경우, LabVIEW는 그 데이터를 받는 터미널에 강제 변환점을 놓아서 해당 타입 정의를 편집하면 VI가 깨지거나 정확하지 않은 데이터를 생성하게 된다는 경고를 나타냅니다.
클러스터나 열거형에 연결되어 있는 타입 정의를 편집하는 경우, 클러스터나 열거형을 연결하는 와이어는 깨어지게 됩니다.
다음 블록 다이어그램은 타입 정의를 편집할 경우 결과의 정확성에 영향을 주거나 와이어를 깨뜨릴 수 있는 타입 정의 강제 변환점을 보여줍니다. 이 예에서 SubVI의 입력은 필터 타입을 정의하는 타입 정의에 링크되어 있습니다.
LabVIEW는 SubVI에서 와이어로 연결된 터미널에 강제 변환점을 놓아, 열거형 상수가 동일한 타입 정의에 링크되어 있지 않음을 나타냅니다.
다음 블록다이어그램은 정확한 결과를 유지하고 타입 정의를 편집해도 와이어가 깨지지 않는 타입 정의의 사용을 보여줍니다.
타입 정의에 링크된 객체를 복사하거나 타입 정의에 링크되지 않은 객체를 타입 정의의 인스턴스로 대체하여 SubVI의 입력의 타입 정의를 일치시킬 수 있습니다. 또한 입력 터미널에서 마우스 오른쪽 버튼을 클릭한 후, 바로 가기 메뉴에서 생성≫상수를 선택하여 SubVI의 입력의 타입 정의를 일치시킬 수 있습니다. 상수는 자동으로 타입 정의에 링크됩니다.
스칼라 숫자형 강제 변환
단순 스칼라 숫자형 데이터 타입을 조작할 경우, LabVIEW는 소수 부분의 데이터 손실이 일어나지 않도록 데이터 타입을 강제 변환합니다. 두 데이터 타입이 모두 정수인 경우, LabVIEW는 더 낮은 최대값을 갖는 데이터 타입을 더 높은 최대값을 갖는 데이터 타입으로 강제 변환합니다.
다음 블록다이어그램은 결과의 정확성에 영향을 주지 않는 강제 변환을 보여줍니다.
이 예에서 배정도 부동소수 숫자형을 롱 정수에 더하면, LabVIEW는 롱 정수를 배정도 부동소수 숫자형으로 강제 변환하고 두 값을 더합니다. LabVIEW가 [더하기] 함수에 놓는 강제 변환점은 더 낮은 최대값을 갖는 데이터 타입을 더 정확한 데이터 타입으로 강제 변환하기 때문에 작업의 결과는 변하지 않습니다. 그러나 가능하면 데이터 타입을 일치시켜야 합니다.
LabVIEW에서 데이터를 사용자가 원하는 타입으로 강제 변환시키려면, 컨트롤, 상수 또는 인디케이터에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 형을 선택하여 데이터 타입을 변경할 수 있습니다.
다음 블록다이어그램은 정확하지 않은 결과를 발생시키는 강제 변환을 보여줍니다.
이 예에서 LabVIEW는 부호 있는 정수를 부호 없는 정수로 강제 변환합니다. LabVIEW가 음의 값을 지원하지 않는 데이터 타입으로 음수를 강제 변환하였기 때문에, LabVIEW는 음수 -5가 아닌 65531이라는 값을 생성합니다. 정확하지 않은 데이터를 생성하는 것을 방지하려면, 블록다이어그램 객체의 형을 변경하여 데이터 타입을 일치시킵니다.
| 팁 출력 인디케이터의 소스에 적용 프로퍼티를 활성화하여 인디케이터 데이터 타입이 자동으로 숫자형 입력 값의 데이터 타입으로 변경되도록 할 수 있습니다. 소스에 적용 프로퍼티를 활성화하려면, 인디케이터에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 소스에 적용을 선택합니다. |
큰 배열 강제 변환
LabVIEW가 매우 큰 배열에 저장된 데이터를 강제 변환하는 경우, VI는 많은 양의 메모리를 사용하게 되고 실행에 오랜 시간이 걸리게 됩니다. 다음 블록다이어그램은 LabVIEW가 큰 배열의 데이터 타입을 SubVI의 입력의 데이터 타입으로 강제 변환하며 많은 양의 메모리를 사용하는 VI를 보여줍니다.
이 예에서 LabVIEW는 매우 큰 배열을 SubVI의 데이터 타입과 일치시키기 위해 확장형 정밀도 부동소수로 강제 변환합니다. 메모리 사용을 최소화하려면, 블록다이어그램의 컨트롤, 상수 또는 인디케이터에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 형을 선택하여 데이터 타입을 일치시킵니다. 이전 블록다이어그램의 경우에서 SubVI 블록다이어그램의 상수 및 컨트롤의 데이터 타입을 바꾸면 LabVIEW가 데이터를 강제 변환해야 할 필요가 없어집니다.
다음 블록다이어그램은 메모리를 보다 효율적으로 사용하는 VI를 보여줍니다.
| 팁 VI의 실행 시간과 메모리 사용에 대한 데이터를 수집하여 디스플레이하는 성능과 메모리 프로파일 윈도우를 사용하여 VI가 얼마만큼의 메모리를 사용하는지 추적 및 모니터할 수 있습니다. |
변환 함수
변환 함수를 사용하여 강제 변환점을 제거할 수 있습니다. 일반적으로 변환 함수는 강제 변환점과 동일한 효과가 있지만, 블록다이어그램 상에서 공간을 더 많이 차지합니다. 그러나 다음 블록다이어그램에서 보이는 것과 같이, 배열을 생성하는 루프 내부에 변환 함수를 사용하면 LabVIEW가 배열을 생성하기 전에 변환이 일어나므로 큰 데이터 버퍼의 변환을 피할 수 있습니다.
강제 변환점 색 변경하기
빨간색 강제 변환점의 색을 바꾸려면, 옵션 대화 상자의 환경 페이지를 사용합니다. 색 섹션에 있는 기본 색 사용 확인란에서 확인 표시를 제거하고 강제 변환점 색 상자를 클릭하여 다른 색을 선택합니다.
파란색 강제 변환점의 색을 변경할 수는 없습니다.