2023-07-12
برنامه ربات ABB ما عمدتاً از سه ماژول ماژول تشکیل شده است:
1. مدیر
2. برنامه عمل مخصوص ماشین (ما آن را Job می نامیم)
3. نوشتن RegPos (پس از اجرای یک موقعیت خاص در کار به عنوان نشانگر استفاده می شود)
در قسمت فوق برنامه، ماژول 2module را به طور عمده اصلاح کردیم که شامل مشاغل زیادی است و هر کار یک برنامه خاص است که حرکت موقعیت ربات را پیاده سازی می کند.
هر برنامه ای یک نقطه ورود به برنامه دارد و برنامه های ربات هم همینطور.و ورودی برنامه ربات ما در برنامه Admin است.کد منبع main() برنامه Admin به شرح زیر است.لطفا توجه داشته باشید که ما PROC main() را دیده ایم.واحد برنامه نویسی برای روبات های ABB رویه است که به اختصار PROC نامیده می شود.رویه اصلی این برنامه Admin اساساً پس از ایجاد یک ماشین جدید است:
PROC main()
fTCPSpeedHigh را با IGenRobotMoving وصل کنید.
fTCPSpeedLow را با IGenRobotMoving وصل کنید.
ISignalAO virt_TCPSpeed_Robot1، AIO_ABOVE_HIGH، 0.02، 0، 0، fTCPSpeedHigh؛
ISignalAO virt_TCPSpeed_Robot1، AIO_BELOW_HIGH، 0.015، 0، 0، fTCPSpeedLow؛
IF OpMode()=OP_MAN_PROG THEN
TPERase;
TPReadFK FunkTaste"انتخاب کارها با حالت دستی؟"""""""""نه"، "بله";
IF FunkTaste=5 سپس
کتابچه راهنمای؛
دیگر
TPERase;
TPWrite "Robot Moving in Manual Mode"؛
TPWrite "ارتباط با Master-PLC"؛
ENDIF
دیگر
TypNum:=0;
JobNum:=0;
Funktaste:=0;
ENDIF
مقدار دهی اولیه
محدود کننده سرعت؛
pStartingPoint:=CRobT(ابزار:=ابزار0 WObj:=wobj0);
regStartingAngleX:=EulerZYX(X, pStartingPoint.rot);
regStartingAngleY:=EulerZYX(Y, pStartingPoint.rot);
regStartingAngleZ:=EulerZYX(Z, pStartingPoint.rot);
regStoppedAngleX:=EulerZYX(X, pPointAtStop.rot);
regStoppedAngleY:=EulerZYX(Y, pPointAtStop.rot);
regStoppedAngleZ:=EulerZYX(Z, pPointAtStop.rot);
IF (pPointAtStop.trans.X>=(pStartingPoint.trans.X+regTransDiff) یا
pPointAtStop.trans.X<=(pStartingPoint.trans.X-regTransDiff) یا
pPointAtStop.trans.Y>=(pStartingPoint.trans.Y+regTransDiff) یا
pPointAtStop.trans.Y<=(pStartingPoint.trans.Y-regTransDiff) یا
pPointAtStop.trans.Z>=(pStartingPoint.trans.Z+regTransDiff) یا
pPointAtStop.trans.Z<=(pStartingPoint.trans.Z-regTransDiff)) یا
(regStoppedAngleX>=(regStartingAngleX+regRotDiff) یا
regStoppedAngleX<=(regStartingAngleX-regRotDiff) یا
regStoppedAngleY>=(regStartingAngleY+regRotDiff) یا
regStoppedAngleY<=(regStartingAngleY-regRotDiff) OR
regStoppedAngleZ>=(regStartingAngleZ+regRotDiff) یا
regStoppedAngleZ<=(regStartingAngleZ-regRotDiff)) یا
pPointAtStop.robconf<>pStartingPoint.robconf سپس
تنظیم DO13_RobotHasBeenMoved.
ENDIF
WHILE di8_HsStartMain=0 انجام دهید
SetGO DO32_39_HsStepCode,0;
WaitDI DI10_ReadJobCode,1;
VelSet DI40_47_Override, 7500;!سرعت روی حداکثر تنظیم شده است
SetGO DO24_31_HsJobCode,DI24_31_JobCode.
SetDO DO10_HsReadJobCode,1;
WaitDI DI10_ReadJobCode,0;
SetDO DO10_HsReadJobCode,0;
!برنامه شغلی تماس بگیرید
CallByVar "Job",DI24_31_JobCode;
ENDWHILE
ENDPROC
این برنامه کمی طولانی است و نمی خواهم زیاد آن را معرفی کنم.من عمدتاً می خواهم در مورد آخرین بخش برنامه صحبت کنم، زیرا این بخش اجرای نحوه فراخوانی برنامه Job در ماژول دوم ربات هنگام جابجایی موقعیت خود است.من فکر می کنم این همان چیزی است که بیشتر افرادی که می خواهند در مورد برنامه های ربات بیاموزند بیشتر بدانند و بفهمند:
اولا، اولین جمله WHILE di8_ HsStartMain=0 DO
توجه داشته باشید که 'DI8_HsStartMain' به معنای' Handshake 'شروع اصلی انجام شد'
این به این معنی است که وقتی سیگنال Bool HsStartMain ورودی دیجیتال 0 باشد، به این معنی است که Main هنوز راه اندازی نشده است.برای تکمیل تمام کدها باید while Do را اجرا کنیم.در اینجا چند کد وجود دارد و من یک مثال می زنم، مانند کد دوم
WaitDI DI10_ ReadJobCode, 1;معنای متغیر حاشیه نویسی "DI10_ReadJobCode" سیگنال دست دادن Handshake "read Job" از PLC است.
خوب، پس دقیقاً چگونه ربات ها را وادار می کند کارهای مختلف را انجام دهند؟نگران نباش همی
درخواست خود را مستقیماً برای ما ارسال کنید