Il linguaggio modelica

Modelica è un linguaggio ad oggetti open source basato su equazioni per la modellazione di sistemi fisici complessi contenenti, ad esempio, meccanica, elettronica, idraulica, termica e controlli.

Perché è nato il linguaggio modelica?
  • Per la modellazione del comportamento dinamico di complessi sistemi multidominio.
  • I modelli sono descritti da equazioni differenziali, algebriche e discrete.
  • Nessuna modellazione tramite equazioni differenziali alle derivate parziali, cioé no FEM (metodi agli elementi finiti) e no CFD (Computational Fluid Dynamics), ma riutilizzo dei loro risultati.
modello dettagliato di veicolo in modelica
Modello dettagliato di veicolo
Ambiente di Simulazione basato su Modelica

Dymola è un ambiente di simulazione basato su Modelica e completamente compatibile con tutte le sue librerie. Questo significa che Dymola è in grado di risolvere e simulare correttamente qualsiasi modello sviluppato con Modelica.

Relazione fra Dymola e Modelica
Ambiente di simulazione basato su Modelica
Caratteristiche del linguaggio Modelica
  • Notazione matematica per matrici ed array non solo composti da numeri, ma anche da modelli.
  • Sottomodelli rimpiazzabili e modificabili: ad esempio è possibile cambiare velocemente tra versioni diverse di una trasmissione in un modello di veicolo.
  • Costrutti per definire sistemi discontinui e variabili, come ad esempio switch o attriti.
  • Funzioni matematiche con un numero variabile di input / output. La parte procedurale di Modelica è usata come linguaggio di scripting.
  • Chiamata di funzioni scritte in C, Fortran e Java all’interno di Modelica.
  • Potente concetto di libreria (I compilatori dispongono di informazioni sufficienti per la ricerca automatica all’interno di modelli , la gestione della versione, aggiornamento dei modelli, …).
Linguaggio di modellazione ad oggetti

Modelica è un linguaggio di modellazione ad oggetti in cui:

  • Ogni icona rappresenta un componente fisico (resistenza elettrica, pompa, …).
  • Una linea di connessione rappresenta il reale accoppiamento fisico (cavo, flusso di fluido, flusso di calore, …).
  • Un componente può essere costituito da sottosistemi connessi (= struttura gerarchica) e/o è descritto da equazioni.
  • Attraverso algoritmi di manipolazione simbolica, la descrizione Modelica di alto livelloviene tradotta in un set di equazioni differenziali algebriche.
modellazione ad oggetti basata su Modelica in Dymola
Schema di un modello in Dymola basato su Modelica
  • Per ogni dominio vengono quindi definiti i relativi connettori causali e/o acausali (bidirezionali).
Descrizione delle varie tipologie di connettori Modelica
Tipologie di connettori Modelica
  • Ogni tipologia di connettori è compatibile solo con se stessa, in quanto è definita a partire dalle grandezze fisiche relative al dominio ingeristico di appartenenza.
  • Per ogni dominio vengono inoltre definite le leggi fisiche di bilancio relative ad ogni generico componente.
Modellazione da zero di un componente in Modelica
Definizione di un componente di base utilizzando il codice Modelica
  • I modelli sono costituiti da una rappresentazione sotto forma di codice sorgente Modelica e dalla relativa rappresentazione grafica sotto forma di schema a blocchi.
  • Ogni blocco grafico rappresenta un’istanza di una classe definita all’esterno del modello.
  • Le istanze di classi esterne possono venire modificate e rinominate in fase di dichiarazione.
  • Le connessioni fra blocchi non sono altro che equazioni.
Esempio di modellazione ad oggetti in Modelica
Modellazione ad oggetti testuale e a blocchi basata su Modelica
Modello di un sistema complesso multidominio, modellando utilizzando le classi e Modelica
Modello di un sistema complesso multidominio, modellando utilizzando le classi e Modelica
Hardware in the loop

Il codice sorgente Modelica di ogni modello può essere facilmente suddiviso in unità logiche e quindi partizionato definendo differenti task e subtask. Una volta definite tali unità logiche il tool di sviluppo basato su Modelica (Dymola) sarà in grado di suddividere automaticamente le equazioni e di generare codice per ogni target fisico, grazie alla struttura della sintassi Modelica.

Hardware in the loop con Modelica
Hardware in the loop con Modelica