Pokazywanie postów oznaczonych etykietą symulacji. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą symulacji. Pokaż wszystkie posty

sobota, 30 czerwca 2012

[Matlab / Simulink] Przekazywanie danych z Simulinka do workspace podczas symulacji


W większości przypadków, dane z symulacji wystarczy przekazywać do workspace bloczkiem ToWorkspace, lub przez funkcję [x.y.t] = sim(...).



Podejście to ma jedną poważną wadę : cały wektor sygnału aktualizuje się dopiero po zakończeniu symulacji. Czasami zachodzi jednak potrzeba, by przesyłać dane na bieżąco, na przykład dla symulacji z czasem końcowym nieskończoność, gdzie użytkownik zmienia sygnały z GUI.

Aby na bieżąco aktualizować w workspace pewien sygnał, można wykorzystać bloczek Embedded Matlab Function





Wewnątrz wykorzystana zostanie funkcja assignin:


function y = fcn(u)
eml.extrinsic('assignin');
assignin('base','volume_work',u);
y = 1;  


 Instrukcja eml.extrinsic importuje funkcję do Embedded Matlab. Assignin przypisuje wejście bloczka (u) do zmiennej 'volume_work' z workspace o nazwie 'base' . Jest to nazwa domyślnego workspace w Matlabie.

Do komunikacji w drugą stronę można wykorzystać funkcję evalin.

Linki:
1. Mathworks - assignin
2. Mathworks - evalin