www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - 1000 Simulinkrelais
1000 Simulinkrelais < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

1000 Simulinkrelais: Frage/Tipp
Status: (Frage) beantwortet Status 
Datum: 10:16 Do 18.06.2009
Autor: HendrikBuff

Hallo zusammen,

ich probiere gerade in MatLab/Simulink eine Preisach Hysterese zu programmieren.
Im Prinzip ist das relativ einfach. Ich muss nur viele Relay-Blöcke parallelschalten, die entsprechenden an/aus Werte eintragen, und die Ausgänge addieren.
Mit 6 relays klappt das auch schon wunderbar.
Mein Problem ist nun aber, dass ich um die Hysterese gut darstellen zu können, etwa 1000 relays brauche. Kann ich nun MAtlab/simulink irgendwie dazu bringen, mir aus tausend Messwerten (an/ausschalt-punkte) automatisch die entsprechenden relays zu bauen?
hat irgendjemand eine idee?

vielen dank schonmal im vorraus.

mfg


Hendrik


anbei ist mein simulinkmodell zur verdeutlichung

Dateianhänge:
Anhang Nr. 1 (Typ: mdl) [nicht öffentlich]
        
Bezug
1000 Simulinkrelais: Antwort
Status: (Antwort) fertig Status 
Datum: 18:46 Do 18.06.2009
Autor: Frasier

Hallo Hendrik,
man müsste mit add_block, set_param und add_line sowas basteln können.
lg
F.

Bezug
                
Bezug
1000 Simulinkrelais: idee und frage
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 12:01 Fr 19.06.2009
Autor: HendrikBuff


Bezug
                
Bezug
1000 Simulinkrelais: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:36 Fr 19.06.2009
Autor: HendrikBuff

Danke schonmal für den tip.

Ich bin dabei das ganze auszuprobieren, habe aber noch probleme.

1. bei befehl add_line (...) kommt die fehlermeldung:

??? Error using ==> add_line
Invalid Simulink object specifier.

Error in ==> modellbuilder.m
On line 18  ==> add_line('hysterese/relais','relay','Gain')

was ist an:

add_line('hysterese/relais','Relay 1','Gain 1')

falsch?

bin für jeden tipp dankbar


Bezug
                        
Bezug
1000 Simulinkrelais: Antwort
Status: (Antwort) fertig Status 
Datum: 14:01 Fr 19.06.2009
Autor: Frasier

Hallo,

du musst dir die genauen Bezeichnungen aus der Hilfe holen.
Bei add_line fehlen die Port-Nummern.
Vielleicht kommst du mit meinem Beispiel weiter
1: n=10;
2: new_system('hendrik')
3: open_system('hendrik')
4: add_block('built-in/Inport','hendrik/in1','Position',[50 50 80 80]);
5: add_block('built-in/OutPort','hendrik/out1','Position',[500 50 530 80]);
6: add_block('built-in/Sum','hendrik/sum1','Position',[400 50 430 80+n*50],'Inputs',repmat('+',1,n));
7: add_line('hendrik','sum1/1','out1/1');
8: for k=1:n
9:     add_block('built-in/Relay',['hendrik/relay' num2str(k)],'Position',[150 50+k*50 180 80+k*50]);
10:     add_block('built-in/Gain',['hendrik/gain' num2str(k)],'Position',[270 50+k*50 300 80+k*50]);
11:     set_param(['hendrik/gain' num2str(k)],'Gain',num2str(1/6));
12:     add_line('hendrik',['relay' num2str(k) '/1'],['gain' num2str(k) '/1']);
13:     add_line('hendrik','in1/1',['relay' num2str(k) '/1'],'autorouting','on');
14:     add_line('hendrik',['gain' num2str(k) '/1'],['sum1/' num2str(k)],'autorouting','on');
15:     set_param(['hendrik/relay' num2str(k)],'OnSwitchValue',num2str(k));
16:     set_param(['hendrik/relay' num2str(k)],'OffSwitchValue',num2str(1/k));
17: end


Mit n steuerst du die Anzahl der Relay-Blöcke.
Wie du deren Parameter OffSwitchValue und OnSwitchValue in der Schleife berechnen kannst, musst du dir selbst überlegen.

lg
F.

Bezug
                                
Bezug
1000 Simulinkrelais: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:50 Fr 19.06.2009
Autor: Frasier

Ach, ich seh' gerade, dass du die OffSwitchValues und OnSwitchValues ja als Messwerte vorliegen hast. Am besten schon in Matlab in einem Vektor. Dann musst du in der Schleife ja nur die richtige Zuordnung hinbekommen.

Bezug
                                        
Bezug
1000 Simulinkrelais: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:21 Fr 19.06.2009
Autor: HendrikBuff

ja, das klappt auch schon wunderbar.
die genauen bezeichnungen der blöcke und parameter habe ich auch gefunden.
das einzige, was ich immer noch nicht hinbekomme ist die verbindung mit linien. ich steh komplett auf dem schlauch wieso. meiner meinung nach mache ich alles genau wie du.

mein programm:

% systembuilder


%Variablen

a = [1 2];
b = [2 1];
k = length (a);

% subsystem relais erstellen

add_block('built-in/subsystem','hysterese/relais')

% relays und gains in subsystem erstellen


for n = 1:k
    evalstring = ['add_block(''built-in/relay'',''hysterese/relais/relay ', num2str(n), ''',''Position'',[150 50+n*50 180 80+n*50],''onswitchvalue'', ''a' num2str(n),''',''offswitchvalue'', ''b' num2str(n),''',''OnOutputValue'', ''1'',''OffOutputValue'', ''0'');'];
    eval(evalstring);    
end

for n = 1:k
    evalstring = ['add_block(''built-in/Gain'',''hysterese/relais/Gain ', num2str(n), ''',''Position'',[200 50+n*50 230 80+n*50],''gain'', ''1/k'');'];
    eval(evalstring);    
end

%  Mux, In/Out und addierer erstellen


add_block('built-in/Inport','hysterese/relais/Inport','Position',[50 50 80 80]);

add_block('built-in/OutPort','hysterese/relais/OutPort','Position',[500 50 530 80]);

add_block('built-in/sum','hysterese/relais/sum','inputs','1','Position',[450 50 480 80]);

add_block('built-in/mux','hysterese/relais/mux','Position',[400 50 430 80],'inputs',num2str(k))


%bauteile verbinden

for n=1:k
add_line('hysterese',['relay' num2str(n) '/1'],['gain' ,num2str(n) ,'/1']);
add_line('hysterese','in1/1',['relay' num2str(n) '/1'],'autorouting','on');
add_line('hysterese',['gain' num2str(n) '/1'],['sum1/' num2str(n)],'autorouting','on');
end

Bezug
                                                
Bezug
1000 Simulinkrelais: Antwort
Status: (Antwort) fertig Status 
Datum: 00:21 Sa 20.06.2009
Autor: Frasier

Was mir jetzt noch auf die Schnelle auffällt:
- Vermeide eval
- bei den Gains vermischt du Groß- und Kleinschreibung
- bei den relays vergisst du das Leerzeichen vor der Nummer
- du gibst nicht das Subsystem an
- du schreibst einmal sum und dann sum1
Wäre nicht schlecht, wenn du das Problem genauer bezeichnen würdest. Gibt es eine Fehlermeldung?
lg
F.

Bezug
                                                        
Bezug
1000 Simulinkrelais: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:55 Sa 20.06.2009
Autor: HendrikBuff

die fehlermeldung:

??? Error using ==> add_line
Invalid Simulink object specifier.

Error in ==> [mm] C:\Dokumente [/mm] und [mm] Einstellungen\buff\Eigene Dateien\diplomarbeit\matlab\modellbuilder.m [/mm]
On line 42  ==> add_line('hysterese/relais',['relay ' num2str(n) '/1'],['gain ' num2str(n) '/1']);

Bezug
                                                                
Bezug
1000 Simulinkrelais: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:46 Sa 20.06.2009
Autor: Frasier

Beachte Punkt 2 meiner obigen Liste.
lg
F.

Bezug
                                                                        
Bezug
1000 Simulinkrelais: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 01:11 So 21.06.2009
Autor: HendrikBuff

vielen dank!

es funktioniert.

mfg


Hendrik

Bezug
                                                                                
Bezug
1000 Simulinkrelais: Frage (überfällig)
Status: (Frage) überfällig Status 
Datum: 16:54 Mo 13.07.2009
Autor: HendrikBuff

Hallo nochmal,

ich habe doch noch eine Frage. Mein Programm läuft soweit, allerdings scheint die Anzahl der erstellbaren Blöcke begrenzt, und zwar exaxt 653. Danach kommt die Fehlermeldung:

Input bounds are out of range.

Das kommt mir persönlich ein wenig komisch vor, aber vielleicht hat ja jemand eine idee. kann man das durch einstellungen verändern?




Bezug
                                                                                        
Bezug
1000 Simulinkrelais: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:21 Di 21.07.2009
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
        
Bezug
1000 Simulinkrelais: Ausschaltwerte
Status: (Frage) überfällig Status 
Datum: 10:36 Mo 30.08.2010
Autor: mabbes

Hallo,

ich soll derzeit ebenfalls mit Hilfe des Preisach-Modells eine Hysteresekurve nachbilden. Ich habe hierfür die Daten des zeitlichen Verhaltens einer Schwingung. Ich weiß, wie ich die Anschaltpunkte der Relays setzen muss, allerdings bin ich mir nicht im Klaren, wie ich aus meinen Daten die Ausschaltpunkte erhalte. Ich bin für jeden Denkanstoß dankbar.
Gruß
mabbes

Bezug
                
Bezug
1000 Simulinkrelais: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:20 Di 07.09.2010
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]