Просмотр полной версии : Подсчет мгновенного расхода жидкости от импульсов.
Всем доброго времени суток. Знаю, что на форуме данная тема уже плавала и насчет ПР и насчет ПЛК, но в тех темах просветления достичь не вышло.
Задача такая:
С расходомера приходит импульс, у которого имеется своя цена. Требуется высчитывать мгновенный расход(Кубы/с желательно) и параллельно записывать данные для подведения суточных итогов(сколько воды улетело за день).
Если у кого-то имеется информация в картинках или в виде шаблона, был бы премного благодарен.
Проект выполняется на Овен ПР200-24-2(4).х.х.
Также вопрос для общего проф. развития:
Есть подключение Сухой контакт и Открытый Коллектор. Исходя из того, что вычитал в интернете, Сухой контакт дает нам сигнал подачей напряжения, то есть нет напряжения - 0, есть напряжение - 1. Открытый же коллектор наоборот, 0 - при напряжении, 1 - когда напряжение пропало. Верно ли направление мысли по данному вопросу или как это правильно понять прожженному самовару?
Поищите в этом разделе по слову "расход".
Нет, направление не верное: сухой контакт и открытый коллектор - это варианты конструктивного исполнения выхода, а не логики его работы
Поищите в этом разделе по слову "расход".
Выискал вот такое решение:
https://owen.ru/forum/showthread.php?t=27715
https://owen.ru/forum/attachment.php?attachmentid=34194&d=1511022305
тут Сергей0308, вроде бы, понятное решение показал. Только боюсь ошибиться насчет переводов величин. Там у него кубы/час, то есть для секунд или минут требуется поменять значение "60"? Только вот в какую сторону не могу сообразить, тк формула не вырисовывается
kondor3000
26.12.2022, 13:13
Выискал вот такое решение:
https://owen.ru/forum/showthread.php?t=27715
https://owen.ru/forum/attachment.php?attachmentid=34194&d=1511022305
тут Сергей0308, вроде бы, понятное решение показал. Только боюсь ошибиться насчет переводов величин. Там у него кубы/час, то есть для секунд или минут требуется поменять значение "60"? Только вот в какую сторону не могу сообразить, тк формула не вырисовывается
Не поменять значение, а итог надо посчитать, из кубов в час перевести .
Делите на 60 будут кубы в минуту, делите на 3600 будут кубы в секунду
Сергей0308
26.12.2022, 13:14
Всем доброго времени суток. Знаю, что на форуме данная тема уже плавала и насчет ПР и насчет ПЛК, но в тех темах просветления достичь не вышло.
Задача такая:
С расходомера приходит импульс, у которого имеется своя цена. Требуется высчитывать мгновенный расход(Кубы/с желательно) и параллельно записывать данные для подведения суточных итогов(сколько воды улетело за день).
Если у кого-то имеется информация в картинках или в виде шаблона, был бы премного благодарен.
Проект выполняется на Овен ПР200-24-2(4).х.х.
Также вопрос для общего проф. развития:
Есть подключение Сухой контакт и Открытый Коллектор. Исходя из того, что вычитал в интернете, Сухой контакт дает нам сигнал подачей напряжения, то есть нет напряжения - 0, есть напряжение - 1. Открытый же коллектор наоборот, 0 - при напряжении, 1 - когда напряжение пропало. Верно ли направление мысли по данному вопросу или как это правильно понять прожженному самовару?
Примерно как-то так:
64825
Много раз подобное обсуждалось!
Спасибо большое за ответы, будем тестировать, смотреть.
Может тоже когда-нибудь преисполнюсь, буду сидеть помогать на форумах :D
Сергей0308
26.12.2022, 22:11
Спасибо большое за ответы, будем тестировать, смотреть.
Может тоже когда-нибудь преисполнюсь, буду сидеть помогать на форумах :D
Так математику нужно знать на уровне школьной программы, тогда бы проблем не возникло, короче, эту тему посмотрите и возьмите, что надо, только сами ничего не делайте, боюсь всё загубите: https://owen.ru/forum/showthread.php?t=36400&page=4
Примерно как-то так:
64825
Много раз подобное обсуждалось!
Как-то пробы завели совсем в тупик.
1) Почему вес импульса делят именно на 60000?
2) Что означает переменная "цикл"?
На этом решении
https://owen.ru/forum/attachment.php?attachmentid=34194&d=1511022305
словил какую-то непонятку. В режиме симуляции отказываются нажиматься входы, но раньше такого не было, и при установке последней версии не ушло (баг или нет? проект собран под пр200-24-2(4)).
И, если есть вариант,можно ссылку на учебник физики или математики с данной темой. Программистам в техникумах физику не дают, заставляют сайтики клепать :)
Сергей0308
29.12.2022, 21:25
Как-то пробы завели совсем в тупик.
1) Почему вес импульса делят именно на 60000?
2) Что означает переменная "цикл"?
На этом решении
https://owen.ru/forum/attachment.php?attachmentid=34194&d=1511022305
словил какую-то непонятку. В режиме симуляции отказываются нажиматься входы, но раньше такого не было, и при установке последней версии не ушло (баг или нет? проект собран под пр200-24-2(4)).
И, если есть вариант,можно ссылку на учебник физики или математики с данной темой. Программистам в техникумах физику не дают, заставляют сайтики клепать :)
Вам какую ссылку, сколько минут в часе или секунд или сколько литров в одном кубометре?
Я Вам ссылку на тему дал, там три страницы, в смысле, всего три страницы!!! Там как раз обсуждался цикл и где его брать!
В чём проблема, может ещё(для начала) ссылку на букварь прикрепить?!
Если по картинке, можно было и у первоклашек спросить, короче это не деление, а умножение, прошу не путать, у Вас в техникуме все умножение с делением путают или только Вы?
Короче в минуте 60 секунд(приходится восполнять пробелы знаний) в миллисекундах это "60000"!
Разве по этим ссылкам(что там можно найти) нет проектов?
Я же там писал, расход это обратная величина от периода следования импульсов, какие здесь могут быть сомнения?
И ещё, чуть не забыл, никто Вас не принуждает, хотите прочитайте, не хотите - не читайте, а то скажете, что Вас заставили!
Да, что-то ступил, не заметил уточнений в той теме. В плане написания успешно. Только сейчас прогоняю через симуляцию и как-то счет не очень идет. 64944
Ощущение, что просто отреагировать не успевает. То есть выделенный блок тупиковым кажется. Или это приколы режима симуляции?
Сергей0308
29.12.2022, 22:21
Да, что-то ступил, не заметил уточнений в той теме. В плане написания успешно. Только сейчас прогоняю через симуляцию и как-то счет не очень идет. 64944
Ощущение, что просто отреагировать не успевает. То есть выделенный блок тупиковым кажется. Или это приколы режима симуляции?
Это в симуляции так всё сильно тормозит, вы в железе пробуйте, в смысле на ПР!
Если для вычисления цикла программы макрос из менеджера компонентов поставили, тем более в симуляции кроме лабуды больше ничего не будет!
Вы главное настройки макроса "CTMU" перенесите в свой проект(из моего), находятся в свойствах макроса!
И, вообще, или мой проект переделывайте или надо быть внимательным, повторять как у меня в проекте, в смысле сброс этого самого счётчика "CTMU" происходит только через цикл после прихода импульса со счётчика, у Вас сразу, Вы решили упростить, короче, с такими вашими упрощениями век удачи не видать!
Макрос сохранил отдельным файлом, чтоб подробнее разобраться и на будущее. Спасибо большое за разжевывание)
На рабочем месте допилю, чтобы имитировать работу импульсника в железо и буду тестировать
Потестировал на ПРке, прогресс есть, выводит не 0.
Только теперь выводит максимально возможное число(360.00)
По режиму онлайн-отладки и просто на железе складывается ощущение, что не срабатывает передний триггер.
в CTMU все правильно, минимум - 0, максимум - 31.
То, что значения отличаются от изначального, это эксперименты с литрами\кубами, минутами\часами
Сергей0308
20.01.2023, 12:23
Потестировал на ПРке, прогресс есть, выводит не 0.
Только теперь выводит максимально возможное число(360.00)
По режиму онлайн-отладки и просто на железе складывается ощущение, что не срабатывает передний триггер.
в CTMU все правильно, минимум - 0, максимум - 31.
То, что значения отличаются от изначального, это эксперименты с литрами\кубами, минутами\часами
А почему Вы думаете, что так правильно, Вы смотрели настройки макроса(счётчика циклов) CTMU в моём проекте?
Без правильных настроек, макрос может не выполнять заданную функцию и зачем нужны ваши догадки и предположения если можно посмотреть?
Короче, максимальное значение счётчика лучше сделать максимально возможным, равным 4*294*967*295.
Очень странно, можно было почти за месяц найти 1-2 минуты чтобы настройки посмотреть?!
65294
При этом на всякие предположения времени не жалко!
И если минимальное значение вздумаете назначить равным единице(вместо ноля), то ваш проект немного упростится, в смысле, нужно будет убрать сумматор в вашем проекте! Подобно как на выложенной мной картинке!
kondor3000
11.02.2025, 20:36
Где найти макрос CTMU
https://owen.ru/forum/showthread.php?t=36466&page=2
Спасибо. Может у кого-то есть готовая схемка или макрос мгновенного расхода?
Сергей0308
11.02.2025, 21:42
Спасибо. Может у кого-то есть готовая схемка или макрос мгновенного расхода?
Чем Вас не устраивает то, на что Вам ссылку дали: https://owen.ru/forum/showthread.php?t=36466
Или Вы не смотрели?
Рогов Алексей
13.02.2025, 07:00
Добрый день! Использовать аналоговый сигнал расходомер - пр никто не решался?
In_Da_Cher_A
13.02.2025, 10:16
Добрый день! Использовать аналоговый сигнал расходомер - пр никто не решался?для чего использовать?
Сергей0308
13.02.2025, 10:21
Добрый день! Использовать аналоговый сигнал расходомер - пр никто не решался?
В смысле, ясно можно мысли оформить?
Использовать аналоговый выход ПР в качестве сигнала расхода(аналогично как на расходомерах) никто не запрещает, тогда из счётчика с импульсным выходом + ПР = расходомер получится!
Идея отлична, как то обычно всегда есть большое НО. Стоил бы он не дорого, проблем не было б. А так как обычно заказчик не может поменять водомер ввиду стоимости и недостатка ресурсов. Поэтому и приходиться выкручиваться
Товарищи помогайте. прилепил вышеупомянутую логику подсчета расхода. получилась такая тема, при использовании в симуляции блинк все четко считает и итог и расход, а запилил в ПР считает итог нормально, а расход раз в 14 меньше.82081 82082
а вес импульса не участвует? как-то оторван от всего.
Сергей0308
20.02.2025, 16:12
а вес импульса не участвует? как-то оторван от всего.
В смысле, если в формуле стоит, значит участвует!
Вы наверно под словом участвует, что-то другое имеете ввиду, типа воду таскает или дрова колет, мне так кажется!
Товарищи помогайте. прилепил вышеупомянутую логику подсчета расхода. получилась такая тема, при использовании в симуляции блинк все четко считает и итог и расход, а запилил в ПР считает итог нормально, а расход раз в 14 меньше.82081 82082
А какая у Вас ПР-ка?
Сергей0308
20.02.2025, 16:29
А какая у Вас ПР-ка?
Тогда и я добавлю, как Вы определили цикл программы?
вход "Вес импульса" ни к чему не подключен - зачем он тогда ? смотрю на картинку макроса.
Вес импульса 100литров. далее перевел л\мин в м в кубе
Тогда и я добавлю, как Вы определили цикл программы?
Цикл, имеется ввиду временное расстояние между импульсами?
Цикл, имеется ввиду временное расстояние между импульсами?
Да. Минимально возможный период в мс Вам известен?
Или максимальная производительность (например, литров/сек)?
Да. Минимально возможный период в мс Вам известен?
Или максимальная производительность (например, литров/сек)?
цена импульса 100л, приблизительный расход 10м3/час, это примерно 166л/м. следовательно, расстояние между импульсами примерно 30-35сек.
минимум 30сек, максимум 40сек
Сброс расхода на ноль происходит через 600сек
Сергей0308
20.02.2025, 18:22
ПР200 у меня
Тогда Вам проще будет, в смысле, время цикла программы сделать в виде энергонезависимой переменной и вывести на экран для редактирования и можно "два раза не вставать", в смысле, после заливки проекта в ПР200 в меню пользователя посмотреть это время(в мс) и ввести значение в заранее предусмотренную переменную, это я самый простой вариант привел, для начала можно на нём остановиться!
Сергей0308
20.02.2025, 18:30
цена импульса 100л, приблизительный расход 10м3/час, это примерно 166л/м. следовательно, расстояние между импульсами примерно 30-35сек.
Да, уж, в смысле, наверно лучше подобрать счётчик под ваш расход, Вы, вероятно, что было или что первое попалось поставили?
Тогда Вам проще будет, в смысле, время цикла программы сделать в виде энергонезависимой переменной и вывести на экран для редактирования и можно "два раза не вставать", в смысле, после заливки проекта в ПР200 в меню пользователя посмотреть это время(в мс) и ввести значение в заранее предусмотренную переменную, это я самый простой вариант привел, для начала можно на нём остановиться!
Время цикла 6мс
Да, уж, в смысле, наверно лучше подобрать счётчик под ваш расход, Вы, вероятно, что было или что первое попалось поставили?
Я ничего не ставил. Имею то что досталось
Тогда Вам проще будет, в смысле, время цикла программы сделать в виде энергонезависимой переменной и вывести на экран для редактирования и можно "два раза не вставать", в смысле, после заливки проекта в ПР200 в меню пользователя посмотреть это время(в мс) и ввести значение в заранее предусмотренную переменную, это я самый простой вариант привел, для начала можно на нём остановиться!
Время цикла выяснил, куда его нужно прилепить? Если честно, я пока валенок во всей этой системе. Вот учусь.
Вы можете настроить расходомер на 1л/импульс?
Сергей0308
20.02.2025, 19:02
Время цикла выяснил, куда его нужно прилепить? Если честно, я пока валенок во всей этой системе. Вот учусь.
Как куда, в смысле, вес импульса(литров/имп) в числитель, время цикла программы(мс) в знаменатель!
82090
Чтобы самому сделать надо иметь знания(примерно за 4 класс школы по математике), но если их нет, возьмите готовый проект, я же много раз выкладывал и вам уже и ссылки надавали, даже понять невозможно, в чём проблема, просто взять готовое, вот ещё раз выложу, а то по ссылке ещё не умеете ходить.
82092
82091
Если Вы хотите измерять расход в кубометрах в час, тогда вместо константы "60000" поставьте константу "3600", всё!
Можно это сделать(менять константы) в виде выбора единицы измерения расхода!
Вы можете настроить расходомер на 1л/импульс?
Механику вряд ли получиться настроить.
Метод подсчета импульсов на время - плохая идея.
При минимальном периоде 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, Завтра запилю в прибор. данными и наблюдениями поделюсь.
Сергей0308
27.02.2025, 13:30
А как Вы определяете время цикла без заливки проекта в прибор?
Короче, надо залить проект в прибор и тогда посмотреть время цикла в меню прибора или в ОЛ, мне так кажется!
И время цикла не должно меняться, время цикла программы используется в формуле для подсчёта расхода, иначе будет неверно рассчитывать и в менеджере компонентов, мне кажется, был макрос определения времени цикла ПР!
И, зачем вес импульса на аналоговый вход заводить, сделайте энергонезависимую переменную и выведите на экран для редактирования.
Сумматор в знаменателе можно убрать, сделав "1" началом диапазона счётчика, я так в последнем варианте проекта сделал. Настройки макроса счётчика находятся в его свойствах.
И ещё, чуть не забыл, для вывода из ПР расхода через аналоговый выход сигнал(диапазон) надо привести к 0-1 и уже затем подать на аналоговый выход из программы!
Макрос преобразования диапазонов также имеется в менеджере компонентов!
...
И время цикла не должно меняться
Время цикла может прыгать если в программе будут макросы на ST
А как Вы определяете время цикла без заливки проекта в прибор?
Короче, надо залить проект в прибор и тогда посмотреть время цикла в меню прибора или в ОЛ, мне так кажется!
И время цикла не должно меняться, время цикла программы используется в формуле для подсчёта расхода, иначе будет неверно рассчитывать и в менеджере компонентов, мне кажется, был макрос определения времени цикла ПР!
И, зачем вес импульса на аналоговый вход заводить, сделайте энергонезависимую переменную и выведите на экран для редактирования.
Сумматор в знаменателе можно убрать, сделав "1" началом диапазона счётчика, я так в последнем варианте проекта сделал. Настройки макроса счётчика находятся в его свойствах.
И ещё, чуть не забыл, для вывода из ПР расхода через аналоговый выход сигнал(диапазон надо привести к 0-1 и уже затем подать на аналоговый выход из программы!
Макрос преобразования диапазонов также имеется в менеджере компонентов!
У меня уже залитый, только время цикла посмотрел в программе вписал константу 8мс. А она имеет свойство меняться. из-за этого расход не верный. чтоб б не быть голословным, я расход сначала проверил тепловычислителем. расход стабильный, со скважины как иначе то. Короче расход составлял 10,35-10,5 м3/час. А на пр200 расход, конечно большую часть времени стабильный 10,4. Но может упасть до 9 или подняться до 12. Поэтому решил что надо через циклтайм делать
А как Вы определяете время цикла без заливки проекта в прибор?
Короче, надо залить проект в прибор и тогда посмотреть время цикла в меню прибора или в ОЛ, мне так кажется!
И время цикла не должно меняться, время цикла программы используется в формуле для подсчёта расхода, иначе будет неверно рассчитывать и в менеджере компонентов, мне кажется, был макрос определения времени цикла ПР!
И, зачем вес импульса на аналоговый вход заводить, сделайте энергонезависимую переменную и выведите на экран для редактирования.
Сумматор в знаменателе можно убрать, сделав "1" началом диапазона счётчика, я так в последнем варианте проекта сделал. Настройки макроса счётчика находятся в его свойствах.
И ещё, чуть не забыл, для вывода из ПР расхода через аналоговый выход сигнал(диапазон надо привести к 0-1 и уже затем подать на аналоговый выход из программы!
Макрос преобразования диапазонов также имеется в менеджере компонентов!
В этом то и проблема, что время цикла меняется. Вес импульса сделан в переменную для редакции только с экрана, ну либо с программы как по умолчанию. и немного не понял про сумматор "1" что вы понимаете под началом диапазона счетчика? А я не выводил расход на аналоговый выход.
Время цикла может прыгать если в программе будут макросы на ST
А они у меня имеются в основной программе
Сергей0308
27.02.2025, 17:07
Тогда плохо, в смысле, ранее представители Овена заверяли, что время цикла программы стабильно, не знаю, может их планы поменялись, в смысле, решили взять свои слова взад?!
Тогда плохо, в смысле, ранее представители Овена заверяли, что время цикла программы стабильно, не знаю, может их планы поменялись, в смысле, решили взять свои слова взад?!
Но в программе и написано, когда смотришь, что время цикла "Среднее"
А насколько важно привязываться именно к циклу ПРки? Можно же просто сделать тики через каждые 50 мс или 100 мс
Здравствуйте! Подскажите, а с чем может быть связана небольшая неточность в вычислении расхода?
Причем первые несколько импульсов считает правильно
85494
Сергей0308
31.08.2025, 00:15
Здравствуйте! Подскажите, а с чем может быть связана небольшая неточность в вычислении расхода?
Причем первые несколько импульсов считает правильно
85494
В симуляции макрос вычисления времени цикла программы из менеджера компонентов не работает, в смысле, для симуляции задайте это значения константой или переменной!
Короче, в симуляции проверить точность вычислений проблематично, проверяйте на железе(практике)!
Здравствуйте! Подскажите, а с чем может быть связана небольшая неточность в вычислении расхода?
Причем первые несколько импульсов считает правильно
85494
Думаю, проблема в погрешности расчета времени цикла.
Попробуйте время цикла посчитать так
function_block TimeCycle
var_input
none : bool;
end_var
var_output
Q : udint;
end_var
var
init : bool;
t1, t2 : udint;
end_var
t1 := time_to_udint(get_time());
if init then
Q := t1 - t2;
else
init := true;
end_if
t2 := t1;
end_function_block
Думаю, проблема в погрешности расчета времени цикла.
Попробуйте время цикла посчитать так
function_block TimeCycle
var_input
none : bool;
end_var
var_output
Q : udint;
end_var
var
init : bool;
t1, t2 : udint;
end_var
t1 := time_to_udint(get_time());
if init then
Q := t1 - t2;
else
init := true;
end_if
t2 := t1;
end_function_block
Проще сразу на ST мгновенный расход вычислять, время цикла не нужно вообще
Простейший вариант
function_block RASHOD_lite (* (с) PeterA для форума ОВЕН *)
var_input
TIC: BOOL; (*импульс счетчика*)
Cimp: REAL; (*Вес импульса, л*)
end_var
var_output
Q: REAL; (*мгновенный расход мкуб/час*)
end_var
var
M: BOOL;
period: TIME;
start: TIME;
end_var
IF TIC AND NOT M THEN
period:= GET_TIME() - start;
start:= GET_TIME();
END_IF
M:= TIC;
Q:= 3600/udint_to_real(time_to_udint(period)) * Cimp;
end_function_block
Более продвинутый вариант - с учетом параметра расходомера Qмин (Минимальный расход) см.ниже
https://owen.ru/forum/showthread.php?t=37226&p=470767&viewfull=1#post470767
85498
kondor3000
31.08.2025, 09:40
Проще сразу на ST мгновенный расход вычислять, время цикла не нужно вообще
Более продвинутый вариант - с учетом параметра расходомера Qмин (Минимальный расход)
Более продвинутый вариант не работает 85499
Более продвинутый вариант не работает 85499
Спасибо,
Достаточно было опрометчиво переместить одну строчку, в начало IF и всё...
Правильный код
function_block RASHOD_Ex (* (с) PeterA для форума ОВЕН *)
var_input
TIC: BOOL; (*импульс счетчика*)
Cimp: REAL; (*Вес импульса, л*)
Qmin: REAL; (*Минимальный расход м.куб/час*)
end_var
var_output
Q: REAL; (*мгновенный расход мкуб/час*)
overflow: BOOL; (*Нет расхода (период импульсов больше максимального)*)
end_var
var
M: BOOL;
period: TIME;
start: TIME;
INIT: BOOL; (*пришел первый, начальный импульс, последовательности*)
cur_TIME: TIME; (*текущее время*)
period2: TIME; (*сколько прошло времени от фронта импульса*)
end_var
cur_TIME:= GET_TIME();
IF TIC AND NOT M THEN (*если фронт импульса*)
(* Было тут period2:=cur_TIME- start; *)
IF NOT INIT THEN (*если зто первый импульс*)
INIT:= TRUE; (*начинаем подсчет времени до фронта следующего импульса*)
Q:= 0; (* а пока расход = 0*)
ELSE (*если не первый импульс, то*)
period:= cur_TIME - start; (*время между импульсами*)
Q:= 3600/udint_to_real(time_to_udint(period)) * Cimp; (*мгновенный расход*)
overflow:= FALSE; (*переполнения по времени между импульсами нет*)
END_IF
start:= cur_TIME; (*фиксация времени прихода фронта импульса*)
END_IF
M:= TIC; (*пришел фронт импульса*)
period2:=cur_TIME- start; (*сколько прошло времени от фронта последнего импульса*)
IF period2 >= udint_to_time(real_to_udint(3600 * Cimp / Qmin)) THEN (*если от фронта последнего импульса прошло время больше допустимого по Qmin*)
Q:=0; (*значит нет расхода*)
INIT:= FALSE; (*следующий импульс будет первым*)
overflow:= TRUE; (*флаг переполнения по времени между импульсами*)
END_IF
end_function_block
Проще сразу на ST мгновенный расход вычислять, время цикла не нужно вообще
Простейший вариант
function_block RASHOD_lite (* (с) PeterA для форума ОВЕН *)
var_input
TIC: BOOL; (*импульс счетчика*)
Cimp: REAL; (*Вес импульса, л*)
end_var
var_output
Q: REAL; (*мгновенный расход мкуб/час*)
end_var
var
M: BOOL;
period: TIME;
start: TIME;
end_var
IF TIC AND NOT M THEN
period:= GET_TIME() - start;
start:= GET_TIME();
END_IF
M:= TIC;
Q:= 3600/udint_to_real(time_to_udint(period)) * Cimp;
end_function_block
Более продвинутый вариант - с учетом параметра расходомера Qмин (Минимальный расход) см.ниже
https://owen.ru/forum/showthread.php?t=37226&p=470767&viewfull=1#post470767
85498
Благодарю за код на ST - всё прекрасно работает!
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot