"E5071C GPIB 프로그래밍"의 두 판 사이의 차이
잔글 |
잔글 |
||
13번째 줄: | 13번째 줄: | ||
</ol> | </ol> | ||
</ol> | </ol> | ||
+ | </ol> | ||
+ | <li>외부 PC(컨트롤러)에서 E5071C를 제어하는 방법 | ||
+ | <ol> | ||
+ | <li> - 972p | ||
+ | <ol> | ||
+ | <li> | ||
</ol> | </ol> | ||
<li>샘플 프로그램 | <li>샘플 프로그램 | ||
52번째 줄: | 58번째 줄: | ||
<li>Power :SOUR{1-9}:POW | <li>Power :SOUR{1-9}:POW | ||
</ol> | </ol> | ||
+ | <li>데이터 전송 포맷(Data Transfer Format) | ||
+ | <ol> | ||
+ | <li>포맷 선택 | ||
+ | <ol> | ||
+ | <li>:FORMat:DATA {ASCii|REAL|REAL32} | ||
+ | <ol> | ||
+ | <li>ASC: ASCII | ||
+ | <li>REAL: 64-비트 부동소수점 이진파일 | ||
+ | <li>REAL32: 32-비트 부동소수점 이진파일 | ||
+ | </ol> | ||
+ | </ol> | ||
+ | <li>채널 선택, 트레이스 선택 | ||
+ | <ol> | ||
+ | <li>10 OUTPUT 717;":CALC1:PAR1:SEL" | ||
+ | </ol> | ||
+ | <li>채널별 Stimulus data arrays. 계산되는 값이므로, 실제로 매번 읽어들일 필요는 없다. | ||
+ | <ol> | ||
+ | <li>10 DIM A(1:201) | ||
+ | <li>20 OUTPUT 717;":SENS1:FREQ:DATA?" | ||
+ | <li>30 ENTER 717;A(*) | ||
+ | </ol> | ||
+ | <li>formatted data array, nx2-1은 측정데이터, nx2는 0(단, smith chart 또는 polar가 아닌 경우) | ||
+ | <ol> | ||
+ | <li>10 DIM A(1:201,1:2) | ||
+ | <li>20 OUTPUT 717;":CALC1:DATA:FDAT?" | ||
+ | <li>30 ENTER 717;A(*) | ||
+ | </ol> | ||
+ | <li>:FORM:DATA REAL 이진파일로 데이터 받기 | ||
+ | <ol> | ||
+ | <li>50 ASSIGN @Agte507x TO 717 | ||
+ | <li>60 ASSIGN @Binary TO 717;FORMAT OFF | ||
+ | <li>110 OUTPUT @Agte507x;":SENS1:SWE:POIN?" | ||
+ | <li>120 ENTER @Agte507x;Nop | ||
+ | <li>130 REDIM Fdata(1:Nop,1:2),Freq(1:Nop) ! =allocate | ||
+ | <li>160 DIM Buff$[9] | ||
+ | <li>170 OUTPUT @Agte507x;":FORM:DATA REAL" | ||
+ | <li>180 ! | ||
+ | <li>190 OUTPUT @Agte507x;":CALC1:DATA:FDAT?" | ||
+ | <li>200 ENTER @Agte507x USING "#,8A";Buff$ | ||
+ | <li>210 ENTER @Binary;Fdata(*) | ||
+ | <li>220 ENTER @Agte507x USING "#,1A";Buff$ | ||
+ | <li>230 OUTPUT @Agte507x;":SENS1:FREQ:DATA?" | ||
+ | <li>240 ENTER @Agte507x USING "#,8A";Buff$ | ||
+ | <li>250 ENTER @Binary;Freq(*) | ||
+ | <li>260 ENTER @Agte507x USING "#,1A";Buff$ | ||
+ | </ol> | ||
+ | </ol> | ||
+ | </ol> | ||
+ | </ol> | ||
+ | <li>내부 VBA 프로그램에서. COM object를 사용한다. | ||
+ | <ol> | ||
+ | <li>VBA = Visual Basic for Application | ||
+ | <li>VBA Programmer's Guide - 485p | ||
+ | <li>화면 | ||
+ | <gallery> | ||
+ | image:e5071c01_vba01_001.png | VBA 화면 | ||
+ | image:e5071c01_vba01_002.png | IFBW=10kHz NOP=801 100번 측정하여 데이터 읽는데 약 9.7초 | ||
+ | </gallery> | ||
+ | <li>예제-1Private Sub UserForm_Click()Dim FmtData As Variant, Freq As VariantDim SaveData(99, 800)Dim File As StringDim dmy As LongDim start, finishFile = "2.txt"Open File For Output As #1SCPI.SENSe(1).SWEep.POINts = 801Nop = SCPI.SENSe(1).SWEep.POINtsSCPI.DISPlay.ENABle = False'SCPI.DISPlay.ENABle = TrueECHO "Nop=", NopSCPI.TRIGger.SEQuence.Source = "BUS"Freq = SCPI.SENSe(1).FREQuency.DATAstart = TimerFor i = 0 To 99 SCPI.TRIGger.SEQuence.SINGle dmy = SCPI.IEEE4882.OPC FmtData = SCPI.CALCulate(1).SELected.DATA.FDATa For j = 0 To Nop - 1 SaveData(i, j) = FmtData(2 * j) Next jNext ifinish = TimerECHO "Elapsed Time=", finish - startFor j = 0 To Nop - 1 Print #1, j + 1, Freq(j); For i = 0 To 99 Print #1, SaveData(i, j); Next i Print #1,Next jClose #1MsgBox "Measurement Completion"SCPI.SYSTem.BEEPer.COMPlete.IMMediateEnd Sub | ||
+ | <li>reset 상태에서 S21 750MHz~1250MHz Nop=801 IFBW=70kHz 100번 스윕하는데 23.64초 | ||
+ | <ol> | ||
+ | <li>데이터 전송포함하면 23.82초 | ||
+ | <li>화면 업데이트 하지 않으면 3.1초 | ||
+ | <li>100회 측정데이터를 배열로 처리하는데 3.2초 | ||
+ | </ol> | ||
+ | <li>IFBW=10kHz이면 약 9,6sec | ||
+ | <li>IFBW=100kHz이면 약 2,7sec | ||
</ol> | </ol> | ||
</ol> | </ol> |
2024년 6월 13일 (목) 19:45 판
E5071C GPIB 프로그래밍
- 전자부품
- 계측기
- 네트워크분석기
- E5071C 네트워크분석기
- E5071C GPIB 프로그래밍 - 이 페이지
- E5071C 네트워크분석기
- 네트워크분석기
- 계측기
- 외부 PC(컨트롤러)에서 E5071C를 제어하는 방법
- - 972p
- 샘플 프로그램
- 2022/05/27 DUT가 있으면 측정한다.
- 중요 프로그램 기법
- *IDN?
- *OPC?
- :TRIG:SING
- *OPC?
- marker
- :CALC{1-9}:MARK{1-10}:Y?
- :CALC{1-9}:MARK{1-10}:X
- bandwidth 검출되지 않으면 프로그램이 정지한다. 그러므로 대역폭이 검출되는가를 먼저 체크한 후 실행한다.
- :CALC1:MARK1:BWID:DATA?
- BW, Fc, Q, Peak
- :CALC1:MARK1:BWID:DATA?
- stimulus
- :SENS{1-9}:FREQ:SPAN
- :SENS{1-9}:FREQ:STAR
- :SENS{1-9}:FREQ:STOP
- sweep setup
- Points :SENS{1-9}:SWE:POIN
- Power :SOUR{1-9}:POW
- 데이터 전송 포맷(Data Transfer Format)
- 포맷 선택
- :FORMat:DATA {ASCii|REAL|REAL32}
- ASC: ASCII
- REAL: 64-비트 부동소수점 이진파일
- REAL32: 32-비트 부동소수점 이진파일
- :FORMat:DATA {ASCii|REAL|REAL32}
- 채널 선택, 트레이스 선택
- 10 OUTPUT 717;":CALC1:PAR1:SEL"
- 채널별 Stimulus data arrays. 계산되는 값이므로, 실제로 매번 읽어들일 필요는 없다.
- 10 DIM A(1:201)
- 20 OUTPUT 717;":SENS1:FREQ:DATA?"
- 30 ENTER 717;A(*)
- formatted data array, nx2-1은 측정데이터, nx2는 0(단, smith chart 또는 polar가 아닌 경우)
- 10 DIM A(1:201,1:2)
- 20 OUTPUT 717;":CALC1:DATA:FDAT?"
- 30 ENTER 717;A(*)
- :FORM:DATA REAL 이진파일로 데이터 받기
- 50 ASSIGN @Agte507x TO 717
- 60 ASSIGN @Binary TO 717;FORMAT OFF
- 110 OUTPUT @Agte507x;":SENS1:SWE:POIN?"
- 120 ENTER @Agte507x;Nop
- 130 REDIM Fdata(1:Nop,1:2),Freq(1:Nop) ! =allocate
- 160 DIM Buff$[9]
- 170 OUTPUT @Agte507x;":FORM:DATA REAL"
- 180 !
- 190 OUTPUT @Agte507x;":CALC1:DATA:FDAT?"
- 200 ENTER @Agte507x USING "#,8A";Buff$
- 210 ENTER @Binary;Fdata(*)
- 220 ENTER @Agte507x USING "#,1A";Buff$
- 230 OUTPUT @Agte507x;":SENS1:FREQ:DATA?"
- 240 ENTER @Agte507x USING "#,8A";Buff$
- 250 ENTER @Binary;Freq(*)
- 260 ENTER @Agte507x USING "#,1A";Buff$
- 포맷 선택
- - 972p
- 내부 VBA 프로그램에서. COM object를 사용한다.
- VBA = Visual Basic for Application
- VBA Programmer's Guide - 485p
- 화면
- 예제-1Private Sub UserForm_Click()Dim FmtData As Variant, Freq As VariantDim SaveData(99, 800)Dim File As StringDim dmy As LongDim start, finishFile = "2.txt"Open File For Output As #1SCPI.SENSe(1).SWEep.POINts = 801Nop = SCPI.SENSe(1).SWEep.POINtsSCPI.DISPlay.ENABle = False'SCPI.DISPlay.ENABle = TrueECHO "Nop=", NopSCPI.TRIGger.SEQuence.Source = "BUS"Freq = SCPI.SENSe(1).FREQuency.DATAstart = TimerFor i = 0 To 99 SCPI.TRIGger.SEQuence.SINGle dmy = SCPI.IEEE4882.OPC FmtData = SCPI.CALCulate(1).SELected.DATA.FDATa For j = 0 To Nop - 1 SaveData(i, j) = FmtData(2 * j) Next jNext ifinish = TimerECHO "Elapsed Time=", finish - startFor j = 0 To Nop - 1 Print #1, j + 1, Freq(j); For i = 0 To 99 Print #1, SaveData(i, j); Next i Print #1,Next jClose #1MsgBox "Measurement Completion"SCPI.SYSTem.BEEPer.COMPlete.IMMediateEnd Sub
- reset 상태에서 S21 750MHz~1250MHz Nop=801 IFBW=70kHz 100번 스윕하는데 23.64초
- 데이터 전송포함하면 23.82초
- 화면 업데이트 하지 않으면 3.1초
- 100회 측정데이터를 배열로 처리하는데 3.2초
- IFBW=10kHz이면 약 9,6sec
- IFBW=100kHz이면 약 2,7sec