1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Как найти накопительный расход

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)

Модератор: Глоб.модераторы

Ответить

Автор темы
Soylo
здесь недавно
здесь недавно
Сообщения: 6
Зарегистрирован: 02 авг 2017, 14:28
Имя: Александр
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 1 раз

Как найти накопительный расход

Сообщение Soylo »

Добрый день.
Имеется расходомер ДРС.М импульсный, с ценой импульса 0,001м3.
Мгновенный расход (воды) я нашел, по формуле: q=3600* K* fвых (м3/ч).
Как мне найти накопительный (общий расход) воды. В TIA Portal v13 (LAD).
Думал сделать так. Посчитать сколько импульсов в секунду, потом умножить на цену импульса, получим сколько кубов в сек.И прибавлять реальное к предыдущему. Но не получается. Подскажите, как правильно сделать?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 840 раз

Как найти накопительный расход

Сообщение Ryzhij »

Не надо определять частоту следования импульсов. Просто считайте импульсы и умножайте на цену импульса.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

Автор темы
Soylo
здесь недавно
здесь недавно
Сообщения: 6
Зарегистрирован: 02 авг 2017, 14:28
Имя: Александр
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 1 раз

Как найти накопительный расход

Сообщение Soylo »

Так найдем мгновенный расход, а накопительный ?

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 840 раз

Как найти накопительный расход

Сообщение Ryzhij »

Мгновенный расход (расход за единицу времени) равен количеству импульсов за эту самую единицу времени (за секунду, за час, за сутки), умноженному на вес одного импульса. Фильтрация - по вкусу.

А накопительный - общему количеству импульсов, умноженному на вес одного импульса.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Как найти накопительный расход

Сообщение megavolt86 »

Soylo писал(а): мгновенный расход, а накопительный ?
Выражайтесь правильно!
Что есть накопительный расход? Объем может быть?
Если объем то, товарищ Rizhij дал вам правильный алгоритм!
:ext_secret:

Автор темы
Soylo
здесь недавно
здесь недавно
Сообщения: 6
Зарегистрирован: 02 авг 2017, 14:28
Имя: Александр
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 1 раз

Как найти накопительный расход

Сообщение Soylo »

Мне нужно найти, общее количество жидкости, прошедшее через расходомер.
Как мне программно реализовать, нахождения количества импульсов в секунду. До меня не доходит.
Не судите строго, я новичок в этом деле. Спасибо за помощь!
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Как найти накопительный расход

Сообщение megavolt86 »

Soylo писал(а): количества импульсов в секунду
Вам сколько раз уже ответили, что в секунду вам не надо считать количество импульсов, только общее количество импульсов. Далее это количество умножаете на цену импульса и получаете общее количество вещества (объем), прошедший через расходомер.
Счетчик можете написать свой, а можете использовать CTU, на вход in заводите дискретный входной сигнал с расходчика. Только надо учесть, чтобы счетчик сбрасывался, допустим при достижении значения 1000 кубов, дабы не было переполнения.

Кстати если сигнал заведен на высокочастотный вход, то счетчик можно настроить в хардваре и оперировать уже значением счетчика в формате int.
Если этот высокочастотный вход настроить на измерение частоты то можете получить как раз таки количество импульсов в секунду так же в формате int.

В любом случае по вашим исходным данным вам дали исчерпывающие рекомендации по решению задачи....
:ext_secret:
Аватара пользователя

Looker
почётный участник форума
почётный участник форума
Сообщения: 1181
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 351 раз
Поблагодарили: 241 раз

Как найти накопительный расход

Сообщение Looker »

Soylo писал(а): Мне нужно найти, общее количество жидкости, прошедшее через расходомер.
Модуль счетчика имеется?
Ryzhij писал(а):
Soylo писал(а): Так найдем мгновенный расход, а накопительный ?=
Просто считайте импульсы и умножайте на цену импульса.
Не забывая про перенос.
В твоем (Soylo) пути стоит иметь ввиду, что Float32 имеет насыщение, если будешь суммировать.
Soylo писал(а): Мгновенный расход (воды) я нашел...
Оставь это для индикации оператору.
Пока отвечал, пришло:
megavolt86 писал(а): Вам сколько раз уже ответили, что в секунду вам не надо считать количество импульсов
Одобрям. (С) Хазанов.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Автор темы
Soylo
здесь недавно
здесь недавно
Сообщения: 6
Зарегистрирован: 02 авг 2017, 14:28
Имя: Александр
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 1 раз

Как найти накопительный расход

Сообщение Soylo »

Под модулем вы (Looker) подразумеваете вторичку?Вторички нет, индикации тоже нет, цепляю сразу на DI контроллера. Спасибо за ответы. Попробую сделать , как советуете.
Аватара пользователя

Looker
почётный участник форума
почётный участник форума
Сообщения: 1181
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 351 раз
Поблагодарили: 241 раз

Как найти накопительный расход

Сообщение Looker »

Soylo писал(а): Под модулем вы (Looker) подразумеваете вторичку?
Подразумеваю возможность аппаратного подсчета (прикладная программа считывает готовое число): модуль устанавливаемый в контроллер или специальный вход контроллера.
Soylo писал(а): цепляю сразу на DI контроллера
Какую максимальную частоту может обработать этот вход? Можно не отвечать.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 840 раз

Как найти накопительный расход

Сообщение Ryzhij »

Looker писал(а): стоит иметь ввиду, что Float32 имеет насыщение, если будешь суммировать.
Эффект насыщения при инкременте имеет ЛЮБОЙ тип Float (Real), не только Float32.
Счетчик, действительно, должен быть целочисленным.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Looker
почётный участник форума
почётный участник форума
Сообщения: 1181
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 351 раз
Поблагодарили: 241 раз

Как найти накопительный расход

Сообщение Looker »

Ryzhij писал(а): Эффект насыщения при инкременте имеет ЛЮБОЙ тип Float (Real), не только Float32.
Правильно, только при 64-х разрядах это произойдет гораздо позже.

PS. " Вчера на улице ко мне подошла старуха и предложила купить вечную иглу для примуса. Вы знаете, Адам, я не купил. Мне не нужна вечная игла, я не хочу жить вечно."
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 840 раз

Как найти накопительный расход

Сообщение Ryzhij »

Прикол в том, что при инкрементальном счёте (постоянном увеличении счетчика на единицу) использование формата Float не выгодно по-любому. Так, мантиса во Float64 занимает 52 бита, и насыщение инкрементального счётчика с Float64 произойдёт гораздо раньше, чем возникнет перенос в том же 64-разрядном целочисленном регистре (знак и 63 бита числа).
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Аватара пользователя

Looker
почётный участник форума
почётный участник форума
Сообщения: 1181
Зарегистрирован: 09 фев 2011, 11:32
Имя: Дитрих Евгений Линусович
город/регион: Донецк
Благодарил (а): 351 раз
Поблагодарили: 241 раз

Как найти накопительный расход

Сообщение Looker »

Ryzhij писал(а): насыщение инкрементального счётчика с Float64 произойдёт гораздо раньше, чем возникнет перенос в том же 64-разрядном
Мое предупреждение было про Float32 и добавление про Float64. А подходить к этим делам надо разумно, иначе будет:
- что хотим иметь?
- Точность до XXXXXX после запятой.
- какой у вас расход?
- YYYYYYY в час.
- сколько знаков отображать?
- все: YYYYYYY.XXXXXX
- За сколько лет (или на каком интервале времени)?
- Более 10.
:ext_hooray:

PS. Количество X и Y указано отфонарно, чтобы показать...

Вячеслав (Ryzhij), у Rockwell в Logix есть команда TOT, применял? Хочу услышать отзыв от практиков.
_______________________________________________
Узкая специализация в широком смысле этого слова ведет к широкой идиотизации в узком смысле этого слова . (С) Бернард Шоу

Михайло
эксперт
эксперт
Сообщения: 3643
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 8 раз
Поблагодарили: 286 раз

Как найти накопительный расход

Сообщение Михайло »

Прикол в том, что вещественные типы (real,float) абсолютно непригодны для суммирования больших чисел с маленькими приращениями.

Что касается S7-1200, то тут лучше:
1. использовать аппаратный счетчик HSC (желательно, но надо разбираться, с чем его едят), потому что обычный способ имеет ограничение по частоте - импульсы должны поступать не чаще примерно 10 Гц, иначе программа не будет успевать считать их, будут пропуски.
2. использовать тип UDINT для хранения накопленного объема
3. для приращения использовать команду INC, которая вроде сама обнулит объем при переполнении
4. Затем UDINT можно пересчитать в REAL с помощью функций NORM_X и SCALE_X

Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 5790
Зарегистрирован: 07 окт 2011, 09:12
Имя: Гаско Вячеслав Эриевич
Страна: Россия
город/регион: Рязань
Благодарил (а): 673 раза
Поблагодарили: 840 раз

Как найти накопительный расход

Сообщение Ryzhij »

Looker писал(а): Вячеслав (Ryzhij), у Rockwell в Logix есть команда TOT, применял? Хочу услышать отзыв от практиков.
Нет, не сподобил Господь. В наших системах от Rockwell такого нет.

Знаете, я бы различал работоспособность и точность. Так-то и сломанные часы показывают точное время чаще идущих.
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
Ответить

Вернуться в «Simatic TIA Portal»