Страница 2 из 8 ПерваяПервая 1234 ... ПоследняяПоследняя
Показано с 11 по 20 из 78

Тема: Расчет расхода воды

  1. #11

    По умолчанию

    Дело плевое. Запусти любой таймер. например TON (у таймера есть выход ET, на который выводится прошедшее время в мс, уставку таймера PT сделай несколько часов, чтобы таймер долго не срабатывал) и считай сколько времени прошло между соседними импульсами, далее делай пересчет в литр/час. Если цикл программы будет, например 2 мс, то погрешность измерения временных интервалов не будет превышать это значение (2 мс).
    Последний раз редактировалось Вольд; 26.04.2014 в 15:05.

  2. #12
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,490

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Фиксированный интервал времени не хотелось бы. Если он равен 1 минуте, то обновление редкое, хочется чем быстрее, тем лучше.
    Если взять допустим 30сек, то шаг будет в 120 литров!
    Если этот интервал = 10сек, то шаг будет в 360 литров!
    Чем больше интервал, тем меньше погрешность, но я хочу максимально маленький интервал обновления данных и максимально маленькую погрешность.
    Поэтому если считать время, между импульсами, то не плохо вышло б, но функц-го блока для этого не знаю.
    Какой вам ещё ФБ нужен? Я же вам сказал, на счётчик подавайте частоту, хотя бы 100 герц и сбрасывайте показания счётчика импульсами с водомера, а перед сбросом записывайте показания счётчика в буфер и потом уже с этими показаниями выполняйте любые математические операции.

  3. #13
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Почему бы не считать кубометры ? и потом обрабатывать время....
    пока отсчитаются очередные 1000 импульсов, столько можно обработать без всяких погрешностей.

  4. #14
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Чего ты сказки рассказываешь ? У тебя написано, что цена одного импульса - 1 литр/импульс. Это с какой частотой должен щелкать геркон, чтобы за 10 сек. набралось 360 литров ? Получается 36 раз в секунду. Бред какой-то.
    Уважаемый, вы не поняли суть проблемы.
    360 литров за час при 3 литрах за 30 секунд, А ШАГ БУДЕТ В 120 ЛИТРОВ, тоесть при 4 литрах за 30 секунд = 480 литров в час. Так, на пальцах понятно?

    Цитата Сообщение от Вольд Посмотреть сообщение
    Дело плевое. Запусти любой таймер. например TON (у таймера есть выход ET, на который выводится прошедшее время в мс, уставку таймера PT сделай несколько часов, чтобы таймер долго не срабатывал) и считай сколько времени прошло между соседними импульсами, далее делай пересчет в литр/час. Если цикл программы будет, например 2 мс, то погрешность измерения временных интервалов не будет превышать это значение (2 мс).
    Да, я упоминал об этом и хотел бы не использовать таким образом, т.к. считаю это костылем, но за ответ спасибо.

    Цитата Сообщение от Василий Кашуба Посмотреть сообщение
    Какой вам ещё ФБ нужен? Я же вам сказал, на счётчик подавайте частоту, хотя бы 100 герц и сбрасывайте показания счётчика импульсами с водомера, а перед сбросом записывайте показания счётчика в буфер и потом уже с этими показаниями выполняйте любые математические операции.
    И я же вам написал, что может есть готовые блоки? Считаю это тоже костылем.

    Цитата Сообщение от melky Посмотреть сообщение
    Почему бы не считать кубометры ? и потом обрабатывать время....
    пока отсчитаются очередные 1000 импульсов, столько можно обработать без всяких погрешностей.
    Это я могу дополнительно считать, для проверки данных и т.п., но не то.
    Вы не поняли суть проблемы. Нужно считать максимально быстро и максимально точно. Я считаю максимально быстрым - это время от импульса до импульса, быстрее расчитать не получится. Или я не прав?

    Цитата Сообщение от Валенок Посмотреть сообщение
    Так пойдет ?
    Код:
    FUNCTION_BLOCK flow
    (*
       Для обычных импульсных счетчиков с частотой < 50..100Гц.
       Для вменяемых пользователей с рабочим циклом 0..3мс (Гражданин помни : эмуляция - десятки мс)
       (C) Валенок, апрель 2014 
       Люблю печенки
    *)
    VAR_INPUT
    	impulse : BOOL;
    	tmax : TIME;   (*для обрыва асимптоты. Больше время - выше чуйствительность, но хуже ловля закрытия кранчиков*)
    	k : REAL;   (*л/имп*)
    END_VAR
    VAR_OUTPUT
    	q : REAL;   (*м3/ч*)
    END_VAR
    VAR_IN_OUT
    	liters : DWORD;   (*наработка целых литров, из внешнего ретайна*)
    END_VAR
    VAR
    	fix : R_TRIG;   (*ловим кокой-нить фронт импульса*)
    	period,   (*последний законченный межимпульсный интервал*)
    	peri,   (*текущий незаконч..*)
    	t : TIME;   (*временная отметка*)
    	c : BYTE;   (*на подумать самому*)
    	rem : REAL;   (*k - real, liters - dword, нам пох*)
    END_VAR
    
    
    (*порядок выполнения выделенных групп особого значения не имеет*)
    
    peri := TIME() - t;
    c := SEL(peri > tmax, c, 0);   (*самореинициализация, если чо*)
    
    
    fix(clk := impulse);
    IF fix.q THEN
     	period := peri;
     	t := TIME();
     	c := MIN(2,c + 1);
    	rem := rem + k;
    	liters := liters + REAL_TO_DWORD(rem);   (*расчет редкий, промежуточное сохранение не нужно*)
    	rem := rem - REAL_TO_DWORD(rem);
    END_IF
    
    
    IF c = 2 THEN
     	IF peri >= period THEN
    		q := k * 3600 / TIME_TO_DWORD(peri);   (*расчет делается только по необходимости - импульс и асимптота*)
    	END_IF
    ELSE
    	q := 0;
    END_IF
    PS
    Вот почему тут TAB'ы не любят ?
    Вам отдельное спасибо, буду разбираться в коде.

  5. #15
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,490

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    ...И я же вам написал, что может есть готовые блоки? Считаю это тоже костылем...
    Я вам подсказал идею, как реализовать вашу задачу.
    Валенок дал вам готовый код. Если вы не хотите сами писать программу и вам нужны только готовые решения, то так и напишите. Костыли нужны ФБ не имеющим нужных вам свойств, я вам никаких ФБ не предлагал.

  6. #16
    Пользователь
    Регистрация
    22.02.2013
    Адрес
    RZN
    Сообщений
    958

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    Я считаю максимально быстрым - это время от импульса до импульса
    --- можно в два раза быстрее - между фронтами импульса ... может быть ещё быстрее - зависит от скважности импульса с датчика

  7. #17

    По умолчанию

    Цитата Сообщение от AVF Посмотреть сообщение
    --- можно в два раза быстрее - между фронтами импульса ...
    Это же надо такое написать. Каждый импульс имеет фиксированный вес - N литров/импульс. Приход каждого импульса означает, что за интервал времени между предыдущим и текущим импульсами расход составил N литров. Т.е. для того чтобы сделать пересчет в м куб./час над мерить не длительность импульса (погрешность будет высокая), а интервал времени между двумя соседними импульсами. А вот интервал времени между двумя соседними импульсами есть величина переменная и является функцией расхода.
    Последний раз редактировалось Вольд; 30.04.2014 в 17:41.

  8. #18
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,490

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Это же надо такую глупость написать. Каждый импульс имеет фиксированный вес - N литров/импульс. Приход каждого импульса означает, что за интервал времени между предыдущим и текущим импульсом расход составил фиксированную величину N литров. Т.е. для того чтобы сделать пересчет в м куб./час над мерить не длительность импульса, а интервал времени между двумя соседними импульсами. А вот интервал времени между двумя соседними импульсами величина переменная.
    Совершенно верно и делить 1 час на полученный интервал времени, тогда получим расход л/час.
    Быстрее не получится.

  9. #19

    По умолчанию

    Цитата Сообщение от Василий Кашуба Посмотреть сообщение
    Совершенно верно и делить 1 час на полученный интервал времени, тогда получим расход л/час.
    Быстрее не получится.
    Не просто поделить, а еще умножить на цену импульса.

  10. #20
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,490

    По умолчанию

    Цитата Сообщение от Вольд Посмотреть сообщение
    Не просто поделить, а еще умножить на цену импульса.
    В первом посте указана цена 1 литр/импульс.

Страница 2 из 8 ПерваяПервая 1234 ... ПоследняяПоследняя

Похожие темы

  1. Накопленное значение расхода
    от Lukasevich в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 28.01.2013, 11:49
  2. ФБ расчет и long
    от LordN в разделе Master SCADA 3
    Ответов: 1
    Последнее сообщение: 07.03.2012, 08:07
  3. регулятор расхода клея
    от antey в разделе Подбор Оборудования
    Ответов: 9
    Последнее сообщение: 02.03.2010, 00:27
  4. Регулирование расхода
    от DeMax в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 18.06.2009, 12:49
  5. Ответов: 2
    Последнее сообщение: 14.05.2009, 11:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •