사용자 시스템과 일치하도록 GPIB 드라이버 설정하기

개요

GPIB 소프트웨어 개발자가 겪는 가장 일반적인 문제 중 하나는 각 테스트 시스템의 요구사항에 맞게 소프트웨어를 구성하는 것입니다. 하나의 드라이버가 다양한 시스템에서 작동하기 때문에, 드라이버를 쉽게 설정할 수 있어야 합니다. NI의 NI-488.2 소프트웨어는 어플리케이션에 가장 적합한 방법을 선택할 수 있도록 여러 설정 방법을 제공합니다. 이 문서에서는 NI-488.2 MS-DOS 소프트웨어에서 사용할 수 있는 각 설정 방법에 대해 설명합니다.


내용

GPIB 설정 옵션

NI-488 소프트웨어를 사용하여 시스템의 기본 설정 옵션을 변경하는 방법에는 세 가지가 있습니다. 다음과 같습니다:

  • 구성 유틸리티 IBCONF를 실행합니다.
  • IBCONF 파일을 다이나믹하게 변경하는 특수 배치 파일(.BAT)을 실행합니다.
  • 어플리케이션 프로그램 내에서 특수한 설정 기능을 사용합니다.


다음 섹션에서는 드라이버 설정 특성을 변경하는 방법과 각 방법의 장점에 대해 설명합니다.

 

방법 1: 설정 유틸리티 IBCONF


IBCONF.EXE는 드라이버에 두 개의 기능 그룹을 전달하는 화면 지향 대화식 프로그램입니다. 첫 번째 그룹은 GPIB 인터페이스에 연결된 디바이스의 특징으로 구성됩니다. 각 디바이스의 특징은 다음과 같습니다.

  • 기호형 이름(예: DEV5, PLOTTER 또는 METER).
  • 주요 GPIB 주소 및 사용되는 경우 보조 주소.
  • 특정 함수를 실행할 때 지정된 시간 제한. 이 시간 제한은 전송이 GPIB를 무한정 중단시키지 않도록 합니다.
  • EOS (End-Of-String) 문자, EOI (End Or Identify) 신호, 바이트 카운트로 디바이스 호출을 실행할 때의 데이터 종료 방법.
  • 디바이스에 대한 역방향 함수 호출의 반복 주소 지정 파라미터를 활성화 또는 비활성화합니다.


두 번째 그룹은 컴퓨터의 각 GPIB 인터페이스 보드의 특징으로 구성됩니다. NI-488 드라이버는 최대 2개의 GPIB 인터페이스 보드를 컨트롤할 수 있습니다. 각 GPIB 인터페이스 보드의 특성은 다음과 같습니다:

  • 기호형 이름(GPIB0 또는 GPIB1).
  • 주요 GPIB 주소 및 사용되는 경우 보조 주소.
  • 버스에 있는 디바이스의 시스템 컨트롤러로 지정되는 용량 및 시스템 컨트롤러로 수행할 특정 동작.
  • 특정 함수를 실행할 때의 시간 제한.
  • 보드 함수를 실행할 때 GPIB 데이터 종료 방법―EOS 문자, EOI 신호, 바이트 카운트로.
  • 보드가 사용하는 인터럽트 라인.
  • 보드가 사용하는 DMA 채널.
  • 데이터를 전송할 때의 타이밍 속도(T1 지연)


수동으로 실행하고 수정하는 IBCONF의 장점은 각 디바이스를 구성할 때 완벽한 유연성을 갖추고 있으며, 각 어플리케이션 프로그램에 구성 코드를 추가할 필요가 없다는 점입니다.

 

방법 2: IBCONF 배치 모드


IBCONF 배치 모드는 NI-488 드라이버의 구성 매개 변수를 수정하는 다른 방법을 제공합니다. 배치 모드에서 설정 정보는 사용자가 생성하는 설정 파일에 포함됩니다. 생성한 파일에서 설정 정보를 로드하려면 다음 명령을 입력합니다:

ibconf -b 파일 이름 <Enter>


여기서 파일 이름은 구성 파일(예: 샘플)의 이름입니다.cfg -와 파일 이름 사이에 적어도 한 개의 스페이스가 있어야 합니다.

IBCONF 디바이스 맵은 보이지 않지만 메모리에 로드된 GPIB 드라이버를 업데이트하라는 메시지가 나타납니다. 예로 대답하면 변경 사항이 수행된 후 컴퓨터를 재부팅할 필요가 없습니다. 그러나 -d 옵션을 사용하여 IBCONF를 실행하여 드라이버가 자동으로 업데이트되도록 입력요청을 제거할 수 있습니다. 이렇게 하면 자동으로 드라이버의 로드된 버전이 설정됩니다.

배치 모드는 실행 프로그램을 배포하는 GPIB 개발자와 GPIB 엔드 유저 모두에게 유용합니다. 설치된 프로그램 기반을 가진 개발자를 위해, 이 IBCONF 배치 모드를 사용하면 기존 프로그램을 변경하지 않고도 올바른 구성을 보장하는 쉬운 방법입니다. 사용자는 단순히 배치 파일을 실행하고 GPIB 디바이스가 자동으로 설정됩니다. 프로그래머는 각 프로그램에 대한 배치 파일을 개발할 수 있습니다.

배치 파일은 모든 텍스트 편집기를 사용하여 편집할 수 있습니다. 배치 파일은 아이템의 쌍으로 구성된 독립형 텍스트 파일입니다. 각 아이템은 최소한 하나의 스페이스 또는 새 라인 문자로 구분되어야 합니다. 이것이 유일한 포맷 제약입니다. 한 쌍의 첫 번째 항목은 구성할 보드 또는 디바이스 특징 또는 보드/디바이스 맵 설정 함수(예를 들어, 이름 변경, 연결, 연결 해제)를 나타내는 메모닉입니다. 한 쌍의 두번째 아이템은 첫번째 아이템(메모닉)이 설정되어야 하는 값입니다. 예를 들어 디바이스 맵에서 dev8의 이름을 스캐너로 변경하려면 배치 파일에 다음 코드 라인을 입력합니다.



gpib0에 대해 자동 시리얼 폴링을 활성화하려면 다음 코드 라인을 입력합니다.

Find board0 spoll yes

기본 I/O 주소, 인터럽트 셋팅, DMA 채널을 포함한 배치 모드 방법을 사용하여 실제 IBCONF 파일의 모든 특성을 변경할 수 있습니다. 또한 IBCONF 디바이스 맵을 사용하는 것처럼 GPIB 인터페이스 보드에서 디바이스를 연결하고 연결 해제할 수도 있습니다. 테이블 1은 설정 아이템의 유효한 모든 쌍을 보여줍니다. 숫자로 입력할 수 있는 모든 값은 10진수 또는 16진수로 입력할 수 있습니다. 16진수를 0x 앞에 두어야 합니다(예를 들어, 64의 10진수는 0x40으로 씁니다).

테이블 1. 배치 모드 명령 쌍
첫번째 아이템
두번째 항목
연상 기호
설명
찾기보드 또는 디바이스 찾기보드 번호 또는 디바이스 번호
채우기주요 GPIB 주소번호
sad보조 GPIB 주소번호
tmo타임아웃 셋팅숫자 또는 공칭
eosEOS 바이트번호
reosEOS에서 읽기 종료예 또는 아니오
기타EOS 쓰기 시 EOI 설정예 또는 아니오
BinEOS에서 비교의 타입7비트 또는 8비트
eot마지막 쓰기 바이트가 있는 EOI 설정예 또는 아니오
sc시스템 컨트롤러(보드 전용)예 또는 아니오
sSC일 때 REN 지정 (보드 전용)예 또는 아니오
스폴자동 시리얼 폴링 활성화 (보드 전용)예 또는 아니오
tmng타이밍 (보드만)2usec, 500nsec
350nsec
e488_2488.2 프로토콜 활성화 (보드 전용)예 또는 아니오
cic_protCIC 프로토콜 (보드만)예 또는 아니오
int인터럽트 셋팅 (보드 전용)번호
포트베이스 I/O 주소(보드 전용)번호
dmaDMA 채널 (보드만)번호
raddr주소 반복(디바이스만)예 또는 아니오
name디바이스 이름 변경(디바이스 전용)디바이스 이름
연결디바이스를 보드에 연결(디바이스 전용)보드#
연결 해제디바이스와 보드의 연결 끊기(디바이스 전용)값 없음
타입현재 보드를 PC2 또는 PC2A 모드로 전환pc2 또는 pc2a



다음 예는 각 엔트리의 단계별 설명과 함께 샘플 설정 파일입니다.

예: scanner.cfg 샘플 구성 파일

요구 사항 :

  1. 첫 번째 디바이스의 이름을 스캐너로 변경합니다.
  2. 범위에 해당하는 세 번째 디바이스의 이름을 변경합니다.
  3. 보드0 (gpib0)의 설정을 변경합니다.
    • 2의 기본 주소(패드 2)
    • 타임아웃 설정에서 T30(tmo T30)
    • EOS 바이트 - 16진수 1E (eos 0x1E)
    • 시스템 컨트롤러 기능 아니오 (sc no)
    • EOS에서 8비트(bin 8비트)로의 비교 유형
    • GPIB 버스 타이밍 속도 - 350 nsec(tmng 350nsec)


구성 파일 :

 

방법 3: 특수 설정 함수

디바이스를 설정하는 세 번째 방법은 특수한 설정 함수를 사용하여 어플리케이션 프로그램 내에서 다이나믹하게 디바이스를 설정하는 것입니다. 앞서 설명한 것처럼, GPIB 시스템을 설정하려면 버스와 연결된 디바이스에 대한 지식이 필요합니다. 애플리케이션 소프트웨어 개발자는 초보 사용자가 IBCONF를 이해하거나 편집할 필요가 없도록 드라이버를 동적으로 구성할 수 있습니다. 또한 이 메소드는 같은 GPIB 인터페이스 보드를 사용하여 여러 다른 시스템 설정을 실행하는데 이상적입니다. 프로그램에서 변경된 설정은 프로그램이 실행되는 동안에만 적용됩니다. 종료 시 설정 파라미터는 원래 셋팅으로 복구됩니다. 이 설정 방법은 보다 효율적일 뿐만 아니라, 서브루틴 함수 호출의 형태로 제공되기 때문에 매우 간단합니다.

IBCONFIG 함수
가장 강력한 구성 함수인 ibconfig를 사용하면 애플리케이션 프로그램에 ibconfig 함수 호출을 추가하여 IBCONF에 있는 모든 소프트웨어 매개 변수를 동적으로 구성할 수 있습니다. 드라이버가 IBCONF의 설정에 관계없이 올바르게 구성되었는지 확인할 수 있습니다. ibconfig의 구성 파라미터는 보드 파라미터와 디바이스 파라미터라는 두 그룹으로 나눌 수 있습니다. 예를 들어, 보드 파라미터는 하드웨어 인터럽트를 활성화/비활성화하거나 자동 시리얼 폴링을 활성화/비활성화합니다. 디바이스 파라미터는 반복 주소 지정을 활성화/비활성화할 수 있습니다.

또한 ibconfig을 사용하여 기본 및 보조 주소 지정, 타임아웃 및 문자열 종료를 선택할 수 있습니다. 그러나 기존의 NI-488 구성 함수인 ibpad(주요 주소 변경), ibsad(보조 주소 변경), ibtmo (타임아웃 셋팅 변경), ibeos(문자열 끝 설정), ibeot(END 종료 메시지 설정)는 여전히 지원됩니다. 다음 코드 부분은 ibconfig 함수가 어떻게 사용되는지 보여줍니다.

REM QuickBASIC 4.5 예제
REM 다음 코드는 GPIB 작업을 위한 디바이스를 설정합니다.
REM
REM $포함: 'qbdecl.bas'
ibfind("dev1", dev%) 호출

REM 기본 주소를 7로 변경합니다.
옵션% = IbcPAD:값% = 7
ibconfig 호출(dev%, option%, value%)

REM 타임아웃을 10초로 변경합니다.
옵션% = IbcTMO:값% = 13
ibconfig 호출 (dev%, option%, value%)

IBLN 함수
ibln 함수는 지정된 주소에서 리스너가 있는지 확인합니다. 이는 NI-488.2TM 루틴 FindLstn과 비슷합니다. 파라미터는 주소의 배열이 아니라 하나의 디바이스 주소입니다. ibln은 여러 주소를 스캔하여 버스에 어떤 리스너가 있는지 확인하는데 유용합니다. 주소를 알면 드라이버에서 해당 디바이스의 기본 주소를 변경하려면 ibconfig을(를) 사용할 수 있습니다.

QuickBASIC 코드의 다음 부분은 버스의 모든 GPIB 기본 주소(보조 주소 제외)에서 리스너를 검색하고 어떤 디바이스가 발견되었는지 보고합니다.

REM $포함: 'qbdecl.bas'
DIM 디바이스%(30)
cnt% = 0
REM
REM 다음 호출은 일반 디바이스로 dev1을 엽니다.
REM ibln을 호출하려면 단위 설명자가 필요합니다.
ibfind 호출("dev1", dev%)
REM
REM 보조 주소를 찾지 않으므로 을(를) 설정합니다.
triste 파라미터를 0으로 REM합니다. sad% = 0
REM 이제 가능한 30개의 기본 주소를 스캔합니다.   주의
이(가) 기본이기 때문에 주소 0을 선택하지 않는 REM
GPIB 컨트롤러의 REM 주소(항상 )
REM 리슨.
여기서 i = 0, ..., n ― 1

ibln 호출(dev%, i%, sad%, listen%)

REM 응답을 확인하여 에 리스너가 있는지 확인합니다.
i%로 지정된 REM 주소.  디바이스가 리슨하는 경우 저장
Device%()의 배열로 주소를 REM합니다. 이 배열은 리스팅입니다.
활성화된 모든 리스너의 REM.
REM
REM은 각 리스너가 발견될 때 카운트를 증가시킵니다.

Listen% = 1 THEN
디바이스%(cnt%) = i%
cnt% = cnt% + 1
END IF

다음 i%
REM 이제 활성 주소를 인쇄합니다.
인쇄 "다음 주소에 디바이스가 있습니다"
J% = 0 ~ cnt% - 1
인쇄 "Device is at GPIB Address "; Device%(j%)
다음 j%

IBDEV 기능
기존의 NI-488 어플리케이션에서, ibfind 함수를 사용하여 통신을 위한 디바이스를 열 수 있습니다. ibfind는 디바이스에 GPIB 호출을 할 수 있도록 숫자(단위 설명자)를 반환합니다. 그러나 ibfind를 사용하려면 디바이스 이름을 IBCONF에서 미리 구성해야 합니다. 그렇지 않으면 ibfind이 실패합니다. 보시다시피, 디바이스 이름을 알지 못하는 경우 이것은 단점입니다.

ibfind 함수 대신에 ibdev 함수를 사용하면 디바이스 이름을 알지 못하고 디바이스를 열고 초기화할 수 있습니다. ibdev는 ibfind과 유사합니다. 이 함수의 인수 중 하나로 디바이스 이름을 전달하지 않는 한. ibdev는 단순히 열리지 않은 사용자 구성 디바이스를 열고 ibconfig, ibln 및 다른 모든 디바이스 레벨 호출에서 사용되는 단위 설명자를 반환합니다. 단위 설명자를 얻기 위해 ibdev을 호출한 후에도 ibconfig를 호출하여 ibdev를 사용하여 구성되지 않은 통신 특성을 구성해야 할 수도 있습니다.

ibdev를 사용하는 방법의 예는 아래와 같습니다.

REM bd.index%는 gpib0에서 0 또는 gpib1에서 1입니다.
bd.index% = 0
REM pad% 는 원하는 디바이스의 기본 주소입니다.
REM을 엽니다. 위의 프로그램에서 을 결정한다고 가정합니다.
REM은 주소 7에 하나의 청취 장치가 있음을 나타냅니다.
패드% = 디바이스%(0) : 슬픈% = 0
REM 지정해야 하는 다른 파라미터의 경우 을 설정합니다.
REM 타임아웃을 10초로, 에서 END 메시지를 활성화합니다.
REM이 쓰고 모든 EOS 종료를 비활성화합니다.
tmo% = 13 : eot% = 1 : eos% = 0
REM ibdev를 호출할 때 ud%에 반환되는 값은 입니다.
REM 단위 설명자.
ibdev(bd.index%, pad%, sad%, tmo%, eot%, eos%, ud%) 호출

 

요약


이 문서는 기존의 IBCONF 방법 이외에 GPIB 시스템을 구성하는 두 가지 대체 방법에 대해 설명했습니다: 배치 모드 방법과 프로그래밍 방법. 이 두 가지 새로운 메소드는 최종 사용자가 거의 또는 전혀 노력하지 않고 투명하게 드라이버를 설정합니다. 배치 모드를 사용하면 최종 사용자가 실제로 IBCONF 파일을 편집하지 않고도 IBCONF 에서 설정을 구성하는 배치 파일을 생성할 수 있습니다. NI-488 설정 함수를 사용하여 프로그램에 함수를 추가하여 다이나믹하게 드라이버를 설정할 수 있습니다. 가장 강력한 3개의 NI-488 구성 함수(ibconfig, ibln 및 ibdev)는 특정 리스너를 찾고 어플리케이션 프로그램 내에서 IBCONF에서 찾은 모든 구성 설정을 변경할 수 있습니다.

 

Was this information helpful?

Yes

No