Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
classdef SCDclass_task < matlab.mixin.Heterogeneous
% Superclass for general purposes init and term tasks
% the superclass matlab.mixin.Heterogeneous allows
% bilding of lists of mixed kind parameters in the
% expcode configuration (and later in C++ code)
properties (Access = protected)
id % Task identification
datadictionary % data dictionary hosting the parameter, if empty base workspace
modelname % name of the Simulink model using the parameter
classname % class name for logging
% Properties for a MDS+ related task (not necessarly used)
mdsserver % MDS+ server for a MDS+ related task
mdstree % MDS+ tree for a MDS+ related task
tdiexprmodel % TDI expression to retrieve data when invoked with -1 shot
tdiexprshot % TDI expression to retrieve data when invoked with a give shotno, if empty the -1 is used
tdiexprused % TDI expression actually used
value % value from MDS+
getcommand % full command for getting the value (callable by matlab eval)
end
properties
verbose % Verbosity of the class
end
methods
%function obj=SCDclass_mdsparam(srcsrv, srctree, srctdimodel, srctdishot, modelname, destparam)
function obj=SCDclass_task(id,varargin)
% MDS source and model destination constructor
p=inputParser;
addRequired(p,'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{:}{:});
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;
else
obj.tdiexprshot=p.Results.srctdishot;
end
obj.modelname=p.Results.modelname;
obj.datadictionary=p.Results.datadictname;
obj.verbose=1;
end
end
% Not abstract methods common to all child classes
methods
function mdsconnect(obj, shot)
mdsconnect(obj.mdsserver);
s=mdsopen(obj.mdstree, shot);
str=sprintf('SCDclass_task (%s), failed opening MDS+ tree', obj.id);
assert(s==shot, str);
end
function obj=actualizegetcmd(obj, cmdstring, shot)
if(shot==-1)
obj.getcommand=sprintf(cmdstring, obj.tdiexprmodel);
obj.tdiexprused=obj.tdiexprmodel;
else
obj.getcommand=sprintf(cmdstring, obj.tdiexprshot);
obj.tdiexprused=obj.tdiexprshot;
end
end
function printinfocommon(obj)
fprintf('%s (class %s):\n', obj.id, 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');
else
fprintf(', shot: ''%s''\n', obj.tdiexprshot);
end
end
function out = getid(obj)
out = obj.id;
end
function obj = setmodelname(obj, modelname)
if(isempty(obj.modelname))
obj.modelname = modelname;
end
end
function obj = setdatadictionary(obj, ddname)
if(isempty(obj.datadictionary))
obj.datadictionary = ddname;
end
end
end
% Abstract method actually implemented by child classes
methods (Abstract)
% Polymorphic inits
init(obj, shot)
% Polymorphic terms
%term(obj, shot)
% Gets data from mds, mds connection is assumed already estabilished
% and tree opened
[obj, value] = getdata(obj, shot)
% Generate C++ code
%gencode(obj)
% Prints the parameter info summary
printinfo(obj)
end
end