리눅스NC
LinuxCNC![]() |
안정적 해제 | 2.8.1 |
---|---|
리포지토리 | https://github.com/LinuxCNC/linuxcnc |
면허증 | 무료 |
웹사이트 | http://linuxcnc.org/ |
리눅스NC(구 Enhanced Machine Controller 또는 EMC2)는 CNC 기계를 제어하기 위해 범용 컴퓨터를 사용하는 숫자 제어 기능을 구현하는 무료 오픈 소스 리눅스 소프트웨어 시스템이다. linuxcnc.org의 다양한 자원봉사 개발자들이 디자인한 이 제품은 일반적으로 필요한 실시간 커널을 제공하는 32비트 Ubuntu Linux의 수정된 버전이 포함된 ISO 파일로 번들로 제공된다.
실시간 운영 체제 통합이 촘촘해 실시간 커널이 없는 표준 우분투 리눅스 데스크톱 PC는 데모 모드로만 패키지를 실행할 수 있다.
목적
리눅스NC는 밀링 머신, 래치, 플라즈마 커터, 라우터, 커팅 머신, 로봇, 육각형 등 기계의 수치 제어를 위한 소프트웨어 시스템이다. G코드(RS-274NGC)를 입력으로 사용해 CNC 기계의 최대 9축이나 이음매까지 제어할 수 있다. 특정 사용 종류(터치 스크린, 인터랙티브 개발)에 적합한 몇 가지 GUI를 가지고 있다.
현재는 x86 PC 플랫폼에서 거의 독점적으로 사용되고 있지만, 다른 아키텍처에 포팅되어 있다.[citation needed] 실시간 수정된 커널을 광범위하게 사용하며 스테퍼형 드라이브와 서보형 드라이브를 모두 지원한다.
도면(CAM - Computer Automated Manufacturing) 기능에서 도면(CAD - Computer Aided Design) 또는 G-code 생성 기능을 제공하지 않는다.
역사
EMC Public Domain 소프트웨어 시스템은 NIST에 의해 원래 개발되었으며, National Center for Manufacturing Sciences / 공군이 후원하는 차세대 컨트롤러 프로그램[]을 뛰어넘는 다음 단계로서 개발되었다.NGC 1989] /개방형 시스템 아키텍처의 사양[Specification]SOSAS. EMC [향상된 기계 제어기 아키텍처 1993]로 불렸다. 정부가 밀링 머신의 제어를 위해 Public Domain 소프트웨어 시스템을 후원한 것은 1950년대에 디지털 컴퓨터와 함께 개발된 첫 번째 프로젝트 중 하나이다. 가공작업의 수치제어 RS-274D(G-code)를 위한 업계 표준언어의 "공급업체 중립" 참조 구현이 될 예정이었다.
소프트웨어에는 모션궤도 플래너를 구동하는 RS274 인터프리터, 실시간 모터/액추에이터 드라이버, 사용자 인터페이스 등이 포함됐다. FreeB를 실행하는 쉘프 PC 하드웨어를 이용한 고급 수치제어 시스템의 실현 가능성을 입증했다.SD 또는 Linux, 다양한 하드웨어 모션 제어 시스템에 접속. 추가 개발은 현재 및 추가 아키텍처(예: ARM 아키텍처 장치)를 계속 사용한다.
시연 프로젝트는 매우 성공적이었고 사용자와 자원봉사 기고가들로 구성된 커뮤니티를 만들었다. 2000년 6월경, NIST는 외부 기여자가 변경을 할 수 있도록 하기 위해 소스 코드를 Public Domain 라이선스에 따라 SourceForge로 재배치했다. 2003년에 커뮤니티는 그것의 일부를 다시 쓰고, 다른 부분을 재구성하고 단순화한 다음, EMC2라는 새로운 이름을 붙였다. EMC2는 여전히 활발하게 개발되고 있다. 면허는 현재 GNU 일반 공중 면허에 의거하고 있다.
EMC2라는 새로운 이름의 채택은 몇 가지 주요한 변경에 의해 촉발되었다. 주로, HOL(하드웨어 추상화 계층)이라고 알려진 새로운 계층이 도입되어 C 코드를 변경하거나 다시 컴파일하지 않고도 쉽게 상호 연결 기능을 수행할 수 있게 되었다. 모션 하드웨어에서 이러한 분할 궤적과 모션 계획을 통해 갠트리 머신, 선반 나사산 및 경성 태핑, SCARA 로봇 암 및 기타 다양한 어댑테이션을 지원하는 제어 프로그램을 쉽게 생성할 수 있다. HAL에는 신호를 검사하고 링크를 연결 및 제거할 수 있는 몇 가지 대화형 도구가 함께 제공된다. 실시간으로 신호를 검사할 수 있는 가상 오실로스코프도 포함하고 있다. EMC2의 또 다른 변경사항은 자동 공구 교환기 같은 복잡한 보조 장치를 구성하기 위해 실시간 환경에 맞게 조정된 Classic Ladder(오픈 소스 래더 로직 구현)이다.
2011년경 EMC2에서 LinuxCNC로 정식 명칭이 변경되었다. 이는 EMC Corporation의 주장과 프로젝트 리더의 합의에 의해 이루어졌다. 내부적으로 EMC 또는 EMC2의 LinuxCNC를 역사적으로 알려진 바와 같이 언급하는 경우도 있다. EMC Corporation은 이전에 명명된 LinuxCNC 프로젝트가 (주로) 스토리지 관련 제품과 함께 고객 또는 잠재 고객에게 혼란을 줄 것이라고 제안했다.
플랫폼
리눅스CNC는 미세하고 정밀한 실시간 기계 제어의 필요성 때문에 실시간 컴퓨팅 기능을 갖춘 플랫폼이 필요하다. 리눅스CNC(EMC)의 초기 버전은 윈도 NT의 실시간 버전에서 실행되었으나, 이후 버전의 윈도에서는 실시간 지원이 원활하지 않아 실시간 확장 기능을 갖춘 리눅스가 선호되는 플랫폼이 되었다.[1] 현재 리눅스CNC는 RTAI 커널 또는 PREFT-RT를 리눅스CNC의 'uspace' 향의 RTAPI를 사용한다.
기반 리눅스 시스템에 리눅스CNC와 기본 실시간 커널 패치를 설치하는 것은 어려운 작업이 될 수 있다. 폴 코너는 완벽한 작업 시스템(리눅스, 실시간 패치, 리눅스CNC)을 설치할 수 있는 CD인 BDI(Brain Dead Install)를 가지고 구조 작업에 나섰다.[2] 이로 인해 리눅스CNC는 훨씬 더 큰 사용자 커뮤니티에서 액세스할 수 있게 되었다. 오늘날 Paul의 BDI는 CD나 USB에 구울 수 있고 대부분의 PC 스타일 컴퓨터에서 실행할 수 있는 부팅 가능한(실시간) ISO로 진화하여 시스템을 설치할 필요 없이 LinuxCNC를 시승할 수 있다. 부팅 가능한 LinuxCNC ISO는 데비안 휘지(RTAI 커널)와 데비안 스트레치(RT-PREEMET 커널)에 사용할 수 있다.
리눅스CNC에 대한 정책은 데비안을 위해 패키지를 구축하고 지원을 제공하는 것이지만, 다른 리눅스 시스템 및 아키텍처에서도 사전 구축된 바이너리 패키지를 이용할 수 있다.[3]
디자인
리눅스CNC는 하드웨어와의 상호작용에서 '센스, 계획, 행동'의 모델을 사용한다.[4] 예를 들어, 현재 축 위치를 읽고 새로운 대상 위치/전압을 계산한 다음 하드웨어에 기록한다. 명령 버퍼링이 없으며 외부에서 시작된 읽기 또는 쓰기가 허용되지 않는다. 이러한 무버퍼링 접근방식은 리눅스NC의 기능을 추가하거나 변경할 수 있는 최대의 자유를 제공한다. LinuxCNC는 비교적 "덤프" 외장 하드웨어를 사용하고 호스트 컴퓨터의 기능을 프로그래밍함으로써 하드웨어 하나에 고정되지 않는다. 또한 관심 있는 사용자는 행동/기능/하드웨어를 쉽게 변경할 수 있다.
이 모델은 PCI, PCI, 병렬 포트(SPP 또는 EPP 모드), ISA 및 이더넷 등 특정 유형의 외부 인터페이스에 자신을 빌려주는 경향이 있다. USB와 RS232 직렬은 좋은 후보가 아니다. USB는 실시간 기능이 나쁘고 RS232는 모터 제어에 너무 느리다.
리눅스NC는 이 모델 때문에 기본적인 "실시간" 요구사항이 있다. 읽기와 쓰기의 간격은 일관되고 합리적으로 빨라야 한다. 일반적인 기계는 1밀리초의 반복 쓰레드에서 실시간 계산을 한다. 하드웨어에 대한 읽기 및 쓰기는 이 시간의 작은 부분(예: 200마이크로초)이어야 하며, 그렇지 않으면 위상 편이 조정을 더 어렵게 하고 비실시간 프로그램에 사용할 수 있는 시간이 줄어들어 화면 제어기의 응답성이 떨어질 수 있다.
LinuxCNC "사다리꼴 속도 프로파일 생성기 배포"[5]
배열
리눅스CNC는 HAL(하드웨어 추상화 계층)이라는 소프트웨어 계층을 사용한다.[6]
HAL은 유연한 상태에서 다양한 하드웨어 제어보드, 병렬 포트 또는 직렬 포트를 통한 출력 제어 신호, 스테퍼 또는 서보 모터, 솔레노이드 및 기타 액추에이터를 혼합 및 일치시킬 수 있는 다양한 구성을 허용한다.
리눅스NC는 또한 소프트웨어 프로그램 가능 로직 컨트롤러(PLC)를 포함하며, 일반적으로 광범위한 구성(예: 복잡한 가공 센터)에서 사용된다. 소프트웨어 PLC는 오픈 소스 프로젝트 Classiclader를 기반으로 하며 실시간 환경 내에서 실행된다.[8]
참고 항목
- Machinekit, EMC2/리눅스NC를 포트 및 확장하여 BeagleBone 및 관련 하드웨어에서 효율적으로 실행하기 위한 오픈 소스 프로젝트.
참조
- 메모들
- ^ "EMC History". Linuxcnc Board of Directors. September 12, 2018. Retrieved 2018-09-14.
- ^ "EMC History". Linuxcnc Board of Directors. September 12, 2018. Retrieved 2018-09-14.
- ^ "Getting LinuxCNC". linuxcnc.org. February 19, 2018. Retrieved 2018-09-14.
- ^ "Linuxcnc hardware design requirements".
- ^ "Simple Tp Notes".
- ^ "EMC2's Hardware Abstraction Layer". Linuxcnc Board of Directors. Retrieved 2010-09-30.
- ^ "A couple case studies". Retrieved 2010-09-30.
- ^ "ClassicLadder". sites.google.com. Retrieved 2014-03-06.
- 참고 문헌 목록
- 프록터, F. M. 및 J. Michaloski, "향상된 기계 제어기 아키텍처 개요", NIST 내부 보고서 5331, 1993년 12월. 온라인 ftp:///129.6.13.104/pub/NISTIR_5331.pdf[permanent dead link].
- 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.
- 루미아, "향상된 기계 제어기 아키텍처" 제5회 로봇공학 및 제조에 관한 국제 심포지엄, Maui, HI, 1994년 8월 14일-18일, https://www.nist.gov/customcf/get_pdf.cfm?pub_id=820483
- Fred Proctor 외, "오픈 아키텍처 컨트롤러의 시뮬레이션 및 구현", 제2596권, SPIE의 절차, 1995년 10월, https://web.archive.org/web/20100527174141/http://www.isd.mel.nist.gov/documents/proctor/sim/sim.html
- Fred Proctor, John Michaloski, Will Shackleford 및 Sandor Szabo, "기계 제어를 위한 표준 인터페이스 검증", Intelligent Automation and Soft Computing: 연구, 개발 및 응용 동향, 제2권, TSI 프레스, 앨버커키, NM, 1996, https://web.archive.org/web/20100527165142/http://www.isd.mel.nist.gov/documents/proctor/isram96/isram96.html
- 섀클포드 및 프록터, "기계 공구 제어기를 위한 오픈 소스 분배 사용", 센서 및 지능형 제조를 위한 제어 장치. 회의, 보스턴 MA, 2001, 제4191, 페이지 19–30, https://web.archive.org/web/20100820224129/http:///www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf 또는 doi:10.11117/12.417244
- Morar 등, 2007년 10월 25–26일, https://web.archive.org/web/20120313054238/http://www.recentonline.ro/021/Morar_L_01a.pdf, "풍력 발전기 개선 가능성에 대하여", 브라소프, 국제 경제 엔지니어링 및 제조 시스템 회의.
- Zhang 외, "Qt 기반 EMC2 CNC 개발", Manufacturing Technology & Machine Tool, 2008, http://en.cnki.com.cn/Article_en/CJFDTOTAL-ZJYC200802046.htm
- 레토 외, "실시간 수치 제어를 기반으로 한 PC의 NURBS 경로 보간용 CAD/CAM 통합", 2008년 6월 12~13일 제8차 고급 제조 시스템 및 기술에 관한 국제 회의UDINE의 ITY - 이탈리아, https://web.archive.org/web/20110703113248/http:///1901.110.28.100/amst08/1989/art837759.pdf
- Sui 등, "EMC2에서의 HAL의 메커니즘 및 적용", 현대 제조 기술 및 장비 2009-05, http://en.cnki.com.cn/Article_en/CJFDTOTAL-SDJI200905037.htm
- Zivanovic 등, "데스크탑 3축 병렬 키네마틱 머신 구성 방법",[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 등, "LINUX 기반 CNC 개방 제어 시스템 구현", 제12차 국제 과학 생산 엔지니어링 컨퍼런스 ON PROGN ON PROGUTION CONTING - CIM2009, 크로아티아 생산 엔지니어링 협회, Zagreb 2009,
- Li 등, "EMC2를 기반으로 병렬 키네마틱 머신의 제어 시스템 설계 및 시뮬레이션", 기계 설계 & 제조 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 외, "광학 카메라와 신경 네트워크를 이용한 CNC 밀링 기계 공구에 대한 컴퓨터 기반 공작물 탐지", 생산 엔지니어링 및 관리 5(2010) 1, 59–68, [1]
- 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.