1 | function [xDiffOrbit zDiffOrbit ErrorFlag] = getsnifferdifforbit(varargin) |
---|
2 | %GETSNIFFERORBIT - read orbit on sniffer |
---|
3 | % |
---|
4 | % OUPUTS |
---|
5 | % 1. xDiffOrbit - Horizontal orbit difference |
---|
6 | % 2. zDiffOrbit - Vertical orbit difference |
---|
7 | % 3. ErrorFlag - 0 if OK |
---|
8 | % |
---|
9 | % NOTES |
---|
10 | % the sniffer board gives the orbit difference |
---|
11 | % to get the orbit one needs to retrieve the golden orbit of the sniffer (FOFB) |
---|
12 | % |
---|
13 | % |
---|
14 | % See Also getsnifferoffset, getsnifferorbit |
---|
15 | |
---|
16 | % |
---|
17 | %% Written by Laurent S. Nadolski |
---|
18 | |
---|
19 | ErrorFlag = 0; |
---|
20 | DisplayFlag = 0; |
---|
21 | |
---|
22 | for i = length(varargin):-1:1 |
---|
23 | if strcmpi(varargin{i},'Display') |
---|
24 | DisplayFlag = 1; |
---|
25 | varargin(i) = []; |
---|
26 | elseif strcmpi(varargin{i},'NoDisplay') |
---|
27 | DisplayFlag = 0; |
---|
28 | varargin(i) = []; |
---|
29 | end |
---|
30 | end |
---|
31 | |
---|
32 | % sniffer device server |
---|
33 | dev = 'ANS/DG/fofb-sniffer.2'; |
---|
34 | |
---|
35 | len = 1; %s average time on the sniffer board |
---|
36 | % recording time |
---|
37 | tango_write_attribute2(dev,'recordLengthInSecs',len); |
---|
38 | % Start measurement |
---|
39 | tango_command_inout2(dev,'StartRecording'); |
---|
40 | |
---|
41 | % pause to wait for measurements |
---|
42 | pause(len+1); |
---|
43 | |
---|
44 | % Check if measurement ready |
---|
45 | isReady = tango_read_attribute(dev,'recordReady'); |
---|
46 | |
---|
47 | if isReady.value |
---|
48 | % read Delta orbit on sniffer board |
---|
49 | rep = tango_read_attribute2(dev, 'XPosMean'); |
---|
50 | xDiffOrbit = rep.value(2:121)'; |
---|
51 | rep = tango_read_attribute2(dev, 'ZPosMean'); |
---|
52 | zDiffOrbit = rep.value(2:121)'; |
---|
53 | fprintf('Data ready on sniffer board\n') |
---|
54 | |
---|
55 | if DisplayFlag |
---|
56 | figure |
---|
57 | spos = getspos('BPMx'); |
---|
58 | plot(spos, xDiffOrbit*1e-6,'b'); hold on; grid on; |
---|
59 | plot(spos, zDiffOrbit*1e-6,'r'); |
---|
60 | xlabel('s-position (m)'); |
---|
61 | ylabel('Position (mm)'); |
---|
62 | legend('H-plane', 'V-plane'); |
---|
63 | title('Difference orbit read on orbit sniffer') |
---|
64 | end |
---|
65 | else |
---|
66 | disp('Not ready') |
---|
67 | xDiffOrbit = -1; |
---|
68 | zDiffOrbit = -1; |
---|
69 | ErrorFlag = -1; |
---|
70 | end |
---|