Я ничего не ставил. Имею то что досталось
Вид для печати
Вы можете настроить расходомер на 1л/импульс?
Как куда, в смысле, вес импульса(литров/имп) в числитель, время цикла программы(мс) в знаменатель!
Вложение 82090
Чтобы самому сделать надо иметь знания(примерно за 4 класс школы по математике), но если их нет, возьмите готовый проект, я же много раз выкладывал и вам уже и ссылки надавали, даже понять невозможно, в чём проблема, просто взять готовое, вот ещё раз выложу, а то по ссылке ещё не умеете ходить.
Вложение 82092
Вложение 82091
Если Вы хотите измерять расход в кубометрах в час, тогда вместо константы "60000" поставьте константу "3600", всё!
Можно это сделать(менять константы) в виде выбора единицы измерения расхода!
Метод подсчета импульсов на время - плохая идея.
При минимальном периоде 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 сек - это будет адекватно для глаз!!!
Вложение 82227
Вот что у меня получилось.
Разобрался я с горем пополам, со счетчиками, импульсам, циклами и.т.д. Главное работает.
Одно, мне не понятно, почему всегда изменчиво время цикла в пр200. вчера посмотрел, 8мс, сегодня утром 7мс, а сейчас уже 3, Завтра запилю в прибор. данными и наблюдениями поделюсь.
А как Вы определяете время цикла без заливки проекта в прибор?
Короче, надо залить проект в прибор и тогда посмотреть время цикла в меню прибора или в ОЛ, мне так кажется!
И время цикла не должно меняться, время цикла программы используется в формуле для подсчёта расхода, иначе будет неверно рассчитывать и в менеджере компонентов, мне кажется, был макрос определения времени цикла ПР!
И, зачем вес импульса на аналоговый вход заводить, сделайте энергонезависимую переменную и выведите на экран для редактирования.
Сумматор в знаменателе можно убрать, сделав "1" началом диапазона счётчика, я так в последнем варианте проекта сделал. Настройки макроса счётчика находятся в его свойствах.
И ещё, чуть не забыл, для вывода из ПР расхода через аналоговый выход сигнал(диапазон) надо привести к 0-1 и уже затем подать на аналоговый выход из программы!
Макрос преобразования диапазонов также имеется в менеджере компонентов!