What is VISA?
VISA는 Virtual Instrument Software Architecture의 약자로 응용 프로그램과 계측기 간의 통신을 가능하게 하는 Test & Measurement 업계의 표준이다.
계측기는 보통 USB, LAN, GPIB, PCI/PCIe(PXI/PXIe)등 다양한 연결을 지원하고 로우레벨에서는 이러한 물리적 인터페이스에 따라 각기 다른 방식으로 데이터 통신이 이루이지는데, 이로 인한 중복 개발을 피하고 통신과정을 더욱 단순화하고 표준화하기 위해 계측기와 어플리케이션 간 Interface I/O를 관리할 중간계층으로 VISA가 등장하게 되었다.
VISA를 사용하면 물리적 인터페이스가 USB든 LAN이든 PXI든 로우레벨에서 이루어지는 세부사항을 알 필요없이 계측기에 액세스할 수 있다.
이러한 VISA 표준은 IVI foundation에서 관리된다.
VISA를 사용하는 방법
매우 간단하다. 특정 공급업체의 VISA 라이브러리를 설치하고 VISA DLL(또는 어셈블리)에 있는 함수를 호출하여 사용하면 된다. VISA를 사용하여 계측기와 통신할 때는 종종 SCPI 커맨드를 사용하여 제어한다.
VISA 를 사용하여 계측기와 통신하는 예
#include "stdlib.h"
#include "string.h"
void main()
{
char devAddr[20];
char str[50];
int str_size = 50;
char str2[10];
int str_size2 = 10;
double real1 = 0.0;
ViSession rm, instr_handle;
printf("Enter Device Address\n");
scanf("%s", devAddr);
viOpenDefaultRM(&rm);
viOpen(rm, devAddr, VI_NULL, VI_NULL, &instr_handle);
viQueryf(instr_handle, "*IDN?\n", "%#T", &str_size, str);
printf("IDN: %s\n", str);
getchar();
getchar();
}
그리고 위 그림에서 VISA 위에 Instrument Driver가 옵셔널로 존재하는 것을 볼 수 있는데 PXI사의 PXI Driver가 그런 경우이다. PXI Driver는 NI-VISA API를 래핑하여 계측장비의 특성에 맞게 사용자가 직관적으로 제어할 수 있는 API를 제공한다.
예를 들어 VISA를 사용할 경우 viWrite("VOLT 1.00V\n"); 와 같이 작성해야할 것을 PXI 드라이버를 사용하면 PXI_setVoltage(1);과 같이 쉽게 제어할 수 있는 식이다.
VISA의 상호 운용성
한 공급업체의 VISA 구현을 사용하여 다른 공급업체의 계측기에 액세스할 수 있을까? VISA는 표준이기 때문에 어떤 공급업체의 VISA 라이브러리를 사용하여 다른 공급업체의 기기에 액세스할 수 있어야 할 것 같지만 현실은 공급업체들의 모든 VISA 구현이 같지 않다.
따라서 동일한 PC에서 두 개의 서로 다른 공급업체의 계측장비를 사용하는 경우, 두 공급업체의 VISA 라이브러리를 모두 설치해야 한다. 또한 동일한 프로그램에서 두 공급업체의 VISA DLL을 동적으로 로드하여 사용할 수 있다.
다만, 주의할 것은 VISA 표준에서 VISA DLL을 윈도우 특정 경로에 배치하도록 지정하고 있으므로 기존 VISA 가 설치된 상태에서 다른 공급업체의 VISA를 설치하면 일부 파일을 덮어쓰게 될 수도 있으므로 설치 순서가 중요할 수 도 있다.
Reference :
'임베디드 개발 > 계측장비' 카테고리의 다른 글
PXI 컨트롤러 전원 공급 시 자동 부팅 시키는 방법 (1) | 2023.10.04 |
---|---|
GPIB (General Purpose Interface Bus) (0) | 2023.09.15 |
NI-VISA example 실행해보기 (0) | 2023.09.15 |