2023-07-12
Nasz program robotów ABB składa się głównie z trzech modułów:
1. Administrator
2. Specyficzny program działania maszyny (nazywamy go Job)
3. napisz RegPos (używane jako znacznik po wykonaniu określonej pozycji w pracy)
W powyższej części programu zmodyfikowaliśmy głównie moduł 2module, który zawiera wiele zadań, a każde zadanie jest specyficznym programem, który realizuje ruch pozycji robota.
Każdy program ma punkt wejścia programu, podobnie jak programy robotów.Wejście do naszego programu robotów znajduje się w programie Admin.Kod źródłowy funkcji main() programu administratora jest następujący.Proszę zauważyć, że widzieliśmy funkcję PROC main().Jednostką programowania robotów ABB jest procedura, w skrócie PROC.Główna procedura dla tego programu administracyjnego jest w zasadzie po utworzeniu nowej maszyny:
PROC główny()
POŁĄCZ fTCPSpeedHigh Z IGenRobotMoving;
POŁĄCZ fTCPSpeedLow Z 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;
JEŚLI Tryb Opcji()=OP_MAN_PROG TO
TPEraza;
TPReadFK FunkTaste,"Wybierz zadania przenoszenia w trybie ręcznym?"","","","Nie","Tak";
JEŚLI FunkTaste=5 TO
Podręcznik;
W PRZECIWNYM RAZIE
TPEraza;
TPWrite „Robot porusza się w trybie ręcznym”;
TPWrite „Komunikacja z Master-PLC”;
KONIEC
W PRZECIWNYM RAZIE
TypNum:=0;
NrZadania:=0;
Smak działania:=0;
KONIEC
Zainicjuj;
Ogranicznik prędkości;
pStartingPoint:=CRobT(Narzędzie:=narzędzie0 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);
JEŻELI (pPointAtStop.trans.X>=(pStartingPoint.trans.X+regTransDiff) LUB
pPointAtStop.trans.X<=(pStartingPoint.trans.X-regTransDiff) LUB
pPointAtStop.trans.Y>=(pStartingPoint.trans.Y+regTransDiff) LUB
pPointAtStop.trans.Y<=(pStartingPoint.trans.Y-regTransDiff) LUB
pPointAtStop.trans.Z>=(pStartingPoint.trans.Z+regTransDiff) LUB
pPointAtStop.trans.Z<=(pStartingPoint.trans.Z-regTransDiff)) LUB
(regStoppedAngleX>=(regStoppedAngleX+regRotDiff) LUB
regStoppedAngleX<=(regStartingAngleX-regRotDiff) LUB
regStoppedAngleY>=(regStartingAngleY+regRotDiff) LUB
regStoppedAngleY<=(regStartingAngleY-regRotDiff) LUB
regStoppedAngleZ>=(regStartingAngleZ+regRotDiff) LUB
regStoppedAngleZ <=(regStartingAngleZ-regRotDiff)) LUB
pPointAtStop.robconf<>pStartingPoint.robconf WTEDY
Ustaw DO13_RobotHasBeenMoved;
KONIEC
PODCZAS di8_HsStartMain=0 ZRÓB
Ustaw GO DO32_39_HsKod kroku,0;
WaitDI DI10_ReadJobCode,1;
VelSet DI40_47_Override, 7500;!Prędkość jest ustawiona na maks
Ustaw GO DO24_31_HsKodpracy,DI24_31_Kodpracy;
SetDO DO10_HsReadJobCode,1;
WaitDI DI10_ReadJobCode,0;
SetDO DO10_HsReadJobCode,0;
!Zadzwoń do programu pracy
CallByVar "Zadanie", DI24_31_KodZadania;
KONIEC
KONIEC PROC
Ten program jest trochę długi i nie chcę go zbytnio przedstawiać.Chcę głównie porozmawiać o ostatniej sekcji programu, ponieważ ta sekcja jest implementacją tego, jak robot wywołuje program Job w drugim module podczas przesuwania swojej pozycji.Myślę, że to jest również to, co większość ludzi, którzy chcą dowiedzieć się o programach robotów, chce wiedzieć i rozumieć najbardziej:
Po pierwsze, pierwsze zdanie WHILE di8_ HsStartMain=0 DO
Zauważ, że „DI8_HsStartMain” oznacza „Handshake” „Start Main done”
Oznacza to, że gdy sygnał Bool HsStartMain wejścia cyfrowego wynosi 0, oznacza to, że Main nie został jeszcze uruchomiony.Musimy wykonać While Do, aby ukończyć cały kod.Kodów jest tutaj całkiem sporo i podam przykład, na przykład ten drugi
WaitDI DI10_ OdczytKodZadania, 1;Znaczenie zmiennej adnotacji „DI10_ReadJobCode” to sygnał Handshake Handshake „read Job” ze sterownika PLC.
Dobra, więc jak dokładnie sprawia, że roboty wykonują różne zadania?Nie martw się, to wszystko:
!Call Jobprogram to tylko komentarz
CallByVar „Zadanie”, DI24_ 31_ Kod zadania;To zdanie jest esencją.
Wyślij zapytanie bezpośrednio do nas