Pythonを使用して出力信号を観察しながら任意の波形を生成する
- Moku:Lab
 - Moku:Go
 - 
                        Moku:Pro
                        
                        
                            Moku:Proに関するよくある質問 Moku:Pro波形発生器 Moku:Proタイム&周波数アナライザ Moku:Proロジックアナライザ/パターンジェネレーター Moku:Proレレーザーロックボックス Moku:Proロックインアンプ Moku:Proスペクトラムアナライザ Moku:Proデータロガー Moku:Pro任意波形発生器 Moku:Proマルチ機器モード Moku:Pro位相計 Moku:Pro FIRフィルタービルダー Moku:Pro PIDコントローラー Moku:Proオシロスコープ Moku:Pro周波数応答アナライザ Moku:Proデジタルフィルターボックス
 - Python API
 - MATLAB API
 - 任意波形発生器
 - データロガー
 - デジタルフィルターボックス
 - FIR フィルタ ビルダー
 - 周波数応答アナライザー
 - レーザーロックボックス
 - ロックインアンプ
 - オシロスコープ
 - 位相計
 - PIDコントローラー
 - スペクトラムアナライザー
 - 時間と周波数アナライザー
 - 波形発生器
 - ロジックアナライザ/パターンジェネレーター
 - マルチ機器モード
 - Mokuクラウドコンパイル
 - Mokuに関するよくある質問
 - LabVIEW API
 
任意波形ジェネレータとオシロスコープの Python 実装
Mokuの任意波形ジェネレータ (AWG) を Python 内に展開して、出力信号を駆動することができます。同時に、Python AWG をオシロスコープとして使用して出力信号を表示することもできます。これを行うには、出力 1 を入力 1 にループバックする必要があります。
これは以下の Python で実装されています。
#
# Moku 例: プロット オシロスコープ と 芸術作品 波形 ジェネレータ
#
# これ 例 示す どうやって あなた できる 設定する の 任意波形ジェネレータ 楽器、
# そして ビュー 引き起こされた 時間電圧 データ フレーム で リアルタイム。
#
# (ハ) 2023 Liquid Pty. 株式会社
#
から moku.楽器 輸入 任意波形ジェネレータ、 マルチインストゥルメント、 オシロスコープ
輸入 ナンピー として いいえ
輸入 マットプロット
輸入 matplotlib.pyplot として プラス
# 打ち上げ ミム そして 接続する に あなたの デバイス を通して IP
メートル = MultiInstrument('192.168.###.###', 強制接続=True、 プラットフォームID=4)
ああ = m.set_instrument(1, 任意波形ジェネレーター
awg.set_defaults()
osc = m.set_instrument(2, オシロスコープ)
osc.set_defaults()
接続 = [dict(source="Slot1OutA", 宛先="Slot2InB")、
               dict(source="Slot1OutA", 宛先="出力1")、
               dict(ソース="Slot2OutA", 宛先="Slot2InA")]
m.set_connections(接続=接続)
電流正弦 = np.ゼロ(1000)
グ = 0
のために x で 電流正弦:
    電流正弦波[g] = np.sin((float(g)*2*np.pi/len(current_sine)))
    グ +=1
試す:
    # 生成する の 出力 正弦波 の上 チャネル 2、 500mVpp、 1MHz、 0V オフセット
    awg.generate_waveform(チャンネル=1, 頻度=1e6、 振幅 = 0.5、 サンプルレート='自動'、 lut_data=リスト(現在の正弦波)、 補間 = 真実) 
    # トリガー の上 入力 チャネル 2、 上昇 角、 0V と 0.1V ヒステリシス
    osc.set_trigger(ソース='チャンネルA', タイプ="エッジ", レベル=0、 ヒステリシス=0.1)
    # ビュー +-5マイクロ秒、 つまり トリガー で の 中心
    osc.set_timebase(-5e-6, 5e-6)
    osc.generate_waveform(1, '正弦'、 振幅=0.5、 頻度=1e6、 対称性=0.0)
    # 得る イニシャル データ フレーム に セット 上 プロット パラメータ。 これ できる なれ 終わり 一度
    # もし 私たちは 知る それ の 軸 ない 行く に 変化 (さもないと 私たちは する
    # これ で の ループ)
    plt_dtさん = osc.get_data()
    # セット 上 の プロット パラメータ
    plt.ion()
    plt.show()
    plt.grid(True)
    plt.ylim([-1,1])
    plt.xlim([plt_dt['時間'][0], plt_dt['時間'][-1]])
    行1、 = plt.plot([])
    2行目、 = plt.plot([])
    ax=plt.gca()
    # これ ループ 継続的に アップデート の プロット と 新しい データ
    その間 真実:
        # 得る 新しい データ
        データ = osc.get_data()
        # アップデート の プロット
        行1.set_ydata(データ['ch1'])
        行1.set_xdata(データ['time'])
        行2.set_ydata(データ['ch2'])
        行2.set_xdata(データ['time'])
        plt.一時停止(0.001)
を除外する 例外 として e:
        print(f'例外 発生しました: {e}')
ついに:
    # 近い の 繋がり に の Moku デバイス
    # これ 保証する ネットワーク リソース そして リリース 正しく
    m.所有権を放棄する()