承上節的介紹,自23R2版本起,AEDT Circuit 已將 EMI 接收器模型納入資料庫中。然而,許多電力電子問題,還是有許多用戶會以 TwinBuilder 或 Simplorer 進行分析。本節筆者以一馬達驅動器的模擬來作範例示範,使用Simplorer作為電路軟體。是的,筆者想做一個示範,您不需要使用 Circuit 來模擬電路,但一樣能利用 Circuit 中的 EMI Receiver 模型來做分析。
EMI 模擬是一個不容易的工作,涉及多個細節重點,例如LISN的搭建、走線的寄生參數萃取、元件精確的建模...等要素,但本節不花篇幅詳細介紹。考慮過分析要素後,我們在Simplorer中搭建好電路,如圖2-10所示,筆者將利用此時域模擬結果來做示範。
// TAB EMIData Transfer.py
# -*- coding: utf-8 -*-
import pandas as pd
import tkinter as tk
from tkinter import filedialog, messagebox
def adjust_time_column(file_path, output_path):
# 判斷檔案是 CSV 還是 TAB 格式
sep = '\t' if file_path.endswith(('.tab', '.tsv', '.txt')) else ','
# 讀取檔案,指定分隔符
df = pd.read_csv(file_path, sep=sep)
# 檢查時間單位並進行相應的調整
if 'Time [s]' in df.columns:
time_column = 'Time [s]'
round_number=9
elif 'Time [ms]' in df.columns:
df['Time [ms]'] = df['Time [ms]'] / 1000 # 轉換為秒
df.columns = ['Time [s]', 'V_LISN_R.V [V]']
time_column = 'Time [s]'
round_number=12
elif 'Time [us]' in df.columns:
df['Time [us]'] = df['Time [us]'] / 1000000 # 轉換為秒
df.columns = ['Time [s]', 'V_LISN_R.V [V]']
time_column = 'Time [s]'
round_number=12
elif 'Time [ns]' in df.columns:
df['Time [ns]'] = df['Time [ns]'] / 1000000000 # 轉換為秒
df.columns = ['Time [s]', 'V_LISN_R.V [V]']
time_column = 'Time [s]'
round_number=12
else:
messagebox.showerror("錯誤", "不支援的時間單位。請使用 [s], [ms], [us], 或 [ns] 單位。")
return
# 歸零處理,並控制精度
first_time_value = df[time_column].iloc[0]
df[time_column] = (df[time_column] - first_time_value).round(round_number)
# 儲存結果為TAB檔案
df.to_csv(output_path, sep='\t', index=False, header=False)
def select_file():
root = tk.Tk()
root.withdraw() # 隱藏主視窗
file_path = filedialog.askopenfilename(
title="選取檔案",
filetypes=[("TAB 檔案", "*.tab;*.tsv;*.txt"), ("CSV 檔案", "*.csv")]
)
if file_path:
output_path = filedialog.asksaveasfilename(
title="儲存為TAB檔案",
defaultextension=".tab",
filetypes=[("TAB 檔案", "*.tab"), ("TAB 檔案", "*.tsv;*.txt")]
)
if output_path:
adjust_time_column(file_path, output_path)
messagebox.showinfo("完成", f"檔案已儲存為 {output_path}")
# 執行選取檔案的功能
select_file()
以上是完整的 Ansys EMI Receiver 的模型使用介紹。有了這個工具,使用者不需要像上節介紹的,使用編碼方式運用數值方法轉換成頻域資料,大幅降低進入 EMI 模擬的門檻。