2014-04-26 3 views
0

저는 다른 사람들이 쓴 subVI 중 일부를 사용하고 있습니다. 그래서 이것은 역사적인 문제입니다.LabVIEW는 SubVI를 다른 경로로 혼동하지만 이름은 같은가요?

두 개의 다른 subVI가 서로 다른 경우 다른 위치에 저장되지만 동일한 이름이있는 경우 문제가 있습니다.

두 개의 subVI가 다르기 때문에 LabVIEW가 두 개의 SubVI를 혼동하는 경우가 있는데, 이는 오류를 만듭니다.

그럼 내 질문은 :이게 진짜인가? LabVIEW는 절대 파일 경로가 아닌 파일 이름으로 subVI를 호출합니다. 또는 나는 비현실적인 것을 기술하고 있으며 다른 문제들로 인해 야기 될 수 있습니다.

감사합니다.

답변

4

여기에는 두 가지 별도의 항목이 있습니다. 첫 번째는 LV가 무언가가 사용하는 각 파일이 저장되는 위치를 기억하고 그 경로를 저장할 수있는 세 가지 방법이 있습니다 (어떤 파일도 잊어 버리지 않는다고 가정).

  • 논리적입니다. 이것들은 기본 폴더가 이름으로 표현되는 vi.lib와 같은 폴더입니다 (따라서 경로는 "| vilib | \ ... \ myVI.vi"로 저장됩니다). 이렇게하면 다른 LV 버전으로 이동할 때 올바른 파일을 호출 할 수 있습니다.
  • 상대. 이것은 LV가 일반적으로 경로를 저장하는 방법입니다. 따라서 VI A가 VI B를 호출하고 동일한 폴더에 있으면 A 내부의 B 경로는 ".. \ B.vi"로 저장됩니다.
  • 절대. 이것은 다른 볼륨에 저장되어 있지만 첫 번째 규칙과 일치하지 않는 VI에만 예약 된 것으로 생각합니다.
  • LV가 예상 한 위치의 파일을 찾지 못하면 메모리에 이미있는 파일을 찾거나 다른 위치에서 파일을 검색하려고 시도합니다. 검색 대화 상자가 나타납니다.

    두 번째로 메모리에 특정 이름의 VI가 한 번에 하나만있을 수 있습니다. 동일한 이름을 가진 두 개의 VI를로드하면 충돌을 일으켜 해결해야합니다. 이것은 LV가 혼동하지 않고, 각각의 호출 VI가 동일한 이름을 가진 다른 VI를 참조하고로드하는 순서와 관련됩니다. 기술적으로, LV가 중복 된 이름을 허용하기 위해 전체 경로를 사용할 수 있다고 생각하지만,이 결정은 적어도 20 년 전으로 거슬러 올라갑니다. 따라서 지금은 변경되지 않을 것이며, 고려해 보면 확실히 문제가 될 것입니다. 이제 메모리의 VI를 이름으로 참조 할 수 있습니다. 또한 다른 기술적 장점도 있습니다.

    같은 이름을 가져야하는 VI를 가지고 있다면 가장 가능성있는 것은 네임 스페이스입니다. 과거에는 접두어 나 접미사를 사용하여 실제로 이름을 변경하여이 작업을 수행했습니다. 요즘은 일반적으로 VI를 라이브러리 (예 : .lvlib 또는 .lvclass)에 배치하여이 작업을 수행합니다. 이것은 파일 이름을 수정하지 않지만 충돌을 결정하는 정규화 된 이름의 일부가되므로 같은 이름의 여러 VI를 가질 수 있습니다. 클래스의 경우 실제로는 요구 사항입니다. 어떤 VI가 덮어 쓸 것인지 결정하는 데 사용되는 메커니즘입니다.