Python으로 획득한 파형 데이터 작업하기

로데슈바르즈 오실로스코프는 첨단 기술을 이용하여 신뢰할 수 있고 재현 가능한 결과를 달성합니다.
로데슈바르즈 오실로스코프는 첨단 기술을 이용하여 신뢰할 수 있고 재현 가능한 결과를 달성합니다.

목표

개발자 및 테스트 엔지니어는 R&S®RTP, R&S®RTO, R&S®RTE 오실로스코프를 일상적으로 사용합니다. 보관, 문서화 또는 추가 처리 작업을 위해 기록된 파형을 저장해 두지만 오실로스코프의 기능 또는 성능에는 한계가 있습니다. ASCII 포맷(csv 파일 확장자)을 사용하여 파형을 저장하는 경우 저장 용량이 쉽게 초과될 수 있습니다. 이 포맷은 전송과 처리에도 매우 많은 시간이 필요합니다. 뿐만 아니라 이진 포맷이 아닌 ASCII 포맷을 사용할 경우 일부 정보를 사용할 수 없게 됩니다.

로데슈바르즈 솔루션

로데슈바르즈의 벤치탑 고성능 오실로스코프(R&S®RTP, R&S®RTO, R&S®RTE)는 모두 이진 파형 저장을 위해 같은 포맷을 공유합니다. Python RTxReadBin 패키지를 사용하면 이진 파일을 처리하고 문서화에 필요한 모든 상세정보를 얻을 수 있습니다.

애플리케이션

기기에서 얻은 파형을 Python 환경으로 전송하려면 Python IDE를 준비해야 합니다.

  • 로데슈바르즈 웹사이트에서 RTxReadBin 패키지를 다운로드합니다
  • 시스템에 패키지를 설치합니다
  • 스코프에서 파형을 획득하고 이진 파일로 저장합니다

파형 설명 파일(*.bin)과 파형 데이터 파일(*.wfm.bin), 두 가지 파일이 생성됩니다. 파형 데이터(RTxReadBin 기능으로 로드)는 다음으로 구성될 수 있습니다.

  • 아날로그 채널
  • 디지털 채널(MSO)
  • 병렬 버스(MSO를 통해 획득)
  • 아날로그 채널(ZVC를 통해)
  • 스펙트럼을 포함한 Math 파형
  • 트랙(자동 측정 기반 파형)

이러한 신호 소스에 대해 복수의 획득 및 복수의 채널이 지원됩니다(해당하는 경우).

로데슈바르즈 오실로스코프로 데이터를 획득한 후 추가 처리를 위해 Python 환경으로 로드할 수 있습니다. 더 편리한 환경을 위해 파형을 저장된 위치에 두고 컴퓨터에 CIFS 공유를 설치하여 네트워크를 통해 데이터를 사용할 수 있습니다.오실로스코프에서 다음의 준비 단계를 진행합니다.

  • advanced sharing(고급 공유)으로 이동합니다
  • 공용 프로필을 선택하고 다음 변수를 변경합니다.
    - network discovery(네트워크 검색)를 켭니다
    - file printer sharing(파일 및 프린터 공유)을 켭니다
    - write access to public folders(공개 폴더에 대한 쓰기 액세스)를 켭니다

위 단계를 마치면 Python 스크립트에 다음 파일 경로를 사용하여 연결할 수 있습니다.

r’\\<name of scope or IP address>\Users\Public\Documents\Rohde-Schwarz\RTx\RefWaveforms\<filename>.bin’

Python은 문자열을 해석하기 때문에 \U 문자 시퀀스이 해석되고 에러가 발생합니다. 이 문제를 방지하려면 문자열 앞에 "r"(raw 의미)을 추가하십시오. 자격증명을 입력하라는 메시지가 표시될 수 있습니다. 로컬 Windows 도메인 서버에 대한 인증을 사용하지 않아야 합니다. 이를 위해서는 로컬 계정 instrument 앞에 백슬래시를 추가하십시오.

account: \instrument
password: <your oscilloscope pw>

또는 Windows 탐색기를 사용하여 스코프에서 파형을 다운로드(끌어 놓기)할 수 있습니다.

선행 준비를 마쳤으면 Python import를 통해 모듈을 로드하고 RTxReadBin을 호출할 수 있습니다. 가장 간단한 방법은 파일 이름을 입력하는 것입니다. 함수가 세 가지 변수, 즉, 수직 파형 데이터(y), 수평 축 데이터(x), 획득 변수(S)를 반환합니다.

> from RTxReadBin import RTxReadBin
> import numpy
> y, x, S = RTxReadBin(’<wfm filename>.bin’)
> y.shape

수직 데이터(y)는 [<레코드 길이>, <획득 수>, <활성 채널 #>] 형식의 NumPy 어레이입니다. MSO 파형의 데이터 유형은 Boolean이며, 병렬 버스의 경우 최고 MSB(MSO 인덱스)로 비트 패킹된 부호 없는 정수(uint16)입니다. 예를 들어 MSO 라인 D12, D7, D2, D0이 연결되어 있고 병렬 버스로 구성된 경우를 가정하겠습니다. 그러면 기록된 데이터 워드는 D12 ∙ 23 + D7 ∙ 22 + D2 ∙ 21 + D0 ∙ 20으로 저장됩니다. 기타 파형 데이터 유형에는 float32가 사용됩니다. 특히 오실로스코프는 Python에 비해 획득 히스토리를 다른 방식으로 계산합니다. 오실로스코프는 (1 - <획득 수>)에서 시작하고 마지막 획득을 0으로 계수합니다. Python에서는 계수 방식이 바뀌면서 0에서 시작하고 마지막 획득은 (<획득 수 > - 1)로 끝납니다.

수평 데이터(x)는 [<레코드 길이>] 형식의 64비트 부동 NumPy 어레이입니다. 데이터가 x/y 교차 포맷으로 저장된 경우 어레이는 모든 획득을 저장할 수 있도록 [<레코드 길이>, <획득 수>] 형식으로 확장됩니다. 스펙트럼이 저장된 경우 x축에는 스펙트럼의 주파수 축이 포함됩니다.

반환값 y의 형식 속성에 액세스하여 레코드 길이, 획득 수, 채널을 쉽게 검색할 수 있습니다.

일부 변수만 필요한 경우 표준 Python 기법을 사용하여 일부는 무시할 수 있습니다. 예를 들어 리스트 지정자를 추가하거나(아래 예제 참조) 위치 반환 변수로 밑줄을 사용합니다.

> y, x =
RTxReadBin(’<wfm filename>.bin’)[0,2]

할당된 메모리의 양을 줄이기 위해 두 가지 변수(선택사항)를 추가로 지정할 수 있습니다. 첫 번째 변수는 관심 획득을 지정합니다. 두 번째 변수는 관심 있는 간격, 시간 또는 주파수를 지정합니다. 두 가지 변수 모두 두 가지 항목의 길이가 포함된 리스트가 필요합니다. 획득 변수는 리스트의 Python 표기법을 따릅니다. 주어진 예제에서는 두 가지 획득(2,3)이 반환됩니다.

> y, x, S = RTxReadBin(’<wfm filename>.bin’,
acquisitions = [2,4],
xInterval = [-2e-7,3e-7])

나머지 변수 S에는 헤더 파일에서 확인할 수 있는 모든 상세정보가 들어 있습니다. 이 변수는 Python 사전으로 구현되어 있습니다. 이러한 모든 변수가 사용자에게 중요한 것은 아닙니다. 하지만 몇 가지 변수는 문서화 및 분석에 유용할 수 있습니다. y 벡터의 파형 데이터는 부동형이므로 사용자는 이 데이터에서 원본 설정을 확인할 수 없습니다. 하지만 헤더의 변수를 확인하면 문서화 및 포스트 프로세싱에 필요한 정보를 얻을 수 있습니다. 예를 들어 측정에 대한 노이즈 제한을 이해하려면 수직 스케일, 오프셋, 위치, 커플링에 대한 정보를 파악하는 것이 중요합니다.

레이더 운용 환경에서 PRI(Pulse Repetition Interval, 펄스 반복 간격) 분석도 중요한 정보입니다. 세그먼트 메모리를 사용하여 획득당 1 레이더 펄스를 캡처하는 경우1) 세그먼트 캡처의 타임스탬프 리스트는 다른 방식으로 얻을 수 없는 시간별 트리거 이벤트를 제공합니다(S[’Timestamps’]). 연속 트리거 이벤트의 시간차는 PRI 시퀀스를 제공합니다.

다음 두 도표는 스코프와 Python 환경에 로드된 파형 데이터를 나타냅니다. 세 가지 신호가 표시되어 있습니다.

  • 오프셋 포함 1 MHz 사인파 신호
  • 상/하 교류하는 레이더 처프
  • 노이즈 - 연결된 신호 없음

RTxReadBin 기능의 이점은 복수 획득(히스토리)의 파형 파일을 처리할 수 있다는 것입니다. 같은 파일이 로드된 경우 오실로스코프는 마지막 획득만 인식하고 빈 히스토리를 표시합니다.

1)로데슈바르즈 웹사이트에서 "오실로스코프로 레이더 RF 펄스 복조"를 참조하십시오.

요약

R&S®RTP, R&S®RTO, R&S®RTE는 고성능 오실로스코프입니다. Python 모듈(RTxReadBin)은 저장된 파형에 액세스하는 기능을 추가해 기기 기능을 확장해 줍니다. 이제 강력한 Python 환경에서 포스트 프로세싱, 문서화, 후속 분석 절차(파형 비교 등)와 같은 목적을 위해 모든 파형 데이터를 사용할 수 있습니다.

히스토리를 레퍼런스 파형으로 로드하지 않은 세 가지 파형
히스토리를 레퍼런스 파형으로 로드하지 않은 세 가지 파형
라이트박스 열기
히스토리가 표시된 세 가지 파형
히스토리가 표시된 세 가지 파형
라이트박스 열기