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

Signalfindung

 

Gastleser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 13:44     Titel: Signalfindung
  Antworten mit Zitat      
Hallo,

Ich arbeite gerade an einem Modell, dass dazu genutzt werden soll in einen HIL-Teststand die Software eines Controllers zu testen.
Aus dem Modell wird C-Code der dann auf einen Real-Time-Target ausgeführt wird.

In der Simulink-Toolbox des Herstellers sind Signalsenken ähnlich dem ToFile Senken von dem Standard-Simulink. Die Senken erzeugen nach der Simulation auf dem Realtime-Target eine .mat-Datei auf meinen PC.In den Senken kann man den namen der Ausgabedatei angeben, zum Beispiel out.mat.

Ich suche nun nach einer Möglichkeit per Matlab-Skript nach dem Block zu suchen der die out.mat erzeugt (in dem jeweiligen Modell einzigartig).

Danach möchte ich den Mux finden, der an die Senke angschlossen ist, der die out.mat erzeugt.

Und zu guter letzt möchte ich die Dimenson der Signale wissen, die in den Mux hineinfließen.

Weiß jemand Ansätze wie ich vorgehen könnte?

Beste Grüße
Verschoben: 19.12.2013, 21:21 Uhr von Jan S
Von Programmierung nach Simulink


Gastleser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2013, 09:05     Titel: erste Ansätze
  Antworten mit Zitat      
Hallo

mit
Code:

modelname   =   'untitled';
filename    =   'myfile2.mat';


blocks = find_system(modelname, 'MaskType', 'OpWriteFile');
myblock  = find_system(blocks, 'Filename', filename);
 


finde ich nun immerhin den Block, welcher mir die myfile2.mat erzeugt.

Nun geht es daran den Sourcblock von myblock zufinden. Dazu habe ich diesem Codeschnippsel gefunden, der mit allerdings bei s=get... mit einen Fehler abbricht (to many input arguments bei get)

Code:
b=get_param(myblock,'PortConnectivity');
n=numel(b) % number of blocks connected to block1;


for k=1:n
   s=get(b{1,k}.SrcBlock);
   f='Source';
   if isempty(s)
        s=get(b(k).DstBlock);
   f='Destinataion';
end
out{k,1}=f;  
out{k,2}=s.BlockType;
out{k,3}=s.Name
end
disp(out)


Weiß jemand weiter?
 
Gastleser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2013, 09:17     Titel: Fehler gefunden
  Antworten mit Zitat      
Code:

for k=1:n
   s=get(b{1,1}(1,1).SrcBlock);
   f='Source';
   if isempty(s)
        s=get(b(k).DstBlock);
   f='Destinataion';
end
out{k,1}=f;  
out{k,2}=s.BlockType;
out{k,3}=s.Name
end

get_param([modelname '/' out{1,3}],'InputSignalNames')

 

Nun klappt es auch mit den Get-Befehl.

Ich bekomme nun also die Namen, die in den Simout - Block "hineinfließen". Nun brauche ich nur noch deren Dimensionen.


Ich sollte mich mal langsam anmelden
 
Gastleser

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.12.2013, 13:11     Titel: Nun hab ich's
  Antworten mit Zitat      
Code:


untitled([],[],[],'compile');
tmp = get_param(muxname,'CompiledPortWidths');
untitled([],[],[],'term');

 


Zunächts muss man das Modell kompilieren (zeile 1). In der zweiten Zeile schreibe ich mir die Signalattribute des jeweiligen Mux-Blocks in die tmp-variable.
Danach beende ich das Modell wieder (3)

danach erhalte ich mit tmp.Inport die Dimensionen der Eingangsvektoren.

Nun hab ich mein Problem zwar komplett alleine bzw mit anderen Quellen gelöst, aber vielleicht hat hier ja jemand mal ein ähnliches Problem. Wink
 
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.