Цитата Сообщение от vladimirisitnikov Посмотреть сообщение
AlekseyK, попробуйте так:
m : WORD; (* текущее значение fast encoder *)
ottuda : WORD; (* прошлое показание encoder'а *)
c: DINT; (* абсолютное положение encoder'а, без проблем с 65535 *)

c := c + WORD_TO_INT(m - ottuda);
ottuda := m;

Почти хорошо. )) После перехода через максимальное значение регистра энкодера появляется один лишний такт в "С".