
Сообщение от
Stenzigan
Всех приветствую! Не судите строго. Пытаюсь работать в MS4D без года, - неделю.)
Имеем архив переменной (счётчик кол-ва изделий), запись-сохранение "по изменению значения". Из данного архива требуется вычитать ежечасную производительность (сколько изделий - шт.) было сделано за каждый час в течении 12 часовой смены, а затем разложить эти 12 значений в виде таблицы по отдельным ячейкам в "текстовый вывод". Для чтения каждого из 12 интервалов архива, использую ОТДЕЛЬНЫЕ ФБ READ_ARCHIVE_DATA с указанием диапазона равного 1-му часу. Например с 07.00 до 08.00 один ФБ, с 08.00 до 09.00 второй ФБ, и т.д. Понимаю, что при обработке таким неоптимальным образом, система перегружена лишними вызовами ОТДЕЛЬНЫХ функциональных блоков и работает не оптимально. Это заметно и по торможению среды разработки, особенно в режиме отладки.
Имею опыт в написании функциональных блоков на языке СИ, и весь функционал реализовал бы на основе конструкции for(init-expression;cond-expression;loop-expression)statement; и указателях. Нужно: в цикле -> установили для READ_ARCHIVE_DATA параметры Begin и End, забрали значение из Values, отобразили его в элементе "текстовый вывод", далее смещаемся в Begin и End на час позже и передаем следующее значение в рядом стоящий элемент "текстовый вывод" НО! Как организовать передачу считанного значения из ФБ READ_ARCHIVE_DATA на следующий элемент текстового вывода? Как это красиво реализовать на FBD, используя только один блок чтения архивных данных, я не втыкаю. Может считать весь архив за смену, а потом работать со структурными данными? Но где тогда взять метку времени архива для выделения необходимых временных отрезков? HelpMePlease!
Скрины на FBD прилагаю.