это какойто глюк КДС. на выходе move4 в cou число импульсов есть, просто почемуто не отобразлось, оно дальше в move6 используется
Вложение 49009
Вид для печати
это какойто глюк КДС. на выходе move4 в cou число импульсов есть, просто почемуто не отобразлось, оно дальше в move6 используется
Вложение 49009
Блинк делает на выходе ноль на время TIMELOW, следом единицу на время TIMEHIGH, до тех пор, пока ENABLE в единице.Цитата:
блинк и триггер так понимаю включают разрешение на подсчёт импульсов на одну секунду
R_TRIG выдает один импульс длительностью в один цикл ПЛК в момент изменения входа с нуля в единицу.
И где тут?Цитата:
включают разрешение на подсчёт импульсов на одну секунду
вот както так сделал
Вложение 49017
пока считает в "попугаях", но вроде повторяемые результаты, в обороты надо пересчитать
не, чот фигня получилась.
а как можно организовать паузу на ST в несколько миллисекунд?
Триггер ТР, по заднему фронту (через F_TRIG) продолжение работы.
Одна миллисекнудна уверенно отрабатывается? Есть подозрение, что цикл ПЛК несколько больше.
сделал 10мС.
а какой смысл триггер использовать?
вроде без него вышло. тестировал пока только электротвёрткой крутил энкодер, +-1 повторяемость есть
Вложение 49034
только непонятка с направлением. в одну сторону кручу скорость 177-178 попугаев, в другую с тойже скоростью - 79-80 попугаев.
мне важна не абсолютная точность в метрах-оборотах, а повторяемость, скорее всего буду через табличку или CASE переводить в аналоговое значение 0-10в
ПЛК160-24.У-М
энкодер Fotek WE-M4T 1 имп/мм, 200 имп/оборот
скорость будет от 0 до 150 м/мин
выходное напряжение пропорционально скорости от 0 до 10 в.
возможно будет нелинейность характеристики скорость/напряжение, но это уже по факту буду смотреть и сравнивать ручным тахометром (в нём есть функция измерения линейной скорости)
Код:
VAR
enc1:WORD:=0;
enc2:WORD:=0;
out:WORD:=0;
spdRL:REAL;
myTON:TON; (*ФБ таймера*)
END_VAR
---------------
myTON(IN:= NOT myTON.Q, PT:=T#100ms ); (* вызов таймера с самосбросом*)
IF myTON.Q THEN
enc2:=count_0;
IF enc2>=enc1 THEN
out:= enc2-enc1;
END_IF;
END_IF;
spdRL:=WORD_TO_REAL(out)*0.60; (*пересчёт под выход m/min*)
enc1:=enc2;
Результат тестирования - Скорость прыгает +-1м/мин (возможно изза плохого крепления энкодера, будут переделывать)
При показаниях ручного с колёсиком 80м/мин, в кодесисе отображает 79-81м/мин.
Для моих целе точность нормальная, будет мешать дрожание, загрублю счёт, погасив младшие биты