Цитата Сообщение от energvk Посмотреть сообщение
Добрый день! Не могу разобраться. Пишу структуру уставок в файл. После перезагрузки плк уставки должны читаться из файла, либо при ошибке чтения сбрасываться на настройки по умолчанию. Всё работает, ошибок не отследил, но при перезагрузке настройки сбрасываются на "по умолчанию", хотя ошибок чтения файла нет. Может где-то что-то не правильно?

Код:
Код:
IF bd<>0 THEN bd:=0; END_IF;            (*&#200;&#237;&#232;&#246;&#232;&#224;&#235;&#232;&#231;&#224;&#246;&#232;&#255;*)
tim_strt (IN:=strt_plc , PT:=T#10s);                        (*&#232;&#237;&#232;&#246;&#232;&#224;&#235;&#232;&#231;&#224;&#246;&#232;&#255; &#241;&#242;&#224;&#240;&#242;&#224; &#239;&#235;&#234;*)
strt_plc:=tim_strt.q;                                    (*&#239;&#238; &#238;&#234;&#238;&#237;&#247;&#224;&#237;&#232;&#232; 10 &#241;&#229;&#234;&#243;&#237;&#228; &#239;&#238;&#241;&#235;&#229; &#241;&#242;&#224;&#240;&#242;&#224; &#241;&#237;&#232;&#236;&#224;&#229;&#236; &#244;&#235;&#224;&#227; &#226;&#234;&#235;&#254;&#247;&#229;&#237;&#232;&#255; &#239;&#232;&#242;&#224;&#237;&#232;&#255;*)
rtr_a220 (CLK:= avar_220v AND NOT tim_strt.q, Q=> );                    (*&#212;&#240;&#238;&#237;&#242; &#239;&#240;&#238;&#239;&#224;&#230;&#232; &#237;&#224;&#239;&#240;&#255;&#230;&#229;&#237;&#232;&#255;*)
rtr_strt (CLK:= strt_plc, Q=>);                            (*&#212;&#240;&#238;&#237;&#242; &#241;&#242;&#224;&#240;&#242;&#224; &#239;&#235;&#234;*)
IF hour=3 THEN period_save:=TRUE; END_IF;        (*&#202;&#224;&#230;&#228;&#251;&#229; &#241;&#243;&#242;&#234;&#232; &#226; 3 &#247;&#224;&#241;&#224; &#239;&#240;&#238;&#232;&#241;&#245;&#238;&#228;&#232;&#242; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#232;&#229; &#237;&#224;&#241;&#242;&#240;&#238;&#229;&#234;*)
rtr_psave (CLK:=period_save, Q=>);                    (*&#212;&#240;&#238;&#237;&#242; &#239;&#229;&#240;&#232;&#238;&#228;&#232;&#247;&#229;&#241;&#234;&#238;&#227;&#238; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#232;&#255;*)
(*bl_save(ENABLE:= TRUE, TIMELOW:= T#86399s, TIMEHIGH:= T#1s, OUT=> ); (*&#195;&#229;&#237;&#229;&#240;&#224;&#242;&#238;&#240; &#232;&#236;&#239;&#243;&#235;&#252;&#241;&#238;&#226; &#228;&#235;&#255; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#232;&#255; &#241; &#231;&#224;&#228;&#224;&#237;&#237;&#251;&#236; &#239;&#229;&#240;&#232;&#238;&#228;&#238;&#236;*)*)
rtr_bls(CLK:= rtr_psave.Q OR savebut, Q=> );        (*savebut - &#226; &#234;&#238;&#237;&#244;&#232;&#227;&#243;&#240;&#224;&#246;&#232;&#232;*)

IF rtr_strt.Q THEN                                (*&#197;&#241;&#235;&#232; &#239;&#235;&#234; &#226;&#234;&#235;&#254;&#247;&#232;&#235;&#241;&#255;*)
        bdstatus:=3;                            (*&#205;&#224;&#247;&#232;&#237;&#224;&#229;&#236; &#247;&#242;&#229;&#237;&#232;&#229; &#244;&#224;&#233;&#235;&#224;*)
    ELSIF (rtr_a220.Q OR rtr_bls.Q) AND bdstatus=0 THEN    (*&#197;&#241;&#235;&#232; &#239;&#238;&#255;&#226;&#232;&#235;&#241;&#255; &#241;&#232;&#227;&#237;&#224;&#235; &#232;&#241;&#247;&#229;&#231;&#237;&#238;&#226;&#229;&#237;&#232;&#255; &#237;&#224;&#239;&#240;&#255;&#230;&#229;&#237;&#232;&#255;, &#224; &#242;&#224;&#234;&#230;&#229; &#240;&#224;&#231; &#226; 24 &#247;&#224;&#241;&#224; &#232;&#235;&#232; &#239;&#238; &#237;&#224;&#230;&#224;&#242;&#232;&#254; &#234;&#238;&#239;&#234;&#232; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#232;&#255;*)
            bdstatus:=1;                        (*&#194;&#251;&#239;&#238;&#235;&#237;&#255;&#229;&#236; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#232;&#229;*)
END_IF;

CASE bdstatus OF
1:    (*&#209;&#238;&#245;&#240;&#224;&#237;&#255;&#229;&#236; &#242;&#229;&#234;&#243;&#249;&#232;&#229; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#255; &#226; &#241;&#242;&#240;&#243;&#234;&#242;&#243;&#240;&#243; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245;*)
bdsave.day_ust:=day_ust;
bdsave.night_ust:=night_ust;
bdsave.hh_day:=hh_day;
bdsave.mm_day:=mm_day;
bdsave.hh_night:=hh_night;
bdsave.mm_night:=mm_night;
bdsave.ddvh_off:=ddvh_off;
bdsave.ddvyh_max:=ddvyh_max;
bdsave.ddvh_max:=ddvh_max;
bdsave.Kp:=Kp;
bdsave.Ti:=Ti;
bdsave.pid_ust:=pid_ust;
bdsave.sbros:=sbros;
bdsave.t_sbros:=t_sbros;
bdsave.sbros_max:=sbros_max;
bdsave.sbros_count:=sbros_count;
bdsave.count_num:=count_num;
bdsave.ntp_yes:=ntp_yes;
bdsave.gmt:=gmt;
bdsave.listNum:=listNum;
bdstatus:=2;     (*&#209;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#232;&#229; &#228;&#224;&#237;&#237;&#251;&#245; &#226; &#244;&#224;&#233;&#235;*)

2: (*&#199;&#224;&#239;&#232;&#241;&#252; &#241;&#242;&#240;&#243;&#234;&#242;&#243;&#240;&#251; &#243;&#241;&#242;&#224;&#226;&#238;&#234; &#226; &#244;&#224;&#233;&#235;*)
    file:=SysFileOpen('sets.bin', 'w');                                            (*&#206;&#242;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#244;&#224;&#233;&#235; &#228;&#235;&#255; &#231;&#224;&#239;&#232;&#241;&#232;, &#229;&#241;&#235;&#232; &#244;&#224;&#233;&#235;&#224; &#237;&#229;&#242;, &#242;&#238; &#241;&#238;&#231;&#228;&#224;&#229;&#242;&#241;&#255; &#237;&#238;&#226;&#251;&#233;*)
    IF file=0 THEN error_rwfile:=TRUE;                                         (*&#206;&#248;&#232;&#225;&#234;&#224; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#255;/&#241;&#238;&#231;&#228;&#224;&#237;&#232;&#255; &#244;&#224;&#233;&#235;&#224;*)
    RETURN;                                                                    (*&#194; &#253;&#242;&#238;&#236; &#241;&#235;&#243;&#247;&#224;&#229; &#239;&#251;&#242;&#224;&#229;&#236;&#241;&#255; &#238;&#242;&#234;&#240;&#251;&#242;&#252; &#244;&#224;&#233;&#235; &#239;&#238;&#226;&#242;&#238;&#240;&#237;&#238;*)
    ELSE
    wr_byte:=SysFileWrite(file,ADR(bdsave),SIZEOF(bdsave));                (*&#207;&#238;&#235;&#243;&#247;&#224;&#229;&#236; &#234;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#231;&#224;&#239;&#232;&#241;&#224;&#237;&#237;&#251;&#245; &#225;&#224;&#233;&#242;*)
        IF wr_byte=SIZEOF(bdsave) THEN                                    (*&#197;&#241;&#235;&#232; &#240;&#224;&#226;&#237;&#238; &#240;&#224;&#231;&#236;&#229;&#240;&#243; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245;*)
        SysFileClose(file);                                                    (*&#199;&#224;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#244;&#224;&#233;&#235;*)
        bd.0:=SysFileClose(file);                                                (*&#212;&#235;&#224;&#227; - &#212;&#224;&#233;&#235; &#243;&#241;&#239;&#229;&#248;&#237;&#238; &#231;&#224;&#239;&#232;&#241;&#224;&#237; &#232; &#231;&#224;&#234;&#240;&#251;&#242;*)
        ELSE bd.1:=TRUE;                                                    (*&#212;&#235;&#224;&#227; - &#212;&#224;&#233;&#235; &#237;&#229; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;*)
        END_IF;
    END_IF;
    bdstatus:=0;                                                                (*&#199;&#224;&#239;&#232;&#241;&#252; &#238;&#234;&#238;&#237;&#247;&#229;&#237;&#224;*)

3: (*&#215;&#242;&#229;&#237;&#232;&#229;*)
    file:=SysFileOpen('sets.bin', 'r');                                            (*&#206;&#242;&#234;&#240;&#251;&#242;&#232;&#229; &#244;&#224;&#233;&#235;&#224; &#228;&#235;&#255; &#247;&#242;&#229;&#237;&#232;&#255;*)
        IF file=0 THEN                                                            (*&#206;&#248;&#232;&#225;&#234;&#224; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#255; &#244;&#224;&#233;&#235;&#224; (&#244;&#224;&#233;&#235; &#237;&#229; &#241;&#243;&#249;&#229;&#241;&#242;&#226;&#243;&#229;&#242;)*)
            bd.2:=TRUE;                                                        (*&#212;&#235;&#224;&#227; - &#205;&#229; &#237;&#224;&#233;&#228;&#229;&#237; &#244;&#224;&#233;&#235; &#241; &#243;&#241;&#242;&#224;&#226;&#234;&#224;&#236;&#232;*)
            bdstatus:=5;                                                        (*&#207;&#229;&#240;&#229;&#245;&#238;&#228; &#237;&#224; &#231;&#224;&#226;&#238;&#228;&#241;&#234;&#232;&#229; &#237;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#232;*)
        ELSE
            rd_byte:=SysFileRead(file,ADR(buf_bdsave),SIZEOF(buf_bdsave));    (*&#209;&#247;&#232;&#242;&#251;&#226;&#224;&#229;&#236; &#228;&#224;&#237;&#237;&#251;&#229; &#232;&#231; &#244;&#224;&#233;&#235;&#224; &#226; &#241;&#242;&#240;&#243;&#234;&#242;&#243;&#240;&#243; (&#226; &#225;&#243;&#244;&#229;&#240;)*)
        IF SIZEOF(buf_bdsave)=rd_byte THEN                                        (*&#197;&#241;&#235;&#232; &#244;&#224;&#233;&#235; &#241;&#247;&#232;&#242;&#224;&#237;*)
            SysFileClose(file);                                                        (*&#199;&#224;&#234;&#240;&#251;&#226;&#224;&#229;&#236; &#244;&#224;&#233;&#235;*)
(*            IF SysFileClose(file) THEN                                                (*&#212;&#224;&#233;&#235; &#243;&#241;&#239;&#229;&#248;&#237;&#238; &#231;&#224;&#234;&#240;&#251;&#242;*)*)
                bdstatus:=4;                                                            (*&#197;&#241;&#235;&#232; &#244;&#224;&#233;&#235; &#232;&#231;&#226;&#235;&#229;&#247;&#229;&#237; - &#234;&#238;&#239;&#232;&#240;&#243;&#229;&#236; &#226; &#225;&#224;&#231;&#243;*)
            ELSE
                bd.3:=TRUE;                                                            (*&#206;&#248;&#232;&#225;&#234;&#224; &#232;&#231;&#226;&#235;&#229;&#247;&#229;&#237;&#232;&#255; &#244;&#224;&#233;&#235;&#224;*)
                bdstatus:=5;                                                            (*&#209;&#225;&#240;&#238;&#241; &#237;&#224; &#231;&#224;&#226;&#238;&#228;&#241;&#234;&#232;&#229; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#251;*)
            (*END_IF;*)
        END_IF;
        END_IF;

4: (*&#209;&#238;&#245;&#240;&#224;&#237;&#255;&#229;&#236; &#225;&#243;&#244;&#229;&#240; &#226; &#242;&#229;&#234;&#243;&#249;&#243;&#254; &#241;&#242;&#240;&#243;&#234;&#242;&#243;&#240;&#243;*)
bdsave:=buf_bdsave;
bd.4:=TRUE;                                                                            (*&#205;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#232; &#243;&#241;&#239;&#229;&#248;&#237;&#238; &#241;&#238;&#245;&#240;&#224;&#237;&#229;&#237;&#251; *)
bdstatus:=0;

5: (*&#209;&#225;&#240;&#238;&#241; &#237;&#224; &#231;&#224;&#226;&#238;&#228;&#241;&#234;&#232;&#229; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#251;*)
bdsave.day_ust:=4;
bdsave.night_ust:=4;
bdsave.hh_day:=5;
bdsave.mm_day:=0;
bdsave.hh_night:=1;
bdsave.mm_night:=0;
bdsave.ddvh_off:=TRUE;
bdsave.ddvyh_max:=10;
bdsave.ddvh_max:=10;
bdsave.Kp:=0.01;
bdsave.Ti:=0.3;
bdsave.pid_ust:=25;
bdsave.sbros:=TRUE;
bdsave.t_sbros:=5;
bdsave.sbros_max:=5;
bdsave.sbros_count:=0;
bdsave.count_num:=1;
bdsave.ntp_yes:=TRUE;
bdsave.gmt:=2;
listNum[0]:=114555541;
listNum[1]:=0;
listNum[2]:=0;
listNum[3]:=0;
listNum[4]:=0;
bdsave.listNum:=listNum;
bd.5:=TRUE;                        (*&#205;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#232; &#241;&#225;&#240;&#238;&#248;&#229;&#237;&#251; &#237;&#224; &#231;&#224;&#226;&#238;&#228;&#241;&#234;&#232;&#229;*)
bdstatus:=2;
END_CASE

IF bdsave.day_ust=0 THEN                            (*&#194; &#241;&#235;&#243;&#247;&#224;&#229; &#237;&#243;&#235;&#229;&#226;&#238;&#227;&#238; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#255; &#228;&#237;&#229;&#226;&#237;&#238;&#233; &#243;&#241;&#242;&#224;&#226;&#234;&#232;*)
bdstatus:=5;                                    (*&#209;&#225;&#240;&#238;&#241; &#237;&#224; &#231;&#224;&#226;&#238;&#228;&#241;&#234;&#232;&#229; &#239;&#224;&#240;&#224;&#236;&#229;&#242;&#240;&#251;*)
END_IF;

IF bd.4 OR bd.5 THEN            (*&#197;&#241;&#235;&#232; &#237;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#232; &#241;&#225;&#240;&#238;&#248;&#229;&#237;&#251; &#237;&#224; &#231;&#224;&#226;&#238;&#228;&#241;&#234;&#232;&#229; &#232;&#235;&#232; &#243;&#241;&#239;&#229;&#248;&#237;&#238; &#232;&#231;&#226;&#235;&#229;&#247;&#229;&#237;&#251; &#232;&#231; &#244;&#224;&#233;&#235;&#224; - &#226;&#251;&#239;&#238;&#235;&#237;&#255;&#229;&#236; &#239;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#245;*)
day_ust:=bdsave.day_ust;
night_ust:=bdsave.night_ust;
hh_day:=bdsave.hh_day;
mm_day:=bdsave.mm_day;
hh_night:=bdsave.hh_night;
mm_night:=bdsave.mm_night;
ddvh_off:=bdsave.ddvh_off;
ddvyh_max:=bdsave.ddvyh_max;
ddvh_max:=bdsave.ddvh_max;
Kp:=bdsave.Kp;
Ti:=bdsave.Ti;
pid_ust:=bdsave.pid_ust;
sbros:=bdsave.sbros;
t_sbros:=bdsave.t_sbros;
sbros_max:=bdsave.sbros_max;
sbros_count:=bdsave.sbros_count;
count_num:=bdsave.count_num;
ntp_yes:=bdsave.ntp_yes;
gmt:=bdsave.gmt;
listNum:=bdsave.listNum;
bd.6:=TRUE;
END_IF;

IF bd.6 THEN                                    (*&#207;&#238;&#241;&#235;&#229; &#239;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#255; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#233; &#239;&#229;&#240;&#229;&#236;&#229;&#237;&#237;&#251;&#236;, &#238;&#242;&#239;&#240;&#224;&#226;&#235;&#255;&#229;&#236; &#232;&#245; &#237;&#224; &#239;&#224;&#237;&#229;&#235;&#252;*)
        p_hh:=hour;                            (*&#231;&#224;&#239;&#232;&#241;&#252; &#226; &#240;&#229;&#227;&#232;&#241;&#242;&#240;&#251; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#233; &#243;&#241;&#242;&#224;&#226;&#238;&#234; &#232; &#226;&#240;&#229;&#236;&#229;&#237;&#232; &#232;&#231; &#253;&#237;&#229;&#240;&#227;&#238;&#237;&#229;&#231;&#224;&#226;&#232;&#241;&#232;&#236;&#238;&#233; &#239;&#224;&#236;&#255;&#242;&#232;*)
        p_mm:=minute;
        p_ss:=second;
        p_dd:=day;
        p_mh:=month;
        p_yy:=year;
        p_hh_day:=hh_day;                    (*&#247;&#224;&#241;&#251; &#237;&#224;&#247;&#224;&#235;&#224; &#228;&#237;&#229;&#226;&#237;&#238;&#227;&#238; &#240;&#229;&#230;&#232;&#236;&#224;*)
        p_mm_day:=mm_day;                (*&#236;&#232;&#237;&#243;&#242;&#251; &#237;&#224;&#247;&#224;&#235;&#224; &#228;&#237;&#229;&#226;&#237;&#238;&#227;&#238; &#226;&#240;&#229;&#236;&#229;&#237;&#232;*)
        p_hh_night:=hh_night;                (*&#247;&#224;&#241;&#251; &#237;&#224;&#247;&#224;&#235;&#224; &#237;&#238;&#247;&#237;&#238;&#227;&#238; &#226;&#240;&#229;&#236;&#229;&#237;&#232;*)
        p_mm_night:=mm_night;                (*&#236;&#232;&#237;&#243;&#242;&#251; &#237;&#224;&#247;&#224;&#235;&#224; &#237;&#238;&#247;&#237;&#238;&#227;&#238; &#226;&#240;&#229;&#236;&#229;&#237;&#232;*)
        p_Pin:=Pin;                            (*&#226;&#245;&#238;&#228;&#237;&#238;&#229; &#228;&#224;&#226;&#235;&#229;&#237;&#232;&#229;*)
        p_Pout:=Pfact;                            (*&#226;&#251;&#245;&#238;&#228;&#237;&#238;&#229; &#228;&#224;&#226;&#235;&#229;&#237;&#232;&#229;*)
        p_day_ust:=day_ust;                    (*&#228;&#237;&#229;&#226;&#237;&#224;&#255; &#243;&#241;&#242;&#224;&#226;&#234;&#224; &#228;&#224;&#226;&#235;&#229;&#237;&#232;&#255;*)
        p_night_ust:=night_ust;                (*&#237;&#238;&#247;&#237;&#224;&#255; &#243;&#241;&#242;&#224;&#226;&#234;&#224; &#228;&#224;&#226;&#235;&#229;&#237;&#232;&#255;*)
        p_pid_ust:=pid_ust;                    (*&#226;&#251;&#245;&#238;&#228; &#226; &#226;&#238;&#235;&#252;&#242;&#224;&#245; &#241;&#232;&#227;&#237;&#224;&#235;&#224; &#243;&#239;&#240;&#224;&#226;&#235;&#229;&#237;&#232;&#255; &#241; &#240;&#229;&#227;&#243;&#235;&#255;&#242;&#238;&#240;&#224; &#239;&#240;&#232; &#237;&#229;&#232;&#241;&#239;&#240;&#224;&#226;&#237;&#238;&#241;&#242;&#232; &#196;&#196;&#226;&#251;&#245;.*)
        p_ddvh_off:=ddvh_off;                    (*&#232;&#241;&#234;&#235;&#254;&#247;&#229;&#237;&#232;&#229; &#226;&#245;&#238;&#228;&#237;&#238;&#227;&#238; &#196;&#196; &#232;&#231; &#224;&#226;&#224;&#240;&#232;&#233;&#237;&#238;&#227;&#238; &#238;&#239;&#238;&#226;&#229;&#249;&#229;&#237;&#232;&#255;*)
        p_ddvyh_max:=ddvyh_max;            (*&#236;&#224;&#234;&#241;&#232;&#236;&#224;&#235;&#252;&#237;&#238;&#229; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#229; &#226;&#251;&#245;&#238;&#228;&#237;&#238;&#227;&#238; &#228;&#224;&#242;&#247;&#232;&#234;&#224; &#228;&#224;&#226;&#235;&#229;&#237;&#232;&#255;*)
        p_ddvh_max:=ddvh_max;                (*&#236;&#224;&#234;&#241;&#232;&#236;&#224;&#235;&#252;&#237;&#238;&#229; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#229; &#226;&#245;&#238;&#228;&#237;&#238;&#227;&#238; &#228;&#224;&#242;&#247;&#232;&#234;&#224; &#228;&#224;&#226;&#235;&#229;&#237;&#232;&#255;*)
        p_Kp:=Kp;                                (*&#207;&#240;&#238;&#239;&#238;&#240;&#246;&#232;&#238;&#237;&#224;&#235;&#252;&#237;&#251;&#233; &#234;&#238;&#253;&#244;&#244;&#232;&#246;&#232;&#229;&#237;&#242; &#207;&#200;&#196;-&#240;&#229;&#227;&#243;&#235;&#255;&#242;&#238;&#240;&#224;*)
        p_Ti:=Ti;                                (*&#200;&#237;&#242;&#229;&#227;&#240;&#224;&#235;&#252;&#237;&#251;&#233; &#234;&#238;&#253;&#244;&#244;&#232;&#246;&#232;&#229;&#237;&#242; &#207;&#200;&#196;-&#240;&#229;&#227;&#243;&#235;&#255;&#242;&#238;&#240;&#224;*)
        p_count_num:=BYTE_TO_WORD(count_num);                        (*&#202;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#237;&#238;&#236;&#229;&#240;&#238;&#226;, &#237;&#224; &#234;&#238;&#242;&#238;&#240;&#238;&#229; &#237;&#243;&#230;&#237;&#238; &#238;&#242;&#239;&#240;&#224;&#226;&#232;&#242;&#252; &#224;&#226;&#224;&#240;&#232;&#233;&#237;&#251;&#229; &#241;&#238;&#238;&#225;&#249;&#229;&#237;&#232;&#255;*)
        p_sbros:=sbros;                        (*&#209;&#225;&#240;&#238;&#241; &#224;&#226;&#224;&#240;&#232;&#232; &#207;&#215; &#240;&#224;&#231;&#240;&#229;&#248;&#229;&#237;*)
        p_t_sbros:=t_sbros;                    (*&#199;&#224;&#228;&#229;&#240;&#230;&#234;&#224; &#226;&#240;&#229;&#236;&#229;&#237;&#232; &#239;&#229;&#240;&#229;&#228; &#241;&#225;&#240;&#238;&#241;&#238;&#236; &#224;&#226;&#224;&#240;&#232;&#232; &#207;&#215;*)
        p_sbros_max:=sbros_max;            (*&#204;&#224;&#234;&#241;&#232;&#236;&#224;&#235;&#252;&#237;&#238;&#229; &#234;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#239;&#238;&#239;&#251;&#242;&#238;&#234; &#241;&#225;&#240;&#238;&#241;&#224; &#224;&#226;&#224;&#240;&#232;&#232; &#207;&#215;*)
        p_sbros_count:=sbros_count;        (*&#202;&#238;&#235;&#232;&#247;&#229;&#241;&#242;&#226;&#238; &#239;&#238;&#239;&#251;&#242;&#238;&#234; &#241;&#225;&#240;&#238;&#241;&#224; &#224;&#226;&#224;&#240;&#232;&#232;*)
        p_ntp_yes:=ntp_yes;                    (*&#208;&#224;&#231;&#240;&#229;&#248;&#229;&#237;&#232;&#229; &#241;&#232;&#237;&#245;&#240;&#238;&#237;&#232;&#231;&#224;&#246;&#232;&#232; &#226;&#240;&#229;&#236;&#229;&#237;&#232; &#239;&#238; &#232;&#237;&#242;&#229;&#240;&#237;&#229;&#242;*)
        p_gmt:=gmt;                            (*&#215;&#224;&#241;&#238;&#226;&#238;&#233; &#239;&#238;&#255;&#241;*)
        phone_num1:=listNum[0];            (*&#207;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#239;&#229;&#240;&#226;&#238;&#227;&#238; &#242;&#229;&#235;&#229;&#244;&#238;&#237;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224;*)
        phone_num2:=listNum[1];            (*&#207;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#226;&#242;&#238;&#240;&#238;&#227;&#238; &#242;&#229;&#235;&#229;&#244;&#238;&#237;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224;*)
        phone_num3:=listNum[2];            (*&#207;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#242;&#240;&#229;&#242;&#252;&#229;&#227;&#238; &#242;&#229;&#235;&#229;&#244;&#238;&#237;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224;*)
        phone_num4:=listNum[3];            (*&#207;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#247;&#229;&#242;&#226;&#229;&#240;&#242;&#238;&#227;&#238; &#242;&#229;&#235;&#229;&#244;&#238;&#237;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224;*)
        phone_num5:=listNum[4];            (*&#207;&#240;&#232;&#241;&#226;&#238;&#229;&#237;&#232;&#229; &#239;&#255;&#242;&#238;&#227;&#238; &#242;&#229;&#235;&#229;&#244;&#238;&#237;&#237;&#238;&#227;&#238; &#237;&#238;&#236;&#229;&#240;&#224;*)
        bd:=0;
END_IF;

IF NOT pow THEN                        (*&#229;&#241;&#235;&#232; &#239;&#240;&#238;&#232;&#231;&#238;&#248;&#235;&#238; &#238;&#242;&#234;&#235;&#254;&#247;&#229;&#237;&#232;&#229; &#239;&#232;&#242;&#224;&#237;&#232;&#255;*)
    strt_plc:=TRUE;                        (*&#226;&#251;&#241;&#242;&#224;&#226;&#235;&#255;&#229;&#236; &#244;&#235;&#224;&#227; &#238;&#242;&#234;&#235;&#254;&#247;&#229;&#237;&#232;&#255; &#239;&#232;&#242;&#224;&#237;&#232;&#255;*)
END_IF;
siz:=SIZEOF(bdsave);                            (*&#208;&#224;&#231;&#236;&#229;&#240; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245;*)
siz_buf:=SIZEOF(buf_bdsave);
Коментарии очень помогли понять Ваш алгоритм