From 51693001f512e47314de58602229f65e98fb1837 Mon Sep 17 00:00:00 2001
From: Lorenzo Pivetta <lorenzo.pivetta@elettra.eu>
Date: Mon, 29 May 2023 15:07:47 +0200
Subject: [PATCH] First import

---
 gen_seq_init_multi_ps.m |  57 +++++++++++++++++
 gen_seq_multi_ps.m      | 133 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 190 insertions(+)
 create mode 100644 gen_seq_init_multi_ps.m
 create mode 100644 gen_seq_multi_ps.m

diff --git a/gen_seq_init_multi_ps.m b/gen_seq_init_multi_ps.m
new file mode 100644
index 0000000..603bc34
--- /dev/null
+++ b/gen_seq_init_multi_ps.m
@@ -0,0 +1,57 @@
+clear all;
+
+for num_sequences=1:32
+
+seq_name = sprintf('seq_init_multi_ps_%d.txt',num_sequences);
+
+header{1} = '#';
+header{2} = '# Description: Initialize starting values of $devseq_ps sequence';
+header{3} = '# Author: Sequencer Library';
+header{4} = '# Date: 2019/09/19';
+header{5} = '#';
+
+cnt = 0;
+cnt = cnt + 1;
+
+
+blk{cnt}=sprintf('step1;command($devseq_ps/Acknowledge) && goto(2);Initializing $devseq_ps;Error initializing $devseq_ps;-1;tangoerror=goto(2)');
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;abs(read($ps%d_attr$[0]) - read($ps%d_attr$[1])) < read(this/CurrThres) ? (write($devseq_ps/Ps%dSet) = read($ps%d_attr$[1])) && goto(%d) : goto(-1);Reading $ps%d_attr$ attribute;Error reading $ps%d_attr$;3000',cnt,seq,seq,seq,seq,cnt+1,seq,seq);
+end
+
+cnt = cnt + 1;
+blk{cnt}=sprintf('step%d;(write($devseq_ps/In1) = 0) && goto(%d);Resetting $devseq_ps/In1 attribute;Error resetting $devseq_ps/In1 attribute;3000',cnt,cnt+1);
+
+cnt = 0;
+cnt = cnt + 1;
+footer{cnt} = 'attr;CurrThres;double;10';
+cnt = cnt + 1;
+
+fileID = fopen(seq_name,'w');
+for i=1:size(header,2)
+    fprintf(fileID,'%s\n',header{i});
+end
+for i=1:size(blk,2)
+    fprintf(fileID,'%s\n',blk{i});
+end
+
+for i=1:size(footer,2)
+    fprintf(fileID,'%s\n',footer{i});
+end
+
+fclose(fileID);
+
+end
+
+
+% Wildcards
+% $$devseq_ps=
+% $ps1_attr$=
+% $ps2_attr$=
+% $ps3_attr$=
+% .........
+
+
+
diff --git a/gen_seq_multi_ps.m b/gen_seq_multi_ps.m
new file mode 100644
index 0000000..2f193bb
--- /dev/null
+++ b/gen_seq_multi_ps.m
@@ -0,0 +1,133 @@
+clear all;
+
+for num_sequences=1:32
+
+seq_name = sprintf('seq_multi_ps_%d.txt',num_sequences);
+
+header{1} = '#';
+header{2} = '# Description: $description';
+header{3} = '# Author: Sequencer Library';
+header{4} = '# Date: 2019/09/19';
+header{5} = '#';
+header{6} = sprintf('# This sequence set the same current value to %d power supplies',num_sequences);
+header{7} = '#';
+
+error_step = 1+4+num_sequences*8;
+cnt = 0;
+
+cnt = cnt + 1;
+blk{cnt}=sprintf('step%d;read(this/AcquireSetting) == 1 ? goto(%d) : goto(%d);Acquiring ps settings;Error acquiring ps settings;-1',cnt,cnt+1,cnt+1+num_sequences);
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write(this/Ps%dSet) = read($ps%d_attr$[1])) && (write(this/Ps%dSetOk) = read(this/Ps%dSet)) && goto(%d);Reading $ps%d_attr$ attribute;Error reading $ps%d_attr$;3000',cnt,seq,seq,seq,seq,cnt+1,seq,seq);
+end
+
+cnt = cnt + 1;
+blk{cnt}=sprintf('step%d;(write(this/In1hold) = read(this/In1)) && goto(%d);Memorizing input settings;Error memorizing input setting;-1',cnt,cnt+1);
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write(this/Ps%dDelta) = read(this/In1hold)) && goto(%d);Calculating $ps%d_attr$ delta;Error calculating $ps%d_attr$ delta;-1',cnt,seq,cnt+1,seq,seq);
+end
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write(this/Ps%dSetNew) = (read(this/Ps%dSet) + read(this/Ps%dDelta))) && goto(%d);Calculating $ps%d_attr$ new setting;Error calculating $ps%d_attr$ new setting;-1',cnt,seq,seq,seq,cnt+1,seq,seq);
+end
+
+cnt = cnt + 1;
+blk{cnt}=sprintf('step%d;read(this/EnableSetting) == 1 ? goto(%d) : goto(%d);Enable setting;Enable setting error;-1',cnt,cnt+1,cnt+6*num_sequences+3);
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;abs(read(this/Ps%dDelta)) < read(this/PsMaxDelta) ? goto(%d) : goto(-1);Checking $ps%d_attr$ max delta value in range;$ps%d_attr$ max delta value out of range;-1',cnt,seq,cnt+1,seq,seq);
+end
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;abs(read(this/Ps%dSetNew)) < read(this/PsMinMax) ? goto(%d) : goto(-1);Checking $ps%d_attr$ value in range;$ps%d_attr$ value out of range;-1',cnt,seq,cnt+1,seq,seq);
+end
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write($ps%d_attr$) = read(this/Ps%dSetNew)) && goto(%d);Setting $ps%d_attr$;Error setting $ps%d_attr$;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+1,seq,seq,error_step);
+end
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write(this/Ps%dSetOk) = read(this/Ps%dSetNew)) && goto(%d);Storing last $ps%d_attr$ value;Error storing $ps%d_attr$ value;-1',cnt,seq,seq,cnt+1,seq,seq);
+end
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write(this/Ps%dSetOk) = read(this/Ps%dSetNew)) && goto(%d);Storing last $ps%d_attr$ value;Error storing $ps%d_attr$ value;-1',cnt,seq,seq,cnt+1,seq,seq);
+end
+
+cnt = cnt + 1;
+blk{cnt}=sprintf('step%d;read(this/ContinuousMode) == 0 ? goto(%d) : sleep($sleep_time) && goto(%d);Checking continuous mode;Error checking continuous mode;-1',cnt,cnt+num_sequences+2,2+num_sequences);
+
+for seq=1:num_sequences
+	cnt = cnt + 1;
+	blk{cnt}=sprintf('step%d;(write($ps%d_attr$) = read(this/Ps%dSetOk)) && goto(%d);Restoring $ps%d_attr$;Error restoring $ps%d_attr$;3000;tangoerror=goto(%d),timeouterror(%d)',cnt,seq,seq,cnt+1,seq,seq,cnt+1,cnt+1);
+end
+
+cnt = cnt + 1;
+blk{cnt}=sprintf('step%d;goto(-1);Exit error condition;Error reading/setting power supplies;-1',cnt);
+
+
+% dynamic attributes
+cnt = 0;
+cnt = cnt + 1;
+footer{cnt} = 'attr;ContinuousMode;bool;0';
+cnt = cnt + 1;
+footer{cnt} = 'attr;AcquireSetting;bool;0';
+cnt = cnt + 1;
+footer{cnt} = 'attr;EnableSetting;bool;0';
+cnt = cnt + 1;
+footer{cnt} = 'attr;PsMinMax;double;160';
+cnt = cnt + 1;
+footer{cnt} = 'attr;PsMaxDelta;double;5';
+cnt = cnt + 1;
+footer{cnt} = 'attr;In1;double;0';
+cnt = cnt + 1;
+footer{cnt} = 'attr;In1hold;double;0';
+
+
+for seq=1:num_sequences
+    cnt = cnt + 1;
+    footer{cnt} = sprintf('attr;Ps%dDelta;double;0',seq);
+    cnt = cnt + 1;    
+    footer{cnt} = sprintf('attr;Ps%dSet;double;0',seq);
+    cnt = cnt + 1;    
+    footer{cnt} = sprintf('attr;Ps%dSetNew;double;0',seq);
+    cnt = cnt + 1;    
+    footer{cnt} = sprintf('attr;Ps%dSetOk;double;0',seq);
+end
+
+fileID = fopen(seq_name,'w');
+for i=1:size(header,2)
+    fprintf(fileID,'%s\n',header{i});
+end
+for i=1:size(blk,2)
+    fprintf(fileID,'%s\n',blk{i});
+end
+for i=1:size(footer,2)
+    fprintf(fileID,'%s\n',footer{i});
+end
+
+fclose(fileID);
+
+end
+
+
+% Wildcards
+% $description=
+% sleep_time=1
+% $ps1_attr$=
+% $ps2_attr$=
+% $ps3_attr$=
+% .........
+
+
+
-- 
GitLab