How to update a variable value in discrete time step depending on the state it is in?

조회 수: 3 (최근 30일)
I am using a state flow chart to determine the state the system is in. A & B are discrete variables.
There are two main OR states ON and OFF and in the ON state there are more 3 OR states namely High,low and last stored.
I have used switch,flag and key which are nothing but Boolean inputs to the state-flow chart and depending on the value of these variables the transition in states take place.
I have defined temp as a output variable. This temp variable is again used as a feedback into the state flow. The logic that I want to implement is as below....
IF *_On _* OR IF *_OFF_*
|
IF High :temp= discrete value of A | temp= discrete value of A
OR |
IF Low :temp= discrete value of A |
OR |
IF Last stored :temp= discrete value of B |
I am finding it difficult to update the output variable temp with respect to the state in discrete time step and then use it as a feed back in the stateflow. There is an error when there is change in state
I am always getting this error message "Simulink cannot solve the algebraic loop containing 'Validation/Chart1' at time 201.0 using the TrustRegion-based algorithm due to one of the following reasons: the model is ill-defined i.e., the system equations do not have a solution; or the nonlinear equation solver failed to converge due to numerical issues. To rule out solver convergence as the cause of this error, either a) switch to LineSearch-based algorithm using set_param('Validation','AlgebraicLoopSolver','LineSearch') b) reducing the fixed step size. If the error persists in spite of the above changes, then the model is likely ill-defined and requires modification."
I would appreciate any suggestion on this. Thanks.

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2012년 8월 2일
편집: Azzi Abdelmalek 2012년 8월 2일
when u use an output as feedback, pass it through a block "unit delay" before feedback. don't forget to set a sample time of your unit delay block.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Complex Logic에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by