0001 function LT1init(OperationalMode)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063 if nargin < 1
0064 OperationalMode = 1;
0065 end
0066
0067 global GLOBVAL THERING
0068
0069 Mode = 'online';
0070 setad([]);
0071 AD.SubMachine = 'LT1';
0072 AD.Energy = 0.110;
0073
0074 setad(AD);
0075
0076
0077
0078
0079
0080 setao([]);
0081
0082
0083 ifam = 'BEND';
0084
0085 AO.(ifam).FamilyName = 'BEND';
0086 AO.(ifam).MemberOf = {'MachineConfig'; 'Magnet'; 'BEND'; 'Archivable'};
0087 AO.(ifam).Mode = Mode;
0088 AO.(ifam).DeviceName{1} = 'LT1/AE/D.1';
0089 AO.(ifam).CommonNames{1} = 'DIP';
0090 AO.(ifam).DeviceList(1,:) = [1 1];
0091 AO.(ifam).ElementList = 1;
0092 AO.(ifam).Status = 1;
0093 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/current');
0094 AO.(ifam).Monitor.ModelVal = 0;
0095 AO.(ifam).Monitor.TangoVal = 0;
0096 AO.(ifam).Monitor.Mode = Mode;
0097 AO.(ifam).Monitor.Handles(:,1) = NaN;
0098 AO.(ifam).Monitor.DataType = 'Scalar';
0099 AO.(ifam).Monitor.Units = 'Hardware';
0100 AO.(ifam).Monitor.HWUnits = 'ampere';
0101 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0102 AO.(ifam).Monitor.HW2PhysicsFcn = @bend2gev;
0103 AO.(ifam).Monitor.Physics2HWFcn = @gev2bend;
0104 setao(AO);
0105 [C Leff Type coefficients] = magnetcoefficients(AO.(ifam).FamilyName );
0106 AO.(ifam).Monitor.HW2PhysicsParams{1}(1,:) = coefficients;
0107 AO.(ifam).Monitor.Physics2HWParams = AO.(ifam).Monitor.HW2PhysicsParams;
0108
0109 AO.(ifam).Setpoint = AO.(ifam).Monitor;
0110 AO.(ifam).Desired = AO.(ifam).Monitor;
0111
0112
0113 ifam = 'QP';
0114
0115 AO.(ifam).FamilyName = 'QP';
0116 AO.(ifam).MemberOf = {'MachineConfig'; 'Magnet'; 'QP'; 'Archivable'};
0117 AO.(ifam).Mode = Mode;
0118 for ik = 1:7
0119 AO.(ifam).DeviceName{ik} = ['LT1/AE/Q.' num2str(ik)];
0120 AO.(ifam).CommonNames{ik} = ['QP' num2str(ik)];
0121 AO.(ifam).DeviceList(ik,:) = [1 ik];
0122 end
0123 AO.(ifam).DeviceName = AO.(ifam).DeviceName';
0124 AO.(ifam).CommonNames = AO.(ifam).CommonNames';
0125
0126 nb = length(AO.(ifam).DeviceName);
0127 AO.(ifam).Monitor.Range(:,:) = repmat([-10 10],nb,1);
0128 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/current');
0129 AO.(ifam).Status = ones(nb,1);
0130 AO.(ifam).Monitor.ModelVal = zeros(1,nb);
0131 AO.(ifam).Monitor.TangoVal = AO.(ifam).Monitor.ModelVal;
0132 AO.(ifam).ElementList = 1:nb;
0133
0134 AO.(ifam).Monitor.Mode = Mode;
0135 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1);
0136 AO.(ifam).Monitor.DataType = 'Scalar';
0137 AO.(ifam).Monitor.Units = 'Hardware';
0138 AO.(ifam).Monitor.HWUnits = 'ampere';
0139 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0140 AO.(ifam).Monitor.HW2PhysicsFcn = @amp2k;
0141 AO.(ifam).Monitor.Physics2HWFcn = @k2amp;
0142
0143
0144 C = magnetcoefficients(AO.(ifam).FamilyName);
0145
0146 for ii=1:nb,
0147 if ii == 2 || ii == 3 || ii == 6
0148
0149 AO.(ifam).Monitor.HW2PhysicsParams{1}(ii,:) = C.*[1 -1 1 -1 1 -1 1 -1];
0150 AO.(ifam).Monitor.Physics2HWParams{1}(ii,:) = C.*[1 -1 1 -1 1 -1 1 -1];
0151 else
0152
0153 AO.(ifam).Monitor.HW2PhysicsParams{1}(ii,:) = C;
0154 AO.(ifam).Monitor.Physics2HWParams{1}(ii,:) = C;
0155 end
0156 end
0157
0158
0159 AO.(ifam).Setpoint = AO.(ifam).Monitor;
0160 AO.(ifam).Desired = AO.(ifam).Monitor;
0161
0162
0163
0164
0165 ifam = 'CH';
0166 AO.(ifam).FamilyName = 'CH';
0167 AO.(ifam).MemberOf = {'MachineConfig'; 'HCM'; 'Magnet'; 'CH'; 'Archivable'};
0168
0169 for ik = 1:3
0170 AO.(ifam).DeviceName{ik} = ['LT1/AE/CH.' num2str(ik)];
0171 AO.(ifam).CommonNames{ik} = ['CH' num2str(ik)];
0172 AO.(ifam).DeviceList(ik,:) = [1 ik];
0173 end
0174 AO.(ifam).DeviceName = AO.(ifam).DeviceName';
0175 AO.(ifam).CommonNames = AO.(ifam).CommonNames';
0176
0177 nb = length(AO.(ifam).DeviceName);
0178 AO.(ifam).Monitor.Range(:,:) = repmat([-1.5 1.5],nb,1);
0179 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/current');
0180 AO.(ifam).Status = ones(nb,1);
0181 AO.(ifam).Monitor.ModelVal = zeros(1,nb);
0182 AO.(ifam).Monitor.TangoVal = AO.(ifam).Monitor.ModelVal;
0183 AO.(ifam).ElementList = 1:nb;
0184
0185 AO.(ifam).Monitor.Mode = Mode;
0186 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1);
0187 AO.(ifam).Monitor.DataType = 'Scalar';
0188 AO.(ifam).Monitor.Units = 'Hardware';
0189 AO.(ifam).Monitor.HWUnits = 'ampere';
0190 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0191 AO.(ifam).Monitor.HW2PhysicsFcn = @amp2k;
0192 AO.(ifam).Monitor.Physics2HWFcn = @k2amp;
0193 [C Leff Type coefficients] = magnetcoefficients(AO.(ifam).FamilyName );
0194 AO.(ifam).Monitor.HW2PhysicsParams{1}(1,:) = coefficients;
0195 AO.(ifam).Monitor.Physics2HWParams = AO.(ifam).Monitor.HW2PhysicsParams;
0196
0197 AO.(ifam).Setpoint = AO.(ifam).Monitor;
0198
0199
0200
0201 ifam = 'CV';
0202
0203 AO.(ifam).FamilyName = 'CV';
0204 AO.(ifam).MemberOf = {'MachineConfig'; 'Magnet'; 'VCM'; 'CV'; 'Archivable'};
0205 AO.(ifam).Mode = Mode;
0206
0207 for ik = 1:3
0208 AO.(ifam).DeviceName{ik} = ['LT1/AE/CV.' num2str(ik)];
0209 AO.(ifam).CommonNames{ik} = ['CV' num2str(ik)];
0210 AO.(ifam).DeviceList(ik,:) = [1 ik];
0211 end
0212 AO.(ifam).DeviceName = AO.(ifam).DeviceName';
0213 AO.(ifam).CommonNames = AO.(ifam).CommonNames';
0214
0215 nb = length(AO.(ifam).DeviceName);
0216 AO.(ifam).Monitor.Range(:,:) = repmat([-1.5 1.5],nb,1);
0217 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/current');
0218 AO.(ifam).Status = ones(nb,1);
0219 AO.(ifam).Monitor.ModelVal = zeros(1,nb);
0220 AO.(ifam).Monitor.TangoVal = AO.(ifam).Monitor.ModelVal;
0221 AO.(ifam).ElementList = 1:nb;
0222
0223 AO.(ifam).Monitor.Mode = Mode;
0224 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1);
0225 AO.(ifam).Monitor.DataType = 'Scalar';
0226 AO.(ifam).Monitor.Units = 'Hardware';
0227 AO.(ifam).Monitor.HWUnits = 'ampere';
0228 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0229 AO.(ifam).Monitor.HW2PhysicsFcn = @amp2k;
0230 AO.(ifam).Monitor.Physics2HWFcn = @k2amp;
0231 [C Leff Type coefficients] = magnetcoefficients(AO.(ifam).FamilyName );
0232 AO.(ifam).Monitor.HW2PhysicsParams{1}(1,:) = coefficients;
0233 AO.(ifam).Monitor.Physics2HWParams = AO.(ifam).Monitor.HW2PhysicsParams;
0234
0235 AO.(ifam).Setpoint = AO.(ifam).Monitor;
0236
0237
0238
0239
0240
0241
0242 ifam = 'CycleBEND';
0243
0244 AO.(ifam).FamilyName = 'CycleBEND';
0245 AO.(ifam).MemberOf = {'CycleBEND'; 'Cyclage'};
0246 AO.(ifam).Mode = Mode;
0247 AO.(ifam).GroupId = tango_group_create('Dipole');
0248 AO.(ifam).DeviceName = 'LT1/AE/cycleD.1';
0249
0250 tango_group_add(AO.(ifam).GroupId, AO.(ifam).DeviceName);
0251 AO.(ifam).Inom = 180;
0252 AO.(ifam).Imax = 250;
0253 AO.(ifam).Status = 1;
0254
0255
0256 ifam = 'CycleCH';
0257
0258 AO.(ifam).FamilyName = ifam;
0259 AO.(ifam).MemberOf = {'CycleCOR'; 'CycleCH'; 'Cyclage'};
0260 AO.(ifam).Mode = Mode;
0261 AO.(ifam).GroupId = tango_group_create('COR');
0262 AO.(ifam).DeviceName = {'LT1/AE/cycleCH.1'; 'LT1/AE/cycleCH.2'; 'LT1/AE/cycleCH.3'};
0263 AO.(ifam).DeviceList = [1 1; 1 2; 1 3];
0264 AO.(ifam).ElementList = (1:3)';
0265 tango_group_add(AO.(ifam).GroupId, AO.(ifam).DeviceName');
0266 AO.(ifam).Inom = [1 2 3];
0267 AO.(ifam).Imax = 10*ones(1,3);
0268 AO.(ifam).Status = ones(3,1);
0269 AO.(ifam).Monitor.Mode = Mode;
0270 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(3,1);
0271 AO.(ifam).Monitor.DataType = 'Scalar';
0272 AO.(ifam).Monitor.Units = 'Hardware';
0273 AO.(ifam).Monitor.HWUnits = 'ampere';
0274 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0275 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/totalProgression');
0276
0277
0278 ifam = 'CycleCV';
0279
0280 AO.(ifam).FamilyName = ifam;
0281 AO.(ifam).MemberOf = {'CycleCOR'; 'CycleCV'; 'Cyclage'};
0282 AO.(ifam).Mode = Mode;
0283 AO.(ifam).GroupId = tango_group_create('COR');
0284 AO.(ifam).DeviceName = {'LT1/AE/cycleCV.1'; 'LT1/AE/cycleCV.2'; 'LT1/AE/cycleCV.3'};
0285 AO.(ifam).DeviceList = [1 1; 1 2; 1 3];
0286 AO.(ifam).ElementList = [1 2 3]';
0287
0288 tango_group_add(AO.(ifam).GroupId, AO.(ifam).DeviceName');
0289 AO.(ifam).Inom = [1 2 3];
0290 AO.(ifam).Imax = 10*ones(1,3);
0291 AO.(ifam).Status = ones(3,1);
0292 AO.(ifam).Monitor.Mode = Mode;
0293 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(3,1);
0294 AO.(ifam).Monitor.DataType = 'Scalar';
0295 AO.(ifam).Monitor.Units = 'Hardware';
0296 AO.(ifam).Monitor.HWUnits = 'ampere';
0297 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0298 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/totalProgression');
0299
0300
0301 ifam = 'CycleQP';
0302
0303 AO.(ifam).FamilyName = ifam;
0304 AO.(ifam).MemberOf = {'CycleQP'; 'Cyclage'};
0305 AO.(ifam).Mode = Mode;
0306 AO.(ifam).GroupId = tango_group_create('Quadrupole');
0307 AO.(ifam).DeviceList = [1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1 7];
0308 AO.(ifam).ElementList = (1:7)';
0309 AO.(ifam).DeviceName = {'LT1/AE/cycleQ.1';'LT1/AE/cycleQ.2'; ...
0310 'LT1/AE/cycleQ.3';'LT1/AE/cycleQ.4'; ...
0311 'LT1/AE/cycleQ.5';'LT1/AE/cycleQ.6'; ...
0312 'LT1/AE/cycleQ.7'};
0313
0314 tango_group_add(AO.(ifam).GroupId, AO.(ifam).DeviceName');
0315
0316
0317 AO.(ifam).Imax = [8 -8 -8 8 8 -8 8 ];
0318 AO.(ifam).Status = ones(7,1);
0319 AO.(ifam).Monitor.Mode = Mode;
0320 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(7,1);
0321 AO.(ifam).Monitor.DataType = 'Scalar';
0322 AO.(ifam).Monitor.Units = 'Hardware';
0323 AO.(ifam).Monitor.HWUnits = 'ampere';
0324 AO.(ifam).Monitor.PhysicsUnits = 'radian';
0325 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/totalProgression');
0326
0327
0328
0329
0330
0331
0332 ifam = 'MC';
0333
0334 AO.(ifam).FamilyName = 'MC';
0335 AO.(ifam).MemberOf = {'Diag'; 'MC'; 'Archivable'};
0336 AO.(ifam).Mode = Mode;
0337 AO.(ifam).DeviceName = {'LT1/DG/MC'; 'LT1/DG/MC'};
0338 AO.(ifam).CommonNames = ['mc1';'mc2';];
0339 AO.(ifam).DeviceList(:,:) = [1 1; 1 2];
0340 AO.(ifam).ElementList = [1 2]';
0341 AO.(ifam).Status = [1 1]';
0342 AO.(ifam).Monitor.TangoNames = [strcat(AO.(ifam).DeviceName(1,:), '/qIct1'); ...
0343 strcat(AO.(ifam).DeviceName(2,:), '/qIct2')];
0344 AO.(ifam).Monitor.Mode = Mode;
0345 AO.(ifam).Monitor.Handles(:,1) = [NaN; NaN]';
0346 AO.(ifam).Monitor.DataType = 'Vector';
0347 AO.(ifam).Monitor.Units = 'Hardware';
0348 AO.(ifam).Monitor.HWUnits = 'nC';
0349 AO.(ifam).Monitor.PhysicsUnits = 'nC';
0350 AO.(ifam).Monitor.HW2PhysicsParams = 1.0;
0351 AO.(ifam).Monitor.Physics2HWParams = 1.0;
0352
0353
0354
0355
0356
0357
0358 ifam = 'PI';
0359 AO.(ifam).FamilyName = 'PI';
0360 AO.(ifam).MemberOf = {'PlotFamily'; 'IonPump'; 'Pressure'; 'Archivable'};
0361 AO.(ifam).Monitor.Mode = Mode;
0362 AO.(ifam).Monitor.DataType = 'Scalar';
0363
0364 for ik = 1:9
0365 AO.(ifam).DeviceName{ik} = ['LT1/VI/PI55.' num2str(ik)];
0366 AO.(ifam).CommonNames{ik} = ['PI' num2str(ik)];
0367 AO.(ifam).DeviceList(ik,:) = [1 ik];
0368 if (ik == 8)
0369 AO.(ifam).DeviceName{ik} = ['LT1/VI/PI150.' num2str(ik)];
0370 end
0371 end
0372 nb = size(AO.(ifam).DeviceList,1);
0373 AO.(ifam).Status = ones(nb,1);
0374 AO.(ifam).DeviceName = AO.(ifam).DeviceName';
0375 AO.(ifam).CommonNames = AO.(ifam).CommonNames';
0376 AO.(ifam).ElementList = (1:nb)';
0377 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1);
0378 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/pressure');
0379 AO.(ifam).Monitor.HW2PhysicsParams = 1;
0380 AO.(ifam).Monitor.Physics2HWParams = 1;
0381 AO.(ifam).Monitor.Units = 'Hardware';
0382 AO.(ifam).Monitor.HWUnits = 'mBar';
0383 AO.(ifam).Monitor.PhysicsUnits = 'mBar';
0384
0385
0386 ifam = 'JPEN';
0387 AO.(ifam).FamilyName = 'JPEN';
0388 AO.(ifam).MemberOf = {'PlotFamily'; 'PenningGauge'; 'Pressure'; 'Archivable'};
0389 AO.(ifam).Monitor.Mode = Mode;
0390 AO.(ifam).Monitor.DataType = 'Scalar';
0391
0392 for ik = 1:2
0393 AO.(ifam).DeviceName{ik} = ['LT1/VI/JPEN.' num2str(ik)];
0394 AO.(ifam).CommonNames{ik} = ['JPEN' num2str(ik)];
0395 AO.(ifam).DeviceList(ik,:) = [1 ik];
0396 end
0397
0398 nb = size(AO.(ifam).DeviceList,1);
0399 AO.(ifam).Status = ones(nb,1);
0400 AO.(ifam).DeviceName = AO.(ifam).DeviceName';
0401 AO.(ifam).CommonNames = AO.(ifam).CommonNames';
0402 AO.(ifam).ElementList = (1:nb)';
0403 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1);
0404 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/pressure');
0405 AO.(ifam).Monitor.HW2PhysicsParams = 1;
0406 AO.(ifam).Monitor.Physics2HWParams = 1;
0407 AO.(ifam).Monitor.Units = 'Hardware';
0408 AO.(ifam).Monitor.HWUnits = 'mBar';
0409 AO.(ifam).Monitor.PhysicsUnits = 'mBar';
0410
0411
0412 ifam = 'JPIR';
0413 AO.(ifam).FamilyName = 'JPIR';
0414 AO.(ifam).MemberOf = {'PlotFamily'; 'PiraniGauge'; 'Pressure'; 'Archivable'};
0415 AO.(ifam).Monitor.Mode = Mode;
0416 AO.(ifam).Monitor.DataType = 'Scalar';
0417
0418 for ik = 1:2
0419 AO.(ifam).DeviceName{ik} = ['LT1/VI/JPIR.' num2str(ik)];
0420 AO.(ifam).CommonNames{ik} = ['JPIR' num2str(ik)];
0421 AO.(ifam).DeviceList(ik,:) = [1 ik];
0422 end
0423
0424 nb = size(AO.(ifam).DeviceList,1);
0425 AO.(ifam).Status = ones(nb,1);
0426 AO.(ifam).DeviceName = AO.(ifam).DeviceName';
0427 AO.(ifam).CommonNames = AO.(ifam).CommonNames';
0428 AO.(ifam).ElementList = (1:nb)';
0429 AO.(ifam).Monitor.Handles(:,1) = NaN*ones(nb,1);
0430 AO.(ifam).Monitor.TangoNames = strcat(AO.(ifam).DeviceName, '/pressure');
0431 AO.(ifam).Monitor.HW2PhysicsParams = 1;
0432 AO.(ifam).Monitor.Physics2HWParams = 1;
0433 AO.(ifam).Monitor.Units = 'Hardware';
0434 AO.(ifam).Monitor.HWUnits = 'mBar';
0435 AO.(ifam).Monitor.PhysicsUnits = 'mBar';
0436
0437
0438
0439
0440
0441
0442
0443
0444
0445
0446
0447
0448 setao(AO);
0449
0450
0451
0452
0453
0454 setoperationalmode(OperationalMode);
0455
0456
0457
0458
0459
0460
0461 disp('** Initializing Accelerator Toolbox information');
0462
0463 AO = getao;
0464
0465 ATindx = atindex(THERING);
0466
0467 s = findspos(THERING,1:length(THERING)+1)';
0468
0469
0470 ifam = 'CH';
0471 AO.(ifam).AT.ATType = ifam;
0472 AO.(ifam).AT.ATIndex = ATindx.(ifam)(:);
0473 AO.(ifam).AT.ATIndex = AO.(ifam).AT.ATIndex(AO.(ifam).ElementList);
0474 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex);
0475
0476
0477 ifam = 'CV';
0478 AO.(ifam).AT.ATType = ifam;
0479 AO.(ifam).AT.ATIndex = ATindx.(ifam)(:);
0480 AO.(ifam).AT.ATIndex = AO.(ifam).AT.ATIndex(AO.(ifam).ElementList);
0481 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex);
0482
0483
0484 ifam = 'BEND';
0485 AO.(ifam).AT.ATType = ifam;
0486 AO.(ifam).AT.ATIndex = ATindx.(ifam)(:);
0487 AO.(ifam).Position = reshape(s(AO.(ifam).AT.ATIndex),1,2);
0488
0489
0490 ifam = 'QP';
0491 AO.(ifam).AT.ATType = 'QUAD';
0492 AO.(ifam).AT.ATIndex = eval(['ATindx.' ifam '(:)']);
0493 AO.(ifam).AT.ATIndex = reshape(AO.(ifam).AT.ATIndex,2,7)';
0494 AO.(ifam).Position = s(AO.(ifam).AT.ATIndex);
0495
0496
0497 setao(AO);
0498
0499 if iscontrolroom
0500 switch2online;
0501 else
0502 switch2sim;
0503 end
0504