...
In the following we will describe some basic elements using the famous ABRO example:
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart StateTransition {
initial state A
--> B;
state B
--> C;
state C
--> A immediate;
} |
|
...
Variable
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart TriggerEffect {
input int var1;
output bool var2;
initial state A
--> B with var1 == 3 / var2 = true;
state B;
} |
|
...
Super State
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart SuperState {
initial state A
--> B;
state B {
initial state B1
--> B2;
state B2;
};
} |
|
...
Super State: Final States & Termination Transition
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart FinalStateTermination {
initial state A
--> B;
state B {
initial state B1
--> B2;
final state B2;
}
>-> C;
state C;
} |
|
...
Super State: Weak Abort Transition
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| 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 |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart CountDelay {
input bool var1;
output bool var2;
initial state A
--> B with 4 var1;
state B
--> A with var1;
} |
|
...
Array
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart Array {
int myArray[10][2];
initial state init
--> done with myArray[1][0] == 1 / myArray[2][1] = 2;
final state done;
} |
|
...
Signal
Column |
---|
|
Code Block |
---|
language | sct |
---|
linenumbers | true |
---|
| scchart Signal {
input signal i;
output signal o
initial state init
--> done with i / o;
final state done;
} |
|
...