Сообщение от
tagor4444
Подпрограмма fast, должна от двух AB-энкодеров давать две координаты. Правильно ли там "нарисовано" ?
Обработка входов неправильна:
1. Обрабатывать надо строго по фронту сигнала А, тогда не будет метаний, тем более, что некотролируемо.
2. Как-то оно сложно все у вас... В рамка вопроса надо сделать так:
Объявление переменных (адаптируйте к вашему проекту):
Код:
FUNCTION_BLOCK XY_ENCODER
VAR_INPUT
IN: BYTE;
bDiscretInput: BYTE; (*Дискретные входы для концевиков нулевой точки*)
END_VAR
VAR_OUTPUT
wAxis1: WORD; (*Координата по оси 1*)
wAxis2: WORD; (*Координата по оси 2*)
END_VAR
VAR
DET: R_TRIG;
END_VAR
Сама блок схема энкодеров:
encoder.jpg
Функциональный блок вызываете из программы fast, на входы подаете сигналы с "fast discrete inputs" и от двух обычных входов с концевиков нулевой точки (или от выхода Z энкодера, буде таковой найдется). Где-то так:
fast.jpg
На выходе получаете координаты в пределах размерности типа переменных wAxis1, wAxis2.
PS: Для топикмастера, может и не актуально, да, глядишь, пригодится кому...