Skip to content
Snippets Groups Projects
Commit e597db9f authored by Cristian Galperti's avatar Cristian Galperti
Browse files

task for loading ADCs added in node 02 rtc algo

now a single actualize call loads params, wavegens and ADCs
for expcode 1005, everything to simulate
parent 034f8378
No related branches found
No related tags found
No related merge requests found
...@@ -36,9 +36,9 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg ...@@ -36,9 +36,9 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg
obj.srcstopidx=srcinterval(end); obj.srcstopidx=srcinterval(end);
obj.deststartidx=dstinterval(1); obj.deststartidx=dstinterval(1);
obj.deststopidx=dstinterval(end); obj.deststopidx=dstinterval(end);
obj.classname=mfilename; obj.classname=mfilename;
obj.marteclassname='MDSWgSigArray1'; obj.marteclassname='MDSWgSigArray1ADC';
end end
end end
...@@ -143,7 +143,10 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg ...@@ -143,7 +143,10 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg
end end
end end
function entrystring = genMARTe2entry(obj, shot) function entrystring = genMARTe2entry(obj, shot)
if(srcstartidx~=deststartidx || srcstopidx~=deststopidx)
error('SCDclass_mdswgsigarray1:genMARTe2entry','Signal position remapping not yet implemented in the MARTe version of this class');
end
entrystring=obj.genMARTe2entrycommon(shot); entrystring=obj.genMARTe2entrycommon(shot);
entrystring=[entrystring ' StartIdx=' num2str(obj.srcstartidx) ' StopIdx=' num2str(obj.srcstopidx) ' }']; entrystring=[entrystring ' StartIdx=' num2str(obj.srcstartidx) ' StopIdx=' num2str(obj.srcstopidx) ' }'];
end end
...@@ -164,7 +167,7 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg ...@@ -164,7 +167,7 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg
for ii=obj.srcstartidx:obj.srcstopidx for ii=obj.srcstartidx:obj.srcstopidx
expandedtdi = sprintf(obj.tdiexpr, ii); expandedtdi = sprintf(obj.tdiexpr, ii);
martename=expandedtdi; martename=expandedtdi;
sigentry=sprintf(' %s={ NodeName=%s Type=float32 NumberOfElements=1 DataManagement=0 HoleManagement=1 }\n',martename, expandedtdi); sigentry=sprintf(' %s={ NodeName=%s Type=float32 NumberOfElements=%d DataManagement=0 HoleManagement=1 }\n',martename, expandedtdi);
expentries=[expentries sigentry]; expentries=[expentries sigentry];
end end
end end
......
...@@ -9,7 +9,7 @@ classdef SCDclass_task < matlab.mixin.Heterogeneous ...@@ -9,7 +9,7 @@ classdef SCDclass_task < matlab.mixin.Heterogeneous
datadictionary % data dictionary hosting the parameter, if empty base workspace datadictionary % data dictionary hosting the parameter, if empty base workspace
modelname % name of the Simulink model using the parameter modelname % name of the Simulink model using the parameter
classname % class name for logging classname % class name for logging
cparser % constructor parameters parser
% Properties for a MDS+ related task (not necessarly used) % Properties for a MDS+ related task (not necessarly used)
mdsserver % MDS+ server for a MDS+ related task mdsserver % MDS+ server for a MDS+ related task
...@@ -32,32 +32,34 @@ classdef SCDclass_task < matlab.mixin.Heterogeneous ...@@ -32,32 +32,34 @@ classdef SCDclass_task < matlab.mixin.Heterogeneous
function obj=SCDclass_task(id,varargin) function obj=SCDclass_task(id,varargin)
% MDS source and model destination constructor % MDS source and model destination constructor
p=inputParser; obj.cparser=inputParser;
addRequired(p,'id',@(x) ischar(x)); addRequired(obj.cparser,'id',@(x) ischar(x));
addParameter(p,'srcsrv','tcvdata',@(x) ischar(x)); addParameter(obj.cparser,'srcsrv','tcvdata',@(x) ischar(x));
addParameter(p,'srctree','tcv_shot',@(x) ischar(x)); addParameter(obj.cparser,'srctree','tcv_shot',@(x) ischar(x));
addParameter(p,'srctdimodel','',@(x) ischar(x)); addParameter(obj.cparser,'srctdimodel','',@(x) ischar(x));
addParameter(p,'srctdishot','',@(x) ischar(x)); addParameter(obj.cparser,'srctdishot','',@(x) ischar(x));
addParameter(p,'modelname','',@(x) ischar(x)); addParameter(obj.cparser,'modelname','',@(x) ischar(x));
addParameter(p,'datadictname','',@(x) ischar(x)); addParameter(obj.cparser,'datadictname','',@(x) ischar(x));
parse(p,id,varargin{:}{:}); obj.verbose=1;
end
function obj=parseconstructorcommon(obj, id, varargin)
parse(obj.cparser,id,varargin{:}{:});
obj.id=p.Results.id; obj.id=obj.cparser.Results.id;
obj.mdsserver=p.Results.srcsrv; obj.mdsserver=obj.cparser.Results.srcsrv;
obj.mdstree=p.Results.srctree; obj.mdstree=obj.cparser.Results.srctree;
obj.tdiexprmodel=p.Results.srctdimodel; obj.tdiexprmodel=obj.cparser.Results.srctdimodel;
if isempty(p.Results.srctdishot) if isempty(obj.cparser.Results.srctdishot)
obj.tdiexprshot=p.Results.srctdimodel; obj.tdiexprshot=obj.cparser.Results.srctdimodel;
else else
obj.tdiexprshot=p.Results.srctdishot; obj.tdiexprshot=obj.cparser.Results.srctdishot;
end end
obj.modelname=p.Results.modelname; obj.modelname=obj.cparser.Results.modelname;
obj.datadictionary=p.Results.datadictname; obj.datadictionary=obj.cparser.Results.datadictname;
end
obj.verbose=1;
end
function name=getmodelname(obj) function name=getmodelname(obj)
name=obj.modelname; name=obj.modelname;
......
...@@ -14,9 +14,11 @@ classdef SCDclass_taskmdscheckbusnames < SCDclass_task ...@@ -14,9 +14,11 @@ classdef SCDclass_taskmdscheckbusnames < SCDclass_task
methods methods
function obj=SCDclass_taskmdscheckbusnames(id, modelbus, varargin) function obj=SCDclass_taskmdscheckbusnames(id, varargin)
obj@SCDclass_task(id, varargin); obj@SCDclass_task(id, varargin);
obj.modelbus=modelbus; obj.cparser.addRequired('modelbus',@(x) ischar(x));
obj=obj.parseconstructorcommon(id, varargin);
obj.modelbus=obj.cparser.Results.modelbus;
obj.classname=mfilename; obj.classname=mfilename;
end end
...@@ -27,7 +29,7 @@ classdef SCDclass_taskmdscheckbusnames < SCDclass_task ...@@ -27,7 +29,7 @@ classdef SCDclass_taskmdscheckbusnames < SCDclass_task
[obj,value]=obj.getdata(shot); [obj,value]=obj.getdata(shot);
if obj.verbose==1 if obj.verbose==1
fprintf('Cheking bus: ''%s'' <-> ''%s'' (%s, shot %d)\n', obj.modelbus, obj.tdiexprused, obj.classname, shot); fprintf('Checking bus: ''%s'' <-> ''%s'' (%s, shot %d)\n', obj.modelbus, obj.tdiexprused, obj.classname, shot);
end end
d=Simulink.data.dictionary.open(sprintf('%s',obj.datadictionary)); d=Simulink.data.dictionary.open(sprintf('%s',obj.datadictionary));
......
classdef SCDclass_taskmdsloadprevADC < SCDclass_task
% This is a special class which loads previous
% values of the ADCs for the acquiring nodes
properties
modelbus
node
workspacedatabasestructure
end
methods
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=obj.parseconstructorcommon(id, varargin);
obj.modelbus=obj.cparser.Results.modelbus;
obj.node=obj.cparser.Results.node;
switch(obj.node)
case 2
obj.workspacedatabasestructure='SCDsimdata.SCDnode02simdata.adc';
otherwise
obj.workspacedatabasestructure='';
end
obj.classname=mfilename;
end
function init(obj, shot)
mdsconnect(obj.mdsserver);
mdsopen(obj.mdstree, shot);
switch(obj.node)
case 2
obj.actualizeNode02(shot);
end
end
function [obj, value] = getdata(obj,shot)
%obj=obj.actualizegetcmd('mdsvalue(''%s'')', shot);
%value=eval(obj.getcommand);
switch(obj.node)
case 2
[~,value]=obj.getdataNode02ACQ196(shot); %% Here we need to switch betweeen old and new acquisition unit and tcv standard also
end
end
function printinfo(obj)
obj.printinfocommon;
fprintf(' Init model bus: %s, node: %d, ws base struct: %s\n',obj.modelbus, obj.node, obj.workspacedatabasestructure);
end
end
methods(Access = private)
function obj = actualizeNode02(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:192
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
fprintf('.');
end
end
evalin('base','clear temp');
if obj.verbose==1
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
d_time = double(mdsvalueraw( '\top.crpprt02.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),192);
if obj.verbose==1
fprintf('Getting data for bus: ''%s'' (%s, shot %d) ', obj.modelbus, obj.classname, shot);
end
for ii=1:96
% NOTE: physical2logical remapping is only for
% data acquired with the present ACQ196 system
% it must go away when using the new ACQ2106 system
%fprintf('Loading channel %d:%d ...\r',1,physical2logical(ii));
channelstr=sprintf('\\top.crpprt02.board1.adc_%02d.raw',physical2logical(ii));
T.Data(:,ii)=int16(mdsvalue(channelstr));
if obj.verbose==1
fprintf('.');
end
end
for ii=1:96
%fprintf('Loading channel %d:%d ...\r',2,physical2logical(ii));
channelstr=sprintf('\\top.crpprt02.board2.adc_%02d.raw',physical2logical(ii));
T.Data(:,ii+96)=int16(mdsvalue(channelstr));
if obj.verbose==1
fprintf('.');
end
end
value=T;
if obj.verbose==1
fprintf('\n');
end
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment