در قسمت قبل آموزش Linux CNC به این پرسش که لینوکس CNC چیست و چرا شناختن آن مهم است ؟ پاسخ دادیم و توضیحاتی کلی در مورد نرم افزار و همچنین روند آماده سازی طرح برای ارسال به دستگاه CNC رو توضیح دادیم، خوشبختانه استقبال از این سری آموزش بیشتر از انتظار ما بود و این باعث میشه با اراده بیشتری این سری آموزش رو ادامه بدیم. در این قسمت میخواهیم با نحوه کار LinuxCNC آشنا بشیم و محیط نرم افزار رو بشناسیم، با سیسوگ همراه باشید تا کار با این نرم افزار فوق العاده رو شروع کنیم.
نصب و راه اندازی LinuxCNC
شما میتونید لینوکس سی ان سی رو با کمک دستور apt روی توزیع لینوکسی که در حال حاضر دارید ازش استفاده میکنید نصب کنید یا این که اون رو از گیت هاب دانلود کرده و از سورس کامپایل کنید اما ما برای شروع راه سوم رو پیشنهاد میکنیم که استفاده از ایمیج دبیان آماده شده توسط خود LinuxCNC هست که نرم افزار و هر چیز اولیه که نیاز دارید داخلش موجود هست. شما میتونید این ایمیج رو از این لینک دانلود کنید، اما مثل اینکه جدیدا سایت LinuxCNC به طور مستقیم قابل دسترسی نیست، برای همین ما این ایمیج رو اینجا آپلود کردیم تا راحت تر بتونید بهش دسترسی پیدا کنید. برای رایت کردن ایمیج روی فلش میتونید از نرم افزار rufus استفاده کنید، بعد از بوت شدن از روی فلش میتونید به صورت لایو ایمیج رو اجرا کنید یا اینکه اون رو از همون ابتداروی سیستمتون نصب کنید.
در ادامه تصویری از محیط سیستم عامل بعد از نصب رو مشاهده میکنید.
این ایمیج از نسخه 4.19 توزیع دبیان و دستکاپ xfce استفاده میکنه و نکته مهم دیگه استفاده از کرنل real time هست که برای اجرای linuxCNC اجباریه، با زدن این دستور در ترمینال میتونید این اطلاعات رو بررسی کنید.
1 2 | user@debian:~$ uname -a Linux debian 4.19.0-21-rt-amd64 #1 SMP PREEMPT RT Debian 4.19.249-2 (2022-06-30) x86_64 GNU/Linux |
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 توسعه داده شده بود و بعد به صورت اوپن سورس منتشر شده بود.
آشنایی با محیط نرم افزار LinuxCNC
برای باز کردن نرم افزار میتونیم از این مسیر پیش بریم.
در صفحه ای که باز میشه میتونیم یک کانفیگ نمونه رو باز کنیم.
کانفیگ هایی که میتونید انتخاب کنید چند دسته هستند:
- sim : همه این کانفیگ ها شبیه سازی هستند و برای اجرا نیازی به سخت افزار ندارند.
- by_interface : کانفیگ های این دسته بر اساس سخت افزار های شرکت های مختلف (کارت های توسعه و …) دسته بندی شدند و اگر سخت افزار مربوطه متصل نباشه به احتمال زیاد اصلا باز نمیشند.
- by_machine : کانفیگ های این دسته بر اساس دستگاه های CNC شرکت های مختلف دسته بندی شدند و معمولا توی اینترنت یک آموزش مرتبط با اینها هست.
- apps : شامل یکسری اپلیکیشن کاربردی هست که میتونید از کانفیگ های اونها به عنوان نمونه استفاده کنید و بعضی از اونها هم برنامه های کاربردی هستند مثل برنامه اندازه گیری تاخیر در سیستم و …
- attic : چیز بدرد بخوری نیست !
در دسته sim چند نوع کانفیگ وجود داره که بر اساس انواع GUI هایی که لینوکس سی ان سی داره دسته بندی شدند، در ادامه اونها رو بررسی میکنیم.
Axis GUI
این نوع رابط کاربری دارای پیش نمایش زنده هست و با زبان پایتون نوشته شده، از کتابخانه Tk و OpenGL برای نمایش رابط کاربری استفاده میکنه.
Gmoccapy GUI
این نوع رابط کاربری دارای پیش نمایش زنده هست و برای صفحه های لمسی طراحی شده اما با موس و کیبرد هم قابل استفاده هست. زبان برنامه نویسی اون python هست.
Gscreen GUI
این نوع رابط گرافیکی کاملا مناسب شخصی سازی هست چرا که بشدت از GladeVCP در آن استفاده شده و به همین دلیل از کتابخانه Glade در آن استفاده شده و زبان برنامه نویسی آن پایتون است.
TkLinuxCNC GUI
این یکی از اولین GUI های لینوکس سی ان سی بوده و با زبان Tcl و کتابخانه Tk نوشته شده.
Touchy GUI
این کانفیگ جهت استفاده در پنل های کنترلر دستگاه طراحی شده و نیازی به استفاده از ماوس یا کیبرد نداره و با صفحه لمسی استفاده میشه.
شروع کار با نرم افزار LinuxCNC
برای شروع کانفیگ sim->axis->axis رو باز میکنیم که دقیق تر بررسیش کنیم.
برای اینکه برنامه رو اجرا بکنیم باید ابتدا دکمه امرجنسی استاپ رو بزنیم تا نرم افزار به حالت عادی برگرده، بعد از اون دستگاه رو روشن میکنیم و سپس home میکنیم دستگاه رو تا به 0 و 0 اولیه برگرده.
بعد از لحظاتی همونطور که مشاهده میکنید دستگاه در مختصات 2.5و0.5 هست در پایین صفحه میبینیم که در حال اجرای خط 83 از gcode هست و در صفحه شبیه ساز هم مسیر طی شده قابل مشاهده هست.
هنگامی که این کانفیگ axis رو انتخاب کردیم، یک کپی از تنظیماتش داخل home ما کپی شد که قابل دسترسی هست، پارامتر های قابل تنظیم نرم افزار و فایل های HAL در اونجا قرار دارند، یک فایل اصلی دیگه هم فایل ini هست که تعداد زیادی از پارامتر ها در اون تنظیم میشه.
تا قسمت بعد حسابی زیر و روش کنید. 🙂
عذر خواهی می کنم اگه اشتباه می پرسم
با این نرم افزار میتونیم به برد های مچتری لینک بشیم؟
من میخوام یک بازوی رباتیک ۶ محور رو باهاش کنترل کنم برای این کار به چه سخت افزار هایی نیاز دارم؟
در این نرم افزار توابعی برای حل معادلات سینماتیک معکوس و مستقیم وجود داره؟
ممنون میشم اگه یه توضیح کامل در این مورد بفرمایید
سلام
سوال به جا و درستی پرسیدید
این نرم افزار اوپن سورس هست و به همین جهت افراد مختلفی درایور های لازم برای لینک شدن linuxcnc با برد های مرسومی که داخل بازار هستند رو نوشتند و توی اینترنت قرار دادند. در مورد mach3 هم من یه سرچی کردم مثل اینکه یه چیزایی هست ، اما خودتون باید دقیق تر بررسی کنید و ببینید که نیاز شما رو بر طرف میکنه یا نه
در مورد سوال دومتون هم ، شما میتونید از برد های مختلفی که با لینوکس cnc قابل راه اندازی هستند استفاده کنید ، اما برای اینکار باید اطلاعات کاملی در مورد نرم افزار و سخت افزار ها داشته باشید ، در غیر این صورت باید توی اینترنت یک پروژه که نیاز شمارو بر طرف میکنه رو پیدا و استفاده کنید و از سخت افزار های پیشنهادی همون آموزش استفاده کنید
متاسفانه توی مبحث راه اندازی ربات با این نرم افزار اطلاعاتی ندارم که بتونم کمک کنم ، اما برای کنترل ربات پیشنهاد میکنم در مورد ROS هم تحقیق کنید
https://en.wikipedia.org/wiki/Robot_Operating_System
سلام با سپاس از شما
من اینطوری متوجه شدم که اگه بتونیم درایور HAL رو برای هر سخت افزاری بنویسیم، میتونیم از سیگنال های تولید شده توسط linux cnc برای سخت افزار خودمون استفاده کنیم. درسته؟
سوال دوم اینکه linux cnc خودش سیگنال تولید میکنه یا فقط یک GUI هستش؟
چون چیزی که من از بردهای Mesa فهمیدم ( از چت جی بی تی البته ! ) ظاهرا این برد ها فقط جی کدها رو دریافت میکنن و خودشون سیگنال مربوطه برای هر محور رو تولید میکنن. میخواستم بدونم یعنی اگه ما بخواهیم یک میکروکنترلر رو به linux cnc متصل کنیم باید همین کار رو کنیم؟ یا خود linux cnc سیگنال ها رو هم تولید میکنه و ما فقط باید اون سیگنال رو توسط میکرو بخونیم و به درایورها اعمال کنیم؟
سلام
همینطور هست ، به طور مثال در حال حاضر شخصی اومده و با کمک کتابخونه های hal یک درایور برای پین های gpio رزبری نوشته و میتونه سیگنال های حرکتی رو از اون gpio ها بگیره ، در قسمت چهارم ما مشابه این کار رو با آردوینو انجام میدیم
لینوکس cnc از بخش های مختلفی تشکیل شده ، همونطور که در دیاگرامی که داخل مطلب هست مشخص شده ، یکی از بخش ها GUI هست و قسمتی که gcode رو پردازش میکنه rs-274 هست(در دیاگرام میتونید پیداش کنید) و بخشی که دستورات حرکتی رو تولید میکنه EMCMOT هست که همگی در نرم افزار هستند
این چت چی پی تی فقط به درد سرگرمی میخوره ، حداقل فعلا ، توی مباحث تخصصی اصلا اصلا روش حساب نکنید
ممنونم از پاسختون.
منتظر قسمت های بعدی آموزش هستیم…
بسیار عالی، لطفا لینک سوری برد mesa رو هم بگید تا زمان رسیدن به سر هم کردن و اجرا برد رو ساخته باشیم
سلام
بحث کارت های mesa خیلی جلوتره و فایل هاش باید آماده بشه
اما برای بحث کد هاش توی صفحه هر محصول در سایت mesa کد های fpga اون محصول قرار داده شده مثلا
http://store.mesanet.com/index.php?route=product/product&product_id=55&search=5i25
بله، ممنون کدهاش بصورت اپن سورس هم در دسترس هست. مشکل دسترسی به برد سخت افزاری هست
متشکرم از مطالب ارزشمندی که قرار میدهید
خواهش میکنم 🙂
شدیداً منتظر ادامه این سری هستیم🙂❤️
ممنون از شما 🙂
Awesome 👍
🙂 🙏🙏
عااالی
🙂 🙏🙏