프로그래밍/Python

[Python] PNA Network Analyzer에서 현재 화면 데이터 다루기

채윤아빠 2023. 2. 20. 02:16
728x90
반응형

개요

Keysight PNA Network Analyzer (회로망분석기)를 이용하여 현재 측정되어 표시되는 데이터를 SCPI 명령을 이용하여 다루는 방법에 간단하게 정리해 둡니다.


화면 데이터 CSV로 저장하기

현재 화면에 표시되는 측정 데이터를 CSV 파일로 저장하는 SCPI 명령은 다음과 같습니다.

MMEM:STOR:SCR 'filename.csv'

위 명령에서 "filename.csv"는 저장할 파일의 이름과 경로를 나타내는데, 확장자는 CSV를 사용해야 합니다. 예를 들어, C드라이브의 "Temp" 폴더에 "data.csv" 파일로 저장하고 싶다면, 다음과 같이 명령어를 입력하면 됩니다.

MMEM:STOR:SCR 'C:\Temp\data.csv'

위와 같이 명령을 보내면, 현재 화면에 보이는 그래프와 데이터를 지정된 CSV 파일('C:\Temp\data.csv')에 저장합니다. 저장된 파일에는 현재 화면에 표시되는 데이터와 동일하며, 주파수, 전압, 손실, 반사 등의 값들을 포함하고 있습니다. 여기서 주의할 점은 저장된 CSV 파일은 PNA 장비 내부 디스크에 저장된 것이기 때문에, 해당 파일을 USB 등으로 복사하여 이용할 수 있습니다.


PNA로부터 데이터를 직접 받아 저장하기

앞에서 설명한 "MMEM:STOR:SCR" 명령으로 현재 화면의 그래프와 데이터를 CSV 파일로 저장한 경우에는 그 파일이 PNA 장비 내부 디스크에 저장되기 때문에 USB 등으로 복사하여 옮겨와야 하는 번거로움이 있습니다.

다음 SCPI 명령을 이용하면 현재 화면의 그래프와 데이터를 직접 CSV 형식의 문자열 데이터로 받을 수 있습니다.

MMEM:DATA? 'SCR', 'CSV'

위 명령에서 "SCR"은 현재 화면의 데이터를 나타내는 Screen Data를 의미하며, "CSV"는 반환받는 문자열 데이터의 형식을 CSV 파일 형식으로 지정하는 것입니다. 다른 데이터 포맷으로 지정하려면 "CSV" 대신에 해당하는 형식의 문자열로 변경하면 됩니다.

다음은 파이썬으로 위 SCPI 명령을 이용한다면 현재 화면의 그래프와 데이터를 문자열로 받아서 "data.csv" 파일로 저장하는 예시입니다.

from pyvisa import ResourceManager

rm = ResourceManager()
pna = rm.open_resource('TCPIP1::192.168.100.12::INSTR')

# 현재 화면 데이터를 문자열로 받기
data_str = pna.query("MMEM:DATA? 'SCR', 'CSV'")
# 라인 피드 문자를 개행 문자로 변환하기
data_str = data_str.replace('\n', '\r\n')

# 데이터 문자열을 파일로 저장하기
with open('data.csv', 'w') as f:
    f.write(data_str)