2023-07-12
Ons ABB-robotprogramma bestaat hoofdzakelijk uit drie modulemodules:
1. Admin
2. Machine-specifiek actieprogramma (wij roepen het Baan)
3. schrijven RegPos (als teller na het uitvoeren van een specifieke positie in de baan wordt gebruikt die)
In het bovengenoemde deel van het programma, wijzigden wij hoofdzakelijk de 2module-module, die vele banen omvat, en elke baan is een specifiek programma dat de beweging van de robotpositie uitvoert.
Om het even welk programma heeft een programmaentry-punt, en doet dat robotprogramma's. En de ingang aan ons robotprogramma is in het Admin-programma. De broncode van de Admin-leiding van het programma () is als volgt. Gelieve te merken op dat wij PROC-leiding hebben gezien (). De programmeringseenheid voor ABB-robots is de procedure, als PROC wordt afgekort die. De belangrijkste procedure voor dit Admin-programma is fundamenteel na het creëren van een nieuwe machine:
PROC-leiding ()
VERBIND fTCPSpeedHigh AAN IGenRobotMoving;
VERBIND fTCPSpeedLow AAN 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;
ALS OpMode () =OP_MAN_PROG TOEN
TPErase;
TPReadFK FunkTaste, „selecteert bewegingsbanen door handwijze? “, "", "", "", „Geen“, „ja“;
ALS FunkTaste=5 TOEN
Hand;
ANDERS
TPErase;
TPWrite „Robot die zich op Handwijze bewegen“;
TPWrite „Communicatie met hoofd-PLC“;
ENDIF
ANDERS
TypNum: =0;
JobNum: =0;
Funktaste: =0;
ENDIF
Initialiseer;
SpeedLimiter;
pStartingPoint: =CRobT (Hulpmiddel: =tool0 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);
ALS (pPointAtStop.trans.X>= (pStartingPoint.trans.X+regTransDiff) OF
pPointAtStop.trans.X pPointAtStop.trans.Y>= (pStartingPoint.trans.Y+regTransDiff) OF<>
pPointAtStop.trans.Y pPointAtStop.trans.Z>= (pStartingPoint.trans.Z+regTransDiff) OF<>
pPointAtStop.trans.Z (regStoppedAngleX>=<>
(regStartingAngleX+regRotDiff) OF
regStoppedAngleX<>
regStoppedAngleY>= (regStartingAngleY+regRotDiff) OF
regStoppedAngleY<>
regStoppedAngleZ>= (regStartingAngleZ+regRotDiff) OF
regStoppedAngleZ<>
pPointAtStop.robconfpStartingPoint.robconf TOEN<>
Vastgestelde DO13_RobotHasBeenMoved;
ENDIF
TERWIJL di8_HsStartMain=0
SetGO DO32_39_HsStepCode, 0;
WaitDI DI10_ReadJobCode, 1;
VelSet DI40_47_Override, 7500; ! De snelheid wordt geplaatst aan maximum
SetGO DO24_31_HsJobCode, DI24_31_JobCode;
SetDO DO10_HsReadJobCode, 1;
WaitDI DI10_ReadJobCode, 0;
SetDO DO10_HsReadJobCode, 0;
! Vraag Jobprogram
CallByVar „Baan“, DI24_31_JobCode;
ENDWHILE
ENDPROC
Dit programma is een lang beetje, en ik wil niet het teveel introduceren. Ik wil hoofdzakelijk over de laatste sectie van het programma spreken, omdat deze sectie de implementatie is van hoe de robot het Baanprogramma in de tweede module wanneer het bewegen van zijn positie roept. Ik denk dit is ook wat de meeste mensen die over robotprogramma's willen leren het meest kennen en willen begrijpen:
Ten eerste, de eerste zin TERWIJL di8_ HsStartMain=0
Merk op dat de Handdruk ‚‘ gedaane‘ Beginleiding van de middelen van ‚DI8_HsStartMain
Dit betekent dat wanneer het Bool-signaal HsStartMain van de digitale input 0 is, het betekent dat de Leiding niet nog is begonnen. Wij moeten uitvoeren terwijl al code doe voltooien. Er zijn hier heel wat codes, en ik zal een voorbeeld, zoals tweede geven
WaitDI DI10_ ReadJobCode, 1; De betekenis van de annotatie veranderlijke „DI10_ReadJobCode“ is de Handdruk „gelezen Baan“ van het handdruksignaal van PLC.
O.k., zodat hoe het precies robots maakt diverse banen uitvoeren? Me maak niet ongerust, dat het is:
! De vraag Jobprogram is enkel een commentaar
CallByVar „Baan“, DI24_ 31 _JobCode; Deze zin is de essentie.
Rechtstreeks uw onderzoek naar verzend ons