新聞中心

        EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > Python示例:使用16-bit垂直分辨率的SDG2000X / SDG6000X構(gòu)建任意波形

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

        作者: 時(shí)間:2024-07-15 來(lái)源:鼎陽(yáng)硬件設(shè)計(jì)與測(cè)試智庫(kù) 收藏

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

        2、正文
        鼎陽(yáng)科技具有16-bit。它提供了多達(dá)65,535個(gè)離散電壓等級(jí),覆蓋了輸出電壓的整個(gè)范圍(高壓負(fù)載為20 Vpp),通過(guò)信號(hào)源輸出的微小變化波形可有效測(cè)試A / D轉(zhuǎn)換和其他測(cè)量系統(tǒng)。
        本文將應(yīng)用 2.7和PyVISA 1.8來(lái)創(chuàng)建一個(gè)斜坡波形,這個(gè)斜坡波形由通道1輸出的0到65535的最低有效位的步長(zhǎng)合成。
        還實(shí)現(xiàn)了TrueArb功能,支持輸入特定的采樣率并且確保逐點(diǎn)輸出存儲(chǔ)器中任意波形的每一個(gè)波形數(shù)據(jù)點(diǎn),可精確地生成低抖動(dòng)的任意波形。
        注意:用戶(hù)需要改變機(jī)器的ID來(lái)匹配連接特定的儀器。建議在打開(kāi)儀器輸出之前就設(shè)置好振幅和其他參數(shù)。
        下圖是設(shè)置好信號(hào)源參數(shù)并打開(kāi)通道1輸出的圖片:
         
        圖1
        下圖是示波器捕獲信號(hào)源輸出信號(hào)的界面顯示:
         
        圖2
        點(diǎn)擊這個(gè)鏈接可以下載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
        #設(shè)備的USB 
        rm = visa.ResourceManager()
        device = rm.open_resource(‘USB0::0xF4EC::0x1101::SDG6XBAQ1R0071::INSTR’)  #CHANGE TO MATCH YOUR INSTRUMENT ID
        #Little endian, 16位2的補(bǔ)碼
        # 創(chuàng)建一個(gè)波形
        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) #十六進(jìn)制整數(shù)到ASCii編碼的字符串
        f.write(c)
        f.close()
        def send_wave_data(dev):
        #將波形1文件發(fā)送到設(shè)備
        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://www.104case.com/article/202407/461004.htm


        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 重庆市| 华容县| 金沙县| 迭部县| 佛冈县| 扬中市| 庆云县| 富川| 海盐县| 永新县| 毕节市| 小金县| 宜兰县| 平陆县| 班玛县| 乐都县| 唐海县| 杂多县| 海丰县| 桐柏县| 高平市| 伊宁县| 东安县| 宜春市| 乌苏市| 舒城县| 镶黄旗| 岳阳县| 鸡泽县| 厦门市| 西安市| 安福县| 安多县| 涿鹿县| 无为县| 长垣县| 黄梅县| 宝兴县| 鄂托克旗| 政和县| 乐清市|