diff --git a/code/classes/SCDclass_mdspar.m b/code/classes/SCDclass_mdspar.m
index d2bb9595dc794a076a6c3be6d8df97ef6e7bbe42..656e6f183565f6f301709268275f9b68bd720d5c 100644
--- a/code/classes/SCDclass_mdspar.m
+++ b/code/classes/SCDclass_mdspar.m
@@ -32,8 +32,8 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
         assignstring        % actualizedata specific   
         denanstring         % actualizedata specific
         caststring          % actualizedata specific
-    
         
+        unlinked            % unlinked parameter, no actualization will be performed (this is set via an empty MDS source path)
     end
     
     properties 
@@ -75,7 +75,12 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
             obj.modelname=obj.cparser.Results.modelname;
             obj.datadictionary=obj.cparser.Results.datadictname;
             obj.modeltpstruct=obj.cparser.Results.modeltpstruct; 
-            obj.skippable=obj.cparser.Results.skippable;        
+            obj.skippable=obj.cparser.Results.skippable;  
+            if isempty(obj.cparser.Results.srctdimodel)
+                obj.unlinked=1;
+            else
+                obj.unlinked=0;
+            end
         end
         
         function name=getmodelname(obj)
@@ -96,28 +101,34 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
         end
         
         function obj=preactualizecommon(obj, shot)
-           % Opening the tree
-           obj.mdsconnect(shot);
-           % Checking if data can be retrieved, updating get command
-           [obj, obj.value]=obj.getdata(shot);
+           if(~obj.unlinked)            
+               % Opening the tree
+               obj.mdsconnect(shot);
+               % Checking if data can be retrieved, updating get command
+               [obj, obj.value]=obj.getdata(shot);
 
-           pointspos=strfind(obj.modelparam,'.');
-           baseparam=obj.modelparam(1:pointspos(1)-1);
-           structparam=obj.modelparam(pointspos(1):end); 
-           obj.assignvar=sprintf('%s.Value%s',baseparam,structparam);
-           obj.assignstring=sprintf('%s=%s;',obj.assignvar,obj.getcommand);
-           obj.denanstring=sprintf('%s(isnan(%s))=0;',obj.assignvar,obj.assignvar);
-           obj.caststring=sprintf('%s=%s;',obj.assignvar,obj.assignvar); 
+               pointspos=strfind(obj.modelparam,'.');
+               baseparam=obj.modelparam(1:pointspos(1)-1);
+               structparam=obj.modelparam(pointspos(1):end); 
+               obj.assignvar=sprintf('%s.Value%s',baseparam,structparam);
+               obj.assignstring=sprintf('%s=%s;',obj.assignvar,obj.getcommand);
+               obj.denanstring=sprintf('%s(isnan(%s))=0;',obj.assignvar,obj.assignvar);
+               obj.caststring=sprintf('%s=%s;',obj.assignvar,obj.assignvar); 
+           end
         end
         
         function obj=postactualizecommon(obj, shot)
-            if obj.verbose==1
-                fprintf('Actualizing parameter: ''%s'' <- ''%s'' (%s, shot %d)\n', obj.modelparam, obj.tdiexprused, obj.classname, shot);
-            end
-
-            evalin('base', obj.assignstring);    
-            evalin('base', obj.denanstring);
-            evalin('base', obj.caststring);
+            if(~obj.unlinked)
+                if obj.verbose==1
+                    fprintf('Actualizing parameter: ''%s'' <- ''%s'' (%s, shot %d)\n', obj.modelparam, obj.tdiexprused, obj.classname, shot);
+                end
+                
+                evalin('base', obj.assignstring);
+                evalin('base', obj.denanstring);
+                evalin('base', obj.caststring);
+            else
+                fprintf('Actualizing parameter: ''%s'', parameter unlinked, SKIPPED!\n', obj.modelparam);
+            end         
         end
         
         function [obj,value]=getdatacommon(obj, shot)
@@ -150,13 +161,19 @@ classdef SCDclass_mdspar < matlab.mixin.Heterogeneous
         function printinfocommon(obj)
             fprintf('%s (class %s):\n', obj.modelparam, obj.classname);
             fprintf('  Simulink model: ''%s'', data dictionary: ''%s''\n', obj.modelname, obj.datadictionary);
-            fprintf('  MDS+ source server: ''%s'', Tree: ''%s''\n', obj.mdsserver, obj.mdstree);
-            fprintf('  MDS+ TDI expressions, model: ''%s''', obj.tdiexprmodel);
-            if(strcmp(obj.tdiexprmodel, obj.tdiexprshot))
-                fprintf(', shot: same.\n');
+            if(~obj.unlinked)
+                fprintf('  MDS+ source server: ''%s'', Tree: ''%s''\n', obj.mdsserver, obj.mdstree);
+                fprintf('  MDS+ TDI expressions, model: ''%s''', obj.tdiexprmodel);
+                if(strcmp(obj.tdiexprmodel, obj.tdiexprshot))
+                    fprintf(', shot: same.\n');
+                else
+                    fprintf(', shot: ''%s''\n', obj.tdiexprshot);
+                end
+                
             else
-                fprintf(', shot: ''%s''\n', obj.tdiexprshot);
+                fprintf('  UNLINKED!\n');
             end
+            
         end
         
         function out = gettargetparam(obj)
diff --git a/code/classes/SCDclass_mdswgsigarray1.m b/code/classes/SCDclass_mdswgsigarray1.m
index 268f288aaacd81399ba1fec3019e21b15801e38f..54096a6b7003d1481635ad83996baccd2cf08c7b 100644
--- a/code/classes/SCDclass_mdswgsigarray1.m
+++ b/code/classes/SCDclass_mdswgsigarray1.m
@@ -36,7 +36,7 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg
             obj.srcstopidx=srcinterval(end);
             obj.deststartidx=dstinterval(1);
             obj.deststopidx=dstinterval(end);
-
+            
             obj.classname=mfilename;        
             obj.marteclassname='MDSWgSigArray1';
         end
@@ -143,7 +143,10 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg
             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=[entrystring ' StartIdx=' num2str(obj.srcstartidx) ' StopIdx=' num2str(obj.srcstopidx) ' }'];
         end
@@ -164,7 +167,7 @@ classdef SCDclass_mdswgsigarray1 < SCDclass_mdswg
             for ii=obj.srcstartidx:obj.srcstopidx
                expandedtdi = sprintf(obj.tdiexpr, ii);
                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]; 
             end                   
         end
diff --git a/code/classes/SCDclass_task.m b/code/classes/SCDclass_task.m
index 28d77a20f3423d2bfd10b822da4ccd0df1648387..145d698665226195ae394070d582069aff107264 100644
--- a/code/classes/SCDclass_task.m
+++ b/code/classes/SCDclass_task.m
@@ -9,7 +9,7 @@ classdef SCDclass_task < matlab.mixin.Heterogeneous
         datadictionary      % data dictionary hosting the parameter, if empty base workspace
         modelname           % name of the Simulink model using the parameter
         classname           % class name for logging
-
+        cparser             % constructor parameters parser
         
         % Properties for a MDS+ related task (not necessarly used)
         mdsserver           % MDS+ server for a MDS+ related task
@@ -32,32 +32,34 @@ classdef SCDclass_task < matlab.mixin.Heterogeneous
         function obj=SCDclass_task(id,varargin)
             % MDS source and model destination constructor
             
-            p=inputParser;
-            addRequired(p,'id',@(x) ischar(x));
+            obj.cparser=inputParser;
+            addRequired(obj.cparser,'id',@(x) ischar(x));
 
-            addParameter(p,'srcsrv','tcvdata',@(x) ischar(x));
-            addParameter(p,'srctree','tcv_shot',@(x) ischar(x));
-            addParameter(p,'srctdimodel','',@(x) ischar(x));
-            addParameter(p,'srctdishot','',@(x) ischar(x));
-            addParameter(p,'modelname','',@(x) ischar(x));
-            addParameter(p,'datadictname','',@(x) ischar(x));  
-          
-            parse(p,id,varargin{:}{:});
+            addParameter(obj.cparser,'srcsrv','tcvdata',@(x) ischar(x));
+            addParameter(obj.cparser,'srctree','tcv_shot',@(x) ischar(x));
+            addParameter(obj.cparser,'srctdimodel','',@(x) ischar(x));
+            addParameter(obj.cparser,'srctdishot','',@(x) ischar(x));
+            addParameter(obj.cparser,'modelname','',@(x) ischar(x));
+            addParameter(obj.cparser,'datadictname','',@(x) ischar(x));  
+         
+            obj.verbose=1;
+        end
+        
+        function obj=parseconstructorcommon(obj, id, varargin)    
+            parse(obj.cparser,id,varargin{:}{:});
             
-            obj.id=p.Results.id;
-            obj.mdsserver=p.Results.srcsrv;
-            obj.mdstree=p.Results.srctree;
-            obj.tdiexprmodel=p.Results.srctdimodel;
-            if isempty(p.Results.srctdishot)
-                obj.tdiexprshot=p.Results.srctdimodel;
+            obj.id=obj.cparser.Results.id;
+            obj.mdsserver=obj.cparser.Results.srcsrv;
+            obj.mdstree=obj.cparser.Results.srctree;
+            obj.tdiexprmodel=obj.cparser.Results.srctdimodel;
+            if isempty(obj.cparser.Results.srctdishot)
+                obj.tdiexprshot=obj.cparser.Results.srctdimodel;
             else
-                obj.tdiexprshot=p.Results.srctdishot;
+                obj.tdiexprshot=obj.cparser.Results.srctdishot;
             end
-            obj.modelname=p.Results.modelname;
-            obj.datadictionary=p.Results.datadictname;
-
-            obj.verbose=1;
-        end
+            obj.modelname=obj.cparser.Results.modelname;
+            obj.datadictionary=obj.cparser.Results.datadictname;
+        end    
         
         function name=getmodelname(obj)
             name=obj.modelname;
diff --git a/code/classes/SCDclass_taskmdscheckbusnames.m b/code/classes/SCDclass_taskmdscheckbusnames.m
index 39cf89b1e1193aede08c8e1e2a1a2e8d62aa93c3..757b859db8fa42dc32bf96ad4e020b4cfe2c7c78 100644
--- a/code/classes/SCDclass_taskmdscheckbusnames.m
+++ b/code/classes/SCDclass_taskmdscheckbusnames.m
@@ -14,9 +14,11 @@ classdef SCDclass_taskmdscheckbusnames < SCDclass_task
     
     methods
         
-        function obj=SCDclass_taskmdscheckbusnames(id, modelbus, varargin)   
+        function obj=SCDclass_taskmdscheckbusnames(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;
         end
         
@@ -27,7 +29,7 @@ classdef SCDclass_taskmdscheckbusnames < SCDclass_task
             [obj,value]=obj.getdata(shot);
             
             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
             
             d=Simulink.data.dictionary.open(sprintf('%s',obj.datadictionary));
diff --git a/code/classes/SCDclass_taskmdsloadprevADC.m b/code/classes/SCDclass_taskmdsloadprevADC.m
new file mode 100644
index 0000000000000000000000000000000000000000..817d0e7607e02b5beb9c67c04d9f0af41129f8db
--- /dev/null
+++ b/code/classes/SCDclass_taskmdsloadprevADC.m
@@ -0,0 +1,120 @@
+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 && mod(ii,4)==0
+                    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 && mod(ii,4)==0 
+                    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 && mod(ii,4)==0
+                    fprintf('.');
+                end
+            end
+            value=T;
+            if obj.verbose==1
+                fprintf('\n');
+            end  
+        end
+        
+    end
+end
+