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

 
 
 
Reply to this topicStart new topic
> промыш контроллер Овен плк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
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
LII
сообщение Mar 28 2007, 11:31
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 255
Регистрация: 30-01-07
Из: Калининградская обл.
Пользователь №: 24 867



Изложенными выше методами точного позиционирования достигнуть нельзя. При подходе к заданной точке, нужно не выключать двигатель а снижать его скорость пропорционально рассогласованию, продолжая отслеживать текущее положение. Для реализации данного алгоритма необходимо знать текущую скорость (тахогенератор) и иметь возможность управлять скоростью двигателя. Ни того ни другого в CD-роме нет, но можно кое-что попробовать.
Когда-то я занимался вопросом простого регулирования скорости различных двигателей и натолкнулся на статью, где предлагалось регулировать скорость двигателя постоянного тока с помощю ШИМ. При этом сообщалось, что существует хорошая зависимость скорости от скважности импульсов причем мало зависящая от нагрузки, гораздо лучшая, нежели зависимость от простого уменьшения напряжения. Сам не пробовал, но если это так, то во-первых можно обойтись без тахогенератора и во-вторых есть возможность управлять скоростью двигателя имея в распоряжении только один ключ вкл/выкл. Если схема подключения двигателя лотка CD-рома позволит с некоей частотой включать и выключать двигатель, то можно попробовать реализовать данный алгоритм.
И еще. Необходимо определить зону допустимой ошибки, при попадании в которую положение считается достигнутым. Если этого не сделать, то при такой ужасной кинематике, лоток будет постоянно дергаться вокруг заданной точки пытаясь точно спозиционировать и постоянно пролетая ее.


--------------------
Всем творческой удачи и профессионального роста!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 14:36
Рейтинг@Mail.ru


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