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

Externes Programm über Simulink aufrufen

 

JaSoIstEs
Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 16.12.2015, 23:01     Titel: Externes Programm über Simulink aufrufen
  Antworten mit Zitat      
Hallo,

und zwar hab ich eine Frage.

Mein Anliegen:
Ich bin gerade dabei ein Temp.-Modell für einen Motor aufzubauen.
Dabei müsste dieses Modell eigentlich mit einem Externen Programm kommunizieren damit ich eine wiederholende Berechnung erstellen kann, da das ganze Zeit abhängig ist.

Dabei habe ich zwei Ansätze bzw. Fragen zu meinen Ansätzen:

1. Ist es möglich in Simulink ein externes Programm zu öffnen (invoke) diesem Werte zu übergeben und Werte wieder zu bekommen um mit diesen geholten Werten weiter rechnen zu können?

2.Falls 1. nicht funktioniert würde ich anstatt das externe Programm in Simulink zu öffnen in Matlab öffnen (das funktioniert aufjedenfall) dort die Werte zu übergeben und dann neue Werte zu holen diese an Simulink zu übergeben Simulink berechnet neue Werte übergibt Sie an Matlab usw. bis ich das irgendwann stoppe bzw. die Zeit um ist.

Sorry falls ich das ganze etwas umständlich geschriebe habe.
Trotzdem danke im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.12.2015, 08:10     Titel:
  Antworten mit Zitat      
Die Frage ist was das andere Programm kann. Der Klassiker ist nämlich eine Co-Simulation über eine C-MEX S-Function.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.12.2015, 14:21     Titel:
  Antworten mit Zitat      
Ich bin der Meinung das, dass andere Programm ziemlich eingeschränkt ist und mit S-Functions will ich eigentlich ungern die Sache lösen.

Ich habe mal den Support dieser Software kontaktiert und nur eine sehr primitive Lösungsvorschlag erhalten, der für mich eigentlich nicht ausreicht.

Wie schaffe ich es denn folgenden Verlauf zu realisieren:

Via Matlab die externe Software ansprechen und Ergebnisse in Mat-Files abspeichern --> diese Mat-Files in Simulink einspeisen --> Simulink laufen lassen --> Ergebnisse von Simulink über die M-File wieder in die externe Software --> und alles von vorne beginnen bis eine gewisse Grenze erreicht ist.

Das alles soll im Prinzip in Echtzeit geschehen. Mein Problem ist dabei dieses zurück zu Matlab und wieder Einspeisen aus Simulink und wieder zurück. Ich weiß nicht ob ich mir das ganze zu kompliziert vorstelle.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 17.12.2015, 16:52     Titel:
  Antworten mit Zitat      
Die simpelste Methode die ich kenne ist das SYSTEM Kommando. Alles was dahinter kommt wird als DOS Kommando interpretiert und damit kann man also EXEs starten und die Rückgabewerte abfangen und weiterverwerten. Aber das mit dem "Echtzeit" wir für diesen Ansatz schwer, es sei denn dieses andere Programm startet sehr schnell.

Wie heisst denn dieses andere Programm?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 17.12.2015, 17:59     Titel:
  Antworten mit Zitat      
Das andere Programm heisst "SPEED" (http://www.speed-emachine-design.com/) und ist von der Firma cd-adapco/maccon und dient zur entwicklung von elektrischen Maschinen.

Ein einfacher Code um dieses Programm zu öffnen Werte zu übergeben und Werte wieder zu holen.

Code:

bdcpath = 'C:\Users\MIMDS\Google Drive\03_Masterarbeit\01_Thema_1\Masterarbeit_SM_TOOL_Final\02_SPEED_Motordaten\01_HCA_aktueller_Stand\m12_2_2_10_lfe185_HCA.bd4';
Vdc  = 13.7;
Ndem = 2000;
Idem = 30;
Adv  = 0;

wbdc        = actxserver('wbdc32.Appautomation');                          % create PC-BDC object
hide        = set(wbdc,'Visible',1);                                       % hide PC-BDC window

piXXXXpath  = what;                                                        % set current directory to working directory
piXXXXpath  = piXXXXpath.path;                                             % define location of PC-BDC object file
piXXXXpath  = [piXXXXpath, '\'];

if updatepiXXXX(wbdc, piXXXXpath, 'wbdc32params') < 0
    invoke(wbdc,'quit');                                                   % close PC-BDC activeX server
    disp('Error reading/creating parameter information file. Calculation stopped')
    return;
else
    wbdc32params;                                                          % load PC-IMD object file
   
    des     = invoke(wbdc, 'CreateNewDesign');                             % allocate design
    res     = invoke(des, 'LoadFromFile', bdcpath);                        % load sample file
    if res ~= 0
        invoke(wbdc,'quit');                                               % close PC-BDC activeX server
        disp('Error opening file. Calculation stopped')
        return;
    end
    invoke(des,'SetVariable',    piDRIVE, 'sine');                         % set default calculation mode
    invoke(des,'SetVariable',    piSW_CTL,'ISP_HB');                       % set current control strategy (ISP_HB/SVModX)
    invoke(des,'SetVariable',    piDQ0,'false');                           % set dq0 (true/false) (Fuer den Sammler  bitte auf "false" stellen)
    invoke(des,'SetVariable',    piCALCVERSION,'cv11');                    % CalcCersion cv4-cv11 (cv11 newest)
    invoke(des,'SetVariable',    piRAC,0.0125);                            % Additional connector resistance in each line
    invoke(des,'SetVariable',    piR_S, 0.025);                            % DC link resistance between capacitor and converter terminals
    invoke (des,'SetVariable',   piFIXFCHOP, 'ISCHOP12');
    invoke (des,'SetVariable',   piCHOPTYPE, 'Hard');
end

invoke(des, 'SetVariable', piVS, Vdc);                                     % set dc-link voltage
invoke(des, 'setVariable', piRPM, Ndem);                                   % set speed demand
invoke(des, 'setVariable', piISP, Idem);                                   % set current demand
invoke(des, 'setVariable', piGAMMA, Adv);                                  % set advance angle

res  = invoke(des, 'DoStaticSimulation');                                  % do steady-state analysis

Wcopper     = invoke(des, 'GetVariable', piWCU);
Wfe         = invoke(des, 'GetVariable', piWIRON);
Wstator     = Wcopper + Wfe;
Wrotor      = invoke(des, 'GetVariable', piWROTOR);

ARY         = [Wcopper, Wfe, Wstator, Wrotor];



invoke(wbdc,'quit');                                                       % close PC-BDC activeX server
 


Wie gesagt mir würde es auch vollkommen reichen wenn ich den obigen Code starten lasse eine Berechnung in SPEED starte, die Werte aus SPEED zu holen (bis hierhin ist es mit dem obigen Code schon realisiert) an Simulink zu übergeben, Simulink startet seine Berechnung gibt die Werte wieder zurück an diese M-File und alles beginnt von vorne. Das Prinzip klingt eigentlich ziemlich einfach aber anscheinend ist die Umsetzung ziemlich komplex.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 18.12.2015, 10:27     Titel:
  Antworten mit Zitat      
Ich denke es führt trotz allem wieder zu meiner Eingangsfrage, nämlich "was kann SPEED" um Co-Simulation zu unterstützen. Ich habe den Hersteller gebeten hier Informationen hinzuzufügen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
JaSoIstEs
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 266
Anmeldedatum: 01.10.12
Wohnort: Hessen
Version: 2019b
     Beitrag Verfasst am: 18.12.2015, 19:00     Titel:
  Antworten mit Zitat      
Servus,

ich kann dir wenn du willst eine Email mit einer PDF ("Automation witth SPEED Motor Design Software") senden, welches das Scripten mittels Matlab/Simulink und co. beschreibt. Ich selber habe da leider nichts brauchbares für mich finden können. Zumindest nicht im Bezug auf dieses Thema.

Ich will das ungern ins Forum hochladen da ich nicht weiß wie die Firma dazu steht wenn man ohne Erlaubnis Ihre Dokumente veröffentlicht.

LG
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.