Вы можете настроить расходомер на 1л/импульс?
Как куда, в смысле, вес импульса(литров/имп) в числитель, время цикла программы(мс) в знаменатель!
Расходомер_2.png
Чтобы самому сделать надо иметь знания(примерно за 4 класс школы по математике), но если их нет, возьмите готовый проект, я же много раз выкладывал и вам уже и ссылки надавали, даже понять невозможно, в чём проблема, просто взять готовое, вот ещё раз выложу, а то по ссылке ещё не умеете ходить.
Период следования импульсов и расход.png
Период следования импульсов и расход.owle
Если Вы хотите измерять расход в кубометрах в час, тогда вместо константы "60000" поставьте константу "3600", всё!
Можно это сделать(менять константы) в виде выбора единицы измерения расхода!
Последний раз редактировалось Сергей0308; 20.02.2025 в 22:58.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Метод подсчета импульсов на время - плохая идея.
При минимальном периоде 30 сек за 600 сек (10м) проскочит 20 импульсов * 100 л * 6 (периодов пл 10 мин) = 12м3/ч
При максимальном периоде 40 сек за 600 сек проскочит 15 импульсов * 100л * 6 = 9м3/ч
Т.е. дискретность получается (12 - 9)/(20 - 15) = 0,6 м3/ч (т.е. всего 5 возможных значений в этом диапазоне!!!)
Т.к. у Вас ПР200 предлагаю использовать макрос на ST:
Который вычисляет частоту следования импульсов измеряя период между ними.Код:function_block freq var_input i : bool; end_var var_output Q : real; // Частота следавния импульсов end_var var rt : SYS.RTRIG; newTS, oldTS : udint; end_var rt(I:=i); if rt.Q then // На каждом фронте newTS := time_to_udint(get_time()); // Фиксируем системный таймер Q := udint_to_real(newTS - oldTS); // Фиксируем период между импульсами Q := 1000 / Q; oldTS := newTS; // Вычисляем частоту end_if end_function_block
Эту частоту Вы потом умножите на вес (0.1м3 * 3600 сек = 360 м3/ч) импульса и получите расход,
который будет вычисляться каждые 30 - 40 сек.
А если сделать 1л\импульс, то каждые 0.3 сек - это будет адекватно для глаз!!!
Последний раз редактировалось EFrol; 20.02.2025 в 19:18.
Снимок экрана 2025-02-27 155533.png
Вот что у меня получилось.
Разобрался я с горем пополам, со счетчиками, импульсам, циклами и.т.д. Главное работает.
Одно, мне не понятно, почему всегда изменчиво время цикла в пр200. вчера посмотрел, 8мс, сегодня утром 7мс, а сейчас уже 3, Завтра запилю в прибор. данными и наблюдениями поделюсь.
А как Вы определяете время цикла без заливки проекта в прибор?
Короче, надо залить проект в прибор и тогда посмотреть время цикла в меню прибора или в ОЛ, мне так кажется!
И время цикла не должно меняться, время цикла программы используется в формуле для подсчёта расхода, иначе будет неверно рассчитывать и в менеджере компонентов, мне кажется, был макрос определения времени цикла ПР!
И, зачем вес импульса на аналоговый вход заводить, сделайте энергонезависимую переменную и выведите на экран для редактирования.
Сумматор в знаменателе можно убрать, сделав "1" началом диапазона счётчика, я так в последнем варианте проекта сделал. Настройки макроса счётчика находятся в его свойствах.
И ещё, чуть не забыл, для вывода из ПР расхода через аналоговый выход сигнал(диапазон) надо привести к 0-1 и уже затем подать на аналоговый выход из программы!
Макрос преобразования диапазонов также имеется в менеджере компонентов!
Последний раз редактировалось Сергей0308; 27.02.2025 в 16:53.
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.