|
| 1 | +digraph G { |
| 2 | +node [shape=box width=2 height=1 fontname=arial fontsize=14] |
| 3 | +graph [splines=ortho ranksep=1.5 nodesep=1.2] |
| 4 | +edge [fontname=arial fontsize=14] |
| 5 | +layout=dot; overlap=false; newrank=true; compound=true |
| 6 | + |
| 7 | +disturbc [shape=none width=0 label=""] |
| 8 | +disturbp [shape=none width=0 label=""] |
| 9 | +inputc [shape=none label="" height=0] |
| 10 | +outputc [shape=none label="" height=0] |
| 11 | +subgraph cluster_controller { |
| 12 | + label="Controller (C)" fontname=arial fontsize=24 margin=10 |
| 13 | + controller [shape=ellipse style=dotted label="Controller\n algorithm\n(CA)"] |
| 14 | + model [shape=ellipse style=dotted label="Process\nmodel\n(PM)"] |
| 15 | + } |
| 16 | +subgraph cluster_process { |
| 17 | + label="Controlled process (P)" fontname=arial fontsize=24 margin=10 |
| 18 | + controlled [label="Process\nbehaviour\n(PB)" style=dotted shape=ellipse] |
| 19 | + statep [shape=ellipse style=dotted label="Process\nstate\n(PS)"] |
| 20 | + } |
| 21 | +subgraph cluster_cpath { |
| 22 | + label="Action path (AP)" fontname=arial fontsize=14 margin=10 color=grey |
| 23 | + action [shape=ellipse style=dotted label="Control\naction\n(A)"] |
| 24 | + } |
| 25 | +subgraph cluster_fpath { |
| 26 | + label="Feedback path (AP)" fontname=arial fontsize=14 margin=10 color=grey |
| 27 | + feedback [shape=ellipse style=dotted label="Feedback\n(F)\n "] |
| 28 | + } |
| 29 | +inputp [shape=none label="" height=0] |
| 30 | +outputp [shape=none label="" height=0] |
| 31 | + |
| 32 | +{ rank=same; disturbc; controller; model; } |
| 33 | +{ rank=same; disturbp; controlled; statep; } |
| 34 | + |
| 35 | +inputc -> controller [taillabel="\nController inputs \n(CI)" lhead=cluster_controller] |
| 36 | +outputc -> model [dir=back taillabel="\nController outputs \n(CO)" lhead=cluster_controller] |
| 37 | +disturbc -> controller[headlabel="Controller\ndisturbance \n(CD)" lhead=cluster_controller] |
| 38 | +controller -> action [taillabel="\nIssued action \n(iA) " lhead=cluster_cpath ltail=cluster_controller] |
| 39 | +action -> controlled [headlabel="\nReceived action \n(rA)\n\n" ltail=cluster_cpath lhead=cluster_process] |
| 40 | +model -> feedback [dir=back taillabel="\nReceived feedback \n(rF)" ltail=cluster_controller lhead=cluster_fpath] |
| 41 | +feedback -> statep [dir=back headlabel="Issued feedback \n(iF) \n\n" ltail=cluster_fpath lhead=cluster_process] |
| 42 | +disturbp -> controlled [headlabel="Process\ndisturbance \n(PD)" lhead=cluster_process] |
| 43 | +statep -> inputp [dir=back taillabel="\nProcess \ninput(s)\n(PI)" ltail=cluster_process] |
| 44 | +controlled -> outputp [taillabel="\nProcess \noutputs\n (PO)" ltail=cluster_process] |
| 45 | +controller -> model [dir=both arrowhead=open arrowtail=open style=dotted] |
| 46 | +controlled -> statep [dir=both arrowhead=open arrowtail=open style=dotted] |
| 47 | +} |
0 commit comments