LinuxCNC
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.
Aktualna wersja stabilna | 2.9.2 – 24 grudnia 2023; ponad 8 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 |
Zastosowanie
edytujLinuxCNC 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
edytujOprogramowanie 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
edytujZe 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
edytujLinuxCNC 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- ↑ LinuxCNC 2.9.2 released [online], linuxcnc.org [dostęp 2023-12-24] .
- ↑ a b c LinuxCNC Documentation Wiki: Case Studies [online], wiki.linuxcnc.org [dostęp 2022-09-07] .
- ↑ a b EMC History [online], linuxcnc.org [dostęp 2023-08-31] .
- ↑ Getting LinuxCNC [online], linuxcnc.org [dostęp 2023-08-31] .
- ↑ ClassicLadder [online], sites.google.com [dostęp 2022-09-07] .
Bibliografia
edytuj- Proctor, F. M., and Michaloski, J., „Enhanced Machine Controller Architecture Overview,” NIST Internal Report 5331, December 1993.
- Albus, J.S.; Lumia, R. (1994). „The Enhanced Machine Controller (EMC): An Open Architecture Controller for Machine Tools”. Journal of Manufacturing Review. 7 (3): 278–280.
- Lumia, „The Enhanced Machine Controller Architecture”, 5th International Symposium on Robotics and Manufacturing, Maui, HI, August 14–18, 1994, https://www.nist.gov/customcf/get_pdf.cfm?pub_id=820483
- Fred Proctor et al., „Simulation and Implementation of an Open Architecture Controller”, Simulation, and Control Technologies for Manufacturing, Volume 2596, Proceedings of the SPIE, October 1995, https://web.archive.org/web/20100527174141/http://www.isd.mel.nist.gov/documents/proctor/sim/sim.html
- Fred Proctor, John Michaloski, Will Shackleford, and Sandor Szabo, „Validation of Standard Interfaces for Machine Control”, Intelligent Automation and Soft Computing: Trends in Research, Development, and Applications, Volume 2, TSI Press, Albuquerque, NM, 1996, https://web.archive.org/web/20100527165142/http://www.isd.mel.nist.gov/documents/proctor/isram96/isram96.html
- Shackleford and Proctor, „Use of open source distribution for a Machine tool Controller”, Sensors and controls for intelligent manufacturing. Conference, Boston MA, 2001, vol. 4191, s. 19–30, https://web.archive.org/web/20100820224129/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf or doi:10.1117/12.417244
- Morar et al., „ON THE POSSIBILITY OF IMPROVING THE WIND GENERATORS”, International Conference on Economic Engineering and Manufacturing Systems, Brasov, 25–26 October 2007, https://web.archive.org/web/20120313054238/http://www.recentonline.ro/021/Morar_L_01a.pdf
- Zhang et al., „Development of EMC2 CNC Based on Qt”, Manufacturing Technology & Machine Tool, 2008, http://en.cnki.com.cn/Article_en/CJFDTOTAL-ZJYC200802046.htm
- Leto et al., „CAD/CAM INTEGRATION FOR NURBS PATH INTERPOLATION ON PC BASED REAL-TIME NUMERICAL CONTROL”, 8th INTERNATIONAL CONFERENCE ON ADVANCED MANUFACTURING SYSTEMS AND TECHNOLOGY JUNE 12–13, 2008 UNIVERSITY OF UDINE – ITALY, https://web.archive.org/web/20110703113248/http://158.110.28.100/amst08/papers/art837759.pdf
- Xu et al., „Mechanism and Application of HAL in the EMC2", Modern Manufacturing Technology and Equipment 2009-05, http://en.cnki.com.cn/Article_en/CJFDTOTAL-SDJI200905037.htm
- Zivanovic et al., „Methodology for Configuring Desktop 3-axis Parallel Kinematic Machine” [permanent dead link], FME Transactions (2009) 37, 107-115.
- Glavonjic; et al. (2009). „Desktop 3-axis parallel kinematic milling machine”. The International Journal of Advanced Manufacturing Technology. 46 (1-4): 51–60. doi:10.1007/s00170-009-2070-3.
- Staroveski et al., „IMPLEMENTATION OF A LINUX-BASED CNC OPEN CONTROL SYSTEM”, 12th INTERNATIONAL SCIENTIFIC CONFERENCE ON PRODUCTION ENGINEERING –CIM2009, Croatian Association of Production Engineering, Zagreb 2009.
- Li et al., „Control system design and simulation of parallel kinematic machine based on EMC2", Machinery Design & Manufacture 2010-08, http://en.cnki.com.cn/Article_en/CJFDTOTAL-JSYZ201008074.htm
- Li; et al. (2010). „Kinematics Analysis and Control System Design of 6-DOF Parallel Kinematic Machine with Matlab and EMC2". Advanced Materials Research. 102-104: 363–367. doi:10.4028/www.scientific.net/AMR.102-104.363.
- Klancnik et al., „Computer-Based Workpiece Detection on CNC Milling Machine Tools Using Optical Camera and Neural Networks”, Advances in Production Engineering & Management 5 (2010) 1, 59-68, https://web.archive.org/web/20110717210421/http://maja.uni-mb.si/files/apem/APEM5-1-view.pdf
- Milutinovic; et al. (2010). „Reconfigurable robotic machining system controlled and programmed in a machine tool manner”. The International Journal of Advanced Manufacturing Technology. 55 (9-12): 555. doi:10.1007/s00170-010-2888-8.
Linki zewnętrzne
edytuj- EMC2 na www.linuxcnc.org
- EMC2 wiki projektu
- The NIST RS274NGC Standard – Version 3 Aug 2000. linuxcnc.org. [zarchiwizowane z tego adresu (2010-07-13)]. także jako PDF
- The Enhanced Machine Controller. isd.mel.nist.gov. [zarchiwizowane z tego adresu (2010-10-20)]. strona projektu w NIST
- Historia jednej maszyny – konwersja przykładowa Boss 5