LinuxCNC

Z Wikipedii, wolnej encyklopedii
LinuxCNC
Aktualna wersja stabilna 2.9.2 – 24 grudnia 2023; ponad 5 miesięcy temu[1]
Język programowania C
Platforma sprzętowa x86
System operacyjny Linux
Rodzaj System operacyjny wyspecjalizowany do sterowania maszynami CNC
Licencja GNU GPLv2
Strona internetowa

LinuxCNC[2] (dawniej Enhanced Machine Controller lub EMC2) – otwarte oprogramowanie umożliwiające kontrolowanie maszyn CNC za pomocą komputera osobistego. Rozpowszechniane jest zazwyczaj jako obraz ISO wraz ze zmodyfikowaną wersją systemu operacyjnego Debian.

Zastosowanie[edytuj | edytuj kod]

LinuxCNC daje możliwość wykorzystania komputera osobistego do sterowania maszynami, takimi jak frezarki, tokarki, przecinarki plazmowe i inne maszyny do cięcia, plotery, roboty i platformy Stewarta.

Oprogramowanie pozwala kontrolować do 9 osi lub przegubów maszyny CNC za pomocą instrukcji w języku G-code (RS-274NGC). Posiada zestaw interfejsów graficznych dostosowanych do konkretnych zadań (ekran dotykowy, interaktywny).

System zaprojektowany jest z myślą o wykorzystaniu w komputerach osobistych z architekturą procesora x86. Wykorzystuje on znacznie zmodyfikowane jądro Linuxa, umożliwiające pracę jako system czasu rzeczywistego (RTAI), aby obsługiwać urządzenia z silnikami krokowymi oraz serwomotorami.

Historia[edytuj | edytuj kod]

Oprogramowanie Enhanced Machine Controller zostało pierwotnie opracowane przez NIST jako następny krok po sponsorowanym przez National Center for Manufacturing Sciences / Air Force programie kontrolerów Next Generation Controller Program [NGC 1989] / Specification for an Open Systems Architecture [SOSAS]. Nadano mu nazwę EMC (Enhanced Machine Controller Architecture 1993). Finansowane przez rząd systemy oprogramowania do obsługi frezarek, należące do domeny publicznej, były jednymi z pierwszych projektów opracowanych z użyciem komputera cyfrowego w latach 50. XX wieku. Miała to być referencyjna, „niezależna od dostawcy” implementacja standardowego języka branżowego do sterowania numerycznego obróbką skrawaniem, RS-274D (G-code).

Oprogramowanie zawierało interpreter RS274 sterujący planerem trajektorii ruchu, sterowniki silnika lub siłownika w czasie rzeczywistym oraz interfejs użytkownika. Posiadało ono możliwość zaawansowanego systemu sterowania numerycznego przy użyciu półprofesjonalnego sprzętu komputerowego z systemem FreeBSD lub Linux, współpracującego z różnymi systemami sterowania ruchem. Obecnie rozwój kontynuowany jest przy użyciu obecnych architektur (np. ARM).

Sukces projektu demonstracyjnego spowodował powstanie społeczności użytkowników i wolontariuszy. Około czerwca 2000 r. NIST przeniósł kod źródłowy do sourceforge.net na licencji domeny publicznej, aby umożliwić zewnętrznym autorom wprowadzanie zmian. W 2003 r. społeczność przepisała niektóre fragmenty kodu, zreorganizowała i uprościła inne, a następnie nadała mu nową nazwę EMC2. Obecnie kod podlega pod Powszechną Licencję Publiczną GNU (GPL).

Przyjęcie nowej nazwy EMC2 było spowodowane istotnymi zmianami: przede wszystkim wprowadzono nową warstwę zwaną HAL, aby można było łatwo łączyć funkcje bez zmiany kodu C, lub rekompilacji. Oddzielono w ten sposób trajektorię i planowanie ruchu od sprzętu ruchomego, ułatwiając tworzenie programów sterujących obsługujących suwnicę, gwintowanie tokarskie i gwintowanie sztywne, ramiona robotów SCARA i wiele innych adaptacji. HAL jest dostarczany z interaktywnymi narzędziami do badania sygnałów oraz łączenia i usuwania połączeń. Zawiera również wirtualny oscyloskop służący do badania sygnałów w czasie rzeczywistym. Kolejną zmianą w EMC2 jest ClassicLadder (implementacja logiki drabinkowej w wersji open source) dostosowana do środowiska czasu rzeczywistego, w celu konfiguracji złożonych urządzeń pomocniczych, takich jak automatyczne zmieniarki narzędzi.

Około 2011 roku oficjalnie zmieniono nazwę z EMC2 na LinuxCNC. Dokonano tego na prośbę EMC Corporation za zgodą kierownictwa projektu. Firma EMC Corporation zasugerowała zmianę nazwy projektu, aby rozwiązać problem wiązania oprogramowania do kontroli maszyn CNC z oferowanymi przez nich systemami do zarządzania i przechowywania danych.

Platformy[edytuj | edytuj kod]

Ze względu na konieczność precyzyjnej, drobiazgowej kontroli maszyn w czasie rzeczywistym, LinuxCNC wymaga platformy z możliwościami obliczeń w czasie rzeczywistym. Wczesne wersje LinuxCNC (EMC) działały w oparciu o system Windows NT z obsługą czasu rzeczywistego, jednak późniejsze wersje systemu Windows nie zapewniały odpowiedniego wsparcia dla tej funkcji. W związku z tym, preferowaną platformą stał się Linux z rozszerzeniami umożliwiającymi działanie w czasie rzeczywistym[3]. Obecnie LinuxCNC wykorzystuje jądro RTAI lub PREEMPT-RT z wersją narzędzia RTAPI typu „uspace”.

W celu ułatwienia instalacji systemu LinuxCNC wraz z podstawowymi poprawkami jądra czasu rzeczywistego na bazowym systemie Linux, Paul Corner opracował rozwiązanie znane jako BDI (Brain Dead Install). Była to płyta CD, na której znajdował się kompletny i funkcjonalny system gotowy do instalacji, zawierający nie tylko system operacyjny Linux, lecz również niezbędne poprawki wprowadzające wsparcie dla działania w czasie rzeczywistym oraz pakiet LinuxCNC[3].

Obecnie BDI oferowane jest w postaci bootowalnego obrazu ISO, który umożliwia uruchomienie systemu w trybie „live”. Obraz ISO można nagrać na płycie CD lub przenośnym nośniku USB, co pozwala na wdrożenie LinuxCNC na większości komputerów osobistych. Dzięki temu istnieje możliwość przetestowania funkcjonalności LinuxCNC bez konieczności dokonywania pełnej instalacji systemu operacyjnego. Bootowalne obrazy ISO LinuxCNC są dostępne w wersjach przeznaczonych dla dystrybucji Debiana o nazwach kodowych „wheezy” (wykorzystującej jądro RTAI) oraz „stretch” (opartej na jądrze RT-PREEMPT).

Polityka LinuxCNC polega na budowaniu pakietów i oferowaniu wsparcia dla Debiana, ale gotowe pakiety binarne są również dostępne dla innych systemów i architektur Linuksa[4].

Konfiguracja[edytuj | edytuj kod]

LinuxCNC używa warstwy oprogramowania o nazwie HAL. Umożliwia ona budowę wielu konfiguracji: można mieszać i dopasowywać różne płyty sterujące sprzętem, sygnały sterowania sygnałem wyjściowym przez port równoległy lub port szeregowy – jednocześnie sterując silnikami krokowymi lub serwomechanizmami, elektromagnesami i innymi siłownikami[2].

LinuxCNC[2] zawiera również programowalny sterownik logiczny (PLC), który jest zwykle używany w rozległych konfiguracjach (takich jak złożone centra obróbki). Oprogramowanie PLC opiera się na projekcie open source ClassicLadder i działa w środowisku czasu rzeczywistego[5].

Przypisy[edytuj | edytuj kod]

  1. LinuxCNC 2.9.2 released [online], linuxcnc.org [dostęp 2023-12-24].
  2. a b c LinuxCNC Documentation Wiki: Case Studies [online], wiki.linuxcnc.org [dostęp 2022-09-07].
  3. a b EMC History [online], linuxcnc.org [dostęp 2023-08-31].
  4. Getting LinuxCNC [online], linuxcnc.org [dostęp 2023-08-31].
  5. ClassicLadder [online], sites.google.com [dostęp 2022-09-07].

Bibliografia[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]