|
|
Signalnamen automitsch ändern |
|
Kairos |
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2011, 14:34
Titel: Signalnamen automitsch ändern
|
|
|
|
|
Hallo,
ich suche einen Weg in Abhängigkeit des Eingangsnamens den Ausgangsnamen zu ändern. Ich denke am praktischsten Erscheint mir hier eine embedded Matlab Function, ich bin jedoch für alle Vorschläge offen.
Hintergrund:
Für verschiedene Hardware müssen Signalnamen umbenannt werden. z.B. "Komponente_Abkürzung_Beschreibung_Einheit" in "KABE". Ich dachte eine eine zweispaltige tabelle in der mit "find" jeweils das gegenstück herausgesucht wird.
Ich habe bereits herausgefunden:
Der eigentlich Block kennt nur seinen Ausgangsnamen
Die Pfeile kennen ihren Namen und den Source sowie den Destination Block.
Mein Ansatz mangelns gefundener Befehle:
direct das mdl. File als Text öffnen und dort die Stellen suchen und überschreiben. Allerdings benötigt das den Namen vom Block, den ich wieder nicht bei eienr embedded Matlab Function auslesen kann. get_param und set_param wehren sich behaglich. :-/
Gibt es nicht mit set_param oder setappdata eine bessere Möglichkeit das Problem zu lösen?
Vielen Dank für eure Hilfe
|
|
|
|
|
Kairos |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2011, 15:55
Titel:
|
|
get_param('Pfad','ObjectParameters') liefert alle Parameter.
Davon "Name" lesen, "OutputSignalNames" schreiben in Abhängigkeit von "InputSignalNames".
In der embedded matlab function muss man die Befehle mit feval rufen.
Ich schau mal ob man die Befehle in einen gain quetschen kann.
|
|
|
Kairos |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.10.2011, 16:05
Titel:
|
|
'OutputSignalNames' is read-only
kann ich das ändern?
|
|
|
Kairos |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.10.2011, 12:49
Titel:
|
|
So, ich habs.
Simulink kann nicht während der Laufzeit oder während der Compilierzeit Änderungen vornehmen. Eine embedded matlab Function kann also nicht zum Ziel führen.
Mein Weg:
In die pre-Save-Function callback des Modells ein m File schrieben. Das file sucht sich alle gains, die Adapter"zahl" heißen und ändert deren Ausgänge entsprechend der Eingänge. Man muss entsprechen saven um den Prozess auszulösen. Damit kann ich leben.
Bin etwas enttäuscht, dass es keine pre_start function gibt.
|
|
|
Kairos |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.10.2011, 13:39
Titel:
|
|
Hi,
simulink macht es einem nicht einfach. Wie schon in Post 2 zu lesen ist der Parameter
OutputSignalNames ein read only. Ich denke das kann man nicht änder?! Oder doch?
der Versuch den Namen vom Pfeil an sich zu ändern führte auch nicht zum Erfolg. Pfeile haben nur ein handle, aber keine Paramter oder namen. Und selbst wenn ich diesen ändere, weiß ich nicht wie Simulink das verkraftet....
Ich kann nicht glauben das Simulink das verbietet! Der Befehl "Doppelklick auf den Pfeil -> namen eintragen" muss sich doch irgendwie extern lösen lassen!
Und noch viel wichtiger: Wieso bin ich anscheinend der erste mit dem Problem. Benennt ihr alle eure Signale von Hand?
MfG kairos
|
|
|
Phate |
Forum-Guru
|
|
Beiträge: 283
|
|
|
|
Anmeldedatum: 09.11.09
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: R2008b
|
|
|
|
|
|
Verfasst am: 27.10.2011, 07:09
Titel:
|
|
Hi,
Also ich benenne die Signalen mehr oder weniger von Hand. In den Signal Properties trage ich den Namen ein und der wird dann weitestgehend mitgeschleppt wenn ich das Signal aufteile bzw. weiterleite.
Auserdem arbeite ich persönlich gern mit gemuxten Signalen so dass das einzelne bennen für mich nicht viel aufwand ist.
Grüße
|
|
|
Kairos |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.11.2011, 11:51
Titel:
|
|
Die Lösung führte doch über die handles. Der Befehl "PortHandles" hatte mir gefehlt.
Mit
PortHandles=get_param('Objektpfad','PortHandles');
bekommt man das handle vom Pfeil. Bei diesem kann man den Namen ändern, was sich praktischer weise auch auf den Source- und Destination Block auswirkt.
set_param(PortHandles.Outport(1),'Name','Signalname');
So kann man Signale automatisch umbenennen. Die Funktion sollte in der PreSaveFcn untergebracht werden.
Das war eine schwere Geburt.
|
|
|
|
|
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.
|
|