繁体   English   中英

使用gui matlab运行simulink

[英]simulink run with gui matlab

我有一个Gui和一个Simulink模型,我想在Gui的文本字段中输入一些值,然后按开始按钮,然后,我的simulink模型应采用这些值并运行,结果应显示在gui statictext中。

到simulink:我必须使用常数块,它们的名称为kraft和flaeche。 块中的气压为k和f。

好的,现在我要在gui中编辑k和f的值。 这是我的代码:

      function kraft_Callback(hObject, eventdata, handles)
      kraft_value = str2num(get(hObject,'String')); 
     if (isempty(kraft_value)) 
     set(hObject,'String','0') 
     end 
      guidata(hObject, handles); 

     function flaeche_Callback(hObject, eventdata, handles)
     flaeche_value = str2num(get(hObject,'String')); 
     if (isempty(flaeche_value)) 
     set(hObject,'String','0') 
      end 
     guidata(hObject, handles);

     function start_Callback(hObject, eventdata, handles)
     k= str2double(get(hObject,'string'));
     f= str2double(get(hObject,'string'));
     sim('Steifigkeit');


    function static_CreateFcn(hObject, eventdata, handles)

但是我得到这些错误:

     Error using Gui>start_Callback (line 215)
      Error due to multiple causes.

    Error in gui_mainfcn (line 96)
    feval(varargin{:});

      Error in Gui (line 17)
     gui_mainfcn(gui_State, varargin{:});

        Error in                     @(hObject,eventdata)Gui('start_Callback',hObject,eventdata,guidata(hObject))


      Caused by:
     Error using Gui>start_Callback (line 215)
    Error evaluating parameter 'Value' in 'Steifigkeit/f'
    Error using Gui>start_Callback (line 215)
    Undefined function or variable 'f'.
    Error using Gui>start_Callback (line 215)
    Error evaluating parameter 'Value' in 'Steifigkeit/k'
    Error using Gui>start_Callback (line 215)
    Undefined function or variable 'k'.

有人可以帮我吗

我认为Simulink在基本工作区中查找kf ,但它们仅在回调函数工作区中定义。 您可能需要使用assignin

function start_Callback(hObject, eventdata, handles)
k= str2double(get(hObject,'string'));
f= str2double(get(hObject,'string'));
assignin('base','f',f);
assignin('base','k',k);
sim('Steifigkeit');

我不知道您的GUI是如何构造的,但是对我来说,根据您的代码,k和f看起来是相同的。 这就是你的本意吗?

运行模拟的命令语法的一般形式为:

SimOut = sim('model', Parameters)

因此,您可以使用命令从任何地方运行simulink模型。 您还可以将参数添加到模型中并运行它。

以下示例显示如何创建配置集并将其与sim语法一起使用。

model = 'vdp';
load_system(model)
simMode = get_param(model, 'SimulationMode');
set_param(model, 'SimulationMode', 'rapid')
cs = getActiveConfigSet(model);
model_cs = cs.copy;
set_param(model_cs,'AbsTol','1e-5',...
         'SaveState','on','StateSaveName','xoutNew',...
         'SaveOutput','on','OutputSaveName','youtNew')
simOut = sim(model, model_cs);
set_param(model, 'SimulationMode', simMode)

所以您只需要替换文本框中的值就可以了...

我通常使用它在simulink中设置一个值:

Control_Gains(1,1)=str2double(get_param([ModelName,'/PID1/PIDx'],'P'));

要么:

NewString               =   ['[',(num2str(KT)),']'];
set_param([ModelName,'/System/Model/Gain'],'Gain',NewString);

我遍历了您的代码,但是似乎没有任何函数可以更新常量块。.我创建了一个类似的GUI,以便在运行时调整输入。 试试这个方法:

在GUI中编辑框回调中 ,编写以下命令

valstr=get(hObject,'String');
val=str2double(valstr);
assignin('base','nameofvariableinmatlabworkspace',val);
set_param('constantblockpath','Value','nameofvariableinmatlabworkspace');

用出现在常量块内的变量名替换nameofvariableinmatlabworkspace,该变量的值应根据在GUI中输入的值而变化。 将常数块路径替换为该常数块的路径,例如mymodel / Constant12

您可能还需要对编辑框进行一些数据验证,然后再在matlab工作区变量中分配它们的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM