Rasberry Pi를 통한 측정기 제어(GPIB-USB-HS 경유)

개요


공장의 제조·검사 공정에는 고성능·고신뢰성 산업용 PC를 많이 사용하지만, 고박자 공정이나 작업 빈도가 낮은 공정을 요구하지 않으면 규격이 있을 수 있다.
그래서 나는 공간을 절약하고 전기를 절약하며 가격이 낮은 Rasberry Pi를 컨트롤러로 사용하는 것을 고려했다.OS 설치부터 GPIB를 경유해 측정기기를 제어하는 프로그램까지 총결산했기 때문에 랩베리피에 처음 접촉한 사람도 가능하다.
이번에는 래스프리피 제로 W와 GPIB-USB HS(GPIB 컨트롤러)를 사용했다.

OS 설치


Raspberry Pi Imager를 사용하여 Micro SD 카드에 OS 설치
https://www.raspberrypi.com/software/
Raspberry Pi Imager
이번에는 래스퍼버리 피 OS Lite(32-bit)가 설치됐다.
Raspberry Pi OS Lite (32-bit)

SSH를 통해 Raspberry Pi에 연결 가능


Windows의 경우 SD 카드에 쓰기에 성공하면 D:\에 boot이라는 드라이브가 있습니다.
우선 boot 바로 아래에 ssh 확장자가 없는 파일을 만듭니다.다음 WiFi 연결 wpasupplicant.conf라는 파일을 만듭니다.
wpa_supplicant.conf에 기술된 내용은 아래의 문장을 참고하였다.
https://zenn.dev/asataka/articles/b92cd770a48d74
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
	ssid="SSID"
	psk="Pre-Shared Key"
}
SD 카드를 Raspberry Pi에 꽂은 후 부팅합니다.Raspberry Pi Zero W의 경우 부팅 후 1, 2분 이내에 터미널을 통해 액세스할 수 있습니다.
 Host: raspberrypi.local
 ID: pi
 Password: raspberry
pi@raspberrypi:~ $

GPIB-USB HS 사용 가능


내핵 빌딩


GPIB 드라이버는 커널 모듈이기 때문에 랩베리 피 커널 소스를 확보하고 구축해야 합니다.
다음은 홈페이지의 절차를 참고하여 진행하겠습니다.
https://www.raspberrypi.com/documentation/computers/linux_kernel.html
구축에 필요한 소프트웨어를 설치하다.
sudo apt install git bc bison flex libssl-dev make -y
내부 핵 원본을 얻다.
묵인했어config 파일을 만듭니다.
(Raspberry Pi Zero W. 다른 버전은 공식 페이지를 확인하십시오.)
git clone --depth=1 https://github.com/raspberrypi/linux
내부 핵을 구축한다.
cd linux
KERNEL=kernel
make bcmrpi_defconfig
랩베리 피제로라면 구축 시간이 길다(6시간 이상 걸릴 것 같다)며 nohup이 달린 명령을 사용해 SSH 연결을 수행하는 것을 권장한다.구축과 동시에tail 명령을 사용하여 구축된 로그를 확인할 수 있습니다.
make -j2 zImage modules dtbs
구축이 완료되면 커널 모듈, 디바이스 트리 BLOB, 커널 이미지를 설치합니다.
nohup make -j2 zImage modules dtbs &
tail -f nohup.out
재부팅합니다.
sudo make modules_install
sudo cp arch/arm/boot/dts/*.dtb /boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm/boot/zImage /boot/$KERNEL.img
내장 버전이 설치된 버전과 일치하면 성공합니다.
sudo reboot

Linux-GPIB(GPIB 드라이버)의 구축 & 설치


구축에 필요한 소프트웨어를 설치하다.Linux-GPIB의 소스 코드는 SVN에서 관리하므로 SVN이 필요합니다.
(venv) pi@raspberrypi:~/visa-test $ uname -a
Linux raspberrypi 5.15.30+ #1 Thu Mar 24 16:07:03 GMT 2022 armv6l GNU/Linux
소스 코드를 가져옵니다.
sudo apt install subversion -y
sudo apt install automake libtool -y
드라이버 구축 및 설치
svn checkout svn://svn.code.sf.net/p/linux-gpib/code/trunk linux-gpib
사용자 응용 프로그램을 만들고 설치합니다.
cd linux-gpib
cd linux-gpib-kernel
make
sudo make install
설정 파일을 복사하고 편집합니다.
cd ..
cd linux-gpib-user
 
./bootstrap
./configure
make
sudo make install
내용은 아래의 내용으로 변경되었다.
sudo cp util/templates/gpib.conf /usr/local/etc/ 	
sudo vi /usr/local/etc/gpib.conf
드라이브의 읽기 및 설정을 반영합니다.
interface {
        minor = 0
        board_type = "ni_usb_b"
        name = "NI GPIB-USB-HS"
        pad = 0
        sad = 0
        timeout = T3s
        eos = 0x0a
        set-reos = yes
        set-bin = no
        set-xeos = no
        set-eot = yes
        base = 0
        irq  = 0
        dma  = 0
        master = yes
}

device {
        minor = 0
        name = "MSO6054A"
        pad = 1
        sad = 0
        eos = 0xa
        set-reos = no
        set-bin = no
}
마운트된 커널 모듈에서usb_gpib와 gpibcommon이 있었으면 성공했을 텐데.
sudo modprobe ni_usb_gpib
sudo ldconfig
sudo gpib_config

Python으로 측정기기(pyVISA) 제어


pyVISA 설치


VISA는 측정기기의 제어를 위한 프로그램 라이브러리로 파이톤을 통해 제어할 수 있는 모듈은pyVISA이다.
https://pyvisa.readthedocs.io/en/latest/
venv를 설치합니다.
pi@raspberrypi:~ $ lsmod | grep gpib
ni_usb_gpib            40960  0
gpib_common            49152  1 ni_usb_gpib
가상 환경 창설 & 유효성
sudo apt install python3-venv -y
필요한 모듈을 설치합니다.gpib-ctypes는pyVISA를 통해 GPIB 인터페이스를 제어해야 합니다.또 직렬 통신 장치와 USB 장치를 제어할 수 있도록 pyserial과 PyUSB를 미리 넣었다.
python3 -m venv venv
. ./venv/bin/activate
기본적으로 루트에서만 GPIB에 액세스할 수 있으므로 사용 권한이 변경됩니다.
pip install -U pip

pip install pyvisa
pip install pyvisa-py
pip install gpib-ctypes
pip install pySerial
pip install PyUSB
pyvisa- info 명령을 통해 진단할 수 있습니다.
장치, Python, pyVISA 및 백엔드에 대한 정보를 표시합니다.
sudo chmod 666 /dev/gpib*
재부팅 후 매번 다음 명령을 실행해야 합니다.
Machine Details:
   Platform ID:    Linux-5.15.30+-armv6l-with-glibc2.31
   Processor:

Python:
   Implementation: CPython
   Executable:     /home/pi/visa-test/venv/bin/python
   Version:        3.9.2
   Compiler:       GCC 10.2.1 20210110
   Bits:           32bit
   Build:          Mar 12 2021 04:06:34 (#default)
   Unicode:        UCS4

PyVISA Version: 1.11.3

Backends:
   ivi:
      Version: 1.11.3 (bundled with PyVISA)
      Binary library: Not found
   py:
      Version: 0.5.2
      ASRL INSTR: Available via PySerial (3.5)
      USB INSTR: Available via PyUSB (1.2.1). Backend: libusb1
      USB RAW: Available via PyUSB (1.2.1). Backend: libusb1
      TCPIP INSTR: Available
      TCPIP SOCKET: Available
      GPIB INSTR: Available via Linux GPIB (b'4.3.4 r[2016]')
      GPIB INTFC: Available via Linux GPIB (b'4.3.4 r[2016]')

측량 기기 제어


나는 키스ight의 디지털 다기능표 34465A를 연결해 보았다.
https://www.keysight.com/jp/ja/product/34465A/digital-multimeter-6-5-digit-truevolt-dmm.html
전류를 측정해 보겠습니다.
sudo /dev/gpib* 666
sudo gpib_config

로그 출력 사용


log_to_screen()을 호출하면 pyVISA의 로그 출력이 유효합니다.
python

>>> import pyvisa
>>> rm = pyvisa.ResourceManager()
>>> rm.list_resources()

('ASRL/dev/ttyAMA0::INSTR', 'GPIB0::1::INSTR')

>>> inst = rm.open_resource('GPIB0::1::INSTR')
>>> inst.query(":meas:curr?")

'+2.76998717E-12\n

총결산


Rasberry Pi를 사용하여 GPIB 인터페이스를 통해 측정기기를 제어하는 프로그램을 총괄했다.
구축된 시스템의 SD 카드를 한 번 복제하면 추가 시스템과 백업 제작도 용이해진다.

좋은 웹페이지 즐겨찾기