WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Simulink-Modell aus Gui steuern

 

sonnenmann
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 15.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2009, 13:14     Titel: Simulink-Modell aus Gui steuern
  Antworten mit Zitat      
Hallo Leute,
ich hab ein Problem : ich möchte ein Simulink model aus Gui steuern und werte aus Gui an das Simulink-Modell übergeben(was in GUI eingegben wird), dann will ich das Signal was am ende raus kommt in Gui plotten .aber ich weiss nicht wie das geht ??
ich hab das geschrieben
Code:

function simulieren1_Callback(hObject, eventdata, handles)
% hObject    handle to simulieren1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
%----------------------------------------------------------------------

aopt=19.405; % defaultwerte für aopt,L und f
L=1;
f=1.5e6;
gesamte_Daempfung=str2double(get(handles.aopt,'String'));% Parameter der optischen Übertragungsstrecke(Länge)nehmen aus GUI(edit.box aopt)
c1=power(10,-gesamte_Daempfung/10);       % aopt=19.405 dB --->  c1=0.0115
set_param('lwl_Uebertragungsstrecke/LWL_TransferFcn','Numerator',num2str(c1));% c1 an Block LWL_TransferFcn setzen
% set_param erwartet einen string daher mat2str([c1])!!!!!!! mat2str(c1)
frequencyString=get(handles.f,'String');
set_param('lwl_Uebertragungsstrecke/Signal Generator','Frequency',frequencyString);% frequenz wird gesetzt bzw übernommen
%%% Hier genauso wie bei Rd machen
hObj_C=findall(gcf,'Tag','C')
diffusionkapazitaet_Str_CellArr=get(hObj_C,'String');
C_index=get(hObj_C,'Value')
C_ausgewaehlt=diffusionkapazitaet_Str_CellArr{C_index};% Den ausgewählten Wert bestimmen ...
diffusionkapazitaetsfaktor= 1/C_ausgewaehlt;% die Kapazität in  nf,durch String darf man nicht dividieren daher str2double!!!
set_param('lwl_Uebertragungsstrecke/Lichtsender_LED/Gain','Gain',num2str(diffusionkapazitaetsfaktor));% setzen der Parameter C im Simulink-Modell

%%% 2. Weg, um an die Rd-Daten ranzukommen
hObj_Rd=findall(gcf,'Tag','Rd')
diff_widerstand_Str_CellArr=get(hObj_Rd,'String');
Rd_index=get(hObj_Rd,'Value')
%%% Den ausgewählten Wert bestimmen ...
diff_widerstand_ausgewaehlt=diff_widerstand_Str_CellArr{Rd_index};
differentiellerwiderstandsfaktor= 1/diff_widerstand_ausgewaehlt;
%%% ... und im Simulink-Modell setzen
set_param('lwl_Uebertragungsstrecke/Lichtsender_LED/Gain1','Gain',num2str(differentiellerwiderstandsfaktor));

%%% Hier genauso wie bei Rd machen
hObj_Cs=findall(gcf,'Tag','Cs')
Cs_Str_CellArr=get(hObj_Cs,'String');
Cs_index=get(hObj_Cs,'Value')
Cs_ausgewaehlt=Cs_Str_CellArr{Cs_index};% Den ausgewählten Wert bestimmen ...
speerschichtkapazitaetsfaktor=1/Cs_ausgewaehlt;% die Kapazität in  nf
set_param('lwl_Uebertragungsstrecke/Lichtempfänger_Photodiode/Gain','Gain',num2str(speerschichtkapazitaetsfaktor));

%%% Hier genauso wie bei Rd machen
hObj_Rb=findall(gcf,'Tag','Rb')
Rb_Str_CellArr=get(hObj_Rb,'String');
Rb_index=get(hObj_Rb,'Value')
Rb_ausgewaehlt=Rb_Str_CellArr{Rb_index};% Den ausgewählten Wert bestimmen ...
%%% Hier genauso wie bei Rd machen
hObj_RL=findall(gcf,'Tag','RL')
RL_Str_CellArr=get(hObj_RL,'String');
RL_index=get(hObj_RL,'Value')
RL_ausgewaehlt=RL_Str_CellArr{RL_index};% Den ausgewählten Wert bestimmen ...
widerstandsfaktor=1/(Rb_ausgewaehlt+RL_ausgewaehlt);
set_param('lwl_Uebertragungsstrecke/Lichtempfänger_Photodiode/Gain','Gain1',num2str(widerstandsfaktor));
set_param('lwl_Uebertragungsstrecke',[]);
 

im Anhang sind die dateien.
ich hoffe es könnte mir jemans helfen.danke
sonnenmann

lwl_eingabe.fig
 Beschreibung:

Download
 Dateiname:  lwl_eingabe.fig
 Dateigröße:  57.13 KB
 Heruntergeladen:  550 mal
simulieren1_Callback.m
 Beschreibung:

Download
 Dateiname:  simulieren1_Callback.m
 Dateigröße:  2.94 KB
 Heruntergeladen:  509 mal
Private Nachricht senden Benutzer-Profile anzeigen


LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2009, 08:08     Titel:
  Antworten mit Zitat      
Hallo Sonnenmann,

funktioniert das setzen der Parameter mit set_param?
Wenn ja kannst Du anschließend mit dem Befehl sim die Simulation durchführen. Der sim Befehl hat drei Rückgabewerte (Zeit, Zustände, Ausgabesignale). Jedes Signal, das Du zurückbekommen willst, legst Du im Modell auf einen Out-Port (Library-Browser->Sinks->Out).

Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
sonnenmann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 15.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2009, 11:22     Titel:
  Antworten mit Zitat      
Hallo LittleX ,
danke für die Antwort,leider funktioniert das setzen mit set_param nicht,ich bekomme Fehlermeldung :
??? Error using ==> /
Matrix dimensions must agree.
Error in ==> D:\Projektarbeit\lwl_eingabe.m (simulieren1_Callback)
On line 436 ==> diffusionkapazitaetsfaktor= 1/C_ausgewaehlt;%
es ist wegen der Division
kann mir bitte jemand helfen.
Danke im Voraus
sonnenmann
Private Nachricht senden Benutzer-Profile anzeigen
 
LittleX
Forum-Guru

Forum-Guru


Beiträge: 494
Anmeldedatum: 14.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2009, 12:24     Titel:
  Antworten mit Zitat      
Hallo,

Code:

diffusionkapazitaetsfaktor= 1/C_ausgewaehlt;
 

an dieser Stelle versuchst Du 1 durch einen char-array zu teilen, was zu einer Fehlermeldung führt.

Entweder Du wandelst C_ausgewaehlt mit num2str in eine Zahl um,
oder falls Du einen String der Form 1/C_ausgewaehlt haben willst
Code:

diffusionkapazitaetsfaktor= ['1/' C_ausgewaehlt]
 


Viele Grüße,

LittleX
Private Nachricht senden Benutzer-Profile anzeigen
 
sonnenmann
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 15.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2009, 12:12     Titel:
  Antworten mit Zitat      
Danke für die Antwort.ich es hinbekommen mit str2double geht auch.
Viele Grüsse
sonnenmann
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.