I am new to Kawasaki robots I have a lot of experience with Fanuc and other brands. It seems Kawasaki is a totally different breed! I am wanting to call programs by sending an input signal to the robot probably though rps. My questions is if i have 3 stations will it put the program into que if i hit that station start button or will I have to wait for the program to finish station 1 and then cycle start station 2? What is my best way to accomplish this? Thanks
Program Que
-
joshrice1 -
May 24, 2019 at 5:52 AM -
Thread is marked as Resolved.
-
-
Hello,
If you want to select a certain program based on a signal, you can use IF function and based on the signal that is on to call that program.
For example:
start:
.....
.....
IF (SIG(-1010) AND SIG(-1011) AND SIG(-1012)) GOTO startIF SIG(1010) THEN
CALL station1
END
IF SIG(1011) THEN
CALL station2
END
IF SIG(1012) THEN
CALL station3
ENDGOTO start
I used this kind of code when the robot is picking from 3 lines. If all the lines are empty, the program is
jumping to start to check other conditions. When one of the signal is ON, it will jump to the program.
I am not sure how the signal will be (pulse or continuos). If it will be a pulse, you need to write a background program
in order to check which signal was ON.And it depends if you need a certain priority of those stations.
-
Quote
I am new to Kawasaki robots I have a lot of experience with Fanuc and other brands.
In that case Welcome to the other side............Yes, there is no real queuing system in the Kawasaki as it processed step by step (point of execution).
But this doesn't mean you cannot develop one though as the AS Language is very flexible with many options/commands.You have 2 standard areas of program execution.
Motion Programs (Program Area)
- Main programs that include non motion and motion commands and require safety circuits, motor power and cycle start.
- Step by step execution.PC Programs (PC Program Area)
- Background tasks (like BGLOGIC in Fanuc).
- Asynchronous step by step execution of programs which cannot include motion commands.There are many ways to express this in AS Language and what Alexandru has written is a very good example of how straight forward AS can be constructed.
With using alternate robots, you may have come across other types of conventions also, so I will add a snippet of something I have used previously.Code
Display More.PROGRAM station_select();Simple Station Select ;======================================================= again: SIGNAL plc.data.rq; Send to MASTER PLC for data request TWAIT 0.5; Delay for stability plc.data.in = BITS(i.fbusbit[0],16); Read Word(BCD) from MASTER PLC TWAIT 0.5; Delay for stability echo.data = plc.data.in; Copy BCD to echo variable (for debug) BITS o.fbusbit[0],16 = echo.data; Send Word(BCD) echo back WAIT (SIG(plc.start)); Wait for MASTER PLC SIGNAL -plc.data.rq; Cancel output to MASTER PLC for data request ;======================================================= CASE plc.data.in OF; Choose station based on PLC value VALUE 1: CALL station.1; Station 1 Routine VALUE 2: CALL station.2; Station 2 Routine VALUE 3: CALL station.3; Station 3 Routine ANY : PRINT " Received value not allocated " END GOTO again ;======================================================= .END
The CASE statement I have used is just another alternative to using IF/END.
Invariably they are identical, except for the PLC handshake I do at the beginning which is reading the requests.