LinuxCNC is about interacting with hardware. But few users have the same exact hardware specifications - similar, but not the same. And even for the exact same hardware, there may be different ways to use it, say for different materials or with different mills, which would require adaptations to the control of an already running system. An abstraction was needed to make it easier to configure LinuxCNC for a wide variety of hardware devices. At the highest level, it could simply be a way to allow a number of building blocks to be loaded and interconnected to assemble a complex system.
У цьому розділі представлено рівень абстракції апаратного забезпечення. Ви побачите, що багато з його складових є драйверами для апаратних пристроїв. Однак HAL може не тільки налаштовувати драйвери апаратного забезпечення.
1. Огляд HAL
The Hardware Abstraction Layer (or with a reference to the 2001 Space Odyssey movie just "HAL") is a software to
-
забезпечують інфраструктуру для зв’язку з багатьма програмними та апаратними компонентами системи та між ними.
-
за бажанням обробляти та/або перевизначати цю інформацію під час її потоку від компонента до компонента.
Сам по собі цей Middleware не має відношення до його застосування на CNC. Наприклад, пошук в Інтернеті виявив астрономічне застосування для управління телескопами за допомогою LinuxCNC. Двигуни переміщують телескоп у потрібне положення, і він повинен знати, як співвіднести активність двигуна з ефектом цього позиціонування в реальному світі. Така синхронізація положень двигунів з положеннями в реальному світі нагадує те, що повинні робити верстати з CNC або космічні апарати.
Будь-який контролер машини повинен знати:
-
про його внутрішній стан та як це відображається на навколишнє середовище (координати машини, стан перемикачів/регуляторів),
-
як очікується, що виконавчі механізми змінять цей стан,
-
як забезпечити оновлення внутрішнього стану за допомогою датчиків (енкодерів, зондів).
Шар HAL складається з частин (які називаються «компонентами»), які
-
пов’язані один з одним, наприклад, для оновлення даних про положення або для того, щоб алгоритм планування повідомляв двигунам про наступний крок.
-
може знати, як спілкуватися з обладнанням,
-
може просто обробляти вхідні дані та надавати вихідні дані іншим компонентам,
-
завжди періодично виконуються або
-
з дуже високою частотою виконання в кілька мікросекунд (мкс), що називається базовим потоком, наприклад, до
-
дати кроковому двигуну тригер для кроку вперед або
-
зчитати положення, представлене кодером.
-
-
з нижчою частотою кожну мілісекунду (мс), наприклад, до
-
скоригувати планування наступних рухів для виконання інструкції G-коду.
-
-
як компоненти "користувацького простору", що не працюють у реальному часі та виконують "головний цикл", як і будь-яке інше програмне забезпечення, і можуть бути перервані або затримані, коли решта системи зайнята або перевантажена.
-
Взяті разом, HAL дозволяє
-
програмувати для машини, яку програміст безпосередньо не знає, але може покладатися на програмний інтерфейс із чітко визначеним впливом на машину. Цей інтерфейс може бути використаний для
-
скажіть машині, що робити
-
послухайте, що машина хоче розповісти про стан, у якому вона знаходиться.
-
-
Вертикальні абстракції: Системний інтегратор-людина такої машини використовує HAL
-
описати, як виглядає машина та який кабель керує тим, який двигун приводить у рух яку вісь.
-
Опис машини, інтерфейси програміста та інтерфейс користувача якимось чином «зустрічаються» в цьому абстрактному шарі.
-
-
Горизонтальні абстракції:
-
Не всі машини мають усілякі функції
-
Фрезерні, токарні верстати та роботи мають багато спільного
-
характеристики (двигуни, шарніри тощо),
-
алгоритми планування своїх рухів.
-
-
HAL не взаємодіє безпосередньо з користувачем. Але було передбачено кілька інтерфейсів, які дозволяють маніпулювати HAL
-
з командного рядка за допомогою команди "halcmd".
-
зі скриптів Python та
-
з програм на C/C++,
але жоден з цих інтерфейсів не є «самим HAL».
HAL сама по собі не є програмою, вона складається з одного або декількох списків завантажених програм (компонентів), які періодично виконуються (у строгій послідовності), та області спільної пам’яті, яку ці компоненти використовують для обміну даними. Основний скрипт HAL виконується тільки один раз під час запуску машини, налаштовуючи потоки реального часу та місця спільної пам’яті, завантажуючи компоненти та налаштовуючи зв’язки даних між ними («сигнали» та «контакти»).
В принципі, кілька машин можуть спільно використовувати загальний HAL, щоб забезпечити їх взаємодію, проте поточна реалізація LinuxCNC обмежена одним інтерпретатором і одним модулем завдань. Наразі це майже завжди інтерпретатор G-коду і «milltask» (який, як виявилося, також добре працює для токарних верстатів і цілком підходить для роботів), але ці модулі можна вибирати під час завантаження. Зі зростанням інтересу до управління декількома взаємодіючими машинами, подолання цього обмеження, ймовірно, є одним з головних кроків для майбутнього розвитку LinuxCNC. Однак це дещо складно, і спільнота все ще обмірковує свої думки з цього приводу.
HAL лежить в основі LinuxCNC і використовується та/або розширюється всіма частинами LinuxCNC, включаючи графічні інтерфейси користувача. Інтерпретатор G-коду (або альтернативної мови) знає, як інтерпретувати G-код, і перекладає його в операції машини, запускаючи сигнали в HAL. Користувач може запитувати HAL різними способами, щоб отримати інформацію про його стан, який також відображає стан машини. Під час написання версії 2.9 графічні інтерфейси користувача все ще є винятком із цього правила і можуть знати те, чого HAL не знає (і не повинен знати).
2. Зв’язок
HAL особливий тим, що може дуже швидко спілкуватися
-
з іншими програмами, але зокрема
-
з його компонентами, які зазвичай виконуються в одному з потоків реального часу.
І під час спілкування частина LinuxCNC, з якою відбувається спілкування, не потребує підготовки до спілкування: всі ці дії виконуються асинхронно, тобто жоден компонент не перериває своє звичайне виконання для отримання сигналу, а сигнали можуть надсилатися відразу, тобто програма може чекати, поки надійде певне повідомлення, наприклад сигнал увімкнення, але їй не потрібно готуватися до отримання цього повідомлення.
Система зв’язку
-
представляє та контролює все обладнання, підключене до системи,
-
запускає та зупиняє інші програми, що взаємодіють.
Зв’язок з апаратним забезпеченням самої машини здійснюється відповідними спеціалізованими компонентами HAL.
Шар HAL є спільним простором, в якому всі численні частини, що складають LinuxCNC, обмінюються інформацією. Цей простір має контакти, які ідентифікуються за назвою, хоча інженер LinuxCNC може віддати перевагу асоціації з контактом електронної схеми. Ці контакти можуть передавати числові та логічні значення, булеві, плаваючі та цілочисельні значення з знаком і без знака. Існує також (відносно новий) тип контакту під назвою hal_port, призначений для байтових потоків, та фреймворк для обміну більш складними даними під назвою hal_stream (який використовує приватну спільну область пам’яті, а не контакт HAL). Ці два останні типи використовуються відносно рідко.
За допомогою HAL ви можете надіслати сигнал на цей контакт. Кожна частина HAL може зчитати значення сигналу з цього контакту. Це триває доти, доки на цей контакт не буде надіслано новий сигнал, який замінить попереднє значення. Основна система обміну повідомленнями HAL не залежить від CNC, але HAL постачається з великою кількістю компонентів, які знають багато про CNC і передають цю інформацію через контакти. Є контакти, що представляють
-
статична інформація про машину
-
поточний стан машини
-
кінцеві вимикачі
-
позиції, що підраховуються кроковими двигунами або вимірюються енкодерами
-
-
одержувачам інструкцій
-
ручне керування положенням машини ("поштовх")
-
позиції, які крокові двигуни повинні зайняти далі
-
За аналогією з електронними кабелями, контакти можуть бути з’єднані між собою, тому значення, що змінюється в одному контакті, служить вхідним сигналом для іншого контакту. Компоненти HAL готують такі вхідні та вихідні контакти і, таким чином, автоматично запускаються для виконання.
Багато «експертних» програмних компонентів LinuxCNC зазвичай реалізовані як компоненти HAL, які концептуально також називаються модулями. Ці комп’ютерні експерти постійно зчитують з HAL інформацію про стан, якого повинна досягти машина, і порівнюють цей бажаний стан із станом, в якому машина перебуває в даний момент. Коли існує різниця між тим, що повинно бути, і тим, що є в даний момент, виконуються певні дії для зменшення цієї різниці, при цьому постійно записуються оновлення поточного стану назад в простір даних HAL.
Є компоненти, що спеціалізуються на взаємодії з кроковими двигунами, а інші компоненти знають, як керувати сервоприводами. На вищому рівні деякі компоненти знають, як осі машини розташовані в 3D, а інші знають, як виконувати плавний рух від однієї точки простору до іншої. Токарні верстати, фрезерні верстати та роботи будуть відрізнятися за компонентами LinuxCNC, які є активними, тобто завантаженими конфігураційним файлом HAL для цієї машини. Проте дві машини можуть виглядати дуже по-різному, оскільки побудовані для дуже різних цілей, але якщо вони обидві використовують сервомотори, то вони все одно можуть використовувати один і той самий сервокомпонент HAL.
На найнижчому (найближчому до апаратного забезпечення) рівні, наприклад для крокових двигунів, опис стану цього двигуна є дуже інтуїтивним: це кількість кроків у певному напрямку. Різниця між бажаним положенням і фактичним положенням перетворюється на рух. Швидкість, прискорення та інші параметри можуть бути внутрішньо обмежені в самому компоненті або, за бажанням, обмежені компонентами, розташованими вище за течією. (Наприклад, у більшості випадків значення положення осі, що надсилаються до компонентів генератора кроків, вже обмежені та сформовані відповідно до налаштованих обмежень машини або поточної швидкості подачі.)
Будь-який рядок G-коду інтерпретується та запускає набір процедур, які, у свою чергу, знають, як взаємодіяти з компонентами, що знаходяться на середньому шарі, наприклад, для створення кола.
HAL займає особливе місце в серцях програмістів завдяки способу представлення потоку даних між модулями. Коли традиційні програмісти думають про змінні, адреси або порти вводу-виводу, HAL посилається на «контакти». Ці контакти з’єднуються або отримують значення за допомогою сигналів. Подібно до того, як інженер-електрик з’єднує дроти між контактами компонентів млина, інженер HAL встановлює потік даних між контактами екземплярів модулів.
Графічний інтерфейс LinuxCNC (AXIS, GMOCCAPY, Touchy тощо) відображає стан деяких контактів (наприклад, кінцевих вимикачів), але для усунення несправностей і налаштування існують також інші графічні інструменти: Halshow, Halmeter, Halscope і Halreport.
У решті цього вступу представлено
-
синтаксис того, як контакти різних компонентів з’єднані у файлах конфігурації HAL, та
-
програмне забезпечення для перевірки значень контактів
-
у будь-який момент,
-
розвиваючись з часом.
-
3. Проектування системи HAL
.HAL is based on traditional system design techniques.
HAL is based on the same principles that are used to design hardware circuits and systems, so it is useful to examine those principles first. Any system, including a CNC machine, consists of interconnected components. For the CNC machine, those components might be the main controller, servo amps or stepper drives, motors, encoders, limit switches, pushbutton pendants, perhaps a VFD for the spindle drive, a PLC to run a toolchanger, etc. The machine builder must aselect, mount and wire these pieces together to make a complete system.
Рисунок один буде записано в коді HAL ось так:
net signal-blue component.0.pin1-in component.1.pin1-out
net signal-red component.0.pin3-out component.1.pin3-in component.1.pin4-in
3.1. Вибір деталі
The machine builder does not need to worry about how each individual part works. He treats them as black boxes. During the design stage, he decides which parts he is going to use - steppers or servos, which brand of servo amp, what kind of limit switches and how many, etc. The integrator’s decisions about which specific components to use is based on what that component does and the specifications supplied by the manufacturer of the device. The size of a motor and the load it must drive will affect the choice of amplifier needed to run it. The choice of amplifier may affect the kinds of feedback needed by the amp and the velocity or position signals that must be sent to the amp from a control.
У світі HAL інтегратор повинен вирішити, які компоненти HAL необхідні. Зазвичай для кожної інтерфейсної плати потрібен драйвер. Додаткові компоненти можуть знадобитися для програмного генерування імпульсів кроку, функціональності PLC та широкого спектру інших завдань.
3.2. Проектування взаємозв’язків
The designer of a hardware system not only selects the parts, he also decides how those parts will be interconnected. Each black box has terminals, perhaps only two for a simple switch, or dozens for a servo drive or PLC. They need to be wired together. The motors connect to the servo amps, the limit switches connect to the controller, and so on. As the machine builder works on the design, he creates a large wiring diagram that shows how all the parts should be interconnected.
Під час використання HAL компоненти з’єднуються між собою сигналами. Розробник повинен вирішити, які сигнали потрібні та що вони повинні з’єднувати.
3.3. Впровадження
Once the wiring diagram is complete it is time to build the machine. The pieces need to be acquired and mounted, and then they are interconnected according to the wiring diagram. In a physical system, each interconnection is a piece of wire that needs to be cut and connected to the appropriate terminals.
HAL надає ряд інструментів, які допомагають «побудувати» систему HAL. Деякі з цих інструментів дозволяють «підключити» (або відключити) окремий «провід». Інші інструменти дозволяють зберегти повний перелік усіх деталей, проводів та іншої інформації про систему, щоб її можна було «відновити» за допомогою однієї команди.
3.4. Тестування
Very few machines work right the first time. While testing, the builder may use a meter to see whether a limit switch is working or to measure the DC voltage going to a servo motor. He may hook up an oscilloscope to check the tuning of a drive, or to look for electrical noise. He may find a problem that requires the wiring diagram to be changed; perhaps a part needs to be connected differently or replaced with something completely different.
HAL надає програмні еквіваленти вольтметра, осцилографа, генератора сигналів та інших інструментів, необхідних для тестування та налаштування системи. Ті самі команди, що використовуються для побудови системи, можуть бути використані для внесення необхідних змін.
3.5. Короткий зміст
This document is aimed at people who already know how to do this kind of hardware system integration, but who do not know how to connect the hardware to LinuxCNC. See the Remote Start Example section in the HAL UI Examples documentation.
Традиційна конструкція обладнання, описана вище, закінчується на межі головного блоку управління. За межами блоку управління знаходиться низка відносно простих блоків, з’єднаних між собою для виконання необхідних функцій. Всередині блок управління є великою загадкою — величезною чорною скринькою, яка, сподіваємося, працює.
HAL розширює цей традиційний метод проектування апаратного забезпечення на внутрішню частину великої чорної скриньки. Він перетворює драйвери пристроїв і навіть деякі внутрішні частини контролера на менші чорні скриньки, які можна з’єднувати між собою і навіть замінювати, як і зовнішнє апаратне забезпечення. Це дозволяє «схемі підключення системи» показувати частину внутрішнього контролера, а не тільки велику чорну коробку. І найголовніше, це дозволяє інтегратору тестувати та модифікувати контролер, використовуючи ті ж методи, які він використовував би для решти апаратного забезпечення.
Такі терміни, як двигуни, підсилювачі та енкодери, знайомі більшості інтеграторів машин. Коли ми говоримо про використання надзвичайно гнучкого екранованого кабелю з вісьмома провідниками для підключення енкодера до плати входу сервоприводу в комп’ютері, читач відразу розуміє, про що йдеться, і задається питанням: «Які роз’єми мені знадобляться для кожного кінця?». Такий самий підхід є необхідним для HAL, але конкретний хід думок може зайняти трохи часу, щоб налагодитися. Використання термінів HAL спочатку може здатися трохи дивним, але концепція роботи від одного з’єднання до наступного є такою самою.
Ідея розширення схеми підключення на внутрішню частину контролера і є сутністю HAL. Якщо ви звикли до ідеї взаємозв’язку апаратних чорних скриньок, то, ймовірно, не матимете проблем із використанням HAL для взаємозв’язку програмних чорних скриньок.
4. Концепції HAL
This section is a glossary that defines key HAL terms but it is a bit different than a traditional glossary because these terms are not arranged in alphabetical order. They are arranged by their relationship or flow in the HAL way of things.
Компонент:: Коли ми говорили про дизайн апаратного забезпечення, ми називали окремі елементи «деталями», «будівельними блоками», «чорними скриньками» тощо. Еквівалентом HAL є «компонент» або «компонент HAL». У цьому документі використовується термін «компонент HAL», коли існує ймовірність плутанини з іншими видами компонентів, але зазвичай використовується просто «компонент». Компонент HAL — це частина програмного забезпечення з чітко визначеними входами, виходами та поведінкою, яку можна встановлювати та з’єднувати між собою за потреби. + + Багато компонентів HAL моделюють поведінку матеріальної частини машини, і контакт дійсно може бути призначений для підключення до фізичного контакту на пристрої для зв’язку з ним, звідси і походить назва. Але найчастіше це не так. Уявіть собі модернізацію ручного токарного/фрезерного верстата. LinuxCNC реалізує те, як машина представляє себе зовнішньому світу, і другорядним є те, чи реалізація малювання кола вже реалізована на машині, чи надається з LinuxCNC. І зазвичай до уявної модернізації додають кнопки, які сигналізують про дію, наприклад, аварійну зупинку. LinuxCNC і машина стають єдиним цілим. І це завдяки HAL.
Параметр:: Багато апаратних компонентів мають налаштування, які не пов’язані з іншими компонентами, але все одно потребують доступу. Наприклад, сервопідсилювачі часто мають підлаштувальні потенціометри для налаштування та тестові точки, до яких можна підключити вимірювальний прилад або осцилограф для перегляду результатів налаштування. Компоненти HAL також можуть мати такі елементи, які називаються «параметрами». Існує два типи параметрів: вхідні параметри еквівалентні трим-потенціометрам — це значення, які користувач може налаштовувати і які залишаються фіксованими після встановлення. Вихідні параметри не можуть бути налаштовані користувачем — вони еквівалентні тестовим точкам, які дозволяють контролювати внутрішні сигнали.
Закріпити:: Апаратні компоненти мають термінали, які використовуються для їх з’єднання між собою. Еквівалентом HAL є «контакт» або «контакт HAL». «Контакт HAL» використовується в разі необхідності, щоб уникнути плутанини. Всі контакти HAL мають назви, і ці назви використовуються при їх з’єднанні між собою. Контакти HAL є програмними об’єктами, які існують тільки всередині комп’ютера.
Physical_Pin:: Багато пристроїв вводу-виводу мають реальні фізичні контакти або термінали, які підключаються до зовнішнього обладнання, наприклад, контакти роз’єму паралельного порту. Щоб уникнути плутанини, їх називають «фізичними контактами». Це ті елементи, які «виступають» у реальний світ.
|
Note
|
Ви можете задатися питанням, який зв’язок існує між HAL_pins, physical_pins та зовнішніми елементами, такими як кодери або карта STG: тут ми маємо справу з інтерфейсами типу перетворення/конвертації даних. |
Сигнал:: У фізичній машині клеми реальних апаратних компонентів з’єднані між собою дротами. Еквівалентом дроту в HAL є «сигнал» або «сигнал HAL». Сигнали HAL з’єднують контакти HAL між собою відповідно до вимог виробника машини. Сигнали HAL можна від’єднувати та під’єднувати за бажанням (навіть під час роботи машини).
Тип:: При використанні реального обладнання ви не підключали б 24-вольтовий релейний вихід до аналогового входу +/-10 В сервопідсилювача. Контакти HAL мають ті самі обмеження, які залежать від їхнього типу. І контакти, і сигнали мають типи, і сигнали можна підключати тільки до контактів того самого типу. Наразі існує 4 типи, а саме:
+ - біт - одне значення TRUE/FALSE або ON/OFF - float — 64-бітове число з плаваючою комою, з роздільною здатністю приблизно 53 біти та динамічним діапазоном понад 1000 біт. - u32 – 32-бітове беззнакове ціле число, допустимі значення від 0 до 4 294 967 295 - s32 – 32-бітове знакове ціле число, допустимі значення від -2 147 483 648 до +2 147 483 647 - u64 – 64-бітове беззнакове ціле число, допустимі значення від 0 до 18 446 744 073 709 551 615 - s64 – 64-бітове знакове ціле число, допустимі значення від -9,223,372,036,854,775,808 до +9,223,372,036,854,775,807
Функція:: Реальні апаратні компоненти, як правило, реагують на вхідні сигнали миттєво. Наприклад, якщо вхідна напруга на сервопідсилювачі змінюється, вихідна напруга також змінюється автоматично. Проте програмні компоненти не можуть діяти «автоматично». Кожен компонент має специфічний код, який повинен бути виконаний, щоб компонент міг виконувати свої функції. У деяких випадках цей код просто виконується як частина компонента. Однак у більшості випадків, особливо в компонентах реального часу, код повинен виконуватися в певній послідовності та з певними інтервалами. Наприклад, вхідні дані повинні бути прочитані перед тим, як виконувати обчислення на вхідних даних, а вихідні дані не повинні записуватися до завершення обчислень. У цих випадках код стає доступним для системи у вигляді однієї або декількох «функцій». Кожна функція є блоком коду, який виконує певну дію. Системний інтегратор може використовувати «потоки» для планування серії функцій, які будуть виконуватися в певному порядку і через певні проміжки часу.
Нитка:: «Потік» — це список функцій, які виконуються через певні проміжки часу в рамках завдання, що виконується в режимі реального часу. Коли потік створюється вперше, він має певний проміжок часу (період), але не має функцій. Функції можна додавати до потоку, і вони будуть виконуватися послідовно кожного разу, коли потік запускається.
Наприклад, припустимо, що ми маємо компонент parport з назвою hal_parport. Цей компонент визначає один або кілька контактів HAL для кожного фізичного контакту. Контакти описані в розділі документації цього компонента: їхні назви, як кожен контакт пов’язаний з фізичним контактом, чи є вони інвертованими, чи можна змінити полярність тощо. Але цього недостатньо, щоб передати дані з контактів HAL на фізичні контакти. Для цього потрібен код, і саме тут на сцену виходять функції. Компонент parport потребує щонайменше двох функцій: одна для зчитування фізичних вхідних контактів і оновлення контактів HAL, інша для отримання даних з контактів HAL і запису їх на фізичні вихідні контакти. Обидві ці функції є частиною драйвера parport.
5. Компоненти HAL
Each HAL component is a piece of software with well-defined inputs, outputs, and behavior, that can be installed and interconnected as needed. The section HAL Components List lists all available components and a brief description of what each does.
6. Проблеми з синхронізацією в HAL
Unlike the physical wiring models between black boxes that we have said that HAL is based upon, simply connecting two pins with a HAL-signal falls far short of the action of the physical case.
Справжня релейна логіка складається з реле, з’єднаних між собою, і коли контакт розмикається або замикається, струм негайно протікає (або зупиняється). Інші котушки можуть змінювати стан тощо, і все це просто «відбувається». Але в логіці типу PLC це працює не так. Зазвичай під час одного проходу по драбині кожна сходинка оцінюється в порядку її появи і тільки один раз за прохід. Ідеальним прикладом є драбина з однією сходинкою, з контактом NC, з’єднаним послідовно з котушкою. Контакт і котушка належать до одного реле.
Якби це було звичайне реле, то щойно на котушку подається живлення, контакти починають розмикатися та знеструмлювати її. Це означає, що контакти знову замикаються тощо, і т.д. Реле перетворюється на зумер.
У випадку з PLC, якщо котушка вимкнена, а контакт закритий, коли PLC починає оцінювати щабель, то після завершення цього проходу котушка вмикається. Той факт, що вмикання котушки відкриває контакт, який її живить, ігнорується до наступного проходу. На наступному проході PLC бачить, що контакт відкритий, і знеструмлює котушку. Таким чином, реле все ще швидко перемикається між увімкненим і вимкненим станом, але з частотою, яка визначається тим, як часто PLC оцінює щабель.
У HAL функція — це код, який оцінює щабель (щаблі). Фактично, реальна версія ClassicLadder, що підтримує HAL, експортує функцію, яка саме це і робить. Тим часом, потік — це те, що запускає функцію через певні проміжки часу. Так само, як ви можете вибрати, щоб PLC оцінював усі свої щаблі кожні 10 мс або кожну секунду, ви можете визначити потоки HAL з різними періодами.
Різниця між потоками полягає не в тому, що саме потік робить, а в тому, які функції з ним пов’язані. Справжня відмінність полягає просто в тому, як часто потік виконується.
У LinuxCNC у вас може бути потік тривалістю 50 мкс та потік тривалістю 1 мс. Вони будуть створені на основі BASE_PERIOD та SERVO_PERIOD, фактичний час залежить від значень у вашому INI-файлі.
Наступний крок – вирішити, що має робити кожен потік. Деякі з цих рішень однакові в (майже) будь-якій системі LinuxCNC. Наприклад, обробник команд руху завжди додається до servo-thread.
Інші з’єднання будуть виконані інтегратором. Вони можуть включати підключення функцій зчитування енкодера драйвера STG і запису DAC до сервопотоку, або підключення функції StepGen до базового потоку, разом з функцією (функціями) parport для запису кроків в порт.