From 56162837224d84150a5b5d27d3e0d0324d7e5c65 Mon Sep 17 00:00:00 2001 From: galperti <cristian.galperti@epfl.ch> Date: Fri, 19 Feb 2021 16:10:03 +0100 Subject: [PATCH] adc load task for node 07 added, ready for sim --- code/classes/SCDclass_taskmdsloadprevADC.m | 100 +++++++++++++++++---- 1 file changed, 82 insertions(+), 18 deletions(-) diff --git a/code/classes/SCDclass_taskmdsloadprevADC.m b/code/classes/SCDclass_taskmdsloadprevADC.m index af6ba19..8faff58 100644 --- a/code/classes/SCDclass_taskmdsloadprevADC.m +++ b/code/classes/SCDclass_taskmdsloadprevADC.m @@ -16,7 +16,7 @@ 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==1) || x==2))); + obj.cparser.addParameter('node', 0, @(x) (isnumeric(x) && ((x==1) || x==2 || x==7))); obj=obj.parseconstructorcommon(id, varargin); obj.modelbus=obj.cparser.Results.modelbus; obj.node=obj.cparser.Results.node; @@ -25,6 +25,8 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task obj.workspacedatabasestructure='SCDsimdata.SCDnode01simdata.adc'; case 2 obj.workspacedatabasestructure='SCDsimdata.SCDnode02simdata.adc'; + case 7 + obj.workspacedatabasestructure='SCDsimdata.SCDnode07simdata.adc'; otherwise obj.workspacedatabasestructure=''; end @@ -36,17 +38,19 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task mdsconnect(obj.mdsserver); mdsopen(obj.mdstree, shot); - try + %try switch(obj.node) case 1 - obj.actualizeNode(shot, 96); + obj.actualizeNode(shot, 96, false); case 2 - obj.actualizeNode(shot, 192); + obj.actualizeNode(shot, 192, false); + case 7 + obj.actualizeNode(shot, 96, true); end - catch - fprintf('\n'); - warning('SCDclass_taskmdsloadprevADC:init','Error initializing ADC bus for node %d.',obj.node); - end + %catch + % fprintf('\n'); + % warning('SCDclass_taskmdsloadprevADC:init','Error initializing ADC bus for node %d.',obj.node); + %end end function [obj, value] = getdata(obj,shot) @@ -63,7 +67,10 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task [~,value]=obj.getdataNode02ACQ196(shot); else [~,value]=obj.getdataNode02ACQ2106(shot); - end + end + case 7 + % TODO: differentiate old and new system here ? + [~,value]=obj.getdataNode07(shot, 256); end end @@ -80,9 +87,11 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task end - methods(Access = private) + %methods(Access = private) + methods + - function obj = actualizeNode(obj, shot, nadcs) + function obj = actualizeNode(obj, shot, nadcs, packetized) dd=SCDconf_getdatadict(obj.datadictionary); adcbus=dd.getEntry(obj.modelbus).getValue; [~,data]=obj.getdata(shot); @@ -91,11 +100,15 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task fprintf('Actualizing data for bus: ''%s'' (%s, shot %d) 0%% ', obj.modelbus, obj.classname, shot); end for ii=1:nadcs - T.Time=data.Time; - T.Data=int16(data.Data(:,ii)); + if ~packetized + T.Time=data.Time; + T.Data=int16(data.Data(:,ii)); + else + T=data.get(['adc' num2str(ii)]); + end assignin('base','temp',T); assigncmd=sprintf('%s.%s=temp;',obj.workspacedatabasestructure, adcbus.Elements(ii).Name); - evalin('base',assigncmd); + evalin('base',assigncmd); if obj.verbose==1 && mod(ii,obj.logdecimate)==0 fprintf('%.0f%% ', ii/nadcs*100); end @@ -106,8 +119,7 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task end end -%% -% Node 01 loading functions +%% Node 01 loading functions function [obj, value] = getdataNode01ACQ196(obj, shot) T=timeseries; @@ -138,8 +150,7 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task end end -%% -% Node 02 loading functions +%% Node 02 loading functions function [obj, value] = getdataNode02ACQ196(obj, shot) T=timeseries; @@ -212,6 +223,59 @@ classdef SCDclass_taskmdsloadprevADC < SCDclass_task end end +%% Node 07 loading functions + + function [obj, value] = getdataNode07(obj, shot, samppck) + nch=96; + if shot>70100 % TODO, wrong shotno here + mdsnodename='node07'; + else + mdsnodename='crpprt07'; + end + mdsopen('rtc',shot); + %T=timeseries; + timebase=mdsvalue(['dim_of(\top.' mdsnodename '.board1.adc_01)']); + d_time = double(mdsvalueraw(['\top.' mdsnodename '.params:d_time']))*1.0e-6; + timebase = timebase(1:samppck:end); % TODO: is this safe against lost cycles ? + %timebase = round(timebase.*1/d_time)*d_time-d_time/2; + %timebase = round(timebase.*1/d_time)*d_time-d_time/100; + %timebase = timebase + d_time; % this fits perfectly sim/rt data on 68072 + %T.Time=timebase; + %T.Data=zeros(numel(timebase),nch); + value = tscollection(timebase); + if obj.verbose==1 + fprintf('Getting data for bus: ''%s'' (%s, shot %d) 0%% ', obj.modelbus, obj.classname, shot); + end + for ii=1:nch + T=timeseries; + T.Time=timebase; + channelstr=sprintf(['\\top.' mdsnodename '.board1.adc_%02d.raw'],ii); + %T.Data(:,ii)=int16(mdsvalue(channelstr)); + %T.Data(:,ii)=int16(mdsvalueraw(channelstr)); + + data=mdsvalueraw(channelstr); + if isnumeric(data) + datamatrix=reshape(int16(data),[numel(timebase),samppck]); + else + datamatrix=int16(zeros(numel(timebase),samppck)); + end + T.Data=datamatrix; + + if obj.verbose==1 && mod(ii,obj.logdecimate)==0 + fprintf('%.0f%% ', ii/nch*100); + end + T.Name=['adc' num2str(ii)]; + value=addts(value,T); + end + %T.Data=datamatrix; % this speeds up a lot the loading + %value.addts; + if obj.verbose==1 + fprintf('100%% \n'); + end + end + + + end end -- GitLab