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

잔글
잔글
 
10번째 줄: 10번째 줄:
 
<ol>
 
<ol>
 
<li> [[E5071C GPIB 프로그래밍]] - 이 페이지
 
<li> [[E5071C GPIB 프로그래밍]] - 이 페이지
 +
<ol>
 +
<li> [[E5071C VBA 프로그래밍]]
 +
</ol>
 
</ol>
 
</ol>
 
</ol>
 
</ol>
106번째 줄: 109번째 줄:
 
</ol>
 
</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>예제-1
 
<ol>
 
<pre>
 
Private Sub UserForm_Click()
 
Dim FmtData As Variant, Freq As Variant
 
Dim SaveData(99, 800)
 
 
Dim File As String
 
Dim dmy As Long
 
Dim start, finish
 
 
File = "2.txt"
 
Open File For Output As #1
 
 
SCPI.SENSe(1).SWEep.POINts = 801
 
Nop = SCPI.SENSe(1).SWEep.POINts
 
SCPI.DISPlay.ENABle = False
 
'SCPI.DISPlay.ENABle = True
 
 
ECHO "Nop=", Nop
 
 
SCPI.TRIGger.SEQuence.Source = "BUS"
 
 
Freq = SCPI.SENSe(1).FREQuency.DATA
 
 
start = Timer
 
For 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 j
 
Next i
 
finish = Timer
 
ECHO "Elapsed Time=", finish - start
 
 
For 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 j
 
Close #1
 
 
MsgBox "Measurement Completion"
 
SCPI.SYSTem.BEEPer.COMPlete.IMMediate
 
 
End Sub
 
</pre>
 
</ol>
 
<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년 7월 2일 (화) 20:17 기준 최신판

E5071C GPIB 프로그래밍

  1. 전자부품
    1. 계측기
      1. 네트워크분석기
        1. E5071C 네트워크분석기
          1. E5071C GPIB 프로그래밍 - 이 페이지
            1. E5071C VBA 프로그래밍
  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$