j'ai un modèle Modelica artificiel dans lequel une ont une variable de machine d'état manipulé par plusieurs when
déclarations:Trop d'équations pour les variables de machine d'état discret dans lors des déclarations dans Modelica
model WhenExample
type State = enumeration(first, second, third);
State state;
initial equation
state = State.first;
equation
when sample(0, 1) then
state = State.second;
end when;
when sample(0, 3) then
state = State.third;
end when;
end WhenExample;
Lors de la compilation sous OpenModelica OMC, I l'erreur suivante:
[1] 16:46:39 Symbolic Error
Too many equations, over-determined system. The model has 2 equation(s) and 1 variable(s).
Cela fait un peu de sens que je faire ont deux équations pour ma seule variable state
. Cependant, ces équations ne s'appliquent qu'à des moments précis, n'est-ce pas? Dois-je m'assurer que toutes les «manipulations» d'une variable particulière ne se produisent que dans une seule déclaration when
?
Oui; ajouter deux quand les équations font que l'état a deux équations et il n'est pas possible pour un Modelica de créer une priorité entre les événements, donc 'elsewhen' doit être utilisé (ou une section d'algorithme comme montré ci-dessous). –