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

Подсчет колич импульсов скользящим окном

PLC, прочие контроллеры, промышленные компьютеры, операторские панели

Модераторы: Глоб.модераторы, специалисты по PLC

Ответить

Автор темы
lamburov
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 24 мар 2015, 02:40
Имя: lamburov григорий

Подсчет колич импульсов скользящим окном

Сообщение lamburov »

для ПР114 Овен:
Натолкните на мысль как без массивов организовать подсчет количества импульсов (передних или задних фронтов) пришедших на вход за определенный интервал времени до настоящего момента? То есть количество импульсов в скользящем окне.


Дребезг фильтровать DTRIG или по-другому ? (время дребезга не знаю, очевидно <=1/10 :-) )

Интервал времени "на ходу " изменяться не будет, но может быть задан от 10 до 180 сек, его дискретность подойдет 1 сек. Частота импульсов от 0 до 11 Гц.

Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 1075
Зарегистрирован: 25 июл 2008, 23:23
Имя: Бондарев Михаил Владимирович
Страна: Россия
город/регион: Магнитогорск
Благодарил (а): 52 раза
Поблагодарили: 20 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение Бондарев Михаил »

почему без массивов?

Интересно было бы посмотреть на решения (с костылями и без) которые в конечном виде не будут сводиться к работе с массивами.

Автор темы
lamburov
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 24 мар 2015, 02:40
Имя: lamburov григорий

Re: Подсчет колич импульсов скользящим окном

Сообщение lamburov »

Бондарев Михаил писал(а):почему без массивов?
потому что в явном виде не доступны ни массивы ни циклы для оперирования массивами

Бондарев Михаил писал(а):Интересно было бы посмотреть на решения (с костылями и без) которые в конечном виде не будут сводиться к работе с массивами.
это ни что иное как развертывание циклов и прописывание всех проходов
некоторые операции удастся формально спрятать в макросы

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

Если нужно обязательно без массивов, то можете применить фильтрацию. При периоде измерения 1 секунда и частоте среза фильтра 0.1 Гц после фильтра 3 порядка шум будет в 3-4 знаке после запятой.

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

Re: Подсчет колич импульсов скользящим окном

Сообщение Ryzhij »

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

Автор темы
lamburov
здесь недавно
здесь недавно
Сообщения: 4
Зарегистрирован: 24 мар 2015, 02:40
Имя: lamburov григорий

Re: Подсчет колич импульсов скользящим окном

Сообщение lamburov »

rwg писал(а):Если нужно обязательно без массивов
Не то чтобы "нужно обязательно без массивов", их просто нет в ПР

С подачи Ryzhij ( спасибо, его идея со сдвиговым регистром) написал, отладкой займусь позже.
Неприятное ограничение - в макросах OwenLogic количество входов и выходов ограничено 8+8, поэтому пришлось сократить количество отсчетов в и увеличить время дискретизации.

PS: какого размера регистры сдвигаю точно не знаю, тип "INT" в реле вроде бы 16 бит, тогда 16бит * 4 группы по 8 регистров=32 регистра "INT"
ресурсы расходуемые макросом видимо не отображаются в основной программе (работаю с ПР первый раз и могу ошибаться)
написанные макросы видны в меню макросов, а редактировать их не могу
TEST.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.

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

Re: Подсчет колич импульсов скользящим окном

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

Существуют "массивы" с постоянным количеством членов, а это одно и тоже, что и несколько переменных одного типа...

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

Ryzhij писал(а):А члены уравнения в формуле цифровой фильтрации это не массив? ;)
Пример фильтра 1 порядка:
OUT = (OUT - OUT/10 + IN);
Повторите эту формулу 3 раза и получите простейший фильтр 3 порядка. Естественно, OUT из первой формулы это IN из 2 формулы, OUT из 2 формулы это IN из 3 формулы. Всего 4 переменных. Имейте ввиду, что при IN на входе от 0 до 10 на выходе будет число от 0 до 10000.

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

Re: Подсчет колич импульсов скользящим окном

Сообщение Ryzhij »

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

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

Ryzhij писал(а):Красиво! Надо обдумать...
EXEL Вам в помощь. За 5 минут можно управиться.

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 15 раз
Поблагодарили: 39 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение VaBo »

rwg писал(а):Пример фильтра 1 порядка:
OUT = (OUT - OUT/10 + IN);
Повторите эту формулу 3 раза и получите простейший фильтр 3 порядка. Естественно, OUT из первой формулы это IN из 2 формулы, OUT из 2 формулы это IN из 3 формулы. Всего 4 переменных. Имейте ввиду, что при IN на входе от 0 до 10 на выходе будет число от 0 до 10000.
Погодите, а есть разница между
OUT = (OUT - OUT/10 + IN)/10 - 3 раза
и OUT = (OUT - OUT/30 + IN)/30 - 1 раз ?

PS: Фильтр этот применяю очень давно, там очень полезно при первом проходе записать сразу OUT = IN (OUT = 10*IN в вашем варианте), иначе при большой глубине фильтрации значение будет нарастать долго и нудно.

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

Re: Подсчет колич импульсов скользящим окном

Сообщение Ryzhij »

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

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 15 раз
Поблагодарили: 39 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение VaBo »

Ryzhij писал(а):Что-то никак не соображу, каким параметром регулировать добротность этого фильтра (ширину следящего окна)
У этого фильтра нет окна, тут экспонента.
OUT = (OUT - OUT/N + IN)/N
При N = 1 "ширина окна" единица, но уже при N=2 - в выходном значении будет учитываться все предыдущие (с учетом разрядности используемых переменных, конечно).
Как заряд конденсатора через резистор - в теории напряжение на конденсаторе никогда не достигнет напряжения источника э.д.с., так и в этом фильтре - его тау пропорционально N.

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

VaBo писал(а):Погодите, а есть разница между
OUT = (OUT - OUT/10 + IN)/10 - 3 раза
и OUT = (OUT - OUT/30 + IN)/30 - 1 раз ?
PS: Фильтр этот применяю очень давно, там очень полезно при первом проходе записать сразу OUT = IN (OUT = 10*IN в вашем варианте), иначе при большой глубине фильтрации значение будет нарастать долго и нудно.
Разница такая же, как разница между 3 фильтрующими RC-цепочками и одной цепочкой с утроенной ёмкостью. В первом случае скорость затухания помехи 1000 раз/декаду, а во втором случае 10 раз/декаду. И частота среза фильтра в первом случае примерно в 3 раза выше.

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 15 раз
Поблагодарили: 39 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение VaBo »

rwg писал(а):Разница такая же, как разница между 3 фильтрующими RC-цепочками и одной цепочкой с утроенной ёмкостью. В первом случае скорость затухания помехи 1000 раз/декаду, а во втором случае 10 раз/декаду. И частота среза фильтра в первом случае примерно в 3 раза выше.
Три одинаковые RC-цепочки, включенные последовательно, никогда не дадут фильтр третьего порядка. Нужно, чтобы значение R от цепи к цепи возрастало хотя-бы на порядок. Ну либо буферы - повторители. Это я так, просто напоминаю.
А по сути - вот вы упомянули эксель, а сможете смоделировать оба варианта, задав на входе просто перепад от 0 к 1 и показать разницу между
OUT = OUT - OUT/10 + IN/10 - 3 раза
OUT = OUT - OUT/30 + IN/30 - 1 раз

Добавлено: А-а-а, сделал сам ради интереса. Порядок фильтра немаловажен!
У вас нет необходимых прав для просмотра вложений в этом сообщении.

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

VaBo писал(а):Три одинаковые RC-цепочки, включенные последовательно, никогда не дадут фильтр третьего порядка. Нужно, чтобы значение R от цепи к цепи возрастало хотя-бы на порядок. Ну либо буферы - повторители.
Согласен со всем, кроме того, что не дадут фильтр 3 порядка. Порядок будет 3, но фильтр будет плохой, с плохой фильтрацией вблизи частоты среза. Про одинаковые цепочки я не писал, хотя одинаковое RC нужно. А повторители упустил с целью упрощения объяснения. Графики именно такие, как я себе представлял. Вообще привет Титцу, Шенку и их "Полупроводниковой схемотехнике".

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

Re: Подсчет колич импульсов скользящим окном

Сообщение Ryzhij »

VaBo писал(а): А по сути - вот вы упомянули эксель, а сможете смоделировать оба варианта, задав на входе просто перепад от 0 к 1 и показать разницу между
OUT = OUT - OUT/10 + IN/10 - 3 раза
OUT = OUT - OUT/30 + IN/30 - 1 раз
Вот я не понял - куда скобки из формул делись? Опечатка?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

Ryzhij писал(а):Вот я не понял - куда скобки из формул делись? Опечатка?
Постепенно произошёл переход от целых чисел к действительным. Если Вам нужна скорость работы программы - пользуйтесь целыми числами, но не забывайте про риск их переполнения.

VaBo
частый гость
частый гость
Сообщения: 441
Зарегистрирован: 21 июл 2013, 19:32
Имя: Вадим
город/регион: Северодвинск
Благодарил (а): 15 раз
Поблагодарили: 39 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение VaBo »

rwg писал(а):Постепенно произошёл переход от целых чисел к действительным. Если Вам нужна скорость работы программы - пользуйтесь целыми числами, но не забывайте про риск их переполнения.
Если нужна скорость - пользуйтесь коэффициентами, кратными степени двойки и используйте сдвиг вместо деления :ext_book:

rwg
почётный участник форума
почётный участник форума
Сообщения: 1073
Зарегистрирован: 29 апр 2014, 09:57
Имя: Рыбкин Владимир Геннадьевич
Страна: Россия
город/регион: Тверь
Благодарил (а): 73 раза
Поблагодарили: 147 раз

Re: Подсчет колич импульсов скользящим окном

Сообщение rwg »

VaBo писал(а): используйте сдвиг вместо деления
Это лишнее, компилятор сам заменит деление на сдвиг.
Ответить

Вернуться в «Средний уровень автоматизации (управляющий)»