From 0ca6597f9e3b5d3a1cb95506357a0057505a872b Mon Sep 17 00:00:00 2001 From: galperti <cristian.galperti@epfl.ch> Date: Tue, 21 Jun 2022 16:48:13 +0200 Subject: [PATCH] test harness template passing - but signal errors to be analised --- algos/template/algo_template.slx | Bin 20591 -> 20609 bytes algos/template/algo_template_harness.slx | Bin 15300 -> 15277 bytes algos/template/algo_template_harness_run.m | 60 ++++++++++++--------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/algos/template/algo_template.slx b/algos/template/algo_template.slx index 97056b018494eae486d6a70170912b657727d159..2759c85d3e689413b87a5c682b8a256cc4371ef1 100644 GIT binary patch delta 6404 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 SlL|>ElUYy@2KPw-0000ct2K}S delta 6377 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�+C=3jd}Q1!hldPtyET<oG)*$6&yX} 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 diff --git a/algos/template/algo_template_harness.slx b/algos/template/algo_template_harness.slx index e54f28b97e384f741311de77b497d6d8ce8a6f4f..6beba1d4535228191471cd1460a5ca438f669736 100644 GIT binary patch delta 9802 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 R9qJn>LRbL)EARin{|~P}xJ&>5 delta 9877 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 O$VGq`Hkj+bPya6>u*!M> diff --git a/algos/template/algo_template_harness_run.m b/algos/template/algo_template_harness_run.m index 773fbfe..4529226 100644 --- a/algos/template/algo_template_harness_run.m +++ b/algos/template/algo_template_harness_run.m @@ -3,53 +3,63 @@ function algo_template_harness_run(obj) % load tunable control parameters from mds shot = 100; % shot reference -obj.actualizeparameters(shot); +obj.actualize(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)'); -% NB: these struct name and types must match the corresponding data bus -tsStructData = struct('simple_signal',timeseries(data,time,'Name','Test Input Data')); +% time = 0:obj.gettiming.dt:1; +% data = single(sin(2*pi*time*10)'); +% % 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); +SimIn = Simulink.SimulationInput([obj.getname '_harness']); % Create template Input dataset for this model -Dataset = createInputDataset(obj.getname); +% Dataset = createInputDataset(obj.getname); % assign input data signal to Simulink.Signal object -DataIn = Simulink.SimulationData.Signal; -DataIn.Values = tsStructData; +% DataIn = Simulink.SimulationData.Signal; +% DataIn.Values = tsStructData; % assign as first element in input data set -isig = find(contains(Dataset.getElementNames,'signal_in')); % find input signal index -Dataset = Dataset.setElement(isig,DataIn); %#ok<FNDSB> -SimIn.ExternalInput = Dataset; % assign this as external input for simulation +% isig = find(contains(Dataset.getElementNames,'signal_in')); % find input signal index +% Dataset = Dataset.setElement(isig,DataIn); %#ok<FNDSB> +% SimIn.ExternalInput = Dataset; % assign this as external input for simulation % Custom parameters for this run to save outport data SimIn = SimIn.setModelParameter('SaveOutput','on'); % set to save outport signals SimIn = SimIn.setModelParameter('SignalLogging','on'); % set to save log signals SimIn = SimIn.setModelParameter('OutputSaveName','SimOut'); SimIn = SimIn.setModelParameter('SaveFormat','Dataset'); -SimIn = SimIn.setModelParameter('StartTime',num2str(time(1))); -SimIn = SimIn.setModelParameter('StopTime',num2str(time(end))); -SimIn = SimIn.setModelParameter('FixedStep',num2str(mean(diff(time)))); +%SimIn = SimIn.setModelParameter('StartTime',num2str(time(1))); +%SimIn = SimIn.setModelParameter('StopTime',num2str(time(end))); +%SimIn = SimIn.setModelParameter('FixedStep',num2str(mean(diff(time)))); % simulate - simulate only single types to save time result = sim(SimIn); % check output port data -tp = algo_template_loadtp; -output = result.SimOut{1}.Values.signal2.Value; -assert(max(output) == 7,'Wrong output!'); +tp = Simulink.data.evalinGlobal(obj.getname,'algo_template_tp.Value'); +fp = Simulink.data.evalinGlobal(obj.getname,'algo_template_fp'); -% check logs which contain a SCDsignal type data -logsout = result.logsout; +input = evalin('base','algo_template_inbus1'); +input1 = input.signal1.Data; +input2 = input.signal2.Data; +output1 = result.simout.signal1.Data; +output2 = result.simout.signal2.Data; -signal = logsout.getElement('SCDsignal type bus').Values.Value; -Quality = logsout.getElement('SCDsignal type bus').Values.QualityTag; -State = logsout.getElement('SCDsignal type bus').Values.ProductionState; +maxerror1 = 0.1; +maxerror2 = 0.1; +assert(max(abs(output1 - input1.*tp.gain))<maxerror1,'Wrong output 1!'); +assert(max(abs(output2 - (input2.*tp.refmodel.gain+fp.refmodel.offset)))<maxerror2,'Wrong output 2!'); -assert(all(State .Data == ProductionState.RUNNING),'ProductionState must be RUNNING'); -assert(all(Quality.Data == QualityTag.GOOD ),'QualityTag must be RUNNING' ); +% check logs which contain a SCDsignal type data +% logsout = result.logsout; +% +% 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(State .Data == ProductionState.RUNNING),'ProductionState must be RUNNING'); +% assert(all(Quality.Data == QualityTag.GOOD ),'QualityTag must be RUNNING' ); end -- GitLab