Silnik Octave
Wprowadzenie
Silnik Octave (narzędzie kompatybilne z MatLabem o otwartym kodzie źródłowym) w module skryptowym umożliwia użytkownikom wykonywanie złożonych obliczeń w portalu wymagań i systemów, które nie są łatwe do wykonania/obliczenia w module projektowania systemu. Można odwoływać się do Valis potrzebnych do obliczeń jako Valis wejściowych i wyników jako Valis wyjściowych. Niektóre typowe przykłady takich obliczeń obejmują rozwiązywanie równań nieliniowych, mnożenie macierzy lub przypadki warunkowe.
Przepływ skryptów dla silnika Octave
Poniżej przedstawiono typowy przepływ pracy przy użyciu modułu skryptowego. Każdy krok został wyjaśniony w poszczególnych podsekcjach.
-20220823-133931.webp)
1. Tworzenie nowego skryptu Octave
Aby utworzyć nowy skrypt Octave w projekcie, najedź kursorem na moduł symulacji (1) i wybierz "+ Script" (2). Po kliknięciu otworzy się wyskakujące okno; wprowadź nazwę i wybierz "Octave engine (Matlab compatibilite)" (3) kliknij "Create". Zobacz obrazek Creating Octave Script.
2. Dane wejściowe i wyjściowe
Użytkownik może dodać wejściowe i wyjściowe Valis. Na przykład, gdy użytkownik odwołuje się do Vali w danych wejściowych lub wyjściowych, może podać krótką nazwę Vali, która będzie następnie używana w kodzie obliczeniowym Octave.
Example:
Jeśli używasz Vali o nazwie "PowerConsumption.CRUISE" z modułu komponentu, możesz po prostu przypisać skrót zmiennej, taki jak "cruise" (1). Po odwołaniu się do Vali w danych wejściowych, Portal wymagań i systemów automatycznie doda wartości wraz z jednostkami (2).
Użytkownik może również zmienić jednostkę symulacji. np. zdefiniowane zużycie energii dla rejsu w module projektowania systemu jest w W, ale do symulacji używany jest kW, który jest zdefiniowany w kolumnie "jednostka symulacji" (3). Zobacz obrazek Setting up Valis.
Można użyć dowolnej wartości Vali z modułu System Design Module jako wejścia lub wyjścia, ale nie jednocześnie jako obu.
3. Obliczenia/kod oktawy
Jak wspomniano wcześniej, moduł symulacji Requirements & Systems Portal wykorzystuje silnik Octave, który umożliwia korzystanie ze składni Octave. Jest on podobny i ma doskonałą kompatybilność z Matlabem, więc nie będziesz musiał zapoznawać się z nowym frameworkiem, aby tworzyć złożone obliczenia. Więcej informacji można znaleźć na stronie dokumentacji GNU Octave.
Użytkownicy muszą napisać kod Octave w pliku "main.m"(1). Instrukcje są zapisane w obszarze kodowania, w jaki sposób użytkownik może zdefiniować wejścia i wyjścia (2). Więcej informacji można znaleźć na rysunku Octave Script.
Po dodaniu kodu do pliku main.m użytkownik może zapisać skrypt, klikając przycisk "Save" (Zapisz)(3).
4. Uruchamianie symulacji/wyników
Po zakończeniu tworzenia skryptu można kliknąć przycisk odtwarzania, który znajduje się w lewym dolnym rogu, jak pokazano na rysunku Running Script.
Po zakończeniu symulacji portal wymagań i systemów automatycznie aktualizuje wartości wyjściowe. W rezultacie wartości wyjściowe w module projektowania systemu są automatycznie aktualizowane. Jeśli wartości wyjściowe są używane jako stałe w formułach do obliczania innych wartości, portal wymagań i systemów automatycznie przeliczy każdą wartość powiązaną z wartością wyjściową.
5. Skrypty + automatyzacja Przypadek użycia
Jeśli jakiekolwiek wartości wejściowe są zmieniane w module projektowania systemu, użytkownik musi ponownie uruchomić symulację, aby ponownie obliczyć wartości wyjściowe.
Aby uniknąć uruchamiania symulacji po każdej zmianie wartości wejściowych, można utworzyć łącze między Automations i Scripting Module. Rzeczywiście, nowe automatyzacje ze stałym wyzwalaczem można ustawić tak, aby automatycznie ponownie uruchamiały każdą symulację, na którą ma wpływ zmiana Vali, jak pokazano w krótkim klipie poniżej.
W tym konkretnym przypadku czas lotu naszego Valicoptera został dostosowany z 15 minut do 10 minut, co automatycznie uruchamia ponowne obliczenie całkowitej wymaganej pojemności akumulatora. Ponieważ całkowita masa podsystemu zasilania jest obliczana na podstawie niezbędnej pojemności baterii (ile baterii potrzebujemy), przy krótszym czasie lotu, a tym samym mniejszej wymaganej pojemności baterii, masa podsystemu zasilania jest również ponownie obliczana i zmniejszana.