====== RG Robot ======
[[production:rgrobot|Production Page - How to start robot]]
===== Notes =====
===== Inputs =====
^SDI1|start left^SDI2|start right|
^SDI3|4 leg left^SDI4|3 leg left|
^SDI5|4 leg right^SDI6|3 leg right|
^SDI7|bot sw left tip clean^SDI8|bot sw right restart|
^SDI9|door prox left^SDI10|door prox right|
===== Outputs =====
Outputs One and Two are pulsed or momentary. You need only turn it on. It will turn itself off after the time duration set in the robots configuration. All other outputs come on and stay on until they are turned off (SOF,x)
^SDO1 |R2 Left ^SDO2 |R2 Right |
^SDO3 |CR3 Left ^SDO4 |CR4 Right |
^SDO5 |CR5 Left ^SDO6 |CRF |
^SDO11 |amber light left ^SDO12 |amber light right |
^R2 |unlatches start input || |
^CR3 |cuts in left side prox || |
^CR4 |cuts in right side prox || |
^CR5 |side door fence || |
^CRF |fence bypass || |
\\
===== S codes =====
S codes allow IO
S codes to remember:
SON,a = turn on SDO a
SOF,a = turn off SDO a this is not needed if output is pulsed (1&2 are pulsed)
S98,## = call program number ##
S10,## = increment register ## by 1
S11,## = decrement register ## by 1
S85,aa,bb = when input aa turns on, jump to label bb
S86,b,n b=1-48 n=0-99 wait for specified time in setting data 30 for input signal b to be on, if on execute next statement, if off jump to label n
If n = -1 process remains looped
S87,b,n b=1-48 n=0-99 wait for specified time in setting data 30 for input signal b to be off, if off execute next statement, if on jump to label n
If n = -1 process remains looped
===== Tables =====
==== Program Numbers ====
Been using weave to try and get good weld on bottom with no burn through since it doesn't stay in one place too long. At the suggestion of Aaron and Jim I am dropping back to simpler weld. Program number 11 is main menu program for new programs and program 10 is for the older weave programs. I put a W in the description of the programs that use weave.
^ Number Weave ^ Leg ^ Side ^ Number Plain ^
| 68 | 3 | LEFT | 58 |
| 69 | 4 | LEFT | 59 |
| 78 | 3 | RIGHT | 88 |
| 79 | 4 | RIGHT | 89 |
:-)
==== Work Coordinates ====
Work coordinates allow you to set X and Y movement. I have set up 3 and 4 to have parallel movement to the arm angles on 3 and 4 leg. Using these coordinate systems allows for less movement during weld setup.
^X | 717.95 | ^P |174.48|
^Y |-593.86| ^Q |8.37|
^Z |-22.95 | ^R |-91.02|
^X |990.07 | ^P |179.99|
^Y |515.28 | ^Q |-0.01|
^Z |52.89 | ^R |-48.02|
^X | 929.33| ^P | 179.99|
^Y | -414.28| ^Q | -0.01|
^Z | -16.64 | ^R | -30.28|
==== Tool Center Point ====
Using tool center point 2. Got these figures using arm that Chip made for me to mount on end of wrist axis - it reaches the end of the weld torch for Y and Z measurement.
=== TCP 2 ===
^X|375.9|
^Y|-7.9|
^Z|-3.1|
==== Weld Data ====
Robot calls this Weld Data and not weld parameters. The numbers are amps and volts. The numbers on the end are what the feedback loop read the last time it was run. One and three are used for the end of the leg where it attaches to the bottom pan which becomes the front of the product. Two is used for the middle of the leg and what becomes the middle pan.
^NO. ^CMV ^CMA ^FEEDBACK ^
|N001 |8.0 V |38 A | 9.3 V 23 A |
|N002 |7.0 V |60 A | 10.1 V 39 A |
|N003 |8.0 V |50 A | 9.7 V 31 A |
===== Welding Program Layout =====
Please note that right and left sides have the same logic, but different inputs/outputs according to the side. There is only one example below. Fill in the different I/O for the other side.See [[robot:rg#inputs|input assignments ]] or [[robot:rg#outputs|output assigments]] for correct I/O for a right or left side.
N0001 LBL,1 S85,9,20 S85,8,10 JMP,1
BE
* LBL,1 label 1
* S85,9,20 If input 9 is **ON** (//left door prox//) goto label 20
* S85,8,10 If input 8 is **ON** (//bottom right switch//) goto label 10 (near end of program - cancels program).
* Jump to label 1
* BE block end
N0002 LBL,20 SON,1 SON,5 SON,3 SON,11
BE
* LBL,20 label 20
* SON,1 turn output 1 **ON** (unlatch start input)((output 1 is momentary on))
* SON,5 turn output 5 **ON** (door prox relay)
* SON,3 turn output 3 **ON** (sliding door prox left)
* SON,11 turn output 11 **ON** (amber light left)
* BE block end
==== Welding ====
The robot is sending both digital and analog information to the welder interface to set the weld heat. The robot uses a weld schedule to store volts and amps that it will send to the welder interface. If you see **AS,2** , that means start an arc and use weld schedule 2. weld schedule 2 is used for all middle leg welds. If you see **AS,1** or **AS,3** the weld is on the end or foot of the leg. [[robot:rg#weld_data|Weld data is above]]
N0004 P F50%
AS,3 BE
N0005 L F0005M
AS,1 BE
N0006 L F0012M
AE BE
N0004 P F100%
AS,1 BE
N0005 L F0006M
BE
N0006 L F0012M
AE BE
N0023 P F100% CNT,8
AS,2 BE
N0024 L F0004M
AE BE
==== Welding end ====
N0036 SOF,5 SOF,3 SOF,11 S10,0 S10,2
S10,3 BE
* SOF,5 turn **OFF** output 5
* SOF,3 turn **OFF** output 3
* SOF,11 turn **OFF** output 11
* The above 3 are reseting the fence circuit so the door can be moved and turning **OFF** the amber light - amber light **OFF** means we can move the door.
* S10,0 add 1 (increment) to data register 0
* S10,2 increment data register 2
* S10,3 increment data register 3
* The above counters will be different between left and right - [[robot:rg#counting_registers|see counter registers below.]]
N0039 LBL,10 SON,1 PE
SON,1 turn on output 1 (momentary or pulse)
PE end this program. Control will be returned to the program that called it on the line below the call.
==== Main Program ====
Main or menu type program. Calls all the other programs
See [[robot:rg#inputs|input assignments above]]
** ARC Mate PROGRAM **
O0011 [MAIN P2 ]
N0000 P F100% CNT,8
BE
N0001 P F100% CNT,8
BE
N0002 SON,1 SON,2 SOF,3 SOF,4 SOF,5
SOF,6 SOF,11 SOF,12
N0003 LBL,1 BE
N0004 P F100% CNT,8
BE
N0005 S85,1,20 S85,2,30 S85,7,40 JMP,1
BE
N0006 LBL,20 S86,4,22 S87,3,22 S98,58
JMP,1 BE
N0007 LBL,22 S86,3,1 S87,4,1 S98,59
JMP,1 BE
N0008 LBL,25 JMP,1 BE
N0009 LBL,30 S86,6,32 S87,5,32 S98,88
JMP,1 BE
N0010 LBL,32 S86,5,1 S87,6,1 S98,89
JMP,1 BE
N0011 LBL,40 S98,22 JMP,1 BE
N0012 PE
=== Main Logic Explained ===
N0002 SON,1 SON,2 SOF,3 SOF,4 SOF,5
SOF,6 SOF,11 SOF,12
This line is at the top of the program and is only executed at startup.
This turns **OFF** all outputs. Note outputs one and two are pulsed or momentary and they unlatch the start inputs
(relay). See [[robot:rg#outputs|output assignments above]]
N0003 LBL,1 BE
Label One
N0004 P F100% CNT,8
BE
Movement (start position)
N0005 S85,1,20 S85,2,30 S85,7,40 JMP,1
BE
* S85,1,20 if input 1 is **ON** (//start left//) goto label 20
* S85,2,30 if input 2 is **ON** (//start right//) goto label 30
* S85,5,7 if input 7 is **ON** goto label 40
* JMP,1 jump to label 1. Label 1 is above and this makes a loop.
N0006 LBL,20 S86,4,22 S87,3,22 S98,58
JMP,1 BE
* LBL,20 label 20
* This label and label 30 is the decision logic to decide which part to do - 4 leg or 3 leg
* **Note:** setting data 30 is wait time for S86 and S87 instruction
* S86,4,22 wait for input 4 (//3leg left//) to come **ON**, if it does goto next statement, if doesn't jump to label 22
* S87,3,22 wait for input 3 (//4leg left//)to be **OFF** , if it is **OFF** goto to next statement, if it is **ON** goto label 22
* S98,58 call program 58 (//3 leg left//)
* JMP,1 goto label 1 (//start over//). This line is where we continue when program 58 is done.
INputs 3 and 4 are switches on the legs on the left side. If the 3 leg switch is **ON** and the 4 leg switch is **OFF**, it is safe to start the 3 leg left program. Any other condition sends us to label 22 where we can test for other conditions.
N0007 LBL,22 S86,3,1 S87,4,1 S98,59
JMP,1 BE
* LBL,22 label 22
* S86,3,1 wait for input 3 (//4leg left//) to come **ON**, if it doesn't goto label 1 (//start over//).
* S87,4,1 wait for input 4 (//3leg left//) to go**OFF**, if it doesn't goto label 1 (//start over//).
* S98,59 call program 59 (//4leg left//).
* JMP,1 goto label 1 (//start over//). This line is where we continue when program 59 is done.
INputs 3 and 4 are switches on the legs on the left side. If the 4 leg switch is **ON** and the 3 leg switch is **OFF**, it is safe to start the 4 leg left program. Any other condition sends us back to the start to try again.
N0008 LBL,25 JMP,1 BE
I think this is a remmanent of code cleanup. It does nothing but go back to the top at label one. I will remove it first chance I notice it and remember it. this a note to same.
N0009 LBL,30 S86,6,32 S87,5,32 S98,88
JMP,1 BE
* LBL,30 label 30
* S86,6,32 wait for input 6 (//3 leg right//)to come**ON**, if it doesn't goto label 32
* S87,5,32 wait for input 5 (//4 leg right//)to go **OFF**, it it doesn't goto label 32
* S98,88 call program 88 (//3 leg right//)
* JMP,1 jump to label 1 (//start over//) - this instruction will be the next one after program 88 has finished.
INputs 6 and 5 are switches on the legs on the right side. If the 3 leg switch is **ON** and the 4 leg switch is **OFF**, it is safe to start the 3 leg right program. Any other condition sends us to label 32 where we can test for other conditions.
N0010 LBL,32 S86,5,1 S87,6,1 S98,89
JMP,1 BE
*LBL,32 label 32
*S86,5,1 wait for input 5 (//4 leg right//) to come **ON**, if it doesn't goto label 1 (//start over//).
*S87,6,1 wait for input 6 (//3 leg right//) to go **OFF**, if it doesn't goto label 1 (//start over//).
*S98,89 call program 89 (//4 leg right//)
*JMP,1 goto label 1 (//start over//) - this is the next instruction after program 89 finishes.
INputs 5 and 6 are switches on the legs on the right side. If the 4 leg switch is **ON** and the 3 leg switch is **OFF**, it is safe to start the 4 leg right program. Any other condition sends us back to the start to try again.
N0011 LBL,40 S98,22 JMP,1 BE
*LBL,40 label 40
*S98,22 call program 22 (//tip clean//).
*JMP,1 goto label 1 (//start over//).
===== Program Numbers and their function =====
^ PROG ^ Task ^
| 1 | Main program - calls other programs |
| 3 | clear all |
| 4 | outputs off |
| 22 | tip clean |
| 25 | recover left |
| 26 | recover right |
| 58 | 3 leg left |
| 59 | 4 leg left |
| 66 | zero |
| 88 | 3 leg right |
| 89 | 4 leg right |
==== Counting Registers ====
There are counters in each of the programs that store counts in the first 8 registers. Press the DATA key to get to the registers.
^N000 | 3 Leg Left Count ^N005 | 3 Leg Right Count |
^N001 | 4 Leg Left Count ^N006 | 4 Leg Right Count |
^N002 | Total Left Side ^N007 | Total Right Side |
^N003 | Total Count | | |
==== Teach Pendant ====
=== TP functions ===
{{:robotics:teach_pendant.png|}}