Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

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

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

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

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

Сообщение lamburov » 24 мар 2015, 03:32

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


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

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


Бондарев Михаил
почётный участник форума
почётный участник форума
Сообщения: 945
Зарегистрирован: 25 июл 2008, 22:23
Ф.И.О.: Бондарев Михаил Владимирович
Поблагодарили: 1 раз

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

Сообщение Бондарев Михаил » 24 мар 2015, 20:29

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

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


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

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

Сообщение lamburov » 24 мар 2015, 22:39

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


потому что в явном виде не доступны ни массивы ни циклы для оперирования массивами


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


это ни что иное как развертывание циклов и прописывание всех проходов
некоторые операции удастся формально спрятать в макросы


rwg
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 25 мар 2015, 08:18

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


Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 2568
Зарегистрирован: 07 окт 2011, 08:12
Ф.И.О.: Гаско Вячеслав Эриевич
Откуда: Рязань, Россия
Благодарил (а): 43 раза
Поблагодарили: 71 раз

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

Сообщение Ryzhij » 25 мар 2015, 08:50

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


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

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

Сообщение lamburov » 25 мар 2015, 12:49

rwg писал(а):Если нужно обязательно без массивов

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

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

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

TEST.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2229
Зарегистрирован: 10 ноя 2009, 04:58
Ф.И.О.: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 23 раза
Контактная информация:

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

Сообщение Михайло » 25 мар 2015, 19:14

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


rwg
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 25 мар 2015, 21:45

Ryzhij писал(а):А члены уравнения в формуле цифровой фильтрации это не массив? ;)

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


Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 2568
Зарегистрирован: 07 окт 2011, 08:12
Ф.И.О.: Гаско Вячеслав Эриевич
Откуда: Рязань, Россия
Благодарил (а): 43 раза
Поблагодарили: 71 раз

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

Сообщение Ryzhij » 25 мар 2015, 22:06

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


rwg
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 26 мар 2015, 07:38

Ryzhij писал(а):Красиво! Надо обдумать...

EXEL Вам в помощь. За 5 минут можно управиться.


VaBo
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 21 июл 2013, 18:32
Ф.И.О.: Вадим
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение VaBo » 26 мар 2015, 09:11

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
почётный участник форума
почётный участник форума
Сообщения: 2568
Зарегистрирован: 07 окт 2011, 08:12
Ф.И.О.: Гаско Вячеслав Эриевич
Откуда: Рязань, Россия
Благодарил (а): 43 раза
Поблагодарили: 71 раз

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

Сообщение Ryzhij » 26 мар 2015, 11:28

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


VaBo
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 21 июл 2013, 18:32
Ф.И.О.: Вадим
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение VaBo » 26 мар 2015, 13:43

Ryzhij писал(а):Что-то никак не соображу, каким параметром регулировать добротность этого фильтра (ширину следящего окна)

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


rwg
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 26 мар 2015, 18:22

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
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 21 июл 2013, 18:32
Ф.И.О.: Вадим
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение VaBo » 26 мар 2015, 19:23

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
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 27 мар 2015, 00:21

VaBo писал(а):Три одинаковые RC-цепочки, включенные последовательно, никогда не дадут фильтр третьего порядка. Нужно, чтобы значение R от цепи к цепи возрастало хотя-бы на порядок. Ну либо буферы - повторители.

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


Ryzhij
почётный участник форума
почётный участник форума
Сообщения: 2568
Зарегистрирован: 07 окт 2011, 08:12
Ф.И.О.: Гаско Вячеслав Эриевич
Откуда: Рязань, Россия
Благодарил (а): 43 раза
Поблагодарили: 71 раз

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

Сообщение Ryzhij » 27 мар 2015, 05:55

VaBo писал(а):А по сути - вот вы упомянули эксель, а сможете смоделировать оба варианта, задав на входе просто перепад от 0 к 1 и показать разницу между
OUT = OUT - OUT/10 + IN/10 - 3 раза
OUT = OUT - OUT/30 + IN/30 - 1 раз

Вот я не понял - куда скобки из формул делись? Опечатка?
---------------------------------------------------
«У человека в душе дыра размером с Бога, и каждый заполняет её как может». Жан-Поль Сартр


rwg
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 27 мар 2015, 07:05

Ryzhij писал(а):Вот я не понял - куда скобки из формул делись? Опечатка?

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


VaBo
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 21 июл 2013, 18:32
Ф.И.О.: Вадим
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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

Сообщение VaBo » 27 мар 2015, 16:06

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

Если нужна скорость - пользуйтесь коэффициентами, кратными степени двойки и используйте сдвиг вместо деления :ext_book:


rwg
частый гость
частый гость
Сообщения: 494
Зарегистрирован: 29 апр 2014, 08:57
Ф.И.О.: Рыбкин Владимир Геннадьевич
Благодарил (а): 10 раз
Поблагодарили: 19 раз

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

Сообщение rwg » 27 мар 2015, 19:51

VaBo писал(а): используйте сдвиг вместо деления

Это лишнее, компилятор сам заменит деление на сдвиг.


Вернуться в «Средний уровень автоматизации»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей