필수: VI 스크립팅

어떤 VI 스크립팅 태스크를 수행하든 생성, 편집 또는 검사하려는 VI 및 객체의 참조를 열어야 합니다. 참조를 반환하는 VI, 함수, 프로퍼티, 메소드를 사용할 때, 참조를 생성하거나 열게 됩니다. VI 참조가 열려있는 동안 LabVIEW는 관련된 VI를 메모리에서 제거할 수 없습니다. 그러므로, 다수의 참조가 열려 있으면, 다수의 VI와 객체가 메모리에 있게 되고, 이는 LabVIEW가 더 느리게 작동하는 원인이 되며, 사용 가능한 메모리가 없는 경우 LabVIEW에서 새 VI와 객체가 생성되지 않을 수도 있습니다. 이러한 성능상의 문제를 방지하려면, 스크립팅 VI 내에서 열어놓은 VI 또는 객체의 참조를 닫습니다.

다음 타입의 참조는 열려 있어도 성능에 영향을 끼치지 않으므로 닫을 필요가 없습니다.

  • G객체에서 상속한 참조
  • 이 VI 또는이 어플리케이션의 정적 참조

[참조 닫기] 함수를 사용하여 생성하거나 열어 놓은 참조를 닫습니다. 다음 작업은 작업 동작의 일부로 참조를 닫기 때문에 [참조 닫기]를 호출할 필요가 없습니다.

작업 결과
일반:삭제 메소드 사용하기 삭제하는 객체의 참조를 닫음
G객체:대체 메소드 사용하기 대체하는 객체의 참조를 닫음
VI의 참조 닫기 VI 내 객체의 참조를 무효화할 수 있음

사용 객체

이러한 VI 스크립팅 태스크에는 다음 객체가 필요합니다:

실행 단계

시작하기 전: 다음 과정을 각 단계별로 보여주는 예제를 확인하려면 labview\examples\Application Control\VI Scripting\Managing References 디렉토리에 있는 Closing References VI를 엽니다.

  1. 스크립팅 VI의 블록다이어그램에 있는 VI 및 VI 객체의 참조를 확인합니다. 앞에서 닫을 필요가 없다고 언급된 참조 타입은 무시합니다.

    예제 세부사항

    예제에서, 스크립팅 VI는 다음 위치에서 참조를 엽니다:

    • [VI 참조 열기]―타겟 VI의 참조 열기
    • [G객체의 탐색]―타겟 VI에서 각 함수 객체의 참조 열기
    • 함수:터미널[]―각 함수의 모든 터미널에 대한 참조 열기
    • 터미널:연결된 와이어―각 터미널에 연결된 와이어의 참조 열기
    • 와이어:터미널[]―와이어의 모든 터미널에 대한 참조 열기
    • 함수:대체―대체 함수의 참조 열기
    • 함수:터미널[]―대체 함수의 모든 터미널에 대한 참조 열기
  2. LabVIEW가 각 참조를 언제 마지막으로 사용할지 결정합니다.

    참조의 데이터 흐름을 추적하는 경우, LabVIEW에서는 노드의 터미널 참조 사용 시 해당 노드에 열린 참조가 필요합니다.

    예제 세부사항

    예제에서, 열린 참조는 다음 위치에서 마지막으로 사용됩니다:

    • 타겟 VI 참조―VI의 끝 다른 열린 참조가 타겟 VI 내의 객체를 대상으로 하기 때문에 LabVIEW는 이 참조를 VI 전체에 걸쳐 사용합니다.
    • 함수 참조―함수:대체 메소드 이후
    • 함수 터미널 참조―터미널:연결된 와이어 메소드 이후
    • 와이어 참조―와이어:삭제 메소드 이후
    • 와이어 터미널 참조―터미널:와이어 연결 메소드 이후
    • 대체 함수 참조―함수:터미널[] 메소드 이후
    • 대체 함수의 터미널 참조―터미널:와이어 연결 메소드 이후
  3. LabVIEW가 마지막으로 VI 또는 해당 객체 참조 중 하나에 대한 참조를 사용한 후, 곧바로 [참조 닫기] 함수에 각각의 열린 VI 참조를 연결합니다. 에러 클러스터가 제공하는 데이터 흐름을 사용하여 LabVIEW가 각 [참조 닫기] 함수를 언제 실행하는지 컨트롤합니다. 참조를 닫을 때에는 결과에 주의하십시오.

유의점 및 권장사항

  • 해당 VI의 내의 모든 객체 참조를 사용한 후 객체 참조 닫기 ― VI의 참조를 닫으면 해당 VI 내에 위치한 객체의 열린 참조가 모두 무효화될 수 있습니다. VI 참조와 해당 VI 내에 위치한 객체의 모든 참조를 사용하고 난 후에만 VI 참조를 안전하게 닫을 수 있습니다.
  • 가능한 빨리 참조 닫기―열린 참조의 개수가 너무 많으면 LabVIEW의 실행 속도가 더 느려집니다. 작은 어플리케이션의 경우 이러한 효과가 무시할 만하지만, 큰 어플리케이션은 눈에 띄게 성능이 나빠집니다. 프로그램에서 일찍 참조를 닫으면, 참조가 불필요하게 메모리에 남아있지 않게 됩니다.
  • 가능하면 VI 끝나기 전에 참조 닫기―LabVIEW는 실행을 마친 VI에서 참조를 자동으로 닫기 때문에, VI가 끝나고 참조를 닫는 것은 성능 향상에 보탬이 되지 않습니다.

추가 예제

VI 스크립팅 사용 중 여러 참조 닫기의 또 다른 예제는 labview\examples\Application Control\VI Scripting\Creating VIs 디렉토리의 Creating New VI From Scratch VI를 참조하십시오.