From ab1acecec43dc7655cfd0b1c4217f1509e22a140 Mon Sep 17 00:00:00 2001 From: Lorenzo Pivetta <lorenzo.pivetta@elettra.eu> Date: Mon, 29 May 2023 15:12:41 +0200 Subject: [PATCH] First import --- gen_seq_executor.m | 96 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 gen_seq_executor.m diff --git a/gen_seq_executor.m b/gen_seq_executor.m new file mode 100644 index 0000000..080a5b5 --- /dev/null +++ b/gen_seq_executor.m @@ -0,0 +1,96 @@ +clear all; + +for num_sequences=1:300 + +seq_name = sprintf('seq_executor_%d.txt',num_sequences); + +header{1} = '#'; +header{2} = '# Description: $description'; +header{3} = '# Author: Sequencer Library'; +header{4} = '# Date: 2020/06/16'; +header{5} = '#'; +header{6} = sprintf('# This sequence executes %d multi commands/writes ',num_sequences); +header{7} = '#'; + +cnt = 0; +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;(write(this/RetryCounter) = 0) && (write(this/ErrorCounter) = 0) && goto(%d);-1',cnt,cnt+1); + +% reset executed flag +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(write(this/Executed%03d) = 0) && goto(%d);Resetting $cmdattr%03d executed flag;Error resetting $cmdattr%03d$ executed flag;-1',cnt,seq,cnt+1,seq,seq); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/RetryCounter) > read(this/MaxRetryCounter) ? goto(-1) : goto(%d);Checking retry counter;Max number of retries reached;-1',cnt,cnt+1); + +% Turn feedbacks ON +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;((read(this/Enabled%03d) == 1) && (read(this/Executed%03d) == 0)) ? $cmdattr%03d$ && (write(this/Executed%03d) = 1) && sleep($sleep_cmd) && goto(%d) : goto(%d);Executing $cmdattr%03d$;Error executing $cmdattr%03d$;-1;tangoerror=goto(%d)',cnt,seq,seq,seq,seq,cnt+2,cnt+2,seq,seq,cnt+1); + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && goto(%d);-1',cnt,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;(write(this/RetryCounter) = read(this/RetryCounter) + 1) && goto(%d);Increasing retry counter;Error increasing retry counter;-1',cnt,cnt+1); + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/ErrorCounter) == 0 ? goto(%d) : goto(%d);Increasing retry counter;Error increasing retry counter;-1',cnt,cnt+1,2+num_sequences); + +cnt = 0; +cnt = cnt + 1; +footer{cnt} = 'attr;ErrorCounter;long;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;RetryCounter;long;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;MaxRetryCounter;long;1'; + +% check Enable +for seq=1:num_sequences + cnt = cnt + 1; + footer{cnt} = sprintf('attr;Enabled%03d;bool;1',seq); +end + +% check Executed +for seq=1:num_sequences + cnt = cnt + 1; + footer{cnt} = sprintf('attr;Executed%03d;bool;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 + +% Dynamic R/W attributes +% Internal +% attr;ErrorCounter;long;0 +% attr;RetryCounter;long;0 +% attr;MaxRetryCounter;long;0 +% attr;Enabled001;bool;1 +% attr;Enabled002;bool;1 +% attr;Executed001;bool;0 +% attr;Executed002;bool;0 +% ..... + + +% Wildcards +% $description= +% $cmd_sleep=0.1 +% $cmd_attr_001=command(fel01/diagnostics/mscrccd_fel01.01/ResetCamera) +% $cmd_attr_002=(write(inj/power_supply/psch_inj.01/Current) = 0) +.... + -- GitLab