summaryrefslogtreecommitdiff
path: root/src/emc/motion/homing.dot
blob: 48af4f8670a2f10e33f18f52c647f66f8de35fad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# dot -Tpng homing.dot > homing.png
# dot -Txlib homing.dot

digraph finite_state_machine {

        node [shape = doublecircle]; IDLE FINISHED
        node [shape = circle];
        rankdir=LR;
        START -> IDLE [ label = "errors" ];
        START -> UNLOCK [ label = "unlock needed" ];
        START -> UNLOCK_WAIT [ label = "unlock not needed" ];
        UNLOCK -> UNLOCK_WAIT
        UNLOCK_WAIT -> SET_SWITCH_POSITION [ label = "searchvel 0 latchvel 0" ];
        UNLOCK_WAIT -> INDEX_ONLY_START [ label = "searchvel 0 latchvel !0 useindex" ];
        UNLOCK_WAIT -> INITIAL_SEARCH_START [ label = "searchvel !0 latchvel !0" ];
        INITIAL_BACKOFF_START -> INITIAL_BACKOFF_WAIT [ label = "delay times out" ];
        INITIAL_BACKOFF_WAIT -> INITIAL_SEARCH_START [ label = "!switch" ];
        INITIAL_SEARCH_START -> INITIAL_BACKOFF_START [ label = "switch" ];
        INITIAL_SEARCH_START -> INITIAL_SEARCH_WAIT [ label = "!switch" ];
        INITIAL_SEARCH_WAIT -> SET_COARSE_POSITION [ label = "switch" ];
        SET_COARSE_POSITION -> FINAL_BACKOFF_START [ label = "search/latch opposite" ];
        SET_COARSE_POSITION -> FALL_SEARCH_START [ label = "search/latch same sign" ];
        FINAL_BACKOFF_START -> FINAL_BACKOFF_WAIT [ label = "switch" ];
        FINAL_BACKOFF_WAIT -> RISE_SEARCH_START [ label = "!switch" ];
        RISE_SEARCH_START -> RISE_SEARCH_WAIT [ label = "!switch" ];
        RISE_SEARCH_WAIT -> INDEX_SEARCH_START [ label = "switch & index" ];
        RISE_SEARCH_WAIT -> SET_SWITCH_POSITION [ label = "switch & !index" ];
        FALL_SEARCH_START -> FALL_SEARCH_WAIT [ label = "switch" ];
        FALL_SEARCH_WAIT -> INDEX_SEARCH_START [ label = "!switch & index" ];
        FALL_SEARCH_WAIT -> SET_SWITCH_POSITION [ label = "!switch & !index" ];
        SET_SWITCH_POSITION -> FINAL_MOVE_START
        INDEX_ONLY_START -> INDEX_SEARCH_WAIT
        INDEX_SEARCH_START -> INDEX_SEARCH_WAIT
        INDEX_SEARCH_WAIT -> SET_INDEX_POSITION [ label = "index found" ];
        SET_INDEX_POSITION -> FINAL_MOVE_START
        FINAL_MOVE_START -> FINAL_MOVE_WAIT
        FINAL_MOVE_WAIT -> LOCK [ label = "in position" ];
        LOCK -> LOCK_WAIT
        LOCK_WAIT -> FINISHED

        FINISHED -> IDLE
        IDLE -> START 
}