2016-05-12 5 views
0

Ich bin neu in Matlab/Simulink, habe aber die Anforderung, mit einem Simulink-Modell aus einer Software zu interagieren.Ausführen eines kontinuierlichen Simulink-Modells mit Echtzeiteingabe?

Im Moment habe ich eine einfache Simulink-Funktion 'Inc' erstellt, die 1 Eingang zu einem Additionsblock mit einer Konstanten 1 und einem Ausgang hat. Ich habe To/From-Workspace-Blöcke verwendet und kann die Simulation über eine feste Zeit mit einer Zeit/Wert-Vektoreingabe wie simin = [0,0; 5,0; 5,1; 10,1] ausführen.

Was möchte ich tun, ist mein Modell kontinuierlich laufen? Workspace-Werte in Echtzeit und nicht als vordefinierter zeitbasierter Vektor lesen?

Ich kann nicht sehen, wie man das einrichtet? Kann Matlab/Simulink das machen?

Zusammenfassend möchte ich, dass Simin und Simout Einzelwerte sind, dh simin = 1, dann würde das Modell kontinuierlich (unendlich) bei dem nächsten festen Schritt simout auf simout = 2 aktualisiert werden der Arbeitsbereich in unterschiedlichen Intervallen.

Antwort

3

Die kurze Antwort ist, dass Sie das nicht (einfach) tun können, so funktioniert Simulink nicht. Der MATLAB-Arbeitsbereich wird zu Beginn der Simulation gelesen/aufgerufen und an die Simulink-Engine übergeben, und selbst wenn sich die Werte im Arbeitsbereich ändern, bevor die Simulation beendet wird, wird dies vom laufenden Simulink-Modell nicht berücksichtigt.

Es gibt Möglichkeiten, um dies zu umgehen, aber wenn Sie ein Anfänger zu MATLAB & Simulink sind, beachten Sie, dass dies ziemlich fortgeschrittene Techniken sind, und ich würde empfehlen, sich zuerst mit Simulink vertraut zu machen.

Werfen Sie einen Blick auf diese ähnliche Fragen für Vorschläge, wie zu tun, was Sie wollen:

Offensichtlich müssen Sie die Simulationsendzeit auf Inf oder eine große Zahl ändern.

+0

Danke. Ich habe etwas mit der Event-Listener-Technik gearbeitet und verwende tcpclient, um Echtzeit-Updates von einem externen System in das Modell zu streamen. Mir ist jedoch aufgefallen, dass ich dem Skript, das auf dem Ereignis-Listener ausgeführt wird, eine Pause (TimeStep) hinzufügen muss, um das Modell auf die Ausführungsgeschwindigkeit in Echtzeit zu verlangsamen. Das fühlt sich nicht richtig an, habe ich irgendwo eine Einstellung verpasst? – MattP

+1

Ja, Simulink selbst ist kein Echtzeitsystem. Für den Anfang läuft es unter Windows oder anderen O/S, die nicht in Echtzeit sind, aber das Modell läuft im Wesentlichen so schnell wie es geht. Aufgrund der Komplexität des Modells könnte es schneller oder langsamer als in Echtzeit sein. Wenn es schneller ist, gibt es Tools zur Verlangsamung der Ausführung in Pseudo-Echtzeit, siehe zum Beispiel http://uk.mathworks.com/matlabcentral/fileexchange/21908-simulink%C2%AE-real-time- Ausführung. – am304

+1

Oder sogar das: http://uk.mathworks.com/matlabcentral/fileexchange/29107-real-time-pacer-for-simulink – am304