VISA 동기화 및 비동기화 함수의 선택



주요한 소프트웨어:
주요한 소프트웨어 버전: 1.1
문제가 해결된 소프트웨어 버전: N/A
부차적인 소프트웨어: Driver Software>>NI-488.2, Driver Software>>NI-VISA

문제점: 내 어플리케이션에 영향을 미치는 동기화 및 비동기화 VISA 함수를 어떻게 선택합니까?

솔루션: 동기와 비동기라는 용어는 여기서 VISA 함수가 호출한 스레드와 어떠한 관계로 동작할건지에 대한 것입니다. 동기화된 VISA 함수 동작은 호출한 스레드 실행 중에 다른 코드의 실행을 방지할 것입니다. 대용량 데이터 전송이나 가능한 빠른 데이터 확인 등의 상황에서 필요할 것입니다.

좀 더 낮은 레벨에서, 호출된 스레드는 인터페이스가 동기화인지 비동기화인지에 따라 다른 시간 동안 잠깁니다. 쓰기 동작에서 데이터는 개발환경 아래에 있는 컴퓨터에 의해 제공되는 기본 물리 리소스에서 전송되어야 합니다. 읽기 동작의 경우 데이터는 디바이스의 물리적 리소스에서부터 개발환경으로 전송되어야 합니다. 이 두 전송 모두 메모리의 몇몇 레이어를 통해 전송되어야 합니다.

쓰기 동작의 경우 아래 동작이 발생합니다:
  1. 호출하고있는 스레드가 잠깁니다. 
  2. VISA 쓰기 함수와 관련된 데이터는 개발 환경에서 VISA 메모리로 전송됩니다.
  3. 폴링은 VISA 쓰기 함수와 관련된 데이터가 하드웨어 리소스의 비자 메모리 외부의 기본 드라이버로  전송되었을때 결정을 시작합니다.
  4. 전송이 완료됩니다.
  5. VISA 쓰기 함수가 값을 반환됩니다.

읽기 동작은 같은 작업이 역순으로 일어납니다.

동기화 동작은 위의 4에서 5단계 사이에서 호출된 스레드의 잠김이 풀립니다. 비동기화 동작은 호출된 스레드의 잠김이 2단계와 3단계 사이에서 풀립니다. 동기화와 비동기화 동작을 선택하기 위해서 어플리케이션에거 가능한 스레드의 수와 쓰거나 읽을 데이터의 양을 고려해야 합니다.

대량의 데이터를 짧은 시간안에 전송해야 할 경우 데이터 전송이나 하드웨어 리소스에서 호출된 스레드를 사용하기 때문에 동기화 동작을 고려해야 합니다. 비동기화된 동작은 어플리케이션의 다른 부분의 접근을 허용하지만 데이터가 전송되었는지 확인하는데 더 시간이 걸릴 것입니다.

 만약 어플리케이션에서 사용 가능한 스레드의 수가 적으면, VISA를 비동기화 동작으로 하는것이 빠르게 어플리케이션의 다른 부분에 호출 스레드를 사용할 수 있도록 합니다. 동기적으로 작업을 실행하면 비자 동작에 호출 스레드를 사용합니다. 그 동작은 전반적인 어플리케이션 성능을 희생하여 가능한 빠르게 완료됩니다.

LabVIEW에서 동기화와 비동기화 함수에 대해 선택하기 위해서는 아래 관련링크의 LabVIEW 도움말을 참고하시기 바랍니다.



관련 링크: KnowledgeBase 3D9B7L4B: The Effect of UART FIFO Sizes on Serial Application Performance
LabVIEW Help: VISA Read Function
LabVIEW Help: VISA Write Function

첨부:


Screenshot.bmp - Screenshot.bmp



리포트 날짜: 09/10/2004
마지막 업데이트: 07/28/2015
문서 번호: 3D9B8E4B