From b019b2eddd80beb26b023b3447494a7944217f53 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Mon, 16 Jun 2025 09:01:38 +0200 Subject: [PATCH 01/18] added traning exercise with cruise control example --- .../PID_example/modules/TF/pcssp_TF_obj.m | 9 ++-- .../controller/cruise_controller_load_fp.m | 6 +++ .../controller/cruise_controller_load_tp.m | 28 ++++++++++++ .../controller/pcssp_cruise_controller.slx | Bin 0 -> 61378 bytes .../controller/pcssp_cruise_controller_obj.m | 15 +++++++ .../pcssp_cruise_controller_params.xml | 21 +++++++++ .../controller/pcssp_cruise_controller_test.m | 26 +++++++++++ .../cruise_control/cruise_control_run_topm.m | 35 +++++++++++++++ .../cruise_control/cruise_control_topm.slx | Bin 0 -> 94504 bytes .../cruise_control/cruise_control_topm_obj.m | 17 +++++++ .../cruise_control/model/pcssp_Voiture.slx | Bin 0 -> 30018 bytes .../model/pcssp_Voiture_harness.slx | Bin 0 -> 29064 bytes .../model/pcssp_Voiture_harness_run.m | 19 ++++++++ .../model/pcssp_Voiture_inBus_def.m | 24 ++++++++++ .../model/pcssp_Voiture_loadfp.m | 6 +++ .../model/pcssp_Voiture_loadtp.m | 10 +++++ .../cruise_control/model/pcssp_Voiture_obj.m | 22 +++++++++ .../model/pcssp_Voiture_outBus_def.m | 32 +++++++++++++ .../cruise_control/model/pcssp_Voiture_test.m | 14 ++++++ .../pcssp_cruise_control_topm_test.m | 15 +++++++ testing/pcssp_module_test.m | 10 +++++ tools/logsout2struct.m | 42 +++++++++++++----- 22 files changed, 337 insertions(+), 14 deletions(-) create mode 100644 templates/cruise_control/controller/cruise_controller_load_fp.m create mode 100644 templates/cruise_control/controller/cruise_controller_load_tp.m create mode 100644 templates/cruise_control/controller/pcssp_cruise_controller.slx create mode 100644 templates/cruise_control/controller/pcssp_cruise_controller_obj.m create mode 100644 templates/cruise_control/controller/pcssp_cruise_controller_params.xml create mode 100644 templates/cruise_control/controller/pcssp_cruise_controller_test.m create mode 100644 templates/cruise_control/cruise_control_run_topm.m create mode 100644 templates/cruise_control/cruise_control_topm.slx create mode 100644 templates/cruise_control/cruise_control_topm_obj.m create mode 100644 templates/cruise_control/model/pcssp_Voiture.slx create mode 100644 templates/cruise_control/model/pcssp_Voiture_harness.slx create mode 100644 templates/cruise_control/model/pcssp_Voiture_harness_run.m create mode 100644 templates/cruise_control/model/pcssp_Voiture_inBus_def.m create mode 100644 templates/cruise_control/model/pcssp_Voiture_loadfp.m create mode 100644 templates/cruise_control/model/pcssp_Voiture_loadtp.m create mode 100644 templates/cruise_control/model/pcssp_Voiture_obj.m create mode 100644 templates/cruise_control/model/pcssp_Voiture_outBus_def.m create mode 100644 templates/cruise_control/model/pcssp_Voiture_test.m create mode 100644 templates/cruise_control/pcssp_cruise_control_topm_test.m diff --git a/templates/PID_example/modules/TF/pcssp_TF_obj.m b/templates/PID_example/modules/TF/pcssp_TF_obj.m index 241f429..f5e9006 100644 --- a/templates/PID_example/modules/TF/pcssp_TF_obj.m +++ b/templates/PID_example/modules/TF/pcssp_TF_obj.m @@ -15,14 +15,15 @@ %% Buses -obj = obj.addbus('pcssp_PID_outBus', 'pcssp_PID_outBus_def' ); +%obj = obj.addbus('pcssp_PID_outBus', 'pcssp_PID_outBus_def' ); obj = obj.addbus('pcssp_TF_outBus', 'pcssp_TF_outBus_def' ); +%% link PID refdd for shared bus + +obj = obj.addrefdd('pcssp_PID.sldd'); -%% Tasks -%% Print (optional) -obj.printinfo; +%% Tasks end diff --git a/templates/cruise_control/controller/cruise_controller_load_fp.m b/templates/cruise_control/controller/cruise_controller_load_fp.m new file mode 100644 index 0000000..2dcc8c4 --- /dev/null +++ b/templates/cruise_control/controller/cruise_controller_load_fp.m @@ -0,0 +1,6 @@ +function [fp] = cruise_controller_load_fp(obj) + + +fp.timing = obj.gettiming; +end + diff --git a/templates/cruise_control/controller/cruise_controller_load_tp.m b/templates/cruise_control/controller/cruise_controller_load_tp.m new file mode 100644 index 0000000..b8a5939 --- /dev/null +++ b/templates/cruise_control/controller/cruise_controller_load_tp.m @@ -0,0 +1,28 @@ +function [tp] = cruise_controller_load_tp() +%% function to define tunable parameters for the cruise controller + +%% define PID parameter for PID pcssp module for velocity control +% tp.Pvel = 6.25; +% tp.Ivel = 8.15; +% tp.Dvel =0.0816; + +tp.Pvel = 3; +tp.Ivel =0; +tp.Dvel = 0; + +%% define Transfer function numerator and denominator for position control +tp.pos_num = [4320 -4.2772e+03]; +tp.pos_den = [1 -0.8931]; + +%% saturation limits +tp.pos_acc_saturation = 1000; +tp.neg_acc_saturation = -1000; + +%% controller constants +tp.switch_constant = 10; % distance between cars when to switch to pos control +tp.min_safety_distance= 5; % minimum safety distance between cars +tp.safe_time = 2; % safe time between cars + + +end + diff --git a/templates/cruise_control/controller/pcssp_cruise_controller.slx b/templates/cruise_control/controller/pcssp_cruise_controller.slx new file mode 100644 index 0000000000000000000000000000000000000000..fae3773bd07831784834664038507f5e811412ca GIT binary patch literal 61378 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 + + + + + + + + + + + + + + + + + + + + diff --git a/templates/cruise_control/controller/pcssp_cruise_controller_test.m b/templates/cruise_control/controller/pcssp_cruise_controller_test.m new file mode 100644 index 0000000..e174529 --- /dev/null +++ b/templates/cruise_control/controller/pcssp_cruise_controller_test.m @@ -0,0 +1,26 @@ +classdef pcssp_cruise_controller_test < pcssp_module_test + % test for PCSSP_PID demo module + % see pcssp_module test class for all standard pcssp module tests + + properties + algoobj = @()pcssp_cruise_controller_obj(); + isCodegen = 1; % flag to trigger module tests for codeGen + end + + methods(Test) + function build_cruise_controller(testCase) + + obj = testCase.algoobj(); + obj.init; + obj.setup; + obj.build('auto'); + + obj.write_XML + + end + + end + + + +end \ No newline at end of file diff --git a/templates/cruise_control/cruise_control_run_topm.m b/templates/cruise_control/cruise_control_run_topm.m new file mode 100644 index 0000000..979a6e0 --- /dev/null +++ b/templates/cruise_control/cruise_control_run_topm.m @@ -0,0 +1,35 @@ +%% main script to run the cruise control example + +% define PCSSP modules and top model class instances +[topm,obj_voiture,obj_controller] = cruise_control_topm_obj(); + +% initialize and setup all PCSSP models +topm.init; +topm.setup; + +%% compile and simulate + +topm.compile; +out = topm.sim; +simout = logsout2struct(out); + +%% plot + +h = tiledlayout(3,1,'TileSpacing','compact','Padding','compact'); + +h1 = nexttile; +plot(h1,simout.follower_position_position.Time,simout.follower_position_position.Values); +hold on; +plot(h1,simout.leader_out_pos.Time,simout.leader_out_pos.Values); +legend(h1,'follower position','leader position') + +h2 = nexttile; + +plot(h2,simout.safety_distance.Time,simout.safety_distance.Values); +legend(h2,'Safety Distance') + +h3 = nexttile; +plot(simout.controller_mode.Time,simout.controller_mode.Values); +legend(h3,'controller mode'); + +h.XLabel.String = 't (s)'; \ No newline at end of file diff --git a/templates/cruise_control/cruise_control_topm.slx b/templates/cruise_control/cruise_control_topm.slx new file mode 100644 index 0000000000000000000000000000000000000000..2a5f041d4d3101021f7a647c41ee1b64a266ce8f GIT binary patch literal 94504 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ⅆ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 D065}D literal 0 HcmV?d00001 diff --git a/templates/cruise_control/model/pcssp_Voiture_harness.slx b/templates/cruise_control/model/pcssp_Voiture_harness.slx new file mode 100644 index 0000000000000000000000000000000000000000..bf457f2ef84514055c5987ea7fd41dad565f68c5 GIT binary patch literal 29064 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 u@;Ca6^#2L5KT' , ''); + block_name = getBlock(myElem.BlockPath,1); + block_name = strsplit(block_name,'/'); + prefix_name = [block_name{end}, '_']; + end % convert timeseries object to structure - structout_yout = Simulink.SimulationData.forEachTimeseries(@(ts)write_structout(ts),myElem.Values); + structout_yout = Simulink.SimulationData.forEachTimeseries(@(ts)write_structout(ts,prefix_name),myElem.Values); field_nms = fieldnames(structout_yout); %grab names of signals @@ -56,7 +65,18 @@ for jj = 1:out.logsout.numElements myElem = out.logsout.getElement(jj); - structout_logsout = Simulink.SimulationData.forEachTimeseries(@(ts)write_structout(ts),myElem.Values); + + % determine signal name + prefix_name = myElem.Name; + if any(prefix_name=='<') % it's a bus, name not unique. Add the blockPath + % prefix_name = strrep(strrep(myElem.Name, '<' , ''), '>' , ''); + block_name = getBlock(myElem.BlockPath,1); + block_name = strsplit(block_name,'/'); + prefix_name = [block_name{end}, '_']; + end + + + structout_logsout = Simulink.SimulationData.forEachTimeseries(@(ts)write_structout(ts,prefix_name),myElem.Values); field_nms = fieldnames(structout_logsout); @@ -82,17 +102,19 @@ %% Helper function -function structout = write_structout(ts) +function structout = write_structout(ts,prefix_name) +if any(ts.Name=='<') + ts_name = strrep(strrep(ts.Name, '<' , ''), '>' , ''); -% determine signal name -name = ts.Name; -if any(name=='<') - name = strrep(strrep(ts.Name, '<' , ''), '>' , ''); - +else + ts_name = ts.Name; + end -structout.(name).Time = ts.Time; -structout.(name).Values = ts.Data; +write_name = [prefix_name , ts_name]; + +structout.(write_name).Time = ts.Time; +structout.(write_name).Values = ts.Data; end From d22e79388ddf2b3fcaa6129cd2c1784ef27a9701 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Mon, 16 Jun 2025 17:12:50 +0200 Subject: [PATCH 02/18] exported models to previous matlab release for CODAC machines --- scdds | 2 +- .../controller/pcssp_cruise_controller.slx | Bin 61378 -> 25164 bytes .../cruise_control/model/pcssp_Voiture.slx | Bin 30018 -> 16261 bytes .../model/pcssp_Voiture_inBus_def.m | 8 ++++---- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scdds b/scdds index 795f681..a405a88 160000 --- a/scdds +++ b/scdds @@ -1 +1 @@ -Subproject commit 795f68191682b684c09dbd4b9d83925a64e427b9 +Subproject commit a405a88d6b49615d6333e1a854660d093bab819a diff --git a/templates/cruise_control/controller/pcssp_cruise_controller.slx b/templates/cruise_control/controller/pcssp_cruise_controller.slx index fae3773bd07831784834664038507f5e811412ca..b65b0e037d6f2990f0524a453fd660837355d613 100644 GIT binary patch delta 23718 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 P7+|D-^-|{h7vlc`8p8Nh literal 30018 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ⅆ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 D065}D diff --git a/templates/cruise_control/model/pcssp_Voiture_inBus_def.m b/templates/cruise_control/model/pcssp_Voiture_inBus_def.m index cf3c926..5d5c3db 100644 --- a/templates/cruise_control/model/pcssp_Voiture_inBus_def.m +++ b/templates/cruise_control/model/pcssp_Voiture_inBus_def.m @@ -13,10 +13,10 @@ elems(1).Complexity = 'real'; elems(1).DocUnits = 'm/s^2'; - pcssp_voiture_inBus = Simulink.Bus; - pcssp_voiture_inBus.Description = 'input acceleration for car model'; - pcssp_voiture_inBus.DataScope = 'Auto'; - pcssp_voiture_inBus.Elements = elems; + pcssp_car_inBus = Simulink.Bus; + pcssp_car_inBus.Description = 'input acceleration for car model'; + pcssp_car_inBus.DataScope = 'Auto'; + pcssp_car_inBus.Elements = elems; busNames{1} = 'pcssp_voiture_inBus'; Buses{1} = pcssp_voiture_inBus; From 382bb909a3bbc115be94ebb486b5da1c399d8b62 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Mon, 16 Jun 2025 17:30:53 +0200 Subject: [PATCH 03/18] small update in bus for car model --- templates/cruise_control/model/pcssp_Voiture_inBus_def.m | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/cruise_control/model/pcssp_Voiture_inBus_def.m b/templates/cruise_control/model/pcssp_Voiture_inBus_def.m index 5d5c3db..cf3c926 100644 --- a/templates/cruise_control/model/pcssp_Voiture_inBus_def.m +++ b/templates/cruise_control/model/pcssp_Voiture_inBus_def.m @@ -13,10 +13,10 @@ elems(1).Complexity = 'real'; elems(1).DocUnits = 'm/s^2'; - pcssp_car_inBus = Simulink.Bus; - pcssp_car_inBus.Description = 'input acceleration for car model'; - pcssp_car_inBus.DataScope = 'Auto'; - pcssp_car_inBus.Elements = elems; + pcssp_voiture_inBus = Simulink.Bus; + pcssp_voiture_inBus.Description = 'input acceleration for car model'; + pcssp_voiture_inBus.DataScope = 'Auto'; + pcssp_voiture_inBus.Elements = elems; busNames{1} = 'pcssp_voiture_inBus'; Buses{1} = pcssp_voiture_inBus; From 135bbcaee4a7d773bcdc2721adbc70a5cf071d4b Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 18 Jun 2025 14:24:54 +0200 Subject: [PATCH 04/18] upgrade in logsout2struct to properly handle bus signals that always have the same name --- .../controller/cruise_controller_load_tp.m | 3 --- .../controller/pcssp_cruise_controller.slx | Bin 25164 -> 51430 bytes .../pcssp_cruise_controller_params.xml | 21 ------------------ .../cruise_control/cruise_control_run_topm.m | 6 ++--- .../cruise_control/cruise_control_topm.slx | Bin 94504 -> 82604 bytes 5 files changed, 3 insertions(+), 27 deletions(-) delete mode 100644 templates/cruise_control/controller/pcssp_cruise_controller_params.xml diff --git a/templates/cruise_control/controller/cruise_controller_load_tp.m b/templates/cruise_control/controller/cruise_controller_load_tp.m index b8a5939..d367c82 100644 --- a/templates/cruise_control/controller/cruise_controller_load_tp.m +++ b/templates/cruise_control/controller/cruise_controller_load_tp.m @@ -2,9 +2,6 @@ %% function to define tunable parameters for the cruise controller %% define PID parameter for PID pcssp module for velocity control -% tp.Pvel = 6.25; -% tp.Ivel = 8.15; -% tp.Dvel =0.0816; tp.Pvel = 3; tp.Ivel =0; diff --git a/templates/cruise_control/controller/pcssp_cruise_controller.slx b/templates/cruise_control/controller/pcssp_cruise_controller.slx index b65b0e037d6f2990f0524a453fd660837355d613..890654a905bab28693a570cf5c91d2d41f8eafba 100644 GIT binary patch literal 51430 zcmeIb2V9iL^Dusv#Kan-Mq@?n<=}cjK#%H)NC!oQTzL*o;0~{dfPm51qu2`;u%akp z!-549qeh8}1+e#mVi!a~;6M93*SR}2Uw+^B^S=Kd33$&vyR$R1v$Hd^v%9`tO`5hR z5kEai6Lz$m8P=afLcc%3mob=1AQq?u_NqvAj8G}cFU=Tz{Oq^CR!kdv_5J!X=jWmx*O$rO?XnBq z_RIF=8O1RxWW0;QmTqm`C^sKX$srL2h!EGD!`z|S%Rr0RKO8On; zdA1`Xhf9C5X5ztdb}LAvVXGfsz62PN*7YhSkva`4Y(%0=&1gdUg~V${I!>C_nl!ah z({3bElkXfzq;G#vkw`6V{iSO&dm=^d31JJ*3O-MOG(#%lhk=XQt=PDcMJ>* z>eVANz;Au++y&psUP?)%Uq(0ANTu#M4DgJ zyF>QQox$$zCxg;kG;f|&u^dxHP94>Ld70R6M%JK#MFR%@wz3K7ZqL*a3GbheIa>Yl zaPwBJf?{76-C^Zy-RjHd&*?tpHSgqKe+^%p=P|2){w9CHi^d(gmcBXzdT**@%c`@> z230&<;&b-&lf&EZ?3dr!d0}YXIMJ!!{q7t~y7geqsLbVd3% zJZ)Qcrv22=)?GOny*w90-v4V(?(+QCf3}!#=h)G#?c15czrL%f$VmwrIr8_sxK}%$ zJ)6K?J1XhT$&Q^Vzf1*e{`e`)iNpxoI6Z9i=&k414mm8c;~!0^xU`%+R`u-4woqQ> zn>T(_rW`5G3C~%xrYqlne!+TqH@l?wbDHgKb}XWCzY1bJOS%3!FbbY!?(1G{DAY*rhmo z|G1YouT2};)^5O{L6 z4YI>8So6CL*}wa6)18Cp^Z@&#<%{#wWm{Iu^3EJRB09YwZAjcs=ekcy{-tdJnfoRb z4Xk)p46BV!nbVbFogdV8la_#N%Tc2uUjZS-sd)OsaVzb~q)D7#gVKIJW+e`%NCL~s6qTa#9AdKDHa zkw_-IeRyW^CUsfynR~H}cRLy#S9VXDxh^d&tGrxQbmhw5j}+t8zn{3b@Wj2sp|uZ& zChQqRza9Ui+c)2SJCMN${Q2jfp_7)}p8TK{|IT>w4?TM1$n$H0d!&5Y?c(ZMaiT}9 z@A~!YukR8}cm8m<$;s2F%WfW0=9TR{yib0|Ip$Vg(B6m(kNdx^o0pm@FPxl`k}|&w z`+UuZ>hz;chK;@FS2%t8^kr#j&yvRl1oR3I4^QofU7OvuSNZBYpFB>?YO|s@;O%`n zwMWP=zhn#?H0aTT2OBqS>Rs{lvgfNK?-p$FUfq{JaNxkjy$_AEQ@^@B9ymQ~zwA~P z$c3;qX=`}l<;#~*R}39Gw3~x!`1m~4qSVyXx9{E+?HoS@i3gSHCqG)Td}f;-cF=m| zsy`DeUlwJiCugOlbyh#UMsU+r>7jc7``dGJ|> z^85FNAZ?MAFK;#f{(C>McoU4H4nO>mF>PAo`Q4pD!;?R5Uc7j5;J9()%K9f=-s1hT zW8-bxwmBre-vN|8eDWld9&!F)>M*(6iu+RroLzDHP{f6GFY_x)FFwdBYo{a~?^Dsd z>dLkNpgdD>V&(ugJ7iXy9>uTkod^mG+qr8OrE>iJKTqHfRMDw}B}t|0XYHHxBJ|v9 zwhxcT>&%v|fgu(MWfycC!m3)mYiilHtgK7$(7EQ$=&-P`b{D=Q9XWk3t1NoIhlBF* z??Rz)>9S>g_?;P%3vF#}(-a+t9bLm!dZee+#;=W|9$7c9qy2V|FXR*d1%(L1(`T6_J{Wztm1AG3D-UuwAIFJDKJ zjdOQ*PpBvgDO&G3D`CF<;K6|-M$82j`SQ`KM#FBn7G4yBVq?bM9d=83!KtEi`r5VG zFznl@NC%sPamGFvcPA-i^XARo`<*~Eo!olq5XpngMuedWZe!34)*AuR#;n8ovU~>qNb`OALMxNKFPT>htu7m zVp&N}$!htrZC9^em8|L0d0NKCpoxdZh3=KiPky^3z4Y!M)1TcqAoudw7L-u+G!v+9 z1_G6{IrCEVPvp=mmjWo*tJ_CM@c9>k+|2yiiky-uyZ1$0=)QJH+$cZ_nqQ8DXX2Kv z_R|&wKLBxcNUGZRsivmGPd{z>^l3`=*aM^5^&6#1y_TPnKk3EwqG@}hyS47_xV2;W z6hEm{$_~78Q581jjXQ8*_~K)rEu*@x@8OgX`1I-1v**qgwMl;6q~?)*ieG+mOfqV5C2~D?CNgOk{3%dHWoptkzPLQi^k@uwoRKpz0cDuUYx_)s@Esl z1i@4Zbq7%>yH-Wa-Y@(3_R+ID`T2lS7EF;zMH9=SMT-XZ?_YRnvscBu@K1j_J^u9Z9cl$8l7495 z@!uB|Ov-4L*Z$ph=up&o9XfZ;8nai@Rylp{+`0Rvd{lJk*pZ#k<$_b?ny|_DW(-=$Lnb|6`SMt`3{4DnE4&U*dU5IZpXu#?{&@g@?t%ruDwQf*4Kh%Eyh)o#5Eg~Q zT5npL1%-`7U0csuK6uOq^4R^6MOi^<4(bWn9Z4`Rl)QaZFgAAP>p&p4_QUC+Fh_XB z-HwmgxPM}Kso&9>_cszgK3c&{s#3vh9(*Y-q#Xw|byd}~%`3td_XY)7mRk~b`Ne@d zFT;k?X#Oc53&P8{hu4f)($6P2FmP%0A(%;^c*5&;`^n#Y^G(&=>21pYXx5`Nz4mGP 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 delta 23402 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 diff --git a/templates/cruise_control/controller/pcssp_cruise_controller_params.xml b/templates/cruise_control/controller/pcssp_cruise_controller_params.xml deleted file mode 100644 index 9690f7d..0000000 --- a/templates/cruise_control/controller/pcssp_cruise_controller_params.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/cruise_control/cruise_control_run_topm.m b/templates/cruise_control/cruise_control_run_topm.m index 979a6e0..0029d48 100644 --- a/templates/cruise_control/cruise_control_run_topm.m +++ b/templates/cruise_control/cruise_control_run_topm.m @@ -20,13 +20,13 @@ h1 = nexttile; plot(h1,simout.follower_position_position.Time,simout.follower_position_position.Values); hold on; -plot(h1,simout.leader_out_pos.Time,simout.leader_out_pos.Values); +plot(h1,simout.leader_position_position.Time,simout.leader_position_position.Values); legend(h1,'follower position','leader position') h2 = nexttile; -plot(h2,simout.safety_distance.Time,simout.safety_distance.Values); -legend(h2,'Safety Distance') +plot(h2,simout.velocity_error.Time,simout.velocity_error.Values); +legend(h2,'velocity error') h3 = nexttile; plot(simout.controller_mode.Time,simout.controller_mode.Values); diff --git a/templates/cruise_control/cruise_control_topm.slx b/templates/cruise_control/cruise_control_topm.slx index 2a5f041d4d3101021f7a647c41ee1b64a266ce8f..74ebf2bd786407799759d9a75037a7a6705dcd04 100644 GIT binary patch delta 15764 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 delta 20628 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 Y^KSv$4 Date: Wed, 18 Jun 2025 15:55:43 +0200 Subject: [PATCH 05/18] Update run_tests.yml added artifact upload --- .github/workflows/run_tests.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 9a4ac22..3d3db6f 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -84,6 +84,14 @@ jobs: output: both thresholds: '40 60' + - name: upload artifact + uses: actions/upload-artifact@v4 + with: + # Name of the artifact to upload. + # Optional. Default is 'artifact' + name: testreport + retention-days: 90 + - name: Update Summary if: success() || failure() run: | From 6d8be530283eaa15830c63caf88dc05e9c00b519 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 18 Jun 2025 16:14:45 +0200 Subject: [PATCH 06/18] Update run_tests.yml --- .github/workflows/run_tests.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 3d3db6f..8bb6680 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -86,10 +86,12 @@ jobs: - name: upload artifact uses: actions/upload-artifact@v4 + if: success() || failure() with: # Name of the artifact to upload. # Optional. Default is 'artifact' name: testreport + path: ./testreport/* retention-days: 90 - name: Update Summary From 04fa7d2925aba4c6ae295f19acd86cc961031084 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 18 Jun 2025 16:34:30 +0200 Subject: [PATCH 07/18] bugfix in TF module --- templates/PID_example/modules/TF/pcssp_TF_obj.m | 4 ++-- templates/PID_example/modules/TF/pcssp_TF_test.m | 2 +- tools/logsout2struct.m | 11 ++++++----- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/templates/PID_example/modules/TF/pcssp_TF_obj.m b/templates/PID_example/modules/TF/pcssp_TF_obj.m index f5e9006..f5bfa9d 100644 --- a/templates/PID_example/modules/TF/pcssp_TF_obj.m +++ b/templates/PID_example/modules/TF/pcssp_TF_obj.m @@ -15,12 +15,12 @@ %% Buses -%obj = obj.addbus('pcssp_PID_outBus', 'pcssp_PID_outBus_def' ); +obj = obj.addbus('pcssp_PID_outBus', 'pcssp_PID_outBus_def' ); obj = obj.addbus('pcssp_TF_outBus', 'pcssp_TF_outBus_def' ); %% link PID refdd for shared bus -obj = obj.addrefdd('pcssp_PID.sldd'); +% obj = obj.addrefdd('pcssp_PID.sldd'); %% Tasks diff --git a/templates/PID_example/modules/TF/pcssp_TF_test.m b/templates/PID_example/modules/TF/pcssp_TF_test.m index 13d4023..ee79c56 100644 --- a/templates/PID_example/modules/TF/pcssp_TF_test.m +++ b/templates/PID_example/modules/TF/pcssp_TF_test.m @@ -6,7 +6,7 @@ isCodegen = false; end - methods + methods(Test) function bla(testCase) end diff --git a/tools/logsout2struct.m b/tools/logsout2struct.m index 2f1c783..9ac63ef 100644 --- a/tools/logsout2struct.m +++ b/tools/logsout2struct.m @@ -28,12 +28,13 @@ myElem = out.yout.getElement(ii); % grab Signal data % determine signal name - prefix_name = myElem.Name; - if any(prefix_name=='<') % it's a bus, name not unique. Add the blockPath + prefix_name = ''; + if any(myElem.Name=='<') % it's a bus, name not unique. Add the blockPath % prefix_name = strrep(strrep(myElem.Name, '<' , ''), '>' , ''); block_name = getBlock(myElem.BlockPath,1); block_name = strsplit(block_name,'/'); prefix_name = [block_name{end}, '_']; + prefix_name = strrep(prefix_name,' ',''); end % convert timeseries object to structure @@ -67,12 +68,12 @@ myElem = out.logsout.getElement(jj); % determine signal name - prefix_name = myElem.Name; - if any(prefix_name=='<') % it's a bus, name not unique. Add the blockPath - % prefix_name = strrep(strrep(myElem.Name, '<' , ''), '>' , ''); + prefix_name = ''; + if any(myElem.Name=='<') % it's a bus, name not unique. Add the blockPath block_name = getBlock(myElem.BlockPath,1); block_name = strsplit(block_name,'/'); prefix_name = [block_name{end}, '_']; + prefix_name = strrep(prefix_name,' ','_'); end From de23ce10759f723bc16177fc76b1c21228010c72 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Thu, 19 Jun 2025 09:28:37 +0200 Subject: [PATCH 08/18] Update run_tests.yml --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 8bb6680..0cdf38d 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -92,7 +92,7 @@ jobs: # Optional. Default is 'artifact' name: testreport path: ./testreport/* - retention-days: 90 + retention-days: 30 - name: Update Summary if: success() || failure() From c9dcd99d7cf41f207bf4cdcfbbd60d4f8d4b286c Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Thu, 19 Jun 2025 13:11:34 +0200 Subject: [PATCH 09/18] Update readme.md --- readme.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/readme.md b/readme.md index 8eb7c7e..6405854 100644 --- a/readme.md +++ b/readme.md @@ -1,12 +1,12 @@ # Introduction to the Plasma Control System Simulation Platform (PCSSP) -PCSSP provides standardized methods for the design and assessment of modules and models for plasma control. It essentially provides you with a systematic framework to develop, test, integrate, and deploy controller and tokamak models. PCSSP relies on a git submodule called SCDDS to implement the Simulink functionality regarding data dictionaries and referenced models. Both PCSSP and SCDDS are developed under a GPL license. You are invited to contribute to both projects that ultimately will be merged into one toolbox for control development and deployment on tokamaks. +PCSSP provides standardized methods for the design and assessment of modules and models for plasma control. It essentially provides you with a systematic framework to develop, test, integrate, and deploy controller and tokamak models. PCSSP relies on a git submodule called SCDDS (Simulink-based Control Design & Deployment Suite) to implement the Simulink functionality regarding data dictionaries and referenced models. Both PCSSP and SCDDS are developed under a LGPL license. You are invited to contribute to both projects that ultimately will be merged into one toolbox for control development and deployment on tokamaks. ## Full documentation The full documentation of PCSSP is automatically deployed from its source code in this repository to readthedocs. You can find it [here](https://pcssp.readthedocs.io/en/latest/index.html) ## Directory structure: - configurations: Simulink configuration definitions for codegen and simulation -- scdds-core: git submodule (!) to handle data-dictionaries and module references in Simulink +- scdds: git submodule (!) to handle data-dictionaries and module references in Simulink - src: inherited PCSSP classes - testing: inherited PCSSP classes for testing modules - templates: pcssp examples @@ -19,7 +19,7 @@ The full documentation of PCSSP is automatically deployed from its source code i ## To run: ### (Only required for code generation): define an environment variable SCDDS_COREPATH to point to scdds-core in your ~/.bashrc. For example, on a typical linux system the path could be: -`export SCDDS_COREPATH="~/Documents/MATLAB/pcssp-nightly/scdds"` +`export SCDDS_COREPATH="~/Documents/MATLAB/pcssp/scdds"` ### Open Matlab on your system. On the ITER SDCC cluster you can for example type the following in a new terminal window: `module load intel MATLAB` @@ -31,7 +31,7 @@ The full documentation of PCSSP is automatically deployed from its source code i This will tell git to use the simulink 3-way merge tool to resolve merge conflicts in binary slx files. ### Navigate to the templates/ directory, and open one of the provided examples -Detailed documentation on how to develop your own PCSSP modules is not yet integrated in this repo, you can contact one of the lead developers below to obtain a PDF. +Detailed documentation on how to develop your own PCSSP modules is available on the [readthedocs](https://pcssp.readthedocs.io/en/latest/index.html) ### License This code is distributed under the `LGPL-v3` license. Copyright is retained by the ITER Organization. @@ -43,7 +43,7 @@ The authors would greatly appreciate it if the modifications are shared back to The above is a non binding summary of the legal text. The full and legally binding text is in the license file `LICENSE.md`. -Note that this software requires Matlab/Simulink, including toolboxes needed for C code generation (typically Embedded coder) and Simulink Test. Users must obtain their own licenses from Mathworks. +Note that this software requires Matlab/Simulink, including toolboxes needed for C code generation (typically Embedded coder) and Simulink Check, Test, Coder. Users must obtain their own licenses from Mathworks. ### Contributing The code is hosted on [https://github.com/iterorganization/pcssp](https://github.com/iterorganization/pcssp) and can be freely cloned. The Git submodule is hosted on [https://gitlab.epfl.ch/spc/scdds/scdds-core](https://gitlab.epfl.ch/spc/scdds/scdds-core) From abfa47bc4efeb6a4251674a404eb07fb7d8acb01 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 25 Jun 2025 09:40:32 +0200 Subject: [PATCH 10/18] UpgradeAdvisor checks are now matlab version dependent --- .github/workflows/run_tests.yml | 2 +- run_tests.m | 6 +++- .../modules/sensor/pcssp_PID_sensor_test.m | 5 +--- testing/pcssp_module_test.m | 30 +++++++++++++------ 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 0cdf38d..a225788 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -57,7 +57,7 @@ jobs: - name: Run script uses: matlab-actions/run-command@v2 with: - command: run_tests + command: run_tests(${{matrix.release}}) - name: Test Report uses: dorny/test-reporter@v2 diff --git a/run_tests.m b/run_tests.m index 8f5ca0f..8f4a101 100644 --- a/run_tests.m +++ b/run_tests.m @@ -1,4 +1,8 @@ -function results = run_tests() +function results = run_tests(release) + +arguments + release char = 'R2024a' +end % main script to initialize PCSSP and run all tests in batch diff --git a/templates/PID_example/modules/sensor/pcssp_PID_sensor_test.m b/templates/PID_example/modules/sensor/pcssp_PID_sensor_test.m index 8aca2fa..add42c1 100644 --- a/templates/PID_example/modules/sensor/pcssp_PID_sensor_test.m +++ b/templates/PID_example/modules/sensor/pcssp_PID_sensor_test.m @@ -7,10 +7,7 @@ isCodegen = 0; % flag to trigger module tests for codeGen end - methods - function bla(testCase) - - end + methods(Test) end diff --git a/testing/pcssp_module_test.m b/testing/pcssp_module_test.m index d778f4e..9187eaf 100644 --- a/testing/pcssp_module_test.m +++ b/testing/pcssp_module_test.m @@ -29,7 +29,7 @@ end properties - + doUpgradeAdvisor end methods(TestClassSetup) @@ -40,7 +40,16 @@ function setup_paths(~) % function to setup desired paths end function define_testIDs(testCase) - testCase.checkIDlist = 'UpgradeAdvisorR2024a.txt'; + % grab current matlab release + matlab_version = matlabRelease().Release; + file_name = ['UpgradeAdvisor',char(matlab_version),'.txt']; + if exist(file_name,'file') == 2 % checkIDs are saved for this release + testCase.checkIDlist = file_name; + testCase.doUpgradeAdvisor = 1; + else + testCase.checkIDlist = ''; + testCase.doUpgradeAdvisor = 0; + end end end @@ -48,8 +57,7 @@ function define_testIDs(testCase) methods(TestMethodSetup) % empty for now function clear_workspaces_and_sldds(~) - disp('clearing workspace, models, and sldds'); - clear; + disp('clearing models and sldds'); bdclose all; Simulink.data.dictionary.closeAll('-discard') end @@ -85,12 +93,16 @@ function pcssp_ITER_model_compliance(testCase) end function run_upgrade_advisor(testCase) - % To do: This test needs to be dependent on the Matlab version - % using TestTags - checkIDs = readcell(testCase.checkIDlist); - result = run_model_advisor(testCase,checkIDs,'pcssp_Simulation','configurations_container_pcssp.sldd'); - testCase.verifyEqual(result.numFail,0); + if testCase.doUpgradeAdvisor + fprintf('Running Upgrade Advisor checks for model %s\n', func2str(testCase.algoobj)) + checkIDs = readcell(testCase.checkIDlist); + result = run_model_advisor(testCase,checkIDs,'pcssp_Simulation','configurations_container_pcssp.sldd'); + testCase.verifyEqual(result.numFail,0); + + else + warning('No CheckIDs found, skipping Upgrade Advisor tests') + end end From 835a285ece6d03006683df1276bd658d65170f7c Mon Sep 17 00:00:00 2001 From: Ravensbergen Timo Date: Wed, 25 Jun 2025 09:55:41 +0200 Subject: [PATCH 11/18] Added R2025a version checkIDs for upgrade advisor --- testing/UpgradeAdvisorR2025a.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 testing/UpgradeAdvisorR2025a.txt diff --git a/testing/UpgradeAdvisorR2025a.txt b/testing/UpgradeAdvisorR2025a.txt new file mode 100644 index 0000000..8c1896d --- /dev/null +++ b/testing/UpgradeAdvisorR2025a.txt @@ -0,0 +1 @@ +mathworks.design.CheckForProperFcnCallUsage,mathworks.design.CSStoVSSConvert,mathworks.design.ConvertMdlrefVarToVSS,mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks,mathworks.design.CheckMaskDisplayImageFormat,mathworks.design.CheckRapidAcceleratorSignalLogging,mathworks.design.CallsGetParamCompiledSampleTime,mathworks.design.CheckMaskRunInitFlag,mathworks.codegen.EfficientTunableParamExpr,mathworks.design.CheckExpFcnMdlSpecification,mathworks.design.CheckSingleSimulationOutput,mathworks.design.CheckSystemObjectUpdate,mathworks.design.CheckAndUpdateOldMaskTabnames,mathworks.design.emptyVariantObject,mathworks.design.ModelInfoKeywordSubstitution,mathworks.simulink.SB2SL.Check,mathworks.stateflow.ImportCustomCode.check,mathworks.design.CaseSensitiveBlockDiagramNames,mathworks.design.Update,mathworks.design.Aeroblks.CheckDOF,mathworks.design.Aeroblks.CheckNAV,mathworks.codegen.toolchainInfoUpgradeAdvisor.check,mathworks.codegen.CheckSupportedCompInstalled.check,mathworks.codegen.codertarget.check,mathworks.design.ReplaceEnvironmentControllerBlk,mathworks.design.slrealtimeUpgrades,mathworks.stateflow.MachineParentedData.check,mathworks.simscape.checkDaesscAsAutoSolver,mathworks.simscape.checkConsistencySolver,mathworks.design.serdesUpgrades,mathworks.design.CheckSLXFileCompressionLevel,mathworks.design.Sigbldr.upgradeCheck,mathworks.design.rfblockset.ce.checkDisconnectedDividerBlocks,mathworks.sl3d.vrsink,mathworks.sl3d.vrsink,mathworks.sl3d.vrsink,mathworks.sl3d.vrsink,mathworks.design.SLXModelProperties,mathworks.design.VirtualBusUsage,mathworks.design.UpdateRequireCompile,mathworks.design.CheckVirtualBusAcrossModelReference,mathworks.design.ModelLevelMessages,mathworks.design.ReplaceZOHDelayByRTB,mathworks.design.ParameterTuning,mathworks.design.MergeBlkUsage,com.mathworks.sorting.datastorecheck,mathworks.simulink.MLFBOutputDimensions,mathworks.simscape.checkOutdatedPSBlocks,mathworks.simscape.checkUnspecifiedEventVariables,mathworks.design.CheckForSFcnUpgradeIssues,mathworks.design.InitParamOutportMergeBlk,mathworks.design.CheckConstRootOutportWithInterfaceUpgrade,mathworks.design.DiscreteBlock,mathworks.stateflow.RecursiveEventBroadcast.check,mathworks.design.CheckSavedInCurrentVersion,com.mathworks.Simulink.UpgradeAdvisor.UpgradeModelHierarchy From ab6d34dd0e01a3132e1fbb61a24852e041183fe2 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 25 Jun 2025 10:10:47 +0200 Subject: [PATCH 12/18] adding R2025a to GH actions --- .github/workflows/run_tests.yml | 4 ++-- run_tests.m | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index a225788..d36469d 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -28,7 +28,7 @@ jobs: # Simulink_Coder # Embedded_Coder - os: ubuntu-22.04 - release: R2024a + release: [R2024a, R2025a] products: > Simulink Simulink_Test @@ -57,7 +57,7 @@ jobs: - name: Run script uses: matlab-actions/run-command@v2 with: - command: run_tests(${{matrix.release}}) + command: run_tests - name: Test Report uses: dorny/test-reporter@v2 diff --git a/run_tests.m b/run_tests.m index 8f4a101..3293981 100644 --- a/run_tests.m +++ b/run_tests.m @@ -1,8 +1,5 @@ -function results = run_tests(release) +function results = run_tests() -arguments - release char = 'R2024a' -end % main script to initialize PCSSP and run all tests in batch From 64a884537043aa73a57b213e2582c197c9b90f6a Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 25 Jun 2025 15:48:40 +0200 Subject: [PATCH 13/18] Update run_tests.yml --- .github/workflows/run_tests.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index d36469d..783db9f 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -17,25 +17,18 @@ jobs: strategy: fail-fast: false matrix: + os: [ubuntu-22.04] + release: [R2024a, R2025a] include: - #- os: macos-latest - # release: R2024a - # products: > - # Simulink - # Simulink_Test - # Simulink_Coverage - # Simulink_Check - # Simulink_Coder - # Embedded_Coder - - os: ubuntu-22.04 - release: [R2024a, R2025a] - products: > + - release: ${{matrix.release}} + products: > Simulink Simulink_Test Simulink_Coverage Simulink_Check Simulink_Coder Embedded_Coder + # Steps represent a sequence of tasks that will be executed as part of the job steps: From f180da058be7678de024344b4320587c033f19c6 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 25 Jun 2025 16:02:33 +0200 Subject: [PATCH 14/18] Update run_tests.yml --- .github/workflows/run_tests.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 783db9f..c8813e5 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -19,15 +19,7 @@ jobs: matrix: os: [ubuntu-22.04] release: [R2024a, R2025a] - include: - - release: ${{matrix.release}} - products: > - Simulink - Simulink_Test - Simulink_Coverage - Simulink_Check - Simulink_Coder - Embedded_Coder + # Steps represent a sequence of tasks that will be executed as part of the job @@ -44,7 +36,13 @@ jobs: # MATLAB release to set up (R2021a or later) release: ${{matrix.release}} # Products to set up in addition to MATLAB, specified as a list of product names separated by spaces - products: ${{matrix.products}} + products: > + Simulink + Simulink_Test + Simulink_Coverage + Simulink_Check + Simulink_Coder + Embedded_Coder # Run the run_tests script in the root of the repo - name: Run script From 0abc18cfe762d6affa68dc82433487a0e195c1df Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 25 Jun 2025 17:30:38 +0200 Subject: [PATCH 15/18] Update run_tests.yml --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index c8813e5..0548819 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -81,7 +81,7 @@ jobs: with: # Name of the artifact to upload. # Optional. Default is 'artifact' - name: testreport + name: testreport${{matrix.release}} path: ./testreport/* retention-days: 30 From c4d9d77b7c44e35cf1355db42d6a4a3321196c4f Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Thu, 26 Jun 2025 14:17:17 +0200 Subject: [PATCH 16/18] bugfixes in tests: UpgradeAdivsor contained checks that were for obscure toolboxes --- testing/UpgradeAdvisorR2025a.txt | 2 +- testing/pcssp_module_test.m | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/UpgradeAdvisorR2025a.txt b/testing/UpgradeAdvisorR2025a.txt index 8c1896d..ca60e1e 100644 --- a/testing/UpgradeAdvisorR2025a.txt +++ b/testing/UpgradeAdvisorR2025a.txt @@ -1 +1 @@ -mathworks.design.CheckForProperFcnCallUsage,mathworks.design.CSStoVSSConvert,mathworks.design.ConvertMdlrefVarToVSS,mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks,mathworks.design.CheckMaskDisplayImageFormat,mathworks.design.CheckRapidAcceleratorSignalLogging,mathworks.design.CallsGetParamCompiledSampleTime,mathworks.design.CheckMaskRunInitFlag,mathworks.codegen.EfficientTunableParamExpr,mathworks.design.CheckExpFcnMdlSpecification,mathworks.design.CheckSingleSimulationOutput,mathworks.design.CheckSystemObjectUpdate,mathworks.design.CheckAndUpdateOldMaskTabnames,mathworks.design.emptyVariantObject,mathworks.design.ModelInfoKeywordSubstitution,mathworks.simulink.SB2SL.Check,mathworks.stateflow.ImportCustomCode.check,mathworks.design.CaseSensitiveBlockDiagramNames,mathworks.design.Update,mathworks.design.Aeroblks.CheckDOF,mathworks.design.Aeroblks.CheckNAV,mathworks.codegen.toolchainInfoUpgradeAdvisor.check,mathworks.codegen.CheckSupportedCompInstalled.check,mathworks.codegen.codertarget.check,mathworks.design.ReplaceEnvironmentControllerBlk,mathworks.design.slrealtimeUpgrades,mathworks.stateflow.MachineParentedData.check,mathworks.simscape.checkDaesscAsAutoSolver,mathworks.simscape.checkConsistencySolver,mathworks.design.serdesUpgrades,mathworks.design.CheckSLXFileCompressionLevel,mathworks.design.Sigbldr.upgradeCheck,mathworks.design.rfblockset.ce.checkDisconnectedDividerBlocks,mathworks.sl3d.vrsink,mathworks.sl3d.vrsink,mathworks.sl3d.vrsink,mathworks.sl3d.vrsink,mathworks.design.SLXModelProperties,mathworks.design.VirtualBusUsage,mathworks.design.UpdateRequireCompile,mathworks.design.CheckVirtualBusAcrossModelReference,mathworks.design.ModelLevelMessages,mathworks.design.ReplaceZOHDelayByRTB,mathworks.design.ParameterTuning,mathworks.design.MergeBlkUsage,com.mathworks.sorting.datastorecheck,mathworks.simulink.MLFBOutputDimensions,mathworks.simscape.checkOutdatedPSBlocks,mathworks.simscape.checkUnspecifiedEventVariables,mathworks.design.CheckForSFcnUpgradeIssues,mathworks.design.InitParamOutportMergeBlk,mathworks.design.CheckConstRootOutportWithInterfaceUpgrade,mathworks.design.DiscreteBlock,mathworks.stateflow.RecursiveEventBroadcast.check,mathworks.design.CheckSavedInCurrentVersion,com.mathworks.Simulink.UpgradeAdvisor.UpgradeModelHierarchy +mathworks.design.CheckForProperFcnCallUsage,mathworks.design.CSStoVSSConvert,mathworks.design.ConvertMdlrefVarToVSS,mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks,mathworks.design.CheckMaskDisplayImageFormat,mathworks.design.CheckRapidAcceleratorSignalLogging,mathworks.design.CallsGetParamCompiledSampleTime,mathworks.design.CheckMaskRunInitFlag,mathworks.codegen.EfficientTunableParamExpr,mathworks.design.CheckExpFcnMdlSpecification,mathworks.design.CheckSingleSimulationOutput,mathworks.design.CheckSystemObjectUpdate,mathworks.design.CheckAndUpdateOldMaskTabnames,mathworks.design.emptyVariantObject,mathworks.design.ModelInfoKeywordSubstitution,mathworks.simulink.SB2SL.Check,mathworks.stateflow.ImportCustomCode.check,mathworks.design.CaseSensitiveBlockDiagramNames,mathworks.design.Update,mathworks.codegen.toolchainInfoUpgradeAdvisor.check,mathworks.codegen.CheckSupportedCompInstalled.check,mathworks.codegen.codertarget.check,mathworks.design.ReplaceEnvironmentControllerBlk,mathworks.stateflow.MachineParentedData.chec,mathworks.design.CheckSLXFileCompressionLevel,mathworks.design.Sigbldr.upgradeCheck,mathworks.design.SLXModelProperties,mathworks.design.VirtualBusUsage,mathworks.design.UpdateRequireCompile,mathworks.design.CheckVirtualBusAcrossModelReference,mathworks.design.ModelLevelMessages,mathworks.design.ReplaceZOHDelayByRTB,mathworks.design.ParameterTuning,mathworks.design.MergeBlkUsage,com.mathworks.sorting.datastorecheck,mathworks.simulink.MLFBOutputDimensions,mathworks.design.CheckForSFcnUpgradeIssues,mathworks.design.InitParamOutportMergeBlk,mathworks.design.CheckConstRootOutportWithInterfaceUpgrade,mathworks.design.DiscreteBlock \ No newline at end of file diff --git a/testing/pcssp_module_test.m b/testing/pcssp_module_test.m index 9187eaf..997ab06 100644 --- a/testing/pcssp_module_test.m +++ b/testing/pcssp_module_test.m @@ -71,7 +71,7 @@ function pcssp_ITER_codeGen_compliance(testCase) % module if testCase.isCodegen - checkIDs = readcell(testCase.checkIDlist); + checkIDs = readcell("checkinstanceIDs.txt"); result = run_model_advisor(testCase,checkIDs,'configurationSettingsAutocpp','configurations_container_pcssp.sldd'); % Print error flag to output testCase.verifyEqual(result.numFail,0); From add691c9d12784d494ce4fdd6d6debf7c366c387 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Fri, 27 Jun 2025 10:13:15 +0200 Subject: [PATCH 17/18] Debugging 2025a tests --- templates/KMAG/test_PCSSP_KMAG.m | 6 +++--- testing/UpgradeAdvisorR2025a.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/KMAG/test_PCSSP_KMAG.m b/templates/KMAG/test_PCSSP_KMAG.m index ae86a6b..4ded166 100644 --- a/templates/KMAG/test_PCSSP_KMAG.m +++ b/templates/KMAG/test_PCSSP_KMAG.m @@ -78,9 +78,9 @@ function run_verification_sim(testCase) u_base = timeseries(ulog.Data(:,ii),ulog.Time); - % remove first 1s transient before comparing - u_out = u_out.delsample('Index',[1:20]); - u_base = u_base.delsample('Index',[1:20]); + % % remove first 1s transient before comparing + % u_out = u_out.delsample('Index',[1:20]); + % u_base = u_base.delsample('Index',[1:20]); plot(u_out); hold on; plot(u_base); diff --git a/testing/UpgradeAdvisorR2025a.txt b/testing/UpgradeAdvisorR2025a.txt index ca60e1e..db8e843 100644 --- a/testing/UpgradeAdvisorR2025a.txt +++ b/testing/UpgradeAdvisorR2025a.txt @@ -1 +1 @@ -mathworks.design.CheckForProperFcnCallUsage,mathworks.design.CSStoVSSConvert,mathworks.design.ConvertMdlrefVarToVSS,mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks,mathworks.design.CheckMaskDisplayImageFormat,mathworks.design.CheckRapidAcceleratorSignalLogging,mathworks.design.CallsGetParamCompiledSampleTime,mathworks.design.CheckMaskRunInitFlag,mathworks.codegen.EfficientTunableParamExpr,mathworks.design.CheckExpFcnMdlSpecification,mathworks.design.CheckSingleSimulationOutput,mathworks.design.CheckSystemObjectUpdate,mathworks.design.CheckAndUpdateOldMaskTabnames,mathworks.design.emptyVariantObject,mathworks.design.ModelInfoKeywordSubstitution,mathworks.simulink.SB2SL.Check,mathworks.stateflow.ImportCustomCode.check,mathworks.design.CaseSensitiveBlockDiagramNames,mathworks.design.Update,mathworks.codegen.toolchainInfoUpgradeAdvisor.check,mathworks.codegen.CheckSupportedCompInstalled.check,mathworks.codegen.codertarget.check,mathworks.design.ReplaceEnvironmentControllerBlk,mathworks.stateflow.MachineParentedData.chec,mathworks.design.CheckSLXFileCompressionLevel,mathworks.design.Sigbldr.upgradeCheck,mathworks.design.SLXModelProperties,mathworks.design.VirtualBusUsage,mathworks.design.UpdateRequireCompile,mathworks.design.CheckVirtualBusAcrossModelReference,mathworks.design.ModelLevelMessages,mathworks.design.ReplaceZOHDelayByRTB,mathworks.design.ParameterTuning,mathworks.design.MergeBlkUsage,com.mathworks.sorting.datastorecheck,mathworks.simulink.MLFBOutputDimensions,mathworks.design.CheckForSFcnUpgradeIssues,mathworks.design.InitParamOutportMergeBlk,mathworks.design.CheckConstRootOutportWithInterfaceUpgrade,mathworks.design.DiscreteBlock \ No newline at end of file +mathworks.design.CheckForProperFcnCallUsage,mathworks.design.CSStoVSSConvert,mathworks.design.ConvertMdlrefVarToVSS,mathworks.design.CheckAndUpdateOldMaskedBuiltinBlocks,mathworks.design.CheckMaskDisplayImageFormat,mathworks.design.CheckRapidAcceleratorSignalLogging,mathworks.design.CallsGetParamCompiledSampleTime,mathworks.design.CheckMaskRunInitFlag,mathworks.codegen.EfficientTunableParamExpr,mathworks.design.CheckExpFcnMdlSpecification,mathworks.design.CheckSingleSimulationOutput,mathworks.design.CheckSystemObjectUpdate,mathworks.design.CheckAndUpdateOldMaskTabnames,mathworks.design.emptyVariantObject,mathworks.design.ModelInfoKeywordSubstitution,mathworks.simulink.SB2SL.Check,mathworks.stateflow.ImportCustomCode.check,mathworks.design.CaseSensitiveBlockDiagramNames,mathworks.design.Update,mathworks.codegen.toolchainInfoUpgradeAdvisor.check,mathworks.codegen.CheckSupportedCompInstalled.check,mathworks.codegen.codertarget.check,mathworks.design.ReplaceEnvironmentControllerBlk,mathworks.design.CheckSLXFileCompressionLevel,mathworks.design.Sigbldr.upgradeCheck,mathworks.design.SLXModelProperties,mathworks.design.VirtualBusUsage,mathworks.design.UpdateRequireCompile,mathworks.design.CheckVirtualBusAcrossModelReference,mathworks.design.ModelLevelMessages,mathworks.design.ReplaceZOHDelayByRTB,mathworks.design.ParameterTuning,mathworks.design.MergeBlkUsage,com.mathworks.sorting.datastorecheck,mathworks.simulink.MLFBOutputDimensions,mathworks.design.CheckForSFcnUpgradeIssues,mathworks.design.InitParamOutportMergeBlk,mathworks.design.CheckConstRootOutportWithInterfaceUpgrade,mathworks.design.DiscreteBlock \ No newline at end of file From db0eed05a6f9319a4b1e571baa1087d4afa52aa4 Mon Sep 17 00:00:00 2001 From: Timo Ravensbergen Date: Wed, 23 Jul 2025 15:27:22 +0200 Subject: [PATCH 18/18] added support for updating parameter values in nested structures in the module class. --- scdds | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scdds b/scdds index a405a88..ef9f9e8 160000 --- a/scdds +++ b/scdds @@ -1 +1 @@ -Subproject commit a405a88d6b49615d6333e1a854660d093bab819a +Subproject commit ef9f9e80e747650697b157f676f97010db774f64