реклама на сайте
подробности

 
 
> промыш контроллер Овен плк150, тестируем на cdrom'е
Rolex
сообщение Mar 26 2007, 23:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-03-07
Пользователь №: 26 389



фирма получила образец "поизучать",ни у кого из гуру времени нет,посадили нас,студентов.В общем мы подключили его к двигателю cd-rom'а(который отвечает за выдвижение лотка) и контактному датчику положения этого лотка,написали программу,всё наконец заработало.Сегодня начальство предложило усложнить задачу,отказываться неудобно))Надо подключить как-то к лотку переменный "ползунковый" резистр,чтобы точно отслеживать и контролировать его положение.Для нас задача не из лёгких(2 недели стаж).У кого нибудь есть идеи? В железе "теория проста":запитать резистр,както "привинтить" его к лотку и подключить это дело к аналоговому входу контроллера.Так просто?С аналогово входа сигнал уже не 0 или 1(true false),как снимать сигнал?,в документации про это очень мало.Там стоит АЦП,можно присвоить входу переменную int и снимать уже оцифрованный сигнал?Помогите советом пожалуйста.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Demeny
сообщение Mar 27 2007, 12:49
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Rolex @ Mar 27 2007, 00:42) *
Надо подключить как-то к лотку переменный "ползунковый" резистр,чтобы точно отслеживать и контролировать его положение.Для нас задача не из лёгких(2 недели стаж).У кого нибудь есть идеи? В железе "теория проста":запитать резистр,както "привинтить" его к лотку и подключить это дело к аналоговому входу контроллера.Так просто?С аналогово входа сигнал уже не 0 или 1(true false),как снимать сигнал?,в документации про это очень мало.Там стоит АЦП,можно присвоить входу переменную int и снимать уже оцифрованный сигнал?Помогите советом пожалуйста.

нда...
С железом вы и сами всё правильно рассказали. Смотрим в доке, какие входы у АЦП. Допустим , вход -10...+10 вольт. Тогда берём ползунковый переменник килоом этак на 10-20, пробуем сначала, сможет ли движок сидирома его двигать (эти движки слабоваты вобщем-то...). К ползунковому контакту цепляем вход АЦП, к двум другим "землю" и 10 вольт соответственно.
А вот с программной частью всё будет сложнее. Вам нужно, как я понял, двигать лоток на заданную позицию (уставку положения). Программа должна помнить калибровочное значение времени полной перекладки лотка из закрытого положения в открытое. Тогда в первом приближении примерно так
1)Если уставка поменялась, начинаем телодвижения...
2)Смотрим текущее положение, пусть 28%, смотрим новую уставку, пусть 37%, считаем разницу 37-28=9%, включаем двигатель в нужную сторону...
3)Отсчитываем время, равное 9% от времени полной перекладки...
4)Выключаем двигатель.
Данный алгоритм есть первое приближение к идеалу. Далее если он не обеспечит точность, нужно будет учесть время старта двигателя, выбег после остановки... и т п
Высшим пилотажем будет обсчёт этого дела на лету, в процессе движения лотка, коррекция времени перекладки в процессе работы... Короче, при желании можно сгородить целую самообучающуюся систему.
Весь вопрос - а надо ли оно кому-нибудь? angry.gif


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Rolex
сообщение Mar 27 2007, 16:47
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 21-03-07
Пользователь №: 26 389



Спасибо что отозвались.
Вопрос по программной части:
Разве нельзя сделать так :чпользователь ввёл например 37 %,используем формулу для нахождения соответствующего им сопротивления резистора,и двигаем двигатель в нужном направлении покуда оно не будет достигнуто(всё время считывая его с аналового входа контроллера).?

Я работаю в среде CoDeSys,до этого писал на ST.Это не оптимально.Теперь думаю что больше подходит :LD ,FBD или всё вместе в SFC?.Вы можете посоветовать,что лучше для этой цели?.Я склоняюсь к SFC.
Go to the top of the page
 
+Quote Post
Demeny
сообщение Mar 28 2007, 08:28
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Rolex @ Mar 27 2007, 17:47) *
Вопрос по программной части:
Разве нельзя сделать так :чпользователь ввёл например 37 %,используем формулу для нахождения соответствующего им сопротивления резистора,и двигаем двигатель в нужном направлении покуда оно не будет достигнуто(всё время считывая его с аналового входа контроллера).?

1. А если по какой-либо причине уставка так и не будет достигнута, например, заклинило лоток ? Двигатель сожгёте...плюс бесконечный цикл в программе. Поэтому всё равно нужен таймаут на выключение, и если по истечении таймаута уставка так и не достигнута - сигнализировать об ошибке.
2. Выбег двигателя после выключения по инерции.
3. При измерении положения лотка неизбежен некоторый шум измерения, плюс бегунок резистора - контактная штука, и поэтому возможны случайные пики в показаниях АЦП. Всё равно вы будете анализировать положение по условиям "больше или равно уставке" или "меньше или равно уставке" - поэтому случайные недостоверные измерения приведут к ложным выключениям двигателя.
Чтобы этого не происходило - на измерение положения нужно повесить фильтр (проще говоря, усреднение по N измерениям) - а это приведёт к временной задержке в измерении (см п. 4)
4. Ещё более существенный нюанс - временные задержки между реальным положением лотка и измеренным с помощью усреднения, а также между выдачей управления и реальным отключением двигателя (реле? электронный ключ с ёмкостью?).

Существенность или несущественность всех этих моментов нужно оценивать только экспериментально и руководствоваться требуемой точностью. Насколько я помню, лоток полностью выезжает за секунду. Поэтому любая задержка в цепях управления и обратной связи по измерению на 10 мс даст неточность в 1%.
Мы в свое время долго "кувыркались" с драйвером управления газовой заслонкой на котле - там тоже стоит двигатель и есть обратная связь по положению, задача очень похожая. В результате получился симбиоз вашего и моего алгоритма - по получению уставки включаем двигатель в нужном направлении и ждём достижения уставки минус 5% (по недостижению за время таймаута - выключение и ошибка), по достижению значения "уставка - 5%" оставляем двигатель включённым "ещё чуть-чуть", т. е. на время, рассчитанное исходя из 5% от полной перекладки. Полученная нами погрешность позиционирования не превысила 1%.
Цитата(Rolex @ Mar 27 2007, 17:47) *
Я работаю в среде CoDeSys,до этого писал на ST.Это не оптимально.Теперь думаю что больше подходит :LD ,FBD или всё вместе в SFC?.Вы можете посоветовать,что лучше для этой цели?.Я склоняюсь к SFC.

Я не силён в этих системах. Решать вам.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 18:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016