How to solve this issue Variable 'X' is not fully defined on some execution paths.

22 vues (au cours des 30 derniers jours)
Dear All,
I have a code into a MATLABFUNCTION block of Simulink that jump out this error message "
Variable 'CONDICIONTRAMO' is not fully defined on some execution paths. Function 'Battery_Control/Function_Cruz_v2' (#25.1881.1895), line 57, column 12: "CONDICIONTRAMO" Launch diagnostic report."
Anyone of you can help me out to find the way to solve this ? Please.
function [SOC_CC, Bat_charge] = BUsage(top, SOC, SOC_Seg, SOCint, W_demand, Power_PV)
if SOC>=SOC_Seg
SOC_CC=0;
Bat_charge=0;
return
else
if SOC>=SOCint
SOC_CC=1;
Bat_charge=0;
end
if SOC<=SOCint
if (top>=8)||(top<=9) && Power_PV>W_demand
CONDICIONTRAMO = 1;
disp('Llano 1 de 8 a 9')
elseif (top>=8)||(top<=9) && Power_PV<W_demand
CONDICIONTRAMO = 2;
disp('"-" Llano 1 de 8 a 9')
elseif (top>=10)||(top<=13) && Power_PV>W_demand
CONDICIONTRAMO = 3;
disp('Punta 1 de 10 a 13')
elseif (top>=10)||(top<=13) && Power_PV<W_demand
CONDICIONTRAMO = 4;
disp('"-"Punta 1 de 10 a 13')
elseif (top>=14)||(top<=17) && Power_PV>W_demand
CONDICIONTRAMO = 5;
disp('Llano 2 de 14 a 17')
elseif (top>=14)||(top<=17) && Power_PV<W_demand
CONDICIONTRAMO = 6;
disp('"-"Llano 2 de 14 a 17')
elseif (top>=18)||(top<=21)&& Power_PV>W_demand
CONDICIONTRAMO = 7;
disp('Punta 2 de 18 a 21')
elseif (top>=18)||(top<=21)&& Power_PV<W_demand
CONDICIONTRAMO = 8;
disp('"-"Punta 2 de 18 a 21')
elseif (top>=22)||(top<=23)&& Power_PV>W_demand
CONDICIONTRAMO = 9;
disp('Llano 3 de 22 a 23:59')
elseif (top>=22)||(top<=23)&& Power_PV<W_demand
CONDICIONTRAMO = 10;
disp('"-"Llano 3 de 22 a 23:59')
elseif (top>=24)||(top<=8) && Power_PV<W_demand
CONDICIONTRAMO =11;
disp('Valle de 24 a 8')
end
switch CONDICIONTRAMO
case 1
SOC_CC=1;
Bat_charge=0;
case 2
SOC_CC=0;
Bat_charge=0;
case 3
SOC_CC=1;
Bat_charge=0;
case 4
SOC_CC=0;
Bat_charge=0;
case 5
SOC_CC=1;
Bat_charge=0;
case 6
SOC_CC=0;
Bat_charge=0;
case 7
SOC_CC=1;
Bat_charge=0;
case 8
SOC_CC=0;
Bat_charge=0;
case 9
SOC_CC=1;
Bat_charge=0;
case 10
SOC_CC=0;
Bat_charge=0;
case 11
SOC_CC=1;
Bat_charge=1;
otherwise
disp('No')
end
end
end
end

Réponse acceptée

Jan
Jan le 30 Juin 2021
Modifié(e) : Jan le 30 Juin 2021
Insert a definition of CONDICIONTRAMO = -1 (or NaN, or 12) either on top of the code, before the IF branchs, or in a finaly else branch:
...
elseif (top>=24)||(top<=8) && Power_PV<W_demand
CONDICIONTRAMO =11;
disp('Valle de 24 a 8')
else
CONDICIONTRAMO = 12;
end
But then Bat_charge is not defined in all branchs. Add a default value for this variable also.
By the way, the Switch/Case-Block is hard to read. Maybe this is tougher:
% 1 2 3 4 5 6 7 8 9 10 11 12
SOC_CC_V = [1 0 1 0 1 0 1 0 1 0 1 NaN];
Bat_charge_V = [0 0 0 0 0 0 0 0 0 0 1 NaN];
SOC_CC = SOC_CC_V(CONDICIONTRAMO);
Bat_charge = Bat_charge_V(CONDICIONTRAMO);
  7 commentaires
Jan
Jan le 2 Juil 2021
As far as I understand, this is another problem. If so, please open a new thread to get support.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Simulink Functions dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by