diff --git a/code/classes/SCDclass_taskmdsloadprevADC.m b/code/classes/SCDclass_taskmdsloadprevADC.m index c3350e4d793bd5cb6bd1a5c5daa300e34f8e581b..9e02e5084513db923bef1ae3c94b09452f7098e7 100644 --- a/code/classes/SCDclass_taskmdsloadprevADC.m +++ b/code/classes/SCDclass_taskmdsloadprevADC.m @@ -12,11 +12,13 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task function obj=SCDclass_taskmdsloadprevADC(id, varargin) obj@SCDclass_task(id, varargin); obj.cparser.addRequired('modelbus',@(x) ischar(x)); - obj.cparser.addParameter('node', 0, @(x) (isnumeric(x) && (x==2))); + obj.cparser.addParameter('node', 0, @(x) (isnumeric(x) && ((x==1) || x==2))); obj=obj.parseconstructorcommon(id, varargin); obj.modelbus=obj.cparser.Results.modelbus; obj.node=obj.cparser.Results.node; switch(obj.node) + case 1 + obj.workspacedatabasestructure='SCDsimdata.SCDnode01simdata.adc'; case 2 obj.workspacedatabasestructure='SCDsimdata.SCDnode02simdata.adc'; otherwise @@ -30,6 +32,8 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task mdsopen(obj.mdstree, shot); switch(obj.node) + case 1 + obj.actualizeNode01(shot); case 2 obj.actualizeNode02(shot); end @@ -40,6 +44,8 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task %value=eval(obj.getcommand); switch(obj.node) + case 1 + [~,value]=obj.getdataNode01ACQ196(shot); case 2 if shot<65113 [~,value]=obj.getdataNode02ACQ196(shot); %% Here we need to switch betweeen old and new acquisition unit and tcv standard also @@ -64,6 +70,30 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task methods(Access = private) + function obj = actualizeNode01(obj, shot) + dd=SCDconf_getdatadict(obj.datadictionary); + adcbus=dd.getEntry(obj.modelbus).getValue; + [~,data]=obj.getdata(shot); + T=timeseries; + if obj.verbose==1 + fprintf('Actualizing data for bus: ''%s'' (%s, shot %d) ', obj.modelbus, obj.classname, shot); + end + for ii=1:96 + T.Time=data.Time; + T.Data=int16(data.Data(:,ii)); + assignin('base','temp',T); + assigncmd=sprintf('%s.%s=temp;',obj.workspacedatabasestructure, adcbus.Elements(ii).Name); + evalin('base',assigncmd); + if obj.verbose==1 && mod(ii,4)==0 + fprintf('.'); + end + end + evalin('base','clear temp'); + if obj.verbose==1 + fprintf('\n'); + end + end + function obj = actualizeNode02(obj, shot) dd=SCDconf_getdatadict(obj.datadictionary); adcbus=dd.getEntry(obj.modelbus).getValue; @@ -87,7 +117,7 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task fprintf('\n'); end end - + function [obj, value] = getdataNode02ACQ196(obj, shot) T=timeseries; timebase=mdsvalue('dim_of(\top.crpprt02.board1.adc_01)'); %% TODO: check with marte @@ -151,6 +181,34 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task fprintf('\n'); end end + + function [obj, value] = getdataNode01ACQ196(obj, shot) + T=timeseries; + timebase=mdsvalue('dim_of(\top.crpprt01.board1.adc_01)'); %% TODO: check with marte + d_time = double(mdsvalueraw( '\top.crpprt01.params:d_time' ))*1.0e-6; + %timebase = round(timebase.*1/d_time)*d_time-d_time/2; + timebase = round(timebase.*1/d_time)*d_time-d_time/100; + T.Time=timebase; + T.Data=zeros(numel(timebase),96); + if obj.verbose==1 + fprintf('Getting data for bus: ''%s'' (%s, shot %d) ', obj.modelbus, obj.classname, shot); + end + for ii=1:96 + % Node 01 data are loaded in the stored order since + % up to now there is only old node 01 + + channelstr=sprintf('\\top.crpprt01.board1.adc_%02d.raw',physical2logical(ii)); + T.Data(:,ii)=int16(mdsvalue(channelstr)); + if obj.verbose==1 && mod(ii,4)==0 + fprintf('.'); + end + end + value=T; + if obj.verbose==1 + fprintf('\n'); + end + end + end end