2010-10-07 15 views
8

Chciałbym zrozumieć, w jaki sposób działa symulator Simulink. Czy używa mechanizmu dyskretnej symulacji zdarzeń (a następnie, w jaki sposób obsługiwany jest czas ciągły?)? Czy opiera się na statycznym generowaniu kodu opartym na cyklu? Lub?Jak działa symulacja silnika Simulink?

Odpowiedz

4

Przed pierwszym cyklu, to dane, kolejność wykonywania bloków (zaczynając od tych, które nie wymagają nakładów z innych bloków)

każdym cyklu oblicza moc każdego bloku oparty na wejściach i kodzie bloku. Kod każdego bloku jest statyczny, w większości istniał przed umieszczeniem modelu razem. (Nie wiem, czy opcje bloków faktycznie zmieniają kod, czy są oceniane tylko w czasie wykonywania, w każdej iteracji.)

Jeśli krok symulacji jest zmienny, to dla każdego cyklu oblicza rozmiar następnego kroku , opiera się głównie na tym, jak szybko zmieniają się zmienne modelu. Im szybciej się one zmieniają, tym mniejsza powinna być wielkość kroku, więc nie zakłada się, że krótko wysoka pochodna potrwa dłużej, niż powinna. (Nie znam szczegółów tego obliczenia, może ktoś inny może rzucić światło?) Tak więc, "ciągła" symulacja lub zmienny krok, oznacza tylko, że Simulink będzie wykształcał zgadywanie w każdym cyklu, jaki rozmiar kroku jest wystarczająco mały aby zachować błąd kwantyzacji czasu na akceptowalnym poziomie. Prawdziwie ciągła symulacja jest dosłownie niemożliwa w stosunku do całkowicie cyfrowego sprzętu, takiego jak procesor komputera.

+0

Thx. Tak też myślałem. Przepraszamy za to dziwne pytanie, ale skąd masz te informacje? Jaki masz poziom zaufania? – JCLL

+0

@JLCC Niewiele. Mam wieloletnie doświadczenie w korzystaniu z Simulink, ale informacje te pochodzą z wnioskowania i zdobywania wskazówek z dokumentacji (jest tam wiele wskazówek, ale nigdy nie znalazłem prostego opisu). Co daje mi największą pewność co do tego, co tu powiedziałem, to moja ograniczona wiedza na temat funkcji-s, które są blokami, których kod sam piszesz. Polecam je czytać, zapewniają wgląd w to, co się dzieje. To, co powiedziałem o algorytmie obliczania zmiennego kroku, to bardzo niskie zaufanie. Ale jestem pewien, że prawdziwa ciągła symulacja jest niemożliwa, chociaż nie można tego zrobić –

0

Z pewnością nie jestem ekspertem, ale odpowiedź brzmi: "to zależy".

Simulink z pewnością wykorzystuje integrację numeryczną dla niektórych rzeczy, a dla niektórych integratorów otrzymasz dyskretne kroki czasowe. W przypadku innych integratorów zmiana czasu może zostać zmieniona podczas działania symulacji - jest to szczególnie ważne w przypadku symulacji "sztywnych" zestawów równań.