Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Activated SCCharts code highlighting

...

In the following we will describe some basic elements using the famous ABRO example:

Column
width50%
Code Block
languagesct
linenumberstrue
scchart ABRO {
  input bool A;
  input bool B;
  input bool R;
  output bool O = false;
  region Main:
  initial state ABO {
    initial state WaitAB {
      region HandleA:
      initial state WA
      --> DA with A;
      final state DA;
      region HandleB:
      initial state WB
      --> DB with B;
      final state DB;
    }
    >-> Done with / O = true;
    state Done;
  }
  o-> ABO with R;
}            

...

SCChart, Initial State, State, Transition and Immediate Transition

Column
width50%
Code Block
languagesct
linenumberstrue
 scchart StateTransition {
  initial state A
  --> B;
  state B
  --> C;
  state C
  --> A immediate;
}

...

Variable

Column
width50%
Code Block
languagesct
linenumberstrue
scchart Variable {
  int var1;
  bool var2;
  int var3 = 3;
  bool var4 = false;
  input int var5;
  output float var6;
  input output bool var7;
  initial state A
  --> B;
  state B;
}

...

Transition: Trigger & Effect

Column
width50%
Code Block
languagesct
linenumberstrue
scchart TriggerEffect {
  input int var1;
  output bool var2;
  initial state A
  --> B with var1 == 3 / var2 = true;
  state B;
}

...

Super State

Column
width50%
Code Block
languagesct
linenumberstrue
scchart SuperState {
  initial state A
  --> B;
  state B {
    initial state B1
    --> B2;
    state B2;
  };
}

...

Super State: Final States & Termination Transition

Column
width50%
Code Block
languagesct
linenumberstrue
scchart FinalStateTermination {
  initial state A
  --> B;
  state B {
    initial state B1
    --> B2;
    final state B2;
  }
  >-> C;
  state C;
}

...

Super State: Weak Abort Transition

Column
width50%
Code Block
languagesct
linenumberstrue
scchart WeakAbort {
  input bool W;
  initial state A
  --> B;
  state B {
    initial state B1
    --> B2;
    state B2;
  }
  --> C with W;
  state C;
}

...

Super State: Strong Abort Transition

Column
width50%
Code Block
languagesct
linenumberstrue
scchart StrongAbort {
  input bool S;
  initial state A
  --> B;
  state B {
    initial state B1
    --> B2;
    state B2;
  }
  o-> C with S;
  
  state C;
}

...

Concurrent Regions (inside a Super State)

Column
width50%
Code Block
languagesct
linenumberstrue
scchart Regions {
  input bool S;
  initial state A
  --> B;
  state B {
    region Region1 :
    initial state B1
    --> B2;
    state B2; region Region2 :
    initial state B3;
  };
}

...

Entry Action, During Action, Exit Action

Column
width50%
Code Block
languagesct
linenumberstrue
scchart Actions {
  input bool var1;
  output bool var2;
  initial state A
  --> B;
  state B {
    entry var1 / var2 = true;
    during var1 / var2 = true;
    immediate during var1 / var2 = true;
    exit var1 / var2 = true;
    initial state B1
    --> B2;
    state B2;
  };
}

...

Shallow History Transition

Column
width50%
Code Block
languagesct
linenumberstrue
scchart HistoryShallow {
  input bool var1;
  output bool var2;
  initial state A
  --> B shallow history with var1;
  state B {
    initial state B1
    --> B2;
    state B2;
  }
  --> A with var1;
}

...

Deep History Transition

Column
width50%
Code Block
languagesct
linenumberstrue
scchart HistoryDeep {
  input bool var1;
  output bool var2;
  initial state A
  --> B history with var1;
  state B {
    initial state B1
    --> B2;
    state B2;
  }
  --> A with var1;
}

...

Deferred Transition

Column
width50%
Code Block
languagesct
linenumberstrue
scchart Deferred {
  input bool var1;
  output bool var2;
  initial state A
  --> B deferred with var1;
  state B {
    entry var1 / var2 = true;
  }
  --> A with var1;
}

...

Transition with Count Delay

Column
width50%
Code Block
languagesct
linenumberstrue
scchart CountDelay {
  input bool var1;
  output bool var2;
  initial state A
  --> B with 4 var1;
  state B
  --> A with var1;
}

...

Array

Column
width50%
Code Block
languagesct
linenumberstrue
scchart Array {
  int myArray[10][2];
    initial state init
  --> done with myArray[1][0] == 1 / myArray[2][1] = 2;
  final state done;
} 

...

Signal

Column
width50%
Code Block
languagesct
linenumberstrue
scchart Signal {
  input signal i;
  output signal o
    initial state init
  --> done with i / o;
  final state done;
}  

...