G-code چیست و چگونه ماشینها را هدایت میکند؟
G-code بهعنوان زبان اصلی هدایت سامانههای مجهز به کنترل عددی شناخته میشود؛ زبانی دقیق که مسیر، سرعت و نوع رفتار دستگاه را با فرمانهای عددی مشخص میکند و نقش واسطه میان مدل دیجیتال و ساخت واقعی را بر عهده دارد. هر حرکتی که یک سامانه اتوماتیک انجام میدهد — از جابهجایی ابزار تا اجرای فرآیندهای متوالی — بر پایه همین دستورات تعریف میشود. این زبان که نخستینبار در میانه قرن بیستم و همزمان با توسعه فناوریهای خودکارسازی معرفی شد، امروز بهعنوان یک استاندارد جهانی در انواع فرآیندهای تولیدی مورد استفاده قرار میگیرد. آشنایی با ساختار و منطق G-code، امکان اصلاح دستی فایلها، درک رفتار دستگاهها و همچنین تطبیق صحیح کدها با کنترلرهای مختلف را فراهم میکند؛ دانشی که برای دستیابی به دقت، تکرارپذیری و کنترل بیشتر در فرایندهای تولید ضروری است.
G-code چیست؟
G-code به ما امکان میدهد یک طرح دیجیتال را به شکلی طبقهبندیشده و قابل فهم برای تجهیزات مکانیکی تعریف کنیم. این زبان، مخفف Geometric Code یا «کد هندسی» است و اساس کار ماشینهایی را تشکیل میدهد که نیاز به هدایت عددی دقیق دارند. شاید این سؤال پیش بیاید که چرا اصلاً چنین زبان مستقلی برای تجهیزات اتوماتیک لازم است؟
تصور کنید میخواهیم یک قطعه ساده را با یک دستگاه حرکتی بسازیم. برای یکبار انجام دادن، شاید کنترل دستی کافی باشد. اما اگر بخواهیم چندینبار همان قطعه را تکرار کنیم یا شکل پیچیدهتری تولید کنیم، نوشتن مجموعهای از فرمانهای دقیق باعث میشود عملیات کاملاً خودکار، سریع و قابلتکرار انجام شود. همین موضوع دلیل اهمیت این زبان در اغلب سیستمهای اتوماتیک امروزی است.
این زبان در دههٔ ۱۹۵۰ و همزمان با آغاز عصر اتوماسیون صنعتی معرفی شد و بعدها به ستون اصلی هدایت ماشینها در بسیاری از حوزههای تولید تبدیل گردید. اما اجزای این زبان دقیقاً از چه ساختاری تشکیل شدهاند؟ در ادامه به همین موضوع میپردازیم.

ساختار پایه G-code
دستورات G-code از فرمانهای ساده و قابلفهم برای انسان تشکیل شدهاند که به ماشین میگویند چگونه عمل کند. هر خط، که به آن «بلوک» گفته میشود، یک دستور یا فرمان واحد است و شامل موارد زیر است:
- یک کد فرمان (مانند G01، M104)
- پارامترهایی که مختصات یا تنظیمات را مشخص میکنند (مثلاً X10 Y20 Z5 برای موقعیت، یا F1500 برای نرخ تغذیه)
در G-code دو نوع دستور وجود دارد. یک نوع «G» است که حرکتهای ماشین را کنترل میکند، مانند G28 (بازگشت همه محورها به موقعیت صفر). نوع دیگر «M» است که وظایف غیرحرکتی را انجام میدهد، مانند تنظیم دما (M104) یا تعویض ابزار (M06) .
جدول مقایسه و توضیح فناوریها و نوع G-code
|
موضوع |
توضیحات |
|---|---|
| معرفی کلی فناوریها |
یک دستگاه چندمنظوره میتواند سه فرایند را انجام دهد: ساخت لایهای، حکاکی نوری و برداشت مواد. هر یک از این فرایندها عملکرد و ساختار G-code مخصوص خود را دارند. |
| ساخت لایهای |
این روش با خروج ماده مذاب و ایجاد ساختار لایهبهلایه کار میکند. اگرچه توانایی ایجاد جزئیات ریز در حد برخی فناوریهای نوری را ندارد، اما به دلیل سادگی و هزینه کمتر، همچنان رایج است. دستورهای حرکتی و دمایی در این شیوه بسته به مدل دستگاه و نوع فرایند تغییر میکنند. |
| روش برداشت ماده |
در این تکنیک، ابزار برادهبردار با حذف ماده از قطعه موجود شکل نهایی را ایجاد میکند. دستورها در این حالت مبتنیبر مسیرهای کاهش ماده، سرعت دوران ابزار، نرخ تغذیه و صفحهکاری هستند. |
| فناوریهای نوری |
در این نوع سیستمها، ماده حساس به نور در اثر تابش کنترلشده سخت میشود. تمرکز دستورها بیشتر بر حرکت در محور عمودی و تنظیم زمان تابش است، زیرا فرآیند افزودن ماده از طریق نازل انجام نمیشود. |
| G-code در روش لایهای |
شامل حرکت خطی (G01)، تنظیم سرعت (F)، کنترل خروج ماده (E)، تنظیم دمای اجزا (M104/M140) و مدیریت فن (M106/M107) است. نمونه کد: |
| G-code در روش برداشت ماده (CNC) |
شامل انتخاب صفحه کاری (G17/G18/G19)، تعیین سرعت اسپیندل (S)، نرخ تغذیه (F)، مسیرهای قوسی (G02/G03) و جبران ابزار (G41/G42). نمونه: |
| G-code در فناوریهای نوری |
تنها محور اصلی Z درگیر است و دستورها سادهتر هستند. شامل حرکت عمودی (G1 Z)، کنترل زمان تابش UV (M106)، و جداکردن لایهها بین مراحل. نمونه: |
| مقایسه کلی تفاوتها |
در روش لایهای، دستورها بسیار متنوع و شامل کنترل دما، سرعت، خروج ماده و حرکت در سه محور هستند. در روش نوری، بیشتر روی نوردهی و حرکت Z تمرکز وجود دارد. در روش برداشت ماده، مسیرهای برادهبرداری و دوران ابزار اهمیت اصلی دارند. |
G-code چگونه ساخته میشود؟
برای ذخیره تغییرات خود از جعبههای اسکریپت شروع و پایان خارج شوید.
اگر میپرسید آیا باید تمام دستورات G-code را یاد بگیرید تا بتوانید مدل را چاپ یا فرز کنید، نگران نباشید. G-code برای چاپ لایه به لایه و چاپ رزینی توسط نرمافزار اسلایسر تولید میشود، جایی که میتوانید مدلهای خود را وارد کنید، تنظیمات چاپ سهبعدی را مشخص کنید و فرآیند را به G-code تبدیل (یا همان اسلایس) کنید. برای چاپ لایه به لایه، برنامههای محبوب شامل Cura و PrusaSlicer هستند که هر دو متنباز بوده و از تعداد زیادی دستگاه در بازار پشتیبانی میکنند. چاپ رزینی از اسلایسرهای مخصوص خود مانند Chitubox و Lychee Slicer استفاده میکند. همانطور که گفته شد، چاپ فیلامنتی تنظیمات زیادی دارد، و اگرچه چاپ سهبعدی رزینی به اندازه FDM تنظیمات ندارد، اما همچنان تعداد قابل توجهی مورد برای بررسی وجود دارد.
برای ماشینهای فرز CNC، نرمافزار CAM (ماشینکاری به کمک کامپیوتر) میتواند G-code مناسب از طرح طراحی شده آماده کند. Autodesk Fusion شامل قابلیتهای CAD و CAM است و گزینهای عالی برای پروژههای CNC محسوب میشود. همانطور که انتظار میرود، گزینههای دیگری نیز وجود دارد، از جمله بسیاری نرمافزارهای رایگان. چه در حال آمادهسازی G-code برای ماشینهای CNC باشید و چه دستگاهای سهبعدی، این کار معمولاً بهصورت خودکار توسط نرمافزار انجام میشود. با این حال، یادگیری نحوه ویرایش دستی G-code مهارت ارزشمندی است. بیایید نگاهی دقیقتر به آن بیندازیم.

ویرایش دستی G-code
ویرایش دستی G-code میتواند مهارت مفیدی باشد. زیرا به شما امکان میدهد عملیات چاپ یا فرز را فراتر از محدودیتهای نرمافزار اسلایسر یا CAM سفارشیسازی کنید، و همچنین میتوانید تنظیمات را در لحظه تغییر دهید یا مشکلات را رفع کنید. ویرایش G-code نسبتاً آسان است، زیرا معمولاً هر ویرایشگر متنی که از متن ساده پشتیبانی کند، برای باز کردن فایلهای gcode مناسب است. میتوانید از Notepad++، Visual Studio Code یا هر ویرایشگر متنی دلخواه استفاده کنید. با این حال، اگر تغییرات پیچیدهتری انجام میدهید، استفاده از یک ویرایشگر تخصصی G-code مانند Repetier-Host یا PrusaSlicer بهتر است.
این برنامهها ویژگیهای مفیدی مانند برجستهسازی دستورات و تشخیص خودکار خطا دارند، بنابراین تغییرات پیچیده بهصورت امن و آسان انجام میشوند. پس از اعمال تغییرات، باید G-code را در یک نرمافزار نمایشدهنده (Visualizer) بررسی کنید تا مطمئن شوید هیچ خطایی وجود ندارد. برای مثال، یک رقم جاافتاده در دستور حرکت هد ابزار میتواند باعث برخورد آن با قطعه و ایجاد خسارتهای گرانقیمت شود. اکثر اسلایسرها و ابزارهای CAM امروزه نمایشگر G-code خود را دارند. اگر میخواهید از نمایشگر جداگانه استفاده کنید، نمایشگر G-code در OctoPrint یا Repetier-Host مفید خواهد بود.
چرا هر فایل G-code منحصر به فرد است؟
اگرچه برخی شبیه هم هستند، تفاوتها اهمیت زیادی دارند.
همانطور که گفته شد، هر فایل G-code منحصر به فرد است زیرا برای ماشین، ماده و تنظیمات خاصی که ایجاد شده، سفارشیسازی شده است. اگر سعی کنید آن را روی ماشینی غیر از ماشینی که برای آن ساخته شده اجرا کنید، حداقل ممکن است باعث اختلال شود و در بدترین حالت میتواند به ماشین یا هد ابزار آسیب برساند و نیازمند تعمیرات طولانی و پرهزینه شود.
برخی تفاوتهای معمولی که در فایلهای G-code ایجادشده برای ماشینهای FDM مختلف دیده میشود عبارتند از:
- پارامترهای مخصوص ماشین: اینها معمولاً شامل تنظیمات منحصر به فردی مانند اندازه تخت ساخت، محدودیتهای محور و آفست ابزار هستند که میتوانند از مدل به مدل متفاوت باشند.
- تفاوتهای firmware :firmwareهای مختلف (مانند Marlin، Klipper، GRBL) دستورات G-code را به روشهای مختلف (یا اصلاً) تفسیر و پشتیبانی میکنند، که بر سازگاری تاثیر میگذارد.
- نیازهای مواد: G-code شامل تنظیمات دما و سرعت خاص ماده استفادهشده است (مثلاً PLA در مقابل ABS). مادهای متفاوت ممکن است بهخوبی یا اصلاً کار نکند به دلیل تنظیمات نادرست.
- ویژگیهای پرینتر: ماشینهایی با ویژگیهایی مانند اکستروژن دوگانه یا تراز خودکار تخت نیاز به دستورات متفاوت در G-code دارند.
تطبیق G-code برای یک ماشین دیگر نیازمند تنظیم این پارامترها برای هماهنگی با دستگاه جدید است و معمولاً ارزش تغییر دستی یک فایل G-code را ندارد. اگر میخواهید روی ماشین متفاوت چاپ کنید، سادهتر است که G-code را در نرمافزار اسلایسر دوباره ایجاد کرده و پرینتر سهبعدی مناسب را انتخاب کنید یا مدل را دوباره اسلایس کنید.

مدل های مختلف چاپ لابه به لایه
Klipper امکان شخصیسازی زیادی با ماکروها فراهم میکند .
حتی برای دستگاهای FDM هم هیچ G-code جهانی وجود ندارد که روی همه ماشینها کار کند (صرفنظر از اندازه و نوع ماده). هر ماشین firmware مشخصی اجرا میکند (که میتوان آن را تغییر داد). firmware دستورات G-code را «ترجمه» میکند تا ماشین بتواند آنها را اجرا کند. انواع مختلف firmware نیازمند «مدل های» متفاوتی از G-code هستند که اساساً برای ویژگیهای خاص همان firmware طراحی شدهاند. بیایید سه firmware رایج را بررسی کنیم:
- Marlin : در چاپگرهای مصرفی بسیار رایج است و از دستورات گستردهای مرتبط با اکستروژن، کنترل دما و حرکت پشتیبانی میکند، مانند M600 برای تعویض فیلامنت و G92 برای تعیین موقعیت. Marlin به دلیل انعطافپذیری و پشتیبانی جامعه بزرگ شناخته شده است.
- Klipper : firmware مدرن که با انتقال محاسبات پیچیده به یک کامپیوتر (مثلاً Raspberry Pi) عملکرد را بهبود میبخشد، به جای تکیه بر برد کنترل پرینتر. از ویژگیهای پیشرفته مانند Pressure Advance و Input Shaping پشتیبانی میکند و ساختار G-code را با دستورات توسعهیافته تغییر میدهد تا کنترل بیشتری روی پرینتر امکانپذیر باشد. تمرکز اصلی آن روی چاپ با سرعت بالا است.
- RepRap : در اصل برای پروژه پرینتر RepRap توسعه یافته و از دستورات مشابه Marlin پشتیبانی میکند. در بین سازندگان DIY و پرینترهای سفارشی محبوب است به دلیل سازگاری بالا، اما نسبت به Marlin و Klipper کمی قدیمیتر محسوب میشود.
چگونه و چرا مدل های G-code متفاوتند
میتوانید G-code را در نمایشگر G-code PrusaSlicer مشاهده کنید.
تفاوتها ناشی از این است که هر firmware برای رفع نیازهای خاص طراحی شده است. برای مثال، Marlin و RepRap برای چاپ معمولی سهبعدی بهینه شدهاند، جایی که کاربران زیاد به شخصیسازی پرینتر علاقهای ندارند، بنابراین دستورات معمولی G-code کافی است. اما Klipper قابلیت شخصیسازی بسیار بیشتری ارائه میدهد، مانند اجرای ماکروهای پیچیده داخل فایلهای G-code و همچنین دستورات توسعهیافته برای کنترل جنبههای بیشتری از پرینتر. به دلیل تفاوتها در محدودیتها، فایلهای G-code Marlin، RepRap و Klipper معمولاً با هم سازگار نیستند، با این حال دستورات پایه معمولاً در همه firmwareها یکسان است.

تبدیل بین مدل ها
اگر G-code دارید که برای پرینتری با Klipper است، اما میخواهید آن را روی ماشینی با Marlin استفاده کنید، چند راه وجود دارد:
- دوباره اسلایس کردن فایل: اگر مدل اصلی را دارید، بهترین کار این است که طعم مورد نظر خود را در اسلایسر انتخاب کرده و فایل را دوباره اسلایس کنید تا مطمئن شوید مشکلی در G-code وجود ندارد.
- ویرایش دستی: این روش شامل باز کردن G-code در یک ویرایشگر متن، شناسایی دستورات مخصوص firmware و اصلاح یا حذف دستورات پشتیبانینشده است. برای مثال، اگر فراخوانی ماکرویی در Klipper وجود دارد، باید G-code همان ماکرو را جداگانه برای Marlin اضافه کنید. به همین ترتیب، دستورات توسعهیافته Klipper باید با دستورات استاندارد Marlin جایگزین شوند.
نتیجهگیری
G-code زبانی پیچیده نیست؛ بلکه مجموعهای دقیق از دستورات عددی است که ماشین را هدایت میکند — از تعیین مسیر و سرعت تا تنظیم ابزار و اجرای عملیات. اهمیت آن در تضمین دقت، تکرارپذیری و اتوماسیون در فرایند ساخت است. بدون G-code، ارتباط بین طرح دیجیتال و تولید فیزیکی دچار شکاف میشد.
اگر با مفاهیم پایه G-code آشنا شوید و بتوانید آن را مطالعه یا شخصیسازی کنید، قدرت فوقالعادهای در کنترل فرآیند ساخت در اختیار دارید — چه برای قطعات ساده و چه برای پروژههای پیچیده.
