source: MML/trunk/machine/SOLEIL/doc_html/machine/Soleil/common/archiving/arread.html @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 14.4 KB
Line 
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 arread</title>
6  <meta name="keywords" content="arread">
7  <meta name="description" content="ARREAD - Read data from archiving database">
8  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
9  <meta name="generator" content="m2html &copy; 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> &gt;  <a href="#">machine</a> &gt; <a href="#">Soleil</a> &gt; <a href="../index.html">common</a> &gt; <a href="index.html">archiving</a> &gt; arread.m</div>
16
17<!--<table width="100%"><tr><td align="left"><a href="../../../../index.html"><img alt="<" border="0" src="../../../../left.png">&nbsp;Master index</a></td>
18<td align="right"><a href="index.html">Index for machine/Soleil/common/archiving&nbsp;<img alt=">" border="0" src="../../../../right.png"></a></td></tr></table>-->
19
20<h1>arread
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>ARREAD - Read data from archiving database</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 Data = arread(varargin) </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">ARREAD - Read data from archiving database
31
32  INPUTS
33  1. FAMILY attribute name or family name
34      If family, device list can be given, else [] (All) is assumed
35  2. starting date {now - 2 hours}
36  3. ending date {now}
37  4. {'HDB'} or 'TDB' : select database
38
39  OUPUTS
40  1. Data - output structure
41
42  EXAMPLES
43  1. arread('CH',1);
44  2. arread('CH');
45  3. arread('LT1/AE/CH.1/current')
46  4. arread('LT1/VI/PI55.1/pressure', '02-07-2005 03:21:02', '02-07-2005 20:21:00')
47  5. For all PI
48     arread('PI', [], '02-07-2005 03:21:02', '02-07-2005 20:21:00')
49 
50  See Also <a href="arplot.html" class="code" title="function arplot(varargin)">arplot</a></pre></div>
51
52<!-- crossreference -->
53<h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../../../../up.png"></a></h2>
54This function calls:
55<ul style="list-style-image:url(../../../../matlabicon.gif)">
56</ul>
57This function is called by:
58<ul style="list-style-image:url(../../../../matlabicon.gif)">
59<li><a href="arplot.html" class="code" title="function arplot(varargin)">arplot</a>     ARPLOT - Read data from archiving database</li></ul>
60<!-- crossreference -->
61
62
63<h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../../../../up.png"></a></h2>
64<div class="fragment"><pre>0001 <a name="_sub0" href="#_subfunctions" class="code">function Data = arread(varargin)</a>
650002 <span class="comment">%ARREAD - Read data from archiving database</span>
660003 <span class="comment">%</span>
670004 <span class="comment">%  INPUTS</span>
680005 <span class="comment">%  1. FAMILY attribute name or family name</span>
690006 <span class="comment">%      If family, device list can be given, else [] (All) is assumed</span>
700007 <span class="comment">%  2. starting date {now - 2 hours}</span>
710008 <span class="comment">%  3. ending date {now}</span>
720009 <span class="comment">%  4. {'HDB'} or 'TDB' : select database</span>
730010 <span class="comment">%</span>
740011 <span class="comment">%  OUPUTS</span>
750012 <span class="comment">%  1. Data - output structure</span>
760013 <span class="comment">%</span>
770014 <span class="comment">%  EXAMPLES</span>
780015 <span class="comment">%  1. arread('CH',1);</span>
790016 <span class="comment">%  2. arread('CH');</span>
800017 <span class="comment">%  3. arread('LT1/AE/CH.1/current')</span>
810018 <span class="comment">%  4. arread('LT1/VI/PI55.1/pressure', '02-07-2005 03:21:02', '02-07-2005 20:21:00')</span>
820019 <span class="comment">%  5. For all PI</span>
830020 <span class="comment">%     arread('PI', [], '02-07-2005 03:21:02', '02-07-2005 20:21:00')</span>
840021 <span class="comment">%</span>
850022 <span class="comment">%  See Also arplot</span>
860023
870024 <span class="comment">%</span>
880025 <span class="comment">% Written by Laurent S. Nadolski</span>
890026
900027 <span class="comment">% Default parameters</span>
910028
920029 AverageFlag = 0;
930030
940031 <span class="comment">% Look for hdbextractor name in Tango Static DB</span>
950032 extractor = cell2mat(tango_get_db_property(<span class="string">'archivage'</span>,<span class="string">'hdbextractor'</span>));
960033 database  = <span class="string">'HDB'</span>;
970034
980035 Field = <span class="string">'Monitor'</span>;
990036
1000037 <span class="comment">% WARNING this is the new format for date</span>
1010038 strformat = <span class="string">'dd-mm-yyyy HH:MM:SS'</span>;
1020039
1030040 date1 = datestr(now - 0.0417*12, strformat); <span class="comment">% now - 1 hours</span>
1040041 date2 = datestr(now, strformat);
1050042
1060043 <span class="comment">% Look if 'struct' or 'numeric' in on the input line</span>
1070044 InputFlags = {};
1080045 <span class="keyword">for</span> i = length(varargin):-1:1
1090046     <span class="keyword">if</span> isstruct(varargin{i})
1100047         <span class="comment">% Ignore structures</span>
1110048     <span class="keyword">elseif</span> iscell(varargin{i})
1120049         <span class="comment">% Ignore cells</span>
1130050     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'HDB'</span>)
1140051         extractor = cell2mat(tango_get_db_property(<span class="string">'archivage'</span>,<span class="string">'hdbextractor'</span>));
1150052         database = varargin{i};
1160053         varargin(i) = [];
1170054     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'TDB'</span>)
1180055         extractor = cell2mat(tango_get_db_property(<span class="string">'archivage'</span>,<span class="string">'tdbextractor'</span>));
1190056         database = varargin{i};
1200057         varargin(i) = [];
1210058     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Average'</span>)
1220059         AverageFlag = 1;
1230060         varargin(i) = [];
1240061     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'NoAverage'</span>)
1250062         AverageFlag = 0;
1260063         varargin(i) = [];
1270064     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Monitor'</span>)
1280065         Field = <span class="string">'Monitor'</span>;
1290066         varargin(i) = [];
1300067     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Setpoint'</span>)
1310068         Field = <span class="string">'Setpoint'</span>;
1320069         varargin(i) = [];
1330070     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Struct'</span>)
1340071         StructOutputFlag = 1;
1350072         varargin(i) = [];
1360073     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'Physics'</span>)
1370074         UnitsFlag = <span class="string">'Physics'</span>;
1380075         InputFlags = [InputFlags varargin(i)];
1390076         varargin(i) = [];
1400077     <span class="keyword">elseif</span> strcmpi(varargin{i},<span class="string">'hardware'</span>)
1410078         UnitsFlag = <span class="string">'Hardware'</span>;
1420079         InputFlags = [InputFlags varargin(i)];
1430080         varargin(i) = [];
1440081     <span class="keyword">end</span>
1450082 <span class="keyword">end</span>
1460083
1470084 <span class="comment">%%%%%%%%%%%%%%</span>
1480085 <span class="comment">% INPUT PARSER</span>
1490086 <span class="comment">%%%%%%%%%%%%%%</span>
1500087
1510088 Family = varargin{1};   
1520089 <span class="comment">%% check if family is valid and return it in AO</span>
1530090 [FamilyIndex, AO] = isfamily(Family);
1540091
1550092 <span class="keyword">if</span> FamilyIndex
1560093     <span class="comment">%%%%%%%%%%%%%%%%</span>
1570094     <span class="comment">% FAMILY INPUT %</span>
1580095     <span class="comment">%%%%%%%%%%%%%%%%</span>
1590096     
1600097     <span class="comment">% DeviceList</span>
1610098     <span class="keyword">if</span> length(varargin) &gt; 1
1620099         DeviceList = varargin{2};
1630100     <span class="keyword">else</span>
1640101         DeviceList = family2dev(Family);     <span class="comment">% Default behavior comes from family2dev</span>
1650102     <span class="keyword">end</span>
1660103
1670104     <span class="comment">%Convertion to TANGO name</span>
1680105     Family = family2tango(Family,Field,DeviceList);
1690106
1700107     <span class="keyword">if</span> length(varargin) &gt; 2
1710108         <span class="comment">% starting date</span>
1720109         date1 = varargin{3};
1730110         <span class="keyword">if</span> length(varargin) &gt; 2
1740111             <span class="comment">%ending date</span>
1750112             date2 = varargin{4};
1760113         <span class="keyword">end</span>
1770114     <span class="keyword">end</span>
1780115
1790116 <span class="keyword">elseif</span> isattribute(Family)
1800117     <span class="comment">%%%%%%%%%%%%%%%%%%%%%%</span>
1810118     <span class="comment">% TANGO NAME INPUT %</span>
1820119     <span class="comment">%%%%%%%%%%%%%%%%%%%%%%</span>
1830120     <span class="keyword">if</span> length(varargin) &gt; 1
1840121         <span class="comment">% starting date</span>
1850122         date1 = varargin{2};
1860123         <span class="keyword">if</span> length(varargin) &gt; 2
1870124             <span class="comment">%ending date</span>
1880125             date2 = varargin{3};
1890126         <span class="keyword">end</span>
1900127     <span class="keyword">end</span>
1910128 <span class="keyword">else</span>
1920129     error(<span class="string">'%s is not a valid name\n'</span>,Family);
1930130 <span class="keyword">end</span>
1940131
1950132 <span class="comment">%% For Bug in archiving</span>
1960133 <span class="comment">%attr_name = strcat('//ganymede.synchrotron-soleil.fr:20000/', Family);</span>
1970134 attr_name = Family;
1980135
1990136 <span class="keyword">if</span> ~iscell(attr_name)
2000137     attr_name = {attr_name};
2010138 <span class="keyword">end</span>
2020139
2030140
2040141 <span class="comment">% dvalue : valeur</span>
2050142 <span class="comment">% svalue : date en format type 2004-12-05 16:08:07.969</span>
2060143 <span class="comment">% Import toutes les valeurs archivees entre deux dates</span>
2070144 <span class="keyword">if</span> ~AverageFlag
2080145     <span class="comment">%cmdName = 'GetAttDataBetweenDates';</span>
2090146     cmdName = <span class="string">'GetAttDataBetweenDatesSampling'</span>;
2100147     OPTION = <span class="string">'ALL'</span>;
2110148 <span class="keyword">else</span>
2120149     cmdName = <span class="string">'GetAttDataBetweenDatesSampling'</span>;
2130150     OPTION = <span class="string">'HOUR'</span>;
2140151 <span class="keyword">end</span>
2150152
2160153 <span class="keyword">for</span> ik = 1:length(attr_name)
2170154     argin = {attr_name{ik}, date1, date2, OPTION};
2180155     <span class="comment">% get data for one attribute</span>
2190156     <span class="comment">%Data.ardata(ik) = tango_command_inout2(extractor,'GetAttDataBetweenDates',argin);</span>
2200157     rep{ik} = tango_command_inout2(extractor,cmdName, argin);
2210158 <span class="keyword">end</span>
2220159
2230160 <span class="comment">% Refresh attribute list on extractor</span>
2240161 tango_close_device(extractor);
2250162 tango_open_device(extractor);
2260163 tango_set_timeout(extractor,30000);
2270164
2280165 <span class="keyword">for</span> ik = 1:length(attr_name)
2290166     <span class="keyword">if</span> rep{ik}.lvalue ~= 0
2300167         <span class="comment">%sdata = tango_attribute_history(extractor,rep{ik}.svalue{1,:},double(rep{ik}.lvalue));</span>
2310168         <span class="keyword">if</span> ~iscell(rep{ik}.svalue{1}), rep{ik}.svalue{1} = {rep{ik}.svalue{1}}; <span class="keyword">end</span>
2320169         sdata = tango_attribute_history(extractor,rep{ik}.svalue{1}{:},double(rep{ik}.lvalue));
2330170         <span class="keyword">if</span> tango_error == -1
2340171             tango_print_error_stack;
2350172         <span class="keyword">end</span>
2360173         <span class="keyword">if</span> sdata(1).value.dim_x == 1
2370174             <span class="keyword">for</span> kk = 1:rep{ik}.lvalue,
2380175                 Data.ardata(ik).dvalue(kk) = sdata(kk).value.value;
2390176                 Data.ardata(ik).svalue(kk) = sdata(kk).value.time;
2400177             <span class="keyword">end</span>
2410178         <span class="keyword">else</span> <span class="comment">% for vectors</span>
2420179             <span class="keyword">for</span> kk = 1:rep{ik}.lvalue,
2430180                 Data.ardata(ik).dvalue(kk,:) = sdata(kk).value.value;
2440181                 Data.ardata(ik).svalue(kk,:) = sdata(kk).value.time;
2450182             <span class="keyword">end</span>
2460183         <span class="keyword">end</span>           
2470184        Data.ardata(ik).svalue = tango_shift_time(Data.ardata(ik).svalue);
2480185        tango_command_inout2(extractor,<span class="string">'RemoveDynamicAttribute'</span>,rep{ik}.svalue{1}{:});
2490186     <span class="keyword">else</span>
2500187         disp([mfilename <span class="string">': No Data for '</span> attr_name{ik}]);
2510188     <span class="keyword">end</span>
2520189     
2530190     <span class="comment">%tango_command_inout2(extractor,'RemoveDynamicAttribute',rep{ik}.svalue{2});</span>
2540191     <span class="comment">% If R/W attribute, ardata.dvalue = [readvalue setvalue]</span>
2550192     <span class="comment">% first shot : just keep readback data</span>
2560193 <span class="comment">%     len = length(Data.ardata(ik).svalue);</span>
2570194 <span class="comment">%     if len ~= length(Data.ardata(ik).dvalue)</span>
2580195 <span class="comment">%         Data.ardata(ik).dvalue = Data.ardata(ik).dvalue(1:len);</span>
2590196 <span class="comment">%     end</span>
2600197 <span class="keyword">end</span>
2610198
2620199 Data.TangoNames = attr_name;
2630200 Data.start = date1;
2640201 Data.end   = date2;
2650202 Data.database = database;
2660203
2670204 <span class="keyword">if</span>  ~isfield(Data,<span class="string">'ardata'</span>) ||  (~isstruct(Data.ardata) &amp;&amp; Data == -1) || isempty(Data.ardata(1).dvalue)
2680205     disp([mfilename <span class="string">'No data available'</span>]);
2690206     Data = -1;
2700207     <span class="keyword">return</span>;
2710208 <span class="keyword">end</span></pre></div>
272<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> &copy; 2003</address>
273</body>
274</html>
Note: See TracBrowser for help on using the repository browser.