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

fehlerhafter Ablauf eine Unterprogramm nach Starten mit GUI

 

Ausmilkel
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 11.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 12:31     Titel: fehlerhafter Ablauf eine Unterprogramm nach Starten mit GUI
  Antworten mit Zitat      
Hallo,

ich als Anfänger habe wieder mal eine Frage. Ich habe mir eine Gui erstellt, bei welchem mittels Pushbutton eine Unterprogramm ( in einem seperaten .m-File) ausgeführt werden soll. Das heisst es wird einfach in der function vom Pushbutton das Unterprogramm aufgerufen. Dabei kommt jedoch folgende Fehlermeldung:

Code:

??? Error using ==> sim
Error evaluating expression 'T_Start' for 'Start time' specified in the Configuration Parameters dialog for block diagram 'Plot_Daten_01'. It must be possible to completely evaluate expressions in block-diagram parameter fields either in the model or source workspace.
 Error in model and source workspaces: Error using ==> sim
Undefined function or variable 'T_Start'.
 


-->das Unterprogramm wird mittendrin abgebrochen.

Wenn ich das Unterprogramm im Matlabdesktop ausführe, funktioniert es vollständig.
Wenn ich danach das GUI erneut ausführe mit dem Pushbutton der dieses Unterprogramm aufruft, funktioniert es auch.
Nach langem hin und her habe ich zum testen die Variable T_Start , bei welcher die Fehlermeldung auftrat mit clear gelöscht.
Danach wieder die GUI ausgeführt und es funktionierte wieder nicht.
Diese Variable T_Start wird erst im Unterprogramm gesetzt.

Ich verstehe nicht, warum das Unterprogramm die Variable nicht setzt, wenn ich es mit GUI ausführen lasse.
Kann mir bitte jemand weiterhelfen?

Gruß
Robert
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.08.2008, 12:44     Titel:
  Antworten mit Zitat      
Moin,

ohne die entsprechenden Codes wird es schwierig den Fehler zu finden...

Aber die Fehlermeldung sieht für mich danach aus, dass du irgendwo auf die Variable T_Start zugreifen willst, wo sie noch nicht definiert ist.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ausmilkel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 11.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 12:58     Titel:
  Antworten mit Zitat      
Ja, das hab ich mir auch überlegt mit dem Zugreifen. Nur wie gesagt, die Variable wird in dem Unterprogramm gesetzt. Deswegen dachte ich dass es doch egal ist ob ich das Unterprogramm so ausführe oder mit nem Pushbutton. also hier mal paar Code-Fragmente, ich hoffe die sind ausreichend:

Zuerst das Unterprogramm (programm_03.m):
Code:

lesen = 1;
messung = 3;

if (lesen > 0)
    Lese_csv_02;
    save('c:\temp\dds21\Daten_01.tmp','Daten_Msg1','Daten_Msg2',...
        'pos_wechsel_01','pos_wechsel_02','Zeit_01','Zeit_02');
else
    load('c:\temp\dds21\Daten_01.tmp','-mat');
end
close all;

laenge_pos = length(pos_wechsel_01)+1;

if ((messung < 1) | (messung > laenge_pos))
    messung = 1;
end

 
   
    clear Daten_Msg1_red; clear Daten_Msg2_red; clear Daten_Msg3_red;
    if (messung == 1)  
        Daten_Msg1_red(:,1:9) = Daten_Msg1(1:pos_wechsel_01(1)-5,1:9);
        Daten_Msg2_red(:,1:9) = Daten_Msg2(1:pos_wechsel_01(1)-5,1:9);
        T_Start = 3
        T_Simu = Zeit_01(pos_wechsel_01(1)-5)
    end

    if ((messung > 1) & (messung < laenge_pos))
        Daten_Msg1_red(:,1:9) = Daten_Msg1(pos_wechsel_01(messung-1)+5:pos_wechsel_01(messung)-5,1:9);
        Daten_Msg2_red(:,1:9) = Daten_Msg2(pos_wechsel_01(messung-1)+5:pos_wechsel_01(messung)-5,1:9);
        T_Start = 3
        T_Simu = Zeit_01(pos_wechsel_01(messung)-5)
    end

    if (messung == laenge_pos)
        Daten_Msg1_red(:,1:9) = Daten_Msg1(pos_wechsel_01(laenge_pos-1)+5:length(Daten_Msg1(:,1))-5,1:9);
        Daten_Msg2_red(:,1:9) = Daten_Msg2(pos_wechsel_01(laenge_pos-1)+5:length(Daten_Msg2(:,1))-5,1:9);
        T_Start = 3
        T_Simu = Zeit_01(length(Daten_Msg1(:,1))-5)
    end

    if (messung > laenge_pos)
        load('c:\temp\dds21\Daten_03.tmp','-mat');
        Daten_Msg1_red(:,1:9) = Daten_Msg1(5:length(Daten_Msg1(:,1))-5,1:9);
        Daten_Msg2_red(:,1:9) = Daten_Msg2(5:length(Daten_Msg2(:,1))-5,1:9);
        T_Start = 3
        T_Simu = Zeit_01(length(Daten_Msg1(:,1))-5)
    end

 sim('Plot_Daten_01.mdl');
........        

 

und jetzt die function vom Pushbutton:
Code:


% --- Executes on button press in Start_Auswertung_push.
function Start_Auswertung_push_Callback(hObject, eventdata, handles)
% hObject    handle to Start_Auswertung_push (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

 
    Datenpfad = handles.Pfad
     
    programm_03               % Aufruf des Rahmenprogramms zur Auswertung der Daten
   
 


Also wie gesagt, ich versuche nichts anderes als programm_03 im GUI aufzurufen.

Gruß
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.08.2008, 13:09     Titel:
  Antworten mit Zitat      
Der scheint in Simulink rauszuspringen.

Lass dir doch mal vor dem Simulink-Aufruf den Wert von T_Start anzeigen.

Ich vermute mal, dass er aus irgendeinem Grund nicht in eine der If-Anweisungen springt...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ausmilkel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 11.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 13:17     Titel:
  Antworten mit Zitat      
Ich habe jetz T_Start so eingefügt

Code:

T_Start
sim('Plot_Daten_01.mdl');
 


leider funktioniert es immer noch nicht.

Gruß
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.08.2008, 13:23     Titel:
  Antworten mit Zitat      
Und was zeigt er dir für T_Start im Command Window an?

Funktioniert das?
Code:

T_Start = 3;
sim('Plot_Daten_01.mdl');

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ausmilkel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 11.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 13:30     Titel:
  Antworten mit Zitat      
Bei meiner Variante zeigt er mir
Code:

T_Start =

     3
 

an und dann die Fehlermeldung.
Mit deiner Variante ist es leider auch nicht anders.

Komische Sache...

Gruß
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.08.2008, 13:42     Titel:
  Antworten mit Zitat      
Ich hatte anscheinend mal wieder ein Brett vorm Kopf...

Nach einer gründlichen Lektüre der obigen Fehlermeldung, sollte das die Lösung sein:
Code:

assignin('base','T_Start',T_Start);
sim('Plot_Daten_01.mdl');


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ausmilkel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 11.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 13:56     Titel:
  Antworten mit Zitat      
Ok

das Brett scheint weg zu sein Very Happy es funktioniert!
Frage: Mit assign wird eine Variable mit einem bestimmten Wert im bestimmten Workspace festgelegt, sehe ich das richtig?
und wieso geht es nur so?

Vielen Dank erst mal!!!

Gruß
Robert
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 19.08.2008, 13:58     Titel:
  Antworten mit Zitat      
Ich arbeite nicht viel mit Simulink, aber ich glaube wenn du einen Block-Parameter so einlesen willst, dann versucht Matlab ihn aus dem 'base'-Workspace zu holen...

Evtl. kann ein Simulink-User hier mehr zu sagen?!

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ausmilkel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 11.08.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 15:47     Titel:
  Antworten mit Zitat      
Ok

ich danke dir nochmals.
Aber es wäre für mich auch interessant zu erfahren wie das ist mit Simulink.

Gruß
Robert
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.