- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Подсчет колич импульсов скользящим окном
Модераторы: Глоб.модераторы, специалисты по PLC
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 24 мар 2015, 02:40
- Имя: lamburov григорий
Подсчет колич импульсов скользящим окном
для ПР114 Овен:
Натолкните на мысль как без массивов организовать подсчет количества импульсов (передних или задних фронтов) пришедших на вход за определенный интервал времени до настоящего момента? То есть количество импульсов в скользящем окне.
Дребезг фильтровать DTRIG или по-другому ? (время дребезга не знаю, очевидно <=1/10 :-) )
Интервал времени "на ходу " изменяться не будет, но может быть задан от 10 до 180 сек, его дискретность подойдет 1 сек. Частота импульсов от 0 до 11 Гц.
Натолкните на мысль как без массивов организовать подсчет количества импульсов (передних или задних фронтов) пришедших на вход за определенный интервал времени до настоящего момента? То есть количество импульсов в скользящем окне.
Дребезг фильтровать DTRIG или по-другому ? (время дребезга не знаю, очевидно <=1/10 :-) )
Интервал времени "на ходу " изменяться не будет, но может быть задан от 10 до 180 сек, его дискретность подойдет 1 сек. Частота импульсов от 0 до 11 Гц.
-
- почётный участник форума
- Сообщения: 1075
- Зарегистрирован: 25 июл 2008, 23:23
- Имя: Бондарев Михаил Владимирович
- Страна: Россия
- город/регион: Магнитогорск
- Благодарил (а): 52 раза
- Поблагодарили: 20 раз
Re: Подсчет колич импульсов скользящим окном
почему без массивов?
Интересно было бы посмотреть на решения (с костылями и без) которые в конечном виде не будут сводиться к работе с массивами.
Интересно было бы посмотреть на решения (с костылями и без) которые в конечном виде не будут сводиться к работе с массивами.
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 24 мар 2015, 02:40
- Имя: lamburov григорий
Re: Подсчет колич импульсов скользящим окном
потому что в явном виде не доступны ни массивы ни циклы для оперирования массивамиБондарев Михаил писал(а):почему без массивов?
это ни что иное как развертывание циклов и прописывание всех проходовБондарев Михаил писал(а):Интересно было бы посмотреть на решения (с костылями и без) которые в конечном виде не будут сводиться к работе с массивами.
некоторые операции удастся формально спрятать в макросы
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
Если нужно обязательно без массивов, то можете применить фильтрацию. При периоде измерения 1 секунда и частоте среза фильтра 0.1 Гц после фильтра 3 порядка шум будет в 3-4 знаке после запятой.
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 841 раз
Re: Подсчет колич импульсов скользящим окном
А члены уравнения в формуле цифровой фильтрации это не массив? ;)
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- здесь недавно
- Сообщения: 4
- Зарегистрирован: 24 мар 2015, 02:40
- Имя: lamburov григорий
Re: Подсчет колич импульсов скользящим окном
Не то чтобы "нужно обязательно без массивов", их просто нет в ПРrwg писал(а):Если нужно обязательно без массивов
С подачи Ryzhij ( спасибо, его идея со сдвиговым регистром) написал, отладкой займусь позже.
Неприятное ограничение - в макросах OwenLogic количество входов и выходов ограничено 8+8, поэтому пришлось сократить количество отсчетов в и увеличить время дискретизации.
PS: какого размера регистры сдвигаю точно не знаю, тип "INT" в реле вроде бы 16 бит, тогда 16бит * 4 группы по 8 регистров=32 регистра "INT"
ресурсы расходуемые макросом видимо не отображаются в основной программе (работаю с ПР первый раз и могу ошибаться)
написанные макросы видны в меню макросов, а редактировать их не могу
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- эксперт
- Сообщения: 3643
- Зарегистрирован: 10 ноя 2009, 04:58
- Имя: Толмачев Михаил Алексеевич
- город/регион: г. Чехов, МО
- Благодарил (а): 8 раз
- Поблагодарили: 286 раз
Re: Подсчет колич импульсов скользящим окном
Существуют "массивы" с постоянным количеством членов, а это одно и тоже, что и несколько переменных одного типа...
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
Пример фильтра 1 порядка:Ryzhij писал(а):А члены уравнения в формуле цифровой фильтрации это не массив? ;)
OUT = (OUT - OUT/10 + IN);
Повторите эту формулу 3 раза и получите простейший фильтр 3 порядка. Естественно, OUT из первой формулы это IN из 2 формулы, OUT из 2 формулы это IN из 3 формулы. Всего 4 переменных. Имейте ввиду, что при IN на входе от 0 до 10 на выходе будет число от 0 до 10000.
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 841 раз
Re: Подсчет колич импульсов скользящим окном
Красиво! Надо обдумать...
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
EXEL Вам в помощь. За 5 минут можно управиться.Ryzhij писал(а):Красиво! Надо обдумать...
-
- частый гость
- Сообщения: 441
- Зарегистрирован: 21 июл 2013, 19:32
- Имя: Вадим
- город/регион: Северодвинск
- Благодарил (а): 15 раз
- Поблагодарили: 39 раз
Re: Подсчет колич импульсов скользящим окном
Погодите, а есть разница между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 в вашем варианте), иначе при большой глубине фильтрации значение будет нарастать долго и нудно.
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 841 раз
Re: Подсчет колич импульсов скользящим окном
Что-то никак не соображу, каким параметром регулировать добротность этого фильтра (ширину следящего окна)
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- частый гость
- Сообщения: 441
- Зарегистрирован: 21 июл 2013, 19:32
- Имя: Вадим
- город/регион: Северодвинск
- Благодарил (а): 15 раз
- Поблагодарили: 39 раз
Re: Подсчет колич импульсов скользящим окном
У этого фильтра нет окна, тут экспонента.Ryzhij писал(а):Что-то никак не соображу, каким параметром регулировать добротность этого фильтра (ширину следящего окна)
OUT = (OUT - OUT/N + IN)/N
При N = 1 "ширина окна" единица, но уже при N=2 - в выходном значении будет учитываться все предыдущие (с учетом разрядности используемых переменных, конечно).
Как заряд конденсатора через резистор - в теории напряжение на конденсаторе никогда не достигнет напряжения источника э.д.с., так и в этом фильтре - его тау пропорционально N.
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
Разница такая же, как разница между 3 фильтрующими RC-цепочками и одной цепочкой с утроенной ёмкостью. В первом случае скорость затухания помехи 1000 раз/декаду, а во втором случае 10 раз/декаду. И частота среза фильтра в первом случае примерно в 3 раза выше.VaBo писал(а):Погодите, а есть разница между
OUT = (OUT - OUT/10 + IN)/10 - 3 раза
и OUT = (OUT - OUT/30 + IN)/30 - 1 раз ?
PS: Фильтр этот применяю очень давно, там очень полезно при первом проходе записать сразу OUT = IN (OUT = 10*IN в вашем варианте), иначе при большой глубине фильтрации значение будет нарастать долго и нудно.
-
- частый гость
- Сообщения: 441
- Зарегистрирован: 21 июл 2013, 19:32
- Имя: Вадим
- город/регион: Северодвинск
- Благодарил (а): 15 раз
- Поблагодарили: 39 раз
Re: Подсчет колич импульсов скользящим окном
Три одинаковые RC-цепочки, включенные последовательно, никогда не дадут фильтр третьего порядка. Нужно, чтобы значение R от цепи к цепи возрастало хотя-бы на порядок. Ну либо буферы - повторители. Это я так, просто напоминаю.rwg писал(а):Разница такая же, как разница между 3 фильтрующими RC-цепочками и одной цепочкой с утроенной ёмкостью. В первом случае скорость затухания помехи 1000 раз/декаду, а во втором случае 10 раз/декаду. И частота среза фильтра в первом случае примерно в 3 раза выше.
А по сути - вот вы упомянули эксель, а сможете смоделировать оба варианта, задав на входе просто перепад от 0 к 1 и показать разницу между
OUT = OUT - OUT/10 + IN/10 - 3 раза
OUT = OUT - OUT/30 + IN/30 - 1 раз
Добавлено: А-а-а, сделал сам ради интереса. Порядок фильтра немаловажен!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
Согласен со всем, кроме того, что не дадут фильтр 3 порядка. Порядок будет 3, но фильтр будет плохой, с плохой фильтрацией вблизи частоты среза. Про одинаковые цепочки я не писал, хотя одинаковое RC нужно. А повторители упустил с целью упрощения объяснения. Графики именно такие, как я себе представлял. Вообще привет Титцу, Шенку и их "Полупроводниковой схемотехнике".VaBo писал(а):Три одинаковые RC-цепочки, включенные последовательно, никогда не дадут фильтр третьего порядка. Нужно, чтобы значение R от цепи к цепи возрастало хотя-бы на порядок. Ну либо буферы - повторители.
-
- почётный участник форума
- Сообщения: 5790
- Зарегистрирован: 07 окт 2011, 09:12
- Имя: Гаско Вячеслав Эриевич
- Страна: Россия
- город/регион: Рязань
- Благодарил (а): 673 раза
- Поблагодарили: 841 раз
Re: Подсчет колич импульсов скользящим окном
Вот я не понял - куда скобки из формул делись? Опечатка?VaBo писал(а): А по сути - вот вы упомянули эксель, а сможете смоделировать оба варианта, задав на входе просто перепад от 0 к 1 и показать разницу между
OUT = OUT - OUT/10 + IN/10 - 3 раза
OUT = OUT - OUT/30 + IN/30 - 1 раз
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
«У человека в душе дыра размером с Бога, и каждый заполняет её как может.» (Жан-Поль Сартр)
"Ту пустоту, которая остаётся в душе, когда в ней нет Бога, и весь мир не может заполнить." (святитель Николай Сербский)
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
Постепенно произошёл переход от целых чисел к действительным. Если Вам нужна скорость работы программы - пользуйтесь целыми числами, но не забывайте про риск их переполнения.Ryzhij писал(а):Вот я не понял - куда скобки из формул делись? Опечатка?
-
- частый гость
- Сообщения: 441
- Зарегистрирован: 21 июл 2013, 19:32
- Имя: Вадим
- город/регион: Северодвинск
- Благодарил (а): 15 раз
- Поблагодарили: 39 раз
Re: Подсчет колич импульсов скользящим окном
Если нужна скорость - пользуйтесь коэффициентами, кратными степени двойки и используйте сдвиг вместо деленияrwg писал(а):Постепенно произошёл переход от целых чисел к действительным. Если Вам нужна скорость работы программы - пользуйтесь целыми числами, но не забывайте про риск их переполнения.
-
- почётный участник форума
- Сообщения: 1073
- Зарегистрирован: 29 апр 2014, 09:57
- Имя: Рыбкин Владимир Геннадьевич
- Страна: Россия
- город/регион: Тверь
- Благодарил (а): 73 раза
- Поблагодарили: 147 раз
Re: Подсчет колич импульсов скользящим окном
Это лишнее, компилятор сам заменит деление на сдвиг.VaBo писал(а): используйте сдвиг вместо деления