Problem with "assignin" in combination with "Interpreted MATLAB Function"

Klaas Albers (view profile)

on 20 Jun 2019
Latest activity Edited by Klaas Albers

Klaas Albers (view profile)

on 20 Jun 2019
Hello,
I´m currently working on the Simulation of a heat exchanger in combination with a controll system in Simulink. I wrote a function in Matlab to solve a differential equation and call this script via a Interpreted MATLAB Function Block in Simulink. The code looks as the following:
function [T_ww] = Definition_of_Tww(T_rl)
%Constants
m_ii=evalin('base','m_i');
c_pp=evalin('base','c_p');
m_pkt11=evalin('base','m_pkt1');
m_pkt22=evalin('base','m_pkt2');
T_vll=evalin('base','T_vl');
T_wkk=evalin('base','T_wk');
%Calculations
c_1=m_ii*c_pp;
c_2=c_1;
c_pkt1=c_pp*m_pkt11;
c_pkt2=c_pp*m_pkt22;
syms T_w(t);
cond = T_w(0)==273.15+15;
eqn = c_1*diff((T_vll-T_rl),t)-c_pkt1*(T_vll-T_rl)==c_2*diff((T_wkk-T_w),t)-c_pkt2*(T_wkk-T_w);
T_ww=dsolve(eqn,cond);
end
To solve this differential equation i need both massflows in the heat exchanger. I´m transporting them to the Matlab base Workspace via a Matlab function in Simulink with the following code:
function z = fcn(w)
coder.extrinsic('assignin');
assignin('base','m_pkt1',w);
z = w;
The function for m_pkt2 is analog. I tested this function in a seperat Simulink project with a Sine Wave Block and a Profile for m_pkt2 witch i want to Simulate with and it worked there. But in the normal project only m_pkt2 gets passed over to the base Workspace. With a Simple "sin" in the Interpreted MATLAB Function Block m_pkt1 actually gets passed to the base Workspace. I tried some things so far but nothing worked.
I hope somebody can help me with this Problem.
Kind Regards