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

Simulink- Signalnamen&Property über handles ändern

 

Habu
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2020, 13:44     Titel: Simulink- Signalnamen&Property über handles ändern
  Antworten mit Zitat      
Hallo zusammen, ich hätte eine Frage zu Simulink/Matlab 2016a (kann leider keine neuere Version verwenden).

Ich entwickle ein Skript, welches automatisch Signalnamen und Storage-class in Simulink anpasst. Dazu nutze ich die inport/outport handles des jeweiligen Blocks.
Händisch geht das folgendermaßen in Simulink:

- right click simulink block (e.g. Inport) --> Signals & Ports
- Output port signal properites
- e.g. Port1
- Change Signal name / Change Storage class manually

Im Code sieht dass dann konkret so aus:

portHandle_interface=get_param(inportPath,'PortHandles');
inportHandle_interface = portHandle_interface.Outport;
set_param(inportHandle_interface,'Name', inportName );
set_param(inportHandle_interface,'StorageClass','ExportedGlobal');

Wenn ich aber das gleiche mit dem Outport block & input-handle mache:

portHandle_interface=get_param(outportPath,'PortHandles');
inportHandle_interface = portHandle_interface.Inport;
set_param(inportHandle_interface,'Name', outportName );
set_param(inportHandle_interface,'StorageClass','ExportedGlobal');
Bekomme ich immer den Fehler: Cannot set parameter 'Name' for the specified port. The specified port must be an output port

Also meine Frage: Kann ich Signalname&Eigenschaft nicht über den input-handle des Zielblocks einstellen? Geht das nur mit dem Outport-handle des Quellen-Blocks? Oder gibt es hier noch eine andere Möglichkeit? Ich will die Inport+Outport Signale bestimmer Blöcke verändern, es wäre also keine Option immer den "Quell-BlocK" zu suchen.

Danke für die Hilfe!
Viele Grüße
Alex
Private Nachricht senden Benutzer-Profile anzeigen


Habu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2020, 07:55     Titel: Re: Simulink- Signalnamen&Property über handles ändern
  Antworten mit Zitat      
Hat hier keiner ne Idee? Wahrscheinlich schwierig, da sich keiner mehr an Matlab 2016a erinnert :D
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2020, 09:45     Titel:
  Antworten mit Zitat      
Hallo,

ich bin in erster Linie auf der MATLAB-Seite unterwegs.
Das Problem scheint mir aber zu sein, dass du meinst, die Outports zu haben. Simulink sieht das aber anders. Möglicherweise liegt das Problem schon in der Definition von outportPath. Zudem wundert mich die folgende Zeile.
Code:
inportHandle_interface = portHandle_interface.Inport;

Müsste das nicht eher
Code:
inportHandle_interface = portHandle_interface.Outport;

heißen?

Ich kann da nichts versprechen, aber ein komplett reproduzierbares Beispiel (d.h. inkl. Definition von outportPath und einem Beispielmodell) ist immer hilfreich.

Davon abgesehen: darf ich fragen, warum du keine neuere Version verwenden kannst? Im Zweifelsfall Antwort auch gerne per PN.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Habu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2020, 11:41     Titel: Simulink- Signalnamen&Property über handles ändern
  Antworten mit Zitat      
Hallo Harald,

schonmal vielen Dank für die Antwort:

Ich hab es mal kurz in ein Minimalbeispiel gepackt. Code siehe unten, Modell siehe screenshot.
Wie im Bild ersichtlich, klappt der Code für das Signal zwischen Input & Gain, aber nicht zwischen Gain und Outport.
Der von dir angemerkte Code sollte bei mir passen, da ich im 2. Beispiel den Input vom Outport block verändern möchte. Hoffe mit lauffähigen Codebeispiel wird es deutlich.

Da ich die Eigenschaften von Signalen teilweise am Quellblock, aber auch teilweise vom Zielblock aus ändern will ( da nur Zielblock bekannt) kann ich eben nicht immer nur über den Outporhandle gehen.
Bezüglich der Matlabversion bin ich als Student hier an die vorhandene Software-toolchain gebunden und kann nicht upgraden.

Code:
 %Setzt Signalname & Property für Signal zwischen Input & Gain
        inportPath='test_mdl/Input_1';
        inportName='Input_1';
        portHandle_interface=get_param(inportPath,'PortHandles');
        inportHandle_interface = portHandle_interface.Outport;
        set_param(inportHandle_interface,'Name', [inportName '_in']);
        set_param(inportHandle_interface,'StorageClass','ExportedGlobal');
       
        %Soll Signalname & Property setzen für Signal zwischen Gain &
        %Output
        outportPath='test_mdl/Output_1';
        outportName='Output_1';
        portHandle_interface2=get_param(outportPath,'PortHandles');
        outportHandle_interface = portHandle_interface2.Inport;
        set_param(outportHandle_interface,'Name', [outportName '_out']);
        set_param(outportHandle_interface,'StorageClass','ExportedGlobal');


2020-10-16_11h32_07.png
 Beschreibung:

Download
 Dateiname:  2020-10-16_11h32_07.png
 Dateigröße:  4.85 KB
 Heruntergeladen:  201 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Habu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.10.2020, 11:46     Titel:
  Antworten mit Zitat      
PS:
und wie schon beschrieben kann man das gewünschte auch manuell in Simulink wie im Screenshot erreichen:

2020-10-16_11h45_03.png
 Beschreibung:

Download
 Dateiname:  2020-10-16_11h45_03.png
 Dateigröße:  24.85 KB
 Heruntergeladen:  204 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 16.10.2020, 13:01     Titel:
  Antworten mit Zitat      
Hallo,

ich kann da nur dazu sagen, dass ich das Problem unter R2020a nachvollziehen kann. Eine direkte Abhilfe habe ich jedoch leider auch nicht.

Du kannst höchstens den Namen des Signals, das auch dem Gain kommt, ändern:
Code:
outportPath='test_mdl/Gain';
        outportName='Output_1';
        portHandle_interface2=get_param(outportPath,'PortHandles');
        outportHandle_interface = portHandle_interface2.Outport;
        set_param(outportHandle_interface,'Name', [outportName '_out']);
        set_param(outportHandle_interface,'StorageClass','ExportedGlobal');

Wie sich das automatisieren lässt, ist die andere Frage.

Grüße,
Harald

P.S.: generell bitte die Modelle als solche anhängen statt Screenshots. Hier war es zwar kein großer Aufwand, das nachzubauen. Das kann es aber durchaus sein, und dann kann es ja auch noch an Modelleinstellungen liegen, die man auf dem Screenshot nicht sieht...
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Habu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 09.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.10.2020, 09:51     Titel: Simulink- Signalnamen&Property über handles ändern
  Antworten mit Zitat      
Hallo Harald,
sorry wegen dem Modell, mach ich zukünftig so.
Das mit dem "quellblock" (Gain in dem Fall) ist sicherlich denkbar. Wollte nur das automatisierte Suchen des Quellblocks vermeiden.. da ich hier durch diverse Bus-Signale einige Probleme sehen. Dann such ich mal weiter & geb Bescheid falls ich eine Lösung haben.

Viele Grüße
Alex
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.10.2020, 10:19     Titel:
  Antworten mit Zitat      
Hallo,

zumindest in dem einfachen Modell geht es relativ problemlos:

Code:
outportPath='test_mdl/Output_1';
outportName='Output_1';
portHandle_interface2=get_param(outportPath,'PortHandles');
outportHandle_interface = portHandle_interface2.Inport;
linehandle = get(outportHandle_interface, 'Line');
srchandle = get(linehandle,'SrcPortHandle');
set_param(srchandle,'Name', [outportName '_out']);


Inspiriert durch:
https://www.mathworks.com/matlabcen.....al-names-programmatically

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
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.