Gui+Simulink

di Anonimizzato9908 il
82 risposte
Salve,
per una tesina all'uni ho fatto una gui
questa gui passa dei valori ad una simulazione simulink, la fa partire, poi simulink passa alla gui i risultati che vengono mostrati in due grafici nella gui

Ora però il prof mi ha chiesto di aggiungere una cosa che io non ho idea di come fare
In pratica tramite gui dovrei scegliere il tipo di motore nel modello simulink (nel modello si fa tramite un menù a tendina)


qualcuno sa come si possa fare, o ha qualche idea?

grazie

82 Risposte

  • Puoi spiegare meglio dove scegli adesso il motore? è un blocco di simulink?
  • Il motore è dentro il modello simulink ed è un blocco...se clicchi sul blocco ti compare un menù a tendina, quello dell'immagine, e tu li scegli il tipo di motore...i motiri come si può vedere hanno diversa potenza, tensione di alimentazione e numero di giri

    ora il prof vorrebbe scegliere il tipo di motore tramite gui
  • Si può sapere che blocco è? o un blocco simile?
  • Il blocco di un motore asincrono
  • Set_param?
  • Ci avevo pensato...ma non ho idea di che sintassi utilizzare
  • Prova prima fuori dalla GUI. Qualcosa del tipo:
    set_param('nome_del_modello_simulink/Asynchronous Machine', 'PresetModel', 'una_delle_stringhe_possibili')
  • X fuori dalla gui intendi in matlab?
  • Sì, tra l'altro puoi anche farti dire direttamente da matlab quali sono le possibili scelte del menu a discesa con get_param
    p = get_param('nome_del_modello_simulink/Asynchronous Machine', 'DialogParameters')
    ti crea una struttura
    se fai
    p.PresetModel.Enum
    dovrebbe darti le possibili scelte.
  • Mi da come risultato questo:

    >> p.PresetModel.Enum

    ans =

    Columns 1 through 6

    'No' [1x42 char] [1x41 char] [1x41 char] [1x41 char] [1x40 char]

    Columns 7 through 11

    [1x40 char] [1x40 char] [1x42 char] [1x41 char] [1x41 char]

    Columns 12 through 16

    [1x41 char] [1x40 char] [1x40 char] [1x40 char] [1x42 char]

    Columns 17 through 21

    [1x40 char] [1x41 char] [1x41 char] [1x40 char] [1x39 char]

    Column 22

    [1x39 char]
  • Queste dovrebbero essere tutte le possibilità
    Se le vuoi guardare devi aggiungere l'indice:
    p.PresetModel.Enum(3) dovrebbe darti la terza stringa del menu a discesa
  • Quindi per scegliere la macchina basta usare questa riga
    set_param('nome_del_modello_simulink/Asynchronous Machine', 'PresetModel', 'una_delle_stringhe_possibili')

    dove al posto di 'una_delle_stringhe_possibili' devo mettere un numero?
  • No, devi mettere p.PresetModel.Enum(3), questo se lo fai da riga di comando.
    ovviamente prima devi usare il get_param
    Immagino che nella GUI metterai un menu a discesa, dove come stringhe possibili ci sarà un
    for i=1: numero_di_stringhe_possibili
       valore_nel_menu_a_discesa= p.PresetModel.Enum(i);
    end
    (ovviamente è un esempio del concetto, poi devi usare il codice giusto per metterlo nel menu a discesa)
    Il valore restituito dalla scelta del menu a discesa lo andrai ad utilizzare nel set_param.
    Quello che devi mettere nel set_param dipende da cosa ti restituisce la GUI. Se ti restituisce l'indice ci metti p.PresetModel.Enum(indice_restituito), se ti restituisce direttamente la stringa ci metti la stringa.
  • Ok...grazie mille
    spero di riuscire a provare tutto oggi
Devi accedere o registrarti per scrivere nel forum
82 risposte