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

M-File aufrufen aus Simulink

 

Bajo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2007, 14:53     Titel: M-File aufrufen aus Simulink
  Antworten mit Zitat      
Hallo zusammen,

wir haben folgendes Problem:
Kann man aus Simulink direkt ein M-File aufrufen?

Wir sind dabei ein Ladegerät über die RS232-Schnitstelle zu steuern.

Über eine "Embedded MATLAB Function" ist dies nicht möglich.

Momentan läuft die Komunikation über folgendes M-File:
Code:

s = serial('COM1','Terminator','','Timeout',1);
fopen(s);

fwrite(s,out);

in = fread(s);

fclose(s);
delete(s);
clear s;
disp(in);
 


Die Variable "in" ist der Eingang des Simulink Programms und "out" der Ausgang.

Also wird durch das M-File aus dem "out" ein neues "in" erzeugt.

Wären für jegliche Hilfe dankbar!

Grüße Bajo


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 14.12.2007, 15:58     Titel:
  Antworten mit Zitat      
schau mal hier Rein - ist ein RS232 Blockset für Simulink
http://digilander.libero.it/LeoDaga/Simulink/RS232Blockset.htm

Ansonsten kann man eine M-Function als M-S-Function unter Simulink verwendet werden. Mehr dazu (auch Beispiele) findest Du in der Doku...


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
Bajo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2007, 17:05     Titel:
  Antworten mit Zitat      
Erst einmal ein Dankeschön für die schnelle Hilfe!

Das senden funktioniert damit einwandfrei, nur mit dem Lesen haben wir noch unsere Probleme.

Jetzt wollen wir es über eine M-S-Function versuchen. Leider haben wir wenig Ahnung wie wir welche Parameter dort einzutragen haben.

So schauts momentan aus:
Code:
function com_sfun(block)

setup(block);
 
%endfunction

function setup(block)

  % Register number of ports
  block.NumInputPorts  = 1;
  block.NumOutputPorts = 1;
 
  % Setup port properties to be inherited or dynamic
  block.SetPreCompInpPortInfoToDynamic;
  block.SetPreCompOutPortInfoToDynamic;

  block.SampleTimes = [-2, 0];
 
  block.RegBlockMethod('PostPropagationSetup', @DoPostPropSetup);
  block.RegBlockMethod('InitializeConditions', @InitializeConditions);
  block.RegBlockMethod('Outputs', @Outputs);
  block.RegBlockMethod('Terminate', @Terminate);


function DoPostPropSetup(block)
  block.NumDworks = 1;
 
  block.Dwork(1).Name            = 'x1';
  block.Dwork(1).Dimensions      = 1;
  block.Dwork(1).DatatypeID      = 0;      % double
  block.Dwork(1).Complexity      = 'Real'; % real
  block.Dwork(1).UsedAsDiscState = true;

  %% Register all tunable parameters as runtime parameters.
  block.AutoRegRuntimePrms;

%endfunction

function InitializeConditions(block)

  block.Dwork(1).Data = 0;
  s = serial('COM1','Terminator','','Timeout',1);
  fopen(s);

%endfunction

function Outputs(block, s)
 
 fwrite(s,block.InputPort(1).Data);

 block.OutputPort(1).Data = fread(s);

%endfunction

function Terminate(s)

fclose(s);
delete(s);
clear s;
%endfunction


Matlab gibt uns aber eine Fehlermeldung aus, dass die Variable 's' nicht definiert sei.

Wie kann ich ein Serielles Objekt in einer S-Function erstellen?


Mit freundlichen Grüßen

Bajo
 
Freezer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.12.2007, 21:10     Titel:
  Antworten mit Zitat      
Hast du schon eine Lösung gefunden?
Hab ein ähnliches Problem nur mit ner Webcam anstatt einer seriellen Schnittstelle....
Wenn du es zum laufen bekommen hast, poste doch bitte mal den Quelltext...
Ich werd dir auch Info geben wenn ich es zum laufen bekommen hab...
Danke
 
Bajo

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2008, 15:03     Titel:
  Antworten mit Zitat      
Wir haben das jetzt folgendermaßen gelöst:

Eine S-Funktion ist garnicht nötig.
Einfach eine ganz normale Matlab-Funktion schreiben und in einen "Matlab Fcn"- Block einsetzen.
Funktioniert ohne Probleme

Gruß
Bajo
 
phip
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 05.02.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2008, 10:37     Titel:
  Antworten mit Zitat      
Moin,

ich habe ein ähnliches Problem,

ich habe eine K8055-Platine via USB angeschlossen. Es gibt bereits eine m-File zum aktivieren / deaktivieren der Platine.

Ich habe es jetzt über diese MATLAB Fcn. probiert... bekomme aber den Fehler: Too many ouput arguments

Fische da grad im trüben!

Vorab vielen Dank!

Gruß

phip
Private Nachricht senden Benutzer-Profile anzeigen
 
Uli

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2008, 09:53     Titel:
  Antworten mit Zitat      
Hallo Bajo,

ich habe das gleich Problem. Ich möchte über einen Simulink-Block an die serielle Schnittstelle schreiben bzw lesen. Wie sieht das bei dir mit dem Fcn Block aus?

Gruss und danke.
Uli
 
Peter32

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.12.2012, 21:47     Titel:
  Antworten mit Zitat      
@phip
habe auch dieses board, könntest du deine m-file hochladen, damit ich das auch über matlab machen kann?
andere frage, ich habe ja die .dll für matlab64bit (habe auch matlab64bit) wie kann man die denn einbinden?
das ist eigentlich mein größeres Problem
 
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.