Цитата(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.
Я не силён в этих системах. Решать вам.
Сделано в Китае. Упаковано в России.