2023-07-12
Il nostro programma di robot di ABB pricipalmente consiste dei moduli a tre moduli:
1. Admin
2. programma di azione specifico della macchina (lo chiamiamo il lavoro)
3. scriva RegPos (usato come indicatore dopo l'esecuzione della posizione specifica nel lavoro)
Nella parte di cui sopra del programma, pricipalmente abbiamo modificato il modulo 2module, che comprende molti lavori ed ogni lavoro è un programma specifico che implementa il movimento di posizione del robot.
Tutto il programma ha un punto di accesso al programma ed in modo da faccia i programmi di robot. E l'entrata al nostro programma di robot è nel programma di Admin. Il codice sorgente del programma di Admin principale () è come segue. Prego nota che abbiamo visto PROC principale (). L'unità di programmazione per i robot di ABB è la procedura, abbreviata come PROC. La procedura principale per questo programma di Admin è basicamente dopo avere creato una nuova macchina:
PROC principale ()
COLLEGHI il fTCPSpeedHigh CON IGenRobotMoving;
COLLEGHI il fTCPSpeedLow CON 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;
SE OpMode () =OP_MAN_PROG DI ALLORA
TPErase;
TPReadFK FunkTaste, «lavori scelti di movimento dal modo di alimentazione manuale? », "", "", "", «no», «sì»;
SE FunkTaste=5 POI
Manuale;
ALTRIMENTI
TPErase;
TPWrite «robot che si muove nel modo di alimentazione manuale»;
TPWrite «comunicazione con lo Master-SpA»;
ENDIF
ALTRIMENTI
TypNum: =0;
JobNum: =0;
Funktaste: =0;
ENDIF
Inizializzi;
SpeedLimiter;
pStartingPoint: =CRobT (strumento: =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);
SE (pPointAtStop.trans.X>= (pStartingPoint.trans.X+regTransDiff) O
pPointAtStop.trans.X pPointAtStop.trans.Y>= (pStartingPoint.trans.Y+regTransDiff) O<>
pPointAtStop.trans.Y pPointAtStop.trans.Z>= (pStartingPoint.trans.Z+regTransDiff) O<>
pPointAtStop.trans.Z (regStoppedAngleX>=<>
(regStartingAngleX+regRotDiff) O
regStoppedAngleY>=<>
del regStoppedAngleX (regStartingAngleY+regRotDiff) O
regStoppedAngleZ>=<>
del regStoppedAngleY (regStartingAngleZ+regRotDiff) O
regStoppedAngleZ<>
pPointAtStop.robconfpStartingPoint.robconf POI<>
Metta DO13_RobotHasBeenMoved;
ENDIF
MENTRE di8_HsStartMain=0 FANNO
SetGO DO32_39_HsStepCode, 0;
WaitDI DI10_ReadJobCode, 1;
VelSet DI40_47_Override, 7500; ! La velocità è fissata a massimo
SetGO DO24_31_HsJobCode, DI24_31_JobCode;
SetDO DO10_HsReadJobCode, 1;
WaitDI DI10_ReadJobCode, 0;
SetDO DO10_HsReadJobCode, 0;
! Chiamata Jobprogram
CallByVar «lavoro», DI24_31_JobCode;
ENDWHILE
ENDPROC
Questo programma è lungamente un pezzo e non voglio introdurrlo troppo. Pricipalmente voglio parlare di ultima sezione del programma, perché questa sezione è l'implementazione di come il robot chiama il programma di lavoro nel secondo modulo quando muove la sua posizione. Penso che questo sia inoltre che cosa la maggior parte della gente che vuole imparare circa i programmi di robot vuole per conoscere e capire il la maggior parte:
In primo luogo, la prima frase MENTRE di8_ HsStartMain=0 FANNO
La stretta di mano “conduttura dei mezzi “di DI8_HsStartMain” della nota che di inizio fatta”
Ciò significa che quando il segnale HsStartMain di Bool dell'input digitale è 0, significa che la conduttura non è stata avviata ancora. Dobbiamo eseguire mentre fare per completare tutto il codice. Ci sono parecchi codici qui e fornirò un esempio, come quello secondo
WaitDI DI10_ ReadJobCode, 1; Il significato della variabile «DI10_ReadJobCode» di annotazione è la stretta di mano «lavoro colto» del segnale della stretta di mano dallo SpA.
Approvazione, così quanto fa esattamente i robot eseguire i vari lavori? Non si preoccupi, quello è:
! La chiamata Jobprogram è appena un commento
CallByVar «lavoro», _JobCode di DI24_ 31; Questa frase è l'essenza.
Invii la vostra indagine direttamente noi