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 sint out

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

stepgen.N.position-fb real out

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

stepgen.N.enable bool in

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

stepgen.N.velocity-cmd real in (velocity mode only)

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

stepgen.N.position-cmd real in (position mode only)

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

stepgen.N.step bool out (step type 0 only)

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

stepgen.N.dir bool out (step type 0 only)

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

stepgen.N.up bool out (step type 1 only)

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

stepgen.N.down bool out (step type 1 only)

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

stepgen.N.phase-A thru phase-E bool out (step types 2-14 only)

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

ПАРАМЕТРИ

stepgen.N.frequency real ro

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

stepgen.N.maxaccel real rw

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

stepgen.N.maxvel real rw

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

stepgen.N.position-scale real rw

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

stepgen.N.rawcounts sint ro

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

stepgen.N.steplen uint rw

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

stepgen.N.stepspace uint rw (step types 0 and 1 only)

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

stepgen.N.dirsetup uint rw (step type 0 only)

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

stepgen.N.dirhold uint rw (step type 0 only)

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

stepgen.N.dirdelay uint rw (step types 1 and higher only)

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

ЧАС

Існує п’ять параметрів синхронізації, які контролюють форму вихідного сигналу. Жоден тип кроку не використовує всі п’ять, і тільки ті, які будуть використовуватися, експортуються в 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.