IT 정보/라즈베리파이 + Qt

라즈베리파이 GPIB 설치 및 사용방법 NI USB-GPIB-HS 계측기 컨트롤

핵발전소 2022. 12. 21. 16:48

안녕하십니까 여러분들을 '발전' 시켜줄 핵발전소입니다.
계측기 컨트롤을 여러분은 PC로만 하시나요?
각종 프로젝트, 시험기 개발에 라즈베리파이와 함께 구현한다면
비용절감과 소형화를 장점으로 좋은 성과를 내실수 있을 겁니다.

130만 원짜리 케이블이 있으시다면 라즈베리파이에서도 사용할 수 있습니다!
라즈베리파이에서 사용하는 법을 소개해드리겠습니다.

1. 설치 전 업데이트를 실시.

$ sudo apt-get update	
$ sudo apt-get upgrade	

2. 커널 헤더 설치 및 빌드를 위한 rpi-source 툴 다운로드

$ sudo wget https://raw.githubusercontent.com/notro/rpi-source/master/rpi-source -O /usr/bin/rpi-source && sudo chmod +x /usr/bin/rpi-source && /usr/bin/rpi-source -q --tag-update	

3. rpi-source에서 필요한 bc 및 bison 패키지 설치

$ sudo apt-get install bc bison

4. 추가 패키지 설치

$ sudo apt-get install tk-dev build-essential texinfo texi2html libcwidget-dev libncurses5-dev libx11-dev binutils-dev bison flex libusb-1.0-0 libusb-dev libmpfr-dev libexpat1-dev tofrodos subversion autoconf automake libtool mercurial libssl-dev

5. rpi-source를 실행하여 시스템 커널의 헤더를 빌드

 $ sudo rpi-source

※빌드 중 “n/y” 묻는 항목이 나오면 n를 선택할 것(‘y’ 선택 시 gpib 라이브러리 빌드 에러 발생)

이런 오류 발생 시 4번 step의 추가 패키지 설치 과정이 잘못된 경우입니다.

$ sudo pcmanfm 해주세요.

/root 경로로 가서 선택된 위 두 파일을 삭제해주세요.

4. 번 step을 다시 시도하시고 진행해 주시면 됩니다.

6. linux-gpib 설치

$ cd /home
$ sudo mkdir linux-gpib
$ cd linux-gpib
/home/linux-gpib $ sudo svn checkout svn://svn.code.sf.net/p/linux-gpib/code/trunk linux-gpib-code

7. linux-gpib-kernel 설치 및 컴파일 -1

/home/linux-gpib $ cd linux-gpib-code/linux-gpib-kernel
/home/linux-gpib/linux-gpib-code/linux-gpib-kernel $ sudo make
/home/linux-gpib/linux-gpib-code/linux-gpib-kernel $ sudo make install

8. linux-gpib-kernel 설치 및 컴파일 -2

/home/linux-gpib/linux-gpib-code/linux-gpib-kernel $ cd ..
/home/linux-gpib/linux-gpib-code $ cd linux-gpib-user
/home/linux-gpib/linux-gpib-code/linux-gpib-user $ sudo ./bootstrap
/home/linux-gpib/linux-gpib-code/linux-gpib-user $ sudo ./configure
/home/linux-gpib/linux-gpib-code/linux-gpib-user $ sudo make
/home/linux-gpib/linux-gpib-code/linux-gpib-user $ sudo make install
/home/linux-gpib/linux-gpib-code/linux-gpib-user $ sudo cp util/templates/gpib.conf /etc/gpib.conf

9. /etc/gpib.conf 파일에서 인터페이스 보드 타입 정보 수정

$ sudo nano /etc/gpib.conf

interface {
    minor       = 0
    board_type  = "ni_usb_b" //이부분을 수정해주세요 ! 
    name        = "violet"
    pad         = 0
    sad         = 0
    timeout     = T3s
    eos         = 0x0a
    set-reos    = yes
    set-bin     = no 
    set-xeos    = no
    set-eot     = yes

10. 커널 모듈 로드

$ sudo modprobe ni_usb_gpib

11. gpib_config 실행해서 gpib 인터페이스 보드의 보트 타입을 ni_usb_b로 설정

$ sudo gpib_config -t ni_usb_b

//NI USB-GPIB-HS 미연결시 실패합니다. 연결하고 실행하세요.

12. 관리자 권한 없이 GPIB 실행 가능하게 권한 부여

$ sudo chmod 666 /dev/gpib0


※주의사항 라즈베리 파이 부팅 시마다 10, 11, 12 항목을 실행시켜야 합니다.

GPIB NI USB-GPIB-HS 설치 완료


ibtest 실행해서 GPIB 정상적으로 동작하는지 테스트

$ sudo ibtest

//정상작동하는지 시험합니다
//계측기 연결시 계측기 자체의 GPIB 어드레스 번호를 입력하세요.
//EX : address 1 오실로스코프 연결후 *IDN? 으로 계측기 정보 로드하기.
//d -> 1 -> w -> *IDN? -> r -> 20 
//Agilent Technologies,33522B,XXXXXXXXXX,0.179-1.19-8.88-52-00 같은 형식으로 뜨면 정상

IEEE-488 공통 명령어

이 하위 시스템에는 IEEE-488 표준과 관련된 명령 및 쿼리가 포함되어 있습니다.
*CLS - 상태 삭제
*ESE <enable_value> - 이벤트 상태 활성화
*ESR? - 이벤트 상태 레지스터 쿼리
*IDN? - 계측기 식별
*OPC - 작동 완료 비트 설정
*OPC? - 현재 작업 완료 대기
*OPT? - 설치된 옵션 표시
*PSC {0|1} - 전원 켜기 상태 삭제
*RCL {0|1|2|3|4} - 계측기 상태 호출
*RST - 출고 시 기본값으로 계측기 재설정
*SAV {0|1|2|3|4} - 계측기 상태 저장
*SRE <enable_value> - 서비스 요청 활성화(상태 바이트 레지스터 그룹의 활성화 레지스터에서 비트 활성화)
*STB? - 상태 바이트 읽기
*TRG - 트리거 명령
*TST? - 자가 테스트
*WAI - 보류 중인 모든 작업이 완료될 때까지 대기

GPIB 라이브러리 사용 방법 - Qt

1. 라이브러리 추가 방법

QT Creator 실행 -> Activate Projects View -> Project 명 우클릭 -> Add Library

  External Library 선택 -> Next 클릭

Library file 옆의 Browse... 버튼 클릭

/usr/local/lib 경로에 들어가서 libgpib.so 라이브러리 파일을 선택 -> Open 클릭

Next 클릭

Finish

INCLUDEPATH, DEPENDPATH 코드는 삭제
※삭제 안 하시면 빌드시 오류가 발생합니다.

라이브러리 추가된 것 확인.

OR


프로젝트명. pro 에다가 최하단에 아래 코드 입력해주시면 됩니다.

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../usr/local/lib/release/ -lgpib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../usr/local/lib/debug/ -lgpib
else:unix: LIBS += -L$$PWD/../../../usr/local/lib/ -lgpib

간단하죠?
근데 다른 라이브러리를 추가할 때를 대비해서 윗 방법을 익혀 놓읍시다.



2. 코드에 적용

헤더 파일에 #include "gpib/ib.h" 추가하여 라이브러리에서 제공하는 ibdev 등의 함수를
사용할 수 있으며 계측기마다 효율적인 GPIB 통신을 위해서 라이브러리 함수를 사용해서
별도의 코드를 구현해야 할 필요가 있습니다.
코드는 /home/linux-gpib/linux-gpib-code/linux-gpib-user/examples 경로에 있는 ibtest.c 파일의
내용을 참조하여 구현하면 됩니다.

도움이 되셨나요? 궁금한 점은 댓글로 물어봐 주세요.
최대한 빨리 답변할 수 있도록 노력하겠습니다.