Цитата Сообщение от Вольд Посмотреть сообщение
Значит цена одного импульса энкодера 360/4000 = 0,09 град/имп. Так ? У вас энкодер к ПЛК как подключен ? Балка на 90 градусов за какое время поворачивается.
Ось поворотной балки с осью гиба не совпадает, поэтому градусы указывать бесполезно, и я для простоты отградуировал 0,1 условный градус на импульс. В каком смысле как подключен энкодер? Физически DI3, DI4, программно fast discrete inputs - direct control



in := SysPortIn ( 0 );

current1.0 := in.0;
current1.1 := in.1;

CASE current1 OF
0: IF old1 = 1 THEN
count1 := count1 + 1;
ELSIF old1 = 2 THEN
count1 := count1 - 1;
END_IF
1: IF old1 = 3 THEN
count1 := count1 + 1;
ELSIF old1 = 0 THEN
count1 := count1 - 1;
END_IF
2: IF old1 = 0 THEN
count1 := count1 + 1;
ELSIF old1 = 3 THEN
count1 := count1 - 1;
END_IF
3: IF old1 = 2 THEN
count1 := count1 + 1;
ELSIF old1 = 1 THEN
count1 := count1 - 1;
END_IF
END_CASE

old1 := current1;

IF reset1 = TRUE THEN
count1 := count11;
END_IF

current2.0 := in.2;
current2.1 := in.3;

CASE current2 OF
0: IF old2 = 1 THEN
count2 := count2 + 1;
ELSIF old2 = 2 THEN
count2 := count2 - 1;
END_IF
1: IF old2 = 3 THEN
count2 := count2 + 1;
ELSIF old2 = 0 THEN
count2 := count2 - 1;
END_IF
2: IF old2 = 0 THEN
count2 := count2 + 1;
ELSIF old2 = 3 THEN
count2 := count2 - 1;
END_IF
3: IF old2 = 2 THEN
count2 := count2 + 1;
ELSIF old2 = 1 THEN
count2 := count2 - 1;
END_IF
END_CASE

old2 := current2;

IF reset2 = TRUE THEN
count2 := count21;
END_IF