Ув. Александр, предлагаю Вам не забывать о таких вещах, как:
тел: (495) 64-111-56,
Поддержка: support@owen.ru
И такой вещи, как Skype.
Пора брать инициативу в свои руки и не сидеть тут до посинения!
Ув. Александр, предлагаю Вам не забывать о таких вещах, как:
тел: (495) 64-111-56,
Поддержка: support@owen.ru
И такой вещи, как Skype.
Пора брать инициативу в свои руки и не сидеть тут до посинения!
У импульса нет фронтов, а есть фронт импульса и срез импульса. Если хочешь узнать об обработке сигналов энкодера в ПЛК "ОВЕН" набери в Поиске по форуму слово энкодер. Много чего узнаешь, может, даже прослезишься. Эта тема обсуждалась многократно и бурно. Столько копий было сломано, просто жуть.
Последний раз редактировалось IVM; 04.09.2012 в 19:07.
Спасибо всем за участие, разобрался уууф.
В прерываниях из таймера отслеживается изменения состояния быстрых входов POU пользователя как в примере:
in:=SysPortIn(0);
IF (in<>last_in) THEN
t_count:=t_count+1;
Сказалось отсутствие опыта.
Тема закрыта
Это зависит от программы обработки.
В этой:
будет умножение разрешения энкодера на 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;
Первая версия медленная, для низкооборотистых применений, вторая быстрая. Оба алгоритма работают на реальных машинах, если что.