LinuxCNC Documentation

СИНТАКСИС

loadrt stepgen step_type=type0[,type1…​] [ctrl_type=type0[,type1…​]] [user_step_type=,…​]

ОПИС

stepgen is used to control stepper motors. The maximum step rate depends on the CPU and other factors, and is usually in the range of 5 kHz to 25 kHz. If higher rates are needed, a hardware step generator is a better choice.

stepgen has two control modes, which can be selected on a channel by channel basis using ctrl_type. Possible values are "p" for position control, and "v" for velocity control. The default is position control, which drives the motor to a commanded position, subject to acceleration and velocity limits. Velocity control drives the motor at a commanded speed, again subject to accel and velocity limits. Usually, position mode is used for machine axes. Velocity mode is reserved for unusual applications where continuous movement at some speed is desired, instead of movement to a specific position. (Note that velocity mode replaces the former component freqgen.)

stepgen can control a maximum of 16 motors. The number of motors/channels actually loaded depends on the number of type values given. The value of each type determines the outputs for that channel. Position or velocity mode can be individually selected for each channel. Both control modes support the same 16 possible step types.

На сьогоднішній день найпоширенішим типом кроку є «0», стандартний крок і напрямок. Інші типи включають в себе вгору/вниз, квадратуру та широкий спектр три-, чотири- та п’ятифазних схем, які можуть використовуватися для безпосереднього керування деякими типами обмоток двигунів. (Звичайно, при використанні відповідних буферів.)

Деякі типи кроків описані нижче, але для отримання додаткової інформації (включаючи часові діаграми) див. розділ stepgen довідника HAL.

тип 0: крок/напрямок

Два контакти, один для кроку, другий для напрямку. make-pulses повинен виконуватися принаймні двічі для кожного кроку (один раз для встановлення виводу кроку в стан true, один раз для його скидання). Це обмежує максимальну швидкість кроку до половини (або менше) швидкості, якої можуть досягти типи 2-14. Параметри steplen і stepspace можуть ще більше знизити максимальну швидкість кроку. Параметри dirsetup і dirhold також застосовуються до цього типу кроку.

тип 1: вгору/вниз

Два виводи, один для «підвищення» та один для «зниження». Як і тип 0, імпульси роботи повинні спрацьовувати двічі на крок, що обмежує максимальну швидкість.

тип 2: квадратура

Два контакти, фаза-A та фаза-B. Для руху вперед, A веде до B. Може просуватися на один крок щоразу, коли спрацьовують імпульси роботи.

тип 3: трифазний, повний крок

Три контакти, фаза-A, фаза-B та фаза-C. Три кроки за повний цикл, потім повторення. Тільки одна фаза має високий рівень одночасно - для руху вперед схема така: A, потім B, потім C, потім знову A.

тип 4: трифазний, напівкроковий

Три контакти, фази від A до C. Шість кроків на повний цикл. Спочатку A має високий рівень окремо, потім A та B разом, потім B окремо, потім B та C разом тощо.

типи з 5 по 8: чотирифазні, повний крок

Чотири контакти, фази від A до D. Чотири кроки за повний цикл. Типи 5 і 6 підходять для використання з однополярними кроковими двигунами, де живлення подається на центральний відвід кожної обмотки, а чотири транзистори з відкритим колектором керують кінцями. Типи 7 і 8 підходять для біполярних крокових двигунів, що керуються двома H-мостами.

типи 9 та 10: чотирифазні, напівкрокові

Чотири контакти, фази від A до D. Вісім кроків на повний цикл. Тип 9 підходить для однополярного приводу, а тип 10 — для двополярного.

типи 11 та 12: п’ятифазні, повний крок

П’ять контактів, фази від A до E. П’ять кроків на повний цикл. Див. довідковий посібник HAL для отримання інформації про схеми.

типи 13 та 14: п’ятифазні, півкрокові

П’ять контактів, фази від A до E. Десять кроків на повний цикл. Див. довідник HAL для отримання інформації про схеми.

тип 15: заданий користувачем

Це використовує форму хвилі, задану параметром модуля user_step_type, який може мати до 10 кроків та 5 фаз.

ФУНКЦІЇ

stepgen.make-pulses (без плаваючої коми)

Генерує імпульси кроку, використовуючи інформацію, обчислену за допомогою update-freq. Повинен викликатися якомога частіше, щоб максимізувати досяжну швидкість кроку та мінімізувати джиттер. Працює на всіх каналах одночасно.

stepgen.capture-position (використовує плаваючу кому)

Записує значення зворотного зв’язку про положення з високошвидкісного коду та робить його доступним на виводі для використання в інших частинах системи. Працює на всіх каналах одночасно.

stepgen.update-freq (використовує плаваючу кому)

Приймає команду швидкості або положення та перетворює її у форму, придатну для використання make-pulses для генерації кроків. Працює на всіх каналах одночасно.

ПІНИ

stepgen.N.counts s32 out

Поточна позиція, в лічильниках, для каналу N. Оновлено за допомогою capture-position.

stepgen.N.position-fb float out

Поточне положення в одиницях довжини (див. параметр position-scale). Оновлюється за допомогою capture-position. Роздільна здатність position-fb набагато вища, ніж один крок. Якщо вам потрібно бачити окремі кроки, використовуйте counts.

stepgen.N.enable bit in

Вмикає вихідні кроки — якщо значення false, кроки не генеруються.

stepgen.N.velocity-cmd число з плаваючою точкою (лише в режимі швидкості)

Задана швидкість, в одиницях довжини за секунду (див. параметр position-scale).

stepgen.N.position-cmd число з плаваючою коміркою (лише в режимі позиціонування)

Задана позиція в одиницях довжини (див. параметр position-scale).

stepgen.N.step bit out ((лише тип кроку 0)

Східчастий імпульсний вихід.

stepgen.N.dir bit out ((лише тип кроку 0)

Вихідний напрямок: низький для руху вперед, високий для руху назад.

stepgen.N.up bit out ((лише крок типу 1)

Підрахуйте вихідний сигнал, імпульси для кроків вперед.

stepgen.N.down bit out ((лише крок типу 1)

Вихід зворотного відліку, імпульси для зворотних кроків.

stepgen.N.phase-A через phase-E біт вимкнено (лише типи кроків 2-14)

Вихідні біти. phase-A та phase-B присутні для типів кроків 2-14, phase-C для типів 3-14, phase-D для типів 5-14 та phase-E для типів 11-14. Поведінка залежить від вибраного типу кроку.

ПАРАМЕТРИ

stepgen.N.frequency float ro

Поточна швидкість кроків, у кроках за секунду, для каналу N.

stepgen.N.maxaccel float rw

Межа прискорення/уповільнення, в одиницях довжини за секунду в квадраті.

stepgen.N.maxvel float rw

Максимально допустима швидкість, в одиницях довжини за секунду. Якщо задана максимальна швидкість не може бути досягнута з поточним поєднанням масштабування та періоду потоку make-pulses, вона буде скинута до найвищого досяжного значення.

stepgen.N.position-scale float rw

Масштабування зворотного зв’язку щодо положення, команди положення та команди швидкості в кроках на одиницю довжини.

stepgen.N.rawcounts s32 ro

Позиція в лічильниках, оновлена за допомогою make-pulses. (Примітка: оновлюється частіше, ніж вивід counts.)

stepgen.N.steplen u32 rw

Тривалість ступінчастих імпульсів у наносекундах. Вимірюється від наростаючого до спадаючого фронту.

stepgen.N.stepspace u32 rw (лише для типів кроків 0 та 1)

Мінімальний проміжок між імпульсами кроку, в наносекундах. Вимірюється від спаду до підйому фронту. Фактичний час залежить від частоти кроку і може бути набагато довшим. Якщо stepspace дорівнює 0, то step може бути активовано кожний період. Це можна використовувати разом з контактами автоматичного скидання hal_parport для виведення одного імпульсу кроку за період. У цьому режимі steplen має бути встановлено на один період або менше.

stepgen.N.dirsetup u32 rw (лише тип кроку 0)(лише тип кроку 0)

Мінімальний час встановлення напрямку на крок, у наносекундних періодах. Вимірюється від зміни напрямку до наростаючого фронту кроку.

stepgen.N.dirhold u32 rw (лише тип кроку 0)

Мінімальний час утримання напрямку після кроку, у наносекундах. Вимірюється від спадного фронту кроку до зміни напрямку.

stepgen.N.dirdelay u32 rw (лише для типів кроків 1 і вище)

Мінімальний час між кроком вперед і кроком назад, у наносекундах.

ЧАС

Існує п’ять параметрів синхронізації, які контролюють форму вихідного сигналу. Жоден тип кроку не використовує всі п’ять, і тільки ті, які будуть використовуватися, експортуються в HAL. Значення цих параметрів вимірюються в наносекундах, тому при зміні періодів потоків перерахунок не потрібен. На наведених нижче діаграмах синхронізації вони позначені наступними номерами:

(1) stepgen.n.steplen

(2) stepgen.n.stepspace

(3) stepgen.n.dirhold

(4) stepgen.n.dirsetup

(5) stepgen.n.dirdelay

Для кроку типу 0 використовуються параметри синхронізації з 1 по 4. Наступна діаграма синхронізації показує форми вихідних сигналів та те, що налаштовує кожен параметр.

               _____         _____               _____
    КРОК  ____/     \_______/     \_____________/     \______
              |     |       |     |             |     |
    Час      |-(1)-|--(2)--|-(1)-|--(3)--|-(4)-|-(1)-|
                                          |__________________
    DIR   ________________________________/

Для кроку типу 1 використовуються параметри синхронізації 1, 2 та 5. Наступна діаграма синхронізації показує форми вихідних сигналів та те, що налаштовує кожен параметр.

             _____       _____
    UP    __/     \_____/     \________________________________
            |     |     |     |         |
    Час    |-(1)-|-(2)-|-(1)-|---(5)---|-(1)-|-(2)-|-(1)-|
                                        |_____|     |_____|
    DOWN  ______________________________/     \_____/     \____

Для типів кроків 2 і вище точний шаблон виходів залежить від типу кроку (повний перелік див. у посібнику HAL). Виходи змінюються з одного стану в інший з мінімальним інтервалом steplen. Коли відбувається зміна напрямку, мінімальний час між останнім кроком в одному напрямку і першим в іншому напрямку дорівнює сумі steplen і dirdelay.

ДИВІТЬСЯ ТАКОЖ

Посібник користувача HAL.