.PS # https://tex.stackexchange.com/questions/575592/how-to-create-a-controls-system-diagram gen_init linewid = linewid*0.8 circlerad = 0.35/2 bw = boxwid/2 bh = boxht/2 Observer: [ define(`thickarrow',`arrow thick 3 wid 7bp__') define(`thickline',`line thick 3') fillval = 0.6 boxwid = 0.3 boxht = 0.4 circlerad = 0.1 {"$r$" above ljust} R: arrow S: circle fill {"$-$" below ljust at S.s; "$+$" above rjust at S.w+(2bp__,0)} { OLP: box invis fill 0.9 wid 3.1 ht 1.4 with .nw at Here+(0.3,boxht*5/4) "\sf plant" at OLP.sw above ljust } U: arrow right 0.4 {"$u$" at last arrow+(2bp__,0) above } Bp: box fill "$B$" thickarrow right 0.4 Sp: circle fill {"$\;+$" below ljust at Sp.s; "$+$" above rjust at Sp.w+(2bp__,2bp__)} thickarrow right 0.4 {"`$\dot{\mathbf x}$'" at last arrow + (0,7bp__)} Ip: box fill "$I/s$" thickarrow right 1 {"$\mathbf x$" at last arrow + (0,7bp__) } Cp: box fill "$C$" # print Cp.e.x - Bp.w.x + 0.2 thickline right 0.4 Yp: thickarrow {"$\mathbf y$" at last arrow + (0,7bp__) } Ap: box fill "$A$" with .n at Ip.s+(0,-boxht/2) thickarrow <- from Ap.e right 0.4 then up Ip.y-Ap.y thickarrow from Ap.w to (Sp,Ap) then to Sp.s # print OLP.n.y-Ap.s.y+0.1 # K: box fill "$K$" at Ap + (0,-boxht*3/2) arrow from K.w to (S,K) then to S.s {OBS: box invis fill 0.9 wid 4.3 ht 1.8 with .nw at (S.w,K.s)-(0.1,0.1) "\sf observer" at OBS.sw ljust above } Io: box fill "$I/s$" at K + (0,-boxht*3/2) thickarrow <- from Io.w left 0.4 {"`$\dot{\hat{\mathbf x}}$'" at last arrow + (0,7bp__)} Sxo: circle fill {"$\;+$" below ljust at Sxo.s; "$+$" above rjust at Sxo.w+(2bp__,2bp__)} thickarrow <- left 0.4 SLo: circle fill {"$\;+$" below ljust at SLo.s; "$+$" above rjust at SLo.w+(2bp__,2bp__)} thickarrow <- left 0.4 Bo: box fill "$B$" arrow from 1/4 between U.start and U.end up boxht \ then left 2*boxht then down Bp.y-Bo.y+boxht then to Bo.w Ao: box fill "$A$" with .n at Io.s+(0,-boxht/2) thickline from Io.e right 0.4 {thickarrow <-> from K.e to (Here,K.e) then to (Here,Ao) then to Ao.e thickarrow from Ao.w to (Sxo,Ao.w) then to Sxo.s } Xhat: Here Co: box fill "$C$" at (Cp,Here) thickarrow right 0.4 {"$\hat{\mathbf y}$" at last arrow + (0,7bp__) } { thickarrow from Xhat to Co.w } {"$\hat{\mathbf x}$" at last arrow + (0,7bp__) } Syo: circle fill {"$\;+$" above ljust at Syo.n; "$-$" below rjust at Syo.w+(2bp__,-2bp__)} thickarrow <- from Syo.n to (Syo,Cp) Lo: box fill "$L$" with .n at Ao.s+(0,-boxht/2) # print Io.n.y+0.1 - (Lo.s.y-0.1) thickarrow from Syo.s down Syo.s.y-Lo.y then to Lo.e thickarrow from Lo.w to (SLo,Lo.w) then to SLo.s ]# with .nw at last [].sw+(0,-0.3) # "(b) Single-input plant with feedback from a full-order observer" \ # below ljust at Observer.sw+(0,-5pt__) .PE