G-code، زبانی برای ایجاد ارتباط با ماشین
شاید این ایجاد ارتباط با ماشین در عصر فناوری هم برای بعضی از افراد عجیب باشد. اما حقیقت این است که برنامهنویسی و تکنولوژی همه چیز را ممکن کرده است. در ادامه درباره زبان برنامه نویسی G-code که زبانی برای کنترل عددی کامپیوتری (CNC) میباشد، اطلاعات بیشتری ارائه خواهیم داد.
اما قبل از آن، computer numerical control که به اختصار CNC نوشته میشود، فرایند کنترل خودکار ماشین با استفاده از کامپیوتر است. شیوه کار به این گونه است که یک دستگاه CNC با استفاده از کدهایی که به آن ارائه میشود، مجموعهای منظم از دستورات را بدون نیاز به اپراتور انجام میدهد.
پس با توجه به اینکه G-code، زبانی برای CNC است، با این حساب، کامپیوتر برای ارتباط با ماشین و صحبت کردن با آن و ارتباط دادن تمامی دستورات به یکدیگر از زبان برنامه نویسی G-code استفاده میکند.
به شکلی کلی، این زبان برنامهنویسی در موارد بسیاری کاربرد دارد، اما شاید از طریق پرینترهای سه بعدی بیشتر با آن آشنا باشیم. با اینکه پرینترهای سه بعدی، کد را به صورت خودکار تولید میکنند، اما اگر تمایل به درک عمیقتر پروسه چاپ سه بعدی هستید، یادگیری اصول اولیه G-code ضروری است.
در ضمن با استفاده از این دانش، امکان عیب یابی و کنترل فرآیند چاپ برای شما امکان پذیر خواهد بود. در حالی که امکان سفارشیسازی سفتافزار (firmware) چاپگرهای سه بعدی مانند RepRap و Marlin را نیز فراهم میکند.
بخش اول: معرفی زبان برنامه نویسی G-code
افرادی که با برنامه نویسی و شیوه کد زدن آشنایی دارند، میدانند که زبانهای برنامه نویسی مختلف با استفاده از دستورالعمل خود، به برنامه نویس اجازه میدهند تا برنامههای خاصی را پیاده سازی کنند. این کدها در قالب دستورات پشت سر هم نوشته میشوند.
اما افرادی که میانه خوبی با برنامهنویسی ندارند، زبان برنامه نویسی G-code را به عنوان خطوط متوالی از اقداماتی که باید انجام دهند، در نظر بگیرند که هر کدام به پرینترهای سه بعدی میگوید، چه کاری را انجام دهند. این خطهای متوالی از اقدامات، به عنوان command یا دستور شناخته میشوند و پرینتر یکی یکی آنها را اجرا میکند، تا به انتهای کد برسد.
در حالی که اصطلاح G-code، برای ارجاع و استفاده از این زبانهای برنامهنویسی به صورت کلی اشاره دارد، اما این اصطلاح به صورت جزئی، به دو نوع از دستورات در چاپ سه بعدی و چاپگرها نیز اشاره دارد. دستورات عمومی (general) و دستورات متفرقه (miscellaneous).
خط فرمان دستورات عمومی (General command lines) مسئول انجام بعضی از کارها در چاپگرهای سه بعدی است. این دستورات با حرف G متمایز میشوند و علاوه بر کنترل حرکت سه محور توسط هد چاپ (printhead)، وظیفه کنترل اکستروژن فیلامنت (filament extrusion) را نیز دارند.
از سوی دیگر، در زبان برنامه نویسی G-code، دستورات متفرقه (miscellaneous commands) به ماشین دستور میدهد تا کارها و محاسبات غیرهندسی را انجام دهد. این دستورات با حرف M متمایز میشوند و دستوراتی مانند کنترل فن و کنترل گرمایشی را شامل میشوند..
بخش دوم: دستور زبان برنامه نویسی G-code
هر خط دستور در زبان برنامه نویسی G-code از دستور خاصی پیروی میکند. بدین صورت که هر خط فقط مربوط به یک فرمان است، اما کدهایی که این فرمان را اجرا میکنند، میتوانند بسیار طولانی باشند.
اولین مقداری که در خط فرمان نوشته میشود، وجه تمایز کدها در خط فرمان و یا همان نوع دستورات است که در بخش قبل مشاهده کردیم، میتواند G یا M باشد. پس از آن نیز عددی میآید که بیان کننده نوع دستور است. به عنوان مثال، G0 (G صفر) دستوری است که مربوط به یک حرکت خطی است.
پس از نوع دستور و شماره آن که نوشته شد، پارامترها و یا مقادیری اضافه میشوند که یک دستور را با دقت بیشتری تعریف و توصیف کنند. برای مثال برای دستوری مانند G0 و به صورت کلی برای یک حرکت کلی، میتوان موقعیت نهایی و سرعت حرکت را تعیین کرد. به عکس زیر که تمام پارامترهای این دستور را آورده است نگاه کنید.
در مورد آخر که F به عنوان پارامتر سرعت اضافه شده است، انتخاب کردیم که تغییر حرکت از نقطه A به نقطه B در 100 میلیمتر بر دقیقه انجام شود.
شرایط برای فرمانهای دیگر نیز اینگونه است و در واقع در زبان برنامه نویسی G-code، مانند دیگر زبانهای برنامه نویسی، هر فرمان مجموعهای از پارامترهای خاص خود را دارد.
اما به طور کلی مقادیری که در این زبان وجود دارند، علاوه بر G و M، شامل F و E میباشند که باعث میشوند دستورات توصیفات بهتری داشته باشند.
برای مثال همانطور که در بالا بیان کردیم F نشاندهنده سرعت انجام عملیات و یا به صورت کلی، سرعت حرکت اکسترودر (extruder) است. مقدار E نیز به فشار و مواد مورد استفاده بستگی دارد، نرم افزار Slicing به طور خودکار این مقادیر را محاسبه می کند، اما برای تایپ دستی g-code، باید به چند نکته مهم توجه کنید که همه نیازمند دریافت آموزش و آن هم به صورت حرفهای است.
برای نوشتن توضیحات میتوانید از علامت نقطه ویرگول (؛) استفاده کنید و از دستور T برای تعیین اینکه چاپگر باید از کدام اکسترودر استفاده کند، بهره میگیرند.
- به قطعه کد زیر نگاه کنید!
;G1 X25 Y5
I am a code comment
پس از استفاده از دستور G1 و تغییر مختصات، پس از علامت نقطه ویرگول، توضیحاتی آمده است. این کار در زبانهای مختلف با شیوههای مختلف انجام میگیرد و باعث بالا بردن خوانایی کد میشود. در واقع برنامه نویسان اغلب نیاز دارند توضیحاتی را به زبان انگلیسی ساده ارائه دهند تا سایر برنامه نویسان بتوانند خطوط یا بخش های خاصی از کد را درک کنند.
همچنین ممکن است فراموش کنید که به چه دلیل این کد را اضافه کردید و با خواندن کامنتها، منطق برنامه نویسی خود را متوجه شوید.
نکته دیگر این است که این کامنتها، توسط ماشین به هنگام اجرای کد خوانده نمیشوند و برای برنامه نویس هستند.
بخش سوم: دستورات مهم در چاپ سه بعدی
در حالی که زبان برنامه نویسی G-code دستورات زیادی دارد و برای موارد زیادی مورد استفاده قرار میگیرد. در ادامه دستورات مهم در چاپ سه بعدی را خواهیم گفت.
دستورات G0 و G1 حرکت خطی و کنترل پارامترها
همانطور که قبل تر اشاره کردیم، دستور G0 برای حرکت خطی است. G1 نیز دستوری برای حرکت خطی است. با این تفاوت که G0 برای حرکات غیر اکستروژن (non-extrusion movements) مانند دستورهای اولیه و حرکتی استفاده می شود، در حالی که G1 تمام حرکت خطی اکسترود را در بر می گیرد.
پس در واقع، این دو دستور یکسان عمل میکنند و وظیفه آنها کنترل موقعیت نهایی برای تمام محورها و سایر موارد دیگر است.
G90 & G91: موقعیت یابی مطلق و نسبی
دستورات G90 و G91 به هیچ پارامتری نیاز ندارد و تنظیم یکی به طور خودکار دیگری را لغو می کند. در واقع این دو دستور به ماشین میگویند که چگونه دستورهای G0 یا G1 را تفسیر کنند. G90 برای موقعیت یابی مطلق و G91 برای موقعیت نسبی مورد استفاده قرار میگیرد.
به مثال زیر توجه کنید.
فرض کنید میخواهیم هد چاپ را در یک خط به X= 30 منتقل کنیم. موقعیت یابی مطلق، به شکل زیر است:
G90; تعیین موقعیت مطلق
- X30; به مختصات مورد نظر حرکت میکند
در واقع این دو کد ساده به چاپگر میگوید که هد چاپ را به گونهای حرکت دهد که در X = 30 قرار گیرد.
اما ، برای موقعیتیابی نسبی، ابتدا باید بدانیم هد چاپ در حال حاضر کجاست. اگر فرض کنیم که در X=10 باشد پس:
G91; تعیین موقعیت نسبی
G0 X20; +20 میلیمیتر به سمت موقعیت مورد نظر حرکت میکند.
در واقع کد G91 ابتدا به ماشین میگوید که مختصات را نسبت به موقعیت فعلی تفسیر کند (X =10). با دانستن این موضوع، ماشین به سادگی باید 20 میلی متر در جهت مثبت محور X حرکت کند، بنابراین، همانطور که می خواهیم به X =30 می رسد.