PDA

Просмотр полной версии : Реализация "виртуального энкодера" на ПЛК Овен



Kalessin
20.11.2015, 20:25
Приветствую, коллеги!

Имеется станок с убитой системой управления, но исправной силовой частью, который необходимо модернизировать. Новую СУ хочу построить на контроллере Овен, но в схеме станка есть особенность, в реализации которой я сомневаюсь. Несколько сервоусилителей синхронных движков в процессе работы синхронизируют свои обороты с виртуальном валом станка, на котором был "смонтирован" такой же виртуальный энкодер, роль которого раньше выполнял вышедший из строя ПЛК от Siemens. Отсюда вопрос: можно ли на выходах ПЛК Овен реализовать режим виртуального инкрементального sin/cos энкодера? Быстрые выходы как будто подходят для этой цели, но хотелось бы однозначной ясности в вопросе (прежде чем я начну озадачивать начальство закупкой железа).

Kalessin
20.11.2015, 23:27
Спасибо за Ваш ответ! Вы правы, но в данный момент, я, так сказать, нахожусь на самом первом этапе модернизации и хочу в принципе понять, может ли сабж работать в режиме, который меня интересует. Упрощу ситуацию: у меня есть каскад исправных и настроенных приводов, которым для работы нужно только одно: подключенный и вращающийся энкодер. Заметьте, энкодер вращается не от этих же приводов, он висит на некотором "эталонном" вале. Для проверки я собрал простейший костыль: частотник + маленький моторчик + железный энкодер на его валу, подключенный к каскаду. Моторчик крутит энкодер, а он в свою очередь вертит весь каскад. Вертит хорошо и правильно. В принципе, костыль можно оставить, задать управление частотником от ПЛК и пусть он себе вертит энкодер. Это пока мой запасной вариант. Но хочется сделать красиво (читай -- как и было сделано раньше) сконфигурировать выходы контроллера так, чтобы каскад думал, что это энкодер. Пока я даже не спрашиваю, как это реализовать, меня интересует сама возможность такой эмуляции. Делал ли кто-то нечто подобное и как оно работало?

petera
21.11.2015, 04:15
Энкодер (если инкрементный) - это, грубо говоря, два быстрых дискретных выхода. В зависимости от частоты и направления вращения должен меняться меандр. У ПЛК110-30 есть два быстрых выхода. Уверен что можно сделать импульсы длиной 50мс TRUE и 50мс FALSE, но не чаще. Если это устроит (минимальная скорость), то заставить их так пульсировать и медленнее, в зависимости от уставки - можно.
50 миллисекунд?? Это при мин.цикле ПЛК 1мс?
http://www.owen.ru/forum/attachment.php?attachmentid=16915&d=1425224217
Круто!
Для такой длительности и быстрые выходы не нужны, однако.
На обычных выходах (не быстрых) сделаю в десять раз быстрее.
На один оборот энкодера нужно 4 цикла ПЛК.
20956
И того, если цикл ПЛК равен 1 мс, получится один оборот за 4 мс, а это 250 Гц. Или максимальная скорость вращения виртуального энкодера получится (250х60)=15 000 об/мин.
ЗЫ.

PROGRAM PLC_PRG
VAR
State: INT;
Start: BOOL; (*кнопка СТАРТ/СТОП*)
Run: BOOL;
A: BOOL; (*Выход А*)
B: BOOL; (*Выход B*)
END_VAR

CASE State OF
0:
A:=0;
B:=0;
IF Start THEN Run:=1; State:=10; END_IF
10: (*фаза 1*)
A:=1; B:=0; State:=11;
11: (*фаза 2*)
A:=1; B:=1; State:=12;
12: (*фаза 3*)
A:=0; B:=1; State:=13;
13: (*фаза 4*)
A:=0; B:=0; State:=10;
END_CASE
IF NOT Start AND Run THEN State:=0; Run:=0; END_IF"Импульсы TRUE и FALSE" будут по 2 мс.

20932 20933

UPD. Если делать правильный энкодер, то наверно нужен так же и референтный выход (нулевая отметка)

PROGRAM PLC_PRG
VAR
State: INT;
Start: BOOL; (*кнопка СТАРТ/СТОП*)
Run: BOOL;
A: BOOL; (*Выход А*)
B: BOOL; (*Выход B*)
Rz: BOOL; (*Референтный выход*)
END_VAR
CASE State OF
0:
A:=0;
B:=0;
IF Start THEN Run:=1; State:=10; END_IF
10: (*фаза 1*)
A:=1; B:=0; State:=11;
11: (*фаза 2*)
A:=1; B:=1; Rz:=1; State:=12;
12: (*фаза 3*)
A:=0; B:=1; Rz:=0; State:=13;
13: (*фаза 4*)
A:=0; B:=0; State:=10;
END_CASE
IF NOT Start AND Run THEN State:=0; Run:=0; END_IF

20935

Конечно 15 000 об/мин справедливо для виртуального энкодера с 1 имп./оборот. Какой и показан в примере. Если нужно больше импульсов на один оборот, то максимальная скорость вращения будет уменьшаться пропорционально количеств импульсов на один оборот.

petera
21.11.2015, 06:58
Petera, что Вы скажете на это....
ПЛК110-30_М - установка плазмотрона.
Самолично делал быструю задачу нулевого приоритета с быстрой программой (подсчет каунтов с расходомера) , устанавливал для данной задачи различные циклы ниже 50мс. Хотел понять "а где реальный предел". Выяснил что если выставлять ниже 50мс, то цикл оказывается плавающий (то есть засекал инкрементным счетчиком 600 импульсов и сравнивал с таймером). Для задачи измерения моментального расхода с учетом времени - неприемлемо.
Полагаю, что и в данной задаче контроллер планируют использовать не только в качестве виртуального энкодера (то есть будет не пустой).
Пользуясь моментом спрошу, какой минимальны интервал меандра может дать реле, идущее в составе ПЛК?
Спасибо.
1. Пустой будет контроллер или не пустой, по условиям задачи не задано.
2. Кто заставляет использовать для данной задачи ПЛК с релейными выходами? Я даже не предполагал, что вместо транзисторных выходов с ОК, возникнет мысль использовать релейные.
Такую программу, для которой нужен цикл ПЛК 50 мс, еще надо постараться сделать.:rolleyes:
ЗЫ.
Для моего примера не нужно использовать диспетчер задач, задать мин.цикл 1 мс, и будет 15 000 об/мин.

Дмитрий Артюховский
21.11.2015, 11:02
не забывайте разделять понятия "цикл ПЛК" и "реакция на выводах". У ПЛК110 - есть "быстрые выводы" (работающие только в версиях с транзисторами) и остальные. Кстати - "быстроту" на них получают тоже специальными методами. А в общем случае, выводы со старшими номерами, даже на транзисторах, дают быстродействие близкое к 50 мс, независящее от времени цикла. Внимательно читайте мануалы.

petera
21.11.2015, 11:25
не забывайте разделять понятия "цикл ПЛК" и "реакция на выводах". У ПЛК110 - есть "быстрые выводы" (работающие только в версиях с транзисторами) и остальные. Кстати - "быстроту" на них получают тоже специальными методами. А в общем случае, выводы со старшими номерами, даже на транзисторах, дают быстродействие близкое к 50 мс, независящее от времени цикла. Внимательно читайте мануалы.
Прочитал и не нашел.:(
20937
Не понятно, чего Вы все ПЛК110 упоминаете?

Вольд
21.11.2015, 11:49
А я прочитал и нашел. ;)

petera
21.11.2015, 12:02
А я прочитал и нашел. ;)
Опять ПЛК110. Ладно пусть будет 110.
Понятно, откуда Дмитрий Артюховский взял понятие "реакция на выводах". Из РЭ ПЛК110, хотя там это понятие звучит по другому "Время реакции входов/выходов".
20940
Если все таки прочитать внимательно, то речь идет о времени отклика
Тоткл = Твх + 2Тцикла + Твых
т.е если в программе "соединить" выход" ПЛК с "входом", то Тоткл -это время задержки прохождения сигнала через ПЛК.
А для моего случая мне это время не нужно, нет такого(Вход--->Выход) в этой программе.
Из всей, выше приведенной, формулы вызывает интерес только Твых -задержка на срабатывание выхода, а она для быстрых выходов равна "0,02 мс (в таблице 2.1 данный параметр называется «Время переключения из состояния «0» всостояние «1» и обратно»)". Причем без всяких специальных методов, под которыми Вы наверно понимаете использование этих выходов в режиме прямого управления через библиотеку SysLibPort.

ЗЫ. Даже если значение Твых -задержка на срабатывание выхода брать не из текста этого раздела, а из таблицы 2.2 равным 1 мс, то на частоту (длительность) сигналов на выходе и их сдвиг относительно друг друга это повлиять не должно
20941
Просто сигналы не выходах ПЛК будут с задержкой в 1 мс относительно сформированных в программе

Вольд
21.11.2015, 12:47
Опять ПЛК110. Ладно пусть будет 110.

А чем вам не нравится ПЛК110 ? По моему боле-менее приличный ПЛК от фирмы "ОВЕН".

Kalessin
22.11.2015, 17:39
Коллеги, всем большое спасибо за ответы! Извиняюсь за молчание: работаю по сменам, и время для форума есть не всегда.
Уточнения по сабжу:
1. В моём конкретном случае реализация нулевой точки в виртуальном энкодере не требуется.
2. Разумеется, я рассматриваю эмуляию энкодера только как часть управляющей программы. Но в остальной её части феноменальное быстродействие не требуется, ПЛК должен обрабатывать сигналы с дюжины датчиков и дёргать такой же дюжиной контакторов и клапанов с периодичностью от одной до нескольких секунд. Ну, разумеется, в планах стоит общение ПЛК с панелью оператора.
3. Я сверился со своими записями по упомянутому выше "костылю". Нужной мне работы каскада я достигал настроив энкодер (программируемый) на 500 имп./об. и раскручивая его до 400 об.мин. Отсюда мы имеем примерно 3300 имп. в сек. Два стабильных меандра с частотой в 3 килогерца это, как я понимаю, слишком много даже для быстрых выходов Овеновских ПЛК

murdemon
22.11.2015, 18:08
Кто то тут крутил шаговый двигатель до 8кГц потом по осциллографу стали заваливаться фронты или что то в этом роде :)

Василий Кашуба
22.11.2015, 18:26
Предлагаю такой виртуальный энкодер. Естественно временные уставки нужно поставить свои, указанные на схеме для наглядности.20954

SA104
22.11.2015, 19:26
Предлагаю такой виртуальный энкодер. Естественно временные уставки нужно поставить свои, указанные на схеме для наглядности.20954
Пробовал на ПР-ке реализовать генератор с такими же параметрами, как в вашей схеме. Разумеется с использованием транзисторных выходов. Результат разочаровал - даже при 100 гц. меандр дергается и рвется. Выше еще хуже.. А человеку по его словам надо стабильный меандр с частотой выше 3 килогерц..

petera
22.11.2015, 19:31
Коллеги, всем большое спасибо за ответы! Извиняюсь за молчание: работаю по сменам, и время для форума есть не всегда.
Уточнения по сабжу:
1. В моём конкретном случае реализация нулевой точки в виртуальном энкодере не требуется.
2. Разумеется, я рассматриваю эмуляию энкодера только как часть управляющей программы. Но в остальной её части феноменальное быстродействие не требуется, ПЛК должен обрабатывать сигналы с дюжины датчиков и дёргать такой же дюжиной контакторов и клапанов с периодичностью от одной до нескольких секунд. Ну, разумеется, в планах стоит общение ПЛК с панелью оператора.
3. Я сверился со своими записями по упомянутому выше "костылю". Нужной мне работы каскада я достигал настроив энкодер (программируемый) на 500 имп./об. и раскручивая его до 400 об.мин. Отсюда мы имеем примерно 3300 имп. в сек. Два стабильных меандра с частотой в 3 килогерца это, как я понимаю, слишком много даже для быстрых выходов Овеновских ПЛК
Ну почему же, можно использовать прямое управление быстрыми выходами ПЛК110 с использованием прерываний высокочастотного таймера 20мкс.
Принцип тот же, что и в примере из поста #5, если заменить в нем понятие цикл ПЛК на прерывание от высокочастотного таймера.
На каждом прерывании формируется 1/4 цикла выходных сигналов (A и B) виртуального энкодера.
20955
Тогда минимальный период выходного сигнала равен 4х20мкс=80мкс или максимальная частота на выходах 12500 Гц.
Живого ПЛК110 у меня нет, к сожалению, проверить идею не смогу.

Дмитрий Артюховский
22.11.2015, 20:08
"Тогда минимальный период выходного сигнала равен 4х20мкс=80мкс или максимальная частота на выходах 12500 Гц. Живого ПЛК110 у меня нет, к сожалению, проверить идею не смогу."

да, именно так, все нормуль будет работать.

"Если все таки прочитать внимательно, то речь идет о времени отклика
Тоткл = Твх + 2Тцикла + Твых"

имелось ввиду не это, а реализация выходных сигналов на ПЛК110 - разработчики экономили прямые выводы чипов, и все выходы, кроме "быстрых" подключены при помощи сдвиговых регистров, поэтому менять значения для выходов можно в каждом цикле ПЛК, а вот на клеммах эти изменения отобразятся ох как не скоро

Eugene.A
22.11.2015, 22:07
Kalessin, а вы паяльником владеете?
Можно спаять несложный симулятор энкодера. Если нужно управлять оборотами от аналогового выхода контроллера 0-10В, то нужен генератор, управляемый напряжением, это 1 корпус CMOS-логики, и преобразователь в квадратурный сигнал - ещё два корпуса.

Василий Кашуба
23.11.2015, 00:03
Пробовал на ПР-ке реализовать генератор с такими же параметрами, как в вашей схеме. Разумеется с использованием транзисторных выходов. Результат разочаровал - даже при 100 гц. меандр дергается и рвется. Выше еще хуже.. А человеку по его словам надо стабильный меандр с частотой выше 3 килогерц..
Я же не предлагаю ПР, я предложил кусок программы.

Kalessin
23.11.2015, 01:14
Kalessin, а вы паяльником владеете?
Можно спаять несложный симулятор энкодера...
Чёрт возьми, да почему же я раньше об этом не подумал! Вот, что значит инерционность мышления: всю жизнь был ремонтником, а не разработчиком :)

Спасибо за подсказку. Пойду курить мануалы микрух и сочинять схему...

Дмитрий Артюховский
23.11.2015, 10:21
))) как раз паяльник - и есть "инерционность мышления" ! ваша задача на ПЛК решается за 5 минут, включая подключение проводов! кроме того, "паяльником" вам придеться еще решать вопросы согласования уровней, сопрягать кривые регулировочных характеристик! а если, все равно, "нужно курить мануалы", то выбор пути сааавсем неочевидный )))