Цей приклад пояснює, як підключити поширені на сьогоднішньому ринку підвісні пристрої MPG. У цьому прикладі використовується підвісний пристрій MPG3 та інтерфейсна карта C22 від CNC4PC, підключена до другого паралельного порту, вставленого в слот PCI. Цей приклад надає вам 3 осі з 3-кроковими приростами 0,1, 0,01, 0,001

У файлі custom.hal або jog.hal додайте наступне, переконавшись, що mux4 або кодер ще не використовуються. Якщо використовуються, просто збільште кількість і змініть номери посилань. Більше інформації про mux4 і кодер можна знайти в посібнику HAL або на сторінці man.

Докладнішу інформацію про додавання файлу HAL див. у розділі INI HAL Section документації. Для кожного з’єднання та всіх координатних літер передбачені контакти управління рухом. У цьому прикладі для руху в режимі світового простору використовуються контакти осі руху. Машини з неідентичною кінематикою можуть потребувати додаткових з’єднань для руху в режимі з’єднання.

jog.hal
# Підвіска Jog
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters base-thread
addf mux4.0 servo-thread

# Якщо ваш MPG видає квадратурний сигнал на клацання, встановіть x4 на 1
# Якщо ваш MPG видає 1 імпульс на клацання, встановіть x4 на 0
setp encoder.0.x4-mode 0

# Для режиму швидкості встановіть значення 1.
# У режимі швидкості вісь зупиняється, коли зупиняється циферблат,
# навіть якщо це означає, що заданий рух не завершено.
# Для режиму положення (за замовчуванням) встановіть значення 0.
# У режимі положення вісь рухатиметься точно на величину шкали імпульсного переміщення
# за кожним імпульсом, незалежно від того, скільки часу це займе.
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0

# Це встановлює масштаб, який буде використовуватися на основі вхідних даних mux4.
setp mux4.0.in0 0.1
setp mux4.0.in1 0.01
setp mux4.0.in2 0.001

# Входи компонента mux4
net scale1 mux4.0.sel0 <= parport.1.pin-09-in
net scale2 mux4.0.sel1 <= parport.1.pin-10-in

# Вихідний сигнал з mux4 надсилається на кожну осьову шкалу поштовхів.
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale

# Входи MPG
net mpg-a encoder.0.phase-A <= parport.1.pin-02-in
net mpg-b encoder.0.phase-B <= parport.1.pin-03-in

# Входи вибору осі
net mpg-x axis.x.jog-enable <= parport.1.pin-04-in
net mpg-y axis.y.jog-enable <= parport.1.pin-05-in
net mpg-z axis.z.jog-enable <= parport.1.pin-06-in

# Вихідний сигнал енкодера підраховується до осі. Рухатиметься лише вибрана вісь.
net encoder-counts  <= encoder.0.counts
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts

Якщо машина здатна на високе прискорення, щоб згладити рухи для кожного клацання MPG, використовуйте компонент посилання:../man/man9/ilowpass.9.html[ilowpass] для обмеження прискорення.

jog.hal з ilowpass
loadrt encoder num_chan=1
loadrt mux4 count=1
addf encoder.capture-position servo-thread
addf encoder.update-counters base-thread
addf mux4.0 servo-thread

loadrt ilowpass
addf ilowpass.0 servo-thread

setp ilowpass.0.scale 1000
setp ilowpass.0.gain 0.01

# Якщо ваш MPG видає квадратурний сигнал на клацання, встановіть x4 на 1
# Якщо ваш MPG видає 1 імпульс на клацання, встановіть x4 на 0
setp encoder.0.x4-mode 0

# Для режиму швидкості встановіть значення 1.
# У режимі швидкості вісь зупиняється, коли зупиняється циферблат,
# навіть якщо це означає, що заданий рух не завершено.
# Для режиму положення (за замовчуванням) встановіть значення 0.
# У режимі положення вісь рухатиметься точно на величину шкали імпульсного переміщення
# за кожним імпульсом, незалежно від того, скільки часу це займе.
setp axis.x.jog-vel-mode 0
setp axis.y.jog-vel-mode 0
setp axis.z.jog-vel-mode 0

# Це встановлює масштаб, який буде використовуватися на основі вхідного сигналу на mux4
# Використаний тут масштаб має бути помножений на масштаб ilowpass
setp mux4.0.in0 0.0001
setp mux4.0.in1 0.00001
setp mux4.0.in2 0.000001

# Входи компонента mux4
net scale1 mux4.0.sel0 <= parport.1.pin-09-in
net scale2 mux4.0.sel1 <= parport.1.pin-10-in

# Вихідні дані з лічильників кодувальника надсилаються до ilowpass
net mpg-out ilowpass.0.in <= encoder.0.counts

# Вихідний сигнал з mux4 надсилається на кожну осьову шкалу поштовхів.
net mpg-scale <= mux4.0.out
net mpg-scale => axis.x.jog-scale
net mpg-scale => axis.y.jog-scale
net mpg-scale => axis.z.jog-scale

# Входи MPG
net mpg-a encoder.0.phase-A <= parport.1.pin-02-in
net mpg-b encoder.0.phase-B <= parport.1.pin-03-in

# Входи вибору осі
net mpg-x axis.x.jog-enable <= parport.1.pin-04-in
net mpg-y axis.y.jog-enable <= parport.1.pin-05-in
net mpg-z axis.z.jog-enable <= parport.1.pin-06-in

# Вихід з ilowpass надсилається на кожну вісь jog count
# Рухатиметься лише вибрана вісь.
net encoder-counts  <= ilowpass.0.out
net encoder-counts => axis.x.jog-counts
net encoder-counts => axis.y.jog-counts
net encoder-counts => axis.z.jog-counts