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

Error: "Number of variables exceeds number of equations

 

Matthias123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2013, 13:14     Titel: Error: "Number of variables exceeds number of equations
  Antworten mit Zitat      
Hallo zusammen!
Ich versuche derzeit einen einfachen Simscape-Block zu programmieren, welcher ein Bremsmoment aus einer eingehenden Kraft und einigen Parameterm berechnet und dieses als Signal ausgibt. Wenn ich das Modell in meiner Testumgebung laufen lasse, bekomme ich folgende Fehlermeldung: "Number of variables exceeds number of equations. Check for missing reference node." . Ich bin mir sicher, dass es am Code und nicht an der Testumgebung liegt, finde jedoch den Fehler, bzw. die fehlende Gleichung nicht. Ich habe auch bereits "v = {0, ..}" und "across(v, ...)" probeweise aus dem Code gestrichen, jedoch erfolglos.
Code:

component Multi_Disc_Brake    
    nodes
        R = foundation.mechanical.translational.translational; % R:left
        C = foundation.mechanical.translational.translational; % C:right
    end    
    parameters
        n = {1, '1'};   % Number of rotating discs
        r_i = {1, 'm'}; % Radii of inner discs
        r_a = {2, 'm'}; % Radii of outer discs
        my = {1, '1'};  % Friction coefficient
    end    
    variables
        f = {0, 'N'};
        M_B = {0, 'N*m'};
        r_m = {0, 'm'};
        v = {0, 'm/s'};
    end    
    outputs
        out = {0, 'N*m'}; % M(t):right:top
    end    
    function setup
        if n <= 0
            error ('Number of discs must be greater than zero');
        end
        if r_i <= 0
            error ('Inner radii must be greater than zero');
        end
        if r_a <= 0
            error ('Outer radii must be greater than zero');
        end
        if r_i >= r_a
            error ('Inner radii has to be smaller than outer radii');
        end
        through (f, R.f, C.f);
        across (v, R.v, C.v);
    end  
    equations
        let
            r_m = (2/3)*((r_a^3 - r_i^3)/(r_a^2 - r_i^2)); % Centre radius
        in
            M_B == my*f*r_m*2*n; % Calculation of the braking moment
        end
        out == M_B;
    end
  end
 


Weiß jemand wo der Denkfehler ist? Vielen Dank für die Hilfe im Voraus!

viele grüße,

Matthias


knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2013, 08:47     Titel:
  Antworten mit Zitat      
Ich hab jetzt nicht so viel damit gemacht: Du hast 4 Variables aber nur
1-2 Gleichungen bei equations. Das geht wohl nicht. Ich denke da fehlt jeweils eine Gleichung wie sich f und v berechnet.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matthias123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2013, 09:58     Titel:
  Antworten mit Zitat      
knilumis_baltaM hat Folgendes geschrieben:
Ich hab jetzt nicht so viel damit gemacht: Du hast 4 Variables aber nur
1-2 Gleichungen bei equations. Das geht wohl nicht. Ich denke da fehlt jeweils eine Gleichung wie sich f und v berechnet.


Danke für deine Antwort!
Da hast du Recht. Ich habe mal probeweise die variable v und der zugehörige across-teil gestrichen. Das Problem liegt jetzt nur noch an der Kraft. Wenn ich in der Gleichungssektion testhalber f == 0; einfüge, läuft das model (allerdings bricht er wegen falscher Initial Conditions ab). Ich kann auch die nodes entfernen und M_B nur signalbasierend berechnen (also f als input signal). Das alles hat jedoch einen Haken: Ich möchte später ggf. Federn einfügen, die die Lamellen auseinander drücken. Deshalb benötige ich f als physikalische Größe. Die Lamellen würden dann nämlich eine Gegenkraft auf das vorgeschaltete Bauteil ausüben, welche verlohren geht, wenn ich es nur signalfluss-basierend programmiere.
Kurz: Wie bekomme ich f korrekt implementiert so dass ich M_B berechnen?
 
Matthias123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.03.2013, 17:38     Titel: Lösung
  Antworten mit Zitat      
Danke für deine Antwort!
Da hast du Recht. Ich habe mal probeweise die variable v und der zugehörige across-teil gestrichen. Das Problem liegt jetzt nur noch an der Kraft. Wenn ich in der Gleichungssektion testhalber f == 0; einfüge, läuft das model (allerdings bricht er wegen falscher Initial Conditions ab). Ich kann auch die nodes entfernen und M_B nur signalbasierend berechnen (also f als input signal). Das alles hat jedoch einen Haken: Ich möchte später ggf. Federn einfügen, die die Lamellen auseinander drücken. Deshalb benötige ich f als physikalische Größe. Die Lamellen würden dann nämlich eine Gegenkraft auf das vorgeschaltete Bauteil ausüben, welche verlohren geht, wenn ich es nur signalfluss-basierend programmiere.
Kurz: Wie bekomme ich f korrekt implementiert so dass ich M_B berechnen?[/quote]

Ok habs jetzt selbst gelöst. Es reicht die Geschwindigkeit auf null zu setzen. Sie ist im Modell nötig um den Energiefluss komplett zu beschreiben. d.h. anstelle von f == 0; einfach v == 0; in der Equations-Section ergänzen und es funktioniert.
 
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.