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

s-function zu embedded matlab function ändern - Probleme

 

schranze
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 11.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 23:06     Titel: s-function zu embedded matlab function ändern - Probleme
  Antworten mit Zitat      
Hallo,

ich habe eine s-function mit der Bedingung von StateFlow aktiv gesetzt zu werden. Rückgabewert hat das es auch, da die nächste Berechnung dadurch angestoßen wird. Also so hier:

Code:
if ((*go == 0)&&(*done == 1)){*done=0;}
if ((*go == 1)&&(*done == 0)){

....
....
(hier steht Rest Berechnung was getan werden soll)
....
....

*done = 1;
}



Die Parameter done und go sind die Parameter zum ausführen. Soweit funktioniert das mit den s-functions

Meine Abänderung für embedded Matlab Function sieht so aus

Code:

function [y,done] = Regler(b, l, k, go)
if go == 0 && done == 1
    done = 0;
end

if go == 1 && done == 0

....
....
(hier steht Rest Berechnung was getan werden soll)
....
....

done = 1;
end
 


So funktioniert es nicht. Ich erhalte die Meldung

Zitat:
Undefined function or variable 'done'. The first assignment to a local variable determines its class.


Wenn ich oben noch done=1; deklariere erhalte ich dann das
Zitat:
Embedded MATLAB Interface Error: Output 'done' (#621) has unexpectedly received a second type


Ich komme da nicht weiter. Denke die Deklarierung der Werte geht nicht so einfach wie gedacht.

Danke für jeden Tipp, wie ich das abändern kann
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.01.2010, 11:53     Titel:
  Antworten mit Zitat      
Hallo,

hmm, hast Du auf dem Ausgang den Typ von done festgelegt? Z.B. als Boolean? Das würde die Fehlermeldung erklären (denn ein "done=1") erzeugt eine Double-Variable. Wenn dem so ist, ist der Ausweg:
done=false; und done=true; im Code verwenden ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
schranze
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 11.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.01.2010, 15:59     Titel:
  Antworten mit Zitat      
Titus hat Folgendes geschrieben:
Hallo,

hmm, hast Du auf dem Ausgang den Typ von done festgelegt? Z.B. als Boolean? Das würde die Fehlermeldung erklären (denn ein "done=1") erzeugt eine Double-Variable. Wenn dem so ist, ist der Ausweg:
done=false; und done=true; im Code verwenden ...

Titus


stimmt das ist wahrlich ein Fehler - es muß als boolean festgelegt werden - hab ich geändert

da sieht die Sache schon besser aus - wenn ich nur den Ausgangswert festlege geht es - jetzt muß ich nur noch sehen, wie ich das mit dem Eingangswert richtig hin bekomme - da erhalte ich immer noch ein Fehler
Private Nachricht senden Benutzer-Profile anzeigen
 
schranze
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 11.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2010, 11:06     Titel:
  Antworten mit Zitat      
Nach Abänderung erhalte ich diesen Fehler:

Zitat:
Cannot solve algebraic loop involving 'Regler/Embedded MATLAB Function' because it consists of blocks that cannot be assigned algebraic variables, i.e., blocks with discrete-valued outputs, blocks with non-double or complex outputs, Stateflow blocks, or nonvirtual subsystems.


Jetzt müsste ich nur noch wissen, wie ich das beheben kann. Da denkt man mit den boolean klärt sich alles, aber dem ist so nicht.
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.