色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > Python示例:使用16-bit垂直分辨率的SDG2000X / SDG6000X構建任意波形

          Python示例:使用16-bit垂直分辨率的SDG2000X / SDG6000X構建任意波形

          作者: 時間:2024-07-15 來源:鼎陽硬件設計與測試智庫 收藏

          鼎陽科技具有16-bit。它提供了多達65,535個離散電壓等級,覆蓋了輸出電壓的整個范圍(高壓負載為20 Vpp),本文將應用 2.7和PyVISA1.8來創(chuàng)建一個斜坡波形,這個斜坡波形由通道1輸出的0到65535的最低有效位的步長合成。

          2、正文
          鼎陽科技具有16-bit。它提供了多達65,535個離散電壓等級,覆蓋了輸出電壓的整個范圍(高壓負載為20 Vpp),通過信號源輸出的微小變化波形可有效測試A / D轉換和其他測量系統(tǒng)。
          本文將應用 2.7和PyVISA 1.8來創(chuàng)建一個斜坡波形,這個斜坡波形由通道1輸出的0到65535的最低有效位的步長合成。
          還實現(xiàn)了TrueArb功能,支持輸入特定的采樣率并且確保逐點輸出存儲器中任意波形的每一個波形數(shù)據點,可精確地生成低抖動的任意波形。
          注意:用戶需要改變機器的ID來匹配連接特定的儀器。建議在打開儀器輸出之前就設置好振幅和其他參數(shù)。
          下圖是設置好信號源參數(shù)并打開通道1輸出的圖片:
           
          圖1
          下圖是示波器捕獲信號源輸出信號的界面顯示:
           
          圖2
          點擊這個鏈接可以下載Zipped 版本的.PY文件:
          https://www.siglentamerica.com/wp-content/uploads/2018/03/SiglentSDG16BBitSteps.zip

          附這段程序的文本:
          ##
          #!/usr/bin/env python2.7
          # -*- coding: utf-8 -*-
          import visa #Uses PyVISA 1.8 and NI-VISA runtime Engine 15.5
          import time
          import binascii
          #設備的USB 
          rm = visa.ResourceManager()
          device = rm.open_resource(‘USB0::0xF4EC::0x1101::SDG6XBAQ1R0071::INSTR’)  #CHANGE TO MATCH YOUR INSTRUMENT ID
          #Little endian, 16位2的補碼
          # 創(chuàng)建一個波形
          wave_points = []
          for pt in range(0x8000, 0xffff, 1):
          wave_points.append(pt)
          wave_points.append(0xffff)
          for pt in range(0x0000, 0x7fff, 1):
          wave_points.append(pt)
          def create_wave_file():
          #創(chuàng)建要給文件
          f = open(“wave1.bin”, “wb”)
          for a in wave_points:
          b = hex(a)
          #打印波形
          b = b[2:]
          len_b = len(b)
          if (0 == len_b):
          b = ‘0000’
          elif (1 == len_b):
          b = ‘000’ + b
          elif (2 == len_b):
          b = ’00’ + b
          elif (3 == len_b):
          b = ‘0’ + b
          b = b[2:4] + b[:2] #將big-endian改為little-endian
          c = binascii.a2b_hex(b) #十六進制整數(shù)到ASCii編碼的字符串
          f.write(c)
          f.close()
          def send_wave_data(dev):
          #將波形1文件發(fā)送到設備
          f = open(“wave1.bin”, “rb”) #wave1.bin 是要被發(fā)送的波形
          data = f.read()
          print (“write bytes:”,len(data))
          dev.write_raw(“C1:WVDT WVNM,wave1,FREQ,2000.0,TYPE,8,AMPL,4.0,OFST,0.0,PHASE,0.0,WAVEDATA,%s” % (data))
          #”X” series (SDG1000X/SDG2000X/SDG6000X/X-E)
          dev.write(“C1:ARWV NAME,wave1”)
          f.close()
          if __name__ == ‘__main__’:
          create_wave_file()
          send_wave_data(device)
          device.write(“C1:SRATE MODE,TARB,VALUE,333333,INTER,LINE”) #Use TrueArb and fixed sample rate to play every point
          ###

          本文引用地址:http://cafeforensic.com/article/202407/461004.htm


          評論


          相關推薦

          技術專區(qū)

          關閉