source: MML/trunk/machine/SOLEIL/StorageRing/bpm/getsnifferdifforbit.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 11 years ago

Initial import--MML version from SOLEIL@2013

File size: 1.8 KB
Line 
1function [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
19ErrorFlag = 0;
20DisplayFlag = 0;
21
22for 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
30end
31
32% sniffer device server
33dev = 'ANS/DG/fofb-sniffer.2';
34
35len = 1; %s average time on the sniffer board
36% recording time
37tango_write_attribute2(dev,'recordLengthInSecs',len);
38% Start measurement
39tango_command_inout2(dev,'StartRecording');
40
41% pause to wait for measurements
42pause(len+1);
43
44% Check if measurement ready
45isReady = tango_read_attribute(dev,'recordReady');
46
47if 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
65else
66    disp('Not ready')
67    xDiffOrbit = -1;
68    zDiffOrbit = -1;
69    ErrorFlag = -1;
70end
Note: See TracBrowser for help on using the repository browser.