[S8561] 周波数応答解析(FQ)の電流値を位相ごとの値として出力するスクリプト

 

周波数応答解析の電流値を位相ごとの値としてスクリプトで出力したい。

また、[ポスト計算スクリプト]で使用したい。

Pythonスクリプトでの例は次の通りです。
# -*- coding: utf-8 -*-

import math

#CSVファイルの出力先フォルダ、周波数を指定してください。

CsvPath = u"D:/"

f = 60 #[Hz]

#回路の電流データセットから現ケースの結果を取得

app = designer.GetApplication()

numCase = app.GetCurrentStudy().GetCurrentCase()

ref1 = app.GetCurrentStudy().GetDataSet(u"回路の電流", numCase+1)

Ire = ref1.GetValue(0,1) #電流の実部の値を取得します。

Iim = ref1.GetValue(0,2) #電流の虚部の値を取得します。

#実部と虚部から振幅と初期位相を計算

Amp = math.sqrt(Ire ** 2 + Iim ** 2) #振幅[A]

Pini = math.atan2(Iim, Ire) #初期位相[Rad]

#0~360[deg]の範囲を10[deg]刻みで計算

result = "" #結果出力用変数の初期化

for deg in range(0,361,10):

   T = 1 / f * deg / 360 #X軸の時間を求める 

   I = Amp * math.sin( 2 * math.pi * f * T + Pini ) #Y軸の電流を求める

   #計算結果を結果出力用変数に格納

   result = str(result) + str(deg) + u" , " + str(I) + u"\n" 

#csvファイル作成

with open(CsvPath + "result" + str(int(numCase)) + ".csv", mode="w") as f:

   f.write(u"deg,Amp\n")

   f.write( str(result) )
※注意

本サンプルを[ポスト計算スクリプト]で使用する場合、[プロジェクトファイルを送信]で分散実行する運用には対応していません。

上記、分散実行で使用する場合は、CSVの出力先がユニークになるように修正する必要があります。

(ケース番号を使用した出力ファイル名が分散実行だとユニークにならないため)

ファイルご利用の注意点

JMAGスクリプトライブラリをご利用されるに際し、以下の利用規約をよくお読みいただき、ご同意の上ご利用下さるようお願い申し上げます。