1 / 35

Agenda

Using VisSim State Charts Visual Solutions, Inc. 487 Groton Road, Westford MA 01886 USA (800) VISSIM-1 www.vissim.com. Agenda. Creating State Charts Hierarchy Transitions Debugging/Logging Embedded Considerations. What is a State C hart ?.

Download Presentation

Agenda

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using VisSim State ChartsVisual Solutions, Inc.487 Groton Road, Westford MA 01886 USA(800) VISSIM-1www.vissim.com

  2. Agenda • Creating State Charts • Hierarchy • Transitions • Debugging/Logging • Embedded Considerations

  3. What is a State Chart? • A graphical representation of a finite-state machine • A system with a fixed number of named states. Transitions between states occur when certain conditions are met. • VisSim State Charts are OMG UML 2.1 conformant • Create state charts anywhere in a VisSim diagram • Exchange data between the state chart and the continuous portion of a diagram • Use VisSim variables or Triggers in chart, as well as defined input and output pins

  4. Example State Chart

  5. Basic state chart elements • States – set of named system configurations • Transitions - control movement between states • Pseudo states – Alter transition operation • Behaviors- code associated with transitions and state events • Triggers – named events that can cause transitions or code to be executed

  6. Creating a State Chart • Insert a State Chart block into a VisSim diagram. • Right click drills down and enters State Chart world • Notice normal VisSim blocks are disabled and State Chart elements are enabled • Insert an Initial State and two states

  7. Creating Transitions • 1. Position the cursor over the edge of a source state. The cursor shape changes to a pencil • If the cursor is a crosshair with arrow heads, moving the mouse moves the state rather than draws the arc. • 2. Depress the mouse and drag into the target state body. • If the state is a composite state, you may connect to a state within the composite state. • 3. Release the mouse button.

  8. Moving Transitions • Click the mouse over a transition you want to bend or move. • The transition line turns purple, indicating that you can edit it. • To bend the transition, left click on it and drag the mouse. • Labels will move with the arc • To move where the transition arc connects to a state edge, position the cursor over the end of the arc you want to move. • When the cursor changes to a 4-arrow crosshair, depress and drag the mouse to the desired location.

  9. Controlling Transitions • You can use triggers and C expressions to control if and when transitions are taken • Double click on Transition to edit • Transitionsyntax: trigger(s) [guard] / C-code • Guard is C expression • Triggers and guard are optional, but ‘/’ is not • All triggers and guard must be true to execute transition and C-code

  10. Triggers • Triggers are True or False • Declare in Continuous space via Trigger Block • or Data Browser (type = Trigger) • Assign value in continuous space • Like VisSim variables only one definition point • or State Chart Action via SendT(<trigname>) • Reference in State Chart Transitions and Actions.

  11. Deferred Triggers • If you defer a Trigger in a state, the state will remember any True setting and hold it for one tick after the state is exited. • This makes it available for an action in the next state transitioned to for 1 tick. • defer a trigger by adding to Deferred Triggers list in State Activity Manager

  12. Transition Evaluation Order • Multiple output transitions have an evaluation order indicated by number near start of arc • To change, right click transition, select “Reorder Transitions” • Click transitions in order of desired execution • Transitions with no trigger are always evaluated after transitions with trigger (regardless of order number) • At most one transition fires per Chart Region during one simulation or codegen timer tick.

  13. Defining state chart variables • To exchange data between the VisSim model and the state chart, use variables. • State chart variables are declared in the State Chart Block Properties • Activate View > Connector Labels to see the pin names • To define input and output variables: • Add Connector command (or toolbar button) • Or ctrl+right click the state chart block and click Data Browser. Data Browser gives you ability to choose name, data type and storage for each variable

  14. Data Browser • Click (new item icon) to create new variable • Type • char .. double = data type as in C • Trigger = Boolean (True or False) • State ID = currently active state • Scope • Local = only seen within State Chart • Input/output = input/output pins • Constant = constant value • External = Seen outside State Chart

  15. Data Browser (cont.) • Pin – assigned to inputs and outputs • Default value – initial value before 1st assignment • Value – current value • Comment – whatever you like • To edit a variable, double click the property

  16. Configuring States • Right click in State title bar to open properties • Options tab gives name and comment fields and shows some activity code (not editable) • Activity Manager Tab lets you associate C-code to be called on certain events (actions) • Entry – on State entry • Exit – on State exit • Do – while in State • On trigger – when in State and trigger is True

  17. Allowable C-code in Activity • ANSI C expressions, statements and functions are OK. • Can put initial C file in Sim Properties> Preferences > startup script file • Standard library math functions (pow, abs, exp, min, max etc) • No preprocessor commands supported (#define, #if, #else)

  18. Creating Actions • Click on the action or trigger you wish to activate C-code then click “Add Action” • Code is inserted in “Edit Behavior” and may be edited further. • Action code syntax • {action name}/{C-code} i.e. Entry / startup = 1;

  19. Controlling State Chart Execution • Initial State - indicates starting point for State Chart, Submachines and Composite States • Terminate - indicates final state end point. • Exits from Submachine or Composite region • Choice – expression selects destination state • Fork – Notational convenience for entering multiple regions in Composite State • Join– Notational convenience for leaving multiple regions in Composite State

  20. Transition Choice if (A) { /* exit State One*/ B; if (C) {D; /*Enter State Two*/ } else if (E){ F; /*Enter State Three*/ } } • It is a FATAL ERROR to enter a choice but not take exit leg to a state. • Only place State Charts can halt besides Terminate

  21. To avoid Choice FATAL ERROR • Always have one exit leg with no predicate • Check Integrity will check for this. • Don’t use Choice, use Join with predicates. That way, current state will never be left unless possible path exists.

  22. Interacting with State Charts • To send data from the continuous portion to a State Chart you can use: • State Chart input/output pins • VisSim variables • Triggers • To read the current state in the continuous portion • Use an output pin set to State ID • Use a state id block.

  23. Controlling VisSim execution • Use state id block “is active” mode • Test “State Id” output pin of state against state id block in “State Id” mode. • State ID values are unique but can change. Don’t depend on actual value. Values change between simulation and code generation and as states are added and removed. • Can use merge to select data or enabled Compound block to control execution

  24. Hierarchical States • You can encapsulate a state chart within a state chart by using a Submachine state. • Enter a Submachine by double click on title bar • You can use Initial State or Terminate to enter and exit, or • Use Entry and Exit points for different initial and final states. • Entry and exits are placed inside the Submachine and will automatically appear on Submachine face

  25. Parallel State Execution Regions • Use Composite State for multiple active states • Right click in Composite body, select insert vertical/horizontal region to create new region • To delete region, drag dashed line off screen. • Use Initial State to indicate first state in region • Use Terminate State to end region. When all regions are done, can leave Composite State • Can transition directly from state in region to state outside Composite State • Other regions active states are ended immediately

  26. History • If you transition directly out of a Composite Region without termination of other regions, and a history element is present, the history element will remember currently active states. • If you renter Composite Region via History, prior active state(s) will be entered. • See examples ShallowHistory001&002

  27. Deep History vs Shallow • Shallow history only remembers active state(s) on current layer of Composite or Submachine. • Deep history remembers all active states in all nested Composite and Submachines.

  28. Debugging State Charts • You can set break points or log action for any action in any state or transition • Right click to open properties, click on action, and check “Attach Breakpoint” (red ball appears) or “Log Message” (red exclamation appears) • When sim is run and action occurs, sim will stop at time step for breakpoint. Data Browser contains current data values.

  29. VisSim Error Reporting • The menu item “Check Integrity” will scan and report on ill-formed charts. • Click error, then use arrow and hand to jump to state in error • “Check Integrity”is also run when you click “Go” • States with errors are highlighted.

  30. Breakpoints • Menu item State Charts > Breakpoints… • Shows list of Breakpoints and Log points • Can remove one or more BPs • Can jump to next occurance of BP

  31. Logging Actions • To log actions, right click state or transition to open properties, click on action, and “Log Message” (red exclamation appears on state, red ball on transition) • Place identifing text in the edit box to the right of “Log Message” to be entered into the event log • To see the events in the log, leave the state chart and place an standard VisSim Block > Signal Consumer > Event Display block into the workspace. • When the simulation is run, time stamped events will appear in the event log.

  32. Logging C-code execution • To enable C-code logging, Ctrl-Right Click on the enclosing State Chart and enable "Log executed C instructions“, then press Ok • Run the diagram • Ctrl-Right Click on the chart again and click “Open”

  33. Embedded Considerations • Compiled State Chart should work the same as simulated, so simulate as much as you can • Compiled States IDs may be different numerical values than simulated. • State Lookup… menu item has “embedded” option • sim ID->embedded ID convert block in works • For low freq state change, use State ID from Data Browser as output from top level compound. • For high freq state change use Monitor Buffer Write

  34. Embedded Operations to Avoid • Terminate – halts operation • Choice without Else

  35. Q&A

More Related