Home > machine > Soleil > common > cycling > createcyclecurvefull.m

createcyclecurvefull

PURPOSE ^

INPUTS

SYNOPSIS ^

function createcylecurvefull(varargin);

DESCRIPTION ^

 INPUTS
1. Family

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SUBFUNCTIONS ^

SOURCE CODE ^

0001 function createcylecurvefull(varargin);
0002 % INPUTS
0003 %1. Family
0004 
0005 DisplayFlag = 1;
0006 
0007 % Parse input options
0008 InputFlags = {};
0009 for i = length(varargin):-1:1
0010     if strcmpi(varargin{i},'Display')
0011         DisplayFlag = 1;
0012         varargin(i) = [];
0013     elseif strcmpi(varargin{i},'NoDisplay')
0014         DisplayFlag = 0;
0015         varargin(i) = [];
0016     end
0017 end
0018 
0019 %% Load Golden Magnet parameters
0020 
0021 FileName = getfamilydata('OpsData', 'LatticeFile');
0022 DirectoryName = getfamilydata('Directory', 'OpsData');
0023 cnf=load([DirectoryName FileName]);
0024 %% Setpoints values
0025 Setpoint = cnf.ConfigSetpoint;
0026 
0027 Family = varargin{1};
0028 
0029 [FamilyIndex, AO] = isfamily(Family);
0030 if isempty(FamilyIndex)
0031     error('Unknown Family');
0032 end
0033 
0034 % create cycling family name
0035 CycleFamily = ['Cycle' Family];
0036 [CycleIndex, CycleAO] = isfamily(CycleFamily);
0037 
0038 %% Family switchyard
0039 Inom = Setpoint.(Family).Data;
0040 if (ismemberof(CycleFamily,'Cyclage'))
0041      for k = 1:tango_group_size(CycleAO.GroupId)
0042         %% PAS BEAU --  utiliser le mml pour etre sur de la correspondance
0043         CycleAO.Inom(k) = cnf.ConfigSetpoint.(Family).Data(k);
0044         %% create cycling curve
0045         curve = makecurve(CycleAO.Inom(k),CycleAO.Imax(k),Family)
0046         %% upload cycling curve
0047         if DisplayFlag
0048             fprintf(1,'device : Inom = %f Imax= %f \n', ...
0049                 CycleAO.Inom(k), CycleAO.Imax(k));
0050             plotcyclecurve(curve);
0051         end
0052         reply = input('Apply to Dserver new cycling curve ? (y/n)','s');
0053         switch lower(reply)
0054             case {'Y','Yes'}
0055                 setcyclecurve(CycleFamily,curve);
0056             otherwise
0057                 disp('Parameter not set to dserver')
0058         end
0059     end
0060 else
0061     error('Unknown Cycling Family')
0062 end
0063 
0064 end
0065 
0066 function curve = makecurve(Inom,Imax,MagnetType)
0067 
0068 switch MagnetType
0069     case {'BEND','QP','CH','CV'}
0070         curve = [[0 10]
0071             [Imax 180]
0072             [0.95*Inom 180]
0073             [1.05*Inom 180]
0074             [0.95*Inom 180]
0075             [1.05*Inom 180]
0076             [0.95*Inom 180]
0077             [Inom 180] ];
0078 end
0079 end
0080

Generated on Mon 21-May-2007 15:35:27 by m2html © 2003