PDA

Просмотр полной версии : ПР200 кнопки с сопротивлением



Orbes
23.08.2016, 05:03
Добрый день. Я начинающий пользователь Owen, необходима помощь по следующим вопросам.
1. Мне необходимо задействовать 12 кнопок. Каждая кнопка имеет своё сопротивление, к примеру с шагом 100 Ом, начиная со 100. Все эти 12 кнопок вешаются на аналоговый вход. Мой алгоритм:
25904
В режиме симуляции при пошаговой проверке всё работает адекватно, но при испытании на реле срабатывает только последняя кнопка.
! Мои догадки, при нажатии кнопки сопротивление начинает резко уменьшаться от максимального 99999.99 до номинала резистора. Естественно присутствует дребезг контактов, Думаю он тоже какое-то влияние вносит.
2. При замыкании кнопки, происходит какие-то перещёлкивания, непонятно, какие реле это перещёлкиваются. По схеме выходное реле не может щёлкать, так как стоит защита, т.е. после первого пришедшего сигнала, система перестаёт реагировать на кнопки пока не отработает определённый таймер.

Ryzhij
23.08.2016, 06:12
АЦП измеряет не сопротивление, а напряжение. Это во-первых. Поэтому, организуйте делитель (схемно-аппаратный делитель напряжения).
А во-вторых, для равномерного распределения аналогового кода нажатых кнопок по диапазону АЦП грамотно выбирайте резисторы кнопок.
Никакого "к примеру с шагом 100 Ом, начиная со 100" тут и близко быть не может.
В-третьих, кроме условия "больше константы" должно одновременно быть условие "меньше или равно другой константе". Диапазон надо определять сразу по коду АЦП и защёлкивать результат.

maximov2009
23.08.2016, 06:51
Добрый день. Какая то знакомая задачка, предлагали решить, Вы случайно не из Барнаула?
По сути вопроса - в каком режиме у Вас стоят перемычки аналогового входа? Иными словами - стоит ли вход в режиме измерения сопротивления или каком другом? И если да, то нарисуйте внешнее подсоединение резисторов.
С уважением.

Юрий_Р
23.08.2016, 08:48
Добрый день. Я начинающий пользователь Owen, необходима помощь по следующим вопросам.
1. Мне необходимо задействовать 12 кнопок. Каждая кнопка имеет своё сопротивление, к примеру с шагом 100 Ом, начиная со 100. Все эти 12 кнопок вешаются на аналоговый вход. Мой алгоритм:
25904
В режиме симуляции при пошаговой проверке всё работает адекватно, но при испытании на реле срабатывает только последняя кнопка.
! Мои догадки, при нажатии кнопки сопротивление начинает резко уменьшаться от максимального 99999.99 до номинала резистора. Естественно присутствует дребезг контактов, Думаю он тоже какое-то влияние вносит.
2. При замыкании кнопки, происходит какие-то перещёлкивания, непонятно, какие реле это перещёлкиваются. По схеме выходное реле не может щёлкать, так как стоит защита, т.е. после первого пришедшего сигнала, система перестаёт реагировать на кнопки пока не отработает определённый таймер.

Добрый день! Задача вполне решаема, чтобы понять что у Вас происходит не так, для начала зайдите в меню прибора удерживая 3 сек ALT ВХОДЫ-АНАЛОГОВЫЕ->СОСТОЯНИЕ и посмотрите как изменяется сопротивление на входе при замыкании кнопок, и измеряется ли там действительно сопротивление (может джампера надо установить). Если там будет все так как задумано, тогда двигаться дальше.

Сергей0308
23.08.2016, 08:57
Добрый день. Я начинающий пользователь Owen, необходима помощь по следующим вопросам.
1. Мне необходимо задействовать 12 кнопок. Каждая кнопка имеет своё сопротивление, к примеру с шагом 100 Ом, начиная со 100. Все эти 12 кнопок вешаются на аналоговый вход. Мой алгоритм:
25904
В режиме симуляции при пошаговой проверке всё работает адекватно, но при испытании на реле срабатывает только последняя кнопка.
! Мои догадки, при нажатии кнопки сопротивление начинает резко уменьшаться от максимального 99999.99 до номинала резистора. Естественно присутствует дребезг контактов, Думаю он тоже какое-то влияние вносит.
2. При замыкании кнопки, происходит какие-то перещёлкивания, непонятно, какие реле это перещёлкиваются. По схеме выходное реле не может щёлкать, так как стоит защита, т.е. после первого пришедшего сигнала, система перестаёт реагировать на кнопки пока не отработает определённый таймер.

Одновременно, наверно, не более одной кнопки нажимаете, иначе получится путаница? Если так, можно настроить так: от 50 до 150, срабатывает первая кнопка, от 150 до 250, срабатывает вторая кнопка, от 250 до 350 срабатывает третья кнопка и т. д. И аналоговый вход надо джамперами сконфигурировать!

25905

Orbes
23.08.2016, 09:10
Добрый день. Какая то знакомая задачка, предлагали решить, Вы случайно не из Барнаула?
По сути вопроса - в каком режиме у Вас стоят перемычки аналогового входа? Иными словами - стоит ли вход в режиме измерения сопротивления или каком другом? И если да, то нарисуйте внешнее подсоединение резисторов.
С уважением.

Нет, я с Новосибирска. Перемычки сконфигурированы под измерение сопротивления. Схема то вообщем-то простая.
На первый аналоговый вход цепляется цепочка с кнопками подключенными параллельно друг другу.
25906

Orbes
23.08.2016, 09:12
Одновременно, наверно, не более одной кнопки нажимаете, иначе получится путаница? Если так, можно настроить так: от 50 до 150, срабатывает первая кнопка, от 150 до 250, срабатывает вторая кнопка, от 250 до 350 срабатывает третья кнопка и т. д. И аналоговый вход надо джамперами сконфигурировать!

25905
Нажимается одна кнопка. Неважно какая, срабатывает последняя. Сконфигурировано верно.

Orbes
23.08.2016, 09:16
Добрый день! Задача вполне решаема, чтобы понять что у Вас происходит не так, для начала зайдите в меню прибора удерживая 3 сек ALT ВХОДЫ-АНАЛОГОВЫЕ->СОСТОЯНИЕ и посмотрите как изменяется сопротивление на входе при замыкании кнопок, и измеряется ли там действительно сопротивление (может джампера надо установить). Если там будет все так как задумано, тогда двигаться дальше.

Состояние проверял, мерит правильно, просто большой дребезг в момент замыкания. Есть ещё такой параметр в менюшке прибора, как фильтр. Я выставляю 1 с. всё равно большой дребезг.

Orbes
23.08.2016, 09:20
АЦП измеряет не сопротивление, а напряжение. Это во-первых. Поэтому, организуйте делитель (схемно-аппаратный делитель напряжения).
А во-вторых, для равномерного распределения аналогового кода нажатых кнопок по диапазону АЦП грамотно выбирайте резисторы кнопок.
Никакого "к примеру с шагом 100 Ом, начиная со 100" тут и близко быть не может.
В-третьих, кроме условия "больше константы" должно одновременно быть условие "меньше или равно другой константе". Диапазон надо определять сразу по коду АЦП и защёлкивать результат.

Я понимаю что измеряется напряжение, и это напряжение 2.5 В (это на входе без сопротивления). Грубо говоря максимальное сопротивление. Вы предлагаете поставить простой делитель и мерить напряжение?

Сергей0308
23.08.2016, 09:34
Нажимается одна кнопка. Неважно какая, срабатывает последняя. Сконфигурировано верно.

Как-то так, для каждой кнопки:

25907

Ryzhij
23.08.2016, 09:36
Вы предлагаете поставить простой делитель и мерить напряжение?Да. По крайней мере, влияние наводок будет меньше. И помехоустойчивость в целом повысится.
А проблема одновременно нажатых кнопок - это родимое пятно такой архитектуры.

Orbes
23.08.2016, 09:48
Как-то так, для каждой кнопки:

25907

Вот смотрите, мои кнопки тоже диапазон используют. И в симуляторе всё верное отрабатывает.
https://yadi.sk/d/QjAaZM30uQimD
Но в реалии не всё так гладко, я всё-таки грешу на дребезг контакта, из-за этого и медленное снижение сопротивления от максимального до номинала кнопки.

Orbes
23.08.2016, 09:51
Да. По крайней мере, влияние наводок будет меньше. И помехоустойчивость в целом повысится.
А проблема одновременно нажатых кнопок - это родимое пятно такой архитектуры.

От одновременно нажатых кнопок в реле сделан алгоритм запрета, т.е. после нажатия допустим кнопки 1, кнопку 2 не нажмёшь пока не отработает таймер кнопки 1. И в целом на пульте физически сложно зажать две кнопки одновременно. И всё-таки хотелось бы схему с измерением сопротивления организовать.

Сергей0308
23.08.2016, 09:59
Вот смотрите, мои кнопки тоже диапазон используют. И в симуляторе всё верное отрабатывает.
https://yadi.sk/d/QjAaZM30uQimD
Но в реалии не всё так гладко, я всё-таки грешу на дребезг контакта, из-за этого и медленное снижение сопротивления от максимального до номинала кнопки.

У Вас большая постоянная времени фильтра, лучше задержку применить, пока всё не устаканится!

maximov2009
23.08.2016, 10:02
Нет, я с Новосибирска. 25906
Да практически земляки. Я бы сделал именно делитель напряжения и переконфигурировал вход на 0-10В. Меньше надо будет учитывать сопротивление проводов и контактов. А если сопротивления, то разбег побольше - 4К/12. Именно границы, как пишут остальные и проведение измерение через определённое время после нажатия хотя бы 0.2с. С дальнейшей защёлкои триггером.
Это случайно не машина по розливу полиуретана. 12 кнопок 12 таймеров?
С уважением.

Сергей0308
23.08.2016, 10:16
Да практически земляки. Я бы сделал именно делитель напряжения и переконфигурировал вход на 0-10В. Меньше надо будет учитывать сопротивление проводов и контактов. А если сопротивления, то разбег побольше - 4К/12. Именно границы, как пишут остальные и проведение измерение через определённое время после нажатия хотя бы 0.2с. С дальнейшей защёлкои триггером.
Это случайно не машина по розливу полиуретана. 12 кнопок 12 таймеров?
С уважением.

Не проще две кнопки вверх - вниз с отображением параметра или номера уставки, например с помощью СМИ2?

Orbes
23.08.2016, 10:44
У Вас большая постоянная времени фильтра, лучше задержку применить, пока всё не устаканится!

Вот, с задержкой хорошее предложение, я тоже об этом думал, только не совсем соображу как её осуществить, ведь у нас на входе получается вещественное число. Но над этим предложением я ещё подумаю.

Orbes
23.08.2016, 10:48
Да практически земляки. Я бы сделал именно делитель напряжения и переконфигурировал вход на 0-10В. Меньше надо будет учитывать сопротивление проводов и контактов. А если сопротивления, то разбег побольше - 4К/12. Именно границы, как пишут остальные и проведение измерение через определённое время после нажатия хотя бы 0.2с. С дальнейшей защёлкои триггером.
Это случайно не машина по розливу полиуретана. 12 кнопок 12 таймеров?
С уважением.

Да именное для таких машин и планируется использовать. К вам могли обращаться с Барнаула Максим и Игорь, но это немного другая машина, немного подругому работает.

Orbes
23.08.2016, 10:54
Не проще две кнопки вверх - вниз с отображением параметра или номера уставки, например с помощью СМИ2?
Нееее, необходимо именно 12 кнопок.

maximov2009
23.08.2016, 10:58
Да именное для таких машин и планируется использовать. К вам могли обращаться с Барнаула Максим и Игорь, но это немного другая машина, немного подругому работает.
Всё так. А говорят у нас большая страна.
В Вашем случае я бы поставил блок сравнения, который бы измерял(ловил) любое изменение на аналоговом входе, после этого таймер с задержкой и подачей команды на измерение. Кнопка обычно удерживается порядка 0,5с так что таймер где то на 0,2с попробовать.
С уважением.

Юрий_Р
23.08.2016, 11:08
Я еще могу посоветовать расширить диапазон по использованию входного сопротивления, например до 12 кОм, тогда на каждую кнопку использовать 1 кОм, затем если смущает float внутри преобразовать в int и работать с ним, так будет проще. Т.к как нам важно измерять не точное сопротивление, а вычислять диапазон, думаю этот метод должен помочь. Еще как вариант, если сильно скачут показания, подать значение со входа на макрос усреднения, задать в нем экспериментально нужное число для усреднения. Макрос сейчас поищу.
В данном макросе стоит число 50, можно его поменять и попробовать добиться стабильных показаний, только менять одновременно в двух местах СТ1 и на входе fDIV.

Сергей0308
23.08.2016, 11:29
Нееее, необходимо именно 12 кнопок.

Не верится, что иначе - никак! А если двумя кнопками(вверх-вниз с отображением) выбираешь уставку, а третья кнопка применить выбранную уставку(номер уставки), так не потянет?

petera
23.08.2016, 11:45
Была похожая задача.
В ПЛК не хватило дискретных входов. Пришлось кнопки посадить на аналоговый вход 0...10В.
25910
Диоды решают проблему одновременного нажатия нескольких кнопок. Приоритет всегда будет у более верхней кнопки, т.к. потенциал с делителя у не выше. Все резисторы в делителе одного номинала, сам номинал большой роли не играет.
В программе просто набор компараторов, которые последовательно проверяют, что напряжение немного больше каждой ступени делителя. Проверка начинается с самой нижней кнопки.
25911

25912

Продукция серийная, в течение четырех лет нареканий на работу кнопок не было.

maximov2009
23.08.2016, 11:54
Не верится, что иначе - никак!
Подтверждаю. В ДАННОМ случае никак. Иначе потеря производительности.

maximov2009
23.08.2016, 12:23
Что Вы указали в свойствах входа? Выведите переменную на экран, посмотрите какое число у Вас получается при нажатии кнопок.

Orbes
23.08.2016, 12:27
Я еще могу посоветовать расширить диапазон по использованию входного сопротивления, например до 12 кОм, тогда на каждую кнопку использовать 1 кОм, затем если смущает float внутри преобразовать в int и работать с ним, так будет проще. Т.к как нам важно измерять не точное сопротивление, а вычислять диапазон, думаю этот метод должен помочь. Еще как вариант, если сильно скачут показания, подать значение со входа на макрос усреднения, задать в нем экспериментально нужное число для усреднения. Макрос сейчас поищу.
В данном макросе стоит число 50, можно его поменять и попробовать добиться стабильных показаний, только менять одновременно в двух местах СТ1 и на входе fDIV.

Если просто расширить, то нельзя, так как диапазон сопротивлений на аналоговый вход ПР200 0...4000 Ом. С усреднением интересная идея, вечером попробую.

Orbes
23.08.2016, 12:31
Была похожая задача.
В ПЛК не хватило дискретных входов. Пришлось кнопки посадить на аналоговый вход 0...10В.
25910
Диоды решают проблему одновременного нажатия нескольких кнопок. Приоритет всегда будет у более верхней кнопки, т.к. потенциал с делителя у не выше. Все резисторы в делителе одного номинала, сам номинал большой роли не играет.
В программе просто набор компараторов, которые последовательно проверяют, что напряжение немного больше каждой ступени делителя. Проверка начинается с самой нижней кнопки.
25911

25912

Продукция серийная, в течение четырех лет нареканий на работу кнопок не было.

А 12 кнопок войдут в диапазон 10 В. Маленький шаг сопротивлений, не вызовет срабатываний не той кнопки?

petera
23.08.2016, 12:43
А 12 кнопок войдут в диапазон 10 В. Маленький шаг сопротивлений, не вызовет срабатываний не той кнопки?

Одна ступень делителя будет 0.83 В. Много это или мало сказать не могу, теория проверяется практикой, нужен эксперимент.
ЗЫ.
И почему шаг сопротивлений обязательно должен быть маленький? Возьмите 12 резисторов по 1кОм.
1кОм - это маленький шаг?

Юрий_Р
23.08.2016, 12:49
Если просто расширить, то нельзя, так как диапазон сопротивлений на аналоговый вход ПР200 0...4000 Ом. С усреднением интересная идея, вечером попробую.

Это диапазон в котором гарантируется точность измерения, т.е если вы туда повесите термосопротивление, но если вам не нужна точность, вы можете подавать и большее сопротивление, прибор его будет измерять и число в переменную запишется, просто будет большая погрешность, но в Вашей задаче это не важно. Я сейчас подаю с магазина 12 кОм, ПР измеряет в среднем 11800, если подать 100 кОм меряет 99300 вот от этих чисел и можно отталкиваться. Еще как вариант при расширенном диапазоне входного сопротивления, можно попытаться использовать старший разряд числа, к примеру сейчас я изменяю магазином сопротивление по 10 кОм и если число Ом разделить на 10000 и брать целое значение (1 при 10 кОм, 2 при 20 кОм и т.д.) то так вообще нет никакого дребезга старший разряд стабилен.

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

Сергей0308
23.08.2016, 13:41
Хотел добавить, что мне видится более правильным для экономии дискретных входов в подобном случае применение диодных шифраторов, с помощью 4 дискретных входов подключение 15 кнопок(одновременно нажимается не более одной)!

rovki
23.08.2016, 15:36
А если по RS485 передавать состояние кнопок (из Каскады) ,то можно хоть 20 кнопок и входа дискретные и аналоговые не использовать вовсе .:rolleyes:И модификацию Пр200 взять самую дешевую ...(если не нужны аналоговые входа)

Алексей Геннадьевич
23.08.2016, 17:37
Orbes
Кнопки подключайте через делитель R-2R (самое простое, что можно сделать из непрецезионных резисторов)
12шт на канал - многовато будет, т.к. АЦП 12разрядный, уменьшайте свои аппетиты... До 4-8 кнопок на канал.

Eugene.A
23.08.2016, 18:02
Да ничего не много для 12 разрядов. В бытовой аппаратуре и больше кнопок вешают с резистивной матрицей при 8-битном АЦП, встроенном в контроллер. Конечно, для этого и резисторы лучше взять поточнее, и напряжение на матрице R-2R стабилизировать. И надо обратить внимание на кнопки - далеко не все гарантированно способны коммутировать малые токи и напряжения. Например, посеребренные контакты для этого непригодны. При малых токах и напряжениях отсутствует эффект самоочистки.

Orbes
23.08.2016, 18:49
А если по RS485 передавать состояние кнопок (из Каскады) ,то можно хоть 20 кнопок и входа дискретные и аналоговые не использовать вовсе .:rolleyes:И модификацию Пр200 взять самую дешевую ...(если не нужны аналоговые входа)

Дааа...) Идея то интересная, только вот я пока не очень хорошо разобрался с интерфейсом.

Orbes
23.08.2016, 18:51
Orbes
Кнопки подключайте через делитель R-2R (самое простое, что можно сделать из непрецезионных резисторов)
12шт на канал - многовато будет, т.к. АЦП 12разрядный, уменьшайте свои аппетиты... До 4-8 кнопок на канал.

Не, аппетиты, усмирять нельзя) Буду бороться за 12 кнопок.

rovki
23.08.2016, 19:40
Дааа...) Идея то интересная, только вот я пока не очень хорошо разобрался с интерфейсом.
Поможем!Всего 1 регистр нужен для записи битов и ФБ(макрос чтение битов) :cool:

VaBo
24.08.2016, 07:54
Да ничего не много для 12 разрядов. В бытовой аппаратуре и больше кнопок вешают с резистивной матрицей при 8-битном АЦП, встроенном в контроллер. Конечно, для этого и резисторы лучше взять поточнее, и напряжение на матрице R-2R стабилизировать. И надо обратить внимание на кнопки - далеко не все гарантированно способны коммутировать малые токи и напряжения. Например, посеребренные контакты для этого непригодны. При малых токах и напряжениях отсутствует эффект самоочистки.
Зачем R-2R? С R-2R можно и одновременные нажатия распознавать!
А в остальном вы правы, конечно.

rovki
24.08.2016, 10:10
Вот без сопротивлений и входов ;) ,в ПР макрос что приводил выше ...Связь с панелью хоть проводная ,хоть без проводная ..:eek:

Серёга Букашкин
24.08.2016, 10:51
Зачем R-2R? С R-2R можно и одновременные нажатия распознавать!
Сделать 12 уровней при погрешности резисторов минимум в 5% (прецизы разных номиналов трудно купить бывает) и нестабилизированном питании резист матрицы или делителя сделать нереально. Тут только один путь -делать 2 канала по 6 уровней. Тогда это реально работает.

maximov2009
24.08.2016, 11:09
Сделать 12 уровней при погрешности резисторов минимум в 5% (прецизы разных номиналов трудно купить бывает) и нестабилизированном питании резист матрицы или делителя сделать нереально.
Не в обиду будет сказано, ничего нереального нет. Тем более на ПР200. Как я писал выше - достаточно уже при смонтированном оборудовании вывести на экранчик цифру, получающуюся при нажатии кнопок. Для этого достаточно простенькой программки. А затем, зная уже конкретные значения для каждой кнопки - поместить их в нужный коридор в основной программе. Коридор нужен по любому - учитывать температурный дрейф и пр. при эксплуатации. И никаких прецизионников не надо. Это при использовании непосредственно резистивной матрицы.
Если использовать вход по напряжению, то ПР имеет свой выход 24В для питания датчиков. Вот с него и использовать делитель на 10В вход. Не испытывал на стабильность, но надеюсь источник достаточно стабилен. Всё таки для датчиков предназначен.
С уважением.

Серёга Букашкин
24.08.2016, 11:25
Не испытывал на стабильность, но надеюсь...
А стабильности не будет. Даже если подгонять уровни под готовый делитель (в одноразовой задаче), имеем для 12 уровней даже при равномерном разбиении 8% коридор на каждый, то есть допустимое отклонение не более 3% должно быть, а температурный дрейф и от старения будет в сумме больше.

Eugene.A
24.08.2016, 11:27
Для матрицы R-2R достаточно одного номинала точных резисторов. Их можно соединять параллельно, не так ли? Ну а уж стабилизировать питание матрицы совсем тривиально. Стабилитроном, например. Или 78LXX.
Ну а насчет минимума в 5% вообще нонсенс. Хотите, отсыплю 0,1%?

Ryzhij
24.08.2016, 11:38
Когда используют резистивные делители, их стараются строить на резистивных сборках. Особенность при этом такова, что несмотря на абсолютные погрешности, соотношения между резисторами сохраняются точно. Это следствие технологии изготовления сборок.

Алексей Геннадьевич
24.08.2016, 16:16
Да ничего не много для 12 разрядов. В бытовой аппаратуре и больше кнопок вешают с резистивной матрицей при 8-битном АЦП, встроенном в контроллер. Конечно, для этого и резисторы лучше взять поточнее, и напряжение на матрице R-2R стабилизировать. И надо обратить внимание на кнопки - далеко не все гарантированно способны коммутировать малые токи и напряжения. Например, посеребренные контакты для этого непригодны. При малых токах и напряжениях отсутствует эффект самоочистки.
А как-же помехи и прочая хрень?
И 12-15 кнопок на АЦП8бит - это без возможности одновременного нажатия.
А как ток на контактах кнопки обеспечить - уже писал.

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

Ryzhij
24.08.2016, 16:24
Когда подсчитаем, во что всё это выливается, может оказаться проще панель оператора применить или на DI/DO потратиться.

Серёга Букашкин
24.08.2016, 17:11
Когда подсчитаем, во что всё это выливается, может оказаться проще панель оператора применить или на DI/DO потратиться.
Почему же 2 канала по 6 уровней не сделать? Будет достаточно надежно. Вот пример схемы делителя на 5 каналов как я делал, и всё нормально работает. Начальный ток - для контроля цепи.

Сергей0308
25.08.2016, 08:21
Почему же 2 канала по 6 уровней не сделать? Будет достаточно надежно. Вот пример схемы делителя на 5 каналов как я делал, и всё нормально работает. Начальный ток - для контроля цепи.

Какой-то странный контроль цепи! У Вас контроль части цепи, надо нормально-замкнутые(размыкающиеся) контакты кнопок для контроля всей цепи!