|
|
größtes/kleinstes Signal auswählen |
|
tkrhiman |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 07.03.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2013, 15:59
Titel: größtes/kleinstes Signal auswählen
|
|
Hallo,
ich suche eine Möglichkeit aus mehreren Signalen in Simulink das größte auszuwählen. Wichtig hierbei ist jedoch nicht nur der Wert, sondern ich muss auch wissen, welches Signal das größte ist.
Wenn ein bestimmter Grenzwert überschritten wird, soll eine Matlabfunktion ausgelöst werden, an die der Signalname (oder ähnliches um das Signal zu identifizieren) des größten Signals übergeben wird.
Ich komme bei der Lösung des Problems nicht weiter und wäre dankbar für Hilfe.
Schönen Gruß
Simon
|
|
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 08.03.2013, 08:09
Titel:
|
|
"nicht weiter" suggeriert is gibt schon was. Da gehört es zum guten Ton das bisher versuchte zu dokumentieren. Ich geben gleich mal ein paar Vorschläge.
Andreas
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 08.03.2013, 08:17
Titel:
|
|
Also da der MinMax Block nicht eine Signalbezeichnung ausgibt reicht der nicht.
Mit "grösser" Operatoren und "If" und Statemachines rumzuhampeln ist aber komplizierte und nicht skalierbar. Wenn man weiss es sind nur 3 oder 4 Signale und es bleibt dabei, dann sollte es gehen.
Diese MATLAB Funktion bei Überschreiten eines Schwellwertes kann man einfach mittels eine Enabled/Triggered Subsystems auslösen. Falls die ganze Simulation dann vorbei sein soll ist es einfach. Einfach alle Signalwerte zu dem letzten Zeitpunkt per MATLAB Code vergleichen und auch den Signalnamen des grössten Signals zu erhalten.
Fpr den allgemeineen und komplizerten Fall: Vielleicht beides machen, den MinMax Block den höchsten Wert ausspucken lassen und dann dieses Ausgangssignal mit JEDEM Eingangssignal vergleichen (Differenz=0) und dadurch sieht man dann welchese Signal das grösste ist.
Andreas
|
|
|
tkrhiman |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 07.03.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2013, 11:45
Titel:
|
|
|
|
|
Erstmal vielen Dank für die Antwort.
Andreas Goser hat Folgendes geschrieben: |
"nicht weiter" suggeriert is gibt schon was. Da gehört es zum guten Ton das bisher versuchte zu dokumentieren. |
Ja ich hätte wohl etwas genauer beschreiben sollen was ich genau mache.
Ich mache mit Hilfe von Simulink Fehlerdiagnose in linearen Systemen.
Dazu verwende ich jeweils einen Beobachter für den fehlerfreien und einen für jeden Fehlerfall. Die Beobachter sind Subsysteme die ich mittels einem m.file und der add_block Funktion generiere. D.h. es ist vorher nicht sicher, wie viele Beobachter benötigt werden.
Die Ausgänge des Beobachters werden dann von den Ausgängen des linearen Systems abgezogen.
Ein Fehler ist dann aufgetreten, wenn die Abweichung eines "Fehler"beobachters kleiner als die des fehlerfreien Beobachters ist. Am wahrscheinlichsten ist dann der Fehler aufgetreten, bei dem der Ausgabewert am kleinsten ist.
Im Fehlerfall soll dann eine Matlabfunktion ausgelöst werden. Es wäre gut wenn die Simulation trotzdem weiterlaufen würde, allerdings wäre das wohl nicht unbedingt zwingend.
Ich hatte versucht mit dem MinMax-Operator zu arbeiten, aber wie du schreibst, ist dabei nicht ersichtlich woher das Maximum kommt.
Außerdem hatte ich überlegt, ob sowas mit einer S-Funktion zu lösen ist. Da ich damit aber bisher kaum gearbeitet habe, waren alle versuche, damit etwas zu realisieren schon im Ansatz gescheitert.
Ich werde das jetzt mal mit dem MinMax-Operator und mit jedem Signal vergleichen probieren.
Simon
|
|
|
tkrhiman |
Themenstarter
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 07.03.13
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.03.2013, 14:08
Titel:
|
|
Als ich mir noch mal etwas in Richtung s-function angeschaut habe, ist mir aufgefallen, dass es auch noch den Simulinkblock MATLAB Function gibt. In diesem kann man einfache Matlabbefehle ausführen ohne mit s-functions hantieren zu müssen.
Der Matlabbefehl min kann im Gegensatz zum Simulinkblock auch den Index des kleinsten Wertes ausgeben. Also fasse ich alle Ausgangssignale zu einem Vektor zusammen gebe sie auf den Matlabfunktionsblock und lass mir den Index des kleinsten Wertes ausgeben.
Jetzt muss ich nur noch schauen, wie ich beim Wechsel des Wertes bestimmte Funktionen auslöse, aber das sollte hoffentlich nicht so schwer sein.
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|