电动汽车驱动电机转子断条故障诊断【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1定子电流谐波与瞬时无功功率的联合特征空间针对转子断条故障时定子电流中边频分量微弱且易受负载波动干扰的问题提出一种基于自适应陷波滤波与瞬时无功功率分析的特征提取方法。首先将三相定子电流通过d-q变换转换到旋转坐标系采用二阶广义积分器构造陷波器精确滤除基波分量50Hz并保留断条故障特征频率基频±2sfss为转差率。然后计算经过滤波后的电流的瞬时无功功率Q并通过傅里叶变换提取Q频谱中2sfs分量的幅值和相位。此外还从电流包络谱中提取故障特征与基频之比、负序电流分量等共8维特征。在7.5kW永磁同步电机试验台上模拟了1根、2根和3根断条故障负载在20%~100%波动。该方法在负载波动下仍保持92%以上的诊断准确率而单纯电流谱分析准确率降至71%。2轻量化一维卷积门控循环网络LCGRU为了适配车载嵌入式诊断系统设计了一种轻量化的时空特征融合网络LCGRU。该网络首先使用深度可分离卷积层替代标准卷积核心模块是卷积门控循环单元将一维卷积操作嵌入到GRU的输入门和重置门中使得每个时间步的输入先经过卷积提取局部模式再进入循环门控。同时采用通道剪枝策略在训练后移除贡献度低于0.05的通道最终模型参数量仅为0.35M。在特斯拉Model 3驱动电机75kW的实测数据上该模型对转子断条的实时检测延迟为8ms准确率达到96.8%比标准LSTM模型快2.3倍且参数量减少78%。3基于虚拟样本生成的半监督故障分类由于电动汽车运行中转子断条故障数据难以大量采集构建了一个半监督学习框架SSDRB。首先从健康状态电机数据中通过电机数学模型仿真生成大量带不同程度断条故障的虚拟样本具体通过调整转子导条的电阻参数实现。然后采用教师-学生模型进行训练教师模型对真实无标签数据生成伪标签学生模型同时在仿真数据和带伪标签的真实数据上训练损失函数包括有监督交叉熵和无监督一致性正则化项。在真实断条数据仅25组的情况下该方法分类准确率达到88.4%比不使用虚拟样本的监督学习高出31个百分点。,import torch.nn as nnimport torchimport numpy as npfrom scipy.signal import butter, filtfiltclass AdaptiveNotchFilter(nn.Module):def __init__(self, fs1000, f050, bw2):super().__init__()nyq fs/2b, a butter(2, [(f0-bw)/nyq, (f0bw)/nyq], btypestop)self.register_buffer(b, torch.tensor(b, dtypetorch.float32))self.register_buffer(a, torch.tensor(a, dtypetorch.float32))def forward(self, x):x_np x.cpu().numpy()filtered filtfilt(self.b.numpy(), self.a.numpy(), x_np, axis-1)return torch.tensor(filtered, dtypex.dtype, devicex.device)class DepthwiseConvGRUCell(nn.Module):def __init__(self, in_ch, out_ch, kernel_size3):super().__init__()self.depthwise nn.Conv1d(in_ch, in_ch, kernel_size, groupsin_ch, paddingkernel_size//2)self.pointwise nn.Conv1d(in_ch, out_ch, 1)self.W_z nn.Conv1d(out_ch, out_ch, 1)self.W_r nn.Conv1d(out_ch, out_ch, 1)self.W_h nn.Conv1d(out_ch, out_ch, 1)def forward(self, x, h):# x: (B, C_in, T), h: (B, C_out, T)x_conv self.pointwise(self.depthwise(x))z torch.sigmoid(x_conv self.W_z(h))r torch.sigmoid(x_conv self.W_r(h))h_tilde torch.tanh(x_conv self.W_h(r * h))h_new (1 - z) * h z * h_tildereturn h_newclass LCGRU(nn.Module):def __init__(self, input_dim1, hidden_dim32, num_layers2):super().__init__()self.cells nn.ModuleList([DepthwiseConvGRUCell(input_dim if i0 else hidden_dim, hidden_dim) for i in range(num_layers)])def forward(self, x):h [torch.zeros_like(x[:,:self.cells[0].pointwise.out_channels]) for _ in range(len(self.cells))]for t in range(x.shape[-1]):xt x[:,:,t:t1]for i, cell in enumerate(self.cells):h[i] cell(xt, h[i])xt h[i]return h[-1].mean(dim-1)class TeacherStudentSSD(nn.Module):def __init__(self, student, teacher, ema_decay0.999):super().__init__()self.student studentself.teacher teacherself.ema_decay ema_decayfor param in self.teacher.parameters():param.detach_()torch.no_grad()def update_teacher(self):for s_param, t_param in zip(self.student.parameters(), self.teacher.parameters()):t_param.data self.ema_decay * t_param.data (1 - self.ema_decay) * s_param.datadef forward(self, x_s, x_tNone, return_studentTrue):if return_student:return self.student(x_s)else:return self.teacher(x_t)如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2571040.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!