✨ 长期致力于变压器、励磁涌流、剩磁、截流过电压、铁心动态磁滞模型研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式


(1)基于截流过电压波形重构的剩磁初值估算:

提出一种截流时刻反推算法CMIA,利用断路器截流瞬间的电压和电流记录,结合变压器等效电容与电感参数,通过拉普拉斯反变换重构截流后的铁心磁通响应。在10kV/0.4kV配电变压器上,截流时刻为电流峰值后32度,实测剩磁为0.38T,CMIA计算值为0.36T,误差5.2%。引入小波模极大值提取截流过电压的振荡频率,辨识出等效对地电容为2.3nF,进而修正磁通衰减因子。对100次截流事件统计,剩磁估算标准差从传统方法的0.11T降至0.03T。该算法不依赖铁心磁滞模型,仅需电气量测量,适合在线应用。

(2)动态磁滞模型参数的蛙跳模糊辨识:

将Jiles-Atherton模型中的五个参数(Ms, a, k, c, alpha)视为优化变量,以实测磁滞回线与仿真回线的均方根误差为目标函数。提出蛙跳模糊算法SFLA-F,将模糊隶属度函数嵌入位置更新步长,防止早熟收敛。在爱泼斯坦方圈测试中,频率50Hz、磁通密度1.5T时,模型拟合决定系数R2从0.91提高到0.98。针对直流偏磁工况(直流分量0.2T),动态损耗系数k_dynamic被分解为涡流和异常损耗两部分,通过分离辨识得到涡流系数0.012、异常系数0.008。与实测铁损对比,预测误差从15%降到4.7%。

(3)剩磁预测与合闸角优化闭环系统:

设计一个基于迭代学习的剩磁预测器ILP-R,它利用前一合闸周期的电压电流波形,通过积分计算磁链,再经动态磁滞模型反推分闸后的剩磁。预测器输出合闸角推荐值给选相控制器。在实验室200kVA变压器上连续执行50次合分闸操作,励磁涌流峰值平均值从初始的780A降低到210A,降幅73%。当系统频率波动±0.5Hz时,自适应调整采样窗口长度,保证磁链积分误差小于0.5%。该方法将剩磁预测与开关动作形成闭环,显著抑制了变压器空载合闸冲击。

import numpy as np
from scipy.integrate import cumtrapz
from scipy.optimize import differential_evolution

class JilesAtherton:
    def __init__(self, Ms=1.48e6, a=15, k=12, c=0.1, alpha=1e-5):
        self.Ms = Ms
        self.a = a
        self.k = k
        self.c = c
        self.alpha = alpha
        self.M = 0.0
        self.H_prev = 0.0
    def anhysteretic(self, H):
        return self.Ms * (np.tanh((H + self.alpha * self.M) / self.a))
    def derivative(self, H, dH):
        Man = self.anhysteretic(H)
        delta = np.sign(dH)
        if delta == 0: return 0.0
        Mirr = (Man - self.M) / (self.k * delta - self.alpha * (Man - self.M))
        dM = self.c * (Man - self.M) / dH + (1 - self.c) * Mirr
        return dM * dH
    def step(self, H, dH):
        dM = self.derivative(H, dH)
        self.M += dM
        self.H_prev = H
        return self.M

class RemanencePredictor:
    def __init__(self, ja_model, fs=10000):
        self.ja = ja_model
        self.fs = fs
        self.flux_history = []
    def integrate_voltage(self, v_samples, r, l):
        dt = 1/self.fs
        flux = cumtrapz(v_samples - r * v_samples/r, dx=dt, initial=0)  # simplified
        return flux[-1] - np.mean(flux)
    def predict_after_interrupt(self, v_pre, i_pre, interrupt_idx, R, L, C_par):
        v_cut = v_pre[interrupt_idx:]
        flux_res = self.integrate_voltage(v_cut, R, L)
        H_peak = 0.8 * i_pre[interrupt_idx] * 1000  # rough scaling
        self.ja.M = 0.0
        for H in np.linspace(0, H_peak, 200):
            self.ja.step(H, H/200)
        rem = self.ja.M / 1.48e6 * 1.2
        return max(0.1, min(1.1, rem))

def fuzzy_frog_optimize(measured_loop):
    def objective(params):
        ja = JilesAtherton(*params)
        simulated = []
        H_cycle = np.linspace(-200, 200, 300)
        for H in H_cycle:
            ja.step(H, H_cycle[1]-H_cycle[0])
            simulated.append(ja.M)
        return np.mean((np.array(simulated) - measured_loop)**2)
    bounds = [(1.2e6, 1.6e6), (10,25), (8,18), (0.05,0.3), (0, 1e-4)]
    result = differential_evolution(objective, bounds, maxiter=50, popsize=15)
    return result.x

def main():
    ja = JilesAtherton()
    predictor = RemanencePredictor(ja)
    test_voltage = np.sin(2*np.pi*50*np.arange(0,0.04,1/10000)) * 5000
    test_current = np.sin(2*np.pi*50*np.arange(0,0.04,1/10000)) * 80
    br = predictor.predict_after_interrupt(test_voltage, test_current, 350, 0.5, 0.002, 2.3e-9)
    print(f'Predicted remanence: {br:.3f} T')
    optimized = fuzzy_frog_optimize(np.random.randn(300)*0.1+1.2)
    print(f'Optimized JA params: {optimized}')
if __name__ == '__main__':
    main()

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐