Это зависит от программы обработки.
В этой:
будет умножение разрешения энкодера на 4Phase.0:=A;
Phase.1:=B;
CASE OldPhase OF
2: CASE Phase OF
3: NewEnc:=OldEnc + 1;
0: NewEnc:=OldEnc - 1;
END_CASE;
0: CASE Phase OF
2: NewEnc:=OldEnc + 1;
1: NewEnc:=OldEnc - 1;
END_CASE;
1: CASE Phase OF
0: NewEnc:=OldEnc + 1;
3: NewEnc:=OldEnc - 1;
END_CASE;
3: CASE Phase OF
1: NewEnc:=OldEnc + 1;
2: NewEnc:=OldEnc - 1;
END_CASE;
END_CASE;
OldPhase:=Phase;
OldEnc:=NewEnc;
IF Z =TRUE THEN Enc:=0; END_IF;
В этой:
умножения не будет.in:=SysPortIn(0);
IF in.0<>Old_in THEN
IF in.0=TRUE THEN
IF in.1=TRUE THEN
Enc:=Enc+1;
ELSE
Enc:=Enc-1;
END_IF;
END_IF;
END_IF;
Old_in:=in.0;
IF in.0=TRUE AND in.1=TRUE AND in.2=TRUE THEN Enc:=0; (*Сброс показаний энкодера*)
END_IF;
Первая версия медленная, для низкооборотистых применений, вторая быстрая. Оба алгоритма работают на реальных машинах, если что.





Ответить с цитированием