Поставлена следующая задача: сделать расчет расхода газа за час,смену,день и месяц. Я нашел теоритическое рещение но реализовать не могу. Решение следующее: 1. Каждые 10 секунд Qтек (в кубометрах в час) делится на 6 и результат копится 2. В конце минуты (после 6 расчётов) накопленный результат делится на 60 (секунд), чтобы получить расход за минуту. 3. Расходы за минуту складываются и копятся раздельно за смену и за сутки (отдельные ячейки пямяти) 4. Когда по часам контроллера наступает время окончания смены (например 00:00), значение, накопленное за смену, переносится в ячейки расхода за смену с 16:00 до 00:00, а накопленный за смену расход обнуляется 5. В 23:59 текущая дата переписывается в ячейки, содержащие предыдущую дату (предыдущих суток) В 00:00 происходит перенос накопленного за сутки расхода в ячейки расхода за прошедшие сутки, тут же происходит прибавление суточного расхода к накопленной сумме за месяц, а суточный после этого обнуляется. 6. В случае, если в 00:00 происходит также и смена месяца, то значение, накопленное за месяц, переписывается в ячейки "расход за предыдущий месяц", а "расход за текущий месяц" обнуляется.ющее:
Извините за большое сообщение, если известны другие способы решения этой задачи пожалуйста предложите.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
У Вас показания счетчика в каких единицах измерения?
Posted by Vasiliy (Участник № / Member № 1488) on :
Расход газа показывает в м3/ч
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
По-моему проще сделать так: есть каналы подтипа КАНАЛ и доп. к подтипу Сумма. Каналу, который берет значение с датчика расхода, выставляется период пересчета 1 секунда. А на закон Трансляции вешаете программу перевода текущего значения м3/час в м3/сек. - просто деление на 3600. Создаете канал КАНАЛ_Сумма и настраиваете его на атрибут Реальное канала расхода с параметром Time\Mask=1 час. Его период пересчета также 1 секунда. Аналогично создаются каналы с параметром Time\Mask=1 день и 1 месяц. Они тоже с периодами 1 сек. Расчет расхода за смену тоже реализуется через канал подтипа КАНАЛ_Сумма, и тоже с периодом 1 секунда. Только необходимо дополнительно реализовать программу, которая будет по часам в начале смены сбрасывать флаг Подключение этого канала, а в конце смены выставлять этот флаг обратно, и после того как Реальное значение принимает значение Выхода сбрасывать Выход в ноль.
Posted by Vasiliy (Участник № / Member № 1488) on :
Спасибо, попробую. Ваша мысль интересная, о результатах сообщу.
Posted by tan (Участник № / Member № 285) on :
А не подскажите как можно организовать удобный просмотр часового и суточного расхода для оператора? Было бы хорошо и сумму за несколько часов работы посмотреть. И ещй вопрос: почему у меня дневной расход записывается в 02:00:00? я так понимаю сутки заканчиваюся в 00:00:00, тогда и должна быть запись о пердыдущих сутках.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Для tan. Для обсуждения путей решения Вашей задачи есть смысл сформулировать ее более подробно, возможно с примером Вашего проекта. Высылайте запрос с проектом на адрес техподдержки.
Posted by tan (Участник № / Member № 285) on :
Считается по выше приведенной схеме расход двух жидкостей. Считается часовой расход и дневной. Оператор должен посмотреть скока раствора израсходовали за последние два часа, или с начала суток. Лучше если можно отобразить сумму за выбранный интервал времени. Я незнаю как это сделать не выходя из окна МРВ(у оператора нет клавиатуры). Подскажите хотябы принцип как это сделать. Сервера документирования у нас нет.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Чтобы иметь возможность отображения массового расхода за произвольный промежуток времени, надо архивировать параметр, в котором считается суточный расход, а затем делать произвольные выборки из архива. "Не выходя из окна МРВ", без сервера документирования этого сделать нельзя. Можно было бы запустить другое приложение, которое через ODBC-драйвер (поставляется в составе Trace Mode 5) делало бы нужные выборки из архива, вычисляло бы нужные показатели и предоставляло бы их оператору. В качестве альтернативного решения можно предложить вычисление и хранение часовых расходов в течение суток в 12 отдельных каналах. Далее нужно написать относительно несложную FBD-программу, которая по заданию оператора будет суммировать значения каналов, начиная с k-го часа до r-го часа.