Если у вас период 20 мкс, то максимальная частота будет не 500 кГц, а 50 кГц.
Вид для печати
Если у вас период 20 мкс, то максимальная частота будет не 500 кГц, а 50 кГц.
У вас в проекте для ПЛК нет вызова программ, отвечающих за обмен между ЦП и сопроцессорами. Или я что-то не пониvаю ?
если такт 10 мкс, то макс скорость 50 кГц
если такт исправить на 1 мкс (как описано выше) то макс скорость 500 кГц.
в ПЛК загружаете:
PruConfig.ZIP\PRU0.prg
PruConfig.ZIP\PRU1.prg
PruConfig.ZIP\PruConfig.exp
Dir - управляете из основного проекта в Codesys.
Мое решение генерирует импульсы на первые 4 быстрых выхода
Как нет вызова программы:
Вложение 38009
или я не эту загрузил?
Конечно не против, я для этого её и выкладываю.
Я сам инженер конструктор, программировать станки стал ввиду удобства это делать самому, а не объяснять на пальцах программисту как это должно работать. Я сначала сделал управление 4-мя ШД на вашем блоке с запуском попеременно, но это потребовало дополнительных связей в программе и увеличило время цикла.
Про видео я спрошу у руководства, и если оно не против - выложу. Хотя там больше механика станка, но видно что двигатели работают одновременно.
Nikolay.L
Ваш вариант PRU-модуля может крутить ШД бесконечно? Задача такая - выставляем скорость и крутим\стоим по команде. Разгоны и торможения вообще не актуальны.
Если я правильно понимаю:
1- то ШД не предназначен для высоких скоростей,
2 - без плавного разгона ШД даже до средних скоростей может и не раскрутится, особенно если большая нагрузка.
Простой генератор импульсов без проблем можно написать самому. Задаете необходимую частоту, делением количества тактов в секунду (1 000 000 при такте 1мкс) на эту частоту получаете количество тактов на 1 импульс. запускаете счетчик, и при достижении заданного количества сбрасываете счетчик в ноль и формируете импульс.
Не забудьте предусмотреть выключение процесса (по сигналу с основного цикла ПЛК или по времени).
Nikolay.L
Потому что габариты. Диаметр шнеков 38 миллиметров. Четыре бункера с рецептурой по процентам сыпят в один, который командует всем стоять или всем ехать. Процентовка как раз и регулирует скорость.
Я так понимаю, константа 10мкс ещё в сам блок зашита, ведь сам блок Stepper_light не использует "текущее время".
Полагаю, если уменьшать эту константу, то точность "accel_period" испортится (т.к. деление 100000/accel целочисленное)
Некий минус, что тут нет "минимальной скорости". Т.е. стартует блок с нулевой скорости и это может приводить к пропускам импульсов на резонансных частотах.
На оборудовании такого не наблюдалось?
Для порядка попробовал Stepper_Light на "разных скоростях".
Честно говоря, не берусь судить, но, наверное, выше 15кГц на "10мкс цикле" вряд ли разумно крутить.
На картинке чёрными точками (их много и они слились просто) отмечены импульсы, выдаваемые блоком, а красная линия это "идеальная траектория" для указанных параметров движения.
accel=10кГц/сек, max_speed=50кГц, quantity=251000
При таком ускорении максимальная скорость должна набираться за 5 секунд и за эти 5 секунд ШД должен проехать 10000*5*5/2==125'000 импульсов.
Ещё столько же на торможение и 1000 посредине.
В целом, конечно, не так-то и плохо, но скачки между 20кГц, 25кГц, 33кГц, 50кГц (по сути это эффект того, что импульсы квантуются по 10мкс) выглядят сурово и едва ли ШД сможет перепрыгнуть с одной скорости на другую.
Вложение 38031
В режиме accel=1кГц/сек, max_speed=5кГц, quantity=26000 выглядит ровнее
Вложение 38032
В режиме accel=0.1кГц/сек, max_speed=0.5кГц, quantity=2560 ещё ровнее
Вложение 38033
Я и назвал Stepper_ligth. Для моего станка все идеально подошло (у меня 5кГц максимум).
Понятие минимальной скорости здесь не совсем уместно. Старт происходит с первого импульса, который привязан только к команде запуска, дальше в зависимости от ускорения. При замедлении стоит защита чтоб не менее 10 Гц.
По поводу 10мкс - это упрощение для моего проекта, мои драйверы требуют импульсы не менее 5мкс. Для большей точности можно без проблем изменить такт на 1мкс, нужно только поправить числитель в 3-х местах со 100 000 на 1 000 000. А для ширины импульса задать отдельный счетчик. Я просто не стал заморачиваться.
Я экспериментировал с 1мкс . Драйвера DM442 и AM882 -съедали без проблем, а вот дешевый DM422с - пропускал несколько шагов. При этом крутились все одновременно ровно, без рывков и заеданий. При переходе на 10мкс - крутились так же ровно, и DM422с стал отрабатывать как нужно.
Я скинул на 90% свой проект (у меня 1 шд работает в связке с энкодером) и думаю его без проблем можно адаптировать под другие требования, в том числе и по точности.
День добрый.
Перечитывать всё времени нет.
Сколькими ШД я могу управлять с помощью Hardella?
Так чтобы с ускорением\держанием заданной скоростью и тормозом независимо ШД друг от друга.
EN\Reverse допускается управление через обычные выхода.
Спасибо
Nikolay.L четырьмя ШД управляет.
Как и обещал, выкладываю видео:
https://youtu.be/otC14QJJO_I
Станок ещё в отладке, поэтому не судите строго.
В разработку и изготовление станка вложены не малые деньги. Интересно каков срок окупаемости станка.
Точных цифр не скажу, но не более 2-х лет
Ide: Hardella 1.7.2
ПЛК: 110-30.К.М М02
Проблема
Загрузил пример BlinkningLeds, выхода моргают, но в конфигураторе codesys 2 быстрых входа (понятно что доступ из конфигуратора потерял к ним) и 3 обычных постоянно "горят" и никак не реагируют на внеш.воздействие.
Почему теряется возможность отслеживать простые 3 входа?
Если удалить PRU0 и PRU1, почистить проект и перезагрузить то всё работает в штатном режиме. До загрузки из hardella тоже кстати всё работало.
Вот скрин конфигуратора https://yadi.sk/i/jLSTcN2K1wcveg
В инструкции на сайте
В обновлении 24 янв 2017: v1.6.2Цитата:
Настройка CoDeSys для PRU программирования
В двух словах: нужно загрузить .prg и .exp файлы, и добавить библиотеку pruAccessLib.lib. Этот файл можно взять...
Так надо её подключать или не надо?Цитата:
PRU: Подключать библиотеку pruAccessLib.lib больше не требуется
5й выход работает нормально, получается всегда первые 4 входа перестают работать, хотя быстрых только 2. Баг или фича? Как поправить?
У меня 110-32.К.М М02
Тут, наверное, вопрос к ОВЕН. По известной мне информации, через PRU заведено 4 цифровых входа.
Если в 30.К.М М02 раскладка другая, то есть такие варианты:
1) Спросить у ОВЕН -- может, ответят
2) Подобрать. ПЛК же есть?
Попробуйте залить туда такую программу (для начала -- в PRU0):
Известные мне данные попадают в 2,3,21 и 22 биты регистра R31.Код:@Export
output reg30 : DWORD;
...
ASM
ADD reg30, R31.dw, 0
END_ASM
Возможно, 5-ый "потеряный" вход попадает в ещё какой-то бит регистра R31.
Или, возможно, эти данные приходят в PRU1 -- там можно аналогично посмотреть что приходит в R31.
К сожалению, сделать работу "через конфигуратор" невозможно -- тут ОВЕН не рассказывают про то, как прошивка ПЛК общается данными со "штатной" PRU программой. С другой стороны, если входы "загораются в конфигураторе", то для меня это намёк на то, что по факту, эти входы обрабатываются в PRU, и наверняка их можно распознать по R31 одного из PRU ядер.
С новой версией Hardella (начиная с 1.6.2) -- не надо. Да, надо обновить сайт.
А, 5-ый работает, тогда, скорее всего, дело в том, что первые 4 входа всегда заведены через PRU и обращаться к ним нужно через блок FAST_INPUTS для программы PRU0: https://hardella.com/docs/pru/standa...y/#fast_inputs
О, тут capzap научился поиском работать
http://www.owen.ru/forum/showthread....l=1#post291841
ответ тут
http://www.owen.ru/forum/showthread....l=1#post233734
Помогите разобраться начинающему. Запускаю в КДС 2.3 программу - 4_Step_Motor.pro. У меня выскакивает предупреждение- ошибка чтения целевой платформы. Я так понял что не находит подходящий таргет файл. Но я все таргет файлы с диска овен загрузил. Может нужен какой-то определенный? Можете подсказать?
пс. Разобрался. надо было с сайта овен таргеты скачать.
Только сегодня заметил эту прекрасную тему. Хотел спросить, а проект жив еще?
Владимир, приветствую. Получилось сделать умный дом с помощью Hardella IDE?
На JDK11 не заработает. Только JDK8. 8-ку можно взять, например, тут: https://bintray.com/jetbrains/intellij-jdk
Она вообще запускаться не должна на JDK11?
Вложение 42242
Так-то вроде запустилась.