[S9389] PAMインバータのスイッチングタイミングを設定するスクリプト

 

PAMインバータのスイッチングタイミングを設定するスクリプトを例示します。

app = designer.GetApplication()

# 設定用のダイアログボックスを作成

dialog = app.CreateDialogBox()

# 表示するテキストを定義 (日本語と英語)

title_en = u"Settings for Inverter Switch"

label1_en = u"Number of Pole"

label2_en = u"Initial phase of U(-360 < setting value < 360)"

label3_en = u"Commutating Sequence(UWV = 0, UVW = 1)"

label4_en = u"Name of Macro component"

title_jp = u"インバータスイッチの設定"

label1_jp = u"極数"

label2_jp = u"U相の初期位相(-360 < 設定値 < 360)"

label3_jp = u"相順(UWV = 0, UVW = 1)"

label4_jp = u"マクロ素子名"

# 表示するテキストを指定

dialog.SetTranslation(title_en, title_jp)

dialog.SetTranslation(label1_en, label1_jp)

dialog.SetTranslation(label2_en, label2_jp)

dialog.SetTranslation(label3_en, label3_jp)

dialog.SetTranslation(label4_en, label4_jp)

# ダイアログのタイトルを設定

dialog.SetTitle(title_en)

# 整数入力フィールドを追加: 極数

dialog.AddInteger("int_name", label1_en, 2)

# 実数入力フィールドを追加: U相の初期位相

dialog.AddReal("real_name", label2_en, 0.0)

# 実数入力フィールドを追加: 相順

dialog.AddReal("another_real", label3_en, 0)

# 文字列入力フィールドを追加: マクロ素子の名称

dialog.AddString("string_name", label4_en, "PAM")

# ダイアログを表示

dialog.Show()

# ダイアログから設定値を取得

v1 = dialog.GetValue("int_name")       # 極数 P

v2 = dialog.GetValue("real_name")      # U相の初期位相 Uini

v3 = dialog.GetValue("another_real")   # 整流シーケンス ComSeq

v4 = dialog.GetValue("string_name")    # マクロコンポーネント名

# 設定値を変数に代入

ComSeq = v3 

P = v1      

Uini = v2

# スイッチの周期(機械角)を定義

Period = 360/(P/2)

# スイッチの開始角度を計算する

def getSt1(phase, switchNumber):

   angle = 210 if switchNumber%2==0 else 30

   # U相の計算

   if phase == "U":

       # U相の開始角度

       st1 = (-Uini+angle)/(P/2)

   # V相の計算

   elif phase == "V":

       # 相順によって位相を決定

       if ComSeq == 0:

           st1 = (-Uini+angle)/(P/2)+120/(P/2)

       else:

           st1 = (-Uini+angle)/(P/2)-120/(P/2)

   # W相の計算

   elif phase == "W":

       # 相順によって位相を決定

       if ComSeq == 0: # UWV (120度遅れ)

           st1 = (-Uini+angle)/(P/2)-120/(P/2)

       else:

           st1 = (-Uini+angle)/(P/2)+120/(P/2)

   else:

       return 0.0

   return st1

# スイッチの設定値を計算し、適用する

def setSwitch(phase, switchName, switchNumber):

   # 開始角度を取得

   st1 = getSt1(phase, switchNumber)

   # 終了角度を計算

   st2 = st1+120/(P/2)

   # 初期状態を設定 (0: OFF, 1: ON)

   sIni = 0

   # st2 が 0 以下の場合は、st1 と st2 を Period だけ進める

   if st2 <= 0:

       st1 = st1+Period

       st2 = st2+Period

       sIni = 0

   # st1 が負で st2 が正の場合 (ON期間が0点をまたぐ場合)

   if (st1 < 0) and (st2 > 0):

       st1t = st1

       st1 = st2

       st2 = st1t+Period

       sIni = 1

   # st1 が Period 以下で st2 が Period を超える場合 (ON期間が Period をまたぐ場合)

   if (st1 <= Period) and (st2 > Period):

       # st1 と st2 の値を周期で分割し、st1 < st2 となるように順序を入れ替える

       st1t = st1

       st1 = st2-Period

       st2 = st1t

       sIni = 1

   # st1 が Period 以上の場合は、st1 と st2 を Period だけ戻す

   if st1 >= Period:

       st1 = st1-Period

       st2 = st2-Period

       sIni = 0

   # 現在のスタディを取得

   study = app.GetCurrentStudy()

   # マクロ素子内のスイッチを取得

   comp = study.GetCircuit().GetSubCircuit(v4).GetComponent(switchName)

   # 周期を設定

   comp.SetValue("Period", Period)

   # 第一切り替わりを設定

   comp.SetValue("t1", st1)

   # 第二切り替わりを設定

   comp.SetValue("t2", st2)

   # 初期状態を設定

   comp.SetValue("InitialState", sIni)

# W相のスイッチの設定

setSwitch("W", "S1", 1)

setSwitch("W", "S2", 2)

# V相のスイッチの設定

setSwitch("V", "S3", 3)

setSwitch("V", "S4", 4)

# U相のスイッチの設定

setSwitch("U", "S5", 5)

setSwitch("U", "S6", 6)

ファイルご利用の注意点

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