PDA

Просмотр полной версии : ПЛК160-м и энкодер и freq_metr, непонятки



manowar666
12.05.2020, 12:38
скопировал пример с сайта по вычислению скорости энкодера, откомпилировался, запускается, счётчики считают, энкодер считает, а на выходе частота не меняется.
такое ощущение что не отрабатывается BLINK.
я так понимаю что при запущенной программе у него должен выход "мигать"? триггер тоже в 0
висит постоянно FALSE и думаю изза этого дальше программа не отрабатывается.

в чём может быть проблема?

48985

Sulfur
12.05.2020, 13:40
Временно увеличьте времена на Блинке. Реал-тайм наблюдение тормозит, особенно если через RS-232 Debug. Или соединитесь с ПЛК по LAN, если там такое есть.

manowar666
12.05.2020, 17:12
Временно увеличьте времена на Блинке.

увеличил, вроде блнк отрабатывается, но в OUT так ничего и нет
может гдето в другом проблема?



Или соединитесь с ПЛК по LAN, если там такое есть.

кстати тоже чтото не выходит. пинг проходит, а КДС не соединяется
UPD:настоил через езернет, ничго внешне не поменялось такто.

энкодер настроен так:

49000

Sulfur
12.05.2020, 19:50
Можете предоставить проект?
А так же пояснить следующее:
1. Разрешение энкодера,
2. Параметр, который требуется получить.
--
Кстати, поскольку после блинка стоит r_trig, то в блинке можно ставить одинаковые верхний и нижние времена. В данном случае по 500мс. Все равно после r_trig будет только один импульс в секунду (в данном примере).

manowar666
12.05.2020, 20:59
проекта как такого нет, пишу на основе примеров. требуется синхронизация скорости двух агрегатов.
нужно получить с энкодера значение скорости в м/с (разрешение 1 имп/мм) не помню сколько на оборот, уже пришёл с работы
потом перевести это значение (с какимто коэфф, буду подбирать опытным путём) в аналоговый сигнал 0-10в и подать его на драйвер привода второго станка
вообще пишу на ST, нужно будет както с CFC увязать будет, но это уже второй вопрос.

melky
12.05.2020, 22:46
Может я чего не понимаю, но MOVE (4) по импульсу пишет всегда 0... или что там за 0 ?

capzap
13.05.2020, 08:09
в коде на CFC все очень просто, переменная cou сперва обнуляется потом передается через move, потому что последовательность 5 -> 6, тут либо дополнительная переменная в которую в конце кода будет присваиваться cou , либо изменить порядок, что гораздо сложнее

melky
13.05.2020, 08:19
ну так оба MOVE там одним импульсом пишется. то есть cou станет ноль и далее она то уже ноль..

capzap
13.05.2020, 08:38
ну так оба MOVE там одним импульсом пишется. то есть cou станет ноль и далее она то уже ноль..

в приведенном коде у спрашивающего должнен быть организован сброс переменной, он сделан не правильно, где и как записывается эта cou как сказал Валенок
к цыганам

manowar666
13.05.2020, 09:40
Тогда к цыганкам. Они разъяснят. Думаешь тут гадать будут - что за out, где еще в него кладут, какой его тип и т.п. ?
Накой blink-r_trig-move ? можешь просто 0 навсегда загнать в первый вход MUL. Эффект то же.
Накой div - из него только 0 или 1

Ну и зачем тогда онанизм в виде квадратиковой арифметики ?

это пример подсчёта скорости с форума, на его основе и делаю.
блинк и триггер так понимаю включают разрешение на подсчёт импульсов на одну секунду, но чот дальше я в этих квадратиках запутался

manowar666
13.05.2020, 09:42
Может я чего не понимаю, но MOVE (4) по импульсу пишет всегда 0... или что там за 0 ?

это какойто глюк КДС. на выходе move4 в cou число импульсов есть, просто почемуто не отобразлось, оно дальше в move6 используется

49009

Sulfur
13.05.2020, 12:38
блинк и триггер так понимаю включают разрешение на подсчёт импульсов на одну секунду
Блинк делает на выходе ноль на время TIMELOW, следом единицу на время TIMEHIGH, до тех пор, пока ENABLE в единице.
R_TRIG выдает один импульс длительностью в один цикл ПЛК в момент изменения входа с нуля в единицу.
И где тут
включают разрешение на подсчёт импульсов на одну секунду?

manowar666
13.05.2020, 13:36
вот както так сделал

49017

пока считает в "попугаях", но вроде повторяемые результаты, в обороты надо пересчитать

manowar666
13.05.2020, 14:36
не, чот фигня получилась.
а как можно организовать паузу на ST в несколько миллисекунд?

Sulfur
13.05.2020, 15:01
Триггер ТР, по заднему фронту (через F_TRIG) продолжение работы.
Одна миллисекнудна уверенно отрабатывается? Есть подозрение, что цикл ПЛК несколько больше.

manowar666
13.05.2020, 16:32
Триггер ТР, по заднему фронту (через F_TRIG) продолжение работы.
Одна миллисекнудна уверенно отрабатывается? Есть подозрение, что цикл ПЛК несколько больше.

сделал 10мС.

а какой смысл триггер использовать?
вроде без него вышло. тестировал пока только электротвёрткой крутил энкодер, +-1 повторяемость есть

49034

только непонятка с направлением. в одну сторону кручу скорость 177-178 попугаев, в другую с тойже скоростью - 79-80 попугаев.

мне важна не абсолютная точность в метрах-оборотах, а повторяемость, скорее всего буду через табличку или CASE переводить в аналоговое значение 0-10в

manowar666
13.05.2020, 17:56
Так и будешь картинки показывать ?

а что не так с картинками?
или лучше текстом выкладывать?

manowar666
13.05.2020, 18:02
ПЛК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;

manowar666
14.05.2020, 07:39
PS
Если что, то представители ФСБ, Моссада, МИ6, китайской разведки и даже Илон М. обещали не использовать ваши разработки
Прям камень с плеч))

Кстати, вчепа в момент написания подошёл технолог, изза плеча долго вчитывался и потом расспрашивал кому и зачем я это пишу))

manowar666
15.05.2020, 14:22
Результат тестирования - Скорость прыгает +-1м/мин (возможно изза плохого крепления энкодера, будут переделывать)
При показаниях ручного с колёсиком 80м/мин, в кодесисе отображает 79-81м/мин.
Для моих целе точность нормальная, будет мешать дрожание, загрублю счёт, погасив младшие биты