PDA

Просмотр полной версии : Время реакции ПЛК



tagor4444
18.05.2018, 11:15
Приветствую! Имеется станок для для загибания полосы 4 мм, управляется двумя ПЧВ101 ( поворотная балка и задний упор ), в комплекте ПЛК110-220.60.Р-М ( М02 ), ИП320, энкодеры на обе оси. Возникла проблема в процессе доводки программы: угол нужно выдерживать в пределах 0..+0,2, в реале скачет порядка0..+0,5 градусов, поворотная балка к заданной точке подходит на минимальной скорости 0,1 Гц . Путем разных подходов и манипуляций пришел к выводу, что это зависит от длительности цикла программы и паспортной скорости двигателя, как один из вариантов вижу увеличить отношение входных оборотов к выходным у редуктора, но хотелось бы все сделать без механических переделок. Есть ли возможность как то программно считать время цикла внутри программы, чтоб потом это значение использовать как обратную связь, например чтоб сигнал пуск в командном слове частотника формировался на основном этапе по процессу, а в окончании когда разница в один цикл примерно остается, то управление переходит по времени, формируется импульс зависящий от времени цикла, и то какая разница между фактическим и заданым значением координаты осталась при переходе на управление по времени. Заранее прошу извинить мое косноязычие, сам еще до конца не представляю до конца, как хочу это реализовать.

Вольд
18.05.2018, 11:57
Время цикла ПЛК 1 мс. Что вы там собираетесь ловить ? С обычным частотником большей точности не добиться. Тут нужен ШД или сервопривод. Частотник у вас через дискретные входы управляется ?

tagor4444
18.05.2018, 12:12
Время цикла ПЛК 1 мс. Что вы там собираетесь ловить ? С обычным частотником большей точности не добиться. Тут нужен ШД или сервопривод.

1. Ожидаемо, что предложили ШД или серво, заказчику желательно из того, что есть сделать ( кстати на импортном подобном станке стоит частотник с АД, видимо из за того что там надо момент хороший в широком диапазоне скоростей, но тут я спорить не буду, ибо не знаю ).
2. Такое ощущение, что время цикла гораздо больше, порядка может 40 мс может.
3. Может я неправильно вопрос задал, можно ли например считать количество циклов за секунду,

Дмитрий Артюховский
18.05.2018, 12:19
у ПЛК этой серии есть неприятная особенность - выходы с номерами DO5 - и старше устанавливаются с неопределенным и довольно значительным временем реакции, используйте "быстрые" (DO1-DO4) и желательно поменять ПЛК на транзисторные выходы, это даже на цикле 1 мс весьма заметно.

Вольд
18.05.2018, 12:47
1. Ожидаемо, что предложили ШД или серво, заказчику желательно из того, что есть сделать ( кстати на импортном подобном станке стоит частотник с АД, видимо из за того что там надо момент хороший в широком диапазоне скоростей, но тут я спорить не буду, ибо не знаю ).
2. Такое ощущение, что время цикла гораздо больше, порядка может 40 мс может.
3. Может я неправильно вопрос задал, можно ли например считать количество циклов за секунду,

У вас энкодер, который мерит угол сгиба на каком валу сидит. Цена одного импульса этого энкодера (град/имп) какая ?

40 мс - это фантастика. Вы его сами установили ? Вашу программу этот ПЛК легко за 1 мс выполнит.

Время цикла 1 мс означает, что за 1 секунду программы выполнится 1000 раз. ;)

Плохо что ваш ПЛК имеет релейные, а не транзисторные выходы.

Еще раз спрашиваю, каким образом управляется ПЧВ (RS-485, дискретные входы) ?

tagor4444
18.05.2018, 12:57
у ПЛК этой серии есть неприятная особенность - выходы с номерами DO5 - и старше устанавливаются с неопределенным и довольно значительным временем реакции, используйте "быстрые" (DO1-DO4) и желательно поменять ПЛК на транзисторные выходы, это даже на цикле 1 мс весьма заметно.

Я никак не использую физические выходы, управляю частотниками по rs-485, хотя и пробовал через физические выходы управлять, разницы не заметил, но спасибо, на будущее учту.

tagor4444
18.05.2018, 13:06
У вас энкодер, который мерит угол сгиба на каком валу сидит. Цена одного импульса этого энкодера (град/имп) какая ?

40 мс - это фантастика. Вы его сами установили ? Вашу программу этот ПЛК легко за 1 мс выполнит.

Время цикла 1 мс означает, что за 1 секунду программы выполнится 1000 раз. ;)

Плохо что ваш ПЛК имеет релейные, а не транзисторные выходы.

Еще раз спрашиваю, каким образом управляется ПЧВ (RS-485, дискретные входы) ?

Энкодер стоит на оси вращения поворотной балки, 1000 имп/об, выше писал, что управляю ПЧ по rs-485

Вольд
18.05.2018, 13:23
Энкодер стоит на оси вращения поворотной балки, 1000 имп/об, выше писал, что управляю ПЧ по rs-485

Значит цена одного импульса энкодера 360/4000 = 0,09 град/имп. Так ? У вас энкодер к ПЛК как подключен ? Балка на 90 градусов за какое время поворачивается.

tagor4444
18.05.2018, 13:39
Значит цена одного импульса энкодера 360/4000 = 0,09 град/имп. Так ? У вас энкодер к ПЛК как подключен ? Балка на 90 градусов за какое время поворачивается.

Ось поворотной балки с осью гиба не совпадает, поэтому градусы указывать бесполезно, и я для простоты отградуировал 0,1 условный градус на импульс. В каком смысле как подключен энкодер? Физически DI3, DI4, программно fast discrete inputs - direct control



in := SysPortIn ( 0 );

current1.0 := in.0;
current1.1 := in.1;

CASE current1 OF
0: IF old1 = 1 THEN
count1 := count1 + 1;
ELSIF old1 = 2 THEN
count1 := count1 - 1;
END_IF
1: IF old1 = 3 THEN
count1 := count1 + 1;
ELSIF old1 = 0 THEN
count1 := count1 - 1;
END_IF
2: IF old1 = 0 THEN
count1 := count1 + 1;
ELSIF old1 = 3 THEN
count1 := count1 - 1;
END_IF
3: IF old1 = 2 THEN
count1 := count1 + 1;
ELSIF old1 = 1 THEN
count1 := count1 - 1;
END_IF
END_CASE

old1 := current1;

IF reset1 = TRUE THEN
count1 := count11;
END_IF

current2.0 := in.2;
current2.1 := in.3;

CASE current2 OF
0: IF old2 = 1 THEN
count2 := count2 + 1;
ELSIF old2 = 2 THEN
count2 := count2 - 1;
END_IF
1: IF old2 = 3 THEN
count2 := count2 + 1;
ELSIF old2 = 0 THEN
count2 := count2 - 1;
END_IF
2: IF old2 = 0 THEN
count2 := count2 + 1;
ELSIF old2 = 3 THEN
count2 := count2 - 1;
END_IF
3: IF old2 = 2 THEN
count2 := count2 + 1;
ELSIF old2 = 1 THEN
count2 := count2 - 1;
END_IF
END_CASE

old2 := current2;

IF reset2 = TRUE THEN
count2 := count21;
END_IF

Вольд
18.05.2018, 14:04
0,1 условный градус на импульс откуда взялся ? И что за условный градус такой ?

tagor4444
18.05.2018, 14:15
0,1 условный градус на импульс откуда взялся ? И что за условный градус такой ?

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

Вольд
18.05.2018, 14:39
Выше писал же, что настоящих градусов все равно не добиться из за смещения между осями гиба и поворотной балки, так что я разделил окружность на 400 "градусов", так считать удобнее при имеющемся энкодере

В окружности 400 градусов ? Это новое слово в геометрии. ;) Покажите откуда берется 0,1 градус на импульс.

capzap
18.05.2018, 14:52
Вольд завязывайте, как будто не видите кавычек. До Вас доносят что например вместо десятичной системы счисления используют свою, так доступнее?

Вольд
18.05.2018, 15:03
До Вас доносят что например вместо десятичной системы счисления используют свою, так доступнее?

Какую такую свою ?

capzap
18.05.2018, 15:09
Восмиричную,шестнадцатеричную, четырехичную да мало ли какую ещё, вопрос решен в этом был, хочет человек время подсчитать, чего Вы мешает, увели тему вообще в другое русло. Надо то было просто предложить использовать отдельную задачу с запуском через определенное время. Говорит человек что увидел зависимость от времени исполнения цикла, Вы то с чего решили что цикл равен 1 мс вроде нет вложенного проекта, а минимальное время цикла совсем не то что показывает модуль статистики

Вольд
18.05.2018, 15:12
Восмиричную,шестнадцатеричную, четырехичную да мало ли какую ещё, вопрос решен в этом был, хочет человек время подсчитать, чего Вы мешает, увели тему вообще в другое русло. Надо то было просто предложить использовать отдельную задачу с запуском через определенное время. Говорит человек что увидел зависимость от времени исполнения цикла, Вы то с чего решили что цикл равен 1 мс вроде нет вложенного проекта, а минимальное время цикла совсем не то что показывает модуль статистики

Ну-ну, если увидел, то пусть копает в этом направлении.

tagor4444
13.06.2018, 08:08
Всем спасибо за ответы. Проблема решилась уменьшением polling time со 100 мс, стоявших по умолчанию, до минимальных 10 мс, на всякий случай еще поднял скорость обмена с 9600 кбит/с до 38400 кбит/с.