2013-05-12 4 views
0

Gui와 Simulink Model이 있습니다. Gui의 텍스트 필드에 값을 입력하고 start button을 누른 다음이 시뮬링크 모델에서이 값을 가져와 실행해야합니다. 결과는 다음과 같아야합니다. gui statictext에 표시됩니다.simulink가 gui matlab과 함께 실행

to simulink : 저는 상수 블록, ist 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'. 

누군가가 시뮬레이션을 실행 나를

답변

0

에게 명령 구문의 일반적인 형태를 도움이 될 수 있습니다 것은 :

SimOut = sim('model', Parameters) 

이렇게하면 명령을 사용하여 어디에서든지 시뮬 링크 모델을 실행할 수 있습니다. 모델에 매개 변수를 추가하고 실행할 수도 있습니다.

다음 예제는 구성 집합을 작성하고 sim 구문과 함께 사용하는 방법을 보여줍니다.

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

나 :

나는 보통 시뮬에 값을 설정하려면이를 사용 ...

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) 

그래서 당신은 텍스트 상자의 값을 교체해야하고이 될 것

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

answare에 감사하지만 그걸로 아무 것도 할 수 없습니다.이 콜백 함수를 작성해야합니까 ??? 그리고 내 경우에는 vdp = Steifigkeit ????? 그리고 급속한 = k ???? 또는이 매개 변수의 의미는 무엇입니까? – guguli

+0

vdp는 시뮬 링크의 이름이며, 시뮬레이트의 이름으로 대체 할 수 있습니다. 마지막 두 명령을 확인하면 'KT'매개 변수를 사용하여 문자열로 변환하고 시뮬 링크에 전달한다는 것을 알 수 있습니다. 따라서 명령 행에서 시뮬 링크의 매개 변수 값을 변경할 수 있습니다. 및 대부분의 명령 줄 명령을 사용할 수 있습니다. – NKN

1

나는 Simulink를베이스에 법과에 kf을 찾고 생각 kspace이지만 콜백 함수 작업 영역에서만 정의됩니다.

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는 당신의 코드를 기반으로 동일한 모양 : 당신은 아마 assignin를 사용해야합니다. 이게 당신이 그런 의미일까요?

+0

k와 f는 같지 않습니다. k는 하나의 constant_block의 상수 값이고 f는 다른 constant_block의 상수 값입니다. GUI에서 해당 constant_values의 값을 입력하고 싶다면이 후에 시뮬 링크 모델을 실행해야하며 그 값의 결과가 Static_text 필드에 다시 GUI에 표시되어야합니다. – guguli

+0

내 gui 및 Simulink 사진을 업로드 하겠지만 내 평판은 충분히 높지 않습니다. :) – guguli

+0

당신의 GUI 코드는'k'와'f'를 내가 말할 수있는 한 같은 값으로 만듭니다 : 당신은 같은 객체로부터'string' 속성을 얻고 그것을 double로 변환합니다. – am304

0

코드를 살펴 봤지만 상수 블록을 업데이트 할 기능이없는 것 같습니다. 런타임시 입력을 조정할 비슷한 GUI를 만들었습니다. 그 값에 따라 변경해야하는 일정 블록 내부에 표시되는 변수의 이름으로 nameofvariableinmatlabworkspace 교체 이러한 명령

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

쓰기의 GUI에 editboxes의 콜백에서

: 이 방법을 시도 GUI에 입력 된 값으로 변경하십시오. constantblockpath를 해당 상수 블록의 경로로 바꿉니다. mymodel/Constant12

matlab 작업 영역 변수에 값을 할당하기 전에 편집 상자에 대한 데이터 유효성 검사도 수행 할 수 있습니다.