✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。
🍎 往期回顾关注个人主页:Matlab科研工作室
👇 关注我领取海量matlab电子书和数学建模资料
🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。
🔥 内容介绍
电动传动系统作为现代工业和交通领域的核心组成部分,广泛应用于各类机械设备、电动汽车、航空航天等众多场景。在工业生产中,电动传动系统驱动着各种生产设备,确保生产流程的高效运行;在交通运输领域,电动汽车的动力系统依赖电动传动实现车辆的驱动。其可靠运行对于提高生产效率、保障交通安全以及提升人们的生活质量至关重要。
然而,电动传动系统在长期运行过程中,由于各种原因可能出现故障,如电动机的绕组短路、轴承磨损,功率变换器的元件失效等。这些故障若未及时发现和处理,可能导致设备停机、生产中断,甚至引发安全事故,造成巨大的经济损失。因此,对电动传动系统进行实时状态监测,及时发现潜在故障并采取相应措施,对于保障系统的可靠运行至关重要。传统的状态监测方法通常依赖多种传感器,增加了系统成本和复杂性。基于相电流测量的数据驱动无传感器状态监测方法,为解决这一问题提供了创新且有效的途径。
电动传动系统工作原理
电动传动系统主要由电动机和功率变换器等组件构成,其核心功能是将电能转化为机械能。
- 电动机:以常见的三相异步电动机为例,其工作基于电磁感应原理。定子绕组通入三相交流电后,会产生一个旋转磁场。这个旋转磁场切割转子导体,在转子导体中产生感应电动势和感应电流。载流的转子导体在旋转磁场中受到电磁力的作用,从而产生电磁转矩,驱动转子旋转。转子的转速与旋转磁场的转速存在一定差异,这种差异保证了电动机能够持续输出机械能。
- 功率变换器:功率变换器在电动传动系统中起着调节电动机输入电能的关键作用。它能够根据控制信号,将固定电压和频率的交流电转换为适合电动机运行的可变电压和频率的交流电。通过改变输出电压和频率,可以实现对电动机转速的精确控制,以满足不同负载和工况的需求。
相电流与电动传动系统状态的关系
相电流是电动传动系统运行状态的重要指示器,其特性与系统的负载、转速以及是否存在故障密切相关。
- 负载变化:当电动传动系统的负载增加时,为了维持转子的旋转,电动机需要输出更大的电磁转矩。根据电动机的电磁关系,这就要求相电流幅值相应增大。例如,在工业生产中,当机床加工的工件材料硬度增加或切削量增大时,电动机负载上升,相电流幅值会明显上升。
- 转速改变:电动机的转速与相电流之间也存在关联。在电动机启动过程中,转速从静止逐渐上升,相电流会经历一个先增大后减小的过程。当电动机达到稳定运行转速后,相电流会维持在一个相对稳定的值。而且,在调速过程中,随着转速的变化,相电流的幅值和相位也会相应改变。
- 故障影响:电动传动系统出现故障时,相电流的波形会发生显著畸变。例如,电动机发生匝间短路故障时,部分绕组的电阻减小,导致该相电流增大,且电流波形中会出现高次谐波,使得电流波形不再是正常的正弦波。通过对相电流幅值、相位和波形的分析,可以有效检测出电动传动系统是否存在故障以及故障的类型。
数据驱动方法原理
数据驱动方法旨在通过对大量历史数据的分析,挖掘电动传动系统运行模式与状态之间的内在联系,从而实现对系统状态的监测和故障诊断。
- 数据采集:首先需要采集电动传动系统在正常运行和各种故障状态下的相电流数据。这些数据的采集应尽可能涵盖系统可能出现的各种工况和故障类型,以保证数据的全面性和代表性。可以通过在电动机的三相电路中安装电流传感器来获取相电流信号,并将其转换为数字信号进行存储。
- 特征提取:采集到的原始相电流数据包含大量信息,但并非所有信息都对状态监测具有同等重要性。因此,需要运用信号处理技术提取关键特征。常见的特征包括电流的均方根值(RMS),它反映了电流的平均能量水平,对于判断负载变化和某些故障具有重要意义;谐波含量,即电流中不同频率谐波成分的比例,能够有效指示电动机的故障,如匝间短路、气隙不均等会导致谐波含量增加。此外,还可以提取电流的峰值、相位等特征。
- 模型建立:利用机器学习或深度学习算法对提取的特征进行分析和分类。机器学习算法如支持向量机(SVM)、决策树等,能够根据特征数据建立分类模型,将电动传动系统的运行状态分为正常、不同故障类型等类别。深度学习算法,如卷积神经网络(CNN)或循环神经网络(RNN),由于其强大的非线性特征学习能力,在处理复杂的相电流数据时表现出色。通过对大量标记数据(即已知运行状态的数据)的学习,这些算法能够自动发现特征与状态之间的复杂关系,从而建立准确的状态监测模型。在实际应用中,将实时采集的相电流数据经过特征提取后输入到训练好的模型中,即可实现对电动传动系统运行状态的实时判断。
无传感器优势
基于相电流测量的无传感器状态监测方法相较于传统的有传感器方法具有显著优势。
- 成本降低:传统的状态监测方法通常需要安装多种传感器,如速度传感器、温度传感器等,这些传感器不仅增加了系统的硬件成本,还需要额外的布线和安装空间。而基于相电流测量的方法无需这些额外传感器,仅通过对相电流的分析即可获取系统状态信息,大大降低了系统成本。
- 可靠性提高:传感器作为系统中的一个组件,本身存在故障的可能性。多个传感器的使用增加了系统的故障点,一旦某个传感器出现故障,可能导致错误的监测结果。无传感器方法减少了这些潜在的故障源,提高了系统整体的可靠性。
- 维护性增强:由于减少了传感器的使用,系统的维护复杂度和成本也相应降低。无需定期对传感器进行校准和维护,降低了维护工作量和成本,提高了系统的可用性。
总结
基于相电流测量对电动传动系统进行无传感器状态监测的数据驱动方法,融合了电动传动系统的工作原理、相电流与系统状态的紧密联系以及数据驱动技术的优势。通过采集相电流数据、提取关键特征并运用机器学习或深度学习算法建立模型,实现对电动传动系统运行状态的准确监测。这种方法在降低成本、提高可靠性和维护性方面具有显著优势,对于保障电动传动系统的可靠运行,推动其在各个领域的广泛应用具有重要价值。
电动传动系统(如电动机)是机电旋转系统的核心部件。对于电动汽车等智能系统而言,实时监测这些设备的运行状态是基本要求。但传统方法通常需要额外安装传感器,这不仅增加了系统复杂度,还导致设备体积膨胀。本研究旨在探索:除了常规的伏安测量外,是否可以通过相电流、相位角等外部参数实现状态监测,从而避免额外传感器的安装。本文提出的数据驱动方法无需预先了解设备内部结构,使状态监测过程完全自主化,彻底摆脱对传感器的依赖。
⛳️ 运行结果
📣 部分代码
function plotConfMat(varargin)
%PLOTCONFMAT plots the confusion matrix with colorscale, absolute numbers
% and precision normalized percentages
%
% usage:
% PLOTCONFMAT(confmat) plots the confmat with integers 1 to n as class labels
% PLOTCONFMAT(confmat, labels) plots the confmat with the specified labels
%
% Vahe Tshitoyan
% 20/08/2017
%
% Arguments
% confmat: a square confusion matrix
% labels (optional): vector of class labels
% number of arguments
switch (nargin)
case 0
confmat = 1;
labels = {'1'};
case 1
confmat = varargin{1};
labels = 1:size(confmat, 1);
otherwise
confmat = varargin{1};
labels = varargin{2};
end
confmat(isnan(confmat))=0; % in case there are NaN elements
numlabels = size(confmat, 1); % number of labels
% calculate the percentage accuracies
confpercent = 100*confmat./repmat(sum(confmat, 1),numlabels,1);
% plotting the colors
imagesc(confpercent);
title(sprintf('Accuracy: %.2f%%', 100*trace(confmat)/sum(confmat(:))));
ylabel('Output Class'); xlabel('Target Class');
% set the colormap
colormap(flipud(gray));
%colormap(flipud(spring));
% Create strings from the matrix values and remove spaces
textStrings = num2str([confpercent(:), confmat(:)], '%.1f%%\n%d\n');
textStrings = strtrim(cellstr(textStrings));
% Create x and y coordinates for the strings and plot them
[x,y] = meshgrid(1:numlabels);
hStrings = text(x(:),y(:),textStrings(:), ...
'HorizontalAlignment','center');
% Get the middle value of the color range
midValue = mean(get(gca,'CLim'));
% Choose white or black for the text color of the strings so
% they can be easily seen over the background color
textColors = repmat(confpercent(:) > midValue,1,3);
set(hStrings,{'Color'},num2cell(textColors,2));
% Setting the axis labels
set(gca,'XTick',1:numlabels,...
'XTickLabel',labels,...
'YTick',1:numlabels,...
'YTickLabel',labels,...
'TickLength',[0 0]);
end
🔗 参考文献