PDA

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



lamburov
24.03.2015, 13:37
для ПР114:

Натолкните на мысль как без массивов (их нет в ПР) организовать подсчет количества импульсов (передних или задних фронтов) пришедших на вход за определенный интервал времени до настоящего момента? То есть количество импульсов в скользящем окне.
Дребезг (геркона) фильтровать DTRIG или по-другому ? (время дребезга не знаю, очевидно <=1/10 :-) )

Интервал времени "на ходу " изменяться не будет, но может быть задан от 10 до 180 сек, его дискретность подойдет от 1 до 10 сек. Частота импульсов до 11 Гц.
Пока других мыслей кроме большого (от 18 штук =180/10) количества таймеров+счетчиков нет.


PS: реализовать нужно именно на ПР114

Алексей Геннадьевич
24.03.2015, 13:45
Дребезг фильтруйте настройками дискретного входа.

lamburov
24.03.2015, 13:54
Дребезг фильтруйте настройками дискретного входа.

у дискретного входа ПР114, ПР110 нет настроек фильтрации
по скользящему окну есть мысли ?

Алексей Геннадьевич
24.03.2015, 14:09
у дискретного входа ПР114, ПР110 нет настроек фильтрации
Есть. Читайте РЭ внимательнее.

по скользящему окну есть мысли ?
Интересно, что такое хотите соорудить?

ASo
24.03.2015, 14:27
Скользящее окно организуйте записью счетчика с определенным дискретом.

lamburov
24.03.2015, 15:08
1. Есть. Читайте РЭ внимательнее.
2. Интересно, что такое хотите соорудить?
1. Путаете фильтрацию дребезга аналогового входа. У дискретного такого нет
2. Читайте внимательнее первое сообщение

lamburov
24.03.2015, 15:08
Скользящее окно организуйте записью счетчика с определенным дискретом.
плодить по ветке на каждый шаг дискретизации скользящего окна или есть способ проще ?

Ryzhij
24.03.2015, 15:16
Предлагаю: Сдвиговый регистр длинной в максимальную ширину окна и счётчик.

lamburov
24.03.2015, 15:44
Предлагаю: Сдвиговый регистр длинной в максимальную ширину окна и счётчик.

Спасибо за идею, если я правильно понял
нужен регистр общей длиной =180*11 бит (окно 180 сек, частота 11 Гц) ?

Алексей Геннадьевич
24.03.2015, 15:44
1. Путаете фильтрацию дребезга аналогового входа. У дискретного такого нет
Правда? А если найду?
17321

2. Читайте внимательнее первое сообщение

Интересует что у вас за установка.

lamburov
24.03.2015, 16:27
Правда? А если найду
Интересует что у вас за установка.

Спасибо, в руководстве этого нет, только в пункте меню
Измерение скорости в производственной линии и выдача воздействий в зависимости от интервалов скорости


Засада со свдигом SHL/SHR - при сдвиге они дополняют число нулями, нужно "вручную" подставлять бит, а сдвиговый регистр и так длинный и программа из-за пустяка разрастается стремительно

Ryzhij
24.03.2015, 16:52
Спасибо за идею, если я правильно понял
нужен регистр общей длиной =180*11 бит (окно 180 сек, частота 11 Гц) ?
Для 11 отсчётов в секунду и 4 бит хватит. Т.е. регистр размером 180*4 бит. Но тут уж дело хозяйское...

lamburov
24.03.2015, 17:01
Для 11 отсчётов в секунду и 4 бит хватит. Т.е. регистр размером 180*4 бит. Но тут уж дело хозяйское...

да, так разумно, но
двигать через SHL/SHR неудобно, дополняет справа/ слева нулями
что делать?

Алексей Геннадьевич
24.03.2015, 17:36
Измерение скорости в производственной линии и выдача воздействий в зависимости от интервалов скорости
Воздействий какого именно характера? Изменение скорости, частоты ударов палками, выдача изменяющегося обьёма/массы сырья на конвейер? Вы подробнее опишите: тот метод который вы хотите применить сожрёт все 450 ФБ и ещё попросит...

melky
24.03.2015, 17:47
lamburov на результат SHL/SHR наложите маску на нужный бит и сделайте макросом
ну нету в ОЛ ROL/ROR но не смертельно же.

lamburov
24.03.2015, 17:56
1. Воздействий какого именно характера? Изменение скорости, частоты ударов палками, выдача изменяющегося обьёма/массы сырья на конвейер? Вы подробнее опишите: тот метод который вы хотите применить сожрёт все 450 ФБ и ещё попросит...

1. Измерение тех импульсов, которые выдает геркон, а воздействие на систему и это к теме не относится. Если интересно пишите в личную почту - расскажу.
2. Да, количество ФБ будет нарастать стремительно

lamburov
24.03.2015, 18:04
на результат SHL/SHR наложите маску на нужный бит и сделайте макросом
ну нету в ОЛ ROL/ROR но не смертельно же.

Пишу на ПР впервые, в OwenLogiс для каждого применения создается копия макроса или используется как вызов подпрограммы с одной копии макроса?
Так еще же надо прописывать переносы битов в соседний регистр, общая длина составного регистра 90-180 байт

rovki
24.03.2015, 18:13
lamburov на результат SHL/SHR наложите маску на нужный бит и сделайте макросом
ну нету в ОЛ ROL/ROR но не смертельно же.
как это нет ,уже давно сделаны макросы ролов ...ищите

melky
24.03.2015, 18:16
Для 16 битного будет примерно так. Насчет составного не знаю, а надо ли ?

Гуру макросов пусть глянут, быстро накидал. А как вы сделаете составной регистр, если ПР не оперирует 180 битными значениями ????
rovki да ?, блин, когда уже сделают на форуме поиск по вложениям человеческий ??????

rovki
24.03.2015, 18:17
1. Измерение тех импульсов, которые выдает геркон, а воздействие на систему и это к теме не относится. Если интересно пишите в личную почту - расскажу.
2. Да, количество ФБ будет нарастать стремительно
используйте макросы СТЕК .

Алексей Геннадьевич
24.03.2015, 18:19
1. Измерение тех импульсов, которые выдает геркон, а воздействие на систему и это к теме не относится. Если интересно пишите в личную почту - расскажу.
Относится. Вам нужно выбрать другой метод, а для выбора его нужно знать что за воздействие и для чего оно осуществляется.


2. Да, количество ФБ будет нарастать стремительно
Причём в ОЛ всё будет жутко тормозить под конец написания... Между прокладками последних связей вы успеете вырастить ребёнка и сплясать на его свадьбе.

Пишу на ПР впервые, в OwenLogiс для каждого применения создается копия макроса или используется как вызов подпрограммы с одной копии макроса?
Копия макроса, каждый можно настроить отдельно в свойствах макроса.

rovki
24.03.2015, 18:38
Для 16 битного будет примерно так. Насчет составного не знаю, а надо ли ?

Гуру макросов пусть глянут, быстро накидал. А как вы сделаете составной регистр, если ПР не оперирует 180 битными значениями ????
rovki да ?, блин, когда уже сделают на форуме поиск по вложениям человеческий ??????
вот тут ролы и роры и стек

rovki
24.03.2015, 18:48
для ПР114:

Натолкните на мысль как без массивов (их нет в ПР) организовать подсчет количества импульсов (передних или задних фронтов) пришедших на вход за определенный интервал времени до настоящего момента? То есть количество импульсов в скользящем окне.
Дребезг (геркона) фильтровать DTRIG или по-другому ? (время дребезга не знаю, очевидно <=1/10 :-) )

Интервал времени "на ходу " изменяться не будет, но может быть задан от 10 до 180 сек, его дискретность подойдет от 1 до 10 сек. Частота импульсов до 11 Гц.
Пока других мыслей кроме большого (от 18 штук =180/10) количества таймеров+счетчиков нет.


PS: реализовать нужно именно на ПР114
как то мудрено написали ...Если б подробнее и понятнее (для тупых;)) ,то давно бы уже решение получили.....

rovki
24.03.2015, 18:51
Вы мешаете тактику (путь-средства) и стратегию (цель) в одну кучу .Сначала поставьте задачу четко ,а уж потом и средства найдутся оптимальные

lamburov
24.03.2015, 19:39
как то мудрено написали ...Если б подробнее и понятнее (для тупых;)) ,то давно бы уже решение получили.....

в каждый момент нужно знать количество импульсов, пришедших на дискретный вход между моментами времени
"сейчас" и "сейчас минус X сек"; X=180, импульсы следуют с частотой от 0 до 11 Гц
можно считать импульсы по передним или задним фронтам, это не принципиально

rovki
24.03.2015, 20:23
Так вам только два отсчета сейчас и сейчас-180????

Ryzhij
24.03.2015, 20:31
Так вам только два отсчета сейчас и сейчас-180????
Не "Два отсчёта" , а "Общее количество импульсов между отсчётами".
Я так думаю, чтобы не заморачиваться с переполнением счётчика, проще будет подсчитывать сумму всех по-секундных отсчётов в сдвиговом регистре окна.

rovki
24.03.2015, 20:36
Счетчик сбрасывается в каждом новом отсчете .А значение сохранится в стеке

Алексей Геннадьевич
24.03.2015, 20:39
в каждый момент нужно знать количество импульсов,
"Каждый момент" - это сколько? 10 мс, 1 секунда, 10 секунд? Какая скорость обновления данных?

пришедших на дискретный вход между моментами времени "сейчас" и "сейчас минус X сек"; X=180, импульсы следуют с частотой от 0 до 11 Гц
можно считать импульсы по передним или задним фронтам, это не принципиально
Задача похожа на вычисление средней скорости. Если это так, то попробуйте применить макрос усреднения.

lamburov
24.03.2015, 20:59
Так вам только два отсчета сейчас и сейчас-180????

не так.
нужно в любой текущий момент знать количество импульсов пришедших МЕЖДУ " сейчас" и "сейчас минус 180 сек"


в каждый момент нужно знать количество импульсов, пришедших на дискретный вход между моментами времени
"сейчас" и "сейчас минус X сек"; X=180, импульсы следуют с частотой от 0 до 11 Гц
можно считать импульсы по передним или задним фронтам, это не принципиально

lamburov
24.03.2015, 21:02
"Каждый момент" - это сколько? 10 мс, 1 секунда, 10 секунд? Какая скорость обновления данных?
Задача похожа на вычисление средней скорости. Если это так, то попробуйте применить макрос усреднения.


Каждый момент - это очередной цикл программы. какой макрос усреднения и использует ли он "скользящее окно" (по времени отсюда и до минус 180 сек) ?

rovki
24.03.2015, 21:20
не так.
нужно в любой текущий момент знать количество импульсов пришедших МЕЖДУ " сейчас" и "сейчас минус 180 сек"
вот вам 8 отсчетов назад можете смотреть сколько было импульсов .сначала заполните полностью стек .Здесь будет накапливаться сумма ,а если нужны просто значения (кол-во импульсов между отсчетами ) ,то нужно изменить немного схему.
Все дальше сами ,домысливать ,а потом допиливать можно долго .....:cool:

Алексей Геннадьевич
24.03.2015, 21:34
Каждый момент - это очередной цикл программы.
1) В ПР нет чётко задаваемого времени выполнения цикла. "Плавает" в зависимости от сложности программы. Среднее время выполнения цикла: 1-5 мс.
2) При такой постановке задачи вам не хватит ресурсов ПР.
3) Выкладывайте максимально полную постановку технологической задачи. Что конкретно вы регулируете, и почему критично именно 180 сек с минимальной дискретностью? Не сферического коня в вакууме же вы проектируете.
Возможно решение задачи более простыми методами.

rovki
24.03.2015, 22:47
Каждый момент - это очередной цикл программы. какой макрос усреднения и использует ли он "скользящее окно" (по времени отсюда и до минус 180 сек) ?
что бы получить усреднение в скользящем окне , сложите выходы стека и разделите на количество выходов стека .....

lamburov
25.03.2015, 14:45
3) Выкладывайте максимально полную постановку технологической задачи. Что конкретно вы регулируете, и почему критично именно 180 сек с минимальной дискретностью? Не сферического коня в вакууме же вы проектируете. Возможно решение задачи более простыми методами.

Алексей Геннадьевич, одно из подразделений компании удивлено Вашим интересом. Хорошо если просто ищете работу или Вам заняться нечем, а вдруг иностранный агент? Прошу прислать мне в личную почту скан всех страниц Вашего личного паспорта.



что бы получить усреднение в скользящем окне , сложите выходы стека и разделите на количество выходов стека .....
Я еще нормировал по количеству отсчетов и их времени , см ниже (один выход стека = отсчет в 3 сек)

rovki, спасибо Вам и Ryzhij за помощь, Алексею Геннадьевичу тоже спасибо (про скан паспорта не забываем !)
вчера написал программу и сделал макросы примерно как у Вас, дополнил еще FIFO (memory stack) обратным движением решстров (pop push полный комплект) и инициализацией стека в нули и единицы).
на отладку пока времени не было, займусь в конце недели.
Из обнаруженного неудобного -в среде OvenLogic есть ограничение на количество входов и выходов макроса 8+8
Вы как ветеран форума наверняка уже обращали внимание.


По моей программе - наверное импульс сброса счетчика (0,01сек) и он же проталкивания стека вперед формально может растянуться больше чем на 1 цикл программы.
Имеет смысл делать его меньше 0,01 с ?
Еще из предполагаемых косяков - возможное наложение по времени счетного импульса и имульса сброса, в этом случае пропадет счетный, но количественно для истемы это не критично.


Досадно конечно, что разработчик схемы применил ПР вменсто ПЛК, но из-за большого колдичества оборудования это исправить уже нет возможности.
На ST такая задача решается без обсуждений.

Алексей Геннадьевич
25.03.2015, 15:38
Из обнаруженного неудобного -в среде OvenLogic есть ограничение на количество входов и выходов макроса 8+8

После запуска в производство ПР200 могут увеличить кол-во.



По моей программе - наверное импульс сброса счетчика (0,01сек) и он же проталкивания стека вперед формально может растянуться больше чем на 1 цикл программы.
Он гарантированно растянется на 2-5 циклов.


Имеет смысл делать его меньше 0,01 с ?
R\F trig поставьте и не парьтесь.


Еще из предполагаемых косяков - возможное наложение по времени счетного импульса и имульса сброса, в этом случае пропадет счетный, но количественно для истемы это не критично.
Растяните счётный импульс используя "обратную связь" - это задержка выполнения на 1 цикл.

rovki
25.03.2015, 17:36
Еще из предполагаемых косяков - возможное наложение по времени счетного импульса и имульса сброса, в этом случае пропадет счетный, но количественно для истемы это не критично.

Используйте явную обратную связь -задержка на 1 цикл ПР исключит данную проблему
Я так и знал -топикастор программист ,изложение мыслей сооответствующее :D

Алексей Геннадьевич
25.03.2015, 18:24
а вдруг иностранный агент?
А то.
http://ic.pics.livejournal.com/olhanninen/5517159/447640/447640_original.jpg

rovki
25.03.2015, 19:15
И стек типа FIFO то же были уже со сбросом и реверсом ....:rolleyes:А так же стек для вещественных чисел :rolleyes:

lamburov
26.03.2015, 09:29
Используйте явную обратную связь -задержка на 1 цикл ПР исключит данную проблему

Как исключит, если счетные импульсы случайные (могут прийти в любой момент)?

Василий Кашуба
26.03.2015, 10:40
Как исключит, если счетные импульсы случайные (могут прийти в любой момент)?
Если счётные импульсы длиннее 1 цикла ПР, то ПР их посчитает.

Алексей Геннадьевич
26.03.2015, 12:09
Как исключит, если счетные импульсы случайные (могут прийти в любой момент)?
Как-то так.

rovki
26.03.2015, 12:34
Как исключит, если счетные импульсы случайные (могут прийти в любой момент)?
Для случайных импульсов и нужно скользящее окно + правильное время фильтрования по входу ...

Алексей Геннадьевич
26.03.2015, 15:25
lamburov
Посмотрите. Импульсы не пропадают.