Программа для подсчёта импульсов абсолютного энкодера на языке ST
В данном тесте использован 23 разрядный абсолютный энокодер с возможностью использования в качестве инкрементального (ESTUN PRONET). Количество импульсов на оборот установлено 5760. Подбором скорости вращения частота следования импульсов примерно 50кГц.
Была использована следующая схема:
Программу будем писать на языке ST.
Добавляем в проект библиотеку Stantard64
PLC_PRG
PROGRAM PLC_PRG
VAR
In :BYTE;
Last_In :BYTE;
bCount :LWORD;
bReset :BOOL;
CTU_01 :LCTU;
bCount1 :LWORD;
END_VAR
IF In <> Last_In THEN
bCount := bCount + 1; // Регистрируем изменение входного импульса и в зависимости от состояния выполняем действие
Last_In := In;
END_IF
IF bReset THEN // Обнуление счетчика
bCount := 0;
END_IF
CTU_01( // Подсчет импульсов другим методом.
CU:= In.0 ,
RESET:= bReset , // Обнуление счетчика
PV:= ,
Q=> , // По нулевому биту. В данном случае значение переменной bCount будет отличаться от значения переменной bCount1 в два раза
CV=> );
bCount1 := CTU_01.CV;
Во вкладке «Конфигурация» устройства HighSpeedIo проматываем в самый низ и обнуляем временной фильтр входа контроллера, на который подаётся импульс с энкодера:
Переходим в MainTask и устанавливаем минимальный интервал цикла сканирования (500 мкс):
Применим соотнесение входов/выходов.
Программа готова!
**Tест выполнен самыми простыми методами. Для выполнения серьезной работы необходимы входные данные.