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 Coder unterstützt keine MATLAB Fcn

 

Henne24

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2011, 11:28     Titel: Simulink Coder unterstützt keine MATLAB Fcn
  Antworten mit Zitat      
Hallo.
Ich versuche eine Anlagensimulation in Simulink zu basteln, die mit dem Simulink Coder in C übersetzt in in eine SPS eingespielt werden soll. Nun bekomme ich beim Übersetzen eine Fehlermeldung *freude*.

Code:
Error: Simulink Coder Error in block: "Sim_Aquarium/Modell Behälter_51_52/gleichung5152", block type "MATLABFcn": Not yet supported by Simulink Coder


Was kann ich tun? Die Gleichungssysteme in einer S-Fcn lösen lassen. Leider habe ich wenig bis keine Ahnung von S-Fcn Programmierung.

Hier nochmal der Inhalt der Interpreted Matlab Fcn
Code:
function Z = gleichung5152(u1,u2,u3)
FuellhoeheB51=u1;
FuellhoeheB52=u2;
P51=u3;

Z = fsolve(@(x)Stroeme(x,FuellhoeheB51,FuellhoeheB52,P51),[0,0]);
end
 


Und das dazu gehörige kleine GLS:
Code:
   function y = Stroeme(x,FuellhoeheB51,FuellhoeheB52,P51)
   
    %Parameter
    LaengeR1=0.3; %m
    LaengeR2=1.7; %m
    AnzKR1=2.0;
    AnzKR2=5.0;
    dh52max=0.69;
    %Konstanten
    D=12.0/1000.0; % Rohrdurchmesser in m
    k=0.03/1000.0; % relative Rohrrauhigkeit in m
    zetaKr=1.33;   % Zetawert für 90°-Rohrkrümmer
    g=9.81;        % Erdbeschleunigung
    rho=1000.0;    % Dichte
   
    lambda=sqrt(1.0/(1.14-2.0*log10(k/D))); % Durchflussbeiwert  
    %------------------------------------------------------------------Q1
    pt52=rho*g*FuellhoeheB52;
    pvR52=(8*lambda*LaengeR1*rho*x(1)*abs(x(1)))/(D^5*pi^2*g);
    pvE52=(8*rho*x(1)*abs(x(1))*zetaKr*AnzKR1)/(D^4*pi^2*g);
   
    y(1)=-pt52+(pvR52+pvE52);
    %------------------------------------------------------------------Q2
    if P51>0 %Pumpe in Betrieb
    pt51=-2E10*x(2)*x(2)+833333.0*x(2)+25000.0;
    ptdh51=rho*g*(dh52max-FuellhoeheB51);
    pvR51=(8*lambda*LaengeR2*rho*x(2)*abs(x(2)))/(D^5*pi^2*g);
    pvE51=(8*rho*x(2)*abs(x(2))*zetaKr*AnzKR2)/(D^4*pi^2*g);  
    y(2)=-pt51+(ptdh51+pvR51+pvE51);
   
    if P51==0% Pumpe deaktiviert
    y(2)=1*x(2);
    end
   
    end


Ich bitte um Eure Hilfe.

Vielen Dank im Voraus.
Stefan


Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 18.11.2011, 11:55     Titel:
  Antworten mit Zitat      
wenn ich mich recht entsinne werden nicht alle Methoden in MatlabBlöcken unterstützt, aber generell ist die Nutzung selbiger nicht das gelbe vom Ei... vll versucht du mal dein Glück doch mit einer Sfunktion Wink

Oder du benutzt eine embedded Matlabfunction diese bieten den vollen Umfang aber sind noch langsamer da sie Matlab öffnen und deinen code ausführen.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Henne24

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.11.2011, 12:59     Titel:
  Antworten mit Zitat      
Hmm, gibts echt keine anderer Lösung. Ich streube mich noch immer eine S-Fcn zu erstellen. Gibts es da irgendwo ne anschauliche Anleitung, wie man diese schreibt und in Simulink korrekt aufruft?

Vielen Dank fürs schnelle Antworten.

Stefan
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.11.2011, 13:12     Titel:
  Antworten mit Zitat      
Hallo,

ich bin hier auch nicht der absolute Experte, aber hier das, was ich zu wissen meine:
- Real Time Workshop Embedded Coder (RTWEC) wurde in Embedded Coder (EC) umbenannt.
- Der Embedded MATLAB Function Block aus RTWEC wurde in EC zum MATLAB Function Block umbenannt.
- Es gab in RTWEC einen MATLAB Function Block, der aber andere Eigenschaften hat als der MATLAB Function Block in EC.
- Der MATLAB Function Block in EC wird bei der Codegenerierung unterstützt (siehe http://www.mathworks.com/help/relea.....slref/matlabfunction.html)
- Der enthaltene Code muss gewissen Anforderungen genügen, z.B. dürfen nur bestimmte Funktionen verwendet werden.
(siehe http://www.mathworks.com/help/relea.....ox/eml/ug/bq1h2z8-12.html)

Falls dabei eine ausreichende Genauigkeit gewährleistet ist, könnte man das Gleichungssystem um den Betriebspunkt linearisieren und die Gleichungen dann mit \ bzw. mldivide lösen.

Zum Thema MATLAB S-Functions ein Link;
http://www.mathworks.com/help/relea.....fg/f6-18028.html#f6-58466

Wie gesagt, ich bin hier auch nicht der Experte.
Ich würde dir empfehlen, den Technischen Support von Mathworks zu kontaktieren. Wenn du einen MathWorks Account hast, auf der Webseite einloggen und Service Request stellen oder unter 089 45235 6700, Option 4 anrufen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Henne24

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2011, 13:29     Titel:
  Antworten mit Zitat      
So, meine Supportanfrage läuft seit Freitag. Mal sehen was da heraus kommt. Ich hab schon ein bischen mit S-Fcn rumgespielt. Für eine Codegenerierung kommen nur Level2-S-Fcn in Frage, doch auch hier wird fsolve nicht unterstützt. Algemein wird nur ein Teil der MatLab Funktionen bei den Functions unterstützt.
Muss ich mir jetzt auch noch einen Löser für NLGLS selber schreiben?

Also erstmal abwarten.
 
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.