■ GPIB 란

GPIB (General Purpose Interface Bus)는 컴퓨터와 계측기 간의 인터페이스로 개발되었습니다.
주로 PC와 측정 장비를 연결하는데 사용되는 외부 버스의 일종으로, 비동기 병렬 전송 방식입니다.

GPIB는 Hewlett Packard에서 개발 한 사내 표준 인 HP-IB로 만들어졌으며 IEEE 의 승인을 받아 국제 표준이 되었습니다.
많은 전류 측정 장비는 GPIB 인터페이스를 표준으로 지원하며 PC 및 측정 장비를 사용하는 측정 시스템에 널리 사용됩니다.

 

■ GPIB 표준

GPIB 표준에는 현재 IEEE-488 및 상위 레벨 프로토콜 인 IEEE-488.2가 포함됩니다.
- IEEE-488에 지정된 전송 방법 외에도 IEEE-488.2에는 텍스트 데이터 및 숫자 식에 대한 구문, 모든 장치에서 사용할 수있는 명령 및 쿼리가 있습니다.
- IEEE-488.2 호환 장비는 IEEE-488에 규정 된 범위 내에서 다른 IEEE-488.2 호환 장치 및 IEEE-488 장치와 통신 할 수 있습니다.

 

■ GPIB 설치하기

두 개의 Device간 GPIB 통신을 하기 위해 NI-488.2 Driver를 설치하는 과정을 설명하겠습니다.

NI-488.2는 NI GPIB 컨트롤러와 GPIB 포트가 있는 NI 임베디드 컨트롤러를 사용하는 User를 지원합니다.

 

1. ni.com/info 홈페이지에 접속하여 LinuxRepository 정보 코드를 입력하고 제출해야 합니다.

 

2. Repository 부가 기능을 설치 파일을 아래의 그림 순서대로 다운로드 합니다. 

 

3. 다운로드한 Repository 부가 기능 파일을 설치합니다.

# rpm –i [다운로드한 파일이름]

 

4. 이제 NI driver software를 설치해야 합니다.

# yum install ni-daqmx

 

5. yum install 명령어로 NI-488.2 Linux Driver Package를 설치합니다.

Package 중 이미 설치된 패키지는 제외하고 아래의 모든 Package를 설치하면 GPIB를 사용할 환경이 구축됩니다.

# yum install [ 아래의 Package]

 

■ GPIB 통신하기

두 개의 Device 간 GPIB를 통신하는 과정입니다.

아래의 예시는 두 Device가 PC일 경우 PC 간 통신을 위한 지침으로 사용할 수 있는 일련의 과정입니다.

 

1. GPIB Explorer를 실행 후 GPIB Interface를 선택합니다.

 # gpibexplorer

 

2. 이제 GPIB 통신을 하기위해 두 대의 Device 간 Controller와 Non-Controller을 구분하여 설정을 진행해야 합니다.

아래와 같이 GPIB Configuration에서 설정하면 GPIB 통신 시 마다 따로 입력 해주지 않아도 되는 Default 값이 설정 가능합니다.

 

예를 들어, 현재 Controller Device에는 System Controller가 Check 되어 있고, Non-Controller Device에는 System Controller가 Check 되어 있지 않습니다.

이를 GPIB Configuration UI에서 설정해주지 않으면, 아래의 GPIB 유틸리티 실행 시 추가로 ibrsc 0 명령을 입력하여

Non-Controller Device를 비컨트롤러로 만들어 주어야 합니다.

 

- Controller Device

 

- Non-Controller Device

 

3. Controller와 Non-Controller 설정을 완료한 후 GPIB 통신을 진행합니다.

- Controller Device

# gpibintctrl                  // 대화형 GPIB 제어 유틸리티를 시작합니다.
   ibfind GPIB0              // ibfind GPIB0 명령을 사용하여 GPIB 보드에 대한 세션을 엽니다.
   ibdev 0 0 0 13 1 0    //  ibdev 0 1 0 13 1 0 을 사용하여 비컨트롤러와의 세션을 엽니다.

                                          - 첫 번째 매개 변수는 액세스 보드의 인덱스입니다.

                                          - 두 번째는 장치의 기본 GPIB 주소입니다.

                                          - 세 번째는 GPIB 장치의 보조 주소(일반적으로 0)입니다.

                                          - 네 번째는 I/O 타임아웃 값입니다.

                                          - 다섯 번째는 장치의 EOI 모드입니다.

                                          - 여섯 번째는 장치의 EOS 문자 모드입니다. 
   ibwrt “hello”               // ibwrt "HELLO" 를 사용하여 HELLO라는 데이터 문자열을 비컨트롤러에 전송합니다.

- Non-Controller Device

# gpibintctrl                               // 대화형 GPIB 제어 유틸리티를 시작합니다.
   ibfind GPIB0                           // ibfind GPIB0 명령을 사용하여 GPIB 보드에 대한 세션을 엽니다.
   ibrd [입력 받는 문자의 길이]      // ibrd #을 사용하여 컨트롤러에서 보낸 명령을 읽습니다. 여기서 #은 수신 할 것으로

                                                    예상되는 바이트 수입니다. 예를들어, HELLO 문자를 보낸다면 5 바이트를 읽을 것입니다.

 

4.  GPIB 통신 결과 Controller 부에서 ibwrt 명령어로 송신한 "hello" 문자열을 Non-Controller 부에서 ibrd 명령어로 수신하여 출력되는 것을 볼 수 있습니다.