"E5071C GPIB 프로그래밍"의 두 판 사이의 차이

잔글
잔글
116번째 줄: 116번째 줄:
 
image:e5071c01_vba01_002.png | IFBW=10kHz NOP=801 100번 측정하여 데이터 읽는데 약 9.7초
 
image:e5071c01_vba01_002.png | IFBW=10kHz NOP=801 100번 측정하여 데이터 읽는데 약 9.7초
 
</gallery>
 
</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>예제-1
 +
<ol>Private 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
 +
</ol>
 
<li>reset 상태에서 S21 750MHz~1250MHz Nop=801 IFBW=70kHz 100번 스윕하는데 23.64초
 
<li>reset 상태에서 S21 750MHz~1250MHz Nop=801 IFBW=70kHz 100번 스윕하는데 23.64초
 
<ol>
 
<ol>

2024년 6월 13일 (목) 19:46 판

E5071C GPIB 프로그래밍

  1. 전자부품
    1. 계측기
      1. 네트워크분석기
        1. E5071C 네트워크분석기
          1. E5071C GPIB 프로그래밍 - 이 페이지
  2. 외부 PC(컨트롤러)에서 E5071C를 제어하는 방법
    1. - 972p
    2. 샘플 프로그램
      1. 2022/05/27 DUT가 있으면 측정한다.
        1. e5071c01.bas
    3. 중요 프로그램 기법
      1. *IDN?
      2. *OPC?
      3. :TRIG:SING
        1. *OPC?
      4. marker
        1. :CALC{1-9}:MARK{1-10}:Y?
        2. :CALC{1-9}:MARK{1-10}:X
      5. bandwidth 검출되지 않으면 프로그램이 정지한다. 그러므로 대역폭이 검출되는가를 먼저 체크한 후 실행한다.
        1. :CALC1:MARK1:BWID:DATA?
          1. BW, Fc, Q, Peak
      6. stimulus
        1. :SENS{1-9}:FREQ:SPAN
        2. :SENS{1-9}:FREQ:STAR
        3. :SENS{1-9}:FREQ:STOP
      7. sweep setup
        1. Points :SENS{1-9}:SWE:POIN
        2. Power :SOUR{1-9}:POW
      8. 데이터 전송 포맷(Data Transfer Format)
        1. 포맷 선택
          1. :FORMat:DATA {ASCii|REAL|REAL32}
            1. ASC: ASCII
            2. REAL: 64-비트 부동소수점 이진파일
            3. REAL32: 32-비트 부동소수점 이진파일
        2. 채널 선택, 트레이스 선택
          1. 10 OUTPUT 717;":CALC1:PAR1:SEL"
        3. 채널별 Stimulus data arrays. 계산되는 값이므로, 실제로 매번 읽어들일 필요는 없다.
          1. 10 DIM A(1:201)
          2. 20 OUTPUT 717;":SENS1:FREQ:DATA?"
          3. 30 ENTER 717;A(*)
        4. formatted data array, nx2-1은 측정데이터, nx2는 0(단, smith chart 또는 polar가 아닌 경우)
          1. 10 DIM A(1:201,1:2)
          2. 20 OUTPUT 717;":CALC1:DATA:FDAT?"
          3. 30 ENTER 717;A(*)
        5. :FORM:DATA REAL 이진파일로 데이터 받기
          1. 50 ASSIGN @Agte507x TO 717
          2. 60 ASSIGN @Binary TO 717;FORMAT OFF
          3. 110 OUTPUT @Agte507x;":SENS1:SWE:POIN?"
          4. 120 ENTER @Agte507x;Nop
          5. 130 REDIM Fdata(1:Nop,1:2),Freq(1:Nop)  ! =allocate
          6. 160 DIM Buff$[9]
          7. 170 OUTPUT @Agte507x;":FORM:DATA REAL"
          8. 180 !
          9. 190 OUTPUT @Agte507x;":CALC1:DATA:FDAT?"
          10. 200 ENTER @Agte507x USING "#,8A";Buff$
          11. 210 ENTER @Binary;Fdata(*)
          12. 220 ENTER @Agte507x USING "#,1A";Buff$
          13. 230 OUTPUT @Agte507x;":SENS1:FREQ:DATA?"
          14. 240 ENTER @Agte507x USING "#,8A";Buff$
          15. 250 ENTER @Binary;Freq(*)
          16. 260 ENTER @Agte507x USING "#,1A";Buff$
  3. 내부 VBA 프로그램에서. COM object를 사용한다.
    1. VBA = Visual Basic for Application
    2. VBA Programmer's Guide - 485p
    3. 화면
    4. 예제-1
        Private 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
    5. reset 상태에서 S21 750MHz~1250MHz Nop=801 IFBW=70kHz 100번 스윕하는데 23.64초
      1. 데이터 전송포함하면 23.82초
      2. 화면 업데이트 하지 않으면 3.1초
      3. 100회 측정데이터를 배열로 처리하는데 3.2초
    6. IFBW=10kHz이면 약 9,6sec
    7. IFBW=100kHz이면 약 2,7sec