学习经验分享篇(1)——怎样将示波器数据(.CSV数据)导入Matlab/Simulink中并进行FFT分析(电机控制/电力电子方向必备技能)
最近比较忙,没怎么更新,后续打算不断出一些学习贴。
1.为什么要出这篇文章?
(1)我当时第一次导示波器数据进入Matlab里面的时候,一直疯狂报错,搞了好久。
(2)好多同学现在连Simulink的FFT分析都不会用。
学好这项技能之后,以后处理数据就很快。做实验试探自己提出的方法的效果的时候,需要非常大量的数据进行验证。我现在处理数据比较熟练了,基本上1分钟不到就可以把1份.CSV数据处理好,并且完成FFT分析。
文章的最后我会发模型和代码。
2.如何处理一份示波器数据(.CSV数据)?
下面这是我某次实验截取的A-B-C三相电流波形以及q轴电流波形(实验用的是三相电机,电流环用的是PIR调节器,进行的是谐波抑制算法的验证)。
从这个表格中可以看到,表格主要分为两个部分,一个是表格的基本消息(上面红色方框所示),一个是实验数据(下面深蓝色方框所示)。
(1)第一步
表格的基本消息基本都没有用,唯一有用的是“SampleRate-6250”。记住这个数据,采样频率是6.25kHz。其余数据全都删除!
(2)第二步
我这时候会设置表格数据的表现形式,因为我看这个科学计数法不顺眼。选中整个表格,选择“单元格格式”,选择“数字-数值”,再选择“小数位数:6”。
为什么我选择小数位数6呢?因为我有时候要处理到us级的数据,所以我个人习惯处理到小数点第6位。
(3)第三步
在A列的右侧再加入一个空白列。
加入前 加入后(4)第四步
标上时间数据。首先先给A列数据按顺序填上“1 2 3 4 5 6 7 8”
然后给B2写上公式,B2=A2/6250。为啥是1/6250,因为每个采样周期=1/f,而采样频率f是刚才前面给的数据(6250).
最后把B列都按照整个公式写下去:Bx=Ax/6250.
相当于B列表示时间t
(5)第五步
给每列数据都写上标签,B是时间t,CDE分别是abc三相电流,F是iq
这里你写不写标签无所谓,但是第一行必须放至少一个字母!!!!!!不然matlab会报错!
3.如何把处理好的示波器数据(.CSV数据)导入Matlab/Simulink中?
直接运行下面这段代码即可。
代码这里我直接贴出来了。
然后再建立一个Simulink模型就好了。
因为我的采样频率是6.25kHz,而采样点是12.5kHz,所以总的数据时间是2s,我这里就把simulink仿真时间设置成了2s。
大概在0.875s的时候,电流有个比较大的波动,这是因为我把电流环PI调节器改成了PIR调节器。PIR调节器主要是为了抑制谐波,那我们来看看抑制谐波前后的相电流对比。
4.如何用Simulink进行FFT分析?
(1)交流量的分析
我电机当时的转速是300RPM,极对数是4,可以算一下电机的电频率是300/60*4=20Hz,所以要在“FFT settings”这里选择20Hz的基波频率。同时还有选择FFT开始的时间以及FFT的周期个数。
最后!“display style”要选Bar,Bar就是柱状图,和“relative to fundamental”(也就是相对于基波的大小)!
谐波抑制前的相电流FFT可以看到,电机相电流里面有非常明显的五次谐波电流!这是由五次谐波反电势产生的。
因为我们要看看谐波抑制后的相电流THD,而谐波抑制是在0.875s之后开始的,所以我们接下来把FFT开始时间设置成>0.875s的。
谐波抑制后的相电流FFT可以看到,相电流的五次谐波消失了,同时七次谐波电流也消失了。毕竟R调节器在d-q轴抑制6次谐波,也就是抑制相电流的五七次谐波。相电流THD由原来的4.28%下降到了2.98%。
(2)直流量的分析
接下来我们分析一下直流量——q轴电流!因为q轴电流是第4通道的数据,这里把input改成4。
这里要把“Display style”改一下!改成“relative to DC component”!
经常有人问我为什么转矩/q轴电流的FFT分析THD那么大!全都是因为不选择“relative to DC component”!
转矩和q轴电流的主要成分都是DC啊,肯定要选择“relative to DC component”!
谐波抑制前的q轴电流FFT分析 谐波抑制后的q轴电流FFT分析
可以看到,谐波抑制之后,q轴电流的六次谐波分量消失了。