Error: "Number of variables exceeds number of equations
Matthias123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.03.2013, 13:14
Titel: Error: "Number of variables exceeds number of equations
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
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.
Matthias123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.03.2013, 09:58
Titel:
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: ---
Verfasst am: 18.03.2013, 17:38
Titel: Lösung
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.
Einstellungen und Berechtigungen
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
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.