2016-06-05 14 views
0

Ich habe einfaches Simulink-Modell und ich möchte den Anfangszustand des Integrators basierend auf einem Signal ändern. Dieses Signal kann die Werte 1 oder 0 annehmen und die Anfangsbedingungen des Integrators sollten gleich 1,16 bzw. 0,65 sein.Einstellen der Integrator-Anfangsbedingung basierend auf dem Signal in Simulink

Ich habe versucht, einen Parameter x_init in Model Workspace (und dann im Integrator-Block verwenden), aber ich konnte nicht über Funktion zugreifen. Dann habe ich versucht MATLAB Funktion in Simulink-Modell mit set_param(...) zu laufen, aber ich habe Fehler:

Function 'set_param' is not supported for code generation. Consider adding coder.extrinsic('set_param') at the top of the function to bypass code generation. 

Dies ist, wie die Struktur des Modells wie in Modell-Explorer sieht. Ich möchte den Anfangszustand x ändern. Model Explorer view

Antwort

1

Verwenden Sie eine Arbeitsbereichsvariable, wie Sie tun, ist der falsche Ansatz.

Ändern Sie die Initial Condition Source Eigenschaft des Integrators in external. Dies gibt dem Block einen zusätzlichen Eingang. Der Wert des Signals, das in diesen Port eingespeist wird, wenn der Integrator zurückgesetzt wird, wird als Anfangsbedingung genommen.

+0

Danke, es hat funktioniert. Ist das für andere Blöcke wie PIDs gleich? –

+1

Jeder Block mit rücksetzbaren Zuständen und die Möglichkeit, die Ausgangsbedingung mit einer externen Eingabe anzugeben, funktioniert wie folgt. –

Verwandte Themen