diff --git a/.gitignore b/.gitignore index 4769bab..12bb875 100644 --- a/.gitignore +++ b/.gitignore @@ -7,26 +7,41 @@ *.slxc *.autosave *.original -Module.symvers -modules.order -python/usr_code/usrcode.c -python/usr_code/usrcode.h + +.cvsignore .idea/ .tmp_versions/ gather/ matlab/slprj/ old/ + +Module.symvers +modules.order + +python/usr_code/usrcode.c +python/usr_code/usrcode.h +python/usr_code/.tags +python/usr_code/usr_code.layout python/images/ python/MXTuning/ python/old_npz/ -python/PBMotionAnalyzer/records/ +python/ShapePathAnalyser/records/ + +matlab/figures/*.eps +matlab/figures/*-eps-converted-to.pdf + +src/usrServo/usrServo.sublime-project +src/usrServo/usrServo.sublime-workspace *Doc/*.aux *Doc/*.log *Doc/*.out -*Doc/fastStageTune.pdf +*Doc/MXfastStage.pdf *Doc/*.synctex.gz *Doc/*.toc *Doc/*-eps-converted-to.pdf *Doc/*.bbl -*Doc/*.blg \ No newline at end of file +*Doc/*.blg + + + diff --git a/MXfastStageDoc/MXfastStage.tex b/MXfastStageDoc/MXfastStage.tex index d3e9872..30fa79c 100644 --- a/MXfastStageDoc/MXfastStage.tex +++ b/MXfastStageDoc/MXfastStage.tex @@ -468,7 +468,9 @@ Figures \ref{fig:mot_chirp_sim} showed similar response as the real stages (Figu \includegraphics[scale=.45]{../matlab/figures/sim_cl_DTGz.png} \includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_1.eps} +\includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_bode1.eps} \includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_2.eps} +\includegraphics[scale=.65]{../matlab/figures/sim_cl_DTGz_bode2.eps} \caption{Motor 1 sim Motor 2 sim} \label{fig:mot_chirp_sim} \end{figure} @@ -548,8 +550,7 @@ The state space controller is calculated by pole placement.\\ Following code calculates parameters for a observer controller, does a simulation and plots the results: \begin{verbatim} clear;clear global;close all; -mot=cell(2,1); -[mot{1},mot{2}]=identifyFxFyStage(7); +mot=identifyFxFyStage(7); for k =1:2 [ssc]=StateSpaceControlDesign(mot{k});sim('observer'); f=figure(); h=plot(desPos_actPos.Time,desPos_actPos.Data,'g'); @@ -558,6 +559,23 @@ for k =1:2 end \end{verbatim} + +\begin{figure}[h!] +\center + +\includegraphics[scale=.45]{../matlab/figures/sim_cl_observer.png} +\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_1.eps} +\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_bode1.eps} +\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_2.eps} +\includegraphics[scale=.65]{../matlab/figures/sim_cl_observer_bode2.eps} +\caption{Motor 1 sim Motor 2 sim} +\label{fig:mot_chirp_sim} +\end{figure} + + + + + With an additional prefilter resonance and reductions can be suppressed a bit.\\ The system was simulated with 5kHz servo loop frequency. diff --git a/MXfastStageDoc/model4.eps b/MXfastStageDoc/model4.eps new file mode 100644 index 0000000..c62080c --- /dev/null +++ b/MXfastStageDoc/model4.eps @@ -0,0 +1,380 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.6 (http://cairographics.org) +%%CreationDate: Wed Feb 6 15:12:36 2019 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 -1 427 57 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%BeginSetup +%%BeginResource: font DejaVuSans +11 dict begin +/FontType 42 def +/FontName /DejaVuSans def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 32 /space put +Encoding 40 /parenleft put +Encoding 41 /parenright put +Encoding 67 /C put +Encoding 77 /M put +Encoding 80 /P put +Encoding 86 /V put +Encoding 97 /a put +Encoding 99 /c put +Encoding 100 /d put +Encoding 101 /e put +Encoding 102 /f put +Encoding 103 /g put +Encoding 105 /i put +Encoding 108 /l put +Encoding 109 /m put +Encoding 110 /n put +Encoding 111 /o put +Encoding 113 /q put +Encoding 114 /r put +Encoding 115 /s put +Encoding 116 /t put +Encoding 117 /u put +Encoding 120 /x put +Encoding 121 /y put +/CharStrings 26 dict dup begin +/.notdef 0 def +/i 1 def +/q 2 def +/C 3 def +/m 4 def +/d 5 def +/M 6 def +/e 7 def +/a 8 def +/s 9 def +/space 10 def +/parenleft 11 def +/u 12 def +/l 13 def +/f 14 def +/o 15 def +/r 16 def +/c 17 def +/n 18 def +/t 19 def +/parenright 20 def +/V 21 def +/P 22 def +/g 23 def +/x 24 def +/y 25 def +end readonly def +/sfnts [ +<0001000000090080000300106376742000691d3900001258000001fe6670676d7134766a0000 +1458000000ab676c796646cdd12f0000009c000011bc68656164086b92ef0000150400000036 +686865610d9f07870000153c00000024686d747873fb0c9b00001560000000686c6f63610000 +d80c000015c80000006c6d617870048706710000163400000020707265703b07f10000001654 +0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec +310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f2720629000200c1 +00000179061400030007002b400e06be04b100bc020501080400460810fc3cec3231002fe4fc +ec30400b1009400950096009700905015d1333112311331523c1b8b8b8b80460fba00614e900 +00020071fe56045a047b000b001c003e401b03b90c0f09b91815b80f8c1bbd19bc1d180c0608 +1a47001212451d10fcecf4ec3232310010e4e4e4f4c4ec10c6ee304009601e801ea01ee01e04 +015d011416333236353426232206010e012322021110003332161735331123012fa79292a8a8 +9292a702733ab17ccbff00ffcb7cb13ab8b8022fcbe7e7cbcbe7e7fdae646101440108010801 +446164aaf9f6000000010073ffe3052705f000190036401a0da10eae0a951101a100ae049517 +91118c1a07190d003014101a10fcec32ec310010e4f4ecf4ec10eef6ee30b40f1b1f1b02015d +01152e0123200011100021323637150e01232000111000213216052766e782ff00fef0011001 +0082e7666aed84feadfe7a0186015386ed0562d55f5efec7fed8fed9fec75e5fd34848019f01 +670168019f470000000100ba0000071d047b0022005a4026061209180f00061d07150c871d20 +03b81bbc19100700110f0808065011080f501c18081a462310fcec32fcfcfcec11123931002f +3c3ce4f43cc4ec32111217393040133024502470249024a024a024bf24df24ff2409015d013e +013332161511231134262322061511231134262322061511231133153e01333216042945c082 +afbeb972758fa6b972778da6b9b93fb0797aab03897c76f5e2fd5c029ea19cbea4fd87029ea2 +9bbfa3fd870460ae67627c00000000020071ffe3045a06140010001c003840191ab9000e14b9 +05088c0eb801970317040008024711120b451d10fcecf4ec323231002fece4f4c4ec10c4ee30 +b6601e801ea01e03015d0111331123350e012322021110003332160114163332363534262322 +0603a2b8b83ab17ccbff00ffcb7cb1fdc7a79292a8a89292a703b6025ef9eca8646101440108 +0108014461fe15cbe7e7cbcbe7e7000100c90000061f05d5000c00bf40340311070807021101 +0208080702110302090a0901110a0a09420a070203080300af080b050908030201050a061c04 +3e0a1c00040d10fcecfcec11173931002f3cc4ec32111739304b5358071005ed071008ed0710 +08ed071005ed5922b2700e01015d405603070f080f09020a15021407130a260226072007260a +200a3407350a69027c027b07790a80028207820a90021604010b0313011b0323012c03270828 +0934013c035608590965086a097608790981018d0395019b03145d005d132109012111231101 +23011123c9012d017d017f012dc5fe7fcbfe7fc405d5fc0803f8fa2b051ffc000400fae10000 +00020071ffe3047f047b0014001b00704024001501098608880515a90105b90c01bb18b912b8 +0c8c1c1b1502081508004b02120f451c10fcecf4ecc4111239310010e4f4ece410ee10ee10f4 +ee1112393040293f1d701da01dd01df01d053f003f013f023f153f1b052c072f082f092c0a6f +006f016f026f156f1b095d71015d0115211e0133323637150e01232000111000333200072e01 +23220607047ffcb20ccdb76ac76263d06bfef4fec70129fce20107b802a5889ab90e025e5abe +c73434ae2a2c0138010a01130143feddc497b4ae9e000002007bffe3042d047b000a002500bc +4027191f0b17090e00a91706b90e1120861fba1cb923b8118c170c001703180d09080b1f0308 +14452610fcecccd4ec323211393931002fc4e4f4fcf4ec10c6ee10ee11391139123930406e30 +1d301e301f3020302130223f27401d401e401f402040214022501d501e501f50205021502250 +277027851d871e871f8720872185229027a027f0271e301e301f30203021401e401f40204021 +501e501f50205021601e601f60206021701e701f70207021801e801f80208021185d015d0122 +061514163332363d01371123350e01232226353436332135342623220607353e0133321602be +dfac816f99b9b8b83fbc88accbfdfb0102a79760b65465be5af3f00233667b6273d9b4294cfd +81aa6661c1a2bdc0127f8b2e2eaa2727fc000001006fffe303c7047b002700e7403c0d0c020e +0b531f1e080902070a531f1f1e420a0b1e1f041500860189041486158918b91104b925b8118c +281e0a0b1f1b0700521b080e07081422452810fcc4ecd4ece4111239393939310010e4f4ec10 +fef5ee10f5ee121739304b535807100eed111739070eed1117395922b2002701015d406d1c0a +1c0b1c0c2e092c0a2c0b2c0c3b093b0a3b0b3b0c0b200020012402280a280b2a132f142f152a +16281e281f292029212427860a860b860c860d12000000010202060a060b030c030d030e030f +03100319031a031b031c041d09272f293f295f297f2980299029a029f029185d005d7101152e +012322061514161f011e0115140623222627351e013332363534262f012e0135343633321603 +8b4ea85a898962943fc4a5f7d85ac36c66c661828c65ab40ab98e0ce66b4043fae2828545440 +49210e2a99899cb62323be353559514b50250f2495829eac1e000000000100b0fef2027b0612 +000d0037400f069800970e0d070003120600130a0e10dc4bb0135458b9000affc038594bb00f +5458b9000a00403859e432ec113939310010fcec300106021514121723260235341237027b86 +828385a0969594970612e6fe3ee7e7fe3be5eb01c6e0df01c4ec000200aeffe30458047b0013 +0014003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fcecf4 +39ec3231002fe4e432f4c4ec1112173930b46f15c01502015d13113311141633323635113311 +23350e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfba0ac +6663f003a800000100c100000179061400030022b7009702010800460410fcec31002fec3040 +0d10054005500560057005f00506015d13331123c1b8b80614f9ec000001002f000002f80614 +00130059401c0510010c08a906018700970e06bc0a02130700070905080d0f0b4c1410fc4bb0 +0a5458b9000b004038594bb00e5458b9000bffc038593cc4fc3cc4c412393931002fe432fcec +10ee321239393001b640155015a015035d01152322061d012115211123112335333534363302 +f8b0634d012ffed1b9b0b0aebd0614995068638ffc2f03d18f4ebbab00020071ffe30475047b +000b0017004a401306b91200b90cb8128c1809120f51031215451810fcecf4ec310010e4f4ec +10ee3040233f197b007b067f077f087f097f0a7f0b7b0c7f0d7f0e7f0f7f107f117b12a019f0 +1911015d012206151416333236353426273200111000232200111000027394acab9593acac93 +f00112feeef0f1feef011103dfe7c9c9e7e8c8c7e99cfec8feecfeedfec70139011301140138 +0000000100ba0000034a047b001100304014060b0700110b03870eb809bc070a060800084612 +10fcc4ec3231002fe4f4ecc4d4cc11123930b450139f1302015d012e01232206151123113315 +3e0133321617034a1f492c9ca7b9b93aba85132e1c03b41211cbbefdb20460ae666305050000 +00010071ffe303e7047b0019003f401b00860188040e860d880ab91104b917b8118c1a07120d +004814451a10fce432ec310010e4f4ec10fef4ee10f5ee30400b0f1b101b801b901ba01b0501 +5d01152e0123220615141633323637150e0123220011100021321603e74e9d50b3c6c6b3509d +4e4da55dfdfed6012d010655a20435ac2b2be3cdcde32b2baa2424013e010e0112013a230000 +000100ba00000464047b001300364019030900030e0106870e11b80cbc0a010208004e0d0908 +0b461410fcec32f4ec31002f3ce4f4c4ec1112173930b46015cf1502015d0111231134262322 +061511231133153e013332160464b87c7c95acb9b942b375c1c602a4fd5c029e9f9ebea4fd87 +0460ae6564ef00010037000002f2059e0013003840190e05080f03a9001101bc08870a0b0809 +0204000810120e461410fc3cc4fc3cc432393931002fecf43cc4ec3211393930b2af1501015d +01112115211114163b01152322263511233533110177017bfe854b73bdbdd5a28787059efec2 +8ffda0894e9a9fd202608f013e000000000100a4fef2026f0612000d001f400f079800970e07 +01000b12041308000e10dc3cf4ec113939310010fcec301333161215140207233612353402a4 +a096959596a08583830612ecfe3cdfe0fe3aebe501c5e7e701c20000000100100000056805d5 +000600b7402704110506050311020306060503110403000100021101010042030401af000604 +0302000505010710d4c4173931002fec3239304b5358071005ed071008ed071008ed071005ed +5922b2500801015d406200032a03470447055a037d038303070600070208040906150114021a +041a052a002601260229042905250620083800330133023c043c053706480045014502490449 +054706590056066602690469057a0076017602790479057506800898009706295d005d210133 +09013301024afdc6d301d901dad2fdc705d5fb1704e9fa2b000200c90000048d05d500080013 +003a40180195100095098112100a0802040005190d3f11001c09041410fcec32fcec11173931 +002ff4ecd4ec30400b0f151f153f155f15af1505015d01113332363534262325213204151404 +2b0111230193fe8d9a9a8dfe3801c8fb0101fefffbfeca052ffdcf92878692a6e3dbdde2fda8 +00020071fe56045a047b000b0028004a4023190c1d0912861316b90f03b92623b827bc09b90f +bd1a1d261900080c4706121220452910fcc4ecf4ec323231002fc4e4ece4f4c4ec10fed5ee11 +12393930b6602a802aa02a03015d01342623220615141633323617100221222627351e013332 +363d010e0123220211101233321617353303a2a59594a5a59495a5b8fefefa61ac51519e52b5 +b439b27ccefcfcce7cb239b8023dc8dcdcc8c7dcdcebfee2fee91d1eb32c2abdbf5b6362013a +01030104013a6263aa000001003b000004790460000b01434046051106070604110304070706 +0411050401020103110202010b110001000a11090a0101000a110b0a0708070911080807420a +070401040800bf05020a0704010408000208060c10d44bb00a544bb00f545b4bb010545b4bb0 +11545b58b90006004038594bb0145458b90006ffc03859c4d4c411173931002f3cec32173930 +4b5358071005ed071008ed071008ed071005ed071005ed071008ed071008ed071005ed592201 +40980a04040a1a04150a260a3d04310a55045707580a660a76017a047607740a8d04820a9904 +9f049707920a900aa601a904af04a507a30aa00a1c0a03040505090a0b1a03150515091a0b29 +03260525092a0b200d3a013903370534073609390b300d4903460545094a0b400d5900560159 +02590357055606590756085609590b500d6f0d78017f0d9b019407ab01a407b00dcf0ddf0dff +0d2f5d005d09022309012309013309010464fe6b01aad9febafebad901b3fe72d90129012904 +60fddffdc101b8fe48024a0216fe71018f000001003dfe56047f0460000f018b404307080209 +11000f0a110b0a00000f0e110f000f0d110c0d00000f0d110e0d0a0b0a0c110b0b0a420d0b09 +10000b058703bd0e0bbc100e0d0c0a09060300080f040f0b1010d44bb00a544bb008545b58b9 +000b004038594bb0145458b9000bffc03859c4c4111739310010e432f4ec113911391239304b +5358071005ed071008ed071008ed071005ed071008ed0705ed173259220140f0060005080609 +030d160a170d100d230d350d490a4f0a4e0d5a095a0a6a0a870d800d930d120a000a09060b05 +0c0b0e0b0f1701150210041005170a140b140c1a0e1a0f270024012402200420052908280925 +0a240b240c270d2a0e2a0f201137003501350230043005380a360b360c380d390e390f301141 +00400140024003400440054006400740084209450a470d490e490f4011540051015102550350 +0450055606550756085709570a550b550c590e590f501166016602680a690e690f60117b0878 +0e780f89008a09850b850c890d890e890f9909950b950c9a0e9a0fa40ba40cab0eab0fb011cf +11df11ff11655d005d050e012b01353332363f01013309013302934e947c936c4c543321fe3b +c3015e015ec368c87a9a488654044efc94036c000000013500b800cb00cb00c100aa009c01a6 +00b800660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa +008700cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114013907060400 +044e04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c50212 +00c9001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb +008f00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d3 +00f000ba018300d5009803040248009e01d500c100cb00f600830354027f00000333026600d3 +00c700a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d +032d05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec0693 +00a000d3035c037103db0185042304a80448008f0139011401390360008f05d5019a06140723 +06660179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b0000 +00b4025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f +009c009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f60083 +0354063705f6008f009c04e10266008f018d02f600cd03440029006604ee0073000014000096 +0000b707060504030201002c2010b002254964b040515820c859212d2cb002254964b0405158 +20c859212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e1 +20b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d +2cb002254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b005 +25b005254960b0206368208a108a233a8a10653a2d000001000000025999f8cf62a25f0f3cf5 +001f080000000000d184f71800000000d184f718f7d6fc4c0e5909dc00000008000000010000 +000000010000076dfe1d00000efef7d6fa510e5900010000000000000000000000000000001a +04cd0066023900c1051400710596007307cb00ba0514007106e700c904ec007104e7007b042b +006f028b0000031f00b0051200ae023900c102d1002f04e50071034a00ba04660071051200ba +03230037031f00a40579001004d300c90514007104bc003b04bc003d00000000000000440000 +009400000134000001cc000002900000032800000424000004f8000006240000078400000784 +000007f400000878000008b40000094c000009f000000a6000000af800000b7000000bec0000 +0c4400000d2400000da400000e6c00000ff0000011bc00010000001a0354002b0068000c0002 +00100099000800000415021600080004b8028040fffbfe03fa1403f92503f83203f79603f60e +03f5fe03f4fe03f32503f20e03f19603f02503ef8a4105effe03ee9603ed9603ecfa03ebfa03 +eafe03e93a03e84203e7fe03e63203e5e45305e59603e48a4105e45303e3e22f05e3fa03e22f +03e1fe03e0fe03df3203de1403dd9603dcfe03db1203da7d03d9bb03d8fe03d68a4105d67d03 +d5d44705d57d03d44703d3d21b05d3fe03d21b03d1fe03d0fe03cffe03cefe03cd9603cccb1e +05ccfe03cb1e03ca3203c9fe03c6851105c61c03c51603c4fe03c3fe03c2fe03c1fe03c0fe03 +bffe03befe03bdfe03bcfe03bbfe03ba1103b9862505b9fe03b8b7bb05b8fe03b7b65d05b7bb +03b78004b6b52505b65d40ff03b64004b52503b4fe03b39603b2fe03b1fe03b0fe03affe03ae +6403ad0e03acab2505ac6403abaa1205ab2503aa1203a98a4105a9fa03a8fe03a7fe03a6fe03 +a51203a4fe03a3a20e05a33203a20e03a16403a08a4105a096039ffe039e9d0c059efe039d0c +039c9b19059c64039b9a10059b19039a1003990a0398fe0397960d0597fe03960d03958a4105 +95960394930e05942803930e0392fa039190bb0591fe03908f5d0590bb039080048f8e25058f +5d038f40048e25038dfe038c8b2e058cfe038b2e038a8625058a410389880b05891403880b03 +878625058764038685110586250385110384fe038382110583fe0382110381fe0380fe037ffe +0340ff7e7d7d057efe037d7d037c64037b5415057b25037afe0379fe03780e03770c03760a03 +75fe0374fa0373fa0372fa0371fa0370fe036ffe036efe036c21036bfe036a1142056a530369 +fe03687d036711420566fe0365fe0364fe0363fe0362fe03613a0360fa035e0c035dfe035bfe +035afe0359580a0559fa03580a035716190557320356fe035554150555420354150353011005 +531803521403514a130551fe03500b034ffe034e4d10054efe034d10034cfe034b4a13054bfe +034a4910054a1303491d0d05491003480d0347fe0346960345960344fe0343022d0543fa0342 +bb03414b0340fe033ffe033e3d12053e14033d3c0f053d12033c3b0d053c40ff0f033b0d033a +fe0339fe033837140538fa033736100537140336350b05361003350b03341e03330d0332310b +0532fe03310b03302f0b05300d032f0b032e2d09052e10032d09032c32032b2a25052b64032a +2912052a25032912032827250528410327250326250b05260f03250b0324fe0323fe03220f03 +210110052112032064031ffa031e1d0d051e64031d0d031c1142051cfe031bfa031a42031911 +420519fe031864031716190517fe031601100516190315fe0314fe0313fe031211420512fe03 +11022d05114203107d030f64030efe030d0c16050dfe030c0110050c16030bfe030a100309fe +0308022d0508fe030714030664030401100504fe03401503022d0503fe0302011005022d0301 +100300fe0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +/f-0-0 currentdict end definefont pop +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 427 57 +%%EndPageSetup +q 0 -1 427 58 rectclip q +0 g +1.160404 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 56.692913 cm +85.816 0.582 59.762 55.531 re S Q +0.79937 w +q 1 0 0 -1 0 56.692913 cm +40.148 10.883 m 85.516 10.883 l S Q +79.09 47.888 m 78.883 47.115 l 83.746 45.81 l 78.883 44.509 l 79.09 43.736 + l 85.391 45.427 l 85.785 45.533 85.785 46.091 85.391 46.197 c h +79.09 47.888 m f* +BT +12 0 0 12 -1.130859 42.501139 Tm +/f-0-0 1 Tf +(iqCmd)Tj +ET +q 1 0 0 -1 0 56.692913 cm +145.422 8.34 m 190.789 8.34 l S Q +184.363 50.431 m 184.156 49.658 l 189.02 48.353 l 184.156 47.052 l 184.363 + 46.279 l 190.664 47.97 l 191.059 48.076 191.059 48.634 190.664 48.74 c +h +184.363 50.431 m f* +BT +12 0 0 12 194.155811 45.043841 Tm +/f-0-0 1 Tf +[(iqMeas \(equ)-3(als for)21(ce an)-3(d)-319(acceler)-3(ation\))]TJ +ET +q 1 0 0 -1 0 56.692913 cm +145.422 27.891 m 190.789 27.891 l S Q +184.363 30.877 m 184.156 30.103 l 189.02 28.802 l 184.156 27.498 l 184.363 + 26.724 l 190.664 28.416 l 191.059 28.521 191.059 29.08 190.664 29.185 c + h +184.363 30.877 m f* +BT +12 0 0 12 194.155811 24.326858 Tm +/f-0-0 1 Tf +[(actV)77(el)]TJ +ET +q 1 0 0 -1 0 56.692913 cm +146.16 47.445 m 191.527 47.445 l S Q +185.102 11.322 m 184.891 10.548 l 189.758 9.248 l 184.891 7.943 l 185.102 + 7.173 l 191.402 8.861 l 191.797 8.966 191.797 9.525 191.402 9.63 c h +185.102 11.322 m f* +BT +12 0 0 12 195.608154 4.957537 Tm +/f-0-0 1 Tf +[(actP)33(os)]TJ +-8.080548 2.327006 Td +[(stage)]TJ +0 -1.25 Td +[(x or y)]TJ +ET +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/matlab/bodeSamples.m b/matlab/bodeSamples.m new file mode 100644 index 0000000..9025790 --- /dev/null +++ b/matlab/bodeSamples.m @@ -0,0 +1,32 @@ + +function [fig]=bodeSamples(simData) + %f=figure(); h=plot(simData.Time,simData.Data,'g'); + %set(h(1),'color','b'); set(h(2),'color',[0 0.5 0]); + Ts=1/5000; % sampling period + t=0:Ts:simData.Time(end); + posI=interp1(simData.Time,simData.Data(:,1),t); + posO=interp1(simData.Time,simData.Data(:,2),t); + ftI=fft(posI); + ftO=fft(posO); + tf=ftO./ftI; + + L=length(t); + k=(L-1)*Ts; % fmax =1/Ts at sample (L-1)/2 (index0-base) + N=[10 220]*k; % number of relevant indexes (index0-base) + frq=(N(1):N(2))/k; + N=N+1;%index0-base -> index1-base + tfn=tf(N(1):N(2)); + + %fig=figure(); h=plot(abs(ftI)); + %fig=figure(); h=plot(abs(ftO)); + %fig=figure(); h=plot(abs(ftI(N(1):N(2)))); + fig=figure(); + ax1=subplot(2,1,1); + ax2=subplot(2,1,2); + h=plot(ax1,frq,abs(tfn)); + p=unwrap(phase(tfn))/(2*pi)*360; + h=plot(ax2,frq,p); + grid(ax1,'on');grid(ax2,'on'); + set(ax1, 'XScale', 'log'); + set(ax2, 'XScale', 'log'); +end \ No newline at end of file diff --git a/matlab/documentFunctions.m b/matlab/documentFunctions.m index 67c92a5..6c53f84 100644 --- a/matlab/documentFunctions.m +++ b/matlab/documentFunctions.m @@ -1,39 +1,68 @@ -baseDir='/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/MXTuningDoc/'; -%plots bode of desPos_actPos -[mot1,mot2]=identifyFxFyStage(); -close all; -[pb]=simFxFyStage(mot2);sim('stage_closed_loop'); -t=desPos_actPos.Time; -u=desPos_actPos.Data(:,1); -y=desPos_actPos.Data(:,2); -figure(1); -clf; -plot(t,u,'b');hold on; -plot(t,y,'color',[0 .5 0]); -grid on;ylim([-4 4]); -grid on;ylim([-2 2]); -saveas(gca, baseDir+"m2_sim_pb.eps",'epsc'); -saveas(gca, baseDir+"m1_sim_ss.eps",'epsc'); -saveas(gca, baseDir+"m2_sim_ss.eps",'epsc'); -saveas(gca, baseDir+"m1_sim_ss_pref.eps",'epsc'); -saveas(gca, baseDir+"m2_sim_ss_pref.eps",'epsc'); +baseDir='/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/matlab/figures'; + +clear;clear global; +close all;disp('löoad identification data...'); +mot=identifyFxFyStage(7); + +close all;disp('simulate stage closed loop...'); +for k =1:2 + [pb]=simFxFyStage(mot{k});sim('stage_closed_loop'); + f=figure(); h=plot(desPos_actPos.Time,desPos_actPos.Data,'g'); + set(h(1),'color','b'); set(h(2),'color',[0 0.5 0]); + print(f,sprintf('figures/sim_cl_DTGz_%d',mot{k}.id),'-depsc'); + f=bodeSamples(desPos_actPos); + print(f,sprintf('figures/sim_cl_DTGz_bode%d',mot{k}.id),'-depsc'); +end + +close all;disp('simulate observer...'); +for k =1:2 + [ssc]=StateSpaceControlDesign(mot{k});sim('observer'); + f=figure(); h=plot(desPos_actPos.Time,desPos_actPos.Data,'g'); + set(h(1),'color','b'); set(h(2),'color',[0 0.5 0]); + print(f,sprintf('figures/sim_cl_observer_%d',mot{k}.id),'-depsc'); + f=bodeSamples(desPos_actPos); + print(f,sprintf('figures/sim_cl_observer_bode%d',mot{k}.id),'-depsc'); +end +disp('document figure generation done');close all; + +function SCRATCH() + %plots bode of desPos_actPos + [mot1,mot2]=identifyFxFyStage(); + close all; + [pb]=simFxFyStage(mot2);sim('stage_closed_loop'); -saveas(gca, baseDir+"m2_mdl_bode.eps",'epsc'); + t=desPos_actPos.Time; + u=desPos_actPos.Data(:,1); + y=desPos_actPos.Data(:,2); + figure(1); + clf; + plot(t,u,'b');hold on; + plot(t,y,'color',[0 .5 0]); + grid on;ylim([-4 4]); + grid on;ylim([-2 2]); + saveas(gca, baseDir+"m2_sim_pb.eps",'epsc'); + saveas(gca, baseDir+"m1_sim_ss.eps",'epsc'); + saveas(gca, baseDir+"m2_sim_ss.eps",'epsc'); + saveas(gca, baseDir+"m1_sim_ss_pref.eps",'epsc'); + saveas(gca, baseDir+"m2_sim_ss_pref.eps",'epsc'); -minFrq=1;maxFrq=1000; -tSec=t(length(t)); -f=(1:length(t))/tSec; -fu=fft(u); -fy=fft(y); -ph=phase(fy./fu) -mag=abs(fy)./abs(fu); -magDb=20*log10(mag); -figure(2); -subplot(2,1,1); -semilogx(f,magDb); -subplot(2,1,2); -semilogx(f,ph); -grid on; + saveas(gca, baseDir+"m2_mdl_bode.eps",'epsc'); + + minFrq=1;maxFrq=1000; + tSec=t(length(t)); + f=(1:length(t))/tSec; + fu=fft(u); + fy=fft(y); + ph=phase(fy./fu) + mag=abs(fy)./abs(fu); + magDb=20*log10(mag); + figure(2); + subplot(2,1,1); + semilogx(f,magDb); + subplot(2,1,2); + semilogx(f,ph); + grid on; +end diff --git a/matlab/figures/sim_cl_DTGz.png b/matlab/figures/sim_cl_DTGz.png new file mode 100644 index 0000000..ead7bd6 Binary files /dev/null and b/matlab/figures/sim_cl_DTGz.png differ diff --git a/matlab/figures/sim_cl_observer.png b/matlab/figures/sim_cl_observer.png new file mode 100644 index 0000000..cf406b6 Binary files /dev/null and b/matlab/figures/sim_cl_observer.png differ diff --git a/matlab/observer.slx b/matlab/observer.slx index d998914..09eddda 100644 Binary files a/matlab/observer.slx and b/matlab/observer.slx differ diff --git a/matlab/stage_closed_loop.slx b/matlab/stage_closed_loop.slx index cc5a8b4..18da798 100644 Binary files a/matlab/stage_closed_loop.slx and b/matlab/stage_closed_loop.slx differ diff --git a/python/usr_code/usr_code.cbp b/python/usr_code/usr_code.cbp new file mode 100644 index 0000000..d72131d --- /dev/null +++ b/python/usr_code/usr_code.cbp @@ -0,0 +1,43 @@ + + + + + +