آموزش, آموزش linux CNC, توصیه شده, دستگاه cnc, رباتیک و مکاترونیک

آموزش linux CNC – قسمت دوم – راه اندازی اولیه

linuxcnc کاربا

در قسمت قبل آموزش Linux CNC به این پرسش که لینوکس CNC چیست و چرا شناختن آن مهم است ؟ پاسخ دادیم و توضیحاتی کلی در مورد نرم افزار و همچنین روند آماده سازی طرح برای ارسال به دستگاه CNC رو توضیح دادیم، خوشبختانه استقبال از این سری آموزش بیشتر از انتظار ما بود و این باعث میشه با اراده بیشتری این سری آموزش رو ادامه بدیم. در این قسمت میخواهیم با نحوه کار LinuxCNC آشنا بشیم و محیط نرم افزار رو بشناسیم، با سیسوگ همراه باشید تا کار با این نرم افزار فوق العاده رو شروع کنیم.

 

نصب و راه اندازی LinuxCNC

شما میتونید لینوکس سی ان سی رو با کمک دستور apt روی توزیع لینوکسی که در حال حاضر دارید ازش استفاده میکنید نصب کنید یا این که اون رو از گیت هاب دانلود کرده و از سورس کامپایل کنید اما ما برای شروع راه سوم رو پیشنهاد میکنیم که استفاده از ایمیج دبیان آماده شده توسط خود LinuxCNC هست که نرم افزار و هر چیز اولیه که نیاز دارید داخلش موجود هست. شما میتونید این ایمیج رو از این لینک دانلود کنید، اما مثل اینکه جدیدا سایت LinuxCNC به طور مستقیم قابل دسترسی نیست، برای همین ما این ایمیج رو اینجا آپلود کردیم تا راحت تر بتونید بهش دسترسی پیدا کنید. برای رایت کردن ایمیج روی فلش میتونید از نرم افزار rufus استفاده کنید، بعد از بوت شدن از روی فلش میتونید به صورت لایو ایمیج رو اجرا کنید یا اینکه اون رو از همون ابتداروی سیستمتون نصب کنید.

در ادامه تصویری از محیط سیستم عامل بعد از نصب رو مشاهده میکنید.

محیط سیستم عامل بعد از نصب Linux CNC

محیط سیستم عامل بعد از نصب Linux CNC

این ایمیج از نسخه 4.19 توزیع دبیان و دستکاپ xfce استفاده میکنه و نکته مهم دیگه استفاده از کرنل real time هست که برای اجرای linuxCNC اجباریه، با زدن این دستور در ترمینال میتونید این اطلاعات رو بررسی کنید.

 

LinuxCNC چگونه کار میکند؟

LinuxCNC شامل مجموعه ای از برنامه های کاربردی قابل شخصی سازی برای کنترل دستگاه های سی ان سی تراش، فرز، پرینتر 3D، ربات ها، برش لیزر، برش پلاسما و.. تا 9 محور هست. این انعطاف پذیری ممکن نبود مگر با ساختار چندلایه این نرم افزار . این نرم افزار شامل چند بخش کلیدی هست که با هم یکپارچه شدند، در ادامه اونها رو با هم بررسی میکنیم

Graphical User Interface

رابط کاربری که وظیفه اون، ارتباط بین کاربر و نرم افزار هست.

Hardware Abstraction Layer

لایه انتزاعی سخت افزار (برای راحتی بیاید همون HAL صداش کنیم.) که وظیفش ارتباط دادن همه سیگنال های ورودی و خروجی نرم افزار و سیگنال های دنیای بیرون با نرم افزار هست، به طور مثال شما یک سیگنال دارید که میکرو سوییچ روی بردتون هست، حالا با کمک HAL میتونید اون رو به راحتی به هر سیگنالی در نرم افزار متصل کنید که میتونه مثلا یک آلارم باشه یا نشانگر وضعیت یا حتی کار دکمه امرجنسی استاپ رو انجام بده.

high level controllers

وظیفه کنترلر های سطح بالا، تولید و اجرای حرکت ماشین CNC هست به طور کلی اونها G Code رو پردازش کرده و سیگنال حرکت رو تولید میکنند، سپس این سیگنال حرکت به کمک HAL به هر دریافت کننده سیگنالی که لازم باشه متصل میشه، مثلا به یه درایور که به کمک pci به سیستم وصل شده یا به پورت پارالل یا یه آردوینو یا هر چیز دیگه ای (این HAL واقعا خداست!!). کنترلر های سطح بالا شامل کنترل کننده حرکت (EMCMOT)، کنترل کننده ورودی و خروجی ها (EMCIO) و اجرای تسک (EMCTASK) میشند.

در ادامه شما رو با بلوک دیاگرام اجزا این نرم افزار تنها میزارم. الان کاری باهاش نداریم اما در آینده بازم سراغش میایم.

بلوک دیاگرام اجزا این نرم افزار

نکته آخر رو هم بگم و اونم اینکه این نرم افزار در ابتدا توسط NIST توسعه داده شده و بعد چندین سال به صورت اوپن سورس منتشر شده. نمونه مشابه این قضیه نرم افزار Ghidra هم بوده که در ابتدا توسط NSA توسعه داده شده بود و بعد به صورت اوپن سورس منتشر شده بود.

مهندسی معکوس: لبهٔ تکنولوژی با گیدرا (Ghidra)

آشنایی با محیط نرم افزار LinuxCNC

برای باز کردن نرم افزار میتونیم از این مسیر پیش بریم.

باز کردن Linux CNC

در صفحه ای که باز میشه میتونیم یک کانفیگ نمونه رو باز کنیم.

کانفیگ نمونه

کانفیگ نمونه

کانفیگ هایی که میتونید انتخاب کنید چند دسته هستند:

  • sim : همه این کانفیگ ها شبیه سازی هستند و برای اجرا نیازی به سخت افزار ندارند.
  • by_interface : کانفیگ های این دسته بر اساس سخت افزار های شرکت های مختلف (کارت های توسعه و …) دسته بندی شدند و اگر سخت افزار مربوطه متصل نباشه به احتمال زیاد اصلا باز نمیشند.
  • by_machine : کانفیگ های این دسته بر اساس دستگاه های CNC شرکت های مختلف دسته بندی شدند و معمولا توی اینترنت یک آموزش مرتبط با اینها هست.
  • apps : شامل یکسری اپلیکیشن کاربردی هست که میتونید از کانفیگ های اونها به عنوان نمونه استفاده کنید و بعضی از اونها هم برنامه های کاربردی هستند مثل برنامه اندازه گیری تاخیر در سیستم و …
  • attic : چیز بدرد بخوری نیست !

 

در دسته sim چند نوع کانفیگ وجود داره که بر اساس انواع GUI هایی که لینوکس سی ان سی داره دسته بندی شدند، در ادامه اونها رو بررسی میکنیم.

Axis GUI

این نوع رابط کاربری دارای پیش نمایش زنده هست و با زبان پایتون نوشته شده، از کتابخانه Tk و OpenGL برای نمایش رابط کاربری استفاده میکنه.

Axis GUI

Axis GUI

Gmoccapy GUI

این نوع رابط کاربری دارای پیش نمایش زنده هست و برای صفحه های لمسی طراحی شده اما با موس و کیبرد هم قابل استفاده هست. زبان برنامه نویسی اون python هست.

gmoccapy

Gscreen GUI

این نوع رابط گرافیکی کاملا مناسب شخصی سازی هست چرا که بشدت از GladeVCP در آن استفاده شده و به همین دلیل از کتابخانه Glade در آن استفاده شده و زبان برنامه نویسی آن پایتون است.

Gscreen GUI

Gscreen GUI

 

TkLinuxCNC GUI

این یکی از اولین GUI های لینوکس سی ان سی بوده و با زبان Tcl و کتابخانه Tk نوشته شده.

TkLinuxCNC GUI

TkLinuxCNC GUI

Touchy GUI

این کانفیگ جهت استفاده در پنل های کنترلر دستگاه طراحی شده و نیازی به استفاده از ماوس یا کیبرد نداره و با صفحه لمسی استفاده میشه.

Touchy GUI

 

 

شروع کار با نرم افزار LinuxCNC

برای شروع کانفیگ sim->axis->axis رو باز میکنیم که دقیق تر بررسیش کنیم.

راه اندازی نرم افزار Linux CNC

 

برای اینکه برنامه رو اجرا بکنیم باید ابتدا دکمه امرجنسی استاپ رو بزنیم تا نرم افزار به حالت عادی برگرده، بعد از اون دستگاه رو روشن میکنیم و سپس home میکنیم دستگاه رو تا به 0 و 0 اولیه برگرده.

تنظیمات Linux CNC

تنظیمات Linux CNC

بعد از لحظاتی همونطور که مشاهده میکنید دستگاه در مختصات 2.5و0.5 هست در پایین صفحه میبینیم که در حال اجرای خط 83 از gcode هست و در صفحه شبیه ساز هم مسیر طی شده قابل مشاهده هست.

اجرای خط 83 از gcode

اجرای خط 83 از gcode

هنگامی که این کانفیگ axis رو انتخاب کردیم، یک کپی از تنظیماتش داخل home ما کپی شد که قابل دسترسی هست، پارامتر های قابل تنظیم نرم افزار و فایل های HAL در اونجا قرار دارند، یک فایل اصلی دیگه هم فایل ini هست که تعداد زیادی از پارامتر ها در اون تنظیم میشه.

تا قسمت بعد حسابی زیر و روش کنید. 🙂

کانفیگ axis

کانفیگ axis

 

 

 

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

16 دیدگاه در “آموزش linux CNC – قسمت دوم – راه اندازی اولیه

  1. Avatar for احسان احسان گفت:

    عذر خواهی می کنم اگه اشتباه می پرسم
    با این نرم افزار میتونیم به برد های مچتری لینک بشیم؟
    من میخوام یک بازوی رباتیک ۶ محور رو باهاش کنترل کنم برای این کار به چه سخت افزار هایی نیاز دارم؟
    در این نرم افزار توابعی برای حل معادلات سینماتیک معکوس و مستقیم وجود داره؟
    ممنون میشم اگه یه توضیح کامل در این مورد بفرمایید

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      سوال به جا و درستی پرسیدید
      این نرم افزار اوپن سورس هست و به همین جهت افراد مختلفی درایور های لازم برای لینک شدن linuxcnc با برد های مرسومی که داخل بازار هستند رو نوشتند و توی اینترنت قرار دادند. در مورد mach3 هم من یه سرچی کردم مثل اینکه یه چیزایی هست ، اما خودتون باید دقیق تر بررسی کنید و ببینید که نیاز شما رو بر طرف میکنه یا نه
      در مورد سوال دومتون هم ، شما میتونید از برد های مختلفی که با لینوکس cnc قابل راه اندازی هستند استفاده کنید ، اما برای اینکار باید اطلاعات کاملی در مورد نرم افزار و سخت افزار ها داشته باشید ، در غیر این صورت باید توی اینترنت یک پروژه که نیاز شمارو بر طرف میکنه رو پیدا و استفاده کنید و از سخت افزار های پیشنهادی همون آموزش استفاده کنید
      متاسفانه توی مبحث راه اندازی ربات با این نرم افزار اطلاعاتی ندارم که بتونم کمک کنم ، اما برای کنترل ربات پیشنهاد میکنم در مورد ROS هم تحقیق کنید
      https://en.wikipedia.org/wiki/Robot_Operating_System

  2. Avatar for صادق صادق گفت:

    سلام با سپاس از شما
    من اینطوری متوجه شدم که اگه بتونیم درایور HAL رو برای هر سخت افزاری بنویسیم، میتونیم از سیگنال های تولید شده توسط linux cnc برای سخت افزار خودمون استفاده کنیم. درسته؟
    سوال دوم اینکه linux cnc خودش سیگنال تولید میکنه یا فقط یک GUI هستش؟
    چون چیزی که من از بردهای Mesa فهمیدم ( از چت جی بی تی البته ! ) ظاهرا این برد ها فقط جی کدها رو دریافت میکنن و خودشون سیگنال مربوطه برای هر محور رو تولید میکنن. میخواستم بدونم یعنی اگه ما بخواهیم یک میکروکنترلر رو به linux cnc متصل کنیم باید همین کار رو کنیم؟ یا خود linux cnc سیگنال ها رو هم تولید میکنه و ما فقط باید اون سیگنال رو توسط میکرو بخونیم و به درایورها اعمال کنیم؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      همینطور هست ، به طور مثال در حال حاضر شخصی اومده و با کمک کتابخونه های hal یک درایور برای پین های gpio رزبری نوشته و میتونه سیگنال های حرکتی رو از اون gpio ها بگیره ، در قسمت چهارم ما مشابه این کار رو با آردوینو انجام میدیم
      لینوکس cnc از بخش های مختلفی تشکیل شده ، همونطور که در دیاگرامی که داخل مطلب هست مشخص شده ، یکی از بخش ها GUI هست و قسمتی که gcode رو پردازش میکنه rs-274 هست(در دیاگرام میتونید پیداش کنید) و بخشی که دستورات حرکتی رو تولید میکنه EMCMOT هست که همگی در نرم افزار هستند

      این چت چی پی تی فقط به درد سرگرمی میخوره ، حداقل فعلا ، توی مباحث تخصصی اصلا اصلا روش حساب نکنید

      1. Avatar for صادق صادق گفت:

        ممنونم از پاسختون.
        منتظر قسمت های بعدی آموزش هستیم…

  3. Avatar for احسان پورعلی احسان پورعلی گفت:

    بسیار عالی، لطفا لینک سوری برد mesa رو هم بگید تا زمان رسیدن به سر هم کردن و اجرا برد رو ساخته باشیم

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      بحث کارت های mesa خیلی جلوتره و فایل هاش باید آماده بشه
      اما برای بحث کد هاش توی صفحه هر محصول در سایت mesa کد های fpga اون محصول قرار داده شده مثلا
      http://store.mesanet.com/index.php?route=product/product&product_id=55&search=5i25

      1. Avatar for احسان پورعلی احسان پورعلی گفت:

        بله، ممنون کدهاش بصورت اپن سورس هم در دسترس هست. مشکل دسترسی به برد سخت افزاری هست

  4. Avatar for مهدی سهیلی پور مهدی سهیلی پور گفت:

    متشکرم از مطالب ارزشمندی که قرار میدهید

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      خواهش میکنم 🙂

  5. Avatar for Mohammad Hossein Mohammad Hossein گفت:

    شدیداً منتظر ادامه این سری هستیم🙂❤️

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      ممنون از شما 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *