diff --git a/gen_seq_camera_power_save.m b/gen_seq_camera_power_save.m new file mode 100644 index 0000000000000000000000000000000000000000..f1c4d869518b442c11739cf7c2044bdb68aad8b5 --- /dev/null +++ b/gen_seq_camera_power_save.m @@ -0,0 +1,85 @@ +clear all; + +for num_sequences=1:32 + +seq_name = sprintf('seq_ps_on_%d.txt',num_sequences); + +header{1} = '#'; +header{2} = '# Description: $description'; +header{3} = '# Author: Sequencer Library'; +header{4} = '# Date: 2019/05/31'; +header{5} = '#'; +header{6} = sprintf('# This sequence switches on power supplies',num_sequences); +header{7} = '#'; + +cnt = 0; +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;(write(this/Cnt) = 0) && goto(%d);Reset error counter;Error resetting error counter;-1',cnt,cnt+1); + +% Reset power supplies +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devpsc%d$/State) == FAULT ? command($devpsc%d$/Reset) && (write(this/Cnt) = read(this/Cnt) + 1) && sleep($sleep_after_reset_cmd) && goto(%d) : goto(%d);Reset $devpsc%d$ fault state;Error resetting $devpsc%d$ fault state;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+1,cnt+1,seq,seq,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/Cnt) > 0 ? sleep($sleep_wait_refresh_state) && (write(this/Cnt) = 0) && goto(%d) : goto(%d);Waiting after reset ;Error waiting after reset;-1,exit',cnt,cnt+1,cnt+1); + +% Switch on power supplies +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devpsc%d$/State) != ON ? command($devpsc%d$/On) && (write(this/Cnt) = read(this/Cnt) + 1) && sleep($sleep_after_on_cmd) && goto(%d) : goto(%d);Turning $devpsc%d$ on;Error turning $devpsc%d$ on;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+1,cnt+1,seq,seq,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/Cnt) > 0 ? sleep($sleep_wait_refresh_state) && (write(this/Cnt) = 0) && goto(%d) : goto(%d);Waiting after reset ;Error waiting after reset;-1',cnt,cnt+1,cnt+1); + +% Waiting power supplies moving +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(read($devpsc%d$/State) == MOVING) || (read($devpsc%d$/State) == RUNNING) || (read($devpsc%d$/State) == INIT) ? sleep($sleep_wait_refresh_state) && goto(%d) : goto(%d);Waiting $devpsc%d$ on;Error waiting $devpsc%d$ on;60000;timeouterror=goto(%d),tangoerror=goto(%d)',cnt,seq,seq,seq,cnt,cnt+1,seq,seq,cnt+1,cnt+1); +end + +% Check power supplies on +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devpsc%d$/State) == ON ? (write(this/Cnt) = read(this/Cnt) + 1) && goto(%d) : command($devpsc%d$/NotOn) && goto(%d);Checking $devpsc%d$ on;Error checking $devpsc%d$ on;-1;tangoerror=goto(%d),exit',cnt,seq,cnt+1,seq,cnt+1,seq,seq,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/Cnt) == %d ? goto(%d) : goto(-1);Success;Some power supplies not ON;-1',cnt,num_sequences,cnt+1); + + +% dynamic attributes +footer{1} = 'attr;Cnt;long;0'; + + +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;Cnt;long;0 + +% Wildcards +% $description= +% $sleep_after_reset_cmd=1 +% $sleep_after_on_cmd=1 +% $sleep_wait_refresh_state=4 +% $devpsc1= +% $devpsc2= +% $devpsc3= +% ......... +