так обеспечит ПЛК 100 или 110 частоту считывания импульсов АБ энкодера хотя бы 5 кГц как указано в описании ?
Вид для печати
Разработчики! Сделайте пожалуйста сброс счетчика энкодера. А в идеале еще прерывание по достижению значения.
А как можно "попилить" или написать новый модуль вместо имеющегося? Я про модуль "encoder".
Я писал самостоятельно программу обработки энкодера и затолкал в прерывание 20мс.
Переменную Enc в основной программе не изменять.Код:VAR_GLOBAL;
in:BYtE; (*текущее состояние входов DI1-DI4*)
old_in:BYTE; (*предыдущее состояние входов*)
Enc:WORD; (*счетчик энкодера*)
END_VAR;
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;
Как-то неполно выглядит... и тем не менее, сколько по времени занимает обработка входов?
Неполно, да. Выдернул код из архива проекта не средствами КДС, т. к. в данный момент КДС нет в наличии. Предоставил только саму идею. Эта реализация без проблем работает уже год с энкодером 360 имп\об и скоростью вращения 30rpm max, но и на большей скорости пропусков не обнаружено. Конкретный замер не проводил.
Используется функция SysPortIn, которая читает "быстрые" входы ПЛК.
ЗЫ: В предыдущем моем посте ошибка - должно быть 20мкс вместо 20мс. Так что теоретически частота опроса 50кГц. Будет ли на практике такое работать - вопрос.
Я так понимаю SysPortIn это обращение к регистру входа? А не подскажите, где по этой теме почитать можно справку?