Contenuto principale

Registrazione, verifica e debug dei grafici

In Stateflow®, è possibile registrare dati e stati per capire quando e come cambiano durante la simulazione. È possibile aggiungere punti di interruzione per sospendere l'esecuzione negli stati o nelle transizioni. Combinando queste tecniche, è possibile verificare ed eseguire il debug della logica del grafico.

In questo esempio, si individua un problema di progettazione in un modello di batteria ricaricabile registrando l'attività di stato e i valori dei dati di un grafico. Quindi, si utilizzano i punti di interruzione per identificare lo stato e il passo temporale in cui si verifica il problema di progettazione.

Apertura del modello

Per costruire il modello, seguire le istruzioni riportate nel passaggio precedente del tutorial. In alternativa, aprire il modello sfGetStartedBattery dal prompt dei comandi di MATLAB®.

  1. Al prompt dei comandi di MATLAB, inserire:

    openExample("sfGetStartedBattery")

    È possibile caricare o scaricare la batteria attivando o disattivando il blocco Manual Switch.

  2. Fare doppio clic sul blocco Chart per accedere all'Editor di Stateflow.

    Gli stati Charge e Discharge rappresentano le modalità operative del sistema di batterie. L'input isCharging determina lo stato attivo. I dati sentPower e charge rappresentano la potenza di output in watt e il livello di carica della batteria.

Registrazione di dati e stati

Il sistema di batterie presenta i seguenti requisiti:

  • Quando isCharging è vero, caricare la batteria. Quando isCharging è falso, scaricare la batteria.

  • La percentuale di carica della batteria deve rimanere compresa tra il 100% e lo 0%.

Verificare i requisiti registrando lo stato attivo del grafico e il valore dell'input charge nel Simulation Data Inspector.

  1. Per registrare lo stato attivo del grafico, nella scheda Simulation, nella sezione Prepare, fare clic su Log Active State. Nell'angolo in basso a sinistra dell'area di disegno compare un badge di registrazione .

  2. Nel riquadro Symbols, fare clic con il tasto destro del mouse su charge, quindi su Inspect. Si apre Property Inspector (Controllo delle proprietà).

  3. Nel Property Inspector (Controllo delle proprietà), espandere la sezione Logging e selezionare Log signal data.

  4. Tornare all'Editor di Simulink®.

  5. Fare clic con il tasto destro del mouse sulla linea del segnale che va dal blocco Manual Switch al grafico e fare clic su Log Selected Signals.

  6. Per simulare il modello, nella scheda Simulation, fare clic su Run. Il modello viene simulato finché non si preme Stop.

  7. Per transitare allo stato Discharge, fare doppio clic sul blocco Manual Switch. Attendere diversi secondi e commutare nuovamente il blocco Manual Switch. Ripetere più volte questa azione. Alla commutazione finale, riportare il blocco Manual Switch su 0.

  8. Nella scheda Simulation, fare clic su Stop per terminare la simulazione.

  9. Nella scheda Simulation, nella sezione Review Results, fare clic su Data Inspector.

  10. Nel Simulation Data Inspector, fare clic su Visualization and layouts (Visualizzazione e layout) . Nella sezione Basic layouts, fare clic sul layout 2x1 .

  11. Per visualizzare lo stato attivo del grafico, fare clic sulla parte superiore del grafico. Quindi, nella scheda Inspect, espandere la sezione Stateflow e selezionare Battery:ActiveChild.

  12. Per visualizzare l'output del blocco Manual Switch, fare clic sulla parte inferiore del grafico. Quindi, nella scheda Inspect, espandere la sezione Signals e selezionare Manual Switch:1.

    Quando si commuta il blocco Manual Switch, il grafico transita tra Charge e Discharge come previsto.

  13. Per visualizzare il valore di charge, fare clic sulla parte inferiore del grafico. Quindi, nella scheda Inspect, selezionare charge e deselezionare Manual Switch:1.

    La batteria non soddisfa i requisiti poiché si carica oltre il 100% e scende al di sotto dello 0%.

Impostazione dei punti di interruzione

Impostare punti di interruzione sugli stati e sulle transizioni per identificare il passo temporale in cui si verifica il problema di progettazione.

  1. Nel grafico, fare clic con il tasto destro del mouse sullo stato Discharge, quindi su Set Breakpoint. Sullo stato compare un badge rosso circolare che indica un punto di interruzione. Per impostazione predefinita, i punti di interruzione su uno stato si attivano quando il grafico entra in uno stato o vi rimane.

  2. Per disabilitare l'attivazione del punto di interruzione quando il grafico entra nello stato, fare clic sul badge del punto di interruzione. Nella finestra di dialogo Discharge Breakpoints, deselezionare il trigger On State Entry.

  3. Fare clic con il tasto destro del mouse sulla transizione da Charge a Discharge, quindi su Set Breakpoint. Il punto di interruzione si attiva quando il grafico si sposta lungo la transizione.

  4. Nella scheda Debug, fare clic su Breakpoints List.

    Nel riquadro Breakpoints List è possibile attivare o disabilitare i punti di interruzione e modificare le condizioni in base alle quali vengono attivati.

  5. Specificare che il punto di interruzione Discharge si attiva solo quando la carica della batteria è negativa. Nella riga della tabella dello stato Discharge, fare doppio clic sulla colonna Condition e inserire charge<0.

  6. Simulare il modello. La simulazione si sospende nella transizione tra Charge e Discharge.

  7. Per riprendere la simulazione, nella scheda Simulation, fare clic su Continue. La simulazione si sospende nel passo in cui charge diventa negativo.

  8. Fare nuovamente clic su Continue. Poiché charge è ancora negativo, il punto di interruzione Discharge si attiva al passo successivo.

  9. Interrompere la simulazione.

  10. Per rimuovere i punti di interruzione, fare clic con il tasto destro del mouse su ciascun badge del punto di interruzione e selezionare Clear Breakpoint.

Nella fase successiva del tutorial, si risolverà il problema di progettazione aggiungendo modalità operative annidate che rallentano o interrompono la carica o la scarica quando la batteria raggiunge determinati livelli di carica.

Vedi anche

Argomenti