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

8 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Jan
Jan il 30 Giu 2021
Modificato: Jan il 30 Giu 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 Commenti
Jan
Jan il 2 Lug 2021
As far as I understand, this is another problem. If so, please open a new thread to get support.

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by