This is topic -за-сутки-месяц-год- in forum Языки программирования (IL/FBD) / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Необходимо вычислять сумму каналов за сутки месяц и год
Прицип работы чу сумируем значения канала за 24 часа в выходном канале накапливаются(суммируются) значения до 24 часов и передаются в седующую FBD программу которая суммирует за МЕСЯЦ и результат передается в седующую FBD программу которая суммирует за ГОД.
Входной канал - усредняет в течении часа!
Автономная отладка происходит нормально а при реальной работе в блоке "И" при наступлении нулей (условие обнуления)- на блоке умножения не прописывается ноль...
Где в программе наши ошибки? Возможно ли реализовать поставленую задачу более проще?
Среднее значение канала можно считать используя подтип КАНАЛ->Среднее. В настройке TIME задаётся время, за которое надо усреднять значение(1минута-1год). Однако есть небольшая тонкость-усреднённое значение обновляется только в 00 секунд и во время работы нельзя переводить время.
Posted by CONSAT (Участник № / Member № 51) on :
Именно этот канал на вход мы и подаем (усреднение за час)... Конечно понятно, что если проект был перезапущен, мы теряем усреднение канала за то время, когда он простаивал. Мы еще поставили параметр проекта "подчитывать при старте..."
Проблема в том, что при ручной проверке (усреднять за минуту) - все OK. А реально - нет сброса в ноль!! :-(((.
P.S. А как обратно ввести в проект *.frm в FBD????
Posted by Wizard (Участник № / Member № 109) on :
Для обнуления значения я написал FBD-программу. Обнуление происходит по заданному времени.Для этого использовались блоки time,==,sel. Если нужно могу выслать директом(нужен ваш email)в виде *.crm и кратким описанием. Насколько мне известно, файлы с расширением *.frm вставить нельзя.
Posted by Pentagon (Участник № / Member № 74) on :
Мы уже достаточно намучились Просим Вас Wizard выслать нам проект в котором: Есть минимум 5 каналов 1й - изменяется по любому закону 2й - промежуточный для среднего за час 3й - среднее за сутки 4й - среднее за месяц 5й - .. год
Канал типа КАНАЛ->Среднее->1год НЕ ПОДХОДИТ так как он появится по истечению целого года! А нам нужно видеть текущее среднее к примеру да 3 месяца. В конце года выдать отчет за текущий год и заново считать на следующий год.
Наш E-mail: consat@zp.ukrtel.net В ответ мы сразу вышлем наш проект с описаниями....
ЗЫ: Ну не позволяет форум увидеть email и темболее выложить файл (картинку, архив проекта)
Posted by CONSAT (Участник № / Member № 51) on :
Новая прблема! Необходимо производит усреднение параметров и дальнейше их суммирование. При этом накапливаемые значения (суммирующие) должны выдаваться в канал после каждого своего изменения.
Не происходит обнуление каналов, производящие суммирование усредненных значений за сутки, месяц, год.
Направляем Вам проект с данными: FBD - программы и привязка их к каналам:
канал "1"- это канал опрашивается 1 раз в 20 секунд; srednee - произодит расчет среднего значения канала 1 за 1 час и выдает результат 1 раз в час; summa_sutki - производит суммирование значений канала srednee, результат получаем 1 раз в час, обнуление происходит в конце суток; summa_mec - производит суммирование значений канала srednee, результат получаем 1 раз в час, обнуление происходит в конце месяца; summa_god - производит суммирование значений канала srednee, результат получаем 1 раз в час, обнуление происходит в конце года.
В процессе автономной отладки - все нормально, нормально и при периоде опроса каналов = 1сек. Как только программа привязана к каналам с периодами опроса 1 час обнуление не происходит. В чем наша недоработка?
Пример, как должен происходит расчет и выдача параметров в канал:
1час 2час ... 0:00 ..... конец месяца ......конец года канал 1 2,13,4,80,...6 ......... ...... ......... ........ srednee 140 138 89 130 0(67) summa_sutki 140 278 0(89) 0(130) 0(67) summa_mec 140 278 1345 0(130) 0(67) summa_god 140 278 1345 767890 0(67)
Проект не вашем ящике.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Мы рассмотрели ваш проект. Первое предположение состоит в том, что у Вас, безусловно, будет отставание в результатах, получаемых в каналах суммирования, на 1 цикл их обработки. Если их период обработки равен 1 секунде - на 1 секунду, если период равен 1 часу - на 1 час. Т.е., обнуления следует ждать не в 00:00:00, а в 01:00:00.
Связано это с тем, что Вы привязали FBD в процедуре УПРАВЛЕНИЕ каналов INPUT. У этих каналов сначала осуществляется преобразование ВХОДА в РЕАЛЬНОЕ, а затем просчитывается процедура УПРАВЛЕНИЕ, в которой у Вас присваивается значение атрибуту ВХОД.
Возможно, что, если Вы переведете эти процедуры в ТРАНСЛЯЦИЮ и выходы FBD передадите в атрибут РЕАЛЬНОЕ, ПРОБЛЕМА БУДЕТ СНЯТА.
Но я хотел бы предложить Вам иное,с моей точки зрения, более простое решение.
В качестве каналов суммирования возьмите стандартные каналы подтипа КАНАЛ_СУММА с соответствующими периодами суммирования (сутки/месяц/год) и периодами обработки 1 час. Их атрибуты ВЫХОД как раз и будут сумматорами с теми функциями, которые Вам нужны. А в РЕАЛЬНЫХ у них будут значения за предыдущие сутки/месяц/год.
Атрибуты ВЫХОД доступны и в математике, и в графике. Если же Вам необходимо именно эти значения архивировать, тогда создайте для каждого из них еще по одному каналу подтипа КАНАЛ_КОПИРОВАТЬ с настройками на атрибут ВЫХОД соответстующего канала суммирования.