1 | function IdCorCalibInVac(UndName,DeviceServerName,CurMin,CurMax,CurStep) |
---|
2 | % UndName: Full name of the undulator: for example 'U24_PROXIMA2' |
---|
3 | % DeviceServerName: Full path of the DeviceServer name: for example 'ANS-C11/EI/M-U24' |
---|
4 | % CurMin, CurMax, CurStep: Minimum, maximum Current and current step of each Corrector |
---|
5 | % Example: IdCorCalibInVac('U24_PROXIMA2','ANS-C11/EI/M-U24',-6,6,2) |
---|
6 | % IdCorCalibInVac('U20_GALAXIES','ANS-C07/EI/C-U20',-6,6,2) |
---|
7 | % IdCorCalibInVac('WSV50_PSICHE','ANS-C03/EI/C-WSV50',-6,6,2) |
---|
8 | % IdCorCalibInVac('U20_NANO','ANS-C13/EI/L-U20.2',-6,6,2) |
---|
9 | |
---|
10 | t0=15; |
---|
11 | CellName=DeviceServerName(1:7) |
---|
12 | SSType=DeviceServerName(11:11) |
---|
13 | Position_SourceX=[CellName '/DG/CALC-SD' SSType '-POSITION-ANGLE/positionX']; |
---|
14 | Position_SourceZ=[CellName '/DG/CALC-SD' SSType '-POSITION-ANGLE/positionZ']; |
---|
15 | Date=datestr(clock,'mmm-dd-yyyy HH:MM:SS') |
---|
16 | CalibrationFolder=['/home/operateur/GrpGMI/' UndName '/CALIBRATION-' Date] |
---|
17 | mkdir(CalibrationFolder) |
---|
18 | idDevServCHEAttr=[DeviceServerName '_CHAN1'] |
---|
19 | idDevServCVEAttr=[DeviceServerName '_CHAN2'] |
---|
20 | idDevServCHSAttr=[DeviceServerName '_CHAN3'] |
---|
21 | idDevServCVSAttr=[DeviceServerName '_CHAN4'] |
---|
22 | i=1; |
---|
23 | for Cur=CurMin:CurStep:CurMax |
---|
24 | idSetCurrentSync(idDevServCHEAttr, Cur, 0.01); |
---|
25 | pause(t0) |
---|
26 | stMeas=idMeasElecBeamUnd(UndName,0,['/home/operateur/GrpGMI/' UndName '/' UndName '_CHE_' num2str(Cur)],0,0) |
---|
27 | copyfile(['/home/operateur/GrpGMI/' UndName '/' UndName '_CHE_' num2str(Cur) '.mat'],[CalibrationFolder '/' UndName '_CHE_' num2str(Cur) '.mat']) |
---|
28 | fprintf ('%8.4f\n',Cur) |
---|
29 | end |
---|
30 | idSetCurrentSync(idDevServCHEAttr, 0, 0.01); |
---|
31 | pause(t0) |
---|
32 | for Cur=CurMin:CurStep:CurMax |
---|
33 | idSetCurrentSync(idDevServCHSAttr, Cur, 0.01); |
---|
34 | pause(t0) |
---|
35 | stMeas=idMeasElecBeamUnd(UndName,0,['/home/operateur/GrpGMI/' UndName '/' UndName '_CHS_' num2str(Cur)],0,0) |
---|
36 | copyfile(['/home/operateur/GrpGMI/' UndName '/' UndName '_CHS_' num2str(Cur) '.mat'],[CalibrationFolder '/' UndName '_CHS_' num2str(Cur) '.mat']) |
---|
37 | fprintf ('%8.4f\n',Cur) |
---|
38 | end |
---|
39 | idSetCurrentSync(idDevServCHSAttr, 0, 0.01); |
---|
40 | pause(t0) |
---|
41 | for Cur=CurMin:CurStep:CurMax |
---|
42 | idSetCurrentSync(idDevServCVEAttr, Cur, 0.01); |
---|
43 | pause(t0) |
---|
44 | stMeas=idMeasElecBeamUnd(UndName,0,['/home/operateur/GrpGMI/' UndName '/' UndName '_CVE_' num2str(Cur)],0,0) |
---|
45 | copyfile(['/home/operateur/GrpGMI/' UndName '/' UndName '_CVE_' num2str(Cur) '.mat'],[CalibrationFolder '/' UndName '_CVE_' num2str(Cur) '.mat']) |
---|
46 | fprintf ('%8.4f\n',Cur) |
---|
47 | end |
---|
48 | idSetCurrentSync(idDevServCVEAttr, 0, 0.01); |
---|
49 | pause(t0) |
---|
50 | for Cur=CurMin:CurStep:CurMax |
---|
51 | idSetCurrentSync(idDevServCVSAttr, Cur, 0.01); |
---|
52 | pause(t0) |
---|
53 | stMeas=idMeasElecBeamUnd(UndName,0,['/home/operateur/GrpGMI/' UndName '/' UndName '_CVS_' num2str(Cur)],0,0) |
---|
54 | copyfile(['/home/operateur/GrpGMI/' UndName '/' UndName '_CVS_' num2str(Cur) '.mat'],[CalibrationFolder '/' UndName '_CVS_' num2str(Cur) '.mat']) |
---|
55 | fprintf ('%8.4f\n',Cur) |
---|
56 | end |
---|
57 | idSetCurrentSync(idDevServCVSAttr, 0, 0.01); |
---|
58 | pause(t0) |
---|
59 | end |
---|