PDA

Просмотр полной версии : ПЛК110.Модуль FastZ-Encoder+Counter.Энкодер типа ABZ.



lexusdizel
12.09.2016, 11:49
Здравствуйте! Прошу не ругаться на, может кому нибудь покажется глупый вопрос, но все таки.

Имеется ПЛК110.220.60.Р.М. и энкодер типа ABZ.

1. Подключил к быстрым входам 1,2,3 фазы энкодера ABZ соответственно. (1-А, 2-В, 3-Z)
2. Заменил модуль Fast Discrete inputs на FastZ-Encoder+Counter.
3. Подключился к ПЛК, залил в него программу, покрутил вал энкодера. Счет идет и в прямом и обратном направлении. Все хорошо.

И собственно вопрос: Каким образом считать количество импульсов, выдаваемых фазой Z для подсчета количества полных оборотов вала энкодера?

Sulfur
15.09.2016, 11:36
Может быть по показаниям энкодера?
IF Encoder = 0 THEN Маркер:= TRUE; ELSE Маркер:= FALSE;

Далее по фронту маркера инкременируем счетчик оборотов.

lexusdizel
16.09.2016, 06:50
Может быть по показаниям энкодера?
IF Encoder = 0 THEN Маркер:= TRUE; ELSE Маркер:= FALSE;

Далее по фронту маркера инкременируем счетчик оборотов.


Спасибо за ответ. Такой вариант мне в голову тоже приходил. Просто я подумал, может есть еще какие нибудь варианты.
При таком варианте может накопиться ошибка, если будут иметь место пропуски импульсов, т.к. это программная реализация, а не сигнал непосредственно с энкодера.

Владимир Ситников
16.09.2016, 09:57
Спасибо за ответ. Такой вариант мне в голову тоже приходил. Просто я подумал, может есть еще какие нибудь варианты.
При таком варианте может накопиться ошибка, если будут иметь место пропуски импульсов, т.к. это программная реализация, а не сигнал непосредственно с энкодера.

Какая частота энкодера? И какая задача (что именно нужно считать, с какой частотой идут импульсы)?
Оно крутится в одну сторону или может хаотично менять направление?

Если крутится в одну сторону и не вращается чаще 500 об/сек (ну, не чаще 500 z импульсов в секунду), то можно просто проверять IF Encoder < БылоВПрошлыйРаз THEN плюсодин;
Т.е. ловить конкретное значение 0 почти бесполезно (ну, его можно не поймать), а вот вариант "значение стало меньше, чем видели в прошлый раз" уже гораздо надёжнее.


Если же Z импульсы идут часто или крутиться может в разные стороны, то пишите ответом на это сообщение Вольда (http://www.owen.ru/forum/showthread.php?t=22169&page=18&p=220320&viewfull=1#post220320), что так и так, модуля FastEncoder недостаточно, нужно обороты считать. Скорость оборотов такая-то, скорость импульсов такая-то.

Ryzhij
16.09.2016, 10:02
Если будут пропуски импульсов, то энкодер, или кабель до него, пора менять.
При пропусках импульсов каналов А-В будет нарушаться непрерывность счёта в области нуля. А при пропусках в канале Z показания энкодера либо будут становиться отрицательными, либо будут превышать модуль (число отсчётов на оборот) самого энкодера с учётом коэффициента счёта.

Sulfur
16.09.2016, 22:21
Пропуски будут в зависимости от скорости вращения энкодера. У меня в одном проекте реализована функция детектирования нуля энкодеоа. Но:
1. Энкодер 360имп\об вращается со скоростью не более 20 об\мин.
2. Я не применял FastEncoder, а реализовал энкодер программно в прерывании по таймеру 20мкс. (ПЛК110-60 старой модели)
3. Детектирование нуля условное Т. е. IF Энкодер =>0 OR Энкодер <=2 THEN Действие.