Регистрация
 
Добро пожаловать на форум об электродвигателях!

STEP/DIR управление с конроллеров ОВЕН на частотах порядка 100-1'000кГц
Прочитано 4136 раз
* 06 Ноября 2016, 22:09:53
Периодически возникает вопрос "как покрутить ШД", и сейчас стал доступен вариант на ОВЕНе.
В двух словах, можно составлять 1мкс программы по своему усмотрению. Энкодеры в любых вариациях, ШД всё подвластно и не ограничено пресловутой 1 миллисекундой основного цикла. Да, длительность цикла программы будет 1 микросекунда, т.е. в 1000 раз быстрее "основного цикла ПЛК".

В модели ОВЕН ПЛК110 М02 (вышла более года назад) есть 2 свободно программируемых сопроцессора, которые могут управлять быстрыми входами/выходами.

Сопроцессоры (PRU) работают на частоте 200МГц, почти все команды выполняют за 1 такт, и, что хорошо, они не отвлекаются на лишние задачи.

Разумеется, в 1 такт всю программу не уложишь, но за 200 тактов можно многое сделать, т.е. "длительность цикла" порядка 1 мкс достигается без проблем.

Предел размера программы -- 1024 команды. Если учесть, что "быстрых" входов выходов не более 4 штук, то и этих 1024 команд вполне хватит для широкого спектра задач. Из команд доступна простая арифметика в 32bit int (без умножения/деления), условные переходы.

Для примера есть программа управления ШД: http:   //www.owen   .ru/  forum/showthread.  php ... post221928
Программа генерирует указанное количество импульсов, и осуществляет плавный разгон/торможение.

Аналогично, можно читать значения быстрых входов и выполнять логику, которая требует быстрого реагирования.
Например, если нужно "отключить мотор по достижению нужного количества импульсов энкодера", то можно в "1мкс быстрой программе обсчитывать энкодер и управлять выходом".

Из-за ограниченности самого PRU сопроцессора, туда невозможно "заранее запихнуть все возможные программы".
Поэтому и есть Hardella, в которой настраивается какие входы-выходы к чему будут прицеплены, какая фильтрация будет на входах и т.п.

Например, в "классическом PLC Configuration", если выбрать "fast encoder", то оставшиеся входы уже невозможно использовать как простые DI.
В случае с PRU программами в Hardella, можно отдельно настраивать будет ли конкретный вход-выход фильтроваться, и будет ли он обрабатываться PRU программой или пойдёт напрямую в "основной цикл".

Ещё раз повторюсь, программа выполняется на отдельном сопроцессоре, и она не влияет на основной цикл.

"Быстрые" программы составляются на языке ST в среде Hardella IDE. Разумеется, основная программа по-прежнему работает под управлением CoDeSys, и для взаимодействия (передачи значений) между основным циклом и "быстрой" программой Hardella генерирует "CoDeSys библиотеку".

Вот пример создания простого проекта http  ://recordit.   co/beYcl4OfDO (то же самое в виде анимированного gif: http:   //g.recordit.   co/beYcl4OfDO.gif но ссылкой, т.к. gif занимает 2.5 мегабайта)

Hardella IDE работает в Windows/macOS/Linux. Программа бесплатная, скачать можно тут: https   ://   github.   com/vlsi/ide61131/releases

Что в итоге?
Любой желающий бесплатно без SMS может покрутить ШД (как минимум 2 штуки) через ОВЕН ПЛК110 М02.

Были/есть задачи, где требуется быстрое управление? Скажем, <100мкс.

PS. Я не имею никакого отношения к ОВЕН.
« Последнее редактирование: 07 Ноября 2016, 17:39:05 от Administrator »

Записан


* 18 Ноября 2016, 16:02:36
#1
Задают вопросы, поэтому отвечу тут

Цитировать
Не могли бы вы несколько подробнее описать, как используется Овен ПЛК в данном случае.
В частности, меня интересуют следующие вопросы:
-Можно ли в данном случае обойтись без энкодера и компьютера (естественно, после создания программы для ПЛК и закачки ее в блок);

Сам по себе ОВЕН ПЛК110 позволяет создавать программы, которые управляют "быстрыми входами/выходами". Например, на ПЛК110 М02 таких 2 входа и 4 выхода. Тесты в связке с серво-приводом отрабатывали 500кГц. Т.е. это не "аппаратный ШИМ в 500кГц", а управляемое значение на выходе, где 1 и 0 прямо из программы переключаются.

Да, энкодер, конечно, это опциональная штука. Т.е. если не нужен, то и без него работает. Просто бывает, что кому-то нужно согласованное управление, когда нужно согласовывать управление от энкодера (например, если что-нибудь проскальзывает)

Если же нужно посто STEP/DIR управление, то можно так делать. Работает, проверяли как на простом ШД, так и на серво-приводе.


Цитировать
-Возможна ли загрузка в ПЛК, к примеру, двух управляющих программ и их  поочередное использование - например, в сверлильном станке для сверления отверстий в металле различной толщины;
Честно говоря, не знаю деталей чем различная толщина влияет на саму программу, но:
1) Да, можно загружать и поочерёдно использовать разные управляющие программы.
2) Вполне может быть, что достаточно сделать одну программу "сверление", а "толщину" передавать как параметр.

Записан


* 18 Ноября 2016, 17:34:43
#2
Не заметил сразу, поэтому уточню
Цитировать
Можно ли в данном случае обойтись без компьютера (естественно, после создания программы для ПЛК и закачки ее в блок)
Да, именно так и работает. После заливки программы управления быстрыми входами-выходами в ПЛК она там живёт своей жизнью и компьютер ей не требуется.

Записан


* 19 Ноября 2016, 00:44:24
#3
Цитировать
можно загружать и поочерёдно использовать разные управляющие программы.
Уточню, что имелось ввиду.
1) Можно разработать несколько программ (для этого нужен компьютер)
2) Потом по ходу работы ПЛК можно эти программы загружать в память сопроцессоров. Для этого компьютер не нужен. Управление сопроцессорами выполняется из обычной ПЛК программы (ну, которая обычно выполняется каждую миллисекунду).

Т.е. ПК только для разработки, а смена программ в самом ПЛК, их запуск и т.п. уже ПК не требует.

Записан


* 19 Ноября 2016, 02:25:06
#4
Ну, практически на все вопросы я получил ответы, и очень даже устраивающие меня. То, что нам нужно.
Большое спасибо.
Если нетрудно, немного о методике работы с программой Hardella, то есть, ее интерфейсе и т.п., либо, если вам известны - другие ссылки, поясняющие методы работы с ней.
Думаю, многим будет интересно ознакомится и с этим материалом.

Записан


* 20 Ноября 2016, 21:30:07
#5
Если нетрудно, немного о методике работы с программой Hardella, то есть, ее интерфейсе и т.п., либо, если вам известны - другие ссылки, поясняющие методы работы с ней.
Думаю, многим будет интересно ознакомится и с этим материалом.

Сайт программы, на котором будет информация по работе, примеры и новости сейчас в разработке.

Записан


* 22 Ноября 2016, 15:58:55
#6
Понятно. Большая просьба написать о начале работы сайта и его адрес.

Записан


* 25 Ноября 2016, 20:20:43
#7
Понятно. Большая просьба написать о начале работы сайта и его адрес.

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

Если это будет пример с каким-нибудь SMSD, то, думаю, будет большой плюс. Ну, хорошо, когда пример законченный: берём ШД, подключаем к SMSD, так-то подключаем к ПЛК, так-то пишем программу, вот фото-видео результата.

И ещё вопрос: есть какие-то конкретные темы, описание которых интересно в первую очередь?

Записан


* 25 Ноября 2016, 22:32:04
#8
Понятно. Мне приходится заниматься и железом, и программами.
Простейший пример - сверлильный станок - автомат, пример, приводившийся при изучения азов программирования на Step-5, несколько более усложненная версия.
Работает- автоматическое подающее устройство (пневматика) захватывает деталь, подает на станину. Датчик определяет наличие детали, включает программу сверления, которая определяет  скорость вращения шпинделя, скорость подачи и глубину сверления.
Если первая часть программы  - до задания скорости вращения шпинделя через инвертор, может быть задана
с помощью ПЛК, а параметры задаются с помощью HMI, то параметры подачи, которая у нас осуществляется с помощью ШД через SMSD, приходится каждый раз вводить с помощью ноутбука в контроллер SMSD (именно поэтому я и задал вам вопрос на эту тему), от ПЛК используем только сигнал на пуск ШД. 
Если же SMSD будет включен в режиме драйвера, а вся управляющая программа будет в ПЛК, дело сильно упрощается - можно либо хранить в ПЛК программы подачи с несколькими наиболее употребительными параметрами, либо вводить параметры через визуализацию.
   Другой пример с тем же сверлильным станком - необходимость просверлить на детали отверстия одного диаметра в нескольких точках. У нас есть такой станок, в который вводятся координаты через панель управления, однако в нем три серводвигателя с энкодерами и управление от контроллера S7-300  со специализированными блоками.
   Получается дорогая конструкция, неоправданно усложненая для наших условий.
   Где то так примерно....
   Поэтому то, что вы написали, очень привлекательно выглядит - если, конечно я правильно вас понял.
А понял я следующее: SMSD  включается в режиме драйвера, а на его вход Step/Dir подаются импльсы с высокоскоростного выходя ПЛК, который в данном случае служит контроллером управления двигателем.
Поэтому двигатель будет работать по программе, определяемой ПЛК.
Все правильно?

Записан


* 27 Ноября 2016, 19:57:00
#9
то параметры подачи, которая у нас осуществляется с помощью ШД через SMSD, приходится каждый раз вводить с помощью ноутбука в контроллер SMSD (именно поэтому я и задал вам вопрос на эту тему), от ПЛК используем только сигнал на пуск ШД.
Что именно входит в "параметры подачи"?
Там какое-то сложное движение, или просто движение в одну сторону с одной скоростью?
Обратная связь во время подачи, я так понял, не нужна. Или нужна? (я про корректировку скорости/перемещения во время подачи)

Один из примеров будет "выдача указанного количества импульсов с указанной частотой". Для простого движения должно подойти (скорость либо просто равномерная, либо трапеция с ускорением и замедлением).

Записан


* 27 Ноября 2016, 22:28:11
#10
В параметры подачи входит скорость вращения ШД и количество его оборотов оборотов, то есть, скорость перемещения шпинделя и расстояние, на которое он передвигается.
Дело не в алгоритме движения, там алгоритм один и тот же, (Включить ШД на вращение с определенной скоростью V в одну сторону (параметр 1),  сделать S оборотов (параметр 2), после реверс, сделать S2 оборотов (параметр 3) в обратную сторону уже со скоростью V2 (параметр 4)  и выключиться (повторяю, это простейший алгоритм).
Так вот, при использовании SMSD каждый раз, когда нужно поменять один из параметров, приходится тащить ноутбук.   

Записан


* 27 Ноября 2016, 22:33:54
#11
Цитировать
Обратная связь во время подачи, я так понял, не нужна. Или нужна? (я про корректировку скорости/перемещения во время подачи)

В более сложных программа, в более сложных станках может и понадобится.

Записан


* 19 Декабря 2016, 16:21:52
#12
Появился сайт программы: https://hardella.com/ (в разделе загрузок доступна очередная версия)

Пример управления шаговым двигателем по STEP/DIR интерфейсу описан здесь: https://hardella.com/docs/pru/examples/step-motor/
Если нужны ещё примеры или написано непонятно -- могу добавить.

Если будут конкретные проекты (скажем, проект управления SMSD), то, думаю, полезно добавить и про него.

Записан