PageRenderTime 32ms CodeModel.GetById 0ms RepoModel.GetById 0ms app.codeStats 0ms

/ATF2/FlightSim/testApps/OCFF/OCFF.m

http://atf2flightsim.googlecode.com/
MATLAB | 475 lines | 351 code | 37 blank | 87 comment | 35 complexity | 1d6091a582fbcd1cd32c42b53d6e310f MD5 | raw file
Possible License(s): BSD-2-Clause, LGPL-2.0, IPL-1.0, BSD-3-Clause
  1. function varargout = OCFF(varargin)
  2. % OCFF M-file for OCFF.fig
  3. % OCFF, by itself, creates a new OCFF or raises the existing
  4. % singleton*.
  5. %
  6. % H = OCFF returns the handle to a new OCFF or the handle to
  7. % the existing singleton*.
  8. %
  9. % OCFF('CALLBACK',hObject,eventData,handles,...) calls the local
  10. % function named CALLBACK in OCFF.M with the given input arguments.
  11. %
  12. % OCFF('Property','Value',...) creates a new OCFF or raises the
  13. % existing singleton*. Starting from the left, property value pairs are
  14. % applied to the GUI before OCFF_OpeningFcn gets called. An
  15. % unrecognized property name or invalid value makes property application
  16. % stop. All inputs are passed to OCFF_OpeningFcn via varargin.
  17. %
  18. % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
  19. % instance to run (singleton)".
  20. %
  21. % See also: GUIDE, GUIDATA, GUIHANDLES
  22. % Edit the above text to modify the response to help OCFF
  23. % Last Modified by GUIDE v2.5 15-Apr-2009 17:54:44
  24. % Begin initialization code - DO NOT EDIT
  25. gui_Singleton = 1;
  26. gui_State = struct('gui_Name', mfilename, ...
  27. 'gui_Singleton', gui_Singleton, ...
  28. 'gui_OpeningFcn', @OCFF_OpeningFcn, ...
  29. 'gui_OutputFcn', @OCFF_OutputFcn, ...
  30. 'gui_LayoutFcn', [] , ...
  31. 'gui_Callback', []);
  32. if nargin && ischar(varargin{1})
  33. gui_State.gui_Callback = str2func(varargin{1});
  34. end
  35. if nargout
  36. [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
  37. else
  38. gui_mainfcn(gui_State, varargin{:});
  39. end
  40. % End initialization code - DO NOT EDIT
  41. % --- Executes just before OCFF is made visible.
  42. function OCFF_OpeningFcn(hObject, eventdata, handles, varargin)
  43. global FL BEAMLINE GIRDER
  44. FlHwUpdate();
  45. iexlist=findcells(BEAMLINE,'Name','IEX');
  46. fflist=findcells(BEAMLINE,'Name','QM16FF');
  47. list = findcells(BEAMLINE,'Class','QUAD');
  48. girdpos=list(find(list>=fflist(1),1):length(list));
  49. girdlist=zeros(1, length(girdpos));
  50. for R=1:length(girdpos)
  51. girdlist(R)=BEAMLINE{girdpos(R)}.Girder;
  52. end
  53. girderlist=girdlist(1:2:length(girdlist));
  54. bpmnofull=length(findcells({BEAMLINE{iexlist(end):end}},'Class','MONI'));
  55. bpmnoext=length(findcells({BEAMLINE{iexlist(end):fflist(1)}},'Class','MONI'));
  56. FL.OCFF.corrreset=zeros(length(girderlist),3);
  57. for r=1:length(girderlist)
  58. FL.OCFF.corrreset(r,:)=GIRDER{girderlist(r)}.MoverPos;
  59. end
  60. FL.OCFF.savefilename='testApps/OCFF/FFresults.txt';
  61. FL.OCFF.overwrite=1;
  62. FL.OCFF.bpmweights=ones(bpmnofull-bpmnoext,2);
  63. FL.OCFF.bpmtarget=zeros(bpmnofull-bpmnoext,2);
  64. FL.OCFF.moverweights=ones(length(girderlist),2);
  65. FL.OCFF.maxiter=10;
  66. FL.OCFF.tabledatafile='testApps/OCFF/defaults.mat';
  67. % This function has no output args, see OutputFcn.
  68. % hObject handle to figure
  69. % eventdata reserved - to be defined in a future version of MATLAB
  70. % handles structure with handles and user data (see GUIDATA)
  71. % varargin command line arguments to OCFF (see VARARGIN)
  72. % Choose default command line output for OCFF
  73. handles.output = hObject;
  74. % Update handles structure
  75. guidata(hObject, handles);
  76. % UIWAIT makes OCFF wait for user response (see UIRESUME)
  77. % uiwait(handles.figure1);
  78. % --- Outputs from this function are returned to the command line.
  79. function varargout = OCFF_OutputFcn(hObject, eventdata, handles)
  80. % varargout cell array for returning output args (see VARARGOUT);
  81. % hObject handle to figure
  82. % eventdata reserved - to be defined in a future version of MATLAB
  83. % handles structure with handles and user data (see GUIDATA)
  84. % Get default command line output from handles structure
  85. varargout{1} = handles.output;
  86. % --- Executes on button press in pushbutton1.
  87. function pushbutton1_Callback(hObject, eventdata, handles)
  88. bpmtargetFF
  89. % hObject handle to pushbutton1 (see GCBO)
  90. % eventdata reserved - to be defined in a future version of MATLAB
  91. % handles structure with handles and user data (see GUIDATA)
  92. % --- Executes on button press in pushbutton2.
  93. function pushbutton2_Callback(hObject, eventdata, handles)
  94. bpmweightsFF
  95. % hObject handle to pushbutton2 (see GCBO)
  96. % eventdata reserved - to be defined in a future version of MATLAB
  97. % handles structure with handles and user data (see GUIDATA)
  98. % --- Executes on button press in pushbutton3.
  99. function pushbutton3_Callback(hObject, eventdata, handles)
  100. correctorweightsFF
  101. % hObject handle to pushbutton3 (see GCBO)
  102. % eventdata reserved - to be defined in a future version of MATLAB
  103. % handles structure with handles and user data (see GUIDATA)
  104. % --- Executes on button press in pushbutton4.
  105. function pushbutton4_Callback(hObject, eventdata, handles)
  106. global FL PS BEAMLINE GIRDER
  107. set(handles.text3, 'String', 'Auto-run')
  108. if FL.OCFF.overwrite==1
  109. delete(FL.OCFF.savefilename)
  110. end
  111. FlHwUpdate();
  112. openfile=open('thermatsFF.mat');
  113. FL.OCFF.xmat=openfile.xmat;
  114. FL.OCFF.ymat=openfile.ymat;
  115. for R2=1:length(FL.OCFF.bpmweights(:,1))
  116. FL.OCFF.xmat(:,R2)=FL.OCFF.xmat(:,R2)*FL.OCFF.bpmweights(R2,1);
  117. end
  118. for R2=1:length(FL.OCFF.moverweights(:,1))
  119. FL.OCFF.xmat(R2,:)=FL.OCFF.xmat(R2,:)*FL.OCFF.moverweights(R2,1);
  120. end
  121. for R2=1:length(FL.OCFF.bpmweights(:,2))
  122. FL.OCFF.ymat(:,R2)=FL.OCFF.ymat(:,R2)*FL.OCFF.bpmweights(R2,2);
  123. end
  124. for R2=1:length(FL.OCFF.moverweights(:,1))
  125. FL.OCFF.ymat(R2,:)=FL.OCFF.ymat(R2,:)*FL.OCFF.moverweights(R2,2);
  126. end
  127. FL.OCFF.iexlist=findcells(BEAMLINE,'Name','IEX');
  128. FL.OCFF.fflist=findcells(BEAMLINE,'Name','QM16FF');
  129. list = findcells(BEAMLINE,'Class','QUAD');
  130. girdpos=list(find(list>=FL.OCFF.fflist(1),1):length(list));
  131. girdlist=zeros(1, length(girdpos));
  132. for R=1:length(girdpos)
  133. girdlist(R)=BEAMLINE{girdpos(R)}.Girder;
  134. end
  135. FL.OCFF.girderlist=girdlist(1:2:length(girdlist));
  136. FL.OCFF.bpmnofull=length(findcells({BEAMLINE{FL.OCFF.iexlist(end):end}},'Class','MONI'));
  137. FL.OCFF.bpmnoext=length(findcells({BEAMLINE{FL.OCFF.iexlist(end):FL.OCFF.fflist(1)}},'Class','MONI'));
  138. FL.OCFF.iternum=0;
  139. request{1}=FL.OCFF.girderlist;
  140. request{2}=[];
  141. request{3}=[];
  142. [stat FL.OCFF.resp] = AccessRequest(request);
  143. FL.OCFF.stop=0;
  144. while FL.OCFF.stop==0
  145. pause on
  146. pause(1);
  147. pause off
  148. FlHwUpdate();
  149. FlHwUpdate('wait',10);
  150. stat=FlHwUpdate('wait',10);
  151. [stat,output]=FlHwUpdate('bpmave',10);
  152. [stat instdata] = FlTrackThru(FL.OCFF.fflist(1)-1,length(BEAMLINE),output);
  153. FL.OCFF.bpmxavg=zeros(FL.OCFF.bpmnofull-FL.OCFF.bpmnoext,1);
  154. FL.OCFF.bpmyavg=zeros(FL.OCFF.bpmnofull-FL.OCFF.bpmnoext,1);
  155. for R2=1:FL.OCFF.bpmnofull-FL.OCFF.bpmnoext
  156. if isnan(instdata{1}(R2).x) == 1
  157. FL.OCFF.bpmxavg(R2,1)=FL.OCFF.bpmtarget(R2,1);
  158. else
  159. FL.OCFF.bpmxavg(R2,1)=instdata{1}(R2).x;
  160. end
  161. if isnan(instdata{1}(R2).y) == 1
  162. FL.OCFF.bpmyavg(R2,1)=FL.OCFF.bpmtarget(R2,2);
  163. else
  164. FL.OCFF.bpmyavg(R2,1)=instdata{1}(R2).y;
  165. end
  166. end
  167. FL.OCFF.iternum=FL.OCFF.iternum+1;
  168. list=findcells({BEAMLINE{FL.OCFF.fflist(end):end}},'Class','MONI')+FL.OCFF.fflist(end)-1;
  169. bpmslist=[];
  170. for r=1:length(list)
  171. bpmslist=[bpmslist,BEAMLINE{list(r)}.S];
  172. end
  173. plot(bpmslist,FL.OCFF.bpmxavg*10^6,'Color','blue')
  174. hold on
  175. plot(bpmslist,FL.OCFF.bpmyavg*10^6,'Color','red')
  176. hold off
  177. xlabel('S (m)')
  178. ylabel('BPM Reading (microns)')
  179. title('Current Final Focus Orbit')
  180. h = legend('Horizontal','Vertical',1);
  181. set(h,'Interpreter','none')
  182. dlmwrite(FL.OCFF.savefilename,'====================== new track ==================','delimiter', ' ','roffset', 2,'-append');
  183. dlmwrite(FL.OCFF.savefilename,'iternum','delimiter', ' ','roffset', 2,'-append');
  184. dlmwrite(FL.OCFF.savefilename,FL.OCFF.iternum,'delimiter', ' ','roffset', 2,'-append');
  185. dlmwrite(FL.OCFF.savefilename,'xrms','delimiter', ' ','roffset', 2,'-append');
  186. dlmwrite(FL.OCFF.savefilename,sqrt(mean(FL.OCFF.bpmxavg.^2)),'delimiter', ' ','roffset', 2,'-append');
  187. dlmwrite(FL.OCFF.savefilename,'yrms','delimiter', ' ','roffset', 2,'-append');
  188. dlmwrite(FL.OCFF.savefilename,sqrt(mean(FL.OCFF.bpmyavg.^2)),'delimiter', ' ','roffset', 2,'-append')
  189. dlmwrite(FL.OCFF.savefilename,'hor','delimiter', ' ','roffset', 2,'-append');
  190. dlmwrite(FL.OCFF.savefilename,FL.OCFF.bpmxavg,'delimiter', ' ','roffset', 2,'-append');
  191. dlmwrite(FL.OCFF.savefilename,'vert','delimiter', ' ','roffset', 2,'-append');
  192. dlmwrite(FL.OCFF.savefilename,FL.OCFF.bpmyavg,'delimiter', ' ','roffset', 2,'-append');
  193. dlmwrite(FL.OCFF.savefilename,'---------------------------','delimiter', ' ','roffset', 2,'-append')
  194. FL.OCFF.horcorr=transpose(pinv(FL.OCFF.xmat))*(FL.OCFF.bpmxavg-FL.OCFF.bpmtarget(:,1))*10^-5;
  195. FL.OCFF.vertcorr=transpose(pinv(FL.OCFF.ymat))*(FL.OCFF.bpmyavg-FL.OCFF.bpmtarget(:,2))*10^-5;
  196. FL.OCFF.midhorcorr=transpose(pinv(FL.OCFF.xmat))*((FL.OCFF.bpmxavg-FL.OCFF.bpmtarget(:,1))/2)*10^-5;
  197. FL.OCFF.midvertcorr=transpose(pinv(FL.OCFF.ymat))*((FL.OCFF.bpmyavg-FL.OCFF.bpmtarget(:,2))/2)*10^-5;
  198. dlmwrite(FL.OCFF.savefilename,'horcorr','delimiter', ' ','roffset', 2,'-append');
  199. dlmwrite(FL.OCFF.savefilename,FL.OCFF.horcorr,'delimiter', ' ','roffset', 2,'-append');
  200. dlmwrite(FL.OCFF.savefilename,'vertcorr','delimiter', ' ','roffset', 2,'-append');
  201. dlmwrite(FL.OCFF.savefilename,FL.OCFF.vertcorr,'delimiter', ' ','roffset', 2,'-append');
  202. dlmwrite(FL.OCFF.savefilename,'mid-point horcorr','delimiter', ' ','roffset', 2,'-append');
  203. dlmwrite(FL.OCFF.savefilename,FL.OCFF.midhorcorr,'delimiter', ' ','roffset', 2,'-append');
  204. dlmwrite(FL.OCFF.savefilename,'mid-point vertcorr','delimiter', ' ','roffset', 2,'-append');
  205. dlmwrite(FL.OCFF.savefilename,FL.OCFF.midvertcorr,'delimiter', ' ','roffset', 2,'-append');
  206. for R1=1:22
  207. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt(1)=GIRDER{FL.OCFF.girderlist(R1)}.MoverPos(1)-FL.OCFF.horcorr(R1);
  208. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt(2)=GIRDER{FL.OCFF.girderlist(R1)}.MoverPos(2)-FL.OCFF.vertcorr(R1);
  209. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt(3)=GIRDER{FL.OCFF.girderlist(R1)}.MoverPos(3);
  210. end
  211. stat = MoverTrim(FL.OCFF.girderlist,1);
  212. pause on
  213. pause(1);
  214. pause off
  215. FlHwUpdate();
  216. FL.OCFF.bpmxavgprev=FL.OCFF.bpmxavg;
  217. FL.OCFF.bpmyavgprev=FL.OCFF.bpmyavg;
  218. FlHwUpdate('wait',10);
  219. stat=FlHwUpdate('wait',10);
  220. [stat,output]=FlHwUpdate('bpmave',10);
  221. [stat instdata] = FlTrackThru(FL.OCFF.fflist(1)-1,length(BEAMLINE),output);
  222. FL.OCFF.bpmxavg=zeros(FL.OCFF.bpmnofull-FL.OCFF.bpmnoext,1);
  223. FL.OCFF.bpmyavg=zeros(FL.OCFF.bpmnofull-FL.OCFF.bpmnoext,1);
  224. for R2=1:FL.OCFF.bpmnofull-FL.OCFF.bpmnoext
  225. if isnan(instdata{1}(R2).x) == 1
  226. FL.OCFF.bpmxavg(R2,1)=FL.OCFF.bpmtarget(R2,1);
  227. else
  228. FL.OCFF.bpmxavg(R2,1)=instdata{1}(R2).x;
  229. end
  230. if isnan(instdata{1}(R2).y) == 1
  231. FL.OCFF.bpmyavg(R2,1)=FL.OCFF.bpmtarget(R2,2);
  232. else
  233. FL.OCFF.bpmyavg(R2,1)=instdata{1}(R2).y;
  234. end
  235. end
  236. FL.OCFF.iternum=FL.OCFF.iternum+1;
  237. list=findcells({BEAMLINE{FL.OCFF.fflist(end):end}},'Class','MONI')+FL.OCFF.fflist(end)-1;
  238. bpmslist=[];
  239. for r=1:length(list)
  240. bpmslist=[bpmslist,BEAMLINE{list(r)}.S];
  241. end
  242. plot(bpmslist,FL.OCFF.bpmxavg*10^6,'Color','blue')
  243. hold on
  244. plot(bpmslist,FL.OCFF.bpmyavg*10^6,'Color','red')
  245. hold off
  246. xlabel('S (m)')
  247. ylabel('BPM Reading (microns)')
  248. title('Current Final Focus Orbit')
  249. h = legend('Horizontal','Vertical',1);
  250. set(h,'Interpreter','none')
  251. dlmwrite(FL.OCFF.savefilename,'iternum','delimiter', ' ','roffset', 2,'-append');
  252. dlmwrite(FL.OCFF.savefilename,FL.OCFF.iternum,'delimiter', ' ','roffset', 2,'-append');
  253. dlmwrite(FL.OCFF.savefilename,'xrms','delimiter', ' ','roffset', 2,'-append');
  254. dlmwrite(FL.OCFF.savefilename,sqrt(mean(FL.OCFF.bpmxavg.^2)),'delimiter', ' ','roffset', 2,'-append');
  255. dlmwrite(FL.OCFF.savefilename,'yrms','delimiter', ' ','roffset', 2,'-append');
  256. dlmwrite(FL.OCFF.savefilename,sqrt(mean(FL.OCFF.bpmyavg.^2)),'delimiter', ' ','roffset', 2,'-append')
  257. dlmwrite(FL.OCFF.savefilename,'hor','delimiter', ' ','roffset', 2,'-append');
  258. dlmwrite(FL.OCFF.savefilename,FL.OCFF.bpmxavg,'delimiter', ' ','roffset', 2,'-append');
  259. dlmwrite(FL.OCFF.savefilename,'vert','delimiter', ' ','roffset', 2,'-append');
  260. dlmwrite(FL.OCFF.savefilename,FL.OCFF.bpmyavg,'delimiter', ' ','roffset', 2,'-append');
  261. dlmwrite(FL.OCFF.savefilename,'---------------------------','delimiter', ' ','roffset', 2,'-append')
  262. if sqrt(mean(FL.OCFF.bpmxavg.^2))/sqrt(mean(FL.OCFF.bpmxavgprev.^2))>=1
  263. if sqrt(mean(FL.OCFF.bpmyavg.^2))/sqrt(mean(FL.OCFF.bpmyavgprev.^2))>=1
  264. FL.OCFF.stop=1;
  265. end
  266. end
  267. if FL.OCFF.iternum>=FL.OCFF.maxiter
  268. FL.OCFF.stop=1;
  269. end
  270. end
  271. for R1=1:22
  272. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt(1)=GIRDER{FL.OCFF.girderlist(R1)}.MoverPos(1)+FL.OCFF.horcorr(R1);
  273. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt(2)=GIRDER{FL.OCFF.girderlist(R1)}.MoverPos(2)+FL.OCFF.vertcorr(R1);
  274. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt(3)=GIRDER{FL.OCFF.girderlist(R1)}.MoverPos(3);
  275. end
  276. stat = MoverTrim(FL.OCFF.girderlist,1);
  277. pause on
  278. pause(1);
  279. pause off
  280. FlHwUpdate();
  281. FL.OCFF.bpmxavgprev=FL.OCFF.bpmxavg;
  282. FL.OCFF.bpmyavgprev=FL.OCFF.bpmyavg;
  283. FlHwUpdate('wait',10);
  284. stat=FlHwUpdate('wait',10);
  285. [stat,output]=FlHwUpdate('bpmave',10);
  286. [stat instdata] = FlTrackThru(FL.OCFF.fflist(1)-1,length(BEAMLINE),output);
  287. FL.OCFF.bpmxavg=zeros(FL.OCFF.bpmnofull-FL.OCFF.bpmnoext,1);
  288. FL.OCFF.bpmyavg=zeros(FL.OCFF.bpmnofull-FL.OCFF.bpmnoext,1);
  289. for R2=1:FL.OCFF.bpmnofull-FL.OCFF.bpmnoext
  290. if isnan(instdata{1}(R2).x) == 1
  291. FL.OCFF.bpmxavg(R2,1)=FL.OCFF.bpmtarget(R2,1);
  292. else
  293. FL.OCFF.bpmxavg(R2,1)=instdata{1}(R2).x;
  294. end
  295. if isnan(instdata{1}(R2).y) == 1
  296. FL.OCFF.bpmyavg(R2,1)=FL.OCFF.bpmtarget(R2,2);
  297. else
  298. FL.OCFF.bpmyavg(R2,1)=instdata{1}(R2).y;
  299. end
  300. end
  301. FL.OCFF.iternum=FL.OCFF.iternum+1;
  302. list=findcells({BEAMLINE{FL.OCFF.fflist(end):end}},'Class','MONI')+FL.OCFF.fflist(end)-1;
  303. bpmslist=[];
  304. for r=1:length(list)
  305. bpmslist=[bpmslist,BEAMLINE{list(r)}.S];
  306. end
  307. plot(bpmslist,FL.OCFF.bpmxavg*10^6,'Color','blue')
  308. hold on
  309. plot(bpmslist,FL.OCFF.bpmyavg*10^6,'Color','red')
  310. hold off
  311. xlabel('S (m)')
  312. ylabel('BPM Reading (microns)')
  313. title('Current Final Focus Orbit')
  314. h = legend('Horizontal','Vertical',1);
  315. set(h,'Interpreter','none')
  316. dlmwrite(FL.OCFF.savefilename,'iternum','delimiter', ' ','roffset', 2,'-append');
  317. dlmwrite(FL.OCFF.savefilename,FL.OCFF.iternum,'delimiter', ' ','roffset', 2,'-append');
  318. dlmwrite(FL.OCFF.savefilename,'xrms','delimiter', ' ','roffset', 2,'-append');
  319. dlmwrite(FL.OCFF.savefilename,sqrt(mean(FL.OCFF.bpmxavg.^2)),'delimiter', ' ','roffset', 2,'-append');
  320. dlmwrite(FL.OCFF.savefilename,'yrms','delimiter', ' ','roffset', 2,'-append');
  321. dlmwrite(FL.OCFF.savefilename,sqrt(mean(FL.OCFF.bpmyavg.^2)),'delimiter', ' ','roffset', 2,'-append')
  322. dlmwrite(FL.OCFF.savefilename,'hor','delimiter', ' ','roffset', 2,'-append');
  323. dlmwrite(FL.OCFF.savefilename,FL.OCFF.bpmxavg,'delimiter', ' ','roffset', 2,'-append');
  324. dlmwrite(FL.OCFF.savefilename,'vert','delimiter', ' ','roffset', 2,'-append');
  325. dlmwrite(FL.OCFF.savefilename,FL.OCFF.bpmyavg,'delimiter', ' ','roffset', 2,'-append');
  326. dlmwrite(FL.OCFF.savefilename,'---------------------------','delimiter', ' ','roffset', 2,'-append')
  327. AccessRequest('release',FL.OCFF.resp);
  328. if FL.OCFF.stop==2
  329. set(handles.text3, 'String', 'Aborted')
  330. else
  331. set(handles.text3, 'String', 'Ready')
  332. end
  333. % hObject handle to pushbutton4 (see GCBO)
  334. % eventdata reserved - to be defined in a future version of MATLAB
  335. % handles structure with handles and user data (see GUIDATA)
  336. % --- Executes on button press in pushbutton5.
  337. function pushbutton5_Callback(hObject, eventdata, handles)
  338. manualFF
  339. % hObject handle to pushbutton5 (see GCBO)
  340. % eventdata reserved - to be defined in a future version of MATLAB
  341. % handles structure with handles and user data (see GUIDATA)
  342. % --- Executes on button press in pushbutton6.
  343. function pushbutton6_Callback(hObject, eventdata, handles)
  344. global FL BEAMLINE PS GIRDER
  345. set(handles.text3, 'String', 'Busy')
  346. FL.OCFF.iexlist=findcells(BEAMLINE,'Name','IEX');
  347. FL.OCFF.fflist=findcells(BEAMLINE,'Name','QM16FF');
  348. list = findcells(BEAMLINE,'Class','QUAD');
  349. girdpos=list(find(list>=FL.OCFF.fflist(1),1):length(list));
  350. girdlist=zeros(1, length(girdpos));
  351. for R=1:length(girdpos)
  352. girdlist(R)=BEAMLINE{girdpos(R)}.Girder;
  353. end
  354. FL.OCFF.girderlist=girdlist(1:2:length(girdlist));
  355. FL.OCFF.bpmnofull=length(findcells({BEAMLINE{FL.OCFF.iexlist(end):end}},'Class','MONI'));
  356. FL.OCFF.bpmnoext=length(findcells({BEAMLINE{FL.OCFF.iexlist(end):FL.OCFF.fflist(1)}},'Class','MONI'));
  357. FL.OCFF.iternum=0;
  358. request{1}=FL.OCFF.girderlist;
  359. request{2}=[];
  360. request{3}=[];
  361. [stat FL.OCFF.resp] = AccessRequest(request);
  362. for R1=1:22
  363. GIRDER{FL.OCFF.girderlist(R1)}.MoverSetPt=FL.OCFF.corrreset(R1,:);
  364. end
  365. stat = MoverTrim(FL.OCFF.girderlist,1);
  366. pause on
  367. pause(1);
  368. pause off
  369. FlHwUpdate();
  370. AccessRequest('release',FL.OCFF.resp);
  371. set(handles.text3, 'String', 'Ready')
  372. % hObject handle to pushbutton6 (see GCBO)
  373. % eventdata reserved - to be defined in a future version of MATLAB
  374. % handles structure with handles and user data (see GUIDATA)
  375. % --- Executes on button press in pushbutton7.
  376. function pushbutton7_Callback(hObject, eventdata, handles)
  377. global FL BEAMLINE PS GIRDER
  378. set(handles.text3, 'String', 'Busy')
  379. pause on
  380. pause(1)
  381. pause off
  382. FlHwUpdate();
  383. iexlist=findcells(BEAMLINE,'Name','IEX');
  384. fflist=findcells(BEAMLINE,'Name','QM16FF');
  385. list = findcells(BEAMLINE,'Class','QUAD');
  386. girdpos=list(find(list>=fflist(1),1):length(list));
  387. girdlist=zeros(1, length(girdpos));
  388. for R=1:length(girdpos)
  389. girdlist(R)=BEAMLINE{girdpos(R)}.Girder;
  390. end
  391. girderlist=girdlist(1:2:length(girdlist));
  392. bpmnofull=length(findcells({BEAMLINE{iexlist(end):end}},'Class','MONI'));
  393. bpmnoext=length(findcells({BEAMLINE{iexlist(end):fflist(1)}},'Class','MONI'));
  394. FL.OCFF.corrreset=zeros(length(girderlist),3);
  395. for r=1:length(girderlist)
  396. FL.OCFF.corrreset(r,:)=GIRDER{girderlist(r)}.MoverPos;
  397. end
  398. set(handles.text3, 'String', 'Ready')
  399. % hObject handle to pushbutton7 (see GCBO)
  400. % eventdata reserved - to be defined in a future version of MATLAB
  401. % handles structure with handles and user data (see GUIDATA)
  402. % --- Executes on button press in pushbutton8.
  403. function pushbutton8_Callback(hObject, eventdata, handles)
  404. close(handles.figure1);
  405. % hObject handle to pushbutton8 (see GCBO)
  406. % eventdata reserved - to be defined in a future version of MATLAB
  407. % handles structure with handles and user data (see GUIDATA)
  408. % --- Executes on button press in pushbutton9.
  409. function pushbutton9_Callback(hObject, eventdata, handles)
  410. outputfileFF
  411. % hObject handle to pushbutton9 (see GCBO)
  412. % eventdata reserved - to be defined in a future version of MATLAB
  413. % handles structure with handles and user data (see GUIDATA)
  414. function edit1_Callback(hObject, eventdata, handles)
  415. global FL
  416. user_entry = str2double(get(hObject,'string'));
  417. if isnan(user_entry)
  418. errordlg('You must enter a numeric value','Bad Input','modal')
  419. uicontrol(hObject)
  420. return
  421. else
  422. FL.OCFF.maxiter=user_entry;
  423. end
  424. % hObject handle to edit1 (see GCBO)
  425. % eventdata reserved - to be defined in a future version of MATLAB
  426. % handles structure with handles and user data (see GUIDATA)
  427. % Hints: get(hObject,'String') returns contents of edit1 as text
  428. % str2double(get(hObject,'String')) returns contents of edit1 as a double
  429. % --- Executes during object creation, after setting all properties.
  430. function edit1_CreateFcn(hObject, eventdata, handles)
  431. % hObject handle to edit1 (see GCBO)
  432. % eventdata reserved - to be defined in a future version of MATLAB
  433. % handles empty - handles not created until after all CreateFcns called
  434. % Hint: edit controls usually have a white background on Windows.
  435. % See ISPC and COMPUTER.
  436. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
  437. set(hObject,'BackgroundColor','white');
  438. end