Вот у ускорением не очень разобрался.
Min_speed:=0,
max_speed:=7000,
accel и deccel - если значение больше 2000, то 100000 имп выробатывается менее 1 сек., если менее 2000, то резгон и торможение нормальное.
Вид для печати
Вот у ускорением не очень разобрался.
Min_speed:=0,
max_speed:=7000,
accel и deccel - если значение больше 2000, то 100000 имп выробатывается менее 1 сек., если менее 2000, то резгон и торможение нормальное.
продолжение предыдущего сообщения
частота на выходе 7кГц.
Про срыв синхронизации - на частотах более 10кГц . менее 8кГц - не наблюдается, но это зависит от двигателя.
Все просто. мы будете смеяться - у меня два плк110м02.
Приводите, пожалуйста, конкретные значения параметров и конкретный наблюдаемый эффект.
Проверил в симуляторе
min_speed=0
max_speed=7000
quantity=100000
accel_ramp=3000
decel_ramp=3000
Разгон длится чуть более двух секунд (по горизонтали секунды, по вертикали герцы, цвет -- режим работы разгон/ход, на графике чуть более 13'000 точек).
Вложение 27916
Не понимаю каким образом связаны PWM и шаговые двигатели.
Шаговому двигателю же должно быть без разницы какую скважность подавать на вход.
На всякий случай: я не использую ШИМ выход, не использую аппаратный ШИМ и т.п. Мои программы генерируют каждый импульс отдельно.
Тут пишут, что резонанс зависит от фактической нагрузки: http://electroprivod.ru/resonans.htm
Если у конкретной механической системы резонанс на 7кГц, то остаётся всё то, что указано по ссылке выше. Микрошаг, эластичные муфты, демпферы, вот это всё.
Хочу продолжить эту тему.
Честно говоря не выполнил вашу просьбу - сделать видеозахват работы программы при accel_ramp>2500.
Сейчас хочу задать вопрос по работе вашей программы PRU_STEPPER.
1. Можно-ли из программы ПЛК управлять быстрыми выходами? , или pru0.prg берет управление этими выходами на себя и блокирует обращение к ним.
2. как приделать аварийную остановку к вашей программе? т.е. во время генерации импульсов происходит срабатывание аварийной сигнализации - как остановить генерацию? Сейчас для этого нужно несколько циклов программы. т.е. сначала ставим на вход eneble:=false? затем на вход quantity:=0, затем снова на вход enable:=true. для этой операции нужна как минимум 3 цикла контроллера, за это время двигатель при частоте 5000 кГц пройдет несколько оборотов - что делать?
Как нужно?
Я готовлю очередную версию Hardella IDE.
Есть такие примеры.
Пример "моргаем двумя выходами" (запись в быстрые выходы):
Вложение 27986
Настройка "PRU цикла" (PRU0 100мс, PRU1 200мс)
Вложение 27988
Пример "делаем быстрый счётчик" (==чтение быстрых входов):
Вложение 27987
Можно сделать и пример, когда BOOL значение из КДС просто записывается в fast out.
Это будет так:
Тут два варианта:Код:@Export()
val : BOOL;
...
FAST_OUTPUTS(out3 := val);
2.1) enable:=false и quantity:=0 можно менять одновременно. Да, потребуется цикл ПЛК + ещё время от того, как ПЛК осознает значение "аварии".
2.2) При составлении программы в Hardella можно напрямую читать быстрые входы, вообще без "основного цикла ПЛК". Если аварийный сигнал завести на один из быстрых входов, то можно останавливать блок ШД "прямо сразу"
Например, так (считаем, что в случае аварии сигнал на in1 пропадает, и импульсы нужно прекращать):
Вложение 27989
Тут интервал от появления аварии до реакции будет порядка микросекунд (зависит от того, какой настроить цикл PRU)