2023-07-12
Nosso programa de robô de ABB consiste principalmente em três módulos do módulo:
1. Admin
2. programa de ação específico da máquina (nós o chamamos o trabalho)
3. escreva RegPos (usado como um marcador após ter executado uma posição específica no trabalho)
Na parte acima do programa, nós alteramos principalmente o módulo 2module, que inclui muitos trabalhos, e cada trabalho é um programa específico que execute o movimento de posição do robô.
Todo o programa tem um ponto de entrada do programa, e assim que faça programas de robô. E a entrada a nosso programa de robô está no programa do Admin. O código fonte do programa do Admin principal () é como segue. Por favor nota que nós vimos PROC principal (). A unidade de programação para robôs de ABB é o procedimento, abreviado como PROC. O procedimento principal para este programa do Admin é basicamente após ter criado uma máquina nova:
PROC principal ()
CONECTE o fTCPSpeedHigh COM o IGenRobotMoving;
CONECTE o fTCPSpeedLow COM o 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 DE ENTÃO
TPErase;
TPReadFK FunkTaste, “trabalhos seletos do movimento pela modalidade manual? ”, "", "", "", “não”, “sim”;
SE FunkTaste=5 ENTÃO
Manual;
MAIS
TPErase;
TPWrite “robô que move-se na modalidade manual”;
TPWrite uma “comunicação com o Mestre-PLC”;
ENDIF
MAIS
TypNum: =0;
JobNum: =0;
Funktaste: =0;
ENDIF
Inicialize;
SpeedLimiter;
pStartingPoint: =CRobT (ferramenta: =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) OU
pPointAtStop.trans.X pPointAtStop.trans.Y>= (pStartingPoint.trans.Y+regTransDiff) OU<>
pPointAtStop.trans.Y pPointAtStop.trans.Z>= (pStartingPoint.trans.Z+regTransDiff) OU<>
pPointAtStop.trans.Z (regStoppedAngleX>=<>
(regStartingAngleX+regRotDiff) OU
regStoppedAngleY>=<>
do regStoppedAngleX (regStartingAngleY+regRotDiff) OU
regStoppedAngleZ>=<>
do regStoppedAngleY (regStartingAngleZ+regRotDiff) OU
regStoppedAngleZ<>
pPointAtStop.robconfpStartingPoint.robconf ENTÃO<>
Ajuste DO13_RobotHasBeenMoved;
ENDIF
QUANDO di8_HsStartMain=0 FIZEREM
SetGO DO32_39_HsStepCode, 0;
WaitDI DI10_ReadJobCode, 1;
VelSet DI40_47_Override, 7500; ! A velocidade é ajustada a máximo
SetGO DO24_31_HsJobCode, DI24_31_JobCode;
SetDO DO10_HsReadJobCode, 1;
WaitDI DI10_ReadJobCode, 0;
SetDO DO10_HsReadJobCode, 0;
! Chamada Jobprogram
CallByVar “trabalho”, DI24_31_JobCode;
ENDWHILE
ENDPROC
Este programa é um bocado por muito tempo, e eu não quero introduzi-lo demasiado. Eu quero principalmente falar sobre a última seção do programa, porque esta seção é a aplicação de como o robô chama o programa do trabalho no segundo módulo ao mover sua posição. Eu penso que este é igualmente o que a maioria de povos que querem aprender sobre programas de robô querem conhecer e compreender o a maioria:
Em primeiro lugar, a primeira frase QUANDO di8_ HsStartMain=0 FIZEREM
O aperto de mão do ‘cano principal dos meios de ‘DI8_HsStartMain’ da nota que começo feito’
Isto significa que quando o sinal HsStartMain de Bool da entrada digital é 0, significa que o cano principal não esteve ligado ainda. Nós precisarmos de executar quando para fazer para terminar todo o código. Há bastante alguns códigos aqui, e eu darei um exemplo, tal como segundo
WaitDI DI10_ ReadJobCode, 1; O significado da variável “DI10_ReadJobCode” da anotação é o aperto de mão “trabalho lido” do sinal do aperto de mão do PLC.
Aprovação, assim como exatamente faz robôs executar vários trabalhos? Não se preocupe, isso é ele:
! A chamada Jobprogram é apenas um comentário
CallByVar “trabalho”, _JobCode de DI24_ 31; Esta frase é a essência.
Envie-nos seu inquérito diretamente