Сообщение от
kondor3000
Вы же сами всё обнуляете, например кусок кода
Код:
if i_nowDay <> l_day then
l_FlowDay := 0; // Зачем здесь обнуление?
l_day := i_nowDay;
end_if
Сначала присваиваете l_FlowDay := i_FlowDay; а потом в коде обнуляете l_FlowDay := 0;
// Зачем здесь обнуление? И так везде
Кусок кода с вычислениями расходов:
Код:
if i_Imp = TRUE then
l_flow := l_Flow + ((1 / 1000) * i_ImpMass);
l_FlowDay := l_FlowDay + ((1 / 1000) * i_ImpMass);
l_FlowHour := l_FlowHour + ((1 / 1000) * i_ImpMass);
l_FlowMonth := l_FlowMonth + ((1 / 1000) * i_ImpMass);
l_FlowYear := l_FlowYear + ((1 / 1000) * i_ImpMass);
end_if
Кусок кода со сравнениями переменных дат и времени для сброса когда надо:
Код:
if i_nowDay <> l_day then
l_FlowDay := 0;
l_day := i_nowDay;
end_if
if i_nowHour <> l_hour then
l_FlowHour := 0;
l_hour := i_nowHour;
end_if
if i_nowMonth <> l_month then
l_FlowMonth := 0;
l_month := i_nowMonth;
end_if
if i_nowYear <> l_year then
l_FlowYear := 0;
l_year := i_nowYear;
end_if
И каждый цикл программы в сравнениях(и просто в коде) происходит перезапись локальных переменных (которые, как я слышал, энергонезависимые).
Код:
l_Flow := i_Flow;
l_FlowYear := i_FlowYear;
l_FlowMonth := i_FlowMonth;
l_FlowDay := i_FlowDay;
l_FlowHour := i_FlowHour;
l_impMass:= i_ImpMass;
В таблице переменных все с галочкой на энергонезависимость, но оно все равно сбрасывается
P.S.: все переменные с i_ - входные, l_ - локальные, а выходные без префикса. Но да, комментариев в коде я оставил мало