C:=C + ((Enc - M) AND 65535);
M:=Enc;
Это для енкодера 16 бит и С-32бита
(0...65535)
C:=C + ((Enc - M) AND 65535);
M:=Enc;
Это для енкодера 16 бит и С-32бита
(0...65535)
Добрый вечер.
Большое Вам Человеческое спасибо.
Действительно все сделали за меня.
Все правильно, в переменную кладу значение разницы теперешнего показания датчика и предыдущего и если разница более, например, 64000 (думаю за скан более 1000 импульсов не проскачит), то к С:=С-(65000-енкодер) это переход в минус с 0 на 65000. Если разница предыдущего и теперешнего значения более 64000, то С:=С+(65000-М+енкодер) это переход в плюс с 65000 на 0. Третьи вариант, обычный счёт, когда разница в обоих случаях менее 64000, то С:=С+(енкодер-М).
В общем, действительно ВСЕ САМОЕ ГЛАВНОЕ сделали за меня.
Еще раз ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ СПАСИБО.
Последний раз редактировалось pfuser; 21.12.2014 в 22:08.
Во время включения установка должна выходить в начальное положение всегда!
Если вы сохраняете значение энкодера, выключаете установку, и механически изменяете положение движимой части (по разным причинам), то при включении получится полная чушь с позиционированием.
Здравствуйте.
Это учтено.
В системе есть бесконтактный конечник исходного положения.
Перед работой системы запускается выход оси в исходное положение. То есть, едем в сторону конечника на маленькой скорости, как только увидели его (конечник) - реверсируем осью и ожидаем пропадание сигнала от конечника. Как только сигнал пропал - запоминаем значение от энкодера.
На панель оператора в качестве координаты выводится (значение энкодера - запомненное значение энкодера при выходе оси в "0" + то значение, которое задается наладчиком в качестве координаты исходного).
Для сохранения координат, без питания используют совсем др. приборы, а не энкодер.
Типа резольверы или магнитные линейки.