/ / Uruchamianie bloku Simulinka xPC w tempie szybszym niż stałe - matlab, simulink, xpc-target

Uruchamianie bloku Simulinka xPC w tempie szybszym niż stałe - matlab, simulink, xpc-target

Mam aplikację docelową Simulink xPC, która mabloki ze stanami dyskretnymi przy kilku różnych częstotliwościach próbkowania i niektórych sekcjach z wykorzystaniem stanów ciągłych. Moim zamiarem utrzymania ciągłych stanów jest lepsza integracja numeryczna.

Co powoduje problem: Jeden blok czyta urządzenie z bardzo dużą szybkością (500 Hz). Reszta aplikacji może i powinna działać z mniejszą szybkością (powiedzmy 25 lub 50 Hz), ponieważ byłoby to przesadą, aby uruchomić ją z najwyższą szybkością, a ponieważ procesor po prostu nie może wycisnąć pełnego cyklu aplikacji do 0,002 sekundy szybszej stawki. Potrzebuję obu stawek. Jednak ciągłe stany działają z definicji w Simulink przy szybszym dyskretnym tempie całej aplikacji! Oznacza to, że wszędzie, gdzie mam ciągłe stany, teraz są zmuszeni do pracy z częstotliwością 500 Hz, kiedy zrobi to 25 Hz!

Czy istnieje sposób na wymuszenie stanów ciągłych?cel xPC do stawki, która nie jest najszybsza w aplikacji? Lub alternatywnie, czy istnieje sposób, aby pozwolić, aby dany blok działał szybciej niż reszta aplikacji?

Odpowiedzi:

2 dla odpowiedzi № 1

Myślisz o ciągłych solverach wniewłaściwy sposób - ciągłe nie oznacza tylko, że działa tak szybko, jak to możliwe - używa całkowicie innego algorytmu do rozwiązania równań niż dyskretnych. Z tego powodu muszą one działać co najmniej tak szybko, jak dyskretne rozwiązania.

Od Używanie Simulink:

Rozwiązania ciągłe używają liczb integracja zobliczyć model "s ciągłe stany w bieżącym czasie krok od stanów w poprzednim czasie kroki i państwowe instrumenty pochodne. Ciągłe rozwiązania zależą od modelu bloki do obliczania wartości dyskretne stany modelu za każdym razem krok.

Matematycy rozwinęli szeroki zakres różnorodnośćintegracja numeryczna techniki rozwiązywania zwykłych równania różniczkowe (ODE), które reprezentują ciągłe stany dynamiczne systemy. Simulink zapewnia bogaty zestaw stałych kroków i solwery ciągłe o zmiennej wartości, każdy wdrażanie konkretnego rozwiązania ODE metoda (patrz Solvers).

Dyskretne solvery istnieją głównie w rozwiązać wyłączniemodele dyskretne. one oblicz następny krok symulacji czasu dla modelu i nic więcej. Oni robią nie wyliczać stanów ciągłych i oni polegać na blokach modelu do aktualizacji dyskretne stany modelu.

Wynik jest taki Nie to nie jest wystarczająco dobre, aby mieć ciągły przebiegwolniej niż najszybsze dyskretne rozwiązania - w przeciwnym razie z definicji nie są ciągłe. Powinieneś ponownie rozważyć, dlaczego określasz je jako ciągłe.

Co próbujesz osiągnąć, spowalniając ciągłe solwery? Czy jest to problem z symulacją czasu / wydajności?

-Adam


0 dla odpowiedzi nr 2

Moje zdanie jest takie, że nie można tego zrobić. Jednym ze sposobów podejścia do tego jest zastąpienie stanów ciągłych dyskretnymi (prawdopodobnie przy pośredniej szybkości, powiedzmy 100 Hz), i krzyżowanie moich palców, że utrata precyzji jest możliwa do zniesienia.

Być może uda się wyizolować blok i uruchomić go osobno w szybszym tempie, ale nie wiem.


0 dla odpowiedzi № 3

Prawdziwie ciągłe obliczenia są niemożliwe w procesorze cyfrowym, takim jak komputer.

To, co MATLAB / Simulink oznacza przez "ciągły", to: "Będę (dynamicznie) próbował zgadnąć, jaki dyskretny rozmiar kroku jest wystarczająco mały, aby błąd dyskretyzacji był bardzo mały w twojej aplikacji".

Jeśli już wiesz, znając swoją aplikację, że 20ms (50Hz) byłoby wystarczająco małe, a następnie użyj dyskretny - 50Hz.