1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
---|
2 | "http://www.w3.org/TR/REC-html40/loose.dtd"> |
---|
3 | <html> |
---|
4 | <head> |
---|
5 | <title>Description of boosterinit</title> |
---|
6 | <meta name="keywords" content="boosterinit"> |
---|
7 | <meta name="description" content="BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB"> |
---|
8 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
---|
9 | <meta name="generator" content="m2html © 2003 Guillaume Flandin"> |
---|
10 | <meta name="robots" content="index, follow"> |
---|
11 | <link type="text/css" rel="stylesheet" href="../../../m2html.css"> |
---|
12 | </head> |
---|
13 | <body> |
---|
14 | <a name="_top"></a> |
---|
15 | <div><a href="../../../index.html">Home</a> > <a href="#">machine</a> > <a href="#">Soleil</a> > <a href="index.html">Booster</a> > boosterinit.m</div> |
---|
16 | |
---|
17 | <!--<table width="100%"><tr><td align="left"><a href="../../../index.html"><img alt="<" border="0" src="../../../left.png"> Master index</a></td> |
---|
18 | <td align="right"><a href="index.html">Index for machine/Soleil/Booster <img alt=">" border="0" src="../../../right.png"></a></td></tr></table>--> |
---|
19 | |
---|
20 | <h1>boosterinit |
---|
21 | </h1> |
---|
22 | |
---|
23 | <h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2> |
---|
24 | <div class="box"><strong>BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB</strong></div> |
---|
25 | |
---|
26 | <h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2> |
---|
27 | <div class="box"><strong>function boosterinit(OperationalMode) </strong></div> |
---|
28 | |
---|
29 | <h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2> |
---|
30 | <div class="fragment"><pre class="comment">BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB |
---|
31 | |
---|
32 | Written by Laurent S. Nadolski, Synchrotron SOLEIL |
---|
33 | |
---|
34 | ========================== |
---|
35 | Accelerator Family Fields |
---|
36 | ========================== |
---|
37 | FamilyName BPMx, HCOR, etc |
---|
38 | CommonNames Shortcut name for each element |
---|
39 | DeviceList [Sector, Number] |
---|
40 | ElementList number in list |
---|
41 | Position m, if thick, it is not the magnet center |
---|
42 | |
---|
43 | MONITOR FIELD |
---|
44 | Mode online/manual/special/simulator |
---|
45 | TangoNames Device Tango Names |
---|
46 | Units Physics or HW |
---|
47 | HW2PhysicsFcn function handle used to convert from hardware to physics units ==> inline will not compile, see below |
---|
48 | HW2PhysicsParams parameters used for conversion function |
---|
49 | Physics2HWFcn function handle used to convert from physics to hardware units |
---|
50 | Physics2HWParams parameters used for conversion function |
---|
51 | HWUnits units for Hardware 'A'; |
---|
52 | PhysicsUnits units for physics 'Rad'; |
---|
53 | Handles monitor handle |
---|
54 | |
---|
55 | SETPOINT FIELDS |
---|
56 | Mode online/manual/special/simulator |
---|
57 | TangoNames Devices tango names |
---|
58 | Units hardware or physics |
---|
59 | HW2PhysicsFcn function handle used to convert from hardware to physics units |
---|
60 | HW2PhysicsParams parameters used for conversion function |
---|
61 | Physics2HWFcn function handle used to convert from physics to hardware units |
---|
62 | Physics2HWParams parameters used for conversion function |
---|
63 | HWUnits units for Hardware 'A'; |
---|
64 | PhysicsUnits units for physics 'Rad'; |
---|
65 | Range minsetpoint, maxsetpoint; |
---|
66 | Tolerance setpoint-monitor |
---|
67 | Handles setpoint handle |
---|
68 | |
---|
69 | ============================================= |
---|
70 | Accelerator Toolbox Simulation Fields |
---|
71 | ============================================= |
---|
72 | ATType Quad, Sext, etc |
---|
73 | ATIndex index in THERING |
---|
74 | ATParameterGroup parameter group |
---|
75 | |
---|
76 | ============ |
---|
77 | Family List |
---|
78 | ============ |
---|
79 | BPMx |
---|
80 | BPMz |
---|
81 | HCOR |
---|
82 | VCOR |
---|
83 | BEND |
---|
84 | QF and QD |
---|
85 | SF and SD |
---|
86 | RF |
---|
87 | TUNE |
---|
88 | DCCT |
---|
89 | Machine Parameters</pre></div> |
---|
90 | |
---|
91 | <!-- crossreference --> |
---|
92 | <h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2> |
---|
93 | This function calls: |
---|
94 | <ul style="list-style-image:url(../../../matlabicon.gif)"> |
---|
95 | <li><a href="setoperationalmode.html" class="code" title="function setoperationalmode(ModeNumber)">setoperationalmode</a> SETOPERATIONALMODE - Switches between the various operational modes</li></ul> |
---|
96 | This function is called by: |
---|
97 | <ul style="list-style-image:url(../../../matlabicon.gif)"> |
---|
98 | <li><a href="aoinit.html" class="code" title="function aoinit(SubMachineName)">aoinit</a> AOINIT - Initialization function for the Matlab Middle Layer (MML)</li><li><a href="boostersetup.html" class="code" title="function Boostersetup">boostersetup</a> BoosterSETUP - GUI for doing Booster setup</li></ul> |
---|
99 | <!-- crossreference --> |
---|
100 | |
---|
101 | |
---|
102 | <h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../../up.png"></a></h2> |
---|
103 | <div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function boosterinit(OperationalMode)</a> |
---|
104 | 0002 <span class="comment">%BOOSTERINIT - Initializes parameters for SOLEIL Booster control in MATLAB</span> |
---|
105 | 0003 <span class="comment">%</span> |
---|
106 | 0004 <span class="comment">% Written by Laurent S. Nadolski, Synchrotron SOLEIL</span> |
---|
107 | 0005 <span class="comment">%</span> |
---|
108 | 0006 <span class="comment">%==========================</span> |
---|
109 | 0007 <span class="comment">% Accelerator Family Fields</span> |
---|
110 | 0008 <span class="comment">%==========================</span> |
---|
111 | 0009 <span class="comment">% FamilyName BPMx, HCOR, etc</span> |
---|
112 | 0010 <span class="comment">% CommonNames Shortcut name for each element</span> |
---|
113 | 0011 <span class="comment">% DeviceList [Sector, Number]</span> |
---|
114 | 0012 <span class="comment">% ElementList number in list</span> |
---|
115 | 0013 <span class="comment">% Position m, if thick, it is not the magnet center</span> |
---|
116 | 0014 <span class="comment">%</span> |
---|
117 | 0015 <span class="comment">% MONITOR FIELD</span> |
---|
118 | 0016 <span class="comment">% Mode online/manual/special/simulator</span> |
---|
119 | 0017 <span class="comment">% TangoNames Device Tango Names</span> |
---|
120 | 0018 <span class="comment">% Units Physics or HW</span> |
---|
121 | 0019 <span class="comment">% HW2PhysicsFcn function handle used to convert from hardware to physics units ==> inline will not compile, see below</span> |
---|
122 | 0020 <span class="comment">% HW2PhysicsParams parameters used for conversion function</span> |
---|
123 | 0021 <span class="comment">% Physics2HWFcn function handle used to convert from physics to hardware units</span> |
---|
124 | 0022 <span class="comment">% Physics2HWParams parameters used for conversion function</span> |
---|
125 | 0023 <span class="comment">% HWUnits units for Hardware 'A';</span> |
---|
126 | 0024 <span class="comment">% PhysicsUnits units for physics 'Rad';</span> |
---|
127 | 0025 <span class="comment">% Handles monitor handle</span> |
---|
128 | 0026 <span class="comment">%</span> |
---|
129 | 0027 <span class="comment">% SETPOINT FIELDS</span> |
---|
130 | 0028 <span class="comment">% Mode online/manual/special/simulator</span> |
---|
131 | 0029 <span class="comment">% TangoNames Devices tango names</span> |
---|
132 | 0030 <span class="comment">% Units hardware or physics</span> |
---|
133 | 0031 <span class="comment">% HW2PhysicsFcn function handle used to convert from hardware to physics units</span> |
---|
134 | 0032 <span class="comment">% HW2PhysicsParams parameters used for conversion function</span> |
---|
135 | 0033 <span class="comment">% Physics2HWFcn function handle used to convert from physics to hardware units</span> |
---|
136 | 0034 <span class="comment">% Physics2HWParams parameters used for conversion function</span> |
---|
137 | 0035 <span class="comment">% HWUnits units for Hardware 'A';</span> |
---|
138 | 0036 <span class="comment">% PhysicsUnits units for physics 'Rad';</span> |
---|
139 | 0037 <span class="comment">% Range minsetpoint, maxsetpoint;</span> |
---|
140 | 0038 <span class="comment">% Tolerance setpoint-monitor</span> |
---|
141 | 0039 <span class="comment">% Handles setpoint handle</span> |
---|
142 | 0040 <span class="comment">%</span> |
---|
143 | 0041 <span class="comment">%=============================================</span> |
---|
144 | 0042 <span class="comment">% Accelerator Toolbox Simulation Fields</span> |
---|
145 | 0043 <span class="comment">%=============================================</span> |
---|
146 | 0044 <span class="comment">% ATType Quad, Sext, etc</span> |
---|
147 | 0045 <span class="comment">% ATIndex index in THERING</span> |
---|
148 | 0046 <span class="comment">% ATParameterGroup parameter group</span> |
---|
149 | 0047 <span class="comment">%</span> |
---|
150 | 0048 <span class="comment">%============</span> |
---|
151 | 0049 <span class="comment">% Family List</span> |
---|
152 | 0050 <span class="comment">%============</span> |
---|
153 | 0051 <span class="comment">% BPMx</span> |
---|
154 | 0052 <span class="comment">% BPMz</span> |
---|
155 | 0053 <span class="comment">% HCOR</span> |
---|
156 | 0054 <span class="comment">% VCOR</span> |
---|
157 | 0055 <span class="comment">% BEND</span> |
---|
158 | 0056 <span class="comment">% QF and QD</span> |
---|
159 | 0057 <span class="comment">% SF and SD</span> |
---|
160 | 0058 <span class="comment">% RF</span> |
---|
161 | 0059 <span class="comment">% TUNE</span> |
---|
162 | 0060 <span class="comment">% DCCT</span> |
---|
163 | 0061 <span class="comment">% Machine Parameters</span> |
---|
164 | 0062 |
---|
165 | 0063 <span class="comment">%==============================</span> |
---|
166 | 0064 <span class="comment">%load AcceleratorData structure</span> |
---|
167 | 0065 <span class="comment">%==============================</span> |
---|
168 | 0066 |
---|
169 | 0067 <span class="keyword">if</span> nargin < 1 |
---|
170 | 0068 OperationalMode = 1; |
---|
171 | 0069 <span class="keyword">end</span> |
---|
172 | 0070 |
---|
173 | 0071 <span class="keyword">global</span> GLOBVAL THERING |
---|
174 | 0072 |
---|
175 | 0073 |
---|
176 | 0074 Mode = <span class="string">'Online'</span>; |
---|
177 | 0075 setad([]); <span class="comment">%clear AcceleratorData memory</span> |
---|
178 | 0076 AD.SubMachine = <span class="string">'Booster'</span>; <span class="comment">% Machine Name</span> |
---|
179 | 0077 AD.Energy = 2.75; <span class="comment">% Energy in GeV</span> |
---|
180 | 0078 |
---|
181 | 0079 |
---|
182 | 0080 setad(AD); <span class="comment">%load AcceleratorData</span> |
---|
183 | 0081 |
---|
184 | 0082 <span class="comment">%%%%%%%%%%%%%%%%%%%%</span> |
---|
185 | 0083 <span class="comment">% ACCELERATOR OBJECT</span> |
---|
186 | 0084 <span class="comment">%%%%%%%%%%%%%%%%%%%%</span> |
---|
187 | 0085 |
---|
188 | 0086 setao([]); <span class="comment">%clear previous AcceleratorObjects</span> |
---|
189 | 0087 |
---|
190 | 0088 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
191 | 0089 <span class="comment">%% BPM data: status field designates if BPM in use</span> |
---|
192 | 0090 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
193 | 0091 AO{1}.FamilyName = <span class="string">'BPMx'</span>; |
---|
194 | 0092 AO{1}.FamilyType = <span class="string">'BPM'</span>; |
---|
195 | 0093 AO{1}.MemberOf = {<span class="string">'BPM'</span>; <span class="string">'HBPM'</span>; <span class="string">'Diagnostics'</span>}; |
---|
196 | 0094 AO{1}.Monitor.Mode = Mode; |
---|
197 | 0095 AO{1}.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
198 | 0096 AO{1}.Monitor.HWUnits = <span class="string">'mm'</span>; |
---|
199 | 0097 AO{1}.Monitor.PhysicsUnits = <span class="string">'m'</span>; |
---|
200 | 0098 |
---|
201 | 0099 <span class="comment">% Get mapping from TANGO static database</span> |
---|
202 | 0100 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_bpm_mapping'</span>); |
---|
203 | 0101 |
---|
204 | 0102 cellindex = cell2mat(regexpi(map,<span class="string">'C[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
205 | 0103 numindex = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
206 | 0104 elemindex = cell2mat(regexpi(map,<span class="string">'BPM[0-9]'</span>,<span class="string">'once'</span>))+3; |
---|
207 | 0105 sep = cell2mat(regexpi(map,<span class="string">'::'</span>,<span class="string">'once'</span>))-1; |
---|
208 | 0106 <span class="comment">% dev = deblank(regexprep(char(map),'^BPM\d*::',''));</span> |
---|
209 | 0107 dev = regexprep(map,<span class="string">'^BPM\d*::'</span>,<span class="string">''</span>)'; |
---|
210 | 0108 |
---|
211 | 0109 nb = size(map,2); |
---|
212 | 0110 ik = 1; |
---|
213 | 0111 prev0 = 0; |
---|
214 | 0112 <span class="keyword">for</span> k = 1:nb |
---|
215 | 0113 prev = str2num(map{k}(cellindex(k):cellindex(k)+1)); |
---|
216 | 0114 <span class="keyword">if</span> prev == prev0 |
---|
217 | 0115 ik = ik + 1; |
---|
218 | 0116 <span class="keyword">else</span> |
---|
219 | 0117 ik = 1; |
---|
220 | 0118 <span class="keyword">end</span> |
---|
221 | 0119 AO{1}.DeviceList(k,:) = [prev ik]; |
---|
222 | 0120 AO{1}.ElementList(k,:)= str2num(map{k}(elemindex(k):sep(k))); |
---|
223 | 0121 prev0 = prev; |
---|
224 | 0122 <span class="keyword">end</span> |
---|
225 | 0123 |
---|
226 | 0124 AO{1}.DeviceName(:,:) = dev; |
---|
227 | 0125 AO{1}.Monitor.TangoNames(:,:) = strcat(dev, <span class="string">'/XPosVector'</span>); |
---|
228 | 0126 AO{1}.CommonNames(:,:) = [repmat(<span class="string">'BPMx'</span>,nb,1) num2str((1:nb)',<span class="string">'%02d'</span>)]; |
---|
229 | 0127 |
---|
230 | 0128 AO{1}.Status = ones(nb,1); |
---|
231 | 0129 <span class="comment">% AO{1}.Status([5:22]) = 0;</span> |
---|
232 | 0130 AO{1}.Monitor.HW2PhysicsParams(:,:) = 1e-3*ones(nb,1); |
---|
233 | 0131 AO{1}.Monitor.Physics2HWParams(:,:) = 1e3*ones(nb,1); |
---|
234 | 0132 |
---|
235 | 0133 <span class="comment">% 2 lignes ajoutes pour test debug bpm versus le reste du monde</span> |
---|
236 | 0134 AO{1}.Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
237 | 0135 AO{1}.Monitor.DataType = <span class="string">'Vector'</span>; |
---|
238 | 0136 |
---|
239 | 0137 |
---|
240 | 0138 <span class="comment">% Vertical plane</span> |
---|
241 | 0139 AO{2} = AO{1}; |
---|
242 | 0140 AO{2}.FamilyName = <span class="string">'BPMz'</span>; |
---|
243 | 0141 AO{1}.MemberOf = {<span class="string">'BPM'</span>; <span class="string">'VBPM'</span>; <span class="string">'Diagnostics'</span>}; |
---|
244 | 0142 AO{2}.Monitor.TangoNames(:,:) = strcat(dev,<span class="string">'/ZPosVector'</span>); |
---|
245 | 0143 AO{2}.CommonNames(:,:) = [repmat(<span class="string">'BPMz'</span>,nb,1) num2str((1:nb)',<span class="string">'%02d'</span>)]; |
---|
246 | 0144 |
---|
247 | 0145 <span class="comment">% 2 lignes ajoutes pour test debug bpm versus le reste du monde</span> |
---|
248 | 0146 AO{2}.Monitor.DataType = <span class="string">'Vector'</span>; |
---|
249 | 0147 AO{2}.Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
250 | 0148 |
---|
251 | 0149 AO{1}.Status = AO{1}.Status(:); |
---|
252 | 0150 AO{2}.Status = AO{2}.Status(:); |
---|
253 | 0151 |
---|
254 | 0152 AO{1}.Monitor.Mode = Mode; <span class="comment">%'Special';</span> |
---|
255 | 0153 AO{1}.Monitor.SpecialFunction = <span class="string">'getxsoleil'</span>; |
---|
256 | 0154 |
---|
257 | 0155 <span class="comment">%TODO</span> |
---|
258 | 0156 AO{1}.Sum.Monitor = AO{1}.Monitor; |
---|
259 | 0157 AO{1}.Sum.SpecialFunction = <span class="string">'getbpmsumspear'</span>; |
---|
260 | 0158 AO{1}.Sum.HWUnits = <span class="string">'ADC Counts'</span>; |
---|
261 | 0159 AO{1}.Sum.PhysicsUnits = <span class="string">'ADC Counts'</span>; |
---|
262 | 0160 AO{1}.Sum.HW2PhysicsParams = 1; |
---|
263 | 0161 AO{1}.Sum.Physics2HWParams = 1; |
---|
264 | 0162 |
---|
265 | 0163 AO{1}.Q = AO{1}.Monitor; |
---|
266 | 0164 AO{1}.Q.SpecialFunction = <span class="string">'getbpmqspear'</span>; |
---|
267 | 0165 AO{1}.Q.HWUnits = <span class="string">'mm'</span>; |
---|
268 | 0166 AO{1}.Q.PhysicsUnits = <span class="string">'m'</span>; |
---|
269 | 0167 AO{1}.Q.HW2PhysicsParams = 1e-3; |
---|
270 | 0168 AO{1}.Q.Physics2HWParams = 1000; |
---|
271 | 0169 |
---|
272 | 0170 AO{2}.Monitor.Mode = Mode; <span class="comment">%'Special';</span> |
---|
273 | 0171 AO{2}.Monitor.SpecialFunction = <span class="string">'getzsoleil'</span>; |
---|
274 | 0172 |
---|
275 | 0173 AO{2}.Sum = AO{1}.Sum; |
---|
276 | 0174 AO{2}.Q = AO{1}.Q; |
---|
277 | 0175 |
---|
278 | 0176 <span class="comment">% %===========================================================</span> |
---|
279 | 0177 <span class="comment">% %Corrector data: status field designates if corrector in use</span> |
---|
280 | 0178 <span class="comment">% %===========================================================</span> |
---|
281 | 0179 <span class="comment">%</span> |
---|
282 | 0180 setao(cell2field(AO)); |
---|
283 | 0181 |
---|
284 | 0182 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
285 | 0183 <span class="comment">%% SLOW HORIZONTAL CORRECTORS</span> |
---|
286 | 0184 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
287 | 0185 ifam = 3; |
---|
288 | 0186 AO{ifam}.FamilyName = <span class="string">'HCOR'</span>; |
---|
289 | 0187 AO{ifam}.FamilyType = <span class="string">'COR'</span>; |
---|
290 | 0188 AO{ifam}.MemberOf = {<span class="string">'MachineConfig'</span>; <span class="string">'COR'</span>; <span class="string">'MCOR'</span>; <span class="string">'HCOR'</span>; <span class="string">'Magnet'</span>}; |
---|
291 | 0189 |
---|
292 | 0190 AO{ifam}.Monitor.Mode = Mode; |
---|
293 | 0191 AO{ifam}.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
294 | 0192 AO{ifam}.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
295 | 0193 AO{ifam}.Monitor.HWUnits = <span class="string">'A'</span>; |
---|
296 | 0194 AO{ifam}.Monitor.PhysicsUnits = <span class="string">'rad'</span>; |
---|
297 | 0195 AO{ifam}.Monitor.HW2PhysicsFcn = @amp2k; |
---|
298 | 0196 AO{ifam}.Monitor.Physics2HWFcn = @k2amp; |
---|
299 | 0197 |
---|
300 | 0198 <span class="comment">% Get mapping from TANGO static database</span> |
---|
301 | 0199 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_correctorH_mapping'</span>); |
---|
302 | 0200 dev = regexprep(map,<span class="string">'^HCOR\d*::'</span>,<span class="string">''</span>)'; |
---|
303 | 0201 cellindex = cell2mat(regexpi(map,<span class="string">'C[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
304 | 0202 numindex = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
305 | 0203 elemindex = cell2mat(regexpi(map,<span class="string">'HCOR[0-9]'</span>,<span class="string">'once'</span>))+4; |
---|
306 | 0204 sep = cell2mat(regexpi(map,<span class="string">'::'</span>,<span class="string">'once'</span>))-1; |
---|
307 | 0205 |
---|
308 | 0206 nb = size(map,2); |
---|
309 | 0207 <span class="keyword">for</span> k = 1:nb |
---|
310 | 0208 AO{ifam}.DeviceList(k,:) = [str2num(map{k}(cellindex(k):cellindex(k)+1)) 1]; |
---|
311 | 0209 AO{ifam}.ElementList(k,:) = str2num(map{k}(elemindex(k):sep(k))); |
---|
312 | 0210 <span class="keyword">end</span> |
---|
313 | 0211 |
---|
314 | 0212 AO{ifam}.DeviceName(:,:) = dev; |
---|
315 | 0213 AO{ifam}.CommonNames(:,:) = [repmat(AO{ifam}.FamilyName,nb,1) num2str((1:nb)',<span class="string">'%03d'</span>)]; |
---|
316 | 0214 AO{ifam}.Status = ones(nb,1); |
---|
317 | 0215 AO{ifam}.Monitor.TangoNames(:,:) = strcat(dev,<span class="string">'/current'</span>); |
---|
318 | 0216 AO{ifam}.Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
319 | 0217 |
---|
320 | 0218 <span class="comment">%Load fields from datablock</span> |
---|
321 | 0219 <span class="comment">% AT use the "A-coefficients" for correctors plus an offset</span> |
---|
322 | 0220 [C, Leff, MagnetType, coefficients] = magnetcoefficients(AO{ifam}.FamilyName); |
---|
323 | 0221 |
---|
324 | 0222 <span class="keyword">for</span> ii=1:nb |
---|
325 | 0223 AO{ifam}.Monitor.HW2PhysicsParams{1}(ii,:) = coefficients; |
---|
326 | 0224 AO{ifam}.Monitor.Physics2HWParams{1}(ii,:) = coefficients; |
---|
327 | 0225 <span class="keyword">end</span> |
---|
328 | 0226 |
---|
329 | 0227 AO{ifam}.Setpoint = AO{ifam}.Monitor; |
---|
330 | 0228 AO{ifam}.Desired = AO{ifam}.Monitor; |
---|
331 | 0229 |
---|
332 | 0230 AO{ifam}.Setpoint.Range(:,:) = repmat([-1.5 1.5],nb,1); <span class="comment">% 1 A for ???</span> |
---|
333 | 0231 AO{ifam}.Setpoint.Tolerance(:,:) = 1000*ones(nb,1); |
---|
334 | 0232 AO{ifam}.Setpoint.DeltaRespMat(:,:) = ones(nb,1)*2e-5; <span class="comment">% ???</span> |
---|
335 | 0233 |
---|
336 | 0234 AO{ifam}.Status = AO{ifam}.Status(:); |
---|
337 | 0235 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span> |
---|
338 | 0236 setao(cell2field(AO)); <span class="comment">%required to make physics2hw function</span> |
---|
339 | 0237 AO{ifam}.Setpoint.DeltaRespMat = physics2hw(AO{ifam}.FamilyName,<span class="string">'Setpoint'</span>, <span class="keyword">...</span> |
---|
340 | 0238 AO{ifam}.Setpoint.DeltaRespMat, AO{ifam}.DeviceList); |
---|
341 | 0239 |
---|
342 | 0240 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
343 | 0241 <span class="comment">%% SLOW VERTICAL CORRECTORS</span> |
---|
344 | 0242 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
345 | 0243 ifam = ifam +1; |
---|
346 | 0244 AO{ifam}.FamilyName = <span class="string">'VCOR'</span>; |
---|
347 | 0245 AO{ifam}.FamilyType = <span class="string">'COR'</span>; |
---|
348 | 0246 AO{ifam}.MemberOf = {<span class="string">'MachineConfig'</span>; <span class="string">'COR'</span>; AO{ifam}.FamilyName; <span class="string">'Magnet'</span>}; |
---|
349 | 0247 |
---|
350 | 0248 AO{ifam}.Monitor.Mode = Mode; |
---|
351 | 0249 AO{ifam}.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
352 | 0250 AO{ifam}.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
353 | 0251 AO{ifam}.Monitor.HWUnits = <span class="string">'A'</span>; |
---|
354 | 0252 AO{ifam}.Monitor.PhysicsUnits = <span class="string">'rad'</span>; |
---|
355 | 0253 AO{ifam}.Monitor.HW2PhysicsFcn = @amp2k; |
---|
356 | 0254 AO{ifam}.Monitor.Physics2HWFcn = @k2amp; |
---|
357 | 0255 |
---|
358 | 0256 <span class="comment">% Get mapping from TANGO static database</span> |
---|
359 | 0257 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_correctorV_mapping'</span>); |
---|
360 | 0258 dev = regexprep(map,<span class="string">'^VCOR\d*::'</span>,<span class="string">''</span>)'; |
---|
361 | 0259 cellindex = cell2mat(regexpi(map,<span class="string">'C[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
362 | 0260 numindex = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
363 | 0261 elemindex = cell2mat(regexpi(map,<span class="string">'VCOR[0-9]'</span>,<span class="string">'once'</span>))+4; |
---|
364 | 0262 sep = cell2mat(regexpi(map,<span class="string">'::'</span>,<span class="string">'once'</span>))-1; |
---|
365 | 0263 |
---|
366 | 0264 nb = size(map,2); |
---|
367 | 0265 <span class="keyword">for</span> k = 1:nb |
---|
368 | 0266 AO{ifam}.DeviceList(k,:) = [str2num(map{k}(cellindex(k):cellindex(k)+1)) 1]; |
---|
369 | 0267 AO{ifam}.ElementList(k,:) = str2num(map{k}(elemindex(k):sep(k))); |
---|
370 | 0268 <span class="keyword">end</span> |
---|
371 | 0269 |
---|
372 | 0270 AO{ifam}.DeviceName(:,:) = dev; |
---|
373 | 0271 AO{ifam}.Status = ones(nb,1); |
---|
374 | 0272 AO{ifam}.CommonNames(:,:) = [repmat(AO{ifam}.FamilyName,nb,1) num2str((1:nb)',<span class="string">'%03d'</span>)]; |
---|
375 | 0273 AO{ifam}.Monitor.TangoNames(:,:) = strcat(dev,<span class="string">'/current'</span>); |
---|
376 | 0274 |
---|
377 | 0275 AO{ifam}.Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
378 | 0276 |
---|
379 | 0277 <span class="comment">%Load fields from datablock</span> |
---|
380 | 0278 <span class="comment">% AT use the "A-coefficients" for correctors plus an offset</span> |
---|
381 | 0279 [C, Leff, MagnetType, coefficients] = magnetcoefficients(AO{ifam}.FamilyName); |
---|
382 | 0280 |
---|
383 | 0281 <span class="keyword">for</span> ii = 1:nb |
---|
384 | 0282 AO{ifam}.Monitor.HW2PhysicsParams{1}(ii,:) = coefficients; |
---|
385 | 0283 AO{ifam}.Monitor.Physics2HWParams{1}(ii,:) = coefficients; |
---|
386 | 0284 <span class="keyword">end</span> |
---|
387 | 0285 |
---|
388 | 0286 AO{ifam}.Setpoint = AO{ifam}.Monitor; |
---|
389 | 0287 AO{ifam}.Desired = AO{ifam}.Monitor; |
---|
390 | 0288 |
---|
391 | 0289 AO{ifam}.Setpoint.Range(:,:) = repmat([-1.5 1.5],nb,1); <span class="comment">% 1 A for ???</span> |
---|
392 | 0290 AO{ifam}.Setpoint.Tolerance(:,:) = 1000*ones(nb,1); |
---|
393 | 0291 AO{ifam}.Setpoint.DeltaRespMat(:,:) = ones(nb,1)*4e-5; <span class="comment">% ???</span> |
---|
394 | 0292 |
---|
395 | 0293 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span> |
---|
396 | 0294 setao(cell2field(AO)); <span class="comment">%required to make physics2hw function</span> |
---|
397 | 0295 AO{ifam}.Setpoint.DeltaRespMat = physics2hw(AO{ifam}.FamilyName,<span class="string">'Setpoint'</span>, <span class="keyword">...</span> |
---|
398 | 0296 AO{ifam}.Setpoint.DeltaRespMat, AO{ifam}.DeviceList); |
---|
399 | 0297 |
---|
400 | 0298 <span class="comment">%=============================</span> |
---|
401 | 0299 <span class="comment">% MAIN MAGNETS</span> |
---|
402 | 0300 <span class="comment">%=============================</span> |
---|
403 | 0301 |
---|
404 | 0302 <span class="comment">%===========</span> |
---|
405 | 0303 <span class="comment">%% Dipole data</span> |
---|
406 | 0304 <span class="comment">%===========</span> |
---|
407 | 0305 |
---|
408 | 0306 <span class="comment">% *** BEND ***</span> |
---|
409 | 0307 ifam = ifam+1; |
---|
410 | 0308 AO{ifam}.FamilyName = <span class="string">'BEND'</span>; |
---|
411 | 0309 AO{ifam}.FamilyType = <span class="string">'BEND'</span>; |
---|
412 | 0310 AO{ifam}.MemberOf = {<span class="string">'MachineConfig'</span>; <span class="string">'BEND'</span>; <span class="string">'Magnet'</span>;}; |
---|
413 | 0311 HW2PhysicsParams = magnetcoefficients(<span class="string">'BEND'</span>); |
---|
414 | 0312 Physics2HWParams = HW2PhysicsParams; |
---|
415 | 0313 |
---|
416 | 0314 AO{ifam}.Monitor.Mode = Mode; |
---|
417 | 0315 AO{ifam}.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
418 | 0316 AO{ifam}.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
419 | 0317 AO{ifam}.Monitor.HW2PhysicsFcn = @bend2gev; |
---|
420 | 0318 AO{ifam}.Monitor.Physics2HWFcn = @gev2bend; |
---|
421 | 0319 AO{ifam}.Monitor.HWUnits = <span class="string">'A'</span>; |
---|
422 | 0320 AO{ifam}.Monitor.PhysicsUnits = <span class="string">'energy'</span>; |
---|
423 | 0321 |
---|
424 | 0322 |
---|
425 | 0323 <span class="comment">% nb = size(map,2);</span> |
---|
426 | 0324 nb = 1; |
---|
427 | 0325 |
---|
428 | 0326 AO{ifam}.DeviceList(:,:) = [1 1]; |
---|
429 | 0327 AO{ifam}.ElementList(:,:) = 1; |
---|
430 | 0328 AO{ifam}.DeviceName(:,:) = <span class="string">'BOO/AE/Dipole'</span>; |
---|
431 | 0329 AO{ifam}.Monitor.TangoNames(:,:) = strcat(AO{ifam}.DeviceName,<span class="string">'/d1current'</span>); |
---|
432 | 0330 |
---|
433 | 0331 AO{ifam}.Status = 1; |
---|
434 | 0332 AO{ifam}.Monitor.Handles = NaN; |
---|
435 | 0333 |
---|
436 | 0334 val = 1.0; |
---|
437 | 0335 AO{ifam}.Monitor.HW2PhysicsParams{1}(1,:) = HW2PhysicsParams; |
---|
438 | 0336 AO{ifam}.Monitor.HW2PhysicsParams{2}(1,:) = val; |
---|
439 | 0337 AO{ifam}.Monitor.Physics2HWParams{1}(1,:) = Physics2HWParams; |
---|
440 | 0338 AO{ifam}.Monitor.Physics2HWParams{2}(1,:) = val; |
---|
441 | 0339 |
---|
442 | 0340 <span class="comment">% When using bend2gev / gev2bend don't use Params</span> |
---|
443 | 0341 AO{ifam}.Monitor = rmfield(AO{ifam}.Monitor,<span class="string">'HW2PhysicsParams'</span>); |
---|
444 | 0342 AO{ifam}.Monitor = rmfield(AO{ifam}.Monitor,<span class="string">'Physics2HWParams'</span>); |
---|
445 | 0343 |
---|
446 | 0344 AO{ifam}.Setpoint = AO{ifam}.Monitor; |
---|
447 | 0345 AO{ifam}.Desired = AO{ifam}.Monitor; |
---|
448 | 0346 AO{ifam}.Setpoint.TangoNames = strcat(AO{ifam}.DeviceName,<span class="string">'/current'</span>); |
---|
449 | 0347 |
---|
450 | 0348 AO{ifam}.Setpoint.Range(:,:) = [0 560]; <span class="comment">% 525 A for 1.71T</span> |
---|
451 | 0349 AO{ifam}.Setpoint.Tolerance(:,:) = 0.05; |
---|
452 | 0350 AO{ifam}.Setpoint.DeltaRespMat(:,:) = 0.05; |
---|
453 | 0351 |
---|
454 | 0352 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span> |
---|
455 | 0353 <span class="comment">%setao(cell2field(AO)); %required to make physics2hw function</span> |
---|
456 | 0354 <span class="comment">%AO{ifam}.Setpoint.DeltaRespMat=physics2hw(AO{ifam}.FamilyName,'Setpoint',AO{ifam}.Setpoint.DeltaRespMat,AO{ifam}.DeviceList);</span> |
---|
457 | 0355 |
---|
458 | 0356 |
---|
459 | 0357 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
460 | 0358 <span class="comment">%% QUADRUPOLE MAGNETS</span> |
---|
461 | 0359 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
462 | 0360 |
---|
463 | 0361 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_quadrupole_mapping'</span>); |
---|
464 | 0362 iifam = cell2mat(regexpi(map,<span class="string">'/Q'</span>,<span class="string">'once'</span>))+2; |
---|
465 | 0363 ifound = regexpi(map,<span class="string">'/QF'</span>); |
---|
466 | 0364 |
---|
467 | 0365 <span class="comment">%%% build mapping for the two families</span> |
---|
468 | 0366 <span class="comment">%%% cleanup</span> |
---|
469 | 0367 mapQF = []; mapQD = []; |
---|
470 | 0368 <span class="keyword">for</span> k = 1:length(ifound) |
---|
471 | 0369 <span class="keyword">if</span> isempty(ifound{k}) |
---|
472 | 0370 mapQD = [mapQD map(k)]; |
---|
473 | 0371 <span class="keyword">else</span> |
---|
474 | 0372 mapQF = [mapQF map(k)]; |
---|
475 | 0373 <span class="keyword">end</span> |
---|
476 | 0374 <span class="keyword">end</span> |
---|
477 | 0375 |
---|
478 | 0376 |
---|
479 | 0377 mapQP = {mapQF,mapQD}; |
---|
480 | 0378 nameQP = {<span class="string">'QF'</span>, <span class="string">'QD'</span>}; |
---|
481 | 0379 |
---|
482 | 0380 <span class="comment">% for both family</span> |
---|
483 | 0381 <span class="keyword">for</span> k = 1:2 |
---|
484 | 0382 sep = cell2mat(regexprep(mapQP{k},<span class="string">'::'</span>,<span class="string">'once'</span>))-1; |
---|
485 | 0383 dev = regexprep(mapQP{k},<span class="string">'^Q[F,D]\d*::'</span>,<span class="string">''</span>)'; |
---|
486 | 0384 ifam = ifam + 1; |
---|
487 | 0385 |
---|
488 | 0386 AO{ifam}.FamilyName = nameQP{k}; |
---|
489 | 0387 AO{ifam}.FamilyType = <span class="string">'QUAD'</span>; |
---|
490 | 0388 AO{ifam}.MemberOf = {<span class="string">'MachineConfig'</span>; <span class="string">'QUAD'</span>; <span class="string">'Magnet'</span>;}; |
---|
491 | 0389 HW2PhysicsParams = magnetcoefficients(AO{ifam}.FamilyName); |
---|
492 | 0390 Physics2HWParams = magnetcoefficients(AO{ifam}.FamilyName); |
---|
493 | 0391 |
---|
494 | 0392 AO{ifam}.Monitor.Mode = Mode; |
---|
495 | 0393 AO{ifam}.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
496 | 0394 AO{ifam}.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
497 | 0395 AO{ifam}.Monitor.HWUnits = <span class="string">'A'</span>; |
---|
498 | 0396 AO{ifam}.Monitor.PhysicsUnits = <span class="string">'meter^-2'</span>; |
---|
499 | 0397 AO{ifam}.Monitor.HW2PhysicsFcn = @amp2k; |
---|
500 | 0398 AO{ifam}.Monitor.Physics2HWFcn = @k2amp; |
---|
501 | 0399 |
---|
502 | 0400 AO{ifam}.DeviceList(1,:) = [1 1]; |
---|
503 | 0401 AO{ifam}.ElementList(1,:)= 1; |
---|
504 | 0402 |
---|
505 | 0403 prev0 = prev; |
---|
506 | 0404 |
---|
507 | 0405 AO{ifam}.DeviceName(:,:) = dev; |
---|
508 | 0406 |
---|
509 | 0407 <span class="comment">%% Build common names</span> |
---|
510 | 0408 AO{ifam}.CommonNames(:,:) = AO{ifam}.FamilyName; |
---|
511 | 0409 |
---|
512 | 0410 AO{ifam}.Monitor.TangoNames(:,:) = strcat(dev,<span class="string">'/current'</span>); |
---|
513 | 0411 |
---|
514 | 0412 AO{ifam}.Status = 1; |
---|
515 | 0413 AO{ifam}.Monitor.Handles(:,1) = NaN; |
---|
516 | 0414 |
---|
517 | 0415 AO{ifam}.Monitor.HW2PhysicsParams{1}(1,:) = HW2PhysicsParams; |
---|
518 | 0416 AO{ifam}.Monitor.HW2PhysicsParams{2}(1,:) = val; |
---|
519 | 0417 AO{ifam}.Monitor.Physics2HWParams{1}(1,:) = Physics2HWParams; |
---|
520 | 0418 AO{ifam}.Monitor.Physics2HWParams{2}(1,:) = val; |
---|
521 | 0419 |
---|
522 | 0420 AO{ifam}.Setpoint = AO{ifam}.Monitor; |
---|
523 | 0421 AO{ifam}.Desired = AO{ifam}.Monitor; |
---|
524 | 0422 |
---|
525 | 0423 AO{ifam}.Setpoint.Range(:,:) = [0 300]; <span class="comment">%260 A for 19.7Tm-1</span> |
---|
526 | 0424 AO{ifam}.Setpoint.Tolerance(:,:) = 0.05; |
---|
527 | 0425 AO{ifam}.Setpoint.DeltaRespMat(:,:) = 0.02; |
---|
528 | 0426 |
---|
529 | 0427 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span> |
---|
530 | 0428 setao(cell2field(AO)); <span class="comment">%required to make physics2hw function</span> |
---|
531 | 0429 <span class="comment">% AO{ifam}.Setpoint.DeltaRespMat = physics2hw(AO{ifam}.FamilyName, ...</span> |
---|
532 | 0430 <span class="comment">% 'Setpoint',AO{ifam}.Setpoint.DeltaRespMat,AO{ifam}.DeviceList);</span> |
---|
533 | 0431 <span class="keyword">end</span> |
---|
534 | 0432 |
---|
535 | 0433 |
---|
536 | 0434 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
537 | 0435 <span class="comment">%% SEXTUPOLE MAGNETS</span> |
---|
538 | 0436 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span> |
---|
539 | 0437 |
---|
540 | 0438 map=tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'tracy_sextupole_mapping'</span>); |
---|
541 | 0439 iifam = cell2mat(regexpi(map,<span class="string">'/S'</span>,<span class="string">'once'</span>))+2; |
---|
542 | 0440 ifound = regexpi(map,<span class="string">'/SF'</span>); |
---|
543 | 0441 |
---|
544 | 0442 <span class="comment">%%% build mapping for the ten families</span> |
---|
545 | 0443 <span class="comment">%%% cleanup</span> |
---|
546 | 0444 mapSF = []; mapSD = []; |
---|
547 | 0445 <span class="keyword">for</span> k = 1:length(ifound) |
---|
548 | 0446 <span class="keyword">if</span> isempty(ifound{k}) |
---|
549 | 0447 mapSD = [mapSD map(k)]; |
---|
550 | 0448 <span class="keyword">else</span> |
---|
551 | 0449 mapSF = [mapSF map(k)]; |
---|
552 | 0450 <span class="keyword">end</span> |
---|
553 | 0451 <span class="keyword">end</span> |
---|
554 | 0452 |
---|
555 | 0453 |
---|
556 | 0454 mapS = {mapSF,mapSD}; |
---|
557 | 0455 nameS = {<span class="string">'SF'</span>, <span class="string">'SD'</span>}; |
---|
558 | 0456 |
---|
559 | 0457 <span class="comment">% For both families</span> |
---|
560 | 0458 <span class="keyword">for</span> k = 1:2 |
---|
561 | 0459 sep = cell2mat(regexpi(mapS{k},<span class="string">'::'</span>,<span class="string">'once'</span>))-1; |
---|
562 | 0460 dev = regexprep(mapS{k},<span class="string">'^S[F,D]\d*::'</span>,<span class="string">''</span>)'; |
---|
563 | 0461 |
---|
564 | 0462 ifam=ifam+1; |
---|
565 | 0463 |
---|
566 | 0464 AO{ifam}.FamilyName = nameS{k}; |
---|
567 | 0465 AO{ifam}.FamilyType = <span class="string">'SEXT'</span>; |
---|
568 | 0466 AO{ifam}.MemberOf = {<span class="string">'MachineConfig'</span>; <span class="string">'SEXT'</span>; <span class="string">'Magnet'</span>;}; |
---|
569 | 0467 HW2PhysicsParams = magnetcoefficients(AO{ifam}.FamilyName); |
---|
570 | 0468 Physics2HWParams = magnetcoefficients(AO{ifam}.FamilyName); |
---|
571 | 0469 |
---|
572 | 0470 AO{ifam}.Monitor.Mode = Mode; |
---|
573 | 0471 AO{ifam}.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
574 | 0472 AO{ifam}.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
575 | 0473 AO{ifam}.Monitor.HW2PhysicsFcn = @amp2k; |
---|
576 | 0474 AO{ifam}.Monitor.Physics2HWFcn = @k2amp; |
---|
577 | 0475 AO{ifam}.Monitor.HWUnits = <span class="string">'A'</span>; |
---|
578 | 0476 AO{ifam}.Monitor.PhysicsUnits = <span class="string">'meter^-3'</span>; |
---|
579 | 0477 |
---|
580 | 0478 AO{ifam}.DeviceList(:,:) = [1 1]; |
---|
581 | 0479 AO{ifam}.ElementList(:,:)= 1; |
---|
582 | 0480 |
---|
583 | 0481 AO{ifam}.DeviceName(:,:) = dev; |
---|
584 | 0482 <span class="comment">%% Build common names</span> |
---|
585 | 0483 AO{ifam}.CommonNames(:,:) = AO{ifam}.FamilyName; |
---|
586 | 0484 AO{ifam}.Monitor.TangoNames(:,:) = strcat(dev,<span class="string">'/current'</span>); |
---|
587 | 0485 |
---|
588 | 0486 |
---|
589 | 0487 AO{ifam}.Status = 1; |
---|
590 | 0488 AO{ifam}.Monitor.Handles(:,1) = NaN; |
---|
591 | 0489 |
---|
592 | 0490 val = 1.0; |
---|
593 | 0491 AO{ifam}.Monitor.HW2PhysicsParams{1}(1,:) = HW2PhysicsParams; |
---|
594 | 0492 AO{ifam}.Monitor.HW2PhysicsParams{2}(1,:) = val; |
---|
595 | 0493 AO{ifam}.Monitor.Physics2HWParams{1}(1,:) = Physics2HWParams; |
---|
596 | 0494 AO{ifam}.Monitor.Physics2HWParams{2}(1,:) = val; |
---|
597 | 0495 |
---|
598 | 0496 AO{ifam}.Setpoint = AO{ifam}.Monitor; |
---|
599 | 0497 AO{ifam}.Desired = AO{ifam}.Monitor; |
---|
600 | 0498 |
---|
601 | 0499 AO{ifam}.Setpoint.Range(:,:) = [0 400]; <span class="comment">% 343 A for 320 Tm-2</span> |
---|
602 | 0500 AO{ifam}.Setpoint.Tolerance(:,:) = 0.05; |
---|
603 | 0501 AO{ifam}.Setpoint.DeltaRespMat(:,:) = 0.05; |
---|
604 | 0502 |
---|
605 | 0503 <span class="comment">%convert response matrix kicks to HWUnits (after AO is loaded to AppData)</span> |
---|
606 | 0504 setao(cell2field(AO)); <span class="comment">%required to make physics2hw function</span> |
---|
607 | 0505 <span class="comment">% AO{ifam}.Setpoint.DeltaRespMat=physics2hw(AO{ifam}.FamilyName,'Setpoint',AO{ifam}.Setpoint.DeltaRespMat,AO{ifam}.DeviceList);</span> |
---|
608 | 0506 <span class="keyword">end</span> |
---|
609 | 0507 |
---|
610 | 0508 <span class="comment">% Convert to new format</span> |
---|
611 | 0509 AO = cell2field(AO); |
---|
612 | 0510 |
---|
613 | 0511 |
---|
614 | 0512 <span class="comment">%=======</span> |
---|
615 | 0513 <span class="comment">%% TUNE</span> |
---|
616 | 0514 <span class="comment">%=======</span> |
---|
617 | 0515 ifam = <span class="string">'TUNE'</span>; |
---|
618 | 0516 AO.(ifam).FamilyName = ifam; |
---|
619 | 0517 AO.(ifam).FamilyType = <span class="string">'Diagnostic'</span>; |
---|
620 | 0518 AO.(ifam).MemberOf = {<span class="string">'Diagnostics'</span>}; |
---|
621 | 0519 AO.(ifam).CommonNames = [<span class="string">'nux'</span>;<span class="string">'nuz'</span>;<span class="string">'nus'</span>]; |
---|
622 | 0520 AO.(ifam).DeviceList = [1 1; 1 2; 1 3]; |
---|
623 | 0521 AO.(ifam).ElementList = [1 2 3]'; |
---|
624 | 0522 AO.(ifam).Status = [1 1 1]'; |
---|
625 | 0523 |
---|
626 | 0524 AO.(ifam).Monitor.Mode = Mode; <span class="comment">%'Simulator'; % Mode;</span> |
---|
627 | 0525 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
628 | 0526 AO.(ifam).Monitor.DataTypeIndex = [1 2]; |
---|
629 | 0527 AO.(ifam).Monitor.TangoNames = [<span class="string">'BOO/DG/BPM-TUNEX/Nu'</span>; <span class="keyword">...</span> |
---|
630 | 0528 <span class="string">'BOO/DG/BPM-TUNEZ/Nu'</span>; <span class="string">'BOO/DG/BPM-TUNEX/Nu'</span>]; |
---|
631 | 0529 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
632 | 0530 AO.(ifam).Monitor.Handles = NaN; |
---|
633 | 0531 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
634 | 0532 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
635 | 0533 AO.(ifam).Monitor.HWUnits = <span class="string">'fractional tune'</span>; |
---|
636 | 0534 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'fractional tune'</span>; |
---|
637 | 0535 |
---|
638 | 0536 <span class="comment">%%%%%%%%%%%%%%%%%%</span> |
---|
639 | 0537 <span class="comment">%% Pulsed Magnet</span> |
---|
640 | 0538 <span class="comment">%%%%%%%%%%%%%%%%%%</span> |
---|
641 | 0539 |
---|
642 | 0540 <span class="comment">%% Injection kicker</span> |
---|
643 | 0541 ifam = <span class="string">'K_Inj'</span>; |
---|
644 | 0542 AO.(ifam).FamilyName = <span class="string">'K_Inj'</span>; |
---|
645 | 0543 AO.(ifam).MemberOf = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>}; |
---|
646 | 0544 AO.(ifam).Monitor.Mode = Mode; |
---|
647 | 0545 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
648 | 0546 |
---|
649 | 0547 AO.(ifam).Status = 1; |
---|
650 | 0548 AO.(ifam).DeviceName = cellstr(<span class="string">'BOO-C01/EP/AL_K.Inj'</span>); |
---|
651 | 0549 AO.(ifam).CommonNames = <span class="string">'K_Inj'</span>; |
---|
652 | 0550 AO.(ifam).ElementList = 1; |
---|
653 | 0551 AO.(ifam).DeviceList(:,:) = [1 1]; |
---|
654 | 0552 AO.(ifam).Monitor.Handles(:,1) = NaN; |
---|
655 | 0553 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>); |
---|
656 | 0554 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
657 | 0555 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
658 | 0556 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
659 | 0557 AO.(ifam).Monitor.HWUnits = <span class="string">'V'</span>; |
---|
660 | 0558 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mrad'</span>; |
---|
661 | 0559 AO.(ifam).Setpoint = AO.(ifam).Monitor; |
---|
662 | 0560 AO.(ifam).Desired = AO.(ifam).Monitor; |
---|
663 | 0561 |
---|
664 | 0562 <span class="comment">%% Injection Septum</span> |
---|
665 | 0563 ifam = <span class="string">'SEP_Inj'</span>; |
---|
666 | 0564 AO.(ifam).FamilyName = <span class="string">'SEP_Inj'</span>; |
---|
667 | 0565 AO.(ifam).MemberOf = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>}; |
---|
668 | 0566 AO.(ifam).Monitor.Mode = Mode; |
---|
669 | 0567 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
670 | 0568 |
---|
671 | 0569 AO.(ifam).Status = 1; |
---|
672 | 0570 AO.(ifam).DeviceName = cellstr(<span class="string">'BOO-C22/EP/AL_SEP_P.Inj'</span>); |
---|
673 | 0571 AO.(ifam).CommonNames = <span class="string">'SEP_P'</span>; |
---|
674 | 0572 AO.(ifam).ElementList = 1; |
---|
675 | 0573 AO.(ifam).DeviceList(:,:) = [1 1]; |
---|
676 | 0574 AO.(ifam).Monitor.Handles(:,1) = NaN; |
---|
677 | 0575 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>); |
---|
678 | 0576 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
679 | 0577 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
680 | 0578 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
681 | 0579 AO.(ifam).Monitor.HWUnits = <span class="string">'V'</span>; |
---|
682 | 0580 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mrad'</span>; |
---|
683 | 0581 AO.(ifam).Setpoint = AO.(ifam).Monitor; |
---|
684 | 0582 AO.(ifam).Desired = AO.(ifam).Monitor; |
---|
685 | 0583 |
---|
686 | 0584 <span class="comment">%% Injection Septum</span> |
---|
687 | 0585 ifam = <span class="string">'SEPA_EXT'</span>; |
---|
688 | 0586 AO.(ifam).FamilyName = ifam; |
---|
689 | 0587 AO.(ifam).MemberOf = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>}; |
---|
690 | 0588 AO.(ifam).Monitor.Mode = Mode; |
---|
691 | 0589 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
692 | 0590 |
---|
693 | 0591 AO.(ifam).Status = 0; |
---|
694 | 0592 AO.(ifam).DeviceName = cellstr(<span class="string">'BOO-C22/EP/AL_SEP_P.Inj'</span>); |
---|
695 | 0593 AO.(ifam).CommonNames = <span class="string">'SEP_P'</span>; |
---|
696 | 0594 AO.(ifam).ElementList = 1; |
---|
697 | 0595 AO.(ifam).DeviceList(:,:) = [1 1]; |
---|
698 | 0596 AO.(ifam).Monitor.Handles(:,1) = NaN; |
---|
699 | 0597 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>); |
---|
700 | 0598 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
701 | 0599 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
702 | 0600 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
703 | 0601 AO.(ifam).Monitor.HWUnits = <span class="string">'V'</span>; |
---|
704 | 0602 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mrad'</span>; |
---|
705 | 0603 AO.(ifam).Setpoint = AO.(ifam).Monitor; |
---|
706 | 0604 AO.(ifam).Desired = AO.(ifam).Monitor; |
---|
707 | 0605 |
---|
708 | 0606 <span class="comment">%% Injection Septum</span> |
---|
709 | 0607 ifam = <span class="string">'SEP_P_EXT'</span>; |
---|
710 | 0608 AO.(ifam).FamilyName = ifam; |
---|
711 | 0609 AO.(ifam).MemberOf = {<span class="string">'Injection'</span>;<span class="string">'Archivable'</span>;<span class="string">'EP'</span>}; |
---|
712 | 0610 AO.(ifam).Monitor.Mode = Mode; |
---|
713 | 0611 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
714 | 0612 |
---|
715 | 0613 AO.(ifam).Status = 0; |
---|
716 | 0614 AO.(ifam).DeviceName = cellstr(<span class="string">'BOO-C11/EP/AL_SEP_P.Ext'</span>); |
---|
717 | 0615 AO.(ifam).CommonNames = <span class="string">'SEP_P_EXT'</span>; |
---|
718 | 0616 AO.(ifam).ElementList = 1; |
---|
719 | 0617 AO.(ifam).DeviceList(:,:) = [1 1]; |
---|
720 | 0618 AO.(ifam).Monitor.Handles(:,1) = NaN; |
---|
721 | 0619 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/voltage'</span>); |
---|
722 | 0620 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
723 | 0621 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
724 | 0622 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
725 | 0623 AO.(ifam).Monitor.HWUnits = <span class="string">'V'</span>; |
---|
726 | 0624 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mrad'</span>; |
---|
727 | 0625 AO.(ifam).Setpoint = AO.(ifam).Monitor; |
---|
728 | 0626 AO.(ifam).Desired = AO.(ifam).Monitor; |
---|
729 | 0627 |
---|
730 | 0628 <span class="comment">%%%%%%%%%%%%%%%%%%</span> |
---|
731 | 0629 <span class="comment">%% VACUUM SYSTEM</span> |
---|
732 | 0630 <span class="comment">%%%%%%%%%%%%%%%%%%</span> |
---|
733 | 0631 |
---|
734 | 0632 <span class="comment">%% IonPump</span> |
---|
735 | 0633 ifam = <span class="string">'PI'</span>; |
---|
736 | 0634 AO.(ifam).FamilyName = <span class="string">'PI'</span>; |
---|
737 | 0635 AO.(ifam).FamilyType = <span class="string">'PI'</span>; |
---|
738 | 0636 AO.(ifam).MemberOf = {<span class="string">'PlotFamily'</span>; <span class="string">'IonPump'</span>; <span class="string">'Pressure'</span>; <span class="string">'Archivable'</span>}; |
---|
739 | 0637 AO.(ifam).Monitor.Mode = Mode; |
---|
740 | 0638 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
741 | 0639 |
---|
742 | 0640 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'pompe_ionique'</span>); |
---|
743 | 0641 numindex = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
744 | 0642 |
---|
745 | 0643 nb = size(map,2); |
---|
746 | 0644 <span class="keyword">for</span> k = 1:nb, |
---|
747 | 0645 <span class="keyword">switch</span> map{k}(1:6) |
---|
748 | 0646 <span class="keyword">case</span> <span class="string">'BOO-B1'</span> |
---|
749 | 0647 k1 = 1; |
---|
750 | 0648 <span class="keyword">case</span> <span class="string">'BOO-Bi'</span> |
---|
751 | 0649 k1 = 2; |
---|
752 | 0650 <span class="keyword">case</span> <span class="string">'BOO-B2'</span> |
---|
753 | 0651 k1 = 3; |
---|
754 | 0652 <span class="keyword">case</span> <span class="string">'BOO-Be'</span> |
---|
755 | 0653 k1 = 4; |
---|
756 | 0654 <span class="keyword">case</span> <span class="string">'BOO-B3'</span> |
---|
757 | 0655 k1 = 5; |
---|
758 | 0656 <span class="keyword">case</span> <span class="string">'BOO-B4'</span> |
---|
759 | 0657 k1 = 6; |
---|
760 | 0658 <span class="keyword">end</span> |
---|
761 | 0659 AO.(ifam).DeviceList(k,:) = [k1 str2double(map{k}(numindex(k)))]; |
---|
762 | 0660 AO.(ifam).ElementList(k,:) = k; |
---|
763 | 0661 AO.(ifam).CommonNames(k,:) = [<span class="string">'PI'</span> num2str(ik)]; |
---|
764 | 0662 <span class="keyword">end</span> |
---|
765 | 0663 |
---|
766 | 0664 AO.(ifam).Status = ones(nb,1); |
---|
767 | 0665 <span class="comment">%AO.(ifam).Status(26) = 0;% BOO-Bext/VI/PI300.3</span> |
---|
768 | 0666 AO.(ifam).DeviceName = map'; |
---|
769 | 0667 AO.(ifam).CommonNames = AO.(ifam).CommonNames'; |
---|
770 | 0668 AO.(ifam).ElementList = (1:nb)'; |
---|
771 | 0669 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
772 | 0670 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/pressure'</span>); |
---|
773 | 0671 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
774 | 0672 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
775 | 0673 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
776 | 0674 AO.(ifam).Monitor.HWUnits = <span class="string">'mBar'</span>; |
---|
777 | 0675 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mBar'</span>; |
---|
778 | 0676 |
---|
779 | 0677 <span class="comment">%% Penning Gauges</span> |
---|
780 | 0678 ifam = <span class="string">'JPEN'</span>; |
---|
781 | 0679 AO.(ifam).FamilyName = <span class="string">'JPEN'</span>; |
---|
782 | 0680 AO.(ifam).MemberOf = {<span class="string">'PlotFamily'</span>; <span class="string">'PenningGauge'</span>; <span class="string">'Pressure'</span>; <span class="string">'Archivable'</span>}; |
---|
783 | 0681 AO.(ifam).Monitor.Mode = Mode; |
---|
784 | 0682 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
785 | 0683 |
---|
786 | 0684 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'jauge_penning'</span>); |
---|
787 | 0685 numindex = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
788 | 0686 |
---|
789 | 0687 nb = size(map,2); |
---|
790 | 0688 <span class="keyword">for</span> k = 1:nb, |
---|
791 | 0689 <span class="keyword">switch</span> map{k}(1:6) |
---|
792 | 0690 <span class="keyword">case</span> <span class="string">'BOO-B1'</span> |
---|
793 | 0691 k1 = 1; |
---|
794 | 0692 <span class="keyword">case</span> <span class="string">'BOO-Bi'</span> |
---|
795 | 0693 k1 = 2; |
---|
796 | 0694 <span class="keyword">case</span> <span class="string">'BOO-B2'</span> |
---|
797 | 0695 k1 = 3; |
---|
798 | 0696 <span class="keyword">case</span> <span class="string">'BOO-Be'</span> |
---|
799 | 0697 k1 = 4; |
---|
800 | 0698 <span class="keyword">case</span> <span class="string">'BOO-B3'</span> |
---|
801 | 0699 k1 = 5; |
---|
802 | 0700 <span class="keyword">case</span> <span class="string">'BOO-B4'</span> |
---|
803 | 0701 k1 = 6; |
---|
804 | 0702 <span class="keyword">end</span> |
---|
805 | 0703 AO.(ifam).DeviceList(k,:) = [k1 str2double(map{k}(numindex(k)))]; |
---|
806 | 0704 AO.(ifam).ElementList(k,:) = k; |
---|
807 | 0705 AO.(ifam).CommonNames(k,:) = [<span class="string">'JPEN'</span> num2str(ik)]; |
---|
808 | 0706 <span class="keyword">end</span> |
---|
809 | 0707 |
---|
810 | 0708 AO.(ifam).Status = ones(nb,1); |
---|
811 | 0709 AO.(ifam).DeviceName = map'; |
---|
812 | 0710 AO.(ifam).CommonNames = AO.(ifam).CommonNames'; |
---|
813 | 0711 AO.(ifam).ElementList = (1:nb)'; |
---|
814 | 0712 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
815 | 0713 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/pressure'</span>); |
---|
816 | 0714 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
817 | 0715 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
818 | 0716 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
819 | 0717 AO.(ifam).Monitor.HWUnits = <span class="string">'mBar'</span>; |
---|
820 | 0718 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mBar'</span>; |
---|
821 | 0719 |
---|
822 | 0720 <span class="comment">%% Pirani Gauges</span> |
---|
823 | 0721 ifam = <span class="string">'JPIR'</span>; |
---|
824 | 0722 AO.(ifam).FamilyName = <span class="string">'JPIR'</span>; |
---|
825 | 0723 AO.(ifam).MemberOf = {<span class="string">'PlotFamily'</span>; <span class="string">'PiraniGauge'</span>; <span class="string">'Pressure'</span>; <span class="string">'Archivable'</span>}; |
---|
826 | 0724 AO.(ifam).Monitor.Mode = Mode; |
---|
827 | 0725 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
828 | 0726 |
---|
829 | 0727 map = tango_get_db_property(<span class="string">'booster'</span>,<span class="string">'jauge_pirani'</span>); |
---|
830 | 0728 numindex = cell2mat(regexpi(map,<span class="string">'\.[0-9]'</span>,<span class="string">'once'</span>))+1; |
---|
831 | 0729 |
---|
832 | 0730 nb = size(map,2); |
---|
833 | 0731 <span class="keyword">for</span> k = 1:nb, |
---|
834 | 0732 <span class="keyword">switch</span> map{k}(1:6) |
---|
835 | 0733 <span class="keyword">case</span> <span class="string">'BOO-B1'</span> |
---|
836 | 0734 k1 = 1; |
---|
837 | 0735 <span class="keyword">case</span> <span class="string">'BOO-Bi'</span> |
---|
838 | 0736 k1 = 2; |
---|
839 | 0737 <span class="keyword">case</span> <span class="string">'BOO-B2'</span> |
---|
840 | 0738 k1 = 3; |
---|
841 | 0739 <span class="keyword">case</span> <span class="string">'BOO-Be'</span> |
---|
842 | 0740 k1 = 4; |
---|
843 | 0741 <span class="keyword">case</span> <span class="string">'BOO-B3'</span> |
---|
844 | 0742 k1 = 5; |
---|
845 | 0743 <span class="keyword">case</span> <span class="string">'BOO-B4'</span> |
---|
846 | 0744 k1 = 6; |
---|
847 | 0745 <span class="keyword">end</span> |
---|
848 | 0746 AO.(ifam).DeviceList(k,:) = [k1 str2double(map{k}(numindex(k)))]; |
---|
849 | 0747 AO.(ifam).ElementList(k,:) = k; |
---|
850 | 0748 AO.(ifam).CommonNames(k,:) = [<span class="string">'JPIR'</span> num2str(ik)]; |
---|
851 | 0749 <span class="keyword">end</span> |
---|
852 | 0750 |
---|
853 | 0751 AO.(ifam).Status = ones(nb,1); |
---|
854 | 0752 AO.(ifam).DeviceName = map'; |
---|
855 | 0753 AO.(ifam).CommonNames = AO.(ifam).CommonNames'; |
---|
856 | 0754 AO.(ifam).ElementList = (1:nb)'; |
---|
857 | 0755 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1); |
---|
858 | 0756 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, <span class="string">'/pressure'</span>); |
---|
859 | 0757 AO.(ifam).Monitor.HW2PhysicsParams = 1; |
---|
860 | 0758 AO.(ifam).Monitor.Physics2HWParams = 1; |
---|
861 | 0759 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
862 | 0760 AO.(ifam).Monitor.HWUnits = <span class="string">'mBar'</span>; |
---|
863 | 0761 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'mBar'</span>; |
---|
864 | 0762 |
---|
865 | 0763 <span class="comment">%====</span> |
---|
866 | 0764 <span class="comment">%% DCCT</span> |
---|
867 | 0765 <span class="comment">%====</span> |
---|
868 | 0766 ifam=ifam+1; |
---|
869 | 0767 AO.DCCT.FamilyName = <span class="string">'DCCT'</span>; |
---|
870 | 0768 AO.DCCT.FamilyType = <span class="string">'Diagnostic'</span>; |
---|
871 | 0769 AO.DCCT.MemberOf = {<span class="string">'Diagnostics'</span>,<span class="string">'Archivable'</span>,<span class="string">'Plotfamily'</span>}; |
---|
872 | 0770 AO.DCCT.CommonNames = <span class="string">'DCCT'</span>; |
---|
873 | 0771 AO.DCCT.DeviceList = [1 1; 1 2]; |
---|
874 | 0772 AO.DCCT.ElementList = (1:2)'; |
---|
875 | 0773 AO.DCCT.Status = AO.DCCT.ElementList; |
---|
876 | 0774 |
---|
877 | 0775 AO.DCCT.Monitor.Mode = Mode; |
---|
878 | 0776 AO.DCCT.FamilyName = <span class="string">'DCCT'</span>; |
---|
879 | 0777 AO.DCCT.deviceName = <span class="string">'BOO-C01/DG/DCCT'</span>; |
---|
880 | 0778 AO.DCCT.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
881 | 0779 AO.DCCT.Monitor.TangoNames = [<span class="string">'BOO-C01/DG/DCCT/iInj'</span>; <span class="string">'BOO-C01/DG/DCCT/iExt'</span>]; <span class="comment">%afin de ne pas avoir de bug</span> |
---|
882 | 0780 AO.DCCT.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
883 | 0781 AO.DCCT.Monitor.Handles = NaN; |
---|
884 | 0782 AO.DCCT.Monitor.HWUnits = <span class="string">'milli-ampere'</span>; |
---|
885 | 0783 AO.DCCT.Monitor.PhysicsUnits = <span class="string">'A'</span>; |
---|
886 | 0784 AO.DCCT.Monitor.HW2PhysicsParams = 1; |
---|
887 | 0785 AO.DCCT.Monitor.Physics2HWParams = 1; |
---|
888 | 0786 |
---|
889 | 0787 <span class="comment">%============</span> |
---|
890 | 0788 <span class="comment">%% RF System</span> |
---|
891 | 0789 <span class="comment">%============</span> |
---|
892 | 0790 ifam = <span class="string">'RF'</span>; |
---|
893 | 0791 AO.(ifam).FamilyName = ifam; |
---|
894 | 0792 AO.(ifam).FamilyType = <span class="string">'RF'</span>; |
---|
895 | 0793 AO.(ifam).MemberOf = {<span class="string">'RF'</span>,<span class="string">'RFSystem'</span>}; |
---|
896 | 0794 AO.(ifam).Status = 1; |
---|
897 | 0795 AO.(ifam).CommonNames = <span class="string">'RF'</span>; |
---|
898 | 0796 AO.(ifam).DeviceList = [1 1]; |
---|
899 | 0797 AO.(ifam).ElementList = 1; |
---|
900 | 0798 AO.(ifam).DeviceName(:,:) = {<span class="string">'BOO/RF/MasterClock/'</span>}; |
---|
901 | 0799 |
---|
902 | 0800 <span class="comment">%Frequency Readback</span> |
---|
903 | 0801 AO.(ifam).Monitor.Mode = Mode; |
---|
904 | 0802 AO.(ifam).Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
905 | 0803 AO.(ifam).Monitor.Units = <span class="string">'Hardware'</span>; |
---|
906 | 0804 AO.(ifam).Monitor.HW2PhysicsParams = 1e+6; <span class="comment">%no hw2physics function necessary</span> |
---|
907 | 0805 AO.(ifam).Monitor.Physics2HWParams = 1e-6; |
---|
908 | 0806 AO.(ifam).Monitor.HWUnits = <span class="string">'MHz'</span>; |
---|
909 | 0807 AO.(ifam).Monitor.PhysicsUnits = <span class="string">'Hz'</span>; |
---|
910 | 0808 AO.(ifam).Monitor.TangoNames = {<span class="string">'ANS/RF/MasterClock/frequency'</span>}; |
---|
911 | 0809 AO.(ifam).Monitor.Handles = NaN; |
---|
912 | 0810 AO.(ifam).Monitor.Range = [350e6 360e6]; |
---|
913 | 0811 |
---|
914 | 0812 AO.(ifam).Setpoint = AO.(ifam).Monitor; |
---|
915 | 0813 AO.(ifam).Desired = AO.(ifam).Monitor; |
---|
916 | 0814 |
---|
917 | 0815 |
---|
918 | 0816 <span class="comment">%=====================</span> |
---|
919 | 0817 <span class="comment">%% Gamma Monitors DOSE</span> |
---|
920 | 0818 <span class="comment">%====================</span> |
---|
921 | 0819 ifam = ifam+1; |
---|
922 | 0820 AO.CIGdose.FamilyName = <span class="string">'CIGdose'</span>; |
---|
923 | 0821 AO.CIGdose.FamilyType = <span class="string">'Radioprotection'</span>; |
---|
924 | 0822 AO.CIGdose.MemberOf = {<span class="string">'Radioprotection'</span>,<span class="string">'Archivable'</span>,<span class="string">'Plotfamily'</span>}; |
---|
925 | 0823 AO.CIGdose.CommonNames = <span class="string">'CIG'</span>; |
---|
926 | 0824 |
---|
927 | 0825 map = tango_get_db_property(<span class="string">'anneau'</span>,<span class="string">'gammamonitor_mapping'</span>); |
---|
928 | 0826 AO.CIGdose.DeviceName = map'; |
---|
929 | 0827 |
---|
930 | 0828 AO.CIGdose.Monitor.Mode = Mode; |
---|
931 | 0829 AO.CIGdose.FamilyName = <span class="string">'CIGdose'</span>; |
---|
932 | 0830 AO.CIGdose.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
933 | 0831 |
---|
934 | 0832 nb = length(AO.CIGdose.DeviceName); |
---|
935 | 0833 AO.CIGdose.DeviceList = [ones(1,nb); (1:nb)]'; |
---|
936 | 0834 AO.CIGdose.ElementList = (1:nb)'; |
---|
937 | 0835 AO.CIGdose.Status = ones(nb,1); |
---|
938 | 0836 |
---|
939 | 0837 AO.CIGdose.Monitor.TangoNames = strcat(AO.CIGdose.DeviceName,<span class="string">'/dose'</span>); |
---|
940 | 0838 |
---|
941 | 0839 ;<span class="comment">%afin de ne pas avoir de bug</span> |
---|
942 | 0840 AO.CIGdose.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
943 | 0841 AO.CIGdose.Monitor.Handles = NaN; |
---|
944 | 0842 AO.CIGdose.Monitor.HWUnits = <span class="string">'uGy'</span>; |
---|
945 | 0843 AO.CIGdose.Monitor.PhysicsUnits = <span class="string">'uGy'</span>; |
---|
946 | 0844 AO.CIGdose.Monitor.HW2PhysicsParams = 1; |
---|
947 | 0845 AO.CIGdose.Monitor.Physics2HWParams = 1; |
---|
948 | 0846 |
---|
949 | 0847 <span class="comment">%=========================</span> |
---|
950 | 0848 <span class="comment">%% Gamma Monitors DOSErate</span> |
---|
951 | 0849 <span class="comment">%=========================</span> |
---|
952 | 0850 |
---|
953 | 0851 ifam = ifam+1; |
---|
954 | 0852 |
---|
955 | 0853 AO.CIGrate = AO.CIGdose; |
---|
956 | 0854 AO.CIGrate.FamilyName = <span class="string">'CIGrate'</span>; |
---|
957 | 0855 AO.CIGrate.CommonNames = <span class="string">'CIGrate'</span>; |
---|
958 | 0856 AO.CIGrate.FamilyName = <span class="string">'CIGrate'</span>; |
---|
959 | 0857 |
---|
960 | 0858 nb = length(AO.CIGrate.DeviceName); |
---|
961 | 0859 AO.CIGrate.Status = ones(nb,1); |
---|
962 | 0860 |
---|
963 | 0861 AO.CIGrate.Monitor.TangoNames = strcat(AO.CIGrate.DeviceName,<span class="string">'/doseRate'</span>); |
---|
964 | 0862 |
---|
965 | 0863 <span class="comment">%afin de ne pas avoir de bug</span> |
---|
966 | 0864 AO.CIG.Monitor.HWUnits = <span class="string">'uGy/h'</span>; |
---|
967 | 0865 AO.CIG.Monitor.PhysicsUnits = <span class="string">'uGy/h'</span>; |
---|
968 | 0866 |
---|
969 | 0867 <span class="comment">%==================</span> |
---|
970 | 0868 <span class="comment">%Machine Parameters</span> |
---|
971 | 0869 <span class="comment">%==================</span> |
---|
972 | 0870 AO.MachineParameters.FamilyName = <span class="string">'MachineParameters'</span>; |
---|
973 | 0871 AO.MachineParameters.FamilyType = <span class="string">'Parameter'</span>; |
---|
974 | 0872 AO.MachineParameters.MemberOf = {<span class="string">'Diagnostics'</span>}; |
---|
975 | 0873 AO.MachineParameters.Status = [1 1 1 1]'; |
---|
976 | 0874 |
---|
977 | 0875 AO.MachineParameters.Monitor.Mode = Mode; |
---|
978 | 0876 AO.MachineParameters.Monitor.DataType = <span class="string">'Scalar'</span>; |
---|
979 | 0877 AO.MachineParameters.Monitor.Units = <span class="string">'Hardware'</span>; |
---|
980 | 0878 |
---|
981 | 0879 <span class="comment">%use spear2 process variable names</span> |
---|
982 | 0880 mp={ |
---|
983 | 0881 <span class="string">'mode '</span> <span class="string">'SPEAR:BeamStatus '</span> [1 1] 1; <span class="keyword">...</span> |
---|
984 | 0882 <span class="string">'energy '</span> <span class="string">'SPEAR:Energy '</span> [1 2] 2; <span class="keyword">...</span> |
---|
985 | 0883 <span class="string">'current '</span> <span class="string">'SPEAR:BeamCurrAvg '</span> [1 3] 3; <span class="keyword">...</span> |
---|
986 | 0884 <span class="string">'lifetime'</span> <span class="string">'SPEAR:BeamLifetime'</span> [1 4] 4; <span class="keyword">...</span> |
---|
987 | 0885 }; |
---|
988 | 0886 AO.MachineParameters.Monitor.HWUnits = <span class="string">' '</span>; |
---|
989 | 0887 AO.MachineParameters.Monitor.PhysicsUnits = <span class="string">' '</span>; |
---|
990 | 0888 |
---|
991 | 0889 AO.MachineParameters.Setpoint.HWUnits = <span class="string">' '</span>; |
---|
992 | 0890 AO.MachineParameters.Setpoint.PhysicsUnits = <span class="string">' '</span>; |
---|
993 | 0891 |
---|
994 | 0892 <span class="keyword">for</span> ii=1:size(mp,1) |
---|
995 | 0893 name =mp(ii,1); AO.MachineParameters.CommonNames(ii,:) = char(name{1}); |
---|
996 | 0894 <span class="comment">% name =mp(ii,2); AO.MachineParameters.Monitor.ChannelNames(ii,:) = char(name{1});</span> |
---|
997 | 0895 <span class="comment">% name =mp(ii,2); AO.MachineParameters.Setpoint.ChannelNames(ii,:) = char(name{1});</span> |
---|
998 | 0896 val =mp(ii,3); AO.MachineParameters.DeviceList(ii,:) = val{1}; |
---|
999 | 0897 val =mp(ii,4); AO.MachineParameters.ElementList(ii,:) = val{1}; |
---|
1000 | 0898 |
---|
1001 | 0899 AO.MachineParameters.Monitor.HW2PhysicsParams(ii,:) = 1; |
---|
1002 | 0900 AO.MachineParameters.Monitor.Physics2HWParams(ii,:) = 1; |
---|
1003 | 0901 AO.MachineParameters.Monitor.Handles(ii,1) = NaN; |
---|
1004 | 0902 AO.MachineParameters.Setpoint.HW2PhysicsParams(ii,:) = 1; |
---|
1005 | 0903 AO.MachineParameters.Setpoint.Physics2HWParams(ii,:) = 1; |
---|
1006 | 0904 AO.MachineParameters.Setpoint.Handles(ii,1) = NaN; |
---|
1007 | 0905 <span class="keyword">end</span> |
---|
1008 | 0906 |
---|
1009 | 0907 <span class="comment">% Save AO</span> |
---|
1010 | 0908 setao(AO); |
---|
1011 | 0909 |
---|
1012 | 0910 <span class="comment">% The operational mode sets the path, filenames, and other important params</span> |
---|
1013 | 0911 <span class="comment">% Run setoperationalmode after most of the AO is built so that the Units and Mode fields</span> |
---|
1014 | 0912 <span class="comment">% can be set in setoperationalmode</span> |
---|
1015 | 0913 |
---|
1016 | 0914 <a href="setoperationalmode.html" class="code" title="function setoperationalmode(ModeNumber)">setoperationalmode</a>(OperationalMode); |
---|
1017 | 0915 |
---|
1018 | 0916 <span class="comment">%======================================================================</span> |
---|
1019 | 0917 <span class="comment">%======================================================================</span> |
---|
1020 | 0918 <span class="comment">%% Append Accelerator Toolbox information</span> |
---|
1021 | 0919 <span class="comment">%======================================================================</span> |
---|
1022 | 0920 <span class="comment">%======================================================================</span> |
---|
1023 | 0921 disp(<span class="string">'** Initializing Accelerator Toolbox information'</span>); |
---|
1024 | 0922 |
---|
1025 | 0923 AT = getao; |
---|
1026 | 0924 |
---|
1027 | 0925 ATindx = atindex(THERING); <span class="comment">%structure with fields containing indices</span> |
---|
1028 | 0926 |
---|
1029 | 0927 s = findspos(THERING,1:length(THERING)+1)'; |
---|
1030 | 0928 |
---|
1031 | 0929 <span class="comment">% Horizontal BPMS</span> |
---|
1032 | 0930 <span class="comment">% WARNING: BPM1 is the one before the injection straigth section</span> |
---|
1033 | 0931 <span class="comment">% since a cell begins from begin of Straigths</span> |
---|
1034 | 0932 <span class="comment">% CELL1 BPM1 to BPM7</span> |
---|
1035 | 0933 ifam = (<span class="string">'BPMx'</span>); |
---|
1036 | 0934 AO.(ifam).AT.ATType = ifam; |
---|
1037 | 0935 AO.(ifam).AT.ATIndex = ATindx.BPM(:); |
---|
1038 | 0936 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1039 | 0937 |
---|
1040 | 0938 <span class="comment">% Vertical BPMS</span> |
---|
1041 | 0939 ifam = (<span class="string">'BPMz'</span>); |
---|
1042 | 0940 AO.(ifam).AT.ATType = ifam; |
---|
1043 | 0941 AO.(ifam).AT.ATIndex = ATindx.BPM(:); |
---|
1044 | 0942 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1045 | 0943 |
---|
1046 | 0944 <span class="comment">% SLOW HORIZONTAL CORRECTORS</span> |
---|
1047 | 0945 ifam = (<span class="string">'HCOR'</span>); |
---|
1048 | 0946 AO.(ifam).AT.ATType = ifam; |
---|
1049 | 0947 AO.(ifam).AT.ATIndex = ATindx.HCOR(:); |
---|
1050 | 0948 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1051 | 0949 |
---|
1052 | 0950 <span class="comment">% SLOW VERTICAL CORRECTORS</span> |
---|
1053 | 0951 ifam = (<span class="string">'VCOR'</span>); |
---|
1054 | 0952 AO.(ifam).AT.ATType = ifam; |
---|
1055 | 0953 AO.(ifam).AT.ATIndex = ATindx.VCOR(:); |
---|
1056 | 0954 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1057 | 0955 |
---|
1058 | 0956 <span class="comment">%% BENDING magnets</span> |
---|
1059 | 0957 ifam = (<span class="string">'BEND'</span>); |
---|
1060 | 0958 AO.(ifam).AT.ATType = ifam; |
---|
1061 | 0959 AO.(ifam).AT.ATIndex = ATindx.BEND(:); |
---|
1062 | 0960 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1063 | 0961 |
---|
1064 | 0962 <span class="comment">%% QF magnets</span> |
---|
1065 | 0963 ifam = (<span class="string">'QF'</span>); |
---|
1066 | 0964 AO.(ifam).AT.ATType = <span class="string">'QUAD'</span>; |
---|
1067 | 0965 AO.(ifam).AT.ATIndex = ATindx.QPF(:); |
---|
1068 | 0966 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1069 | 0967 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'K'</span>); |
---|
1070 | 0968 |
---|
1071 | 0969 <span class="comment">%% QD magnets</span> |
---|
1072 | 0970 ifam = (<span class="string">'QD'</span>); |
---|
1073 | 0971 AO.(ifam).AT.ATType = <span class="string">'QUAD'</span>; |
---|
1074 | 0972 AO.(ifam).AT.ATIndex = ATindx.QPD(:); |
---|
1075 | 0973 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1076 | 0974 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'K'</span>); |
---|
1077 | 0975 |
---|
1078 | 0976 <span class="comment">%% SF magnets</span> |
---|
1079 | 0977 ifam = (<span class="string">'SF'</span>); |
---|
1080 | 0978 AO.(ifam).AT.ATType = <span class="string">'SEXT'</span>; |
---|
1081 | 0979 AO.(ifam).AT.ATIndex = ATindx.SXF(:); |
---|
1082 | 0980 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1083 | 0981 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'K2'</span>); |
---|
1084 | 0982 |
---|
1085 | 0983 <span class="comment">%% SD magnets</span> |
---|
1086 | 0984 ifam = (<span class="string">'SD'</span>); |
---|
1087 | 0985 AO.(ifam).AT.ATType = <span class="string">'SEXT'</span>; |
---|
1088 | 0986 AO.(ifam).AT.ATIndex = ATindx.SXD(:); |
---|
1089 | 0987 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1090 | 0988 AO.(ifam).AT.ATParameterGroup = mkparamgroup(THERING,AO.(ifam).AT.ATIndex,<span class="string">'S'</span>); |
---|
1091 | 0989 |
---|
1092 | 0990 <span class="comment">% RF Cavity</span> |
---|
1093 | 0991 ifam = (<span class="string">'RF'</span>); |
---|
1094 | 0992 AO.(ifam).AT.ATType = <span class="string">'RF Cavity'</span>; |
---|
1095 | 0993 AO.(ifam).AT.ATIndex = findcells(THERING,<span class="string">'Frequency'</span>)'; |
---|
1096 | 0994 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex); |
---|
1097 | 0995 |
---|
1098 | 0996 <span class="comment">% Save AO</span> |
---|
1099 | 0997 setao(AO); |
---|
1100 | 0998 |
---|
1101 | 0999 <span class="keyword">if</span> iscontrolroom |
---|
1102 | 1000 switch2online; |
---|
1103 | 1001 <span class="keyword">else</span> |
---|
1104 | 1002 switch2sim; |
---|
1105 | 1003 <span class="keyword">end</span></pre></div> |
---|
1106 | <hr><address>Generated on Mon 21-May-2007 15:35:27 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address> |
---|
1107 | </body> |
---|
1108 | </html> |
---|