From 966134a06dadb78df0d6008b9a3d6eab0927615f Mon Sep 17 00:00:00 2001 From: Thierry Zamofing Date: Tue, 26 Feb 2019 11:35:35 +0100 Subject: [PATCH] wip --- MXfastStageDoc/MXfastStage.tex | 22 +- MXfastStageDoc/model.svg | 679 +++++++++++++++++- MXfastStageDoc/model5.eps | 500 +++++++++++++ matlab/DeltaTauParam.m | 26 +- matlab/DeltaTauSim.slx | Bin 0 -> 39781 bytes matlab/sample.slx | Bin 26987 -> 37519 bytes python/ShapePathAnalyser/ShapePathAnalyser.py | 1 + python/helicalscan.py | 74 +- python/shapepath.py | 3 +- 9 files changed, 1264 insertions(+), 41 deletions(-) create mode 100644 MXfastStageDoc/model5.eps create mode 100644 matlab/DeltaTauSim.slx diff --git a/MXfastStageDoc/MXfastStage.tex b/MXfastStageDoc/MXfastStage.tex index cbf8653..3c5ab66 100644 --- a/MXfastStageDoc/MXfastStage.tex +++ b/MXfastStageDoc/MXfastStage.tex @@ -787,12 +787,22 @@ Motor[1].Ctrl =UserAlgo.ServoCtrlAddr[1] The state space controller assumes that the system is observable and controlable. The bode plot shows a flat amplitude at low frequencies, which makes the feeling, that the system is observable and controlable. But in fact the reason of that flat amplitude is friction (section \ref{sec:friction}). The viscode damping is negligable.\\ This results to the fact that the stage consists of really 2 integrators and behaves without friction roughly like $F=m \cdot \ddot{x}$. But an integrator $\frac{1}{s}$ is neighter observable nor controlable. Therefore we have to check, how to implement an optimal controller for such a system.\\ -A controller consists in a feed forward and a feed back transfer function. -\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,colbacktitle=red!50,coltitle=black,title=TODO] -Assume a plant consists of a integrator $\frac{1}{s}$ the overall transfer functions y/u and y/e are: ... Setting H(s)=s results in a overall transfer function of y/u=... and y/e=... .\\ -\end{tcolorbox} -Simulating a single integrator plant in MATLAB works. But with 2 integrators the system is unstable because of the two derivate elements. With a discrete differentiator it becomes stable again. In fact a derivate element is a very critical element.\\ + +A controller consists of a feed forward H(s) and a feed back G(s) path. + + +\begin{figure}[h!] +\center +\includegraphics[scale=.9]{model5.eps} +\caption{$1/s^2$ plant} +\end{figure} + + +Assume a plant consists of a integrator $\frac{1}{s}$ the overall transfer functions are $\frac{y}{u}=\frac{\frac{H}{s}+\frac{G}{s}}{1+\frac{G}{s}}=\frac{H+G}{s+G}$ and $\frac{y}{e}=\frac{\frac{G}{s}}{1+\frac{G}{s}}=\frac{G}{s+G}$. Setting H(s)=s and G(s)=k results in a overall transfer function of $\frac{y}{u}=\frac{s+G}{s+G}=1$ and $\frac{y}{e}=\frac{k}{s+k}$. So the output follows the input and k defines how fast errors will be compensated.\\ + + +Simulating a single integrator plant in MATLAB works. But with 2 integrators the system is unstable because of the two derivate elements. With a discrete differentiator it becomes stable again. In fact a derivate element is a very critical element, because it can create instability and adds a lot of noise. But in this case it is acceptable, because is acts on the trajectory and not on the feedback loop. The only thing that has to be granted is that the trajectory is twice differentiable. This is the case with limited jirk or with the pvt motion. A step response should be avoided and not used to tweak the parameters.\\ \includegraphics[scale=.45]{FF_FB_ctrl.png} The optimal parameters for a pure feed forward systems are calculated @@ -815,7 +825,7 @@ k=(11.84 \ccdot 2 \ccdot \pi)^2\\ To correct errors, posErrFB is increased. But in a discrete system, the regulation becomes instable, because the actPos always lags the desPos for one sample. To avoid instability, a fiter can attenuate this problem.\\ The Standard Delta Tau controller (figure \ref{fig:deltatau_std_ctrl}), shows avery similar feed forward and feedback loop structure with additional filters. So after all the measurements, we can calculate the optimal Kfff and Kaff values. -Kp and Ki values will attenuate the errors. Kvff=Kvfb makes the system stable at hither Kp values, but setting the filter B seems to be more appropriate.\\ +Kp and Ki values will attenuate the errors. Kvff=Kvfb makes the system stable at higher Kp values, but setting the filter B seems to be more appropriate.\\ diff --git a/MXfastStageDoc/model.svg b/MXfastStageDoc/model.svg index 8c181e7..9be858c 100644 --- a/MXfastStageDoc/model.svg +++ b/MXfastStageDoc/model.svg @@ -476,6 +476,279 @@ d="M 0.25977,0 0,0.96484 6.08594,2.5957 0,4.22656 0.25977,5.19141 8.14453,3.07813 a 0.50005,0.50005 0 0 0 0,-0.96485 L 0.25977,0 Z" style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x or y + + + + G1(s) + H1(s) + + + + 1/s + 1/s + + + + + + + x + x + x + e2 + u2 + .. + . + + + - + + + + + H2(s) + + G2(s) + + + + + + + - + + + + + + e1 + u1 + diff --git a/MXfastStageDoc/model5.eps b/MXfastStageDoc/model5.eps new file mode 100644 index 0000000..3fbcf50 --- /dev/null +++ b/MXfastStageDoc/model5.eps @@ -0,0 +1,500 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.6 (http://cairographics.org) +%%CreationDate: Tue Feb 26 08:58:51 2019 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 260 287 596 398 +%%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 40 /parenleft put +Encoding 41 /parenright put +Encoding 43 /plus put +Encoding 45 /hyphen put +Encoding 47 /slash put +Encoding 49 /one put +Encoding 50 /two put +Encoding 71 /G put +Encoding 72 /H put +Encoding 101 /e put +Encoding 115 /s put +Encoding 117 /u put +Encoding 120 /x put +/CharStrings 14 dict dup begin +/.notdef 0 def +/G 1 def +/one 2 def +/parenleft 3 def +/s 4 def +/parenright 5 def +/H 6 def +/slash 7 def +/x 8 def +/e 9 def +/two 10 def +/u 11 def +/plus 12 def +/hyphen 13 def +end readonly def +/sfnts [ +<0001000000090080000300106376742000691d3900000924000001fe6670676d7134766a0000 +0b24000000ab676c7966f083c2a40000009c0000088868656164086b92ef00000bd000000036 +686865610d9f077b00000c0800000024686d7478409e077300000c2c000000386c6f63610000 +3fb800000c640000003c6d617870047b067100000ca000000020707265703b07f10000000cc0 +0000056800020066fe96046605a400030007001a400c04fb0006fb0108057f0204002fc4d4ec +310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f272062900010073 +ffe3058b05f0001d0039402000051b0195031b950812a111ae15950e91088c1e02001c113404 +3318190b101e10fcecfce4fcc4310010e4f4ecf4ec10fed4ee11393930251121352111060423 +200011100021320417152e0123200011100021323604c3feb6021275fee6a0fea2fe75018b01 +5e9201076f70fc8bfeeefeed011301126ba8d50191a6fd7f53550199016d016e01994846d75f +60fecefed1fed2fece250000000100e10000045a05d5000a004040154203a00402a005810700 +a009081f061c03001f010b10d44bb00f5458b9000100403859ecc4fcec31002fec32f4ecd4ec +304b5358592201b40f030f04025d3721110535253311211521fe014afe990165ca014afca4aa +047348b848fad5aa0000000100b0fef2027b0612000d0037400f069800970e0d070003120600 +130a0e10dc4bb0135458b9000affc038594bb00f5458b9000a00403859e432ec113939310010 +fcec300106021514121723260235341237027b86828385a0969594970612e6fe3ee7e7fe3be5 +eb01c6e0df01c4ec0001006fffe303c7047b002700e7403c0d0c020e0b531f1e080902070a53 +1f1f1e420a0b1e1f041500860189041486158918b91104b925b8118c281e0a0b1f1b0700521b +080e07081422452810fcc4ecd4ece4111239393939310010e4f4ec10fef5ee10f5ee12173930 +4b535807100eed111739070eed1117395922b2002701015d406d1c0a1c0b1c0c2e092c0a2c0b +2c0c3b093b0a3b0b3b0c0b200020012402280a280b2a132f142f152a16281e281f2920292124 +27860a860b860c860d12000000010202060a060b030c030d030e030f03100319031a031b031c +041d09272f293f295f297f2980299029a029f029185d005d7101152e012322061514161f011e +0115140623222627351e013332363534262f012e01353436333216038b4ea85a898962943fc4 +a5f7d85ac36c66c661828c65ab40ab98e0ce66b4043fae282854544049210e2a99899cb62323 +be353559514b50250f2495829eac1e000000000100a4fef2026f0612000d001f400f07980097 +0e0701000b12041308000e10dc3cf4ec113939310010fcec3013331612151402072336123534 +02a4a096959596a08583830612ecfe3cdfe0fe3aebe501c5e7e701c20000000100c90000053b +05d5000b002c4014089502ad0400810a0607031c053809011c00040c10fcec32fcec3231002f +3ce432fcec30b2500d01015d133311211133112311211123c9ca02decacafd22ca05d5fd9c02 +64fa2b02c7fd390000010000ff4202b205d50003002d4014001a010201021a03000342029f00 +8104020001032fc43939310010f4ec304b5358071005ed071005ed5922013301230208aafdf8 +aa05d5f96d0000000001003b000004790460000b014340460511060706041103040707060411 +050401020103110202010b110001000a11090a0101000a110b0a0708070911080807420a0704 +01040800bf05020a0704010408000208060c10d44bb00a544bb00f545b4bb010545b4bb01154 +5b58b90006004038594bb0145458b90006ffc03859c4d4c411173931002f3cec321739304b53 +58071005ed071008ed071008ed071005ed071005ed071008ed071008ed071005ed5922014098 +0a04040a1a04150a260a3d04310a55045707580a660a76017a047607740a8d04820a99049f04 +9707920a900aa601a904af04a507a30aa00a1c0a03040505090a0b1a03150515091a0b290326 +0525092a0b200d3a013903370534073609390b300d4903460545094a0b400d59005601590259 +0357055606590756085609590b500d6f0d78017f0d9b019407ab01a407b00dcf0ddf0dff0d2f +5d005d09022309012309013309010464fe6b01aad9febafebad901b3fe72d9012901290460fd +dffdc101b8fe48024a0216fe71018f0000020071ffe3047f047b0014001b0070402400150109 +8608880515a90105b90c01bb18b912b80c8c1c1b1502081508004b02120f451c10fcecf4ecc4 +111239310010e4f4ece410ee10ee10f4ee1112393040293f1d701da01dd01df01d053f003f01 +3f023f153f1b052c072f082f092c0a6f006f016f026f156f1b095d71015d0115211e01333236 +37150e01232000111000333200072e0123220607047ffcb20ccdb76ac76263d06bfef4fec701 +29fce20107b802a5889ab90e025e5abec73434ae2a2c0138010a01130143feddc497b4ae9e00 +000100960000044a05f0001c009e4027191a1b03181c11050400110505044210a111940da014 +910400a00200100a02010a1c171003061d10fc4bb015544bb016545b4bb014545b58b90003ff +c03859c4d4ecc0c011123931002fec32f4ecf4ec304b5358071005ed0705ed01b01c10111739 +59220140325504560556077a047a05761b87190704000419041a041b051c74007606751a731b +741c82008619821a821b821ca800a81b115d005d25211521353600373e013534262322060735 +3e01333204151406070600018902c1fc4c73018d33614da7865fd3787ad458e80114455b19fe +f4aaaaaa7701913a6d974977964243cc3132e8c25ca5701dfeeb0000000200aeffe30458047b +00130014003b401c030900030e0106870e118c0a01bc14b80c0d0908140b4e020800461510fc +ecf439ec3231002fe4e432f4c4ec1112173930b46f15c01502015d1311331114163332363511 +331123350e0123222601aeb87c7c95adb8b843b175c1c801cf01ba02a6fd619f9fbea4027bfb +a0ac6663f003a800000100d9000005db0504000b002340110009019c07030502150400170a06 +15080c10dcfc3cfc3cec31002fd43cfc3cc43001112115211123112135211103ae022dfdd3a8 +fdd3022d0504fdd3aafdd3022daa022d0001006401df027f028300030011b6009c0204010004 +10dccc310010d4ec301321152164021bfde50283a400013500b800cb00cb00c100aa009c01a6 +00b800660000007100cb00a002b20085007500b800c301cb0189022d00cb00a600f000d300aa +008700cb03aa0400014a003300cb000000d9050200f4015400b4009c01390114013907060400 +044e04b4045204b804e704cd0037047304cd04600473013303a2055605a60556053903c50212 +00c9001f00b801df007300ba03e9033303bc0444040e00df03cd03aa00e503aa0404000000cb +008f00a4007b00b80014016f007f027b0252008f00c705cd009a009a006f00cb00cd019e01d3 +00f000ba018300d5009803040248009e01d500c100cb00f600830354027f00000333026600d3 +00c700a400cd008f009a0073040005d5010a00fe022b00a400b4009c00000062009c0000001d +032d05d505d505d505f0007f007b005400a406b80614072301d300b800cb00a601c301ec0693 +00a000d3035c037103db0185042304a80448008f0139011401390360008f05d5019a06140723 +06660179046004600460047b009c00000277046001aa00e904600762007b00c5007f027b0000 +00b4025205cd006600bc00660077061000cd013b01850389008f007b0000001d00cd074a042f +009c009c0000077d006f0000006f0335006a006f007b00ae00b2002d0396008f027b00f60083 +0354063705f6008f009c04e10266008f018d02f600cd03440029006604ee0073000014000096 +0000b707060504030201002c2010b002254964b040515820c859212d2cb002254964b0405158 +20c859212d2c20100720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e1 +20b00050b00d7920b8ffff5058041b0559b0051cb0032508e12d2c4b505820b0fd454459212d +2cb002254560442d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b005 +25b005254960b0206368208a108a233a8a10653a2d0000010000000259990c370eec5f0f3cf5 +001f080000000000d184f71800000000d184f718f7d6fc4c0e5909dc00000008000000010000 +000000010000076dfe1d00000efef7d6fa510e5900010000000000000000000000000000000e +04cd006606330073051700e1031f00b0042b006f031f00a4060400c902b2000004bc003b04ec +007105170096051200ae06b400d902e300640000000000000044000000ec0000015c000001cc +0000032c00000384000003e00000042c000005b00000068400000784000008080000085c0000 +088800010000000e0354002b0068000c000200100099000800000415021600080004b8028040 +fffbfe03fa1403f92503f83203f79603f60e03f5fe03f4fe03f32503f20e03f19603f02503ef +8a4105effe03ee9603ed9603ecfa03ebfa03eafe03e93a03e84203e7fe03e63203e5e45305e5 +9603e48a4105e45303e3e22f05e3fa03e22f03e1fe03e0fe03df3203de1403dd9603dcfe03db +1203da7d03d9bb03d8fe03d68a4105d67d03d5d44705d57d03d44703d3d21b05d3fe03d21b03 +d1fe03d0fe03cffe03cefe03cd9603cccb1e05ccfe03cb1e03ca3203c9fe03c6851105c61c03 +c51603c4fe03c3fe03c2fe03c1fe03c0fe03bffe03befe03bdfe03bcfe03bbfe03ba1103b986 +2505b9fe03b8b7bb05b8fe03b7b65d05b7bb03b78004b6b52505b65d40ff03b64004b52503b4 +fe03b39603b2fe03b1fe03b0fe03affe03ae6403ad0e03acab2505ac6403abaa1205ab2503aa +1203a98a4105a9fa03a8fe03a7fe03a6fe03a51203a4fe03a3a20e05a33203a20e03a16403a0 +8a4105a096039ffe039e9d0c059efe039d0c039c9b19059c64039b9a10059b19039a1003990a +0398fe0397960d0597fe03960d03958a410595960394930e05942803930e0392fa039190bb05 +91fe03908f5d0590bb039080048f8e25058f5d038f40048e25038dfe038c8b2e058cfe038b2e +038a8625058a410389880b05891403880b03878625058764038685110586250385110384fe03 +8382110583fe0382110381fe0380fe037ffe0340ff7e7d7d057efe037d7d037c64037b541505 +7b25037afe0379fe03780e03770c03760a0375fe0374fa0373fa0372fa0371fa0370fe036ffe +036efe036c21036bfe036a1142056a530369fe03687d036711420566fe0365fe0364fe0363fe +0362fe03613a0360fa035e0c035dfe035bfe035afe0359580a0559fa03580a03571619055732 +0356fe035554150555420354150353011005531803521403514a130551fe03500b034ffe034e +4d10054efe034d10034cfe034b4a13054bfe034a4910054a1303491d0d05491003480d0347fe +0346960345960344fe0343022d0543fa0342bb03414b0340fe033ffe033e3d12053e14033d3c +0f053d12033c3b0d053c40ff0f033b0d033afe0339fe033837140538fa033736100537140336 +350b05361003350b03341e03330d0332310b0532fe03310b03302f0b05300d032f0b032e2d09 +052e10032d09032c32032b2a25052b64032a2912052a25032912032827250528410327250326 +250b05260f03250b0324fe0323fe03220f03210110052112032064031ffa031e1d0d051e6403 +1d0d031c1142051cfe031bfa031a42031911420519fe031864031716190517fe031601100516 +190315fe0314fe0313fe031211420512fe0311022d05114203107d030f64030efe030d0c1605 +0dfe030c0110050c16030bfe030a100309fe0308022d0508fe030714030664030401100504fe +03401503022d0503fe0302011005022d0301100300fe0301b80164858d012b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b1d00> +] def +/f-0-0 currentdict end definefont pop +%%EndResource +%%BeginResource: font AbyssinicaSIL +11 dict begin +/FontType 42 def +/FontName /AbyssinicaSIL 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 46 /period put +/CharStrings 2 dict dup begin +/.notdef 0 def +/period 1 def +end readonly def +/sfnts [ +<00010000000900800003001063767420024f10a4000001ac0000001a6670676d06599c370000 +01c800000173676c7966576c884d0000009c000001106865616400ce5d4b0000033c00000036 +686865610cd808450000037400000024686d74780a8d00e700000398000000086c6f63610000 +0164000003a00000000c6d61787002230559000003ac0000002070726570181aca2d000003cc +000000720002006eff030792053d00030007002900b800062fb800004558b800042f1bb90004 +00093e59b800004558b800002f1bb9000000073e59303113112111252111218706f2f8f50724 +f8dc0524f9f8060819f9c60000010079000001b4013b00130079bb00000004000a00042b4107 +0009000a0019000a0029000a00035d00b800004558b800052f1bb9000500053e59b8000fdc41 +1b0007000f0017000f0027000f0037000f0047000f0057000f0067000f0077000f0087000f00 +97000f00a7000f00b7000f00c7000f000d5d410500d6000f00e6000f00025d303125140e0223 +222e0235343e0233321e0201b4182b3921213a2b18182b3a2121392b189e213a2a19192a3a21 +21392b18182b39000000002a003d007b003d01120004000c0510001b053b002b05db00460000 +b800002c4bb800095058b101018e59b801ff85b800441db9000900035f5e2db800012c202045 +6944b001602db800022cb800012a212db800032c2046b003254652582359208a208a49648a20 +4620686164b004254620686164525823658a592f20b00053586920b000545821b040591b6920 +b000545821b0406559593a2db800042c2046b00425465258238a592046206a6164b004254620 +6a61645258238a592ffd2db800052c4b20b0032650585158b080441bb04044591b21212045b0 +c05058b0c0441b2159592db800062c2020456944b001602020457d691844b001602db800072c +b800062a2db800082c4b20b003265358b0401bb000598a8a20b0032653582321b0808a8a1b8a +235920b0032653582321b800c08a8a1b8a235920b0032653582321b801008a8a1b8a235920b0 +032653582321b801408a8a1b8a235920b80003265358b0032545b8018050582321b801802321 +1bb003254523212321591b2159442db800092c4b535845441b2121592d000001000000017fff +d7c4e79a5f0f3cf50009080000000000cecbfe5e00000000ced094a7f8bcfd560b5807f20000 +000900020001000000000001000006c1fec102000b8ff8bcfdf20b5800010000000000000000 +00000000000000020800006e028d0079000000000000005400000110000100000002014a0010 +00bd0005000100000000000a00000200035000010001b800002b00ba0001000200022b01ba00 +03000200022b01bf000300b80096007500540032000000082bbf0004002a0022001b0013000c +000000082b00bf000100b80096007500540032000000082bbf0002005c004b003b002a001900 +0000082b00ba0005000400072bb8000020457d691844000000> +] def +/f-1-0 currentdict end definefont pop +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 260 287 596 398 +%%EndPageSetup +q 260 287 336 111 rectclip q +0 g +0.58701 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 841.889771 cm +453.543 488.145 30.594 27.762 re S Q +q 1 0 0 -1 0 841.889771 cm +365.668 445.625 30.594 27.762 re S Q +BT +12 0 0 12 454.07006 336.511261 Tm +/f-0-0 1 Tf +(G)Tj +7.8 0 0 7.8 463.374747 334.111261 Tm +(1)Tj +12 0 0 12 468.341153 336.511261 Tm +(\(s\))Tj +-8.52137 3.517765 Td +(H)Tj +7.8 0 0 7.8 375.108146 376.324444 Tm +(1)Tj +12 0 0 12 380.074552 378.724444 Tm +(\(s\))Tj +ET +0.79937 w +q 1 0 0 -1 0 841.889771 cm +430.172 459.719 m 430.172 461.184 428.988 462.371 427.523 462.371 c 426.059 + 462.371 424.875 461.184 424.875 459.719 c 424.875 458.258 426.059 457.07 + 427.523 457.07 c 428.988 457.07 430.172 458.258 430.172 459.719 c h +430.172 459.719 m S Q +0.559705 w +q 1 0 0 -1 0 841.889771 cm +456.363 445.609 27.789 27.785 re S Q +q 1 0 0 -1 0 841.889771 cm +532.898 445.613 27.789 27.785 re S Q +BT +12 0 0 12 460.917813 378.286456 Tm +/f-0-0 1 Tf +[(1/s)-4860(1/s)]TJ +ET +0.79937 w +q 1 0 0 -1 0 841.889771 cm +430.574 459.508 m 456.086 459.508 l S Q +449.656 384.46 m 449.449 383.687 l 454.316 382.382 l 449.449 381.081 l +449.656 380.308 l 455.961 381.999 l 456.352 382.105 456.352 382.663 455.961 + 382.769 c h +449.656 384.46 m f* +q 1 0 0 -1 0 841.889771 cm +484.43 459.508 m 532.898 459.508 l S Q +526.473 384.46 m 526.266 383.687 l 531.129 382.382 l 526.266 381.081 l +526.473 380.308 l 532.773 381.999 l 533.168 382.105 533.168 382.663 532.773 + 382.769 c h +526.473 384.46 m f* +q 1 0 0 -1 0 841.889771 cm +560.688 459.508 m 607.965 459.508 l S Q +q 1 0 0 -1 0 841.889771 cm +322.562 459.508 m 340.051 459.508 l S Q +333.621 384.46 m 333.414 383.687 l 338.281 382.382 l 333.414 381.081 l +333.621 380.308 l 339.926 381.999 l 340.316 382.105 340.316 382.663 339.926 + 382.769 c h +333.621 384.46 m f* +q 1 0 0 -1 0 841.889771 cm +396.266 459.785 m 424.875 459.719 l S Q +418.441 384.23 m 418.238 383.456 l 423.105 382.167 l 418.242 380.851 l +418.453 380.081 l 424.75 381.784 l 425.145 381.89 425.141 382.448 424.75 + 382.554 c h +418.441 384.23 m f* +q 1 0 0 -1 0 841.889771 cm +405.062 502.027 m 424.902 502.027 l S Q +418.477 341.941 m 418.27 341.167 l 423.133 339.862 l 418.27 338.562 l 418.477 + 337.788 l 424.777 339.48 l 425.172 339.585 425.172 340.144 424.777 340.249 + c h +418.477 341.941 m f* +BT +12 0 0 12 438.036856 387.159796 Tm +/f-0-0 1 Tf +(x)Tj +5.047274 -0.161788 Td +(x)Tj +6.084001 0.199007 Td +(x)Tj +-21.021069 -6.664575 Td +(e)Tj +7.8 0 0 7.8 326.74213 305.231524 Tm +(2)Tj +12 0 0 12 270.812931 387.001593 Tm +(u)Tj +7.8 0 0 7.8 278.430118 384.601593 Tm +(2)Tj +12 0 0 12 438.022208 395.794073 Tm +/f-1-0 1 Tf +(..)Tj +5.206453 -0.161788 Td +(.)Tj +/f-0-0 1 Tf +-6.954862 -0.560555 Td +(+)Tj +0.0529093 -1.534005 Td +(-)Tj +ET +0.8 w +q 1 0 0 -1 0 841.889771 cm +453.531 502.305 m 430.574 502.027 l S Q +436.98 337.71 m 437.195 338.48 l 432.344 339.843 l 437.227 341.089 l 437.031 + 341.862 l 430.703 340.249 l 430.309 340.148 430.301 339.589 430.691 339.476 + c h +436.98 337.71 m f* +q 1 0 0 -1 0 841.889771 cm +427.738 499.191 m 427.523 462.371 l S Q +425.484 373.077 m 426.258 372.874 l 427.535 377.749 l 428.867 372.886 l + 429.637 373.101 l 427.91 379.398 l 427.801 379.792 427.242 379.788 427.137 + 379.394 c h +425.484 373.077 m f* +q 1 0 0 -1 0 841.889771 cm +509.934 459.785 m 509.941 502.027 l 484.43 502.027 l S Q +490.863 337.788 m 491.07 338.558 l 486.203 339.862 l 491.07 341.167 l 490.863 + 341.941 l 484.555 340.249 l 484.164 340.144 484.164 339.585 484.555 339.48 + c h +490.863 337.788 m f* +0.58701 w +q 1 0 0 -1 0 841.889771 cm +291.969 445.625 30.594 27.762 re S Q +BT +12 0 0 12 292.383829 379.030987 Tm +/f-0-0 1 Tf +(H)Tj +7.8 0 0 7.8 301.407267 376.630987 Tm +(2)Tj +12 0 0 12 306.373673 379.030987 Tm +(\(s\))Tj +ET +0.58701 w +q 1 0 0 -1 0 841.889771 cm +453.543 524.996 30.594 27.762 re S Q +BT +12 0 0 12 454.070011 299.66087 Tm +/f-0-0 1 Tf +(G)Tj +7.8 0 0 7.8 463.374698 297.26087 Tm +(2)Tj +12 0 0 12 468.341104 299.66087 Tm +(\(s\))Tj +ET +0.79937 w +q 1 0 0 -1 0 841.889771 cm +345.348 459.508 m 345.348 460.969 344.16 462.156 342.699 462.156 c 341.234 + 462.156 340.051 460.969 340.051 459.508 c 340.051 458.043 341.234 456.855 + 342.699 456.855 c 344.16 456.855 345.348 458.043 345.348 459.508 c h +345.348 459.508 m S Q +q 1 0 0 -1 0 841.889771 cm +345.535 459.508 m 365.375 459.508 l S Q +358.949 384.46 m 358.742 383.687 l 363.605 382.382 l 358.742 381.081 l +358.949 380.308 l 365.25 381.999 l 365.645 382.105 365.645 382.663 365.25 + 382.769 c h +358.949 384.46 m f* +0.8 w +q 1 0 0 -1 0 841.889771 cm +453.25 538.875 m 345.535 538.875 l S Q +351.965 300.937 m 352.172 301.71 l 347.305 303.015 l 352.172 304.319 l +351.965 305.089 l 345.656 303.401 l 345.266 303.292 345.266 302.734 345.656 + 302.628 c h +351.965 300.937 m f* +q 1 0 0 -1 0 841.889771 cm +342.699 536.043 m 342.699 462.34 l S Q +340.621 373.116 m 341.395 372.909 l 342.699 377.776 l 344.004 372.909 l + 344.773 373.116 l 343.086 379.425 l 342.977 379.819 342.418 379.819 342.312 + 379.425 c h +340.621 373.116 m f* +q 1 0 0 -1 0 841.889771 cm +580.809 459.508 m 580.809 538.875 l 484.43 538.875 l S Q +490.863 300.937 m 491.07 301.71 l 486.203 303.015 l 491.07 304.319 l 490.863 + 305.089 l 484.555 303.401 l 484.164 303.292 484.164 302.734 484.555 302.628 + c h +490.863 300.937 m f* +0.79937 w +q 1 0 0 -1 0 841.889771 cm +260.176 459.508 m 291.676 459.508 l S Q +285.246 384.46 m 285.039 383.687 l 289.906 382.382 l 285.039 381.081 l +285.246 380.308 l 291.551 381.999 l 291.945 382.105 291.945 382.663 291.551 + 382.769 c h +285.246 384.46 m f* +BT +12 0 0 12 344.623722 371.073126 Tm +/f-0-0 1 Tf +(-)Tj +-1.051815 1.337736 Td +(+)Tj +ET +q 1 0 0 -1 0 841.889771 cm +430.387 501.84 m 430.387 503.305 429.199 504.488 427.738 504.488 c 426.273 + 504.488 425.09 503.305 425.09 501.84 c 425.09 500.379 426.273 499.191 427.738 + 499.191 c 429.199 499.191 430.387 500.379 430.387 501.84 c h +430.387 501.84 m S Q +q 1 0 0 -1 0 841.889771 cm +345.348 538.691 m 345.348 540.152 344.16 541.34 342.699 541.34 c 341.234 + 541.34 340.051 540.152 340.051 538.691 c 340.051 537.227 341.234 536.043 + 342.699 536.043 c 344.16 536.043 345.348 537.227 345.348 538.691 c h +345.348 538.691 m S Q +q 1 0 0 -1 0 841.889771 cm +320.02 538.875 m 339.863 538.875 l S Q +333.438 305.089 m 333.23 304.316 l 338.094 303.015 l 333.23 301.71 l 333.438 + 300.941 l 339.738 302.628 l 340.133 302.734 340.133 303.292 339.738 303.398 + c h +333.438 305.089 m f* +BT +12 0 0 12 401.782071 343.372979 Tm +/f-0-0 1 Tf +(e)Tj +7.8 0 0 7.8 409.164884 340.972979 Tm +(1)Tj +12 0 0 12 399.391495 388.053009 Tm +(u)Tj +7.8 0 0 7.8 407.008683 385.653009 Tm +(1)Tj +ET +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/matlab/DeltaTauParam.m b/matlab/DeltaTauParam.m index 205c307..719c87a 100644 --- a/matlab/DeltaTauParam.m +++ b/matlab/DeltaTauParam.m @@ -10,11 +10,30 @@ function [pb]=DeltaTauParam(mot) 'Ts', 2E-4, ... % 0.2ms=5kHz 'MaxDac' ,2011.968, ... 'MaxPosErr', 10000); + %pb.ss_plt=mot.ss_plt; pb.sel={3,[3]}; + %pb.ss_plt=mot.ss_plt0; pb.sel={3,[3]}; + %pb.ss_plt=mot.ss_c1; pb.sel={3,[3]}; + %pb.ss_plt=mot.ss_d1; pb.sel={3,[3]}; + %pb.ss_plt=mot.ss_1; pb.sel={2,[2]}; + %pb.ss_plt=mot.ss_p; pb.sel={2,[2]}; + %pb.ss_plt=mot.ss_q; pb.sel={2,[2]}; + %pb.ss_plt=mot.ss_cq; pb.sel={3,[3]}; + %pb.ss_plt=mot.ss_cqr; pb.sel={3,[3]}; + pb.A=[1];pb.B=[1];pb.C=[1];pb.D=[1];pb.E=[1];pb.F=[1]; + if mot.id==1 %!motor_servo(mot=1,ctrl='ServoCtrl',Kp=25,Kvfb=400,Ki=0.02,Kvff=350,Kaff=5000,MaxInt=1000) %!motor(mot=1,dirCur=0,contCur=800,peakCur=2400,timeAtPeak=1,IiGain=5,IpfGain=8,IpbGain=8,JogSpeed=10.,numPhase=3,invDir=True,servo=None,PhasePosSf=1./81250,PhaseFindingDac=100,PhaseFindingTime=50,SlipGain=0,AdvGain=0,PwmSf=10000,FatalFeLimit=200,WarnFeLimit=100,InPosBand=2,homing='enc-index') %pb.Kp=25;pb.Kvfb=400;pb.Ki=0.02;pb.Kvff=350;pb.Kaff=5000;pb.MaxInt=1000; pb.Kp=25;pb.Kvfb=350;pb.Ki=0.02;pb.Kvff=350;pb.Kaff=1/(1.548e04*(pb.Ts^2));pb.MaxInt=1000; + %pb.Kp=0.1;pb.Kvfb=0;pb.Ki=0.00;pb.Kvff=0;pb.Kaff=1/(1.548e04*(pb.Ts^2));pb.MaxInt=1000; + %filter [z^0 z^-1 ... z^-n]; + pb.A=[1]; + pb.B=[1]; + pb.C=[1]; + pb.D=[1]; + pb.E=[1]; + pb.F=[1]; %19.8Hz 0dB K=(19.8*2*np.pi)**2=15477.1 Ts=5kHz=.2ms %Kaff = 1/(Ts*Ts*K) = 1/((19.8*2*np.pi)**2/5000**2) = 1615.2877200403302 %Kfff=100 @@ -29,13 +48,6 @@ function [pb]=DeltaTauParam(mot) %pb.MaxInt=200 %200mA should be enought to fix static errors end - pb.ss_plt=mot.ss_plt; pb.sel={3,[3]}; - %pb.ss_plt=mot.ss_plt0; pb.sel={3,[3]}; - %pb.ss_plt=mot.ss_c1; pb.sel={3,[3]}; - %pb.ss_plt=mot.ss_d1; pb.sel={3,[3]}; - %pb.ss_plt=mot.ss_1; pb.sel={2,[2]}; - %pb.ss_plt=mot.ss_p; pb.sel={2,[2]}; - %pb.ss_plt=mot.ss_q; pb.sel={2,[2]}; %mdlName='stage_closed_loop'; %open(mdlName) diff --git a/matlab/DeltaTauSim.slx b/matlab/DeltaTauSim.slx new file mode 100644 index 0000000000000000000000000000000000000000..d8c6e007e49d0c05054b945f322c4ae07c2a984a GIT binary patch literal 39781 zcmb5VW2|UR6eW0V+qP}nwvBiBu5H`4ZQHhO+eW{yGn47=NhX;em9x)IcBR%?XIHIC z)mD%O20;M;0Du6n7BG?xQi8uS0t5gU00IEO{^zwZbuu(DbTXtjwsSC5aImvCb#SsY zb)<8%vG!Kdl@DY<`KB(qRe&+OyU+RqP4ul`0;?oZaY8F_MACy zFMZu{az{vR1-FqRMGpfZd=PL*PHoW0JDr}$C7jhDb5x^*gkA~|++mV-mu+9T%TtBj zNHO3sCxJbF2D+}QrW^^m6<|Q-2zEMBv+S?xyZ~B_@~s21M+rfu>1)W+4B-~;#lxK+ zXF4r3{VuQEAvndLLLjK_Cn0zfr;8daH3tdpQoM7dkdDQ{*fZ=1HzrWr#3vQqwQRXM% zgJdTuF_cMs*N*V*zJ-Z3FK(nKTUvp=+ji+dykSzET5Ha{X$kr&=~nnL9gRB(`p$K@ z35~}m#ZH)W6DmB{oaoP+%`?<@xlD;CNPl$}FDjIuOylL6#Jqe5>mEUJY^?#7$=XhTzuCpLXA6yIblDKK7TnaNnt7Y4FwhIDKv3$X5!~i z_o&ioXp1Or3o~7mH$PZMy+JaM#pTPw*EGW9G*a%Fx8-wQy?{3!H#g>#6EgL}#(BJh+uT_HChk23Knl+3ddv}P zG;Y7V%e%h<|L^!$6IHrW|KVQv*U0|A@Qb=Rnc6y9+S&g1m+HpU!v!#)i24@0ciIrb zSWw7tahH8Ib^-Xe6xAYrc{0jz>||{vDzjE*4n-2d_hXM0feG$}xZGv?e_lIK2-*wn z9-#1Gx*-QzTujiiiFAxGD9ZrXukqx-K2c7S7q7h>#T5@O(G$kd*x3IO<2DkfTGh;d z`F+e7^CdQLG|sqte-m96*OZ{0q@j1vE$7{Q(HH*){C}WX{mVM{w@L{MC;$L=1^@u` zf6yE)ZJezwZLR2yOiWD844ti={%6KrYirsaav=HS>Jy$B&UZFu8#4f3#k=jT{Uu-H zfHQIhx-yu{D{h#EmHi_@~L6=tY$vJ{Lmm zo`HvtQw%vKbF331zqk;y^Go{Oe!o4QuCOkg*;sG3$QGqRS!L;!N<#ikZftms$k!!V zvyLLSh^^*#V+psw6p35}+izma7=mo7ejLZ9VW}Eqf2TqqXbGYL%_a1t z=wP(~mbwly#Ww8+J%($Tdd`?C@i95yFE9RdJ1ef$rlsUIbl?M9rGeEJ&MC57d=`bHbTJw%E*jm*+% z?l=L^K~d{#-)JK4BFk}_HIWrWtmfr%VwtF$hd+9gGYjup~P zg-~mg>q1h)0gB>9@WL1KO;mWvp7A+p_CD*;lxv=3M`e+6&M8se*6y}O4=%L;f+qzu ze3UX!unm&a1{-^@fjn^9W{D+a4sTN$f-s7>N#Jb7Q`J2jU;Xi5pVB+dL*yTR!*oQ^ zU{%2Y>4rcdV7*mZT5EN3bsZrT-j{`0{arO)^3Y6a?sKNbr{p4dqac78@hn)-hyLyo z)JrMFanlkL@lMS-`fZz9gWhDP+aLMFO(i{}GU3hA*48*HHg4H;lLN@tqY#eK5ke(N zFCm5=w}j7THzst(zZ3((fB#<9X~9;1gv>K3kdMC;BNt=KN@FE8Xz}jo0GlCuzi8Ny z{jC^ER%vbRd&ohNU%qa~PXElOTcUk~NkRhFYs(xgmPk`LM4Ql}-p}1%yy#Jn(@b-w zv-+|_l@cAGkT0ZY)I(MDoH#RIO3&e$Sh|QLfF~| zdcDwm*U%ro^eFH4EPnKy{%S!AHTO|Ee5Y~oXlq_h98?{2hs&6hWV_n!mf1@FLW_^e zjN+*nbnZyn9`MnI67yEQfPr0;&qjeBnN45JfL_#7^e{D(z813_vt|;ygr8poAN@PehK@P%0AagfgYeI;FN%#MXCFDDGv~zDY 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 delta 23135 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 diff --git a/python/ShapePathAnalyser/ShapePathAnalyser.py b/python/ShapePathAnalyser/ShapePathAnalyser.py index 4b783f2..e1205ed 100755 --- a/python/ShapePathAnalyser/ShapePathAnalyser.py +++ b/python/ShapePathAnalyser/ShapePathAnalyser.py @@ -6,6 +6,7 @@ # | Author Thierry Zamofing (thierry.zamofing@psi.ch) | # *-----------------------------------------------------------------------* from __future__ import print_function +#from __future__ import absolute_import,division,generators,nested_scopes,print_function,unicode_literals,with_statement import os,sys import wx import wx.py diff --git a/python/helicalscan.py b/python/helicalscan.py index d0dfe24..d7f4988 100755 --- a/python/helicalscan.py +++ b/python/helicalscan.py @@ -62,7 +62,8 @@ verbose bits: #points: #dx,dz,w,fy -> pb coord. be aware of inverted dx,dz signs - +from __future__ import print_function +#from __future__ import absolute_import,division,generators,nested_scopes,print_function,unicode_literals,with_statement import os, sys, json,re import numpy as np import matplotlib as mpl @@ -644,8 +645,9 @@ class HelicalScanTests(): class HelicalScan(MotionBase): - def __init__(self,comm, gather, verbose): - MotionBase.__init__(self,comm, gather, verbose) + def __init__(self, comm, gather, verbose, **kwargs): + if comm==None: return + MotionBase.__init__(self, comm, gather, verbose, **kwargs) def load_rec(self,fn_npz='/tmp/helicalscan.npz'): try: @@ -849,12 +851,17 @@ class HelicalScan(MotionBase): if comm is None:return gt=self.gather gt.set_phasemode(False) - #gt.set_address("Motor[4].ActPos","Motor[5].ActPos","Motor[3].ActPos","Motor[1].ActPos") - gt.set_address("Motor[4].ActPos","Motor[5].ActPos","Motor[3].ActPos","Motor[1].ActPos","Gate3[1].Chan[1].UserFlag") + #up to now the trigger is not saved + #if self.meta['sync_flag']&2: + # address=("Motor[4].ActPos", "Motor[5].ActPos", "Motor[3].ActPos", "Motor[1].ActPos","Coord[1].Q[11]") + #else: + # address=("Motor[4].ActPos", "Motor[5].ActPos", "Motor[3].ActPos", "Motor[1].ActPos","Gate3[1].Chan[1].UserFlag") + address=("Motor[4].ActPos","Motor[5].ActPos","Motor[3].ActPos","Motor[1].ActPos") + gt.set_address(*address) gt.set_property(MaxSamples=1000000, Period=acq_per) ServoPeriod= .2 #0.2ms #Sys.ServoPeriod is dependent of !common() macro #ServoPeriod=comm.gpascii.servo_period - self.meta = {'timebase': ServoPeriod*acq_per} + self.meta.update({'acq_per':acq_per,'address':address}) def setup_coord_trf(self,fnCrdTrf='/tmp/coordTrf.cfg'): param=self.param @@ -1107,6 +1114,7 @@ close yRng = kwargs.get('yRng', self.param[:,1]) pt2pt_time = kwargs.get('pt2pt_time', 100) smt = kwargs.get('smt', 1) # SegMoveTime, default = 1ms -> velocity calc not yet 100% correct (smt=0 not 100% working) + dwell = kwargs.get('dwell', 100) # wait time at end of motion numPt=cntVert*cntHor pt=np.zeros((numPt,4)) @@ -1147,8 +1155,6 @@ close prg.append(' Coord[1].SegMoveTime=%d'%smt) #to calculate every 1 ms the inverse kinematics prg.append(' pvt%g abs'%pt2pt_time) #100ms to next position for idx in range(1,pv.shape[0]): - if sync_frq is not None and idx%sync_frq==0: - prg.append('Coord[1].Q[0]=%d'%(idx)) prg.append(' X%g:%g Z%g:%g B%g:%g Y%g:%g' % tuple(pv[idx, (0,4,1,5,2,6,3,7)])) #prg.append('Y%g:%g' % tuple(pv[idx, (5, 7)])) #prg.append('B%g:%g' %(idx*1000,0)) @@ -1159,14 +1165,11 @@ close prg.append(' {') prg.append(' linear abs') prg.append(' X%g Z%g B%g Y%g' % tuple(pv[0, (0, 1, 2, 3)])) - prg.append(' dwell 100') + prg.append(' dwell %d' % dwell) prg.append(' goto 100') prg.append(' }') else: - prg.append(' dwell 1000') - if sync_frq is not None: - prg.append(' Coord[1].Q[0]=-1') - prg.append(' Coord[1].Q[1]=0') + prg.append('dwell %d' % dwell) prg.append(' Gather.Enable=0') prg.append('close') #prg.append('&1\nb%dr\n'%prgId) @@ -1188,6 +1191,10 @@ close gt=self.gather gt.wait_stopped(verbose=True) self.rec=rec=gt.upload() + + channels=self.meta['address'] + + channels = ["Motor[4].HomePos", "Motor[5].HomePos", "Motor[3].HomePos", "Motor[1].HomePos"] ofs = np.ndarray(len(channels)) for i, v in enumerate(channels): @@ -1208,7 +1215,22 @@ if __name__=='__main__': comm = PPComm(host=args.host) gather = Gather(comm) gpascii = comm.gpascii - hs=HelicalScan(comm, gather, args.verbose) + + # direct start + #hs=HelicalScan(comm, gather, args.verbose,sync_mode=0) + + #simulated start and frame trigger no sync + #hs=HelicalScan(comm, gather, args.verbose,sync_mode=1,sync_flag=3) + + #simulated start and frame trigger with sync + #hs=HelicalScan(comm, gather, args.verbose,sync_mode=2,sync_flag=3) + + #simulated start real frame trigger no sync + #hs=HelicalScan(comm, gather, args.verbose,sync_mode=1,sync_flag=1) + + #simulated start real frame trigger with sync + hs=HelicalScan(comm, gather, args.verbose,sync_mode=2,sync_flag=1) + if mode==0: # gpasci: #1,4,5p // y,-x ,-z # 0deg 256.7 -762.5 -396.4 @@ -1222,6 +1244,13 @@ if __name__=='__main__': y=(1405.7, 1019.2), z=((-1309.6, -1010.9, -2410.3), (-1219.4, -918.8, -2510.4))) + hs.calcParam(x=((-70.25682272433501, 287.48437780001825, -477.99870973215764), + (-41.466601738723284, 274.71565975031103, -504.9508517714285)), + y=(1207.6326052816642, 1704.2138281362475), z=( + (-1196.2847548574225, -1686.284754857423, -1686.284754857423), + (-1196.2847548574225, -1686.284754857423, -1686.284754857423))) + + ### use simulation motors ### # os.chdir(os.path.join(os.path.dirname(__file__),'../cfg')) # 'sim_8_motors.cfg' @@ -1232,22 +1261,21 @@ if __name__=='__main__': # fh=open("/sf/bernina/config/swissmx/exchange/helical.cmd") # fh=open("/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/helical.cmd") #fh = open("/home/zamofing_t/Documents/prj/SwissFEL/epics_ioc_modules/ESB_MX/python/lyso001_0063_helical_debug.cmd") - fh = open("/sf/bernina/data/p17592/res/20181130/helicaltest/lyso005/lyso005_0072_helical_debug.cmd") + #fh = open("/sf/bernina/data/p17592/res/20181130/helicaltest/lyso005/lyso005_0072_helical_debug.cmd") # find /sf/bernina/data/p17592/res/ -name '*.cmd' - s = fh.read(); - s = s.replace('calcParam', 'hs.calcParam') - eval(s) + #s = fh.read(); + #s = s.replace('calcParam', 'hs.calcParam') + #eval(s) # &1p # cpx X0 Z0 B0 Y258 # cpx X0 Z0 B120000 Y258 - - hs.setup_coord_trf() - hs.setup_sync(mode=0) # None: no sync at all mode=1: sync on timing UserFlag - hs.setup_gather() + hs.setup_gather(acq_per=1) + hs.setup_sync(verbose=args.verbose & 32) + hs.setup_coord_trf() # reset to shape path system # hs.gen_prog(mode=-1) # hs.gen_prog(mode=0,cntHor=1,cntVert=3,wRng=(120000,120000)) @@ -1274,6 +1302,8 @@ if __name__=='__main__': # hs.gen_prog(mode=1,cntHor=7,cntVert=2,hRng=(-100,50),wRng=(000,10000),smt=0) hs.run() + hs.wait_armed() # wait until motors are at first position + hs.trigger(0.5) # send a start trigger (if needed) ater given time print('wait until gather finished:') fn = '/tmp/helicalscan' hs.gather_upload(fn + '.npz') diff --git a/python/shapepath.py b/python/shapepath.py index f5f8e2b..1f66e4d 100755 --- a/python/shapepath.py +++ b/python/shapepath.py @@ -41,6 +41,7 @@ Enc 7: Interferometer X ''' from __future__ import print_function +#from __future__ import absolute_import,division,generators,nested_scopes,print_function,unicode_literals,with_statement import os, sys, time import numpy as np import matplotlib as mpl @@ -674,7 +675,7 @@ class ShapePath(MotionBase): ts=self.meta['srv_per'] scale=kwargs.get('scale', 1.) cnt=kwargs.get('cnt', 1) # move path multiple times - dwell=kwargs.get('dwell', 100) # synchronization mark all n points + dwell=kwargs.get('dwell', 100) # wait time at end of motion CoordFeedTime=1000. #Defaut deltatau value try: pt=self.ptsCorr