Octave Engine
Introduzione
Il motore Octave (strumento open-source compatibile con MatLab) all’interno del Modulo di Scripting consente agli utenti di eseguire calcoli complessi all’interno di Requirements & Systems Portal che non sono molto facili da eseguire/calcolare nel Modulo di Progettazione del Sistema. È possibile fare riferimento ai Vali necessari per i calcoli come Vali di input e al risultato come Vali di output. Alcuni esempi comuni di tali calcoli includono la risoluzione di equazioni non lineari, la moltiplicazione di matrici o casi condizionali.
Flusso di scripting per gli script del motore Octave
Il flusso di lavoro tipico per l’utilizzo del Modulo di Scripting è mostrato di seguito. Ogni passaggio è spiegato nelle rispettive sottosezioni.

1. Creazione di un nuovo script Octave
Per creare un nuovo script Octave nel progetto, passa con il mouse sul modulo simulazioni (1) e seleziona “+ Script” (2). Facendo clic, si apre una finestra popup; inserisci il nome e seleziona “Octave engine (Matlab compatibilite)” (3), quindi fai clic su “Create”. Vedi immagine Creating Octave Script.
2. Input e output
L’utente può aggiungere i Vali di input e di output. Ad esempio, quando l’utente fa riferimento al Vali negli input o negli output, può fornire un nome breve per il Vali, che verrà poi utilizzato nel codice di calcolo Octave.
Example:
Se stai utilizzando un Vali chiamato “PowerConsumption.CRUISE” dal modulo componente, puoi semplicemente assegnare un’abbreviazione della variabile come “cruise“ (1). Una volta che il Vali è referenziato negli input, Requirements & Systems Portal aggiunge automaticamente i valori insieme alle unità (2).
L’utente può anche modificare l’unità di simulazione. Ad esempio, il PowerConsumption definito per cruise nel Modulo di Progettazione del Sistema è in W, ma per la simulazione viene utilizzato kW, che è definito nella colonna “simulation unit” (3). Vedi immagine Setting up Valis.
Puoi utilizzare qualsiasi Vali del Modulo di Progettazione del Sistema come input o output, ma non contemporaneamente come entrambi.
3. Calcolo/codice Octave
Come accennato in precedenza, il modulo di simulazione di Requirements & Systems Portal utilizza un motore Octave che consente di usare la sintassi Octave . È simile a Matlab e presenta un’eccellente compatibilità con esso, quindi non dovrai familiarizzare con un nuovo framework per creare calcoli complessi. Puoi consultare la pagina della documentazione GNU Octave se hai bisogno di ulteriori informazioni.
Gli utenti devono scrivere il codice Octave nel file “main.m”(1). Le istruzioni su come l’utente può definire input e output sono riportate nell’area di codifica (2). Vedi Figura Octave Script per maggiori informazioni.
Una volta aggiunto il codice al file main.m, l’utente può salvare lo script facendo clic su “Save”(3).
4. Esecuzione delle simulazioni/risultati
Una volta completato lo script, puoi fare clic sul pulsante play, che si trova nell’angolo inferiore sinistro come mostrato nella Figura Running Script.
Una volta completata la simulazione, Requirements & Systems Portal aggiorna automaticamente i valori di output. Di conseguenza, i Vali di output nel Modulo di Progettazione del Sistema vengono aggiornati automaticamente. Se i Vali di output vengono utilizzati come costanti nelle formule per calcolare altri Vali, Requirements & Systems Portal ricalcola automaticamente ogni Vali associato al Vali di output.
5. Caso d’uso di Scripting + Automazione
Se vengono modificati valori di input nel Modulo di Progettazione del Sistema, l’utente deve rieseguire la simulazione per ricalcolare i valori di output.
Per evitare di eseguire simulazioni dopo ogni modifica dei valori di input, è possibile creare un collegamento tra le Automations e il Modulo di Scripting. Infatti, è possibile impostare nuove automazioni con un trigger costante per rieseguire automaticamente ogni simulazione interessata da una modifica di un Vali, come mostrato nella breve clip qui sotto.
In questo caso specifico, il tempo di volo del nostro Valicopter viene regolato da 15 min a 10 min, il che attiva automaticamente un ricalcolo della capacità totale della batteria necessaria. Poiché la massa totale del sottosistema di alimentazione viene calcolata in base alla capacità della batteria necessaria (quante batterie servono), con un tempo di volo inferiore e quindi una capacità della batteria richiesta minore, anche la massa del sottosistema di alimentazione viene ricalcolata e ridotta.