Skip to content
Snippets Groups Projects
Commit f7e06489 authored by Federico Felici's avatar Federico Felici
Browse files

Update template to use SCDsignal buses

parent 6170e346
No related branches found
No related tags found
No related merge requests found
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
......@@ -8,7 +8,8 @@ obj.actualizeparameters(shot);
% Input Data - must be structure of timeseries matching input bus structure
time = 0:obj.gettiming.dt:1;
data = single(sin(2*pi*time*10)');
tsStructData = struct('signal',timeseries(data,time,'Name','Test Input Data'));
% NB: these struct name and types must match the corresponding data bus
tsStructData = struct('simple_signal',timeseries(data,time,'Name','Test Input Data'));
% SimIn object to customize configuration of Simulation run for test
SimIn = Simulink.SimulationInput(obj.getname);
......@@ -39,11 +40,19 @@ result = sim(SimIn);
% check output port data
tp = SCDalgo_template_loadtp;
output = result.SimOut{1}.Values.signal;
output = result.SimOut{1}.Values.single_scalar;
assert(max(output.Data) == tp.gain,'Wrong output!');
% check logs
% check logs which contain a SCDsignal type data
logsout = result.logsout;
signal = logsout.getElement('signal_in').Values.signal;
assert(all(signal.Data == tsStructData.signal.Data),'Logged signal does not match input!');
signal = logsout.getElement('SCDsignal type bus').Values.Value;
Quality = logsout.getElement('SCDsignal type bus').Values.QualityTag;
State = logsout.getElement('SCDsignal type bus').Values.ProductionState;
assert(all(signal.Data(:,1) == tp.gain*tsStructData.simple_signal.Data),...
'Logged signal does not match input!');
assert(all(State .Data == ProductionState.RUNNING),'ProductionState must be RUNNING');
assert(all(Quality.Data == QualityTag.GOOD ),'QualityTag must be RUNNING' );
end
% Bus object: SCDalgo_template_inBus
clear elems;
elems(1) = Simulink.BusElement;
elems(1).Name = 'signal';
elems(1).Name = 'simple_signal';
elems(1).Dimensions = 1;
elems(1).DimensionsMode = 'Fixed';
elems(1).DataType = 'single';
......
function [busNames,Buses] = SCDalgo_template_signal_buses()
% [busNames,Buses] = SCDalgo_template_signal_buses()
% Define some buses needed for the template
%% Define signal buses for various SCDsignal types
% Data examples for which to create buses
D = {...
ones(11,1,'single'),...
ones(3,3,'double'),...
int32(1)};
% Create buses for these signals and add them to the list
[Buses,busNames] = deal(cell(numel(D),1)); % init
for ii = 1:numel(D)
mydata = D{ii};
mysig = SCDsignal(mydata); % create SCDsignal object for this data example
mybus = mysig.createBus; % create Bus for this signal using object method
% Store
Buses{ii} = mybus;
busNames{ii} = mybus.Description;
end
%% Add output structure: a bus that includes both numeric and SCDsignal types
% First add 3 busElements for the three signals defined above
for ii=1:3
elems(ii) = Simulink.BusElement;
elems(ii).Name = sprintf('SCDsignal_example_%d',ii);
elems(ii).Dimensions = 1;
elems(ii).DimensionsMode = 'Fixed';
elems(ii).DataType = sprintf('Bus: %s',busNames{ii});
end
% add a numeric data type
ii=ii+1;
elems(ii) = Simulink.BusElement;
elems(ii).Name = 'single_scalar';
elems(ii).Dimensions = 1;
elems(ii).DimensionsMode = 'Fixed';
elems(ii).DataType = 'single';
% Define output bus with these elements
outBus = Simulink.Bus;
outBus.HeaderFile = '';
outBus.Description = '';
outBus.DataScope = 'Auto';
outBus.Alignment = -1;
outBus.Elements = elems;
clear elems;
% append to list
busNames{end+1} = 'SCDalgo_template_outBus'
Buses{end+1} = outBus;
end
\ No newline at end of file
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