diff --git a/gen_seq_ps_check.m b/gen_seq_ps_check.m new file mode 100644 index 0000000000000000000000000000000000000000..7afbcc97e1c5cb1dfb42933ad93fea7caac9cf71 --- /dev/null +++ b/gen_seq_ps_check.m @@ -0,0 +1,62 @@ +clear all; + +for num_sequences=1:32 + +seq_name = sprintf('seq_ps_check_%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 check ON state and read-set of power supplies',num_sequences); +header{7} = '#'; + +cnt = 0; +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;(write(this/ErrorCnt) = 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 ? (write(this/ErrorCnt) = read(this/ErrorCnt) + 1) && goto(%d) : goto(%d);Reading $devpsc%d$ state;Error reading $devpsc%d$ state;-1;tangoerror=goto(%d)',cnt,seq,cnt+1,cnt+1,seq,seq,cnt+2); + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;abs(read($devpsc%d$/Current[0]) - read($devpsc%d$/Current[1])) > read(this/CurrentThreshold) ? (write(this/ErrorCnt) = read(this/ErrorCnt) + 1) && goto(%d) : goto(%d);Reading $devpsc%d$ current;Error reading $devpsc%d$ current;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+2,cnt+2,seq,seq,cnt+1); + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(write(this/ErrorCnt) = read(this/ErrorCnt) + 1) && goto(%d);Incrementing error counter;Error incrementing error counter;-1',cnt,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/ErrorCnt) > 0 ? goto(-1) : goto(%d);Checking error counter;Some power supplies with Current/State error;-1,exit',cnt,cnt+1); + +% +% dynamic attributes +footer{1} = 'attr;ErrorCnt;long;0'; +footer{2} = 'attr;CurrentThreshold;double;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;ErrorCnt;long;0 + +% Wildcards +% $description= +% $devpsc1= +% $devpsc2= +% $devpsc3= +% ......... + diff --git a/gen_seq_ps_check2.m b/gen_seq_ps_check2.m new file mode 100644 index 0000000000000000000000000000000000000000..6defada28cca6dc49d9187d579c09f6f84e6bf2d --- /dev/null +++ b/gen_seq_ps_check2.m @@ -0,0 +1,70 @@ +clear all; + +for num_sequences=1:300 + +seq_name = sprintf('seq_ps_check2_%d.txt',num_sequences); + +header{1} = '#'; +header{2} = '# Description: $description'; +header{3} = '# Author: Sequencer Library'; +header{4} = '# Date: 2021/03/23'; +header{5} = '#'; +header{6} = sprintf('# This sequence check %d power supplies states',num_sequences); +header{7} = '#'; + +cnt = 0; + +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;(write(this/ErrorFlag) = 0) && goto(%d);Initializing variables;Error initializing variables;-1',cnt,cnt+1); +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;sleep($sleep_monitor) && (write(this/ErrorCounter) = 0) && goto(%d);Initializing variables;Error initializing variables;-1',cnt,cnt+1); + +% Goto default state +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(read($devps%03d/State) != $ps%03dstate) ? (write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && goto(%d) : goto(%d);Checking $devps%03d state;$devps%03d wrong status;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+1,cnt+2,seq,seq,cnt+1); + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && goto(%d);Incrementing error counter;Fault incrementing error counter;-1',cnt,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/ErrorCounter) == 0 ? (write(this/ErrorFlag) = 0) && goto(%d) : (write(this/ErrorFlag) = 1) && goto(%d);Checking errors;Fault checking errors:-1',cnt ,2 ,2); + +% dynamic attributes +cnt = 0; +cnt = cnt + 1; +footer{cnt} = 'attr;ErrorFlag;bool;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;ErrorCounter;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;ErrorCounter;long;0 +% attr;ErrorFlag;bool;0 + +% Wildcards +% $description= +% $sleep_monitor=4 +% $devtime_attr= +% $devps001= +% $ps001state= +% $devps002= +% $ps002state= +% $devps003= +% ......... + diff --git a/gen_seq_ps_cycle.m b/gen_seq_ps_cycle.m new file mode 100644 index 0000000000000000000000000000000000000000..7b6e85d5de45acb5da8f3b59b00ffb4bf18164f1 --- /dev/null +++ b/gen_seq_ps_cycle.m @@ -0,0 +1,103 @@ +clear all; + +for num_sequences=1:32 + +seq_name = sprintf('seq_ps_cycle_%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 starts cycling of power supplies',num_sequences); +header{7} = '#'; + +cnt = 0; +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;(write(this/Cnt) = 0) && (write(this/CurrTime) = read($devdate_attr)) && goto(%d);Reset error counter;Error resetting error counter;-1',cnt,cnt+1); + +% Start cycling power supplies +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;abs(read(this/CurrTime) - read(this/LastCyclingTime%d)) > read(this/CyclingDeadTime) ? command($devpsc%d$/StartCycling) && sleep($sleep_after_cycle_cmd) && goto(%d) : goto(%d);Start cycling $devpsc%d$;Error starting $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;sleep($sleep_wait_refresh_state) && goto(%d);Reading current time;Error reading current time;-1',cnt,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) ? sleep($sleep_wait_refresh_state) && goto(%d) : goto(%d);Waiting $devpsc%d$ on;Error waiting $devpsc%d$ on;$cycling_timeout000;timeouterror=goto(%d),tangoerror=goto(%d)',cnt,seq,seq,cnt,cnt+1,seq,seq,cnt+1,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;(write(this/CurrTime) = read($devdate_attr)) && goto(%d);Reading current time;Error reading current time;-1',cnt,cnt+1); + +% Check power supplies on +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devpsc%d$/State) == ON ? (write(this/LastCyclingTime%d) = read(this/CurrTime)) && (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,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 +cnt_foot = 0; + +cnt_foot = cnt_foot + 1; +footer{cnt_foot} = 'attr;Cnt;long;0'; +cnt_foot = cnt_foot + 1; +footer{cnt_foot} = 'attr;CurrTime;long;0'; +cnt_foot = cnt_foot + 1; +footer{cnt_foot} = 'attr;CyclingDeadTime;long;0'; +for seq=1:num_sequences + cnt_foot = cnt_foot + 1; + footer{cnt_foot} = sprintf('attr;LastCyclingTime%d;long;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 +% +% User +% attr;CyclingDeadTime;long;0 +% +% Internal +% attr;Cnt;long;0 +% attr;CurrTime;long;0 +% attr;LastCyclingTime1;long;0 +% attr;LastCyclingTime2;long;0 +% .... + + + +% Wildcards +% $description= +% $sleep_after_cycle_cmd=1 +% $sleep_wait_refresh_state=4 +% $cycling_timeout=240 +% $devdate_attr=sr/misc/utils_sr.01/Date[0] +% $devpsc1= +% $devpsc2= +% $devpsc3= +% ......... + + + diff --git a/gen_seq_ps_off.m b/gen_seq_ps_off.m new file mode 100644 index 0000000000000000000000000000000000000000..699d06a7f02d1da158f1440445ba666dc7e6ad87 --- /dev/null +++ b/gen_seq_ps_off.m @@ -0,0 +1,86 @@ +clear all; + +for num_sequences=1:32 + +seq_name = sprintf('seq_ps_off_%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 off 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 off power supplies +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devpsc%d$/State) != OFF ? command($devpsc%d$/Off) && (write(this/Cnt) = read(this/Cnt) + 1) && sleep($sleep_after_off_cmd) && goto(%d) : goto(%d);Turning $devpsc%d$ off;Error turning $devpsc%d$ off;-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$ off;Error waiting $devpsc%d$ off;180000;timeouterror=goto(%d),tangoerror=goto(%d)',cnt,seq,seq,seq,cnt,cnt+1,seq,seq,cnt+1,cnt+1); +end + +% Checking power supplies off +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(read($devpsc%d$/State) == OFF) || (read($devpsc%d$/State) == DISABLE) ? (write(this/Cnt) = read(this/Cnt) + 1) && goto(%d) : command($devpsc%d$/NotOff) && goto(%d);Checking $devpsc%d$ off;Error checking $devpsc%d$ off;-1;tangoerror=goto(%d),exit',cnt,seq,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 OFF;-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_off_cmd=1 +% $sleep_wait_refresh_state=4 +% $devpsc1= +% $devpsc2= +% $devpsc3= +% ......... + + + diff --git a/gen_seq_ps_on.m b/gen_seq_ps_on.m new file mode 100644 index 0000000000000000000000000000000000000000..f1c4d869518b442c11739cf7c2044bdb68aad8b5 --- /dev/null +++ b/gen_seq_ps_on.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= +% ......... + diff --git a/gen_seq_ps_state.m b/gen_seq_ps_state.m new file mode 100644 index 0000000000000000000000000000000000000000..b39543b2e76952dfcaf9a9d4eb4ca1a20e365625 --- /dev/null +++ b/gen_seq_ps_state.m @@ -0,0 +1,94 @@ +clear all; + +for num_sequences=1:200 + +seq_name = sprintf('seq_ps_state_%d.txt',num_sequences); + +header{1} = '#'; +header{2} = '# Description: $description'; +header{3} = '# Author: Sequencer Library'; +header{4} = '# Date: 2021/02/3'; +header{5} = '#'; +header{6} = sprintf('# This sequence switches %d power supplies to requested state',num_sequences); +header{7} = '#'; + +cnt = 0; +cnt = cnt + 1; +blk{cnt}=sprintf('step%d;(write(this/ErrorCounter) = 0) && (write(this/StartTime) = read($devtime_attr)) && goto(%d);Recording sequence starting time;Error recording sequence starting time;-1',cnt,cnt+1); + +% Reset power supplies +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devps%03d/State) == FAULT ? command($devps%03d/Reset) && (write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && sleep($sleep_after_reset) && goto(%d) : goto(%d);Checking $devps%03d FAULT state;Error checking $devps%03d 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/ErrorCounter) == 0 ? goto(%d) : sleep($sleep_monitor) && goto(%d);Checking errors;Fault checking errors:-1',cnt,cnt+1,cnt+1); + + +% Goto default state +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;((read($devps%03d/State) != $ps%03dstate) && (read($devps%03d/State) != FAULT) && (read($devps%03d/State) != MOVING) ) ? command($devps%03d/$ps%03dstate) && sleep($sleep_after_cmd) && goto(%d) : goto(%d);Switching $ps%03dstate $devps%03d;Error switching $ps%03dstate $devps%03d;-1;tangoerror(%d)',cnt,seq,seq,seq,seq,seq,seq,cnt+1,cnt+1,seq,seq,seq,seq,cnt+1); +end + +% Reset counter +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;sleep($sleep_monitor) && (write(this/ErrorCounter) = 0) && goto(%d);Resetting error counter;Error resetting error counter;-1',cnt,cnt+1); + +% Goto default state +for seq=1:num_sequences + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;read($devps%03d/State) != $ps%03dstate ? (write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && goto(%d) : goto(%d);Checking $devps%03d $ps%03dstate state;$devps%03d not in $ps%03dstate state;-1;tangoerror=goto(%d)',cnt,seq,seq,cnt+2,cnt+2,seq,seq,seq,seq,cnt+1); + cnt = cnt + 1; + blk{cnt} = sprintf('step%d;(write(this/ErrorCounter) = (read(this/ErrorCounter) + 1)) && goto(%d);Counting $devps%03d error state;Error counting $devps%03d fault state;-1;tangoerror=goto(%d)',cnt,cnt+1,seq,seq,cnt+1); +end + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;read(this/ErrorCounter) == 0 ? goto(%d) : goto(%d);Checking errors;Fault checking errors:-1',cnt,cnt+2,cnt+1); + +cnt = cnt + 1; +blk{cnt} = sprintf('step%d;(read($devtime_attr) - read(this/StartTime)) < read(this/MaxWaitTime) ? goto(2) : goto(-1);Checking recovery timeout;Recovery timeout;-1',cnt); + + +% dynamic attributes +cnt = 0; +cnt = cnt + 1; +footer{cnt} = 'attr;MaxWaitTime;long;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;StartTime;long;0'; +cnt = cnt + 1; +footer{cnt} = 'attr;ErrorCounter;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_cmd=1 +% $sleep_after_cmd=1 +% $sleep_monitor=4 +% $devtime_attr= +% $devps001= +% $ps001state= +% $devps002= +% $ps002state= +% $devps003= +% ......... +