Расход-количество

Напомним, что объемный расход - это объем вещества, пройденого через заданую площадь сечение потока за единицу времени (например л/мин или м3/час). Массовый расход - соответсвенно масса вещества, пройденого через заданую площадь сечение потока за единицу времени (например кг/с, кг/час). Для измерения расхода используются расходомеры.
Суммарный объем (или массу) вещества пройденую за определенное время через заданую площадь сечение потока измеряют счетчиками.
Таким образом расходомеры измеряют мгновенное значение за единицу времени для оценки скорости потока, а счетчики - суммарное, для определения количества пройденного вещества.   
Современные расходомеры снабжены функциями интегрирования, а счетчики - функциями определения расхода. Однако иногда обходятся одним или другим без встроенных функций. Рассмотрим две задачи - получение суммарного количества вещества по показанию расходомера, и наоборот - получение мгновенного расхода, по счетчику. 
    
Задача. Суммирование общего объема по показанию расходомера.  
Постановка задачи и подходы к решению взяты с книги Эндрю Парра [Парр].
"Типичной операцией в промышленности является измерение расхода, и часто требуется подсчитать общий объем вещества, прошедшего за определённый промежуток времени. Это может быть потребуется для отчетности (общий объём газа за смену) или для обеспечения технологических норм процесса (добавить 25 литров продукта А, затем 50 литров продукта В)
Если расход F измеряется в л/мин, то это соответствует прохождению F/60 литров за каждую секунду. В общем случае, если показания расходомера снимаются через каждые delta_t секунд, то за время delta_t через данный участок пройдет delta_t*F/60 литров."
 
Решение 1. Метод прямоугольников. Это типичная операция интегрирования во времени. Самый простой вариант реализовать интегрирование - сумирование методом прямоугольников. Графическая интерпритация этого метода показана на рисунке:
 
То есть на каждом пересчете, через определенные интервалы времени, к общей сумме (суммарный объём) прибавляется delta_t*F/60 при измерении расходомером л/мин, или delta_t*F/3600 при измерении расходомером л/час:
Total_vol:=Total_vol+delta_t*F/3600 ;
При фиксированной delta_t=1с,  измерении расхода F в литрах/час, программа на FBD для расчёта общего объема будет выглядеть следующим образом:
 
Суммарный объём пересчитывается один раз в секунду, для чего используется битовый 1-секундный меандр %S6 (см пример) и функциональный блок F_TRIG для отлова заднего фронта. Таким образом, через каждую секунду будет вызываться блок ADD, и к TotalVol будет добавляться F/3600 (деление используется по той причине, что F измеряется в литр/час).
Если используется быстрый АЦП, и нужен точнее пересчет, вызов можно производить чаще. Кроме того, можно использовать метод трапеций, который является более точным.
 
Решение 2. Метод трапеций. Графическая интерпритация метода трапеций показана на рисунке:
  В данном случае используется среднее значение между текущим (F) и предыдущим значениями мгновенного расхода (Fprev):
Total_vol:=Total_vol+delta_t*((F+Fprev)/2)/3600 ; 
Данный вариант реализуем на ST: 
 
Следует отметить, что при расчете количества вещества по показаниям расходомера нужно учитывать, что из-за погрешности расходомера и всего канала измерения может оказаться, что сумарный объём за определенное время (например сутки) значительно отличается от истинного. По этому для точных подсчетов количества вещества нужно использовать счетчики, а не расходомеры.    
 
Задача. Работа с объёмным(массовым) счетчиком.
Типичным выходом для счетчиков является импульсный сигнал: 1 импульс - 1 единица объема (массы). Таким образом по переднему или по заднему фронту сигнала можно определить, что счетчик увеличил свое показание на одну единицу объема, например литр. Следует напомнить, что максимальная длительность цикла задачи, в которой нужно подсчитывать такие импульсы должна быть по крайней мере в 2 раза меньше, чем минимальная длительность импульса, иначе контроллер просто не будет успевать отлавливать все импульсы. Если же частота импульсов очень велика - придется использовать аппаратные счётные модули.
Решение. С использованием счетчиков.Для хранения значения суммарного объёма лучше всего использовать переменную типа UDINT (0-4294967295). Допустим, если  выход объёмного счётчика выдаёт импульс с каждым литром, то счетчик может накапливать до 4294967295 литров, или 4294967 м3. Для подсчета проще всего использовать счетчик типа CTU_UDINT. Например в LD это может выглядеть так:
 
 
Задача. Расчёт расхода по количеству.
Решение. Если используется счетчик с импульсным выходом, а нужно посчитать среднее значение расхода за определенный период, можно количество за этот период поделить на время периода. 
 F=(Total_vol-Total_vol_prev)/delta_t  
Следует учесть, что при очень маленьких delta_t точность расчета будет очень низкой, а при больших - инерционность будет очень большой. Так, например, если расход меняется 0-10 л/с, то счетчик может выдать импульс через каждые 0.1 секунды (если он настроен на 1импульс/1л). Если при этом delta_t=1 с, то дискретность значения будет 1/11 литра (0,1,2...10л). Если delta_t увеличить хотя бы до 1 минуты, то дискретность уже будет 1/60 литра, однако периодичность вызова не даст возможности использовать его в процессе регулирования. Таким образом это расход можно использовать только для контроля.  
Если delta_t= 60 с, Total_vol в литрах, а расход F нужен в л/час, то:
 F=(Total_vol-Total_vol_prev)/60  
В LD это можно записать так:
 
 [Парр] Программируемые контроллеры - руководство для инженера. Э.Парр
Comments