Power Electronic EMC
  • ⚡EMC Introduction
  • EMI Receiver & LISN
    • EMI Receiver 數值 & LISN 模擬
    • Ansys EMI Receiver 軟體模型
    • Ansys EMI Receiver 使用介紹
  • Appendix
Powered by GitBook
On this page
  1. EMI Receiver & LISN

Ansys EMI Receiver 使用介紹

本節將介紹如何使用 EMI Receiver 來做 Conducted Emission 的模擬介紹。

PreviousAnsys EMI Receiver 軟體模型

Last updated 10 months ago

承上節的介紹,自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()

圖2-12 和圖2-13 分別是Excel和Python轉換的結果,因為軟體浮點數運算的關係,在Excel轉換時電壓精細度有些失真,但Python的不會。轉化的時候請小心數據的失真,有可能造成模擬的不準確發生。

如果想要建立法規 Limit Line,可以參考下表用 Excel 存成CSV檔案,再從Results 中 單擊滑鼠右鍵選擇 Import 匯入即可。下表是 C2 Limit 的 QP 與 AV 法規線。

以上是完整的 Ansys EMI Receiver 的模型使用介紹。有了這個工具,使用者不需要像上節介紹的,使用編碼方式運用數值方法轉換成頻域資料,大幅降低進入 EMI 模擬的門檻。

圖2-10
圖2-11
圖2-12
圖2-13
圖2-14
圖2-15