fsm tutorial l.
Download
Skip this Video
Download Presentation
FSM Tutorial

Loading in 2 Seconds...

play fullscreen
1 / 29

FSM Tutorial - PowerPoint PPT Presentation


  • 194 Views
  • Uploaded on

FSM Tutorial. FSM Tutorial. FSM is a finite state machine editor that generate the structure in ‘C language’. If the functionality can be represented using state diagrams, this tool generate the structure automatically.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'FSM Tutorial' - jera


Download Now 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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
fsm tutorial2
FSMTutorial
  • FSM is a finite state machine editor that generate the structure in ‘C language’.
  • If the functionality can be represented using state diagrams, this tool generate the structure automatically.
  • The code added to the states and transitions is copied into the generated code.
  • Permit to have a graphic documentation of the software synchronised with the code.
  • Its easy to show, and understand, a functionality using a state diagram that a C code.
fsm tutorial state properties
FSMTutorial - State properties

The states have these fields:

  • Index: used to sort the states in the in the final C-code.
  • Name: name used into the C-code to refer this state.
  • Entry: Code executed one time when this state gets active.
  • During: Code executed always when this state is active.
  • Else: Code executed, if all transitions are false, when this state is active.
  • Exit: Code executed one time when this state leaves.
fsm tutorial state properties4
FSMTutorial - State properties

The states have these options:

  • State confirmation: Activates a function that return TRUE (8bit) if this state is active: FsmName_IsIn_StateName() (Used in hierarchical FSM’s)
  • State jump: Activates a function that force that change the state active to this: FsmName_Goto_StateName(); (Designed for hierarchical FSM’s, please avoid other use)

Node mode:

  • Initial: is the state active when the fist time.
  • Final: mark this state like final.
  • Standard: return this state to the default.
fsm tutorial transition properties
FSMTutorial - Transition properties

Transitions have these fields&options:

  • Priority: is the priority used to analyse the transitions, if a more priority condition (lower number) is true the rest of conditions won’t be analysed.
  • Transition condition: test condition that had to be true to modify the state active. If it’s empty it use ‘1’.
  • Transition action: Code executed one when the condition is true.
  • This Self-transition cause exit-entry: let us to decide if a self-transition had to cause these actions. (only valid for selfTrans.)
  • Last transition: Ensure that even if we add new transitions this will be the last one.
fsm tutorial general properties
FSMTutorial - General properties

The FSM has these fields(1/2):

  • Name: Is the same name of the FSM file that will be used for the C-modules (.c & .h) and also for the task function.
  • Parameters: parameter list that will implement the task function. If it’s empty it use void.
  • Headers: general comment to be included on the top of the module and on top of the task FSM function.
  • Initialisation: Code area to put includes, prototypes and variable declarations.
fsm tutorial general properties7
FSMTutorial - General properties

The FSM has these fields(2/2):

  • PreProcess: Code executed always before call the state dispatcher. Can include local variable declarations.
  • DefaultCase: Code executed if the dispatcher index don’t match wit a valid state. This can happens only if we manipulate this index. Only is used whit generation models based on “switch cases”.
  • ProstProcess: Code executed always after call the state dispatcher.
  • Extra Code: Code area to implement optionally C-functions.
fsm tutorial general properties8
FSMTutorial - General properties

The FSM has these options(1/4):

  • History: determine if this diagram had to be a historic behaviour or not. Applicable only to hierarchical FSM’s where a child diagram called from a state optionally can be initialised to its initial state when the state of the parent FSM changes.
  • Restart Function: Activates a function that force that change the state active to the initial: FsmName_Init(); (This was used for hierarchical FSM’s but today we can use the History option, please avoid other use)
fsm tutorial general properties9
FSMTutorial - General properties

The FSM has these options(2/4):

  • Final node confirmation: State confirmation: Activate a function that return TRUE (8bit) if one final state is active: FsmName_End() (By now this is the only use of final states)
  • Debug Info: implements 3 interfaces; FSM_NAME(), FSM_STATE_NAME() & FSM_TRANS_NUMBER() that can be used for debugging. The compilation had to define FSM_DEBUG to enable these interfaces:

#if defined(FSM_DEBUG)

#define FSM_STATE_NAME() debug_stateNames[ind_TaskX]

#define FSM_TRANS_NUMBER() debug_transNumber

#define FSM_NAME() "TaskX"

#else

#define FSM_STATE_NAME()

#define FSM_TRANS_NUMBER()

#define FSM_NAME()

#endif

fsm tutorial general properties10
FSMTutorial - General properties

The FSM has these options(3/4):

  • Ansi-C comments: The generator convert all lines that have // ~~~ comment to /* ~~~ */.
  • Print Text Boxes: The text boxes (comments) are also printed like C- comments in the bottom of the ‘.c file’. (This feature must be enhanced in future versions)
  • Use bitfields: Applicable only to hierarchical FSM’s compiled with the format hierarchical switch case. This format join all fsm’s (parent & child-diagrams) in a single file, then all entry flags variables can be packed in a bit structure.
fsm tutorial general properties11
FSMTutorial - General properties

The FSM has these options(4/4):

  • Implement interfaces like macros: Applicable only to hierarchical FSM’s compiled with the format hierarchical switch case. This format join all fsm’s (parent & child-diagrams) in a single file. Here all interfaces, that originally were developed to improve the hierarchical navigability, can be declared like macros. This encapsulate more the code and optimise the execution.
  • Color buttons: Let us to modify the state colors. Note you can create a template with your favourite colors.
fsm tutorial menus buttons
FSMTutorial - Menus & buttons

Buttons:

  • New, Open, Save & Generate C-Code (using the predefined method).
  • Print & Print Preview.
  • Cut, Copy, Paste: (Copy & paste work only with remark boxes).
  • Find Text: Find and optionally replace text.
  • Undo last action & Redo last undo.
  • Reduce Font, Change Font, Enlarge Font.
  • Lock & Unlock diagram,
  • InsertMode: Change the editor between insert mode and select mode.
  • AutoSize: Set if the state size can be adjusted automatically or manually.
  • Properties edit: Opens the properties menu (equivalent to do a double click in the diagram)
  • Insert Remark: Inserts a new remark box.
  • Open Parent diagram & Open child diagram (hierarchical navigation)
fsm tutorial menus buttons13
FSMTutorial - Menus & buttons

Menu - File(1/2):

  • New: opens a new diagram.
  • New Child opens a new diagram into a subdirectory. (this directory is named like the parent).
  • Open opens a existent diagram (only fsm format).
  • Close closes the diagram.
  • Save saves the diagram.
  • Save As… saves the diagram with a new name.
  • Save All saves all open diagrams.
  • Save As enhanced metafile… saves the diagram like a metafile.
  • Save As HTML File… saves the diagram like HTML.
  • Generate List… saves the diagram info in a list.
fsm tutorial menus buttons14
FSMTutorial - Menus & buttons

Menu - File(2/2):

  • Generate C-code:

- Pointer Array: Generates the code using a function pointer array dispatcher.

- Direct Pointers: Generates the code using a function pointer dispatcher.

(Probably this pointer methods won’t be updated in future versions due that have more disadvantages that the switch case methods)

- Switch Case: Generates the code using a switch case dispatcher.

- Hierarchical Switch Case: Generates the code of a diagram and all child diagrams into a single module, using switch case dispatchers.

(We tend to use this format because is more polyvalent)

  • Printer Setup, Print Preview & Print.
  • List of recent files.
  • Exit
fsm tutorial menus buttons15
FSMTutorial - Menus & buttons

Menu - Edit(1/2):

  • FSM Properties: Opens the properties menu (equivalent to do a double click in the diagram)
  • Insert Remark: Inserts a new remark box.
  • Font

- Change: Menu to edit font parameters

- Fixed Pitch: Let us to select fixed or non fixed pitch fonts.

  • Find: Find and optionally replace text.
  • Undo: Undo last action.
  • Redo: Redo last undo.
  • Cut, Copy & Paste: (Copy & paste work only with remark boxes).
  • Delete.
  • Export as Enhanced Metafile: Puts the selected items into clipboard.
fsm tutorial menus buttons16
FSMTutorial - Menus & buttons

Menu - Edit(2/2):

  • Select All: Select all items (states, transitions & Remark boxes)
  • Select Mode: Change the editor between insert mode and select mode.
  • Autosize Nodes: Set if the state size can be adjusted automatically.
  • Locked: Lock & Unlock diagram.
fsm tutorial menus buttons17
FSMTutorial - Menus & buttons

Menu - View:

  • Toolbar: Hide or show the toolbar.
  • Status Bar : Hide or show the status bar.
  • Hide Comments ‘//’ : Hide all comment lines that star with //.
  • Grid

- Show grid

- Snap to grid

- Grid Size (60, 120, 180, 240, 300, 360).

  • Zoom: 150%, 100% (&Normal), 75%, 50%, 25%, Fit in Window
  • Zoom Window
fsm tutorial menus buttons18
FSMTutorial - Menus & buttons

Menu - Window:

  • Window
  • Cascade
  • Tile Horizontally
  • Tile Vertically
  • Reorganise

Menu - ? :

  • Help
  • About
fsm tutorial basic navigation
FSMTutorial - Basic navigation

Adding a state:

  • In insert mode press the left mouse key move the mouse one cm and release.

Edit a state properties:

  • Double click the left mouse key over the state.
  • (Sometimes it needs first to select the state with a single click).

Move states:

  • Select, Drag & drop.
fsm tutorial basic navigation20
FSMTutorial - Basic navigation

Adding a transition:

  • Select the source state with a click (left mouse key).
  • Drag the central connection point (small black square) and drop over the destination state.

Edit a transition properties:

  • Double click the left mouse key over the transition text.
  • (Sometimes it needs first to select the transition with a single click).

Move transition text:

  • Select, Drag & drop.
fsm tutorial basic navigation21
FSMTutorial - Basic navigation

Modifying transition lines:

  • Its possible to convert in curve lines with the mouse.
  • A double click over a line convert it in a straight line.

Change the source state for a transition:

  • Select the new source state with a click.
  • Drag the central connection point and drop over the transition.

Change the destination for a transition:

  • Select the transition with a click.
  • Drag the central connection point (if it’s empty sometimes is difficult) and drop over the destination state.
fsm tutorial command line options
FSMTutorial - Command Line options
  • This command are focused in the integration of FSM into a make file.
  • These commands override the default options.

path\FSM.exe file.fsm [/?][/C[S|P|A]][/H[L]][/W][/O<path>][/E<path>][/D+|-][/AC+|-]

/C generates default C-code /CS generates "switch case" code

/CP generates "direct pointer" code /CA generates "pointer array" code

/CH generates "hierachical switch case" code

/LS generates list

/H generates HTML /HL generates HTML with links in the same path

/W generates WMF

/O output path

/E error file output path

/D+ with debug info /D- without debug info

/AC+ ANSI comments: "/* */” /AC- not ANSI comments: "// "

/PT+ print the text boxes into the code /PT- don't print the text boxes into the code

/BF- don't use bitfields /BF+ use bitfields to save RAM

/? Help

Return: A file ("FSM_ERR.LOG"), in /Epath, with the error list, if FSM couldn't generate code.

fsm tutorial hierarchical files
FSMTutorial - Hierarchical files

Basic concepts about Hierarchical implementations :

  • Are useful to divide a problem into small sub-problems.
    • Example of a three level hierarchy:
      • The first level decides if the functionality is “disabled”, “running” or “sleep”.
      • The second level implement the “running” main lines: “On”, “Off”, “waiting inputs”, etc.
      • The third level does the basic functions. E.g: if “On” handle a intermittent output, a child-FSM of “On” can control the flashing of the output timings.
  • Are built nesting one or more child-FSM into other parent-FSM. The child-FSM is a function called into a “during” or “else” action of a parent-FSM.
  • A child-FSM file should be found into a subdirectory called like their parent. This enables the editor automatic hierarchical capabilities.
    • TaskX.fsm
    • TaskX\ProcessFuncX.fsm
    • now “ProcessFuncX.fsm” will be a child of “TaskX.fsm” if ProcessFuncX() is called from a ”during” or “else” action of TaskX().
fsm tutorial hierarchical files24
FSMTutorial - Hierarchical files

History concept:

  • A child-FSM can have a historical behaviour if only is started to its initial state on a program reset.
  • A child-FSM can have a standard behaviour if is initialized (the state index points to the initial state again) when the parent-FSM state changes.
  • A <history> remark appears into the initial state to distinguish the historical FSMs.
fsm tutorial hierarchical files25
FSMTutorial - Hierarchical files

Hierarchical transition examples:

  • The implementation of a transition is easy if the source and destination are in the same level. This means in the same diagram.
    • This hierarchy:
    • Is Implemented in two FSMs called Parent_FSM() & Child_FSM():

note: the child is standard (not historical) then on every SwitchOff()+SwitchOn() the child will start in LoadOn state again.

fsm tutorial hierarchical files26
FSMTutorial - Hierarchical files

Hierarchical transition examples:

  • If we have a transition from a parent level state to a child level state. We should use the interface function called ”Child_FSM_GoTo_LoadOff();” to implement the same behaviour.
    • This hierarchy:
    • Is Implemented in two FSMs called Parent_FSM() & Child_FSM():
fsm tutorial hierarchical files27
FSMTutorial - Hierarchical files

Hierarchical transition examples:

  • If we have a transition from a child level state to a parent level state. We should use the interface function called ”Child_FSM_IsIn_LoadOff()” to implement the same behaviour.
    • This hierarchy:
    • Is Implemented in two FSMs called Parent_FSM() & Child_FSM():
fsm tutorial hierarchical files28
FSMTutorial - Hierarchical files

Execution sequence on every call to a two level diagram

if the child-FSM is called into a “else action”:

  • Parent-state “entry action” (if it wasn’t the active state on last call).
  • Parent-state “during action”.
  • Parent-state “transition conditions” analysis in sequence.
    • If a transition condition is valid:
      • Parent-state “exit action”.
      • Parent-state “transition action” (of the accepted transition).
      • END
  • Parent-state “else action” (here is the call to the child-Fsm).
    • Child-state “entry action” (if it wasn’t the active child-state on last call).
    • Child-state “during action”.
    • Child-state “transition conditions” analysis in sequence.
      • If a transition condition is valid:
        • Child-state “exit action”.
        • Child-state “transition action” (of the accepted transition).
        • END
fsm tutorial hierarchical files29
FSMTutorial - Hierarchical files

Execution sequence on every call to a two level diagram

if the child-FSM is called into a “during action”:

  • Parent-state “entry action” (if it wasn’t the active state on last call).
  • Parent-state “during action” (here is the call to the child-Fsm).
    • Child-state “entry action” (if it wasn’t the active child-state on last call).
    • Child-state “during action”.
    • Child-state “transition conditions” analysis in sequence.
      • If a transition condition is valid:
        • Child-state “exit action”.
        • Child-state “transition action” (of the accepted transition).
        • END
  • Parent-state “transition conditions” analysis in sequence.
    • If a transition condition is valid:
      • Parent-state “exit action”.
      • Parent-state “transition action” (of the accepted transition).
      • END
  • Parent-state “else action”.