각 데이터 타입에 대해 별도의 VI를 저장하지 않고, 사용 가능한 모든 데이터 타입에 대해 같은 작업을 수행하려면, 가변 VI를 생성합니다. 가변 VI는 다른 데이터 타입을 위해 작업을 크게 바꾸지 않고도 여러 데이터 타입에서 작업이 비슷하게 구현될 수 있는 경우에 사용하면 유용합니다. 여러 데이터 타입에서 작업이 다르게 구현되어야 하는 경우, 또는 여러 데이터 타입의 터미널 세트가 다른 경우, 대신 다형성 VI를 만듭니다

다음과 같은 방법으로 가변 VI를 만들 수 있습니다.

  • 새 가변 VI를 만들려면 파일≫새로 만들기를 선택하고 새로 만들기 대화 상자에서 가변 VI를 선택합니다.
  • 기존의 VI를 가변 VI로 변환하려면, 파일 확장자를 .vim으로 설정합니다. 기존 VI가 호출 VI로 인라인되도록 설정되어 있지 않으면, 가변 VI는 깨져 보입니다. 파일≫VI 프로퍼티≫실행을 선택하고, 호출하는 VI로 SubVI 인라인미리 할당된 복제 재호출 실행 옵션을 활성화한 후, 디버깅 허용자동 에러 핸들링 허용 옵션을 비활성화하여, 가변 VI를 인라인되도록 설정해야 합니다.
    노트 표준 VI만 가변 VI로 변환할 수 있습니다. 다형성 VI, 글로벌 VI 또는 X컨트롤 기능은 가변 VI로 변환할 수 없습니다.

블록다이어그램에 가변 VI를 놓으면, 입력과 출력은 기본 데이터 타입을 보여줍니다. 컨트롤, 인디케이터 또는 상수를 입력이나 출력에 연결하면, 입력과 출력은 연결된 데이터 타입으로 변경됩니다.

예를 들어, [2D 배열 정렬] 가변 VI에서 2D 정렬 입력과 정렬된 2D 배열 출력은 참조 번호를 제외한 모든 데이터 타입의 2D 배열을 받고, 이 때 기본 데이터 타입은 배리언트의 2D 배열입니다. 문자열 2D 배열을 2D 배열에 연결하면, 2D 배열정렬된 2D 배열의 데이터 타입은 모두 문자열 2D 배열로 변경됩니다. 그러나, 2D 배열에 1D 배열을 연결하는 경우, 이 가변 VI는 1D 배열을 받도록 구현되지 않았기 때문에 VI가 깨져보입니다.

타입 특수화 구조와 타입 지정 VI 및 함수를 사용하여 다음과 같은 목적으로 특수 가변 VI를 생성할 수 있습니다.

  • 특정 데이터 타입에 대해 가변 VI의 코드 섹션을 사용자 정의하기
  • 허용되는 데이터 타입 중 일부만 가변 VI가 허용하도록 하기
  • 가변 VI가 특정 데이터 타입을 거부하도록 하기

예를 들어, [2D 배열 정렬] 가변 VI는 타입 특수화 구조를 사용하여 인덱스가 정수일 때와 정수 배열일 때 각각 다르게 동작합니다. 이렇게하면 가변 VI는 두 데이터 타입에 대해 모두 예상대로 동작하게 됩니다. 인덱스 입력은 부호있는 32 비트 정수가 아닌 정수 타입을 부호있는 32 비트 정수로 강제 변환합니다. [정수 타입 지정] VI만 사용하여 인덱스가 부호있는 32 비트 정수를 받도록 강제 설정할 수 있습니다.

가변 VI는 본질적으로 다형성이기 때문에 구문 에러를 발생시키지 않는 모든 데이터 유형을 허용합니다. NI는 코드를 다시 사용하기 더 용이하도록 가변 VI에서 강제 변환을 허용할 것을 권장합니다. 애플리케이션이 다음 중 하나에 해당하는 경우에만 가변 VI가 허용할 수 있는 데이터 타입을 제한하십시오.

  • 강제 변환을 하는 경우 VI의 속도가 현저하게 감소됩니다.
  • 작업 중인 어플리케이션에서 특정 데이터 타입은 아무런 의미가 없습니다.

관련 정보

가변 VI 디버그하기

가변 VI와 다형성 VI 중 선택하기