SW watchdog

Adept Cobra i600 and i800 SCARA robots

SW watchdog

Postby alejandromxl » Tue Aug 12, 2014 2:55 pm

Hi,

I have two cobra i600 which I'm using to work along with a Siemens PLC (I did not program the PLC), and the sequence is pretty easy, when the robot starts it checks in Task 3 if Task 0 is active, if not, it starts the auto program in Task 0, the auto program is just a main which is checking if the PLC is has one of three different combination of inputs ON, (go home, start sequence or change model), if no combination is set on the input the program finishes and because of Task 3 it is restarted.

It works perfectly whenever the robot is working but if the robot is doing nothing for some time it stops and throws the SW error (watchdog), I don't know exactly why this is happening, I told the PLC programmer to send me a signal through input 8 of the robot which is blinking all the time, but it didn't work.

Anybody knows why this is happening?

Thank you

Alejandro
alejandromxl
 
Posts: 2
Joined: Fri Aug 08, 2014 10:11 am

Re: SW watchdog

Postby Guenter Grass » Mon Aug 18, 2014 2:51 am

Hi Alejandro,

is the error a micro V+ error or an error from the PLC?

Can you post your auto() program?

Regards
Günter
Guenter Grass
 
Posts: 189
Joined: Thu Oct 16, 2008 4:34 am

Re: SW watchdog

Postby alejandromxl » Mon Aug 18, 2014 7:19 am

Guenter Grass wrote:Hi Alejandro,

is the error a micro V+ error or an error from the PLC?

Can you post your auto() program?

Regards
Günter


Thanks for the response

I'm pretty sure the error is with the micro V+, the PLC works by itself and controls other sections of the machine.

Here is the auto() program

.PROGRAM auto()
;
CALL initialise() ; Initialises the variables for the software

SPEED mon.speed MONITOR

WHILE TRUE DO
; Monitor TASK 0 to make sure it continues running.
; TASK(1,0) == 4 means Task 0 is running.
CASE TASK(1,0) OF
VALUE 0, 1: ;Idle, or program done

; Enable high power
WHILE (SWITCH(POWER) <> ON) DO
ENABLE POWER
END

CALIBRATE


CALL check.r.l()

EXECUTE 0 main() ;Start primary task

VALUE -1: ; Invalid Task Number
; PAUSE ;Debug, Pause Task 3
VALUE 2: ; Stopped, programming error
; PAUSE ;Debug, Pause Task 3
VALUE 3: ; Stopped from ABORT, panic


KILL 0

; button, breakpoint, robot
; error, or single-step
; PAUSE ;Debug, Pause Task 3
END
; Give system time back while monitoring.
WAIT ;Suspend execution for 16 msec

IF SIG(1001,1002,1003,1004,1005,1006,1007,1008,1009,1010) THEN
IF (TASK(1,0) == 0) OR (TASK(1,0) == 1) OR (TASK(1,0) == 2) OR (TASK(1,0) == 3) OR (TASK(1,0) == -1) THEN
ELSE
ABORT 0
WAIT 20
SIGNAL -1, -2, -3, -4, -5, -6, -7 ; Resets all outputs,except gripper

END

WHILE SIG(1001,1002,1003,1004,1005,1006,1007,1008,1009,1010) DO
WAIT
END

END

; Give system time back while monitoring.
WAIT ;Suspend execution for 16 msec

END


.END

Hope you can help me and thanks in advance

Regards,
Alejandro
alejandromxl
 
Posts: 2
Joined: Fri Aug 08, 2014 10:11 am

Re: SW watchdog

Postby Guenter Grass » Wed Aug 20, 2014 5:10 am

Hi Alejandro,

the only cause that might produce this error is that TASK 0 is started and aborted all the time if the PLC does not send a command. I recommend to change the main robot program to wait for either command in a loop and not to finish task 0 and than restart it with task 3. In this case Task 0 is always on and will not be restarted and finished a few 1000 times (my guess) during the waiting. You abort task 0 anyways if all the input signals 1001 to 1010 are HIGH at the same time.

In addition here are 2-3 things you can change in the auto program to improve it.
Lets rewrite the loop in the auto() program so it is only calibrating when needed and only trying to switch on the power if there is no E-Stop.
I added a few commends.

WHILE TRUE DO
; Monitor TASK 0 to make sure it continues running.
; TASK(1,0) == 4 means Task 0 is running.
CASE TASK(1,0) OF
VALUE 0, 1: ;Idle, or program done

;wait until E-Stop circuit is closed
WHILE ((STATE(4) ^BAND ^B100) == ^B100) DO
WAIT
END

; Enable high power
WHILE (SWITCH(POWER) == FALSE) DO
ENABLE POWER
END

;check if the robot needs to be calibrated
IF PARAMETER(NOT.CALIBRATED)<>0 THEN
CALIBRATE
END

CALL check.r.l()

EXECUTE 0 main() ;Start primary task

VALUE -1: ; Invalid Task Number
; PAUSE ;Debug, Pause Task 3

VALUE 2: ; Stopped, programming error
; PAUSE ;Debug, Pause Task 3

VALUE 3: ; Stopped from ABORT, panic
; button, breakpoint, robot
; error, or single-step
; PAUSE ;Debug, Pause Task 3

KILL 0

END ; CASE TASK(1,0)

; Give system time back while monitoring.
WAIT ;Suspend execution for 16 msec

; If all the input signals from 1001 to 1010 are HIGH at the same time
IF SIG(1001,1002,1003,1004,1005,1006,1007,1008,1009,1010) THEN
; IF (TASK(1,0) == 0) OR (TASK(1,0) == 1) OR (TASK(1,0) == 2) OR (TASK(1,0) == 3) OR (TASK(1,0) == -1) THEN
; ELSE
IF TASK(1,0) == 4 THEN
ABORT 0

; this will not wait 20 seconds...
; WAIT 20
; use this instead
TIMER 1 =0
DO
WAIT
UNTIL TIMER(1) > 20
SIGNAL -1, -2, -3, -4, -5, -6, -7 ; Resets all outputs,except gripper
END

WHILE SIG(1001,1002,1003,1004,1005,1006,1007,1008,1009,1010) DO
WAIT
END

END ;IF SIG(1001,1002,1003,1004,1005,1006,1007,1008,1009,1010)

; Give system time back while monitoring.
WAIT ;Suspend execution for 16 msec

END ;WHILE TRUE


Let me know if the changes help. Please make sure to rewrite your main robot application too, so it won't finish and restart Task 0 all the time.

Regards
Günter
Guenter Grass
 
Posts: 189
Joined: Thu Oct 16, 2008 4:34 am


Return to Cobra i600/i800

Who is online

Users browsing this forum: No registered users and 1 guest