PLL锁相环+abc-dq坐标变换——MATLAB代码

参考Simulink编写锁相环程序,在数据处理中不需要运行sim函数调用Simulink,以此来提高数据处理的效率。

下面相关代码,此处未考虑0轴分量


function [ud_filt,uq_filt] = PLL(data,kp,ki)
%%kp = 1; %ki = 10; 锁相环参数

size_data = size(data);
Ts = ceil(1e10*(data(1,2) - data(1,1)))/1e10;%计算采样时间
time = 0:Ts:6-Ts;
ua = data(2,:);% 三相电流数据
ub = data(3,:);
uc = data(4,:);


wt(1) = 0;% 初始角度
for i=1:1:size_data(2)
    [ud(i),uq(i)] = a3s_2r (ua(i),ub(i),uc(i),wt(i));%% abc-dq 坐标变换

    time_for = time(1:i);  %% 循环时间
    if i==1
        yq(i) = uq+uq*time_for; % 首次循环采用数值计算
        yyq(i) = yq*time_for;
    else
        sys_PI = tf([kp ki],[1 0]);
        yq = lsim(sys_PI,uq,time_for);% 
        sys_s = tf(1,[1 0]);
        yyq = lsim(sys_s,yq,time_for);
    end
    wt(i+1) = mod(yyq(i),2*pi);% 循环角度
    f(i) = yq(i)/2/50/pi;% 输出频率
end
%% 滤波环节
fc = 100;%截止频率
fs = 1/Ts;%采样频率

[b,a] = butter(6,fc/(fs/2));
% freqz(b,a)
ud_filt = filter(b,a,ud); %b为分子,a为分母 第三项为输入数据
uq_filt = filter(b,a,uq); 
end

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值