برنامه نویسی بصورت ماکرو
فصل سوم
برنامه نویسی بصورت ماکرو

ماکروها
-۱-۳ ساختار ماکروها
از ماکروها به‌ دو منظور استفاده‌ می‌شود:
-۱ تهیه‌ برنامه‌های‌ پیش‌ ساخته‌
-۲ برنامه‌ نویسی‌ قطعات‌ پیچیده‌
وجود دستورات‌ شرطی‌ دستورات‌ تکرار و توانایی‌ انجام‌ عملیات‌ ریاضی‌ باعث‌ شده‌ است‌ این‌ نوع‌ برنامه‌ نویسی‌ ویژگی‌های‌ منحصر به‌ فردی‌ را ارائه‌ دهد. برنامه‌ نویسی‌ ماکروها و یا اصطلاحاً برنامه‌ نویسی‌ پارامتریک‌ شکل‌ پیشرفته‌ برنامه‌ نویسی‌ دستی‌ می‌باشد. برنامه‌ نویسی‌ پارامتر یک‌ نسبت‌ به‌ برنامه‌ نویسی‌ زبان‌ APT و سیستمهای CAD/CAM مشکل‌تر می‌باشد. در واقع‌ اوج‌ مهارت‌ برنامه‌ نویسی‌ در برنامه‌ نویسی‌ پارامتر یک‌ مشهور می‌گردد. تسلط بر مثلثات‌ و جبر منطقی‌ برای‌ برنامه‌ نویسی‌ پارامتر یک‌ الزامی‌ است‌.
متأسفانه‌ بسیاری‌ از برنامه‌ نویسان‌ وکاربران‌ CNC از این‌ قابلیت‌ ماشین‌ استفاده‌ نمی‌کنند برنامه‌ نویسان‌ عدم ‌مهارت‌ خود دراین‌ مقوله‌ رابا استفاده‌ از نرم‌ افزارهای‌ CAD/CAM جبران‌ می‌کنند اما لازم‌ به‌ ذکر است‌ که‌ برنامه‌نویسی‌ پارامتر یک‌ نسبت‌ به‌ برنامه‌ نویسی‌ با نرم‌ افزارهای‌ CAD/CAM مزیتهایی‌ دارد که‌ به‌ شرح‌ ذیل‌ می‌باشد.
-۱ حجم کم برنامه: به‌ عنوان‌ مثال‌ قطعه‌ای‌ که‌ در برنامه‌ نویسی‌ با CAD/CAM دارای‌ بیش‌ از سه‌ هزار خط برنامه‌شود ممکن‌ است‌ در برنامه‌ نویسی‌ پارامتریک‌ از ۳۰ خط تجاوز نکند لذا در برنامه‌ نویسی‌ پارامتریک‌ هیچ‌ گاه ‌مشکل‌ کافی‌ نبودن‌ حافظه‌ دستگاه‌ را نداریم.
علت‌ حجم‌ بالای‌ برنامه‌ها در نرم‌ افزارهای‌ CAD/CAM این‌ است‌ که‌ نرم‌افزار تمام‌ محاسبات‌ را انجام‌ داده‌ و نتیجه ‌را در برنامه‌ قرار می‌دهد اما در ماکروها برنامه‌ نویس‌ با ایجاد روابط منطقی‌ بین‌ متغیرها انجام‌ محاسبات‌ را به‌ واحدکنترل‌ واگذار می‌کند و لذا حجم‌ برنامه‌ بسیار کم‌ می‌باشد در برنامه‌ نویسی‌ معمولی‌G و M کدی‌ نیز تمام‌ محاسبات‌ توسط برنامه‌ نویس‌ انجام‌ و در برنامه‌ نوشته‌ می‌شود و تنها در بعضی‌ موارد از سیکل‌ها (که‌ خود به‌ عنوان‌ ماکروهای‌ پایدار پیش‌ ساخته‌ می‌باشند و توسط شرکت‌ سازنده‌ کنترلر ایجاد شده‌اند) استفاده‌ می‌شود و حجم‌ برنامه‌ را به ‌تعداد زیادی‌ کاهش‌ می‌دهد.
-۲ مقرون به صرفه بودن برنامه نویسی پارامتریک نسبتبه سیستمهایCAD/CAM: چنان‌ چه‌ برنامه‌ نویسی ‌تسلط لازم‌ را در نوشتن‌ برنامه‌ها داشته‌ باشد قطعاً این‌ نوع‌ برنامه‌ نویسی‌ مقرون‌ به‌ صرفه‌تر واقع‌ می‌شود.
-۳ عدم نیاز به برنامه نویسی مجدد در قطعات مشابه: از ماکروها می‌توان‌ به‌ عنوان‌ برنامه‌های‌ پیش‌ ساخته‌ای ‌استفاده‌ نمود که‌ در بسیاری‌ از قطعات‌ مشابه‌ نیاز به‌ برنامه‌ نویسی‌ مجدد نباشد. مثلا می‌توانیم‌ برنامه‌ دور تراشی‌شکل‌ زیر را با استفاده‌ از برنامه‌ نویسی‌ پارامتر یک‌ بنویسیم‌.
و آن‌ گاه‌ برای‌ دورتراشی‌ اشکال‌ چند ضلعی‌ زیر با ابعاد مختلف‌ نیازی‌ به‌ برنامه‌ نویسی‌ مجدد نداریم‌ و تنها باید چند عدد را در ابتدای‌ برنامه‌ نوشته‌ شده‌ و چند ضلعی‌ دلخواه‌ تغییر دهیم‌.
برنامه‌ نویسی‌ پارامتر یک‌ در تمامی‌ کنترلهای‌ پیشرفته‌ وجود دارد در کنترلهای‌ فانوک‌ برنامه‌ نویسی‌ پارامتر یک‌ نسبت‌ به‌ سایر کنترلرها در سطح‌ بالاتری‌ ارائه‌ شده‌ است‌.
هر برنامه‌ پارامتریک‌ از دو قسمت‌ کلی‌ تشکیل‌ شده‌ است‌.
برنامه اصلی
زیر برنامه ماکرو
زیر برنامه‌ به‌ صورت‌ جداگانه‌ و مستقل‌ از برنامه‌ اصلی‌ نوشته‌ می‌شود و فقط از داخل‌ برنامه‌ اصلی‌ زیر برنامه‌ ماکرو فراخوانی‌ می‌گردد.
فراخوانی‌ ماکروها …….۶۶G ، ۶۵G
فراخوانی‌ زیر برنامه‌ ماکرو از داخل‌ برنامه‌ اصلی‌ توسط کدهای‌ ۶۶G ، ۶۵G صورت‌ می‌گیرد.
فراخوانی‌ برنامه‌ ماکرو غیر پایدار ۶۵G
فراخوانی‌ برنامه‌ ماکرو پایدار ۶۶G
توضیح‌ ماکر و پایدار بعداً ارائه‌ می‌شود.
زیر برنامه‌ ماکرو مانند زیر برنامه‌ معمولی‌ با ۹۹M پایان‌ می‌پذیرد و فرق‌ زیر برنامه‌ ماکرو با زیر برنامه‌ معمولی‌ در این‌ است‌ که‌ وقتی‌ زیر برنامه‌ معمولی‌ توسط ۹۸M فراخوانی‌ می‌شود. هیچ‌ گونه‌ اطلاعاتی‌ همراه‌ با ۹۸M به‌ زیر برنامه‌ ارسال‌ نمی‌گردد اما در ماکروها وقتی‌ توسط ۶۵G زیر برنامه‌ ماکرو فراخوانی‌ می‌شود یک‌ سری‌ از اطلاعات ‌همراه‌ با ۶۵G به‌ زیر برنامه‌ ماکرو منتقل‌ می‌شود و در متغیرها قرار می‌گیرد.
۲-۳- متغیرها
متغیرها به‌ عنوان‌ حافظه‌ هایی‌ عمل‌ می‌کنند که‌ می‌توانند اعداد مختص‌ به‌ خود را در خود نگه‌ دارند و می‌توان‌ از آنها در عملیات‌ ریاضی‌ استفاده‌ نمود و در هر زمان‌ که‌ نیاز باشد مقادیر اختصاص‌ داده‌ شده‌ می‌تواند متناسب‌ با نحوه‌ محاسبات‌ در داخل‌ برنامه‌ در حین‌ اجرا تغییر کند. به‌ عبارتی‌ می‌توانند در زمانهای‌ مختلف‌ در حین‌ اجرای‌ برنامه‌ مقادیر مختلفی‌ به‌ خود بگیرند و به‌ همین‌ دلیل‌ به‌ آنها متغیر اطلاق‌ می‌شود.
هر متغیر از یک‌ عدد به‌ همراه‌ علامت# (Number sign) تشکیل‌ شده‌ است‌.
متغیر شماره‌ ۱ #
متغیر شماره ‌ ۲۴ #
با استفاده‌ از عملیات‌ ریاضی‌ بر روی‌ متغیرها کار کرد و نتایج‌ را مجدداً در همان‌ متغیر با متغیرهای‌ جدید ذخیره‌ نمود.
- ۳-۳عملیات ریاضی متغیرها
تساوی دو متغیر ۱۲ = # ۱۰ # (۱
متغیر جدید ۱۰ تعریف‌ می‌شود و مقدار آن‌ برابر با مقداری‌ است‌ که‌ قبلا در متغیر ۱۲ بوده‌ است‌.
چنان‌ چه‌ ۱۲=۵ # باشد آنگاه‌ ۱۰=۵ # تعریف‌ می‌شود.

1- جمع و تقریق بین متغیرها ۱۱ # + ۹ # = ۱۳# (۲
مقدار متغیر ۹# با مقدار متغییر ۱۱ # جمع می شوند و نتیجه در ۱۳# قرار داده می شود.
۵= ۱۳# ۲= ۱۱# و ۳= ۹# اگر
(۱=۲-۳=۱۳#) ۱۱# – ۹# = ۱۳# (۳
۲- ضرب و تقسیم متغییرها
(۶ = ۲*۳ = ۱۳#) ۱۱# * ۹# = ۱۳# (۴
(۱٫۵ = ۳٫۲ = ۱۳#) ۱۱ # ۹# = ۱۳# (۵
- ۳محاسبات مثلثاتی متغیرها
]۷#[ SIN = ۱۵# (۶
۱٫۲ = ۳۰۰ Sin = 15# ۳۰۰ = ۷ # اگر
] ۷#[ COS = 15# (7
= ]۳۰[ Cos = 15#
]7#[ TAN = 15# (8
= ۳۰۰) tan = 15#
]6#[ / ]2#[ ATAN = 15# (9
600 = Arctg = 15# ۱ = ۶# و = ۲# اگر
۴- ریشه دوم متغیرها
]۲#[ SQRT = ۴# (۱۰
۲ = = ۴# ۴= ۲# اگر
۵- قدر مطلق متغییرها
]۲#[ ABS = 4 # (11
5= = ۴ # ۵- = ۲# اگر
-۶رند نمودن متغیرها
]۲#[ ROUND = ۴# (۱۲
۳ = ۴# ۳٫۳۸۹ = ۲# اگر
-۷عملیات ترکیبی
تمامی عملیات فوق را می توان با هم ترکیب نمود. مانند:
۷# + (۱۱# .۹#) = ۱۳#
۱۴=۱۳# ۶=۷ # ، ۲= ۱۱# ، ۴=۹# اکر
-۸عملیات منطقی
با استفاده از عملیات منطقی زیر می توان شرطهای دستورات شرطی و حلقه های تکرار را ایجاد نمود. مثال:
(اگر ۷# کوچک تر از ۳# است برو به خط ۱۰۰) ۱۰۰N TO GO ]3# LT 7 #[ IF 40N
” 3# LT 7#” شرط دستور شرطی فوق می باشد.




۱-۳) جدول ماکرو
شکل ریاضی مفهوم شکل برنامه نویسی
۳#=۷# ۷# برابر است با ۳# ۳# ۲QE 7# (13
3# ۷# ۷# برابر نیست (not equal) با ۳# ۳# ۳ NE 7 # (14
3#< 7# 7# بزرگ تر است از ۳# ۳# ۴ GT 7 # (15
3#>7# 7# کوچک تر است از ۳# ۳# ۵LT ۷# (۱۶
۳# ۷# ۷# بزرگ تر یا برابر است با ۳# ۳# CE 7# (17
3# ۷# ۷# کوچک تر یا برابر است با ۳# ۳# LE7# (18
ترکیب منطقی AND AND (19
ترکیب منطقی OR OR ( 20
ترکیب منطقی NOT NOT(21
4-3- دستورات پرشی و حلقه تکرار
دستور پرش‌ غیر شرطی‌………….. GOTO
با دستور GOTO می‌توان‌ توالی‌ اجرایی‌ خطوط برنامه‌ را تغییر داد فرمت‌ آن‌ در دستور غیر شرطی‌ به‌ صورت‌ زیر است‌.
شماره خط GOTO
این‌ دستور بدین‌ معنی‌ است‌ که‌ بدون‌ هیچ‌ شرطی‌ به‌ خط مورد نظر پرش‌ کن‌.
۱۵۰N GOTO 100 N
.
.
۱۵۰N
واحد کنترل‌ بعد از خواندن‌ خط ۱۰۰N مستقیماً خط ۱۵۰ را اجرا کرده‌ و خطوط ۱۱۰-۱۴۰ را اجرا نمی‌کند.
دستور پرش شرطی GOTO… …IF
در دستور شرطی‌ GOTO به‌ همراه‌ IF استفاده‌ می‌شود و فرمت‌ آن‌ به‌ صورت‌ زیر است‌.
…N GOTO ]شرط[ IF
در دستور شرطی‌ ابتدا شرط مسأله‌ بررسی‌ می‌شود اگر شرط برقرار باشد پرش‌ به‌ خط مورد نظر صورت‌ می‌گیرد و توالی‌ اجرای‌ خطوط برنامه‌ تغییر می‌کند. در غیر این صورت‌ پرش‌ صورت‌ نمی‌گیرد و خطوط بعدی‌ اجرا می‌شود.
مثال‌
۱۳۰ TO GO ] GTO ۱۰ [# IF 100N
۳۶۰+۱۰ # = ۱۰# ۱۱۰ N
]8 #[ ABS = ۸# ۱۲۰N
]۱۰ #[ COS * 6# = ۱۸# ۱۳۰ N
اگر ۰< 10# باشد شرط برقرار است‌ و پرش‌ به‌ خط ۱۳۰ صورت‌ می‌گیرد ولی‌ اگر ۰>10# باشد شرط بر قرار نیست‌ و پرش‌ صورت‌ نمی‌گیرد و خط ۱۱۰ و خطوط بعد از آن‌ اجرا می‌شود.

۵-۳-ماکروهای تراش CNC
ماکورهای‌ مربوط به‌ تراش‌ CNC به‌ وسعت‌ و تنوع‌ ماکروهای‌ ماشینهای‌ فرز CNC نمی‌باشد و دلیل‌ آن‌ تنوع‌ و گستردگی‌ قطعات‌ فرزکاری‌ نسبت‌ به‌ تراش‌ کاری‌ می‌باشد. بهر حال‌ وجود چنین‌ قابلیتی‌ در ماشینهای‌ CNC نیز می‌تواند برنامه‌ نویسی‌ را بخصوص‌ در مورد قطعات‌ مشابه‌ تسهیل‌ و برنامه‌ نویسی‌ را تسریع‌ بخشید.
مثال‌۱: برای‌ چهار نوع‌ قطعه‌ مختلف‌ شکل‌ زیر یک‌ برنامه‌ ماکرو مشترک‌ بنویسید.

قطر ماده اولیه : )۷#) D
قطرنهایی بعد از ماشین کاری : (۲۴#) X
طول پله ای که ماشین کاری می شود: (۲۶#) Z
شعاع ته پله: (۱۸#) R
مقدار زاویه : (۱#) A
عرض پخ مورد نیاز: (۳#) C
دقت‌ کنید تمام‌ متغیرهای‌ انتخابی‌ با مسمی‌ انتخاب‌ شده‌اند تا هنگام‌ ثبت‌ و تغییر در اطلاعات‌ برنامه‌ متغیرها به‌ راحتی‌ شناسایی‌ شود و نیز در زمان‌ خواندن‌ برنامه‌ (توسط شخص‌) تمام‌ متغیرها خود گویای‌ نوع‌ اطلاعات‌ خود باشند (مثلا حرف‌ R برای‌ مقدار شعاع‌ می‌باشد که‌ از اول‌ که‌ Radiue و حرف‌ A که‌ برای‌ مقدار زاویه‌ می‌باشد از اول‌ کلمه‌ Angle گرفته‌ شده‌ است‌).
توجه‌: برنامه‌ را برای‌ قطعه‌ شماره‌ ۴ با اطلاعات‌ زیر علامت گذاری‌ نمایید.
۴۰ = Z ۲۴ X= ۷ = R ۴۲ = D ۲٫۵ = C ۴۰۰ = A
* 99 G ۴۰ G ۲۱ G ۱۰ N
* 1200S ۳۲۵٫۴۰۹ Z ۳۲۰٫۴۰۱ X 50 G ۲۰ N
*03M ۲۰۰S ۹۶ G ۳۰N
*08 M ۲۰۲ To ۲ Z ۷۰ X 42G ۰۰ G ۴۰N
*40Z ۲۴X ۴۲D ۲٫۵C ۴۵A ۷۷۷۷P ۶۵ G ۵۰N
30M ۷۰N
07777
*]2/24#-7#[ = 100# ۱۰N
*40 GOTO ]100# LE ۱۸#[ IF ۲۰N
* 199= 3000# ۳۰N
* ]1#[ TAN * ]2+3#[ = 101# ۴۰N
*2Z ]101# * 2-24#[ = 101 # ۵۰N
*80 GOTO ]۰LE 101#[ IF ۶۰N
*30 ۳#-Z ۲۴#X ۰۱G ۷۰N
*120 GOTO ]0LE 18#[ IF ۸۰N
* ]18# – 29 [# -Z 01G ۹۰N
*؛ ۱۸# R ۲۹#-Z ]۱۸#*۲+۲۴#[ X ۰۲G ۱۰۰N
*130 GOTO ۱۱۰N
*30F ۲۶#-Z ۰۱G ۱۲۰N
* ]4+7#[ X ۱۳۰N
99M ۱۴۰N
توضیح برنامه:
برنامه‌ اصلی‌ ۰۶۰۰۱
۱۰N : تعریف‌ سیستم‌ برنامه‌ نویسی‌ اینجی‌، لغو جبران‌ شعاع‌ ابزار، تعریف‌ پیشروی‌ بر حسب‌ میلی‌ متر بر دور.
۲۰N : تنظیم‌ نقطه‌ صفر قطعه‌ کار (W) و محدود کردن‌ عده‌ دوران‌
۳۰ N: تعریف‌ سرعت‌ برشی‌ ثابت‌ و روشن‌ نمودن‌ سه‌ نظام‌ در جهت‌ موافق‌ عقربه‌های‌ ساعت‌
۴۰N : تعویض‌ ابزار، تعریف‌ جبران‌ شعاع‌ ابزار است‌، حرکت‌ ابزار به‌ نزدیکی‌ قطعه‌ کار و روشن‌ نمودن‌ آب‌ صابون‌
۵۰N : انتقال‌ مقادیر ثبت‌ شده‌ در آدرسها به‌ متغیرهای‌ مربوطه‌ در زیر برنامه‌ ماکرو بعد از اجرای‌ خط ۵۰ Nوارد زیربرنامه‌ ماکرو می‌شویم‌.
زیر برنامه‌ ماکرو: ۰۷۷۷۷
۱۰N : محاسبه‌ مقدار تفاوت‌ بین‌ شعاع‌ ماده‌ خام‌ و شعاع‌ پله‌
۲۰N: مقایسه‌ بین‌ شعاع‌ داده‌ شده‌ R و مقدار تفاوت‌ شعاع‌ ماده‌ خام‌ و شعاع‌ پله‌
بدیهی‌ است‌ که‌ مقدار R باید کوچکتر یا مساوی‌ ۱۰۰(LE) باشد
۱۰۰# ۱۸


چنان‌ چه‌ از ۱۸ بزرگ‌تر باشد پیغام‌ اخطار ۱۹۹ داده‌ می‌شود.
۳۰N : اعلام‌ پیغام‌ خطا در صورتی‌ که‌ شعاع‌ داده‌ شده‌ (R) بزرگ‌تر از حد باشد.
۴۰N : محاسبه‌ مقدار X مطابق‌ شکل‌ زیر
۵۰N: دو برابر مقدار X باید از قطر X کم‌ کنیم‌ تا مختصات‌ نقطه‌ شروع‌ ماشین‌ کاری‌ به‌ دست‌ آید. اگر معرفی‌ شود و یا به‌ عبارتی‌ در قطعه‌ای‌ یخ‌ وجود نداشته‌ باشد حاصل‌ عبارت‌ محاسبه‌ شده‌ در خط ۴۰N صفرخواهد شد.


بعد از محاسبه‌ مختصات‌ نقطه‌ شروع‌ ابزار به‌ صورت‌ سریع‌ به‌ نقطه‌ مذکور حرکت‌ می‌کند.
۶۰N: اگر مقدار X کوچک‌تر یا مساوی‌ صفر باشد (۲) به‌ عبارتی‌ باشد نیازی‌ به‌ حرکت‌ مسیر شیب‌دار نداریم‌ در نتیجه‌ خط بعد از آن‌ که‌ مربوط به‌ حرکت‌ در مسیر شیب دار است‌ نباید انجام‌ شود لذا داریم‌.
پرش‌ کن‌ به‌ خط ۸۰N (خط ۷۰N اجرا نشود) ___________ اگر ۰= ۱۰۱#
۷۰N: اگر در قطعه‌ یخ‌ وئجود دارد این‌ خط اجرا می‌شود و مسیر شیب‌ دار را برای‌ ما می‌تراشد.
پرش‌ به‌ خط ۱۲۰N __________ شرط برقرار است‌ اگر در قطعه‌ قوس‌ وجود نداشته‌ باشد. (۰=۱۸#)اجرای‌ خطوط بعدی‌ __________ اگر در قطعه‌ قوس‌ وجود دارد (۰<18#)80N : بررسی‌ شرط وجود قوس‌ در قطعه‌
۹۰N: حرکت‌ ابزار در راستای‌ محور zها تا نقطه‌ شروع‌ قوس‌
۱۰۰N: محاسبه‌ مختصات‌ نقطه‌ پایانی‌ قوس‌ و حرکت‌ به‌ صورت‌ میان‌ یابی‌ دایره‌ای‌ به‌ آن‌ نقطه‌
۱۰۰N: پرش‌ بدون‌ شرط به‌ خط ۱۳۰N
120N: این‌ خط زمانی‌ اجرا می‌شود که‌ شرط در دستور شرطی‌ ذکر شده‌ در خط ۸۰N برقرار باشد (به‌ عبارتی‌ قوس‌ در قطعه‌ وجود نداشته‌ باشدR=0) و این‌ خط فرمان‌ حرکت‌ ابزار به‌ داده‌ می‌شود.
۱۳۰N: حرکت‌ ابزار در راستای‌ قطری‌ تا ۲ میلی‌ متر بالاتر از قطر ماده‌ اولیه‌ تا، ضمن‌ پیشانی‌ تراشی‌ از قطعه‌ کار نیزخارج‌ شود.
۱۴۰N: حرکت‌ ابزار در راستای‌ قطری‌ تا ۲ میلی‌ متر بالاتر از قطر ماده‌ اولیه‌، تا ضمن‌ پیشانی‌ تراشی‌ از قطعه‌ کار نیز خارج‌ شود.
۱۴۰N: پایان‌ برنامه‌ ماکرو و برگشت‌ به‌ برنامه‌ اصلی‌
ادامه برنامه اصلی:
۶۰N : لغو کد اصلاح‌ مسیر و حرکت‌ ابزار به‌ نقطه‌ای‌ کاملا دور از قطعه‌ کار
۷۰N : پایان‌ برنامه‌
.