http://www.bsystem.ru/Default.aspx?tabid=72
Это кстати тоже комп, с досом и в модификациях ещё с какой то осью, но предполагаю, что он больше похож на ПЛК, чем то, что Вы назвали "забугорного контроллера с Match 3 "
Вид для печати
http://www.bsystem.ru/Default.aspx?tabid=72
Это кстати тоже комп, с досом и в модификациях ещё с какой то осью, но предполагаю, что он больше похож на ПЛК, чем то, что Вы назвали "забугорного контроллера с Match 3 "
Вот тут было:
Т.е. идея в том, чтобы планирование движения выполнять в быстром таймере, а на PRU уже выполнять эти действия.
Например, сейчас PRU программа управления ШД выполняет все вычисления на этом самом PRU. Она вычисляет и то, когда нужно начинать торможение. Это, надо сказать, нетривиальные действия, ведь на PRU нет деления/умножения.
Можно же сделать более простую PRU программу (по сути ШИМ с наворотами), которая может делать "ШИМ с разгоном", "ШИМ с остановкой через N импульсов". А уже 100мкс таймер будет из этих кусочков выстраивать общее движение.
В реальности, конечно, слово ШИМ лишнее (т.к. скважность всегда 50%), но не суть.
Поставить PLC1Xi в добавок к ПЛК110[М02] - это решение для ленивых. Зачем лишние расходы если ПЛК110[М02] легко справится с тем, что делает PLC1Xi. И кто вам сказал, что ПЛК110[М02] управляет у меня только одним драйвером ШД. В моей задаче ПЛК110[М02] загружен весьма прилично.
То V.Sitnikov
Владимир, поясните чем отличаются ФБ PWM_DW и PDM_DW ?
В документации: https://hardella.com/docs/pru/standard-library/#pwm_dw
И на форуме: http://www.owen.ru/forum/showthread....l=1#post229447
Так понятнее?
Владимир, проект компилируется без ошибок, но краснота замучила.
Если при постановке курсора в res_c и нажатии ctrl+пробел варианта "res_c" не возникает, то, наверное, pwm: PWM_DW у вас ссылается на библиотечный блок, а не на самодельный.
Переименуйте свой блок и используйте его в программе -- всё встанет на свои места (возможно, res_c и counter придётся перевыбрать в @Export части).
Спасибо. Все верно. Я ФБ в проект скопировал, а переименовать забыл.
Владимир, переделал ваш ФБ. Ввел счетчик импульсов и сброс этого счетчика. Правильно ли я все сделал ? Все что я добавил поместилось в картинке.
Зависит от того, как этот блок потом использовать.
Скорее всего:
counter увеличивать нужно не каждый раз, а только по фронту.
Вместо переменной res_p можно было IF R_TRIG(CLK := res_c).Q THEN counter := 0; END_IF; Но это, наверное, дело вкуса.
Не факт, что PDM это то, что нужно в конкретной задаче.
Скорее, нужно было PWM с 50% скважностью или что-нибудь среднее между PDM/PWM.
А вы этот свой блок проверяли на железе ? Осциллограмму на быстром выходе смотрели ?
Например, тут: https://github.com/vlsi/pru-emulator...va/st61131/pru
Что ни один из двух ШИМ не проверялся ?
Разделение труда -один пишет ,другой тестирует ...Вас как раз двое .
CP1E-N40DT-D Контроллер CP1E. 24 вх./16 вых
23 470,20 руб.
Отсутствие эзернета компенсирую панелькой с эзернетом (если необходимо) можно добавить один 485, мастер модбаса встроен, но его применение похоже на использование библиотеки.
В файле страницы из инструкции с кратким описанием сочетания между собой функций вывода импульсов. На русском, хоть от другого контроллера.
Может, но не так удобно как на Омроне, и к сожалению нельзя запустить другую функцию, не прервав ту которая выполняется.
Т.е. если вдруг по условию нужно отправить ось в какую либо позицию, нужно служебным битом плавно прекратить вывод импульсов, убедиться что он действительно остановился, снять предыдущую инструкцию и запустить ось в новую позицию.
В Омроне, просто выдать новую команду, смену скорости и позиции он рассчитает сам, без остановки выдачи импульсов.
Технические характеристики хуже чем у ПЛК110[М02], а цена выше. Да еще ПО скорее всего платно. Да еще за каждый пук надо будет платить.
С ПЛК Delta то же не все так хорошо как пишет lara197a.
Короче, как в поговорке: "За морем телушка —полушка, да рубль перевоз".
Вывод - не нужен мне берег турецкий и Африка мне не нужна. ;)
Многие задачи по управлению драйверами ШД можно решить при помощи нашего родного, отечественного ПЛК110[М02] + Hardella IDE.
Да, pdf выглядит хорошо.
На Омроне с какой частотой вызывается сама управляющая программа?
Т.е. с каким минимальным интервалом можно выдавать команды по изменению положения/скорости?
Основной вопрос в случае ПЛК110 в том, как скрестить выдачу импульсов и обработку программы позиционирования.
Грубо говоря,
1) Выполнять всю программу в PRU невозможно. Ресурсов не хватит, да и не хочется занимать PRU ядро длинными вычислениями по ходу движения.
2) Выполнять управляющую программу можно в быстром таймере, но тогда управляющая программа будет вызываться с периодом 60-100мкс. 100мкс это примерно 10кГц.
Получается, для чего-нибудь типа "поиск нуля" нужно предусматривать возможность остановки по сработке какого-то fastinput'а (ну, чтобы PRU само останавливалось и не ждало очередного 100мкс таймера)
Спасибо, Ветер, хороший документ вы выложили. Я его конечно засундучу. Из него, например, видно, что никакие нелинейные функции при разгоне ШД не используются. Все делается при помощи кусочно-линейной функции, до чего я и сам ранее допер. Ветер, может у вас в загашнике есть еще какие интересные документы на эту тему ? Если есть, то не стесняйтесь, выкладывайте. ;)
Владимир, а в этом PDM джиттера, о котором настойчиво писал незабвенный В.Филоненко, нет ? Если есть, то значение counter в моем варианте ФБ мгновенно улетит в космос. ;)
кстати про Омрон Ветер оч. правильно написал,
Он дороже Дельты, но сравним по цене с ПЛК 110.
СХ-ОН условно бесплатный. т.е. фактически ничего платить не придется.
Деньги возьмут, только при желании с Вашей стороны.
если говорить про удобство и простоту, то это отдельная тема и для решения
таких задач используют осевые привода типа s80 s120.
т.е. одним контроллером перекрыть все задачи в любом случае не получится.
а в общем все уже давно придумано.
У меня есть компенсатор джиттера. PRU configuration компенсирует джиттер, и в итоге fast outputs записываются согласно расписанию, заложенному в PRU configuration.
Разумеется, если указать "мин цикл=0.01мкс", а написать разлапистую программу, которая будет 10 мкс выполняться, то Hardella никак ситуацию не исправит.
Вопрос не ясен.
Функции для скоростного выхода работают независимо от цикла основной программы, максимальная частота на выходе, 100 кГц.
Самая интересная функция, PLS2, сама рассчитывает ускорения и прочее, нужно задать только позицию, ускорение, замедление, стартовую частоту. Отдал команду и занимаешься другими делами, на счётчик выхода можно прерывание настроить и выполнить что либо вне цикла основной проги. Можно по служебному биту отследить завершение выдачи импульсов. (там целый список адресов с состоянием скоростного выхода)
С каким минимальным интервалом можно её использовать, в мануале только это:
Начинает выдачу импульсов через 72 мкс.
Время задержки при изменении режима вывода импульсов, позиции (с реверсом тоже), скорости, ускорения
Два цикла управления (8 мс) но как это понимать?
Я использовал с интервалом в 20 мсек. коррктировал по энкодеру позицию, на которую должен выйти сервопривод. Между приводом и тем что перемещали нет жёсткой связи.