It shows following error 'Simulink does not have enough information to determine output sizes for this block. If you think the errors below are inaccurate, try specifying types for the block inputs and/or sizes for the block outputs.'

5 ビュー (過去 30 日間)
function [Sa,Sb,Sc] = Control(Vga,Vgb,ika,ikb,Vsa,Vsb) % I_ref=0; % I_meas=0; % Vga=0; % Vgb=0; Ts= 1e-04; p= 2000; Vdc=620; R=0.8; L=0.005; g = 0; v0 = 0; v1 = 2/3*Vdc; v2 = 1/3*Vdc + 1j*sqrt(3)/3*Vdc; v3 = -1/3*Vdc + 1j*sqrt(3)/3*Vdc; v4 = -2/3*Vdc; v5 = -1/3*Vdc - 1j*sqrt(3)/3*Vdc; v6 = 1/3*Vdc - 1j*sqrt(3)/3*Vdc; v7 = 0; v = [v0 v1 v2 v3 v4 v5 v6 v7]; % Switching states states = [0 0 0;1 0 0;1 1 0;0 1 0;0 1 1;0 0 1;1 0 1;1 1 1]; persistent x_old % Initialize values if isempty(x_old), x_old = 1; end
g_opt = 1e10;
x_opt=inf;
% Read current measurements at sampling instant k
for i = 1:7
% i-th voltage vector for current prediction
V1= real(v(i));
V2=Imag(v(i));
Iast1=(2*(Vsa)*p)/(3*((Vsa)^2+(Vsb)^2));
Ibst1=(2*(Vsa)*p)/(3*((Vsa)^2+(Vsb)^2));
% Current prediction at instant k+1
ik1a = ( 0.9841)*ika + (1/R)*(1- 0.9841)*(V1 - Vga);
ik1b = ( 0.9841)*ikb + (1/R)*(1- 0.9841)*(V2 - Vgb);
% Cost function
g = (abs(Iast1 -( ik1a)))^2 + (abs(Ibst1 -( ik1b)))^2;
if (g<g_opt)
g_opt = g;
x_opt = i;
end
end
x_old = x_opt;
Sa = states(x_opt,1);
Sb = states(x_opt,2);
Sc = states(x_opt,3);
end

回答 (0 件)

カテゴリ

Help Center および File ExchangeSimulink についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by