I'm using a C function in matlab simulink to get the output of non linear equation of the form y = x + e^x. Though I can't get through this after a big headache and a lot of effort. You are my last hope my friends, so thank you in advance.
Here is the code:
All the parameters are defined externally as double.Code:void Sigma(const real_T *Tc,const real_T *Irradiance,const real_T *Vpv,const real_T *Ipv, real_T *I0)
{
real_T Irs, Is, J, Tcc;
(Ipv[0] < 0) ? (J=0) : (J = Ipv[0]);
Tcc = (Tc[0]) + 273.15; /* Celsius to Kelvin Trasformation*/
Irs = (IscRef) / (exp((q) * ((VocRef) + (beta) *((Tcc)-(Tref))) / ((Ns) * (K) * (eta) * (Tcc))) -1);
Is = (Irs) * (pow(Tcc/Tref, 3)) * exp( (q) * (Eg) * (1/(Tref) - 1/(Tcc))/((K) * (eta)));
I0[0] = (Np) * (((alpha) * ((Tcc) - (Tref)) + (IscRef)) * (Irradiance[0])/(Irradiance_ref)) -
((Is) * (exp((q) * ((Vpv[0])/(Ns) + (J) * (Rs)/(Np)) / ((K) * (Tcc) * (eta))) -1) +
((Np)/(Ns) * (Vpv[0]) + (J) * (Rs)) / (Rsh));
}
Matlab has a C compiler installed and co-working with it in real time
Here is the builder error:
Code:Error PV_module_wrapper.c: 71 syntax error; found `{' expecting `;'
Error PV_module_wrapper.c: 71 skipping `{'
Error PV_module_wrapper.c: 75 operands of - have illegal types `double' and `pointer to const double'
Error PV_module_wrapper.c: 75 operands of * have illegal types `pointer to const double' and `int'
Error PV_module_wrapper.c: 75 operands of * have illegal types `pointer to const double' and `pointer to const double'
Error PV_module_wrapper.c: 75 operands of * have illegal types `pointer to const double' and `pointer to const double'
Error PV_module_wrapper.c: 75 operands of * have illegal types `int' and `pointer to const double'
Error PV_module_wrapper.c: 75 operands of / have illegal types `pointer to const double' and `double'
Error PV_module_wrapper.c: 76 operands of / have illegal types `double' and `pointer to const double'
Error PV_module_wrapper.c: 76 operands of * have illegal types `pointer to const double' and `pointer to const double'
Error PV_module_wrapper.c: 76 operands of / have illegal types `int' and `pointer to const double'
Error PV_module_wrapper.c: 76 operands of * have illegal types `pointer to const double' and `pointer to const double'
Error PV_module_wrapper.c: 77 undeclared identifier `I0'
Error PV_module_wrapper.c: 77 type error: pointer expected
Error PV_module_wrapper.c: 77 operands of - have illegal types `double' and `pointer to const double'
Error PV_module_wrapper.c: 77 operands of * have illegal types `pointer to const double' and `int'
Error PV_module_wrapper.c: 77 operands of * have illegal types `pointer to const double' and `double'
Error PV_module_wrapper.c: 77 operands of / have illegal types `int' and `pointer to const double'
Error PV_module_wrapper.c: 77 operands of * have illegal types `pointer to const double' and `int'
Error PV_module_wrapper.c: 78 operands of / have illegal types `double' and `pointer to const double'
Error PV_module_wrapper.c: 78 too many errors
C:\PROGRA~1\MATLAB\R2009B\BIN\MEX.PL: Error: Compile of 'PV_module_wrapper.c' failed.