Rcx-Pro e
Rcx-Pro e
Programming Manual
MEMO
Introduction
Our sincere thanks for your purchase of this YAMAHA robot controller.
This manual describes robot program commands and related information for using
YAMAHA RCX40, RCX141 and RCX142 robot controllers. Be sure to read this manual
2
carefully as well as related manuals and comply with their instructions for using the
YAMAHA robot controllers safely and correctly.
For details on how to operate YAMAHA robot controllers, refer to the separate “YAMAHA
robot controller owner’s manual”.
1
Safety precautions (Be sure to read before using)
Before using the YAMAHA robot controller, be sure to read this manual and related manu-
als, and follow their instructions to use the robot controller safely and correctly.
Warning and caution items listed in this manual relate to YAMAHA robot controllers.
2 When this robot controller is used in a robot controller system, please take appropriate
safety measures as required by the user’s individual system.
This manual classifies safety caution items and operating points into the following levels,
along with symbols for signal words “WARNING”, “CAUTION” and “NOTE”.
w "WARNING"
WARNING
indicates a potentially hazardous situation which, if not avoided, could
result in death or serious injury.
c "CAUTION"
CAUTION
indicates a potentially hazardous situation which, if not avoided, could result in
minor or moderate injury or damage to the equipment or software.
n Explains
NOTE
key points in the operation in a simple and clear manner.
Note that the items classified into “CAUTION” might result in serious injury depending
on the situation or environmental conditions. So always comply with CAUTION and
WARNING instructions since these are essential to maintain safety.
Keep this manual carefully so that the operator can refer to it when needed. Also make
sure that this manual reaches the end user.
This manual does not constitute a concession of rights or a guarantee of industrial rights. Please
acknowledge that we bear no liability whatsoever for conflicts with industrial rights arising from
the contents of this manual.
2
Contents
1. The YAMAHA Robot Language .......................................................... 1
2. Characters......................................................................................... 2
3. Program Names ................................................................................ 3
4. Identifiers.......................................................................................... 7
5. Command Statement Format ............................................................ 8
6. Constants .......................................................................................... 9
6.1 Character constants ...................................................................................... 9
6.2 Numeric constants ........................................................................................ 9
6.2.1 Integer constants .......................................................................................................... 9
6.2.2 Real constants .............................................................................................................. 9
7. Variables ......................................................................................... 10
7.1 Valid range of variables .............................................................................. 11
7.1.1 Valid range of dynamic variables ................................................................................ 11
7.1.2 Valid range of static variables ...................................................................................... 11
7.1.3 Valid range of dynamic array variables ........................................................................ 11
7.2 Character variables ..................................................................................... 12
7.3 Numeric variables ...................................................................................... 12
7.3.1 Integer variables ......................................................................................................... 12
7.3.2 Real variables ............................................................................................................. 12
7.4 Array variables ........................................................................................... 12
7.5 Clearing variables ....................................................................................... 13
7.5.1 Clearing dynamic variables ........................................................................................ 13
7.5.2 Clearing static variables ............................................................................................. 13
i
11. Command Statements ..................................................................... 30
ABSRST statement ................................................................................................. 30
ACCEL statement
(Acceleration setting statement for main group) .................................................... 31
ACCEL2 statement
(Acceleration setting statement for sub group) ....................................................... 32
ARCH statement
(Arch position setting statement for main group) ................................................... 33
ARCH2 statement
(Arch position setting statement for sub group) ...................................................... 34
ASPEED statement
(Automatic movement speed setting statement for main group) ............................. 35
ASPEED2 statement
(Automatic movement speed setting statement for sub group) ............................... 36
AXWGHT statement
(Axis tip weight setting statement for main group) ................................................. 37
AXWGHT2 statement
(Axis tip weight setting statement for sub group) ................................................... 38
CALL statement ..................................................................................................... 39
CHGPRI statement ................................................................................................ 40
CUT statement ...................................................................................................... 41
DECEL statement
(Deceleration setting statement for main group) .................................................... 42
DECEL2 statement
(Deceleration setting statement for sub group) ...................................................... 43
DECLARE statement .............................................................................................. 44
DEF FN statement ................................................................................................. 46
DELAY statement .................................................................................................. 47
DIM statement
(Array variable declaration statement) ................................................................... 48
DO statement (Parallel output) .............................................................................. 49
DRIVE statement ................................................................................................... 50
DRIVE2 statement ................................................................................................. 54
DRIVEI statement .................................................................................................. 58
DRIVEI2 statement ................................................................................................ 60
EXIT FOR statement .............................................................................................. 62
EXIT SUB statement .............................................................................................. 63
EXIT TASK statement ............................................................................................. 64
FOR statement, NEXT statement ........................................................................... 65
GOSUB statement, RETURN statement ................................................................. 66
GOTO statement .................................................................................................. 67
HALT statement .................................................................................................... 68
HAND definition statement, CHANGE statement (Main robot hand selection) ...... 69
HAND2 definition statement, CHANGE2 statement (Sub robot hand selection) .... 73
HOLD statement ................................................................................................... 77
IF statement .......................................................................................................... 78
INPUT statement .................................................................................................. 80
LET statement (Assignment statement) ................................................................... 81
LO statement (Arm lock output) ............................................................................ 83
MO statement (Internal output) ............................................................................. 84
MOVE statement
(Absolute position movement command) .............................................................. 85
ii
MOVE2 statement
(Absolute position movement command) .............................................................. 93
MOVEI statement
(Relative position movement command) ............................................................... 97
MOVEI2 statement
(Relative position movement command) ............................................................... 99
ON ERROR GOTO statement ............................................................................. 101
ON to GOTO statement ...................................................................................... 102
ON to GOSUB statement .................................................................................... 103
ONLINE statement, OFFLINE statement .............................................................. 104
ORGORD statement
(Return-to-origin sequence setting statement for main group) .............................. 105
ORGORD2 statement
(Return-to-origin sequence setting statement for sub group) ................................ 106
ORIGIN statement .............................................................................................. 107
OUT statement ................................................................................................... 108
OUTPOS statement
(OUT position setting statement for main group) ................................................. 109
OUTPOS2 statement
(OUT position setting statement for sub group) ................................................... 110
PATH-related statements ......................................................................................111
What is a PATH function? ........................................................................................................ 111
PATH statement (PATH-related statements) .............................................................................. 113
PATH END statement (PATH-related statements) ...................................................................... 117
PATH SET statement (PATH-related statements) ....................................................................... 118
PATH START statement (PATH-related statements) .................................................................. 120
PDEF statement ................................................................................................... 121
PMOVE statement (Pallet movement command) ................................................. 122
PMOVE2 statement (Pallet movement command) ............................................... 126
PRINT statement ................................................................................................. 130
Pn (Point definition statement) ............................................................................ 131
REM (Comment statement) .................................................................................. 132
RESET statement ................................................................................................. 133
RESTART statement ............................................................................................. 134
RESUME statement ............................................................................................. 135
RIGHTY statement, LEFTY statement ................................................................... 136
RIGHTY2 statement, LEFTY2 statement ............................................................... 137
Sn (Shift coordinate definition statement) ............................................................ 138
SELECT CASE statement, END SELECT statement ................................................ 139
SEND statement .................................................................................................. 140
SERVO statement ................................................................................................ 142
SERVO2 statement .............................................................................................. 143
SET statement ..................................................................................................... 144
SHARED statement ............................................................................................. 145
SHIFT statement
(Shift coordinate setting statement for main robot) .............................................. 146
SHIFT2 statement
(Shift coordinate setting statement for sub robot) ................................................. 147
SO statement (Serial output) ................................................................................ 148
SPEED statement
(Speed setting statement for main group) ............................................................. 149
SPEED2 statement
(Speed setting statement for sub group) ............................................................... 150
iii
START statement ................................................................................................. 151
SUB statement, END SUB statement ................................................................... 152
SUSPEND statement ........................................................................................... 154
SWI statement ..................................................................................................... 155
TO statement ...................................................................................................... 156
TOLE statement
(Tolerance setting statement for main group) ....................................................... 157
TOLE2 statement
(Tolerance setting statement for sub group) ......................................................... 158
TORQUE statement ............................................................................................ 159
TORQUE2 statement .......................................................................................... 160
WAIT statement .................................................................................................. 161
WEIGHT statement
(Tip weight parameter setting statement for main robot) ...................................... 163
WEIGHT2 statement
(Tip weight parameter setting statement for sub robot) ........................................ 164
WHILE statement, WEND statement ................................................................... 165
Label statement ................................................................................................... 166
12. Functions ...................................................................................... 167
12.1 Arithmetic functions ................................................................................. 167
12.2 Character string functions ......................................................................... 183
12.3 Point functions ......................................................................................... 186
13. Multi-tasking ................................................................................. 189
13.1 Outline ..................................................................................................... 189
13.2 Task definition .......................................................................................... 189
13.3 Task status and transition .......................................................................... 190
13.4 Starting tasks ............................................................................................. 191
13.5 Task scheduling ........................................................................................ 191
13.6 Condition wait in task ............................................................................... 192
13.7 Suspending and restarting tasks ................................................................ 193
13.8 Deleting tasks ........................................................................................... 193
13.9 Stopping tasks ........................................................................................... 194
13.10 Multi-task program example ..................................................................... 195
13.11 Sharing the data ........................................................................................ 196
14. Data file description ..................................................................... 197
14.1 Program file .............................................................................................. 198
14.1.1 All programs ............................................................................................................ 198
14.1.2 One program ........................................................................................................... 199
14.2 Point file ................................................................................................... 200
14.2.1 All points ................................................................................................................. 200
14.2.2 One point ................................................................................................................ 201
14.3 Point comment file ................................................................................... 202
14.3.1 All point comments .................................................................................................. 202
14.4 Parameter file ........................................................................................... 203
14.4.1 All parameters .......................................................................................................... 203
14.4.2 One parameter ......................................................................................................... 205
14.5 Shift coordinate definition file ................................................................... 206
14.5.1 All shift data ............................................................................................................. 206
14.5.2 One shift definition .................................................................................................. 207
14.6 Hand definition file .................................................................................. 208
14.6.1 All hand data ........................................................................................................... 208
iv
14.6.2 One hand definition ................................................................................................. 209
14.7 Pallet definition file .................................................................................. 210
14.7.1 All pallet definitions ................................................................................................. 210
14.7.2 One pallet definition ................................................................................................ 212
14.8 All file ...................................................................................................... 213
14.8.1 All files ..................................................................................................................... 213
14.9 Program directory file ............................................................................... 214
14.9.1 Entire program directory ........................................................................................... 214
14.9.2 One program ........................................................................................................... 215
14.10 Parameter directory file ............................................................................ 216
14.10.1 Entire parameter directory ........................................................................................ 216
14.11 Variable file .............................................................................................. 217
14.11.1 All variables ............................................................................................................. 217
14.11.2 One variable ............................................................................................................ 219
14.12 Constant file ............................................................................................. 220
14.12.1 One character string ................................................................................................. 220
14.13 Array variable file ..................................................................................... 221
14.13.1 All array variables .................................................................................................... 221
14.13.2 One array variable ................................................................................................... 223
14.14 DI file ....................................................................................................... 224
14.14.1 All DI information .................................................................................................... 224
14.14.2 One DI port ............................................................................................................. 225
14.15 DO file ..................................................................................................... 226
14.15.1 All DO information .................................................................................................. 226
14.15.2 One DO port ........................................................................................................... 227
14.16 MO file ..................................................................................................... 228
14.16.1 All MO information .................................................................................................. 228
14.16.2 One MO port ........................................................................................................... 229
14.17 LO file ...................................................................................................... 230
14.17.1 All LO information ................................................................................................... 230
14.17.2 One LO port ............................................................................................................ 231
14.18 TO file ...................................................................................................... 232
14.18.1 All TO information ................................................................................................... 232
14.18.2 One TO port ............................................................................................................ 233
14.19 SI file ........................................................................................................ 234
14.19.1 All SI information ..................................................................................................... 234
14.19.2 One SI port .............................................................................................................. 235
14.20 SO file ...................................................................................................... 236
14.20.1 All SO information ................................................................................................... 236
14.20.2 One SO port ............................................................................................................ 237
14.21 Error message history file .......................................................................... 238
14.21.1 All error message history .......................................................................................... 238
14.22 Machine reference file .............................................................................. 239
14.22.1 All machine reference data ...................................................................................... 239
14.23 EOF file .................................................................................................... 240
14.23.1 EOF data .................................................................................................................. 240
14.24 Serial port communication file .................................................................. 241
14.24.1 Serial port communication file ................................................................................. 241
14.25 SIW file .................................................................................................... 242
14.25.1 All SIW .................................................................................................................... 242
14.25.2 One SIW data .......................................................................................................... 243
14.26 SOW file .................................................................................................. 244
14.26.1 All SOW .................................................................................................................. 244
14.26.2 One SOW data ........................................................................................................ 245
v
15. User program examples ................................................................ 246
15.1 Basic operation ......................................................................................... 246
15.1.1 Directly writing point data in program ..................................................................... 246
15.1.2 Using point numbers ................................................................................................ 247
15.1.3 Using shift coordinates ............................................................................................. 248
15.1.4 Palletizing ................................................................................................................ 249
15.1.4.1 Utilizing the shift coordinates .................................................................................... 249
15.1.4.2 Utilizing pallet movement .......................................................................................... 250
15.1.5 DI/DO (digital input and output) operation .............................................................. 252
15.2 Application ............................................................................................... 253
15.2.1 Pick and place between 2 points .............................................................................. 253
15.2.2 Palletizing ................................................................................................................ 255
15.2.3 Pick and place of stacked parts ................................................................................ 257
15.2.4 Parts inspection (Multi-tasking example) .................................................................. 259
15.2.5 Sealing ..................................................................................................................... 262
15.2.6 Connection to an external device through RS-232C (example 1) .............................. 263
15.2.7 Connection to an external device through RS-232C (example 2) .............................. 264
vi
17.2.10 Setting the UTILITY mode ........................................................................................ 287
17.2.10.1 Setting the access level .............................................................................................. 287
17.2.10.2 Setting the execution level ......................................................................................... 287
17.2.10.3 Setting the sequence program execution flag ............................................................. 288
17.2.10.4 Setting the SCARA robot hand system ........................................................................ 288
17.2.10.5 Resetting the internal emergency stop flag ................................................................. 289
17.3 Data handling ........................................................................................... 290
17.3.1 Acquiring the display language ................................................................................ 290
17.3.2 Acquiring the access level ........................................................................................ 290
17.3.3 Acquiring the arm status ........................................................................................... 291
17.3.4 Acquiring the break point status ............................................................................... 291
17.3.5 Acquiring the controller configuration status ............................................................ 292
17.3.6 Acquiring the execution level ................................................................................... 292
17.3.7 Acquiring the mode status ........................................................................................ 293
17.3.8 Acquiring the message ............................................................................................. 293
17.3.9 Acquiring return-to-origin status ............................................................................... 294
17.3.10 Acquiring the absolute reset status ........................................................................... 295
17.3.11 Acquiring the servo status ........................................................................................ 295
17.3.12 Acquiring the sequence program execution status .................................................... 296
17.3.13 Acquiring the speed setting status ............................................................................. 296
17.3.14 Acquiring the point coordinates and units ................................................................ 297
17.3.15 Acquiring the version information ............................................................................ 297
17.3.16 Acquiring the current positions ................................................................................ 298
17.3.16.1 Acquiring the current positions on pulse unit coordinates .......................................... 298
17.3.16.2 Acquiring the current positions on XY coordinates ..................................................... 298
17.3.17 Acquiring the tasks in RUN or SUSPEND status ....................................................... 299
17.3.18 Acquiring the tasks operation status ......................................................................... 299
17.3.19 Acquiring the shift status .......................................................................................... 300
17.3.20 Acquiring the hand status ......................................................................................... 300
17.3.21 Acquiring the remaining memory capacity ............................................................... 301
17.3.22 Acquiring the emergency stop status ........................................................................ 301
17.3.23 Acquiring the error status by self-diagnosis ............................................................... 302
17.3.24 Acquiring the option slot status ................................................................................ 303
17.3.25 Data readout processing ........................................................................................... 304
17.3.26 Data write processing ............................................................................................... 305
17.4 Executing the robot language independently ............................................ 306
17.4.1 Switching the program ............................................................................................. 306
17.4.2 Other robot language command processing ............................................................. 307
17.5 Control codes ........................................................................................... 307
17.5.1 Interrupting the command execution ........................................................................ 307
vii
18.4.10 Servo command ....................................................................................................... 315
18.4.11 Manual movement speed change command ............................................................ 316
18.4.12 Auto movement speed change command ................................................................. 316
18.4.13 Program speed change command ............................................................................ 316
18.4.14 Shift designation change command .......................................................................... 317
18.4.15 Hand designation change command ........................................................................ 317
18.4.16 Arm designation change command .......................................................................... 317
18.4.17 Point display unit designation command .................................................................. 317
viii
1. The YAMAHA Robot Language
The YAMAHA robot language was developed by Yamaha Motor Co., Ltd. IM Company for simple
and efficient programming to control YAMAHA industrial robots. The YAMAHA robot language is
similar to BASIC (Beginner’s All-purpose Symbolic Instruction Code) and makes even complex
robot movements easy to program. This manual explains how to write robot control programs with
the YAMAHA robot language, including actual examples on how its commands are used.
2
1
2. Characters
The YAMAHA robot language uses the following characters and symbols.
Alphabetic characters
2 A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
Numbers
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Symbols
( ) [ ] + - * / ^ = < > & | ~ _ % ! # $ : ; , . ” ’ @ ?
n Katakana
NOTE
(Japanese phonetic
katakana (Japanese phonetic characters)
characters) cannot be entered from the
MPB. Katakana can only be used when
communicating with a host computer
(if it handles katakana).
2
3. Program Names
Each program to be created in the robot controller must have its own name. The same program
name cannot be given to other programs. Program names can be up to 8 characters consisting of
a combination of alphanumeric characters and underscores ( _ ).
Functions and examples of program names having special meaning are shown below.
a) FUNCTION 2
b) SEQUENCE
c) _SELECT
d) COMMON
a) FUNCTION
Functions:
Pressing the USER key in “PROGRAM” mode or “MANUAL” mode allows the
user function to be used.
When used in “PROGRAM” mode, commands (MOVE, GOTO, etc.) frequently
used during program editing can be entered with the function keys.
When used in “MANUAL” mode, DO output is available with the function keys
without running the program.
Program example:
’ FOR MANUAL MODE
* M_F1:’DO(20)ALTERNATE
DO(20)=~DO(20)
* M_F2:’DO(21)ALTERNATE
DO(21)=~DO(21)
:
* M_F6:’DO(25)MOMENTARY
DO(25)=1
DO(25)=0
:
’ FOR PROGRAM MODE
* P_F1:’MOVE P,
* P_F6:’MOVE L,
* P_F2:’GOTO *
:
For more details, see the YAMAHA robot controller owner's manual.
3
3. Program Names
b) SEQUENCE
Functions:
As distinct from the robot programs, this program processes the robot input/output
(DI, DO, MO, LO, TO, SI, SO) signals in fixed cycles. The cycle is determined by
the program capacity.
Using this function allows the controller to operate as if it had a built-in PLC
(programmable logic controller).
Program example:
DO(20)=~DO(20)
DO(25)=DI(21) AND DI(22)
MO(26)=DO(26) OR DO(25)
:
4
3. Program Names
c) _SELECT
Functions:
The system will always select a certain program if available when the robot program
is reset. This function is for selecting a program by DI input and that program is
then always selected when reset.
Differences in processing by each type of reset:
· When reset from the teaching pendant, the system awaits a response to a query to
switch the program to “_SELECT”.
· When reset by the HALT command in a program, dedicated DI (reset signal) or online
command, the system switches to the “_SELECT” program.
· When the execution level is selected so that the program is reset at power ON, the
program resets when power is turned on and then switches to the “_SELECT”
program.
Program example:
A program is selected according to the value input from DI3( ).
When DI3( ) is 0, the system repeatedly monitors the DI input.
When DI3( ) is from 1 to 3, the matching program is selected.
When DI3( ) is other than the above cases, the system quits the program that is
currently running.
n· NOTE
CASE ELSE
GOTO *FIN
Using an ON ERROR statement END SELECT
allows running the program in a loop GOTO *ST
not ending in an error even without *FIN:
the program name specified by a SWI HALT
statement. *ER1:
· An error code issued during execution IF ERR=&H0303 THEN *NEXT_L
of the program is input into a variable ON ERROR GOTO 0
ERR. “ERR=&0303” means *NEXT_L:
“Program doesn’t exist”. RESUME NEXT
5
3. Program Names
d) COMMON
Functions:
Using two or more robot programs for the same processing is usually a waste of
programming area. So the COMMON program can be used to perform the same
task in multiple robot programs.
Program examples:
Program name: SAMPLE1
DECLARE SUB *DISTANCE(A!,B!,C!)
DECLARE *AREA
X!=2.5
Y!=1.2
CALL *DISTANCE(X!,Y!,REF C!)
GOSUB *AREA
PRINT C!,Z!
HALT
6
4. Identifiers
The groups of characters used to express the names of labels, variables, procedures and so on are
referred to as “identifiers.”
Identifier length can be up to 16 characters composed of a combination of alphanumeric characters
and underscores ( _ ). Identifiers must begin with an alphabetic character. If an identifier exceeds
16 characters, the characters from the 17th on are ignored and deleted. A maximum of 500 identifiers
can be used.
7
5. Command Statement Format
One robot language command must be written on a single line within 75 characters and
arranged in the format shown below:
n· NOTE
Items enclosed in [ ] can be omitted. [<label>:] <statement> [<operand>]
· Items enclosed in < > must be
written in a specific format.
· Items not enclosed in < > should be
written directly as shown.
· Items surrounded by | | are
selectable.
· Labels can be omitted from the
command. All labels must begin with
an asterisk ( * ) and end with a colon
( : ).
· Operands may be unnecessary for
some commands.
· Programs are executed in order from
top to bottom unless a branching
instruction is given.
8
6. Constants
Constants are basically classified as follows:
Character type Character string
Examples:
”YAMAHA ROBOT”
”EXAMPLE OF””A”””
PRINT ”COMPLETED”
”YAMAHA ROBOT”
2. Binary constants
Unsigned binary numbers of 8 bits or less may be used. The prefix “&B” is attached
to the number to define it as a binary number.
&B0 (0) to &B11111111 (255)
3. Hexadecimal constants
Signed hexadecimal numbers of 32 bits or less may be used. The prefix “&H” is
attached to the number to define it as a hexadecimal number.
&H80000000 (–2,147,483,648) to &H7FFFFFFF (2,147,483,647)
Examples:
-1.23456E-12
3.14E0
1.E5
9
7. Variables
Variables are classified as follows:
Character Character Character string variables
type string variables
Dynamic
variables
Simple Numeric Arithmetic Integer variables
variables type variables Real variables (single-precision)
Variable
Variables with the same names as reserved words and variables starting with FN, DIn,
DOn, MOn, LOn, TOn, SIn, SOn, Pn, Sn or Hn (n=numerical value) cannot be used.
Examples:
COUNT ............. permitted
ABS .................... not permitted
FNAME ............. not permitted
S91 ..................... not permitted
The type of variable is specified by the type declaration character attached at the end of
the variable name. If no type declaration character is attached, the variable is viewed as a
real type.
$ (Character type)
Type declaration characters % (Integer type)
! (Real type)
Examples:
CNT0% ................................. Integer variable
CNT1 .................................... Real variable
STR1$ ................................... Character variable
ACT%(1) .............................. Integer array
10
7. Variables
An array variable can express multiple elements. The elements of an array can be integers
or subscript expressions following the variable name (see below). The length of an array
variable is defined by the DIM statement. The actual number of array elements will be the
DIM statement subscript number plus 1, as subscripts begin with 0.
Format :
Examples:
C%(2) ........................ Integer variable
N!(1,2) ...................... Real variable
R1$(A) ...................... Character variable
The length of an array variable that can be declared with the DIM statement depends on
the program size.
11
7. Variables
Examples:
R1$ = “YAMAHA“
R2$(2) = R1$ + “ MOTOR“
Examples:
R1% = 10
R2%(2) = R1% + 10000
Examples:
R1! = 10.31
R2!(2)= R1% + 1.98E3
Format :
n The
NOTE
length of an array variable that Examples:
can be declared with the DIM A%(1) .......................................................... Integer array variable
statement depends on the program size. DATA!(1,10,3) ............................................. Single-precision real number array variable
STRING$(10) .............................................. Character array variable
12
7. Variables
13
8. Other Variables
c InCAUTION
controllers whose software version
1. Point data variable
This variable specifies a point data number with a numeric constant or expression. A
is earlier than V8.28, point numbers
from 0 to 4000 can be specified with
point data number is expressed with a “P” followed by a number of 4 digits or less, or an
point variables. expression surrounded by brackets ( [ ] ).
Point numbers from 0 to 9999 can be specified with point variables.
Format :
Pnnnn or P ”[”<expression>”]”
n = 0 to 9
Each bracket in quotation marks (" ") must be written. (Brackets are not used to indicate
an item that may be omitted.)
Examples:
P0,P110
P[A],P[START_POINT],P[A(10)]
Format :
Sn or S ”[”<expression>”]”
n = 0 to 9
Each bracket in quotation marks (" ") must be written. (Brackets are not used to indicate
an item that may be omitted.)
Examples:
S1
S[A],S[BASE],S[A(10)]
Format :
c Hand
CAUTION
system flags are enabled only
LOCx
14
8. Other Variables
Format :
x : X, Y, Z, R
Examples:
A(1)=LOCX(S1)
----------- The X data of S1 is assigned to array variable A(1).
LOCR(S[A])=45.0
----------- The R data of S[A] is set to 45.0°.
Format 1:
DIm ( [b, · · ·, b] )
Format 2:
DI ( mb, · · ·, mb )
n Bits must be specified in ascending
NOTE
15
8. Other Variables
Format 1:
DOm ( [ b, · · ·, b ] )
Format 2:
n Bits
NOTE
must be specified in ascending
DO ( mb, · · ·, mb )
Examples:
A%=DO2()
----------- Output status of DO(27) to DO(20) is assigned to variable
A%.
A%=DO5(7,4,0)
----------- Output status of DO(57), DO(54) and DO(50) is assigned to
variable A%.
(If all above signals are 1(ON), then A%=7.)
A%=DO(37,25,20)
----------- Output status of DO(37), DO(25) and DO(20) is assigned to
variable A%.
(If all above signals except DO(20) are 1 (ON), then A%=6.)
16
8. Other Variables
Format 1:
MOm ( [ b, · · ·, b ] )
Format 2:
n Bits
NOTE
must be specified in ascending MO ( mb, · · ·, mb )
order from the right.
m : port number 0 to 7, 10 to 17, 20 to 27
b : bit definition 0 to 7
Examples:
A=MO2 ()
----------- Internal output status of MO(27) to MO(20) is assigned to
variable A.
A=MO5(7,4,0)
----------- Internal output status of MO(57), MO(54) and MO(50) is
assigned to variable A.
(If all above signals are 1 (ON), then A=7.)
A=MO(37,25,20)
----------- Internal output status of MO(37), MO(25) and MO(20) is
assigned to variable A.
(If all above signals except MO(25) are 1 (ON), then A=5.)
17
8. Other Variables
Format 1:
LOm ( [ b, · · ·, b ] )
m : port number 0
b : bit definition 0 to 7
If the bit definition is omitted, bits 0 to 7 are all selected.
Format 2:
n Bits
NOTE
must be specified in ascending LO ( mb, · · ·, mb )
order from the right.
m : port number 0
b : bit definition 0 to 7
Examples:
A%=LO0()
----------- Arm lock status of LO(07) to LO(00) is assigned to variable
A%.
A%=LO0(7,4,0)
----------- Arm lock status of LO(07), LO(04) and LO(00) is assigned
to variable A%.
(If all above signals are 1 (ON), then A%=7.)
A%=LO0(06,04,01)
----------- Arm lock status of LO(06), LO(04) and LO(01) is assigned
to variable A%.
(If all above signals except LO(01) are 1 (ON), then A%=6.)
18
8. Other Variables
Format 1:
TOm ( [ b, · · ·, b ] )
m : port number 0
b : bit definition 0 to 7
If the bit definition is omitted, bits 0 to 7 are all selected.
Format 2:
n Bits must be specified in ascending
NOTE
m : port number 0
b : bit definition 0 to 7
Examples:
A%=TO0()
----------- Status of TO(07) to TO(00) is assigned to variable A%.
A%=TO0(7,4,0)
----------- Status of TO(07), TO(04) and TO(00) is assigned to variable
A%.
(If all above signals are 1 (ON), then A%=7.)
A%=TO(06,04,01)
----------- Status of TO(06), TO(04) and TO(01) is assigned to variable
A%.
(If all above signals except TO(01) are 1 (ON), then A%=6.)
19
8. Other Variables
Format 1:
SIm ( [ b, · · ·, b ] )
Format 2:
n Bits
NOTE
must be specified in ascending
order from the right. SI ( mb, · · ·, mb )
A “0” is entered if there is no actual
serial board.
m : port number 0 to 7, 10 to 17, 20 to 27
b : bit definition 0 to 7
Examples:
A%=SI1()
----------- Input status of ports SI(17) to SI(10) is assigned to variable
A%.
A%=SI5(7,4,0)
----------- Input status of SI(57), SI(54) and SI(50) is assigned to variable
A%.
(If all above signals are 1(ON), then A%=7.)
A%=SI(27,15,10)
----------- Input status of SI(27), SI(15) and SI(10) is assigned to variable
A%.
(If all above signals except SI(10) are 1 (ON), then A%=6.)
WAIT SI(21)=1
----------- Waits until SI(21) sets to 1 (ON).
20
8. Other Variables
Format 1:
SOm ( [ b, · · ·, b ] )
Format 2:
n Bits
NOTE
must be specified in ascending
order from the right. SO ( mb, · · ·, mb )
External output is unavailable if there
is no serial board.
m : port number 0 to 7, 10 to 17, 20 to 27
b : bit definition 0 to 7
Examples:
A%=SO2()
----------- Output status of SO(27) to SO(20) is assigned to variable
A%.
A%=SO5(7,4,0)
----------- Output status of SO(57), SO(54) and SO(50) is assigned to
variable A%.
(If all above signals are 1(ON), then A%=7.)
A%=SO(37,25,20)
----------- Output status of SO(37), SO(25) and SO(20) is assigned to
variable A%.
(If all above signals except SO(25) are 1 (ON), then A%=5.)
21
8. Other Variables
c Serial
CAUTION
word input is enabled only
12. Serial word input
This variable indicates the status of the serial input word information.
when the software version is V8.08 or
later.
Format 1:
2 n The
NOTE
information is handled as SIW (m)
unsigned word data.
0 is input if the serial board does not m : Port No. 2 to 15
actually exist.
The acquisition range is 0 (&H0000) to 65535 (&HFFFF).
Example:
A%=SIW (2)
----------- The input state from SIW (2) is assigned to variable A%.
A%=SIW (15)
----------- The input state from SIW (15) is assigned to variable A%.
c Serial
CAUTION
double word input is enabled
13. Serial double word input
This variable indicates the state of the serial input word information as a double word.
only when the software version is
V8.08 or later.
Format 1:
n The
NOTE
information is handled as signed
SID (m)
double word data.
0 is input if the serial board does not m : Port No. 2, 4, 6, 8, 10, 12, 14
actually exist. The acquisition range is -1073741824 (&HC0000000) to 1073741823 (&H3FFFFFFF).
An error will occur if the value is not
within the acquisition range
(&H80000000 to &HBFFFFFFF, Example:
&H40000000 to &H7FFFFFFF.) A%=SID (2)
----------- The input state from SIW (2) , SIW (3) is assigned to variable
A%.
A%=SID (14)
----------- The input state from SIW (14), SIW (15) is assigned to
variable A%.
22
8. Other Variables
c Serial
CAUTION
word output is enabled only
14. Serial word output
This variable outputs the serial output word information, and indicates the output status.
when the software version is V8.08 or
later.
Format 1:
n The
NOTE
information is handled as SOW (m) 2
unsigned word data.
If a serial board does not actually m : Port No. 2 to 15
exist, the information is not output The output range is 0 (&H0000) to 65535 (&HFFFF).
externally.
If a value exceeding the output range Note that if a negative value is output, the low-order word information will be output after
is assigned, the low-order 2-byte being converted to hexadecimal.
information is output.
Example:
A%=SOW (2)
----------- The output status from SOW (2) is assigned to variable A%.
SOW (15)=A%
----------- The contents of variable A% are assigned in SOW (15).
If the variable A% value exceeds the output range, the low-
order word information will be assigned.
SOW (15)=-255
----------- The contents of -255 (&HFFFFFF01) are assigned to SOW
(15).
-255 is a negative value, so the low-order word information
(&HFF01) will be assigned.
c Serial
CAUTION
double word output is enabled
15. Serial double word output
This variable outputs the serial output word information status as a double word, and
only when the software version is indicates the output status.
V8.08 or later.
Format 1:
n The
NOTE
information is handled as signed SOD (m)
double word data.
If a serial board does not actually m : Port No. 2, 4, 6, 8, 10, 12, 14
exist, the information is not output The output range is -1073741824 (&HC0000000) to 1073741823 (&H3FFFFFFF).
externally.
An error will occur if the value is not Note that if a negative value is output, the low-order word information will be output after
within the output range (&H80000000 being converted to hexadecimal.
to &HBFFFFFFF, &H40000000 to
&H7FFFFFFF.) Example:
A%=SOD (2)
----------- The input status from SOW (2), SOW (3) is assigned to
variable A%.
SOD (14)=A%
----------- The contents of variable A% are assigned in SOD (14).
23
9. Expressions and Operations
When the values used in remainder calculations are real numbers, they are converted into
integers (all decimal fractions are truncated) and the calculation is then performed with
the integers. The result is the remainder of a division operation using the integers.
Examples:
A=15 MOD 2
----------- This becomes: A=1 (15/2 = 7 .... 1)
A=17.34 MOD 5.98
----------- This becomes: A=2 (17/5 = 3 .... 2)
n The
NOTE
expected result might not always
= Equal to
<>, >< Not equal to
be maintained if equivalent relational
operators were used with real < Less than
variables or real array variables. > Greater than
Examples:
A=2 <=, =< Less than or equal to
B = SQR (A!) >=, => Greater than or equal to
IF A! = B!*B ! THEN
:
In this case, A! will be unequal to Relational operators are used to compare 2 values. If the result is true, a “-1” is obtained.
B!*B!. If it is false, a “0” is obtained.
Example:
A=10>5
----------- Since 10 > 5 is true, A = -1.
24
9. Expressions and Operations
Logic operators are used to manipulate 1 or 2 values bit by bit. For example, the status of
an I/O port can be manipulated. Depending on the logic operation performed, the results
generated are either “0” or “1”. Logic operations with real numbers convert the values
into integers before they are executed.
Examples:
A%=NOT 13.05
----------- Each bit of 13 is reversed, and the result “–14” is assigned to
A%.
A%=3 AND 10
----------- The logical product of 3 and 10 is calculated (“1” is obtained
when both bits are “1”), and the result is assigned to A%, so
A% becomes 2.
A%=3 OR 10
----------- The logical sum of 3 and 10 is calculated (“1” is obtained
when either bit is “1”), and the result is assigned to A%, so
A% becomes 11.
A%=3 XOR 10
----------- The exclusive OR of 3 and 10 is calculated (“1” is obtained
when both bits are different from each other), and the result
is assigned to A%, so A% becomes 9.
Operations are performed in the above order of priority. When two operations of equal
priority appear in the same statement, the operations are executed in order from left to
right.
25
9. Expressions and Operations
1) When a real number is assigned to an integer, decimal places are rounded off.
Example: A %=125.67 ------------- A% = 126
2) When integers and real numbers are involved in the same operation, the result
becomes a real number.
Example: A (0) =125* 0.25 ------- A (0) =31.25
3) When an integer is divided by an integer, the result is an integer.
Example: A (0) =100/3 ------------- A (0) = 33
Examples:
A$=”YAMAHA”
B$=”ROBOT”
C$=”LANGUAGE”
D$=”MOUNTER”
E$=A$+” ”+B$+” ”+C$
F$=A$+” ”+D$
PRINT E$
PRINT F$
Examples:
”AA”<”AB”
”X&”>”X #”
”DESK"<”DESKS”
Character string comparison can be used to find out the contents of character strings, or to
sort character strings into alphabetical order.
26
9. Expressions and Operations
c InCAUTION
controllers whose software version
9.3 Point data format
is earlier than V8.28, the range of There are two types of point data formats: joint coordinate format and Cartesian coordinate
point numbers is from 0 to 4000.
format.
Point numbers are in the range of 0 to 9999.
a. Constant
Decimal integer constant, binary integer constant, hexadecimal integer constant
b. Variables
Global integer type, global real number type, input/output type
c. Operators
Relational operators, logic operators
d. Operation priority
1. Relational operators
2. NOT, ~
3. AND, &
4. OR, |, XOR
Example:
WAIT DI(31)=1 OR DI(34)=1
----------- The program waits until either DI31 or DI34 turns ON.
27
10. Multiple Robot Control
10.1 Overview
The YAMAHA robot controller can be used to control multiple robots.
The multitask function also enables multiple robots to move asynchronously. To use this
function, settings for two robots or settings for auxiliary axes must be made in the system
prior to shipment.
A main group is composed of one main robot and main auxiliary axes, and a sub group is
composed of one sub robot and sub auxiliary axes.
When using one robot without auxiliary axis, settings are made only for the main group
robot.
When no settings have been made for main auxiliary axes and sub auxiliary axes, the
main group is composed only of the one main robot, and the sub group is composed only
of the one sub robot.
Main group Main robot (Number of axes: 1 to 4)
(Number of axes: Main auxiliary axis (Number of axes: 1 to 4)
1 to 4)
28
10. Multiple Robot Control
29
11. Command Statements
ABSRST statement
Format:
ABSRST
Explanation:
This statement executes return-to-origin along the robot absolute motor axes. Return-to-
origin will fail if the robot stops en route.
In the case of two-robot setting, first the main robot group return-to-origin is run, then sub
n· NOTE
This command applies to axes whose
robot group run and finally absolute reset performed.
30
11. Command Statements
ACCEL statement
(Acceleration setting statement for main group)
Format 1:
2
ACCEL <expression>
Format 2:
n· NOTE
This command changes the
Explanation:
This statement changes the acceleration coefficient of the main group parameters to the
acceleration parameters for the main value specified in <expression>.
axes and auxiliary axes of the robot. Format 1 changes all axes in the main group. Format 2 changes the acceleration coefficient
· If an axis that is set to “no axis” in
the system generation is specified, of the axis specified in <expression 1> to the value specified in <expression 2>.
then an error message “Specification
mismatch” appears and execution of Example:
the command will stop. A=50
ACCEL A
ACCEL(3)=100
’CYCLE WITH INCREASING ACCELERATION
FOR A=10 TO 100 STEP 10
ACCEL A
MOVE P,P0
MOVE P,P1
NEXT A
HALT “END TEST”
31
11. Command Statements
ACCEL2 statement
(Acceleration setting statement for sub group)
Format 1:
2
ACCEL2 <expression>
Format 2:
n· This
NOTE
statement can be used only when
The value of <expression 1> must be from 1 to 4 (axis number).
The value of <expression> and <expression 2> must be from 1 to 100. (Unit: %)
the sub group is set in the system
generation.
· If an axis that is set to “no axis” in Explanation:
the system generation is specified, This command changes the acceleration coefficient of the sub group parameter to the
then an error message “Specification value specified in <expression>.
mismatch” appears and execution of
the command will stop.
Format 1 changes all axes in the sub group. Format 2 changes the acceleration coefficient
of the axis specified in <expression 1> to the value specified in <expression 2>.
Example:
A=50
ACCEL2 A
ACCEL2(3)=100
’CYCLE WITH INCREASING ACCELERATION
FOR A=10 TO 100 STEP 10
ACCEL2 A
MOVE2 P,P0
MOVE2 P,P1
NEXT A
HALT “END TEST”
32
11. Command Statements
ARCH statement
(Arch position setting statement for main group)
Format 1:
2
ARCH <expression>
Format 2:
n IfNOTE
an axis that is set to “no axis” in the
Explanation:
This statement changes the arch position parameter for the main group to the value specified
system generation is specified, then an in <expression>. Format 1 changes all axes of the main group. Format 2 changes the arch
error message “Specification position parameter for the axis specified in <expression 1> to the value specified in
mismatch” appears and execution of
the command will stop. <expression 2>.
Example:
’CYCLE WITH INCREASING ARCH POSITION
DIM SAV(3)
GOSUB *SAVE_ARCH
FOR A=1000 TO 10000 STEP 1000
GOSUB *CHANGE_ARCH
MOVE P,P0,Z=0
DO3(0)=1 --------- Chuck (or gripper) closes.
MOVE P,P1,Z=0
DO3(0)=0 --------- Chuck (or gripper) opens.
NEXT A
GOSUB *RESTORE_ARCH
HALT
*CHANGE_ARCH:
FOR B=1 TO 4
ARCH(B)=A
NEXT B
RETURN
*SAVE_ARCH:
FOR B=1 TO 4
SAV(B-1)=ARCH(B)
NEXT B
RETURN
*RESTORE_ARCH:
FOR B=1 TO 4
ARCH(B)=SAV(B-1)
NEXT B
RETURN
33
11. Command Statements
ARCH2 statement
(Arch position setting statement for sub group)
Format 1:
2
ARCH2 <expression>
Format 2:
n· NOTE
This statement can be used only when
The value of <expression 1> must be from 1 to 4 (axis number).
The value of <expression> and <expression 2> must be from 1 to 6144000. (Unit: pulses)
the sub group is set in the system
generation.
· If an axis that is set to “no axis” in Explanation:
the system generation is specified, This statement changes the arch position parameter for the sub group to the value specified
then an error message “Specification in <expression>. Format 1 changes all axes of the sub group. Format 2 changes the arch
mismatch” appears and execution of
the command will stop.
position parameter for the axis specified in <expression 1> to the value specified in
<expression 2>.
Example:
’CYCLE WITH INCREASING ARCH POSITION
DIM SAV(3)
GOSUB *SAVE_ARCH
FOR A=1000 TO 10000 STEP 1000
GOSUB *CHANGE_ARCH
MOVE2 P,P0,Z=0
DO3(0)=1 --------- Chuck (or gripper) closes.
MOVE2 P,P1,Z=0
DO3(0)=0 --------- Chuck (or gripper) opens.
NEXT A
GOSUB *RESTORE_ARCH
HALT
*CHANGE_ARCH:
FOR B=1 TO 4
ARCH2(B)=A
NEXT B
RETURN
*SAVE_ARCH:
FOR B=1 TO 4
SAV(B-1)=ARCH2(B)
NEXT B
RETURN
*RESTORE_ARCH:
FOR B=1 TO 4
ARCH2(B)=SAV(B-1)
NEXT B
RETURN
34
11. Command Statements
ASPEED statement
(Automatic movement speed setting statement for main group)
Format:
2
ASPEED <expression>
n· NOTE
This statement changes all the
The value of <expression> must be from 1 to 100. (Unit: %)
35
11. Command Statements
ASPEED2 statement
(Automatic movement speed setting statement for sub group)
Format:
2
ASPEED2 <expression>
n· NOTE
This command changes all the
The value of <expression> must be from 1 to 100. (Unit: %)
36
11. Command Statements
AXWGHT statement
(Axis tip weight setting statement for main group)
Format:
2
AXWGHT (<expression 1>) = <expression 2>
n· NOTE
This statement changes the axis tip
Explanation:
This statement changes the axis tip weight parameter for the main group axis specified in
weight parameter of a specified axis. <expression 1> to the value specified in <expression 2>.
· This statement is valid only for
“MULTI” axes or auxiliary axes of
the main robot. Example:
· Robot type and auxiliary axes are A=5
preset prior to shipping. B=0
C=AXWGHT(1) --------- Escape
AXWGHT(1)=A
DRIVE(1,P0)
AXWGHT(1)=B
DRIVE(1,P1)
AXWGHT(1)=C --------- Restore
HALT
37
11. Command Statements
AXWGHT2 statement
(Axis tip weight setting statement for sub group)
Format:
2
AXWGHT2 (<expression 1>) = <expression 2>
n· NOTE
This statement changes the axis tip
The value of <expression 1> must be from 1 to 4 (axis number).
weight parameter of a specified axis. The range of <expression 2> differs depending on the selected robot model.
· This statement is valid only for
“MULTI” axes or auxiliary axes of Explanation:
the sub robot.
· Robot type and auxiliary axes are
This statement changes the axis tip weight parameter for the sub group axis specified in
preset prior to shipping. <expression 1> to the value specified in <expression 2>.
Example:
A=5
B=0
C=AXWGHT2(1) --------Escape
AXWGHT2(1)=A
DRIVE2(1,P0)
AXWGHT2(1)=B
DRIVE2(1,P1)
AXWGHT2(1)=C --------Restore
HALT
38
11. Command Statements
CALL statement
Format:
39
11. Command Statements
CHGPRI statement
n· NOTE
The priority of task 1 (main task) is
Format:
2 32.
· The smaller the priority number, the
higher the priority level.
CHGPRI Tn, p
Explanation:
This statement changes the priority ( p ) of the specified task ( n ).
Example:
START *SUBTASK,T2,33
*ST:
MOVE P,P0,P1
IF DI(20) = 1 THEN
CHGPRI T2,32
ELSE
CHGPRI T2,33
ENDIF
GOTO *ST
HALT
’SUBTASK ROUTINE
*SUBTASK:
IF LOCZ(WHERE) > 10000 THEN
DO(20) = 1
GOTO *SUBTASK
ENDIF
DO(20) = 0
GOTO *SUBTASK
EXIT TASK
40
11. Command Statements
CUT statement
Format:
CUT Tn 2
n : task number 2 to 8
Explanation:
This statement terminates a task currently being executed or temporarily stopped.
This statement cannot terminate its own task.
Example:
’TASK1 ROUTINE
*ST:
MO(20) = 0
START *SUBTASK2,T2
MOVE P,P0
MOVE P,P1
WAIT MO(20) = 1
CUT T2
GOTO *ST
HALT
’TASK2 ROUTINE
*SUBTASK2:
P100=JTOXY(WHERE)
IF LOCZ(P100) >= 100.0 THEN
MO(20) = 1
ELSE
DELAY 100
ENDIF
GOTO *SUBTASK2
EXIT TASK
41
11. Command Statements
c The
CAUTION
DECEL statement is enabled
DECEL statement
only when the software version is
V8.15 or later.
(Deceleration setting statement for main group)
Format 1:
2 DECEL <expression>
Format 2:
n• NOTE
The deceleration set in the axis
Explanation:
This statement changes the deceleration rate of the main group parameter to the value
parameters for the robot specified in <expression>.
configuration axis and auxiliary axis
is changed.
Format 1 changes all axes in the main group. Format 2 changes the deceleration rate of
• If an axis that is set to "no axis" in the the axis specified in <expression 1> to the value specified in <expression 2>.
system generation is specified, then an
error message "Specification Example:
mismatch" appears and execution of A =50
the command will stop. DECEL A
DECEL(3)=100
'CYCLE WITH INCREASING DECELERATION
FOR A =10 TO 100 STEP 10
DECEL A
MOVE P ,P0
MOVE P ,P1
NEXT A
HALT "END TEST"
42
11. Command Statements
c The
CAUTION
DECEL2 statement is enabled
DECEL2 statement
only when the software version is
V8.15 or later.
(Deceleration setting statement for sub group)
Format 1:
DECEL2 <expression> 2
Format 2:
43
11. Command Statements
DECLARE statement
Format 1:
Format 2:
n· NOTE
External programs can only use
Explanation:
This statement declares that a label or sub-procedure is in an external program. In the
“COMMON”. case of a sub-procedure, the data type of the argument is also checked.
· Only the GOSUB, CALL, ON ~ The DECLARE statement can be written in programs other than the COMMON program
GOSUB statements can use external
labels. (but cannot be defined in a sub-procedure) and is effective over the entire program.
Example:
Labels shared with an external program.
Program name: DIST1
’===============================
’ MAIN PROGRAM
’===============================
DECLARE *DISTANCE,*AREA
X!=2.5
Y!=1.2
GOSUB *DISTANCE
GOSUB *AREA
HALT
Program name: COMMON
’===============================
’ ’COMMON’PROGRAM
’===============================
*DISTANCE:
PRINT X!^2+Y!^2
RETURN
*AREA:
PRINT X!*Y!
RETURN
44
11. Command Statements
Example:
Sub-procedures shared with an external program
Program name: DIST2
’===========================
’ MAIN PROGRAM
’===========================
DECLARE SUB *DISTANCE(X!,Y!,D!)
DECLARE SUB *AREA(X!,Y!,A!)
CALL *DISTANCE(2.5,1.2,REF D!)
2
PRINT D!
CALL *AREA(2.5,1.2,REF A!)
PRINT A!
HALT
Program name: COMMON
’===========================
’ ’COMMON’ PROGRAM
’===========================
SUB *DISTANCE(X!,Y!,D!)
D!=X!^2+Y!^2
END SUB
SUB *AREA(X!,Y!,A!)
A!=X!*Y!
END SUB
Related commands: CALL, EXIT SUB, GOSUB, ON~GOSUB, SUB, END SUB
45
11. Command Statements
DEF FN statement
Format:
2 DEF FN <name> [ % ] [(<dummy argument>, [< dummy argument >...]) ] = <function definition expression>
!
$
n· NOTE
You may specify numeral variables or
Explanation:
The DEF FN statement defines functions available to the user. The functions defined here
character type variables in the
can be called in the format of “FN name (variable)”.
<dummy arguments>.
· If a variable used in the <function The name can be up to 16 characters including the characters “FN”.
definition expression> is not included The <dummy arguments> are the names of the variables used in the <function definition
in the list of arguments, the value expression>. The names of these variables are effective only when the <function definition
assigned to that particular variable is
expression> is evaluated. There may be other variables with the same name in the program.
used for the calculation.
· Be sure to put a space between When calling a function that uses a <dummy argument>, specify the constant, variable or
“DEF”and “FN”, otherwise expression that has the same type as the <dummy argument> type.
“DEFFN” will be viewed as a
variable.
Example:
· The DEF FN statement cannot be
DEF FNPAI=3.141592
used within procedures.
DEF FNASIN(X)=ATN(X/SQR(-X^2+1))
· Definition by the DEF FN statement
·
must be declared before inserting
·
statements using functions.
A=FNASIN(B)*10
46
11. Command Statements
DELAY statement
Format:
DELAY <expression> 2
The value of <expression> must be from 1 to 3600000. (Unit: ms)
Explanation:
The DELAY statement allows the program to wait for the period of time (milliseconds)
specified by the <expression> before executing the next command. The minimum waiting
time is 10 milliseconds.
Example:
DELAY 3500
----------- Waits for 3500ms (3.5 seconds).
DELAY A*10
47
11. Command Statements
DIM statement
(Array variable declaration statement)
Format:
2
DIM <array definition> [, <array definition>, .....]
Array definition:
Explanation:
This statement declares the name and length (number of elements) of an array variable. A
maximum of 3 dimensions may be used for the array subscripts. Multiple arrays can be
declared in one line by differentiating them with a comma ( , ).
Examples:
DIM A%(10)
----------- Defines an integer array variable A%(0) to A%(10). (Number
n· The size of each dimension in an
NOTE of elements: 11)
DIM B(2,3,4)
array is equal to the DIM constant
----------- Defines a real array variable B(0, 0, 0) to B(2, 3, 4). (Number
+1. Each element of an array variable
begins with 0. of elements: 60)
· An error “Memory full” may occur DIM C%(2,2),D!(10)
depending on the size of each ----------- Defines an integer array C%(0,0) to C%(2,2) and a real array
dimension defined in an array. D!(0) to D!(10).
48
11. Command Statements
Format:
Explanation:
This statement outputs the specified value to the DO ports.
Examples:
n· NOTE
Output to the DO0 ( ) and DO1 ( )
DO2() = &B10111000
ports is not allowed. ----------- DO (27, 25, 24, 23) are turned ON, and DO (26, 22, 21, 20)
· Bits must be specified in ascending are turned OFF.
order from the right. DO2(6,5,1) = &B010
· External output is unavailable to DO ----------- DO (25) is turned ON, and DO (26, 21) are turned OFF.
ports not connected to hardware. DO3() = 15
----------- DO (33, 32, 31, 30) are turned ON, and DO (37, 36, 35, 34)
are turned OFF.
DO(37,35,27,20) = A
----------- The contents of the 4 lower bits obtained when variable A is
converted to an integer are output to DO (37, 35, 27, 20),
respectively.
49
11. Command Statements
DRIVE statement
Format:
Explanation:
The DRIVE statement executes an absolute movement of each axis in the main group,
including auxiliary axes in the main group.
Movement type : PTP movement on specified axis
Point data setting : Direct coordinate data input, point definition
Options : Speed setting, STOPON condition setting, torque limit setting, XY
setting
Movement type
· PTP (point to point) movement on specified axis
PTP movement begins after positioning on all axes specified in <expression 1> is complete
(within the tolerance range), and the command terminates when the specified axes enter
the OUT position range. When two or more axes are specified, they will reach their target
positions simultaneously.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM statement.
Example:
DRIVE(1,P0)
----------- Axis 1 moves from the current position to the point specified
by P0.
Examples:
DRIVE(1,10000)
----------- Axis 1 moves from the current position to the “10000 pulses”
position.
DRIVE(4,90.00)
----------- Axis 4 moves from the current position to the “+90 degrees”
position from the 0 pulse position. (When axis 4 is a rotating
axis.)
· Point definition
Specify the point expression in <expression 2>, while using the data for the axis specified
in <expression 1>.
The robot moves to the position determined by the units used for point expression. When
the units are viewed as “mm” or “deg”, the robot moves to the position converted for each
axis relative to the 0 pulse position.
50
11. Command Statements
n IfNOTE
point data is specified with both
Examples:
DRIVE(1,P1)
integers and real numbers in the same ----------- Axis 1 moves from the current position to the position
statement, all axes move in “mm” or specified by P1.
“deg” units. DRIVE(4,P90)
----------- Axis 4 moves from the current position to the position
specified by P90 (deg) relative to the 0 pulse position. (When
axis 4 is a rotating axis.)
2
Option types
· Speed setting
Format:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified DRIVE statement.
Example:
DRIVE(1,10000),S=10
----------- Axis 1 moves from the current position to the “10000 pulses”
position at 10% of normal program speed.
Explanation:
This command option stops the robot movement when the conditional expression is met.
The robot will move a slight distance while slowing down before coming to a stop after
the condition is met.
If the conditional expression is already satisfied before the robot begins to move, the
command will terminate without moving the robot. This option is enabled only during
program execution.
Example:
DRIVE(1,10000),STOPON DI(20)=1
----------- Axis 1 moves from the current position to the “10000 pulses”
position and stops when the condition “DI (20) = 1” is met.
51
11. Command Statements
c· CAUTION
The torque offset setting is enabled
T = <expression 1>
only when the software version is
2 V8.18 or later.
· The torque limit setting range differs
Format 2:
depending on the robot model, so
always set the torque limit within the T = (<expression 1> [,<expression 2>] )
specified range. Setting a torque
limit higher than the maximum level The value of <expression 1> is the torque limit and must be from 1 to 100.
may cause robot malfunctions or
The value of <expression 2> is the torque offset and must be from -100 to 100.
breakdowns. To find the torque limit
setting range for each robot, refer to
the robot owner's manual. Explanation:
· If any points about the torque setting The robot moves at a torque specified by “rated torque” × <expression 1> / 100 as the
are unclear then please contact our
maximum torque setting. After the time specified to reach a target position has elapsed,
sales office.
the movement command terminates when the target position is reached or when the
specified torque value has been held for 1 seconds.
The value of <expression 2> determines the torque offset for compensating a load constantly
applied, for example, to a vertical axis. When using this command option, display the
current command monitor (see "13. MONITOR mode" in the robot controller owner's
manual) while the robot is stopped with the axis servo turned on, and check the torque
value being constantly generated. Specify the checked value in <expression 2>. If
<expression 2> is omitted, then the offset is set to "0".
52
11. Command Statements
Examples 1:
DRIVE(3,P0)
----------- Axis 3 moves from the current position to the position
specified by P0.
DRIVE(3,P1),T=50
----------- Axis 3 moves from the current position to the position
WAIT ARM(3)
specified by P1 at 50% of rated torque. 2
----------- Monitors movement and stopping of axis 3.
IF MO(12)=1 THEN
----------- Checks the current mode of axis 3.
TORQUE(3)=100
----------- Sets the torque on axis 3 to a maximum (100%) since the
target position was reached.
ELSE
DRIVE(3,P0),T=50
----------- Axis 3 moves from the current position to the point specified
by P0 at 50% of rated torque.
WAIT MO(12) = 1
----------- Waits until axis 3 is held (at the target position).
TORQUE(3)=100
----------- Sets the torque on axis 3 to a maximum (100%).
ENDIF
Examples 2:
DRIVE(3,P2),T=(50,20)
· XY setting
Format:
XY
Explanation:
This option moves the specified multiple axes to the position specified on the XY
coordinates.
The following are limitation items when using this command option.
1. Axes specified in <expression 1> must include axes 1 and 2.
2. Robots that can be specified with this option are SCARA robots and Cartesian
robots.
3. Point setting must be in “mm” or “deg” units (real number setting).
Examples:
DRIVE(1,P100),(2,P100),(4,P100),XY
----------- Axes 1, 2 and 4 move from the current position to the position
on the XY coordinates specified by P100.
53
11. Command Statements
DRIVE2 statement
Format:
Explanation:
The DRIVE2 statement executes an absolute movement of each axis in the sub group,
including auxiliary axes in the sub group.
Movement type : PTP movement on specified axis
Point data setting : Direct coordinate data input, point definition
Options : Speed setting, STOPON condition setting, torque limit setting, XY
setting
Movement type
· PTP (point to point) movement on specified axis
PTP movement begins after positioning on all axes specified in <expression 1> is complete
(within the tolerance range), and the command terminates when the specified axes enter
the OUT position range. When two or more axes are specified, they will reach their target
positions simultaneously.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM2 statement.
Example:
DRIVE2(1,P0)
----------- Axis 1 moves from the current position to the point specified
by P0.
Examples:
DRIVEI2(1,10000)
----------- Axis 1 moves from the current position to the “10000 pulses”
position.
DRIVEI2(2,90.00)
----------- Axis 2 moves from the current position to the point at +90
degrees from the 0 pulse position. (When axis 2 is a rotating
axis.)
· Point definition
Specify the point expression in <expression 2>, while using the data for the axis specified
in <expression 1>.
The robot moves to the position determined by the units used for point expression. When
the units are viewed as “mm” or “deg”, the robot moves to the position converted for each
axis relative to the 0 pulse position.
54
11. Command Statements
n IfNOTE
point data is specified with both
Examples:
DRIVE2(1,P1)
integers then all real numbers in the ----------- Axis 1 moves from the current position to the position
same statement, then all axes move in specified by P1.
“mm” or “deg” units. DRIVE2(4, P90)
----------- Axis 2 moves from the current position to the position
specified (degrees) by P90 relative to the 0 pulse position.
(When axis 2 is a rotating axis.)
2
Option types
· Speed setting
Format:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified DRIVE2 statement.
Example:
DRIVE2(1,10000),S=10
----------- Axis 1 moves from the current position to the “10000 pulses”
position at 10% of normal program speed.
Explanation:
This command option stops the robot movement when the conditional expression is met.
The robot will move a slight distance while slowing down before coming to a stop after
the condition is met.
If the conditional expression is already satisfied before the robot begins to move, the
command will terminate without moving the robot. This option is enabled only during
program execution.
Example:
DRIVE2(1,10000),STOPON DI(20)=1
----------- Axis 1 moves from the current position to the “10000 pulses”
position and stops when the condition “DI (20) = 1” is met.
55
11. Command Statements
c· CAUTION
The torque offset setting is enabled
T = <expression 1>
only when the software version is
2 V8.18 or later.
· The torque limit setting range differs
Format 2:
depending on the robot model, so
always set the torque limit within the T = (<expression 1> [,<expression 2>] )
specified range. Setting a torque
limit higher than the maximum level The value of <expression 1> is the torque limit and must be from 1 to 100.
may cause robot malfunctions or
The value of <expression 2> is the torque offset and must be from -100 to 100.
breakdowns. To find the torque limit
setting range for each robot, refer to
the robot owner's manual. Explanation:
· If any points about the torque setting The robot moves at a torque specified by “rated torque” × <expression 1> / 100 as the
are unclear then please contact our
maximum torque setting. After the time specified to reach a target position has elapsed,
sales office.
the movement command terminates when the target position is reached or when the
specified torque value has been held for 1 seconds.
The value of <expression 2> determines the torque offset for compensating a load constantly
applied, for example, to a vertical axis. When using this command option, display the
current command monitor (see "13. MONITOR mode" in the robot controller owner's
manual) while the robot is stopped with the axis servo turned on, and check the torque
value being constantly generated. Specify the checked value in <expression 2>. If
<expression 2> is omitted, then the offset is set to "0".
56
11. Command Statements
Examples 1:
DRIVE2(2, P0)
----------- Axis 2 moves from the current position to the point specified
by P0.
DRIVE2(2, P1),T=50
----------- Axis 2 moves from the current position to the point specified
WAIT ARM2(2)
by P1 at 50% of rated torque. 2
----------- Monitors movement and stopping of axis 2.
IF MO(13)=1 THEN
----------- Checks the current mode of axis 2.
TORQUE2(2)=100
----------- Sets the torque on axis 2 to a maximum (100%) because the
target position was reached.
ELSE
DRIVE2(2,P0),T=50
----------- Axis 2 moves from the current position to the point specified
by P0 at 50% of rated torque.
WAIT MO(13)=1
----------- Waits until axis 2 is held (at the target position).
TORQUE2(2)=100
----------- Sets the torque on axis 2 to a maximum (100%).
ENDIF
Examples 2:
DRIVE2(2, P2),T=(50,20)
· XY setting
Format:
XY
Explanation:
This option moves the specified multiple axes to the position specified on the XY
coordinates.
Comply with the following conditions when using this command option.
1. Axes specified in <expression 1> must include axes 1 and 2.
2. Robots that can be specified with this option are SCARA robots and Cartesian
robots.
3. Point setting must be in “mm” or “deg” units (real number setting).
Examples:
DRIVE2(1,P100),(2,P100), XY
----------- Axes 1 and 2 move from the current position to the position
on the XY coordinates specified by P100.
57
11. Command Statements
DRIVEI statement
Format:
Explanation:
c IfCAUTION
the robot is stopped during
The DRIVEI statement executes a relative movement of each axis in the main group,
including auxiliary axes in the main group.
execution of the DRIVEI statement
and then restarted, the robot will
Movement type : PTP movement on specified axis
move the specified distance from the Point data setting : Direct coordinate data input, point definition
stopped position. Options : Speed setting, STOPON condition setting
Movement type
· PTP (point to point) movement on specified axis
PTP movement begins after positioning on all axes specified in <expression 1> is complete
(within the tolerance range), and the command terminates when the specified axes enter
the OUT position range. When two or more axes are specified, they will reach their target
positions simultaneously.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM statement.
Example:
DRIVEI(1,P0)
----------- Axis 1 moves a distance specified by P0 from the current
position.
Examples:
DRIVEI(1,10000)
----------- Axis 1 moves a distance “+10000 pulses” from the current
position.
DRIVEI(4,90.00)
----------- Axis 4 moves through “+90 degrees” from the current
position. (When axis 4 is a rotating axis.)
· Point definition
Specify the point expression in <expression 2>, while using the data for the axis specified
in <expression 1>.
The robot moves to the position determined by the units used for point expression. When
the units are viewed as “mm” or “deg”, the robot moves a certain distance converted for
each axis.
Examples:
DRIVEI(1, P1)
----------- Axis 1 moves a distance specified by P1 from the current
n If point data is specified with both
NOTE
DRIVEI(4, P90)
position.
integers and real numbers in the same ----------- Axis 4 moves a distance (degrees) specified by P90 from the
statement, then all axes move in “mm”
current position. (When axis 4 is a rotating axis.)
or “deg” units.
58
11. Command Statements
Option types
· Speed setting
Format:
SPEED = <expression>
S 2
The value of <expression> must be from 1 to 100. (Unit: %)
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified DRIVEI statement.
Example:
DRIVEI(1,10000),S=10
----------- Axis 1 moves a distance “+10000 pulses” from the current
position at 10% of normal program speed.
Explanation:
This command option stops the robot movement when the conditional expression is met.
The robot will move a slight distance while slowing down before coming to a stop after
c When
CAUTION
execution of the DRIVEI the condition is met.
statement is halted with the STOPON If the conditional expression is already satisfied before the robot begins to move, the
option, executing the DRIVEI command will terminate without moving the robot. This option is enabled only during
statement again on the same axis
program execution.
moves the robot the specified distance
from the stopped position.
When executing consecutive relative Example:
movement commands, take DRIVEI(1,10000),STOPON DI(20)=1
precautions to prevent the moving ----------- Axis 1 moves a distance “+10000 pulses” from the current
sections of the robot from bumping or
position and stops when the condition “DI (20) = 1” is met.
binding on each other.
59
11. Command Statements
DRIVEI2 statement
Format:
Explanation:
c IfCAUTION
the robot is stopped during
The DRIVEI2 statement executes a relative movement of each axis in the sub group,
including auxiliary axes in the sub group.
execution of the DRIVEI2 statement Movement type : PTP movement on specified axis
and then restarted, the robot will Point data setting : Direct coordinate data input, point definition
move the specified distance from the
stopped position. Options : Speed setting, STOPON condition setting
Movement type
· PTP (point to point) movement on specified axis
PTP movement begins after positioning on all axes specified in <expression 1> is complete
(within the tolerance range), and the command terminates when the specified axes enter
the OUT position range. When two or more axes are specified, they will reach their target
positions simultaneously.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM2 statement.
Example:
DRIVEI2(1,P0)
----------- Axis 1 moves a distance specified by P0 from the current
position.
Examples:
DRIVEI2(1,10000)
----------- Axis 1 moves from the current position to the “+10000 pulses”
position.
DRIVEI2(2,90.00)
-------- --- Axis 2 moves from the current position to the “+90 degrees”
position. (When axis 2 is a rotating axis.)
· Point definition
Specify the point expression in <expression 2>, while using the data for the axis specified
in <expression 1>.
The robot moves to the position determined by the units used for point expression. When
the units are viewed as “mm” or “deg”, the robot moves a certain distance converted for
each axis.
Examples:
DRIVEI2(1,P1)
n If point data is specified with both
NOTE ----------- Axis 1 moves a distance specified by P1 from the current
position.
integers and real numbers in the same
DRIVEI2(2,P90)
statement, then all axes move in “mm”
or “deg” units. ----------- Axis 2 moves a distance specified by P90 (degrees) from the
current position. (When axis 2 is a rotating axis.)
60
11. Command Statements
Option types
· Speed setting
Format:
SPEED = <expression>
S 2
The value of <expression> must be from 1 to 100. (Unit: %)
Explanation:
Specify the program speed in <expression>. Robot operatimg speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified DRIVEI2 statement.
Example:
DRIVEI2(1,10000),S=10
----------- Axis 1 moves a distance “+10000 pulses” from the current
position at 10% of normal program speed.
Explanation:
This command option stops the robot movement when the conditional expression is met.
c When
CAUTION
execution of the DRIVEI2
The robot will move a slight distance while slowing down before coming to a stop after
the condition is met.
statement is halted with the STOPON If the conditional expression is already satisfied before the robot begins to move, the
option, executing the DRIVEI2 command will terminate without moving the robot. This option is enabled only during
statement again on the same axis
moves the robot the specified distance program execution.
from the stopped position.
When executing consecutive relative Example:
movement commands, take DRIVEI2(1,10000),STOPON DI(20)=1
precautions to prevent the moving ----------- Axis 1 moves a distance “+10000 pulses” from the current
sections of the robot from bumping or
binding on each other. position, and stops when the condition “DI (20) = 1” is met.
61
11. Command Statements
Format:
2 EXIT FOR
Explanation:
The EXIT FOR statement terminates the loop of the FOR and NEXT statements and then
jumps to the command following the NEXT statement.
This statement is valid only between the FOR and NEXT statements.
Example:
*ST:
WAIT DI(20)=1
FOR A%=101 TO 109
MOVE P,P100,Z=0
DO(20)=1
n The
NOTE
loop of the FOR and NEXT
MOVE P,P[A%],Z=0
DO(20)=0
IF DI(20)=0 THEN EXIT FOR
statements will end when the FOR
NEXT A%
statement condition is satisfied or the
GOTO *ST
EXIT FOR statement is executed. If
HALT
another statement such as GOTO is
used to jump out of the loop, an error
such as “Stack overflow” may occur. Related commands: FOR, NEXT
62
11. Command Statements
Format:
EXIT SUB 2
Explanation:
The EXIT SUB statement terminates the sub-procedure defined by the SUB and END
SUB statements and then jumps to the next command in the CALL statement that called
up the sub-procedure.
This statement is valid only within the sub-procedure defined by the SUB and END SUB
statements.
Example:
’MAIN ROUTINE
CALL *SORT2(REF X%,REF Y%)
n ToNOTE
end the sub-procedure defined by
HALT
’SUB ROUTINE: SORT
the SUB and END SUB statements, use SUB *SORT2(X%, Y%)
the END SUB statement or EXIT SUB IF X%>=Y% THEN EXIT SUB
statement. If another statement such as TMP%=Y%
GOTO is used to jump out of the sub- Y%=X%
procedure, an error such as “Stack X%=TMP%
overflow” may occur. END SUB
63
11. Command Statements
Format:
2 EXIT TASK
Explanation:
This statement terminates its own task currently being executed.
This statement is valid for all tasks other than task 1.
Example:
’TASK1 ROUTINE
*ST:
MO(20)=0
START *SUBTASK2,T2
MOVE P,P0,P1
WAIT MO(20)=1
GOTO *ST
HALT
’TASK2 ROUTINE
*SUBTASK2:
P100=JTOXY(WHERE)
IF LOCZ(P100)>=100.0 THEN
n IfNOTE
a task that has started as a subtask
MO(20)=1
EXIT TASK
jumps to another task processing ENDIF
routine with a statement such as GO DELAY 100
TO, that processing routine is then GOTO *SUBTASK2
executed as this subtask processing. EXIT TASK
64
11. Command Statements
Format:
FOR <control variable> = <expression 1> TO <expression 2> [STEP <expression 3>]
<command block>
2
NEXT [<control variable>]
n· NOTE
If the value of <expression 3> in the
Explanation:
These statements repeatedly execute commands between the FOR and NEXT statements
FOR statement is 1, then STEP for the number of times equal to the difference between <expression 1> and <expression
<expression 3> can be omitted. 2>, while changing the value of <control variable> in steps specified by <expression 3>.
· The FOR and NEXT statements must
always be used together as a set. The value of <expression 3> may be either positive or negative.
The value of <control variable> must be a numeric <simple variable> or <array variable>.
Examples:
’CYCLE WITH CYCLE NUMBER OUTPUT TO DISPLAY
FOR A=1 TO 10
MOVE P,P0
MOVE P,P1
MOVE P,P2
PRINT “CYCLE NUMBER=”;A
NEXT A
HALT
65
11. Command Statements
Format:
2 GOSUB
GO SUB
<label>
<command block>
<label> :
<command block>
RETURN
Explanation:
The GOSUB statement makes a jump to the subroutine of <label> defined by the GOSUB
statement.
When a RETURN statement is found in the subroutine, a jump is made to the next line in
the GOSUB statement.
n· NOTE
The GOSUB statement can be used up
Example:
*ST:
to 29 times in succession. MOVE P,P0
Note that the number of times will GOSUB *CLOSEHAND
drop if commands containing a stack MOVE P,P1
such as an IF statement or CALL GOSUB *OPENHAND
statement are used. GOTO *ST
· When a jump to a subroutine was HALT
made with the GOSUB statement, ’SUB ROUTINE
always use the RETURN statement to *CLOSEHAND:
end the subroutine. If another DO(20) = 1
statement such as GOTO is used to RETURN
jump out of the subroutine, an error *OPENHAND:
such as “Stack overflow” may occur. DO(20) = 0
RETURN
66
11. Command Statements
GOTO statement
Format:
GOTO
GO TO
<label>
2
Explanation:
This statement makes an unconditional jump to the line specified in <label>.
Example:
’MAIN ROUTINE
*ST:
MOVE P,P0,P1
IF DI(20) = 1 THEN
GOTO *FIN
ENDIF
GOTO *ST
*FIN:
HALT
67
11. Command Statements
HALT statement
Format:
2 HALT [ <expression>
<character string>
]
Explanation:
This statement stops the program and resets it. The program will run again the beginning
when restarted.
n· IfNOTE
an <expression> or <character
Examples:
’MAIN ROUTINE
string> is written in the statement, the *ST:
contents of the <expression> or MOVE P,P0,P1
<character string> are displayed on IF DI(20) = 1 THEN
the MPB screen. GOTO *FIN
· If a program name “_SELECT” exists ENDIF
among the programs that were GOTO *ST
created, then the selected program *FIN:
will switch to “_SELECT”. HALT “PROGRAM FIN”
68
11. Command Statements
These statements are used to define or switch the main robot hands.
n : 0 to 3
a. If the 4th parameter “R” is not specified, then hands installed on the second arm
tip are selected (see below).
<1st parameter> : Number of offset pulses between the standard second arm
position and the imaginary second arm position of hand “n”.
[pulse] (The “+” number indicates the counterclockwise di-
rection.)
<2nd parameter> : Difference between the imaginary second arm length of hand
“n” and the standard second arm length. [mm]
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
Hand1 Hand2
20.00mm
es
0puls
-500
m
m
00
0.
nd
15
h o
gt ec
s
len rd
m a
ar tand
s
(1) Y
(2) Y
X X
69
11. Command Statements
b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, those
hands that are offset from the R-axis rotating center are selected (see below).
<1st parameter> : When the current position of R-axis is 0.00, this parameter
shows the angle of hand “n” from the X-axis plus direction
of a Cartesian coordinate system. [degree] (The “+” number
2 indicates the counterclockwise direction.)
<2nd parameter> : Length of hand “n”. [mm] (>0)
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
standard second
arm length 150.00mm
X
Hand1
-90.00degrees
100.00mm Hand2
(2)
(1) Y Y
Hand1 Hand2
X
X
70
11. Command Statements
Definition statement:
HAND Hn = <1st parameter> <2nd parameter> <3rd parameter> [R]
Selection statement:
CHANGE Hn 2
n: 0 to 3
a. If the 4th parameter “R” is not specified, hands installed on the second arm tip are
selected (see below).
<1st parameter> : X-axis offset value for hand “n”. [mm]
<2nd parameter> : Y-axis offset value for hand “n”. [mm]
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
X
Hand2
-100.00mm
Hand1
100.00mm
Y
HAND H1= 0.00 0.00 0.00
HAND H2= 100.0 -100.0 -100.0
P1=200.00 250.00 0.00 0.00 0.00 0.00
CHANGE H2
MOVE P,P1 --------- The tip of hand 2 moves to P1. (1)
CHANGE H1
MOVE P,P1 --------- The tip of hand 1 moves to P1. (2)
HALT
(1) (2)
X X
Hand2 Hand1
Y Y
71
11. Command Statements
b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, those
hands that are offset from the R-axis rotating center are selected (see below).
<1st parameter> : When the current position of R-axis is 0.00, this parameter
shows the angle of hand “n” along the X-axis plus direction
of a Cartesian coordinate system. [degree] (The “+” number
2 indicates the counterclockwise direction.)
<2nd parameter> : Length of hand “n”. [mm] (> 0)
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
(R-axis position is 0.00)
Hand1
150.00mm 90degrees
Hand2
100.00mm
Y
HAND H1= 0.00 100.00 0.00 R
HAND H2= 90.00 150.00 0.00 R
P1=200.00 250.00 0.00 0.00 0.00 0.00
CHANGE H2
MOVE P,P1 --------- The tip of hand 2 moves to P1. (1)
CHANGE H1
MOVE P,P1 --------- The tip of hand 1 moves to P1. (2)
(1) (2)
c IfCAUTION
power is turned off during X X
execution of a hand definition
statement, an error “9.7: Hand data
destroyed” may occur. Hand2 Hand1
Y Y
72
11. Command Statements
These statements are used to define or switch the sub robot hands.
n : 4 to 7
n This
NOTE
statement can be used only when
a. If the 4th parameter “R” is not specified, those hands installed on the second arm
tip are selected (see below).
the sub group is set in the system
generation. <1st parameter> : Number of offset pulses between the standard second arm
position and the imaginary second arm position of hand “n”.
[pulse] (The “+” number indicates the counterclockwise di-
rection.)
<2nd parameter> : Difference between the imaginary second arm length of hand
“n” and the standard second arm length. [mm]
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
Hand5 Hand6
20.00mm
es
0puls
m
-500
m
00
0.
nd
15
h o
gt sec
len rd
m a
ar tand
s
(1) Y
(2) Y
X X
73
11. Command Statements
b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, those
hands that are offset from the R-axis rotating center are selected (see below).
<1st parameter>: When the current position of R-axis is 0.00, this parameter
shows the angle of hand “n” along the X-axis plus direction
of a Cartesian coordinate system. [degree] (The “+” number
2 indicates the counterclockwise direction.)
<2nd parameter>: Length of hand “n”. [mm] (>0)
<3rd parameter>: Z-axis offset value for hand “n”. [mm]
Examples:
HAND2 H5= 0.00 150.00 0.0 R
HAND2 H6= -90.00 100.00 0.0 R
standard second
arm length 150.00mm
X
Hand5
-90.00degrees
100.00mm Hand6
(2)
(1) Y Y
Hand5 Hand6
X
X
74
11. Command Statements
Definition statement:
HAND 2 Hn = <1st parameter> <2nd parameter> <3rd parameter> [R]
Selection statement:
CHANGE2 Hn 2
n : 4 to 7
a. If the 4th parameter “R” is not specified, hands installed on the second arm tip are
selected (see below).
<1st parameter> : X-axis offset value for hand “n”. [mm]
<2nd parameter> : Y-axis offset value for hand “n”. [mm]
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
X
Hand6
-100.00mm
Hand5
100.00mm
Y
HAND2 H5= 0.00 0.00 0.00
HAND2 H6= 100.0 -100.0 -100.0
P1=200.00 250.00 0.00 0.00 0.00 0.00
CHANGE2 H6
MOVE2 P,P1 --------- The tip of hand 6 moves to P1. (1)
CHANGE2 H5
MOVE2 P,P1 --------- The tip of hand 5 moves to P1. (2)
HALT
(1) (2)
X X
Hand6 Hand5
Y Y
75
11. Command Statements
b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, those
hands that are offset from the R-axis rotating center are selected (see below).
<1st parameter> : When the current position of R-axis is 0.00, this parameter
shows the angle of hand “n” along the X-axis plus direction
of a Cartesian coordinate system. [degree] (The “+” number
2 indicates the counterclockwise direction.)
<2nd parameter> : Length of hand “n”. [mm] (> 0)
<3rd parameter> : Z-axis offset value for hand “n”. [mm]
(R-axis position is 0.00)
Hand5
150.00mm 90degrees
Hand6
100.00mm
Y
HAND2 H5= 0.00 100.00 0.00 R
HAND2 H6= 90.00 150.00 0.00 R
P1=200.00 250.00 0.00 0.00 0.00 0.00
CHANGE2 H6
MOVE2 P,P1 --------- The tip of hand 6 moves to P1. (1)
CHANGE2 H5
MOVE2 P,P1 --------- The tip of hand 5 moves to P1. (2)
HALT
(1) (2)
X X
c IfCAUTION
power is turned off during
execution of a hand definition Hand6 Hand5
statement, an error “9.7: Hand data
destroyed” may occur. (200.00, 250.00) (200.00, 250.00)
Y Y
76
11. Command Statements
HOLD statement
Format:
HOLD [ <expression>
<character string>
]
2
Explanation:
This statement temporarily pauses execution of the program. When the program is re-
executed, it begins from the line following the HOLD statement.
Example:
’MAIN ROUTINE
*ST:
n IfNOTE
an <expression> or <character
MOVE P,P0,P1
IF DI(20)=1 THEN
string> is written in the statement, the HOLD “PROGRAM STOP”
contents of the <expression> or ENDIF
<character string> are displayed on GOTO *ST
the MPB screen. HALT
77
11. Command Statements
IF statement
a. Simple IF statement
Format 1:
2 IF <conditional expression> THEN <label 1> [ELSE <label 2> ]
<statement 1> <statement 2>
Explanation:
When the condition specified by <conditional expression> is met, this statement allows a
jump to the line specified by <label 1> or executes the <statement 1> and jumps to the
next line. If the condition is not met, the command jumps to the line specified by <label
2> or executes the <statement 2> and then jumps to the next line.
Example:
’MAIN ROUTINE
*ST:
MOVE P,P0,P1
IF DI(20)=1 THEN *L1
DO(20)=1
DELAY 100
*L1:
IF DI(21)=1 THEN *ST ELSE *FIN
*FIN:
HALT
78
11. Command Statements
b. Block IF statement
n• The IF statement can be used up to 48
NOTE Format 2:
Explanation:
If the condition specified by <conditional expression 1> is met, this statement executes
the instructions specified in <command block 1> and makes a jump to the line under
ENDIF. When an ELSEIF statement is present and the condition specified by <conditional
expression 2> is met, the instructions specified in <command block 2> are executed.
Unless all conditions specified by <conditional expression n> are satisfied, the instructions
specified in <command block n> are executed and a jump is made to the line under ENDIF.
Example:
’MAIN ROUTINE
*ST:
MOVE P,P0,P1
IF DI(21,20)=1 THEN
DO(20)= 1
DELAY 100
WAIT DI(20)=0
ELSEIF DI(21,20)=2 THEN
DELAY 100
ELSE
GOTO *FIN
ENDIF
GOTO *ST
*FIN:
HALT
79
11. Command Statements
INPUT statement
Format:
Explanation:
This statement assigns a value to the variable specified by the MPB. The input definitions
are as follows:
1. When two or more variables are specified by separating them with a comma ( , ),
the specified pieces of input data must also be separated with a comma ( , ).
2. In <prompt statement>, enter a character string enclosed in quotation marks (“ ”)
that will appear as a message requiring data input. When a semicolon ( ; ) is entered
following the prompt statement, a question mark ( ? ) and a space will appear at the
end of the message. When a comma ( , ) is entered, nothing will be displayed
following the message.
3. When <prompt statement> is omitted, only a question mark ( ? ) and a space will
be displayed.
4. The input data type must match the type of the corresponding variables. When
data is input to a point variable or shift variable, insufficient elements are set to
“0”.
5. If only the Enter key is pressed without making any entry, the program has
determined that “0” or “null string” was input. However, if specifying two or more
variables, a comma ( , ) must be used to separate them.
6. If the specified variable is a character type and you want to enter a significant
space before and after a comma ( , ), double quotation mark ( “ ) or character
n· NOTE
If assignment data type differs from
string, the character variable must be enclosed in double quotation marks ( “ ).
Note in this case, you must enter two double quotation marks in succession so that
type of variable, a message “? Input they will be identified as a double quotation mark input.
again” appears and awaits data
input. 7. Pressing the ESC key skips input of this statement.
· When assigning alphabetic characters
and numbers to a character variable, Example:
enclosing the character string in
INPUT A
double quotation marks ( “ ) is not
INPUT ”INPUT POINT NUMBER”;A1
necessary.
INPUT ”INPUT STRING”,B$(0),B$(1)
INPUT P100
HALT
80
11. Command Statements
Format:
n IfNOTE
the controller power is turned off
[LET] <arithmetic statement >
2
during execution of a point assignment <character string assignation statement >
statement or shift assignment <point data assignation statement >
statement, a memory-related error
such as “Point data destroyed” and <shift data assignation statement >
“Shift data destroyed” may occur.
Explanation:
The LET statement executes the specified assignment statement.
a. Arithmetic statement
Format:
Explanation:
The value of <expression> is assigned to the variable on the left side.
Example:
A!=B!+1
B%(1,2,3)=INT(10.88)
LOCZ(P0)=A!
LOCX(S1)=100.00
DO2()=&B00101101
MO(21,20)=2
LO(00)=1
TO(01)=0
SO12()=255
81
11. Command Statements
2 Explanation:
The value of <character string expression> is assigned to the character string variable.
n Only
NOTE
“+” sign can be used as
Example:
A$ = “YAMAHA”
arithmetic operators in <character B$ = “ROBOT”
string expression>. Other arithmetic D$ = A$ + “-“ + B$
operators and parentheses cannot be
used.
c. Point assignment statement
Format:
Explanation:
The value of <shift expression> is assigned to the shift variable.
n· NOTE
Only “+” and “-“ signs can be used Example:
as arithmetic operators in <shift S1=S1
expression>. Other arithmetic ----------- Shift 0 is assigned to shift 1.
operators and parentheses cannot be S2=S1+S0
used. ----------- Each element of shift 1 and shift 0 are summed and assigned
· The only element that can be used in
to shift 2.
<shift expression> is a shift element.
Invalid example: S 1 + 3
82
11. Command Statements
Format:
Explanation:
This statement outputs the specified value to the LO port to prohibit axis movement or
allow axis movement.
LO(00) to LO(07) respectively correspond to axes 1 to 8. Axis movement is prohibited in
ON status.
n· NOTE
This statement can be used for the
Example:
LO0()=&B00001010
axis that starts to move. ----------- Prohibits movement of axes 2 and 4.
· Bits must be specified in ascending LO0(2,1)=&B10
order from the right. ----------- Prohibits movement of axis 3.
83
11. Command Statements
Format:
Explanation:
This statement outputs the specified value to the MO ports.
n· NOTE
Output to the MO0 ( ) and MO1 ( )
Examples:
MO2()=&B10111000
ports is not allowed. ----------- MO (27, 25, 24, 23) are turned ON, and MO (26, 22, 21, 20)
· The output status of origin sensors for are turned OFF.
axes 1 to 8 (in order from bit 0) is
MO2(6,5,1)=&B010
available to the MO0 ( ) port. Each
bit sets to “1” when the origin sensor ----------- MO (25) is turned ON, and MO (26, 21) are turned OFF.
turns ON, and to “0” when OFF. MO3() = 15
· The HOLD status of axes 1 to 8 (in ----------- MO (33, 32, 31, 30) are turned ON, and MO (37, 36, 35, 34)
order from bit 0) is output to the MO1 are turned OFF.
( ) port. Each bit sets to “1” when the MO(37,35,27,20)=A
axis is in a HOLD status, and to “0” ----------- The contents of the 4 lower bits obtained when variable A is
when not. Being in HOLD status
means that the axis has already converted to an integer are output to MO (37, 35, 27, 20),
reached the target position. respectively.
· Bits must be specified in ascending
order from the right. Related commands: RESET, SET
84
11. Command Statements
MOVE statement
(Absolute position movement command)
Format:
2
MOVE PTP , <point definition> [, option [, option] … ]
P
L
C
Explanation:
This statement executes an absolute movement of main robot axes. This statement will
not move the sub robot axes and auxiliary axes.
Movement type : PTP, linear interpolation, circular interpolation
Point data setting : Direct coordinate data input, point definition
Options : Speed setting, arch motion setting, STOPON condition
setting, CONT setting, acceleration setting, deceleration
setting, coordinate plane setting, port output setting
Movement type
· PTP (point to point) movement
PTP movement begins after positioning on all movable axes is complete (within the
tolerance range), and the command terminates when all movable axes enter the OUT
position range. All movable axes will reach the target positions simultaneously, but their
paths are not guaranteed.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM statement.
Example:
MOVE P,P0
MOVE PTP,P0
----------- Main robot axes move from the current position to the position
specified by P0.
85
11. Command Statements
n· Linear
NOTE
interpolation can be
Example:
MOVE L,P0,P1
performed by task 1 only. ----------- Main robot axes move from the current position to the position
· Smooth travel paths might not always specified by P0 and then to the position specified by P1.
be possible depending on the axis
movement speed, acceleration and P0 P1
n· The
NOTE
movable range for circular
Example:
MOVE L,P20
interpolation is 5000.00mm to MOVE C,P21,P22,P23,P20
1.00mm in radius. MOVE L,P24
· Circular interpolation can be ----------- Moves linearly from the current position to P20, then moves
performed by task 1 only.
along a circle formed by points P20, P21, P22, P23 and P20,
· Circular interpolation must be
specified by an even number of points. and moves again linearly to P24.
· Circular arc may become distorted
depending on the axis movement P22
speed, acceleration and the circular
arc radius.
· On robots having an R-axis, the R- P23 P21
axis speed may become too fast and
cause an error depending on the R-
axis movement distance. Current position P20 P24
X Y Z R A B
X, Y, Z, R, A and B are coordinate values on respective axes and must be separated from
each other by a space.
n IfNOTE
point data is specified with both
Explanation:
Directly specify the coordinate data on each axis with an integer or a real number. When
integers and real numbers in the same the coordinate data is an integer, the movement units are viewed as “pulses”. When the
statement, all axes move in “mm” or coordinate data is a real number, the units are viewed as “mm” or “deg”.
“deg” units.
PTP movement and linear interpolation movement can be used with this coordinate data
setting.
Hand system flags can be specified when directly specifying the coordinate data in "mm"
units for SCARA robots.
86
11. Command Statements
n· When
NOTE
a SCARA robot is used and a
When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
end of B. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
hand system flag is set for the target set to indicate that there is no hand system flag.
position data, that hand system has
priority over the current arm type.
· Hand system flags are enabled only 1 : Right-handed system is used to move to a specified position.
when the software version is V8.08 or
later.
2 : Left-handed system is used to move to a specified position.
2
c When
CAUTION
performing linear interpolation
Example:
MOVE P,10000 10000 1000 1000 0 0
while specifying a hand system flag, ----------- Moves by PTP from the current position to the specified
make sure that the same hand system
is used at the current position and positions.
target position. If the same hand
system is not used, then an error will
occur and robot movement will not be
allowed.
· Point definition
Format:
Option types
· Speed setting
Format 1:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified MOVE statement.
n This
NOTE
option merely specifies the
Example:
MOVE P,P10,S=10
maximum speed and does not ----------- Moves from the current position to the position specified by
guarantee the specified speed. P10 at 10% of normal program speed.
87
11. Command Statements
Format 2:
VEL = <expression>
The value of <expression> must be from 1 to 750 for SCARA robots, and from 1 to 1000
2 for Cartesian robots. (Unit: mm/sec)
Explanation:
Specify the maximum composite speed of the XYZ axes in <expression> in “mm/sec”
units. This option can be used for linear interpolation movement of SCARA robots or
Cartesian robots and is enabled only for the specified MOVE statement.
n This
NOTE
option merely specifies the
Example:
MOVE L,P10,VEL=100
maximum composite speed and does ----------- Moves at a maximum XYZ composite speed of 100mm/sec
not guarantee the specified speed. from the current position to the position specified by P10.
x = <expression>, [ x = <expression> … ]
x : Axis X, Y, Z, R, A or B
When the value of <expression> is an integer, the movement units are viewed as “pulses”.
When the value is a real number containing a decimal point, the units are viewed as “mm”
or “deg”.
Explanation:
The specified “x” axis first moves toward the position specified in <expression>. Then,
when the specified “x” axis enters the arch position range, all axes other than the “x” axis
move toward the target position. Finally, all axes other than the “x” axis enter the arch
position range and also the specified “x” axis enters within the tolerance range of the
position specified in <expression>, the specified “x” axis moves toward the target position,
and when it enters the OUT position range, the command terminates.
This option can be used for PTP movement.
If the specified “x” axes include an X-axis or Y-axis, the target position and the
<expression> must be specified by an integer (in “pulse” units).
Example:
MOVE P,P1,Z=0
----------- The Z-axis first moves from the current position to the “0
pulse” position and then other axes move to P1. Finally the
Z-axis moves to P1.
Z=0
Current position P1
88
11. Command Statements
Explanation:
This command option stops the robot movement when the conditional expression is met.
2
The robot will move a slight distance while slowing down before coming to a stop after
the condition is met.
If the conditional expression is already satisfied before the robot begins to move, the
command will terminate without moving the robot. This option can be used for PTP
movement or linear interpolation movement and is enabled only during program execution.
Example:
MOVE P,P100,STOPON DI(20)=1
----------- Moves from the current position to the position specified by
P100, and slows down and stops when the condition “DI (20)
= 1” is met.
· CONT setting
Format:
CONT
Explanation:
When PTP movement is executed with the CONT setting option, PTP movement (to be
executed immediately after all movable axes enter the OUT position range and the
command terminates) will begin without waiting for the movable axes to complete the
operation (reach within target position tolerance range).
This option can be used for PTP movement and is enabled only for the specified MOVE
statement.
n· NOTE
The positioning time for starting PTP
Example:
MOVE P,P10,P11,CONT
movement can be reduced by CONT ----------- Moves from the current position to the position specified by
setting. P10, and then moves to P11 without waiting for the movable
· The path to the target point is not axes to enter the tolerance range.
guaranteed.
P10 P11
Current position
89
11. Command Statements
· Acceleration setting
Format:
ACC = <expression>
Explanation:
Specify the robot acceleration rate in <expression>. The actual robot acceleration
is determined by the product of the acceleration coefficient parameter setting and this
acceleration rate.
This option can be used for linear interpolation movement and is enabled only for the
specified MOVE statement.
Example:
MOVE L,P100,ACC=10
----------- Moves from the current position to the position specified by
P100 at 10% acceleration rate.
· Deceleration setting
Format:
DEC = <expression>
Explanation:
Specify the robot deceleration rate in <expression>. The actual robot deceleration is determined
by the product of the acceleration coefficient parameter setting and this deceleration rate.
This option can be used for linear interpolation movement and is enabled only for the
specified MOVE statement.
Example:
MOVE L,P100,DEC=20
----------- Moves from the current position to the position specified by
P100 at 20% deceleration rate.
90
11. Command Statements
XY
YZ
ZX 2
n· NOTE
If no coordinate plane is specified, the
XY : XY coordinate plane
YZ : YZ coordinate plane
robot moves along a 3-dimensional ZX : ZX coordinate plane
circle.
· When a 2-axis robot is used, it moves
along a circle on the XY plane. Explanation:
When a circular interpolation is executed by setting the coordinates, this option executes
circular interpolation so that the projection on the specified coordinate plane becomes a
circle.
This option can be used for circular interpolation movement and is enabled only for the
specified MOVE statement.
Example:
P10 = 100.00 100.00 20.00 0.00 0.00 0.00
P11 = 150.00 100.00 0.00 0.00 0.00 0.00
P12 = 150.00 150.00 20.00 0.00 0.00 0.00
P13 = 100.00 150.00 40.00 0.00 0.00 0.00
MOVE P,P10
MOVE C,P11,P12
MOVE C,P13,P10
----------- Continuously moves along a 3-dimensional circle formed by
P10, P11 and P12, and also P12, P13 and P10.
MOVE C,P11,P12,XY
MOVE C,P13,P10,XY
----------- Continuously moves along a circle on the XY plane, formed
by P10, P11 and P12, and also P12, P13 and P10. At this
point, the Z-axis moves to a position specified by P12 and
P10 as the target position of the circular movement.
91
11. Command Statements
c The
CAUTION
port output setting is enabled
· Port output setting
Format 1:
only when the software version is
V8.22 or later.
DO m ( [b, … ,b] ) =<expression 1>@<expression 2>
MO
2 SO
Format 2:
The value of <expression 1> should be an integer or it will be converted to an integer. The
lower bits corresponding to the bits specified on the left side will be valid.
The value of <expression 2> must be in "mm" units.
Explanation:
During linear interpolation or circular interpolation movement, this command option
outputs the value of <expression 1> to the specified port when the robot reaches a position
that is away from the start position by a distance specified in <expression 2>.
This command option can only be used with linear interpolation or circular interpolation
movement. Up to 2 options can be set in one MOVE statement.
n· NOTE
Output to the DO0 ( ) and DO1 ( )
Example 1:
MOVE P,P0
ports is not allowed. MOVE L,P1,DO2()[email protected]
· Output to the MO0 ( ) and MO1 ( ) ----------- Outputs 105 (&B01101001) to DO2( ) at a position 25.85mm
ports is not allowed. away from P0 during liner interpolation movement toward
· Output to the SO0 ( ) and SO1 ( )
ports is not allowed. P1.
· Bits must be specified in ascending
order from the right. Example 2:
· External output is unavailable to DO/ A!=10
SO ports not connected to hardware. B!=20
MOVE L,P2,MO(22)=1@A!,MO(22)=0@B!
----------- Turns MO(22) ON at a position 10mm away from the start
position and then turns MO(22) OFF at a position 20mm away
from the start position during movement toward P2.
92
11. Command Statements
MOVE2 statement
(Absolute position movement command)
Format:
2
MOVE2 PTP , <point definition> [, option [, option] … ]
P
Explanation:
This statement executes an absolute movement of all sub robot axes. This statement will
not move the main robot axes and auxiliary axes.
Movement type : PTP
Point data setting : Direct coordinate data input, point definition
Options : Speed setting, arch motion setting, STOPON condition
setting, CONT setting
Movement type
· PTP (point to point) movement
PTP movement begins after positioning on all movable axes is complete (within the
tolerance range), and the command terminates when all movable axes enter the OUT
position range. All movable axes will reach the target positions simultaneously, but their
paths are not guaranteed.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM2 statement.
Example:
MOVE2 P,P0
MOVE2 PTP,P0
----------- Sub robot axes move from the current position to the position
specified by P0.
X Y Z R A B
X, Y, Z, R, A and B are the coordinate values on respective axes, and must be separated
from each other by a space.
Explanation:
n IfNOTE
point data is specified with both Directly specify the coordinate data on each axis with an integer or a real number. When
integers and real numbers in the same the coordinate data is an integer, the movement units are viewed as “pulses”. When the
statement, all axes move in “mm” or coordinate data is a real number, the units are viewed as “mm” or “deg”.
“deg” units.
Hand system flags can be specified when directly specifying the coordinate data in "mm"
units for SCARA robots.
93
11. Command Statements
n· When
NOTE
a SCARA robot is used and a
When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
end of B. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
hand system flag is set for the target set to indicate that there is no hand system flag.
position data, that hand system has
priority over the current arm type.
· Hand system flags are enabled only 1 : Right-handed system is used to move to a specified position.
Example:
MOVE2 P,10000 10000 1000 1000 0 0
----------- Moves by PTP from the current position to the specified
positions.
· Point definition
Format:
n When
NOTE
a SCARA robot is used and a
Explanation:
Specify the point data in <point expression>. Two or more pieces of data can be designated
hand system flag is set for the point by separating them with a comma ( , ).
data you specify, that hand system has
priority over the current arm type.
Example:
MOVE2 P,P1
----------- Moves from the current position to the position specified by
P1.
MOVE2 P,P20,P0,P100
----------- Moves in order from the current position to the positions
specified by P20, P0 and P100.
Option types
· Speed setting
Format 1:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified MOVE2 statement.
n This
NOTE
option merely specifies the
Example:
MOVE2 P,P10,S=10
maximum speed and does not ----------- Moves from the current position to the position specified by
guarantee the specified speed. P10 at 10% of normal program speed.
94
11. Command Statements
x = <expression>, [ x = <expression> … ]
x : Axis X, Y, Z, R, A or B
2
When the value of <expression> is an integer, the movement units are viewed as “pulses”.
When the value is a real number containing a decimal point, the units are viewed as “mm”
or “deg”.
Explanation:
The specified “x” axis first moves toward the position specified in <expression>. Then,
when the specified “x” axis enters the arch position range, all axes other than the “x” axis
move toward the target position. Finally, all axes other than the “x” axis enter the arch
position range and also the specified “x” axis enters within the tolerance range of the
position specified in <expression>, the specified “x” axis moves toward the target position,
and when it enters the OUT position range, the command terminates.
This option can be used for PTP movement.
If the specified “x” axes include an X-axis or Y-axis, the target position and the <expression>
must be specified by an integer (in “pulse” units).
Example:
MOVE2 P,P1,Z=0
----------- The Z-axis first moves from the current position to the “0
pulse” position and then other axes move to P1. Finally the
Z-axis moves to P1.
Z=0
Current position P1
Explanation:
This command option stops the robot movement when the conditional expression is met.
The robot moves a slight distance while slowing down before coming to a stop after the
condition is met.
If the conditional expression is already satisfied before the robot begins to move, the
command will terminate without moving the robot. This option is enabled only for PTP
movement or linear interpolation movement during program execution.
Example:
MOVE2 P,P100,STOPON DI(20)=1
----------- Moves from the current position to the position specified by
P100, and slows down and stops when the condition “DI (20)
= 1” is met.
95
11. Command Statements
· CONT setting
Format:
CONT
2 Explanation:
When PTP movement is executed with the CONT setting option, PTP movement (to be
executed immediately after all movable axes enter the OUT position range and the
command terminates) will begin without waiting for the movable axes to complete the
operation (reach within target position tolerance range). This option can be used for PTP
movement and is enabled only for the specified MOVE2 statement.
n· NOTE
Positioning time for starting PTP
Example:
MOVE2 P,P10,P11,CONT
movement can be reduced by CONT ----------- Moves from the current position to the position specified by
setting. P10, and then moves to P11 without waiting for the movable
· The path to the target point is not
guaranteed.
axes to enter the tolerance range.
P10 P11
Current position
96
11. Command Statements
MOVEI statement
c• If the robot is stopped during
CAUTION
(Relative position movement command)
execution of the MOVEI statement
and then restarted, the robot will
Format:
move the specified distance from the
stopped position. 2
MOVEI PTP , <point definition> [, option [, option] … ]
P
Explanation:
This statement executes a relative movement of all main robot axes. This statement will
not move the sub robot axes and auxiliary axes.
Movement type : PTP
Point data setting : Direct coordinate data input, point definition
Options : Speed setting
Movement type
· PTP (point to point) movement
PTP movement begins after positioning on all movable axes is complete (within the
tolerance range), and the command then terminates when all movable axes enter the OUT
position range. All movable axes will reach the target positions simultaneously, but their
paths are not guaranteed.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM statement.
Example:
MOVEI P,P0
MOVEI PTP,P0
----------- Main robot axes move by PTP a distance specified by P0
from the current position.
X Y Z R A B
X, Y, Z, R, A and B are the coordinate values on respective axes and must be separated
from each other by a space.
n IfNOTE
point data is specified with both
Explanation:
Directly specify the coordinate data on each axis with an integer or a real number. When
integers and real numbers in the same the coordinate data is an integer, the movement units are viewed as “pulses”. When the
statement, all axes move in “mm” or coordinate data is a real number, the units are viewed as “mm” or “deg”.
“deg” units.
Hand system flags can be specified when directly specifying the coordinate data in "mm"
units for SCARA robots.
97
11. Command Statements
n· When
NOTE
a SCARA robot is used and a
When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
end of B. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
hand system flag is set for the target set to indicate that there is no hand system flag.
position data, that hand system has
priority over the current arm type.
· Hand system flags are enabled only 1 : Right-handed system is used to move to a specified position.
Example:
MOVEI P, 10000 10000 1000 1000 0 0
----------- Moves by PTP the specified distances from the current
position.
· Point definition
Format:
n When
NOTE
a SCARA robot is used and a
Explanation:
Specify the point data in <point expression>. Two or more pieces of data can be designated
hand system flag is set for the point by separating them with a comma ( , ).
data you specify, that hand system has
priority over the current arm type.
Example:
MOVEI P,P1
----------- Moves by PTP a distance specified by P1 from the current
position.
Option type
· Speed setting
Format 1:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified MOVEI statement.
n This
NOTE
option merely specifies the Example:
maximum speed and does not MOVEI P,P10,S=10
guarantee the specified speed. ----------- Moves by PTP a distance specified by P1 from the current
position at 10% of normal program speed.
98
11. Command Statements
MOVEI2 statement
c• If the robot is stopped during
CAUTION
(Relative position movement command)
execution of the MOVEI2 statement
and then restarted, the robot will
Format:
move the specified distance from the
stopped position. 2
MOVEI2 PTP , <point definition> [, option [, option] … ]
P
Explanation:
This statement executes a relative movement of all sun robot axes. This statement will not
move the main robot axes and auxiliary axes.
Movement type : PTP
Point data setting : Direct coordinate data input, point definition
Options : Speed setting
Movement type
· PTP (point to point) movement
PTP movement begins after positioning on all movable axes is complete (within the
tolerance range), and the command terminates when all movable axes enter the OUT
position range. All movable axes will reach the target positions simultaneously, but their
paths are not guaranteed.
To execute the next command after waiting for the axes to enter the target position tolerance
range, use the WAIT ARM2 statement.
Example:
MOVEI2 P,P0
MOVEI2 PTP,P0
----------- Sub robot axes move by PTP a distance specified by P0 from
the current position.
X Y Z R A B
X, Y, Z, R, A and B are the coordinate values on respective axes and must be separated
from each other by a space.
Explanation:
n IfNOTE
point data is specified with both Directly specify the coordinate data on each axis with an integer or a real number. When
integers and real numbers in the same the coordinate data is an integer, the movement units are viewed as “pulses”. When the
statement, all axes will move in “mm” coordinate data is a real number, the units are viewed as “mm” or “deg”.
or “deg” units.
Hand system flags can be specified when directly specifying the coordinate data in "mm"
units for SCARA robots.
99
11. Command Statements
n· When
NOTE
a SCARA robot is used and a
When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
end of B. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
hand system flag is set for the target set to indicate that there is no hand system flag.
position data, that hand system has
priority over the current arm type.
· Hand system flags are enabled only 1 : Right-handed system is used to move to a specified position.
Example:
MOVEI2 P,10000 10000 1000 1000 0 0
----------- Moves by PTP the specified distances from the current
position.
· Point definition
Format:
n When
NOTE
a SCARA robot is used and a
Explanation:
Specify the point data in <point expression>. Two or more pieces of data can be designated
hand system flag is set for the point by separating them with a comma ( , ).
data you specify, that hand system has
priority over the current arm type.
Example:
MOVEI2 P,P1
----------- Moves by PTP a distance specified by P1 from the current
position.
Option type
· Speed setting
Format 1:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified MOVEI2 statement.
n This
NOTE
option merely specifies the Example:
maximum speed and does not MOVEI2 P,P10,S=10
guarantee the specified speed. ----------- Moves by PTP a distance specified by P1 from the current
position at 10% of normal program speed.
100
11. Command Statements
Format:
Explanation:
Even if an error occurs during execution of the robot language, this statement allows the
program to jump to the error processing routine specified by <label>, so that the program
still continues without being suspended. (Some serious errors are excluded.) If “0” is
specified for <label> in this statement, the program stops when an error is issued and the
error message is displayed.
The error processing routine processes the error using the RESUME statement and handles
the error output information.
n· NOTE
If a serious error such as “Over
Example:
ON ERROR GOTO *ER1
load” occurs, the program execution FOR A = 0 TO 9
stops. P[A+10] = P[A]
· The last “ON ERROR GOTO NEXT A
<label>” statement that was used is *L99: HALT
valid. ’ERROR ROUTINE
· If an error occurs while an error *ER1:
processing routine is being executed, IF ERR = &H0604 THEN *NEXT1
the program will stop. ----------- Checks whether an error “Point doesn't exist” has occurred.
· “ON ERROR GOTO <label>” IF ERR = &H0606 THEN *NEXT2
statements cannot be executed within ----------- Checks whether an error “Subscript out of range” has
error processing routines.
occurred.
ON ERROR GOTO 0
----------- Displays the error message and stops the program execution.
*NEXT1:
RESUME NEXT
----------- Jumps to the next command line after the line where the error
occurred, and continues executing the program.
*NEXT2:
RESUME *L99
----------- Jumps to the label “*L99” and continues executing the
program.
101
11. Command Statements
ON to GOTO statement
Format:
Explanation:
In this statement, the value of <expression> determines where the program will jump.
When the value of <expression> is “1”, the program will jump to <label 1>. When it is
“2”, the program will jump to <label 2>. Likewise, when it is “n”, the program will jump
to <label n>.
If the value of <expression> is “0” or greater than the number of labels specified, the next
command is executed without making a jump.
Example:
’MAIN ROUTINE
*ST:
ON DI3() GOTO *L1,*L2,*L3
GOTO *ST
HALT
’SUB ROUTINE
*L1:
MOVE P,P10,Z=0
GOTO *ST
*L2:
DO(30) = 1
GOTO *ST
*L3:
DO(30) = 0
GOTO *ST
102
11. Command Statements
ON to GOSUB statement
Format:
Explanation:
In this statement, the value of <expression> determines where the program will jump.
When the value of <expression> is “1”, the program will jump to <label 1>. When it is
“2”, the program will jump to <label 2>. Likewise, when it is “n”, the program will jump
to <label n>.
After the subroutine at the destination jumped to has been executed, the next command
following the ON to GOSUB statement is executed.
If the value of <expression> is “0” or greater than the number of labels, the next command
is executed without making a jump.
Example:
’MAIN ROUTINE
*ST:
ON DI3() GOSUB *SUB1,*SUB2,*SUB3
GOTO *ST
HALT
’SUB ROUTINE
*SUB1:
MOVE P,P10,Z=0
RETURN
*SUB2:
DO(30) = 1
RETURN
*SUB3:
DO(30) = 0
RETURN
103
11. Command Statements
ONLINE
2 OFFLINE
Explanation:
These statements change the communication mode and initialize the communication port.
n Initializing
NOTE
the communication port
Example:
OFFLINE
clears the communication error and SEND CMU TO A$
receiving buffer. SEND CMU TO P10
ONLINE
HALT
104
11. Command Statements
ORGORD statement
(Return-to-origin sequence setting statement for main group)
Format:
2
ORGORD <expression>
Explanation:
This statement sets the axis sequence parameter to perform return-to-origin movement
for the main group.
Example:
A=3
ORGORD A
ABSRST
----------- After return-to-origin operation on axis 3 of the main group
is complete, absolute reset is executed by performing
simultaneous return-to-origin on the remaining axes.
MOVE P,P0
HALT
105
11. Command Statements
ORGORD2 statement
(Return-to-origin sequence setting statement for sub group)
Format:
2
ORGORD2 <expression>
Explanation:
This statement sets the axis sequence parameter to perform return-to-origin movement
for the sub group.
Example:
A=1234
ORGORD2 A
ABSRST
MOVE2 P,P0
HALT
106
11. Command Statements
ORIGIN statement
Format:
ORIGIN
n This
NOTE Explanation:
2
command cannot be executed if This statement moves the robot to the origin position on an incremental motor axis.
the return-to-origin method of an If the movement to the origin position is interrupted, return-to-origin will be incomplete.
incremental motor axis is set to
"Mark". When two robots are specified, return-to-origin is first performed on the main group and
then on the sub group.
Example:
ORIGIN
……Performs return-to-origin on an incremental motor axis.
107
11. Command Statements
c The
CAUTION
OUT statement is enabled only
OUT statement
when the software version is V8.22 or Format:
later.
Explanation:
This statement turns ON the specified port and terminates. (The program proceeds to the
next line.) The output to that port is then turned OFF when automatic operation has
continued for the time specified by <expression>. If the operation is stopped temporarily
and then restarted, the output to the specified port is turned OFF when the remainder of
the specified time has elapsed.
Figures below 10 in the <expression> value are rounded down. If a value below 10 is
specified, then it is set to 10. If this expression is omitted, then the specified port is kept
turned ON.
Up to 16 OUT statements using <expression> can be executed at the same time. If attempt
is made to execute 17 or more OUT statements, an error "6.26: No sufficient memory for
OUT" occurs.
n· NOTE
Output to the DO0 ( ) and DO1 ( )
Example:
OUT DO2(),200
ports is not allowed. ----------- DO (27 to 20) are turned ON and then turned OFF after 200ms.
· Output to the MO0 ( ) and MO1 ( ) OUT DO(37,35,27,20)
ports is not allowed. ----------- DO (37, 35, 27, 20) are turned ON.
· Output to the SO0 ( ) and SO1 ( )
ports is not allowed.
· Bits must be specified in ascending Related commands: DO, MO, SO, TO, LO
order from the right.
· External output is unavailable to DO/
SO ports not connected to hardware.
108
11. Command Statements
OUTPOS statement
(OUT position setting statement for main group)
Format 1:
2
OUTPOS <expression>
Format 2:
n IfNOTE
an axis that is set to “no axis” in the
Explanation:
This statement changes the OUT position parameter for the main group to the value
system generation is specified, then an
error message “Specification
specified in <expression>. Format 1 changes all main group axes. Format 2 changes the
mismatch” appears and execution of OUT position parameter for the axis specified in <expression 1> to the value specified in
the command will stop. <expression 2>.
Example:
’CYCLE WITH DECREASING OUTPOS
DIM SAV(3)
GOSUB *SAVE_OUTPOS
FOR A=1000 TO 10000 STEP 1000
GOSUB *CHANGE_OUTPOS
MOVE P,P0
DO3(0)=1
MOVE P,P1
DO3(0)=0
NEXT A
GOSUB *RESTORE_OUTPOS
HALT
*CHANGE_OUTPOS:
FOR B=1 TO 4
OUTPOS(B)=A
NEXT B
RETURN
*SAVE_OUTPOS:
FOR B=1 TO 4
SAV(B-1)=OUTPOS(B)
NEXT B
RETURN
*RESTORE_OUTPOS:
FOR B=1 TO 4
OUTPOS(B)=SAV(B-1)
NEXT B
RETURN
109
11. Command Statements
OUTPOS2 statement
(OUT position setting statement for sub group)
Format 1:
2
OUTPOS2 <expression>
Format 2:
n· NOTE
This statement can be used only when
Explanation:
This statement changes the OUT position parameter for the sub group to the value specified
the sub group is set in the system
in <expression>. Format 1 changes all sub group axes. Format 2 changes the OUT position
generation.
· If an axis that is set to “no axis” in parameter for the axis specified in <expression 1> to the value specified in <expression
the system generation is specified, 2>.
then an error message “Specification
mismatch” appears and execution of
Example:
the command will stop.
’CYCLE WITH DECREASING OUTPOS
DIM SAV(3)
GOSUB *SAVE_OUTPOS
FOR A=1000 TO 10000 STEP 1000
GOSUB *CHANGE_OUTPOS
MOVE2 P,P0
DO3(0)=1
MOVE2 P,P1
DO3(0)=0
NEXT A
GOSUB *RESTORE_OUTPOS
HALT
*CHANGE_OUTPOS:
FOR B=1 TO 4
OUTPOS2(B)=A
NEXT B
RETURN
*SAVE_OUTPOS:
FOR B=1 TO 4
SAV(B-1)=OUTPOS2(B)
NEXT B
RETURN
*RESTORE_OUTPOS:
FOR B=1 TO 4
OUTPOS2(B)=SAV(B-1)
NEXT B
RETURN
110
11. Command Statements (PATH-related statements)
PATH-related statements
What is a PATH function?
Overview 2
This is a function for moving the robot at a specified speed along a path made up of
straight lines and circular arcs. The PATH function is ideal for applications such as seal-
ing since there is little speed fluctuation during movement.
Features
• Moves the robot at a constant speed along the entire movement path (except the
acceleration zone from stop state and the deceleration zone before the movement
ends).
• Makes point teaching easy because the robot speed does not depend on how fine or
coarse the point teaching positions settings were made.
• Changes the speed the robot moves along the entire path. Speed option can be used
here to change the speed at just a section of the movement path.
• Using the DO option allows outputting a signal to a specified port at any desired
position during movement.
How to use
The following robot language commands must be used as a set in order to use the PATH
function.
• PATH statement (PATH L, PATH C)
• PATH SET statement
• PATH END statement
• PATH START statement
Example:
The PATH statements are used to set the motion path by means of sections enclosed by
the PATH SET and PATH END statements. The robot does not move by just setting the
motion path. It starts moving along the specified motion path when the PATH START
statement is executed.
MOVE P,P0,Z=0
PATH SET ------ Start of path setting
PATH L,P1,DO(20)[email protected]
PATH L,P2
•
•
•
PATH C,P12,P13
PATH L,P14,DO(20)[email protected]
PATH END ------ End of path setting
MOVE P,P1,Z=0
•
•
•
MOVE P,P0,Z=0
PATH START ------ Executes the specified PATH motion
HALT
111
11. Command Statements (PATH-related statements)
• During movement, the robot moves along the inner side of the contact point where
a straight line connects with another straight line. Also, the higher the speed, the
more the robot shifts to the inner side (1). To avoid large path changes due to the
speed, increase the number of points as shown in (2). However, in some cases,
errors will occur unless the speed is lowered so use caution.
(1) (2)
Low speed Increase the number
High speed of points
112
11. Command Statements (PATH-related statements)
n PATH
NOTE
statement is enabled only when
PATH statement (PATH-related statements)
the software versions is V8.38 or later.
Format:
X Y Z R A B
X, Y, Z, R, A, and B are coordinate values on respective axes and must be separated from
each other by a space.
n When
NOTE
a SCARA robot is used and a
Explanation:
Directly specify the coordinate data. When the coordinate data is an integer, it is viewed
hand system flag is set for the target as "pulses" units. When the coordinate data is a real number, it is viewed as "mm" units.
position data, that hand system has
If both integers and real numbers are used, then all coordinates are handled in "mm"
priority over the current arm type.
units.
With this format, only one point can be specified as the movement destination coordi-
nates. The only type of movement specified by this point data setting is linear interpola-
tion.
c SetCAUTION
the hand system for PATH motion
Hand system flags can be specified when directly specifying the coordinate data in "mm"
units for SCARA robots.
to the same hand system as that at the When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
start point of the PATH motion. When
moving by specifying a hand system
end of B. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
flag, also set the hand system to be set to indicate that there is no hand system flag.
the same as that at the start point for
the path. If the hand system is 1 : Right-handed system is used to move to a specified position.
different, then an error occurs and
operation is impossible. 2 : Left-handed system is used to move to a specified position.
113
11. Command Statements (PATH-related statements)
Example:
PATH L,10000 10000 1000 1000 0 0
----------- Sets for movement by linear interpolation to the specified
position.
PATH L,150.00 250.00 10.00 30.00 0.00 0.00 1
----------- Sets for movement by linear interpolation to the position speci-
2 fied in the right-handed system.
· Point definition
Format:
c SetCAUTION
the hand system for PATH motion
Example:
PATH L,P1,P2,P3
to the same hand system as that at the ----------- Sets for movement by linear interpolation in sequence to po-
start point of the PATH motion. When sitions specified by P1, P2 and P3.
moving by specifying a hand system
PATH C P5,P6,P7,P8
flag, also set the hand system to be
the same as that at the start point of ----------- Sets for movement by circular interpolation including the
the PATH motion. If the hand system current position, P5, P6 and P6, P7 and P8.
is different, then an error occurs and
operation is impossible.
Option types
· Speed setting
Format 1:
SPEED = <expression>
S
Explanation:
Specify the program speed in <expression> (unit: %).
Actual speed is as follows.
Robot maximum speed (mm/sec.) × automatic movement speed (%) × program speed (%)
This option is enabled only for the specified PATH statement.
Example:
PATH L, P5, S=40
----------- Moves to the position specified by P5 at 40% of normal pro-
gram speed.
114
11. Command Statements (PATH-related statements)
Format 2:
VEL = <expression>
Explanation:
2
Specify the movement speed in <expression> (unit: mm/sec). Error occurs if specified
speed is too high.
This option is enabled only for the specified PATH statement.
Example:
PATH L,P10,VEL=150
----------- Moves at speed of 150mm/sec to the position specified by
P10.
XY
YZ
ZX
Explanation:
Specify the coordinate plane on which to draw a circular arc for circular interpolation
movement. If no coordinate plane is specified, then 3-dimensional circular interpolation
movement is used.
The only type of movement specified by this coordinate plane setting is circular interpo-
lation.
This option is enabled for only for specified PATH statement.
Example:
PATH C, P1, P2, XY
----------- Moves the robot to the Z coordinate position of P2 while per-
forming circular interpolation within XY coordinate plane.
115
11. Command Statements (PATH-related statements)
Format 2:
The value in <expression 1> is output to the specified port. Only the integer portion is
valid.
The value in <expression 2> indicates the position for port output and can be specified to
2 digits below the decimal point in "mm" units.
n· Output
NOTE
to the DO0 ( ) and DO1 ( )
Explanation:
This command option outputs the value of <expression 1> to the specified output port
ports is not allowed. during PATH motion at the position specified in <expression 2>.
· Output to MO0 ( ) and MO1 ( )ports
is not allowed.
· Output to SO0 ( ) and SO1 ( )ports is Example:
not allowed. PATH SET
· Bits must be specified in ascending PATH L,P1,DO(20)=1@10
order from the right. PATH L,P2,DO(21)[email protected]
· External output is unavailable to DO/ PATH END
SO ports not connected to hardware. PATH START
P1 12.
5
DO(21)=1
10
P2
DO(20)=1
116
11. Command Statements (PATH-related statements)
n PATH
NOTE
END statement is enabled only
PATH END statement (PATH-related statements)
when the software versions is V8.38 or
later.
Format:
PATH END 2
Explanation:
This is used to terminate the path setting for PATH motion.
The PATH END command must always be used as a pair along with the PATH SET
command. The final point of the PATH command ("PATH L" or "PATH C") that was
executed last between the PATH SET and PATH END commands is the end point of the
PATH motion.
An error will occur if the PATH END command is executed without first running PATH
SET.
Example:
See the "What is a PATH function?" description.
117
11. Command Statements (PATH-related statements)
n PATH
NOTE
SET statement is enables only
PATH SET statement (PATH-related statements)
when the software version is V8.38 or
later.
Format:
Explanation:
Starts the path setting for PATH motion.
Sets the position specified in <point definition> as the PATH motion start point. (This
only sets the PATH motion start point and does not mean the robot actually operates.) If
<point definition> is omitted, then the current robot position is set as the start point.
However, during robot movement, the target position for that movement becomes the
start point. (Example: OUT position range with MOVE command is wide prior to PATH
SET command, so robot still moves during execution of the PATH SET command.)
The PATH SET command must always be used as a pair along with the PATH END
command.
When the PATH SET command is executed, the previously set PATH motion data is de-
leted.
Point data setting : Direct coordinate data input, point definition
Example:
See the "What is a PATH function?" description.
X Y Z R A B
X, Y, Z, R, A, and B are the coordinate values on respective axes and must be separated
from each other by a space.
n When
NOTE
a SCARA robot is used and a
Explanation:
Directly specify the start position coordinates for PATH motion path. When the coordi-
hand system flag is set for the start nate data is an integer, it is viewed as "pulses" units. When the coordinate data is a real
point data of the PATH motion path,
number, it is viewed as "mm" units (valid to 2 digits below the decimal point.) If both
that hand system has priority over the
current arm type. integers and real numbers are used, then all coordinates are handled in "mm" units.
c SetCAUTION
the hand system for PATH motion
Hand system flags can be specified when directly specifying the coordinate data in "mm"
units for SCARA robots.
to the same hand system as that at the
When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
start point of the PATH motion. If the
hand system is different, then an end of B. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
error occurs and operation is set to indicate that there is no hand system flag.
impossible.
1 : Hand system at PATH motion start point is set to the right-handed system.
2 : Hand system at PATH motion start point is set to the left-handed system.
118
11. Command Statements (PATH-related statements)
Example:
PATH SET 120 250.00 55.2 20.33 0 0
----------- PATH motion start point is set to (120.00 250.00 55.20 20.33
0.00 0.00) in "mm" units.
PATH SET -51200 80521 7045 204410 0 0
----------- PATH motion start point is set in "pulses" units.
· Point definition
2
Format:
<point expression>
n When a SCARA robot is used and a
NOTE
Explanation:
hand system flag is set for the point Specify the PATH motion start point in <point expression>.
data you specify, that hand system has
priority over the current arm type.
PATH SET P10
----------- Sets the PATH motion start point to P10.
c SetCAUTION
the hand system for PATH motion
to the same hand system as that at the PATH SET WHERE
start point of the PATH motion. If the ----------- Sets the PATH motion start point the current robot position.
hand system is different, then an
error occurs and operation is
Related commands: PATH, PATH END, PATH START
impossible.
119
11. Command Statements (PATH-related statements)
2 PATH START
Explanation:
Starts the PATH motion. PATH motion settings must be made beforehand with the PATH
SET command, PATH commands ("PATH L", "PATH C") and PATH END command
before executing the PATH START command. Also, before starting PATH motion, the
robot must also be positioned beforehand at the PATH motion start point specified by the
PATH SET command.
The robot PATH motion speed is the product of the automatic movement speed (%) when
the PATH START command is executed and the program speed (%) specified by the
SPEED command or speed option (SPEED or S) for the PATH command. Robot speed
does not rely on automatic movement speed, if the speed was specified with the speed
option (VEL)for the PATH command.
After PATH motion starts, this command terminates when the robot reaches the PATH
motion end point or when the robot stops due to an interlock.
This command can only be executed in Task 1 (main task).
Example:
See the "What is a PATH function?" description.
120
11. Command Statements
PDEF statement
Format:
n· NOTE
Point data used in pallet definition
Explanation:
This statement defines the pallet used to execute a pallet movement command.
uses the data area as follows.
Pallet definition 0: P[1] to P[5] 22 23 24
----- P3996 to P4000 19 20 21
Pallet definition 1: P[1] to P[5]
16 17 18
----- P3991 to P3995 P [5]
:
13 14 15
Pallet definition 19:P[1] to P[5]
----- P3901 to P3905 P [3] P [4]
NZ
10 11 12
NY 7 8 9
4 5 6
1 2 3
P [1] P [2]
NX
Example:
PDEF(1) = 3,4,2
----------- Pallet definition 1 is defined as 3×4×2.
121
11. Command Statements
Format:
n· NOTE
The pallet definition number must be
Explanation:
This statement executes a pallet movement command for all main robot axes. This statement
designated to execute a PMOVE will not move the sub robot axes and auxiliary axes.
statement.
Movement type : PTP
· The XYZ axes move to the positions
determined by the calculated values. Pallet definition number : Numerical expression
However, the R-axis moves to the Pallet position number : Numerical expression
position specified by pallet point data Options : Speed setting, arch motion setting, STOPON
P[1].
condition setting
· In each pallet definition, pallet
position numbers are designated as
follows:
Movement type
NX*NY*NZ
· PTP (point to point) movement
NY PTP movement begins after positioning on all movable axes is complete (within the
NX*NY*(NZ-1)+1
NX*NY
NX NY*(NZ-1)+1
(NZ-1)+1 NX NY*(NZ-1)+NX
NX*NY*(NZ-1)+NX
NX*NY (NZ-1)+NX tolerance range), and the command terminates when all movable axes enter the OUT
P [3] P [4]
P [5]
NX*(NY-1)+1 NX*NY
position range. All movable axes will reach the target positions simultaneously, but their
NZ
NX+1 NX*2
paths are not guaranteed.
P [2] To execute the next command after waiting for the axes to enter the tolerance range of the
P [1] 1 2 ... NX
NX
target position, use the WAIT ARM statement.
Example:
PMOVE(1,16)
----------- Main robot axes move from the current position to the position
specified by pallet position number 16 of pallet definition
number 1.
122
11. Command Statements
<expression 1>
<expression 2>
Explanation:
Specify the pallet position number.
Example:
PMOVE(1,16)
----------- Main robot axes move from the current position to the position
specified by pallet position number 16 of pallet definition
number 1.
123
11. Command Statements
Option types
· Speed setting
Format 1:
SPEED = <expression>
2 S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified PMOVE statement.
n This
NOTE
option merely specifies the
Example:
PMOVE(1,3),S=10
maximum speed and does not ----------- Moves at 10% of normal program speed from the current
guarantee the specified speed.
position to the position specified by pallet position number 3
of pallet definition number 1.
x = <expression> [, x = <expression> … ]
x : Axis Z, R, A or B
When the value of <expression> is an integer, the movement units are viewed as “pulses”.
When the value is a real number containing a decimal point, the units are viewed as “mm”
or “deg”.
Explanation:
The specified "x" axis first moves toward the position specified in <expression>. Then,
when the specified axis enters the arch position range, all axes other than the specified
axis move toward the target position. Finally, when all axes other than the specified axis
enter the arch position range and also when the specified axis enters within the tolerance
range of the position specified in <expression>, the specified axis moves toward the target
position. When it enters the OUT position range, the command terminates.
Example:
PMOVE(1,A),Z=0
----------- The Z-axis first moves from the current position to the “0
pulse” position. Then the other axes move to the position
specified by pallet position number A of pallet definition
number 1. Finally the Z-axis moves to the position specified
by pallet position number A.
Z=0
124
11. Command Statements
Explanation:
This command option stops the robot movement when the conditional expression is met.
2
The robot will move a slight distance while slowing down before coming to a stop after
the condition is met.
If the conditional expression is already satisfied before the robot begins to move, the
command will terminate without moving the robot. This option is enabled only during
program execution.
Example:
PMOVE(A,16),STOPON DI(20)=1
----------- Moves from the current position to the position specified by
pallet position number 16 of pallet definition number A, and
slows down and stops when the condition “DI (20) = 1” is
met.
125
11. Command Statements
Format:
n· NOTE
The pallet definition number must be
Explanation:
This statement executes a pallet movement command for all sub robot axes. This statement
designated to execute a PMOVE2 will not move the main robot axes and auxiliary axes.
statement.
Movement type : PTP
· The XYZ axes move to the positions
determined by the calculated values. Pallet definition number : Numerical expression
However, the R-axis moves to the Pallet position number : Numerical expression
position specified by pallet point data Options : Speed setting, arch motion setting, STOPON
P[1].
condition setting
· In each pallet definition, pallet
position numbers are designated as
follows:
Movement type
NX*NY*NZ
· PTP (point to point) movement
NY PTP movement begins after positioning on all movable axes is complete (within the
NX NY*(NZ-1)+1
NX*NY*(NZ-1)+1
NX*NY (NZ-1)+1 NX NY*(NZ-1)+NX
NX*NY*(NZ-1)+NX
NX*NY (NZ-1)+NX tolerance range), and the command terminates when all movable axes enter the OUT
P [3] P [4]
P [5]
NX*(NY-1)+1 NX*NY
position range. All movable axes will reach the target positions simultaneously, but their
NZ
NX+1 NX*2
paths are not guaranteed.
P [2] To execute the next command after waiting for the axes to enter the tolerance range of the
P [1] 1 2 ... NX
target position, use the WAIT ARM2 statement.
NX
Example:
PMOVE2(1,16)
----------- Sub robot axes move from the current position to the position
specified by pallet position number 16 of pallet definition
number 1.
126
11. Command Statements
<expression 1>
<expression 2>
Explanation:
Specify the pallet position number.
Example:
PMOVE2(1,16)
----------- Sub robot axes move from the current position to the position
specified by pallet position number 16 of pallet definition
number 1.
127
11. Command Statements
Option types
· Speed setting
Format 1:
SPEED = <expression>
2 S
Explanation:
Specify the program speed in <expression>. Robot operating speed is determined by the
product of the automatic movement speed and the program speed. This option is enabled
only for the specified PMOVE2 statement.
n This
NOTE
option merely specifies the
Example:
PMOVE2(1,3),S=10
maximum speed and does not ----------- Moves at 10% of normal program speed from the current
guarantee the specified speed.
position to the position specified by pallet position number 3
of pallet definition number 1.
x = <expression> [, x = <expression> … ]
x: Axis Z or R
When the value of <expression> is an integer, the unit of movement is viewed as “pulses”.
When the value is a real number containing a decimal point, the unit is viewed as “mm”
or “deg”.
Explanation:
The specified "x" axis first moves toward the position specified in <expression>. Then,
when the specified axis enters the arch position range, all axes other than the specified
axis move toward the target position. Finally, when all axes other than the specified axis
enter the arch position range and also when the specified axis enters within the tolerance
range of the position specified in <expression>, the specified axis moves toward the target
position. When it enters the OUT position range, the command terminates.
Example:
PMOVE2(1,A),Z=0
----------- The Z-axis first moves from the current position to the “0
pulse” position. Then the other axes move to the position
specified by pallet position number A of pallet definition
number 1. Finally the Z-axis moves to the position specified
by pallet position number A.
Z=0
128
11. Command Statements
Explanation:
This command option stops the robot movement when the conditional expression is met.
2
The robot will move a slight distance while slowing down before coming to a stop after
the condition is met.
If the conditional expression is already satisfied before the robot begins to move, the
command will terminate without moving the robot. This option is enabled only during
program execution.
Example:
PMOVE2(A,16),STOPON DI(20)=1
-------- --- Moves from the current position to the position specified by
pallet position number 16 of pallet definition number A, and
slows down and stops when the condition “DI (20) = 1” is
met.
129
11. Command Statements
PRINT statement
Format:
Explanation:
This statement displays a value for the variable specified on the MPB screen. Output
definitions are as follows:
n Every
NOTE
time a PRINT statement is
Examples:
PRINT A
executed, data is sent to display the PRINT “A1 =”;A1
specified value on the MPB screen. PRINT “B(0),B(1) = “;B(0);”,”;B(1)
The program execution time may be PRINT P100
longer if two or more PRINT
statements are executed in succession.
Related command: INPUT
130
11. Command Statements
Format:
Pn = x y z r a b 2
c InCAUTION
controllers whose software version
n: 0 to 9999
Input range for x, y, z, r, a, b is determined by the point data format.
is earlier than V8.28, point numbers
from 0 to 4000 can be specified with
Pn (point definition statement). Explanation:
This statement defines the point (position) to move to within the robot operation range.
Make point definitions while referring to the following notes.
1. “n” is a point number.
2. Input data for “x” to “b” must be separated with a space (blank).
3. If all input data for “x” to “b” are integers (no decimal points), the movement units
are viewed as “pulses”. At this point, “x” through “b” correspond to axis 1 through
axis 6.
4. If one of input data for “x” through “b” is a real number (containing a decimal
point), the movement units are viewed as “mm”. At this point, “x” to “z” correspond
to the x, y and z coordinates of Cartesian coordinate system, while “r” to “b”
correspond to axis 4 through axis 6.
5. Input data in “pulses” units must be in the range from –6144000 to 6144000, and
input data in “mm” units must be in the range from –99999.99 to 99999.99.
n· NOTE
When specifying a hand system flag
Hand system flags can be specified when specifying point definition data in "mm" units
for a SCARA robot and its point data, for SCARA robots.
set either 1 (right-handed system) or 2 When setting an extended hand system flag for SCARA robots, set either 1 or 2 at the data
(left-handed system) at the data end of end of b. If a number other than 1 or 2 is set, or if no number is designated, then 0 will be
B-axis data. set to indicate that there is no hand system flag.
· Hand system flag setting is enabled
only when the software version is
V8.08 or later. 1 : Right-handed system is used to set point data.
2 : Left-handed system is used to set point data.
n· Input
NOTE
data is treated as a constant.
Example:
P1= 0 0 0 0 0 0
· If power is turned off during execution P2= 100.00 200.00 50.00 0.00 0.00 0.00
of a point definition statement, a P3= 10.00 0.00 0.00 0.00 0.00 0.00
memory-related error such as “Point P10= P2
data destroyed” may occur. FOR A=10 TO 15
P[A+1]=P[A]+P3
NEXT A
FOR A=10 TO 16
MOVE P,P1,P[A]
NEXT A
HALT
131
11. Command Statements
Format:
Explanation:
All characters that follow REM or an apostrophe (’) are viewed as comments. This statement
can only be used to make comments in the program and does not execute any command.
Example:
REM *** MAIN PROGRAM ***
’*** SUBROUTINE ***
HALT ’HALT COMMAND
132
11. Command Statements
RESET statement
Format 1:
Format 2:
RESET _SYSFLG
Format 3:
RESET TCOUNTER
Explanation:
Format 1 of this statement turns OFF the bits of the specified ports.
Format 2 clears the system flag variables.
Format 3 clears 10ms counter variables.
n· NOTE
Output to ports 0 and 1 of DO, MO
Example:
RESET DO2()
and SO are not allowed. ----------- DO (27 to 20) are turned OFF.
· Bits must be specified in ascending RESET DO2(6,5,1)
order from the right.
· External output is unavailable to DO/
----------- DO (26, 25, 21) are turned OFF.
RESET (37,35,27,20)
SO ports not connected to hardware.
· System flag variables are used when ----------- DO(37, 35, 27, 20) are turned OFF.
making checks with the overload RESET _SYSFLG
monitor. ----------- System flag variables are cleared.
· 10ms counter variables are used to RESET TCOUNTER
measure the time in 10ms units. ----------- 10ms counter variables are cleared.
133
11. Command Statements
RESTART statement
Format:
2 RESTART Tn
n : task number 2 to 8
Explanation:
This statement restarts another task that is in pause.
Example:
START *SUBTASK,T2
FLAG=1
*L0:
IF FLAG=1 AND DI2(0)=1 THEN
SUSPEND T2
FLAG=2
WAIT DI2(0)=0
ENDIF
IF FLAG=2 AND DI2(0)=1 THEN
RESTART T2
FLAG=1
WAIT DI2(1)=0
ENDIF
MOVE P,P0
MOVE P,P1
GOTO *L0
HALT
’SUBTASK ROUTINE
*SUBTASK:
DO2(0)=1
DELAY 1000
DO2(0)=0
DELAY 1000
GOTO *SUBTASK
EXIT TASK
134
11. Command Statements
RESUME statement
Format:
RESUME [ NEXT ]
<label>
2
Explanation:
This statement resumes the program execution after recovery from an error.
There are three ways to resume the program, depending on the location in the program.
1. RESUME The program resumes from the command that caused the
error.
2. RESUME NEXT The program resumes from the command following the
command that caused the error.
3. RESUME <label> The program resumes from the command specified by
<label>.
n· NOTE
The RESUME statement can also be
executed in an error processing Example:
routine. See the description of the ON ERROR GOTO statement.
· Error recovery processing does not
work if the error is serious.
Related command: ON ERROR GOTO
135
11. Command Statements
Format:
2 RIGHTY
LEFTY
n These
NOTE
statements are valid only for
Explanation:
These statements select whether the main robot will be “right-handed” or “left-handed”
SCARA robots, and so cannot be used when moving to a point specified on a Cartesian coordinate system. This is a just selection
for Cartesian robots.
and does not move the robot. If the robot arm is moving, the command execution waits
until movement is complete (positioned within tolerance range).
Example:
RIGHTY
MOVE P,P1
LEFTY
MOVE P,P1
RIGHTY
HALT
P1
(2) (1)
Left-handed Right-handed
SCARA robot
136
11. Command Statements
Format:
RIGHTY2
LEFTY2
2
n· NOTE
These statements are valid only when
Explanation:
These statements select whether the sub robot will be “right-handed” or “left-handed”
the sub group is set in the system when moving to a point specified on a Cartesian coordinate system. This is just a selection
generation.
and does not move the robot. If the robot arm is moving, the command execution waits
· These statements are valid only for
SCARA robots, and so cannot be used until movement is complete (positioned within tolerance range).
for Cartesian robots.
Example:
RIGHTY2
MOVE2 P,P1
LEFTY2
MOVE2 P,P1
RIGHTY2
HALT
P1
(2) (1)
Left-handed Right-handed
SCARA robot
137
11. Command Statements
Format:
2 Sn = x y z r
n: 0 to 9
The values of “x”, “y”, “z” and “r” must be from –99999.99 to 99999.99.
Explanation:
This statement defines shift coordinate values in order to shift the coordinates for robot
movement. Define the shift coordinate values while referring to the following notes.
1. “n” is a shift number.
2. Input data for “x” to “r” must be separated with a space (blank).
3. Input data for “x” to “r” is viewed as “mm”.
4. “x” to “z” correspond to the x, y and z coordinate shift values on a Cartesian
coordinate system, and “r” to the rotating shift value on the xy coordinates.
n· NOTE
Input data is treated as a constant.
Example:
S0= 0.00 0.00 0.00 0.00
· If power is turned off during S1=100.00 200.00 50.00 90.00
execution of a shift coordinate P3=100.00 0.00 0.00 0.00 0.00 0.00
definition statement, a memory- SHIFT S0
related error such as “Shift data MOVE P,P3
destroyed” may occur. SHIFT S1
MOVE P,P3
HALT
138
11. Command Statements
Format:
Explanation:
These statements execute multiple command blocks according to the value in <expression>.
Make the settings while referring to the following notes.
Example:
WHILE -1
SELECT CASE DI3()
CASE 1,2,3
CALL *EXEC(1,10)
CASE 4,5,6,7,8,9,10
CALL *EXEC(11,20)
CASE ELSE
CALL *EXEC(21,30)
END SELECT
WEND
HALT
139
11. Command Statements
c· CAUTION
When you restart the controller after
SEND statement
stopping the SEND statement, note
the following points.
1. SEND CMU TO XXX
Format:
· When the SEND statement stops
discarded. Explanation:
2. SEND XXX TO CMU This statement sends the data in the <read file> to the <write file>.
· When the SEND statement stops
while data is still being written into Type File name Definition format Read Write
the RS-232C transmit buffer, the
data is rewritten from the beginning. All Separate file
User memory All files ALL –––– Yes Yes
Program PGM <bbbbbbbb> Yes Yes
Point data PNT Pn Yes Yes
Point comment PCM –––– Yes Yes
Parameter PRM /cccccc/ Yes Yes
Shift definition SFT Sn Yes Yes
Hand definition HND Hn Yes Yes
Pallet definition PLT PLn Yes Yes
Variable, Variable VAR ab...by Yes Yes
constant Array variable ARY ab...by (x) Yes Yes
Constant –––– “cc...c” Yes No
Status Program directory DIR <<bbbbbbbb>> Yes No
Parameter directory DPM –––– Yes No
Machine reference MRF –––– Yes No
Error log LOG –––– Yes No
Memory size MEM –––– Yes No
Device DI port DI () DIn () Yes No
DO port DO () DOn () Yes Yes
MO port MO () MOn () Yes Yes
TO port TO () TOn () Yes Yes
LO port LO () LOn () Yes Yes
SI port SI () SIn () Yes No
SO port SO () SOn () Yes Yes
RS-232C CMU –––– Yes Yes
Others File end code EOF Yes No
n For
NOTE
details on files, refer to “Data file
n: Number
a: Alphabetic character
description” described later.
b: Alphanumeric character or underscore ( _ )
c: Alphanumeric character or symbol
x: Expression
y: Format
140
11. Command Statements
n· NOTE
The SEND statement cannot be used
Example:
SEND PGM TO CMU
to write onto read-only files. ----------- All user programs are output through the RS-232C port.
Incorrect examples: SEND <<PRG1>> TO CMU
SEND CMU TO DIR ----------- The program named “PRG1” is output through the RS-232C
SEND PNT TO SI()
port.
· Even if the read and write files are
correct, writing cannot be executed
unless the data formats match.
SEND CMU TO PNT
----------- Point data files are input through the RS-232C port.
2
Incorrect Examples: SEND CMU TO P100
SEND PGM TO PNT ----------- Data of point number 100 is input through the RS-232C port.
SEND SI() TO SFT SEND “T1” TO CMU
----------- The character string “T1” is output through the RS-232C port.
SEND CMU TO A$
----------- The character string is input to variable A$ through the RS-
232C port.
141
11. Command Statements
SERVO statement
Format:
2 SERVO ON
OFF
[ (<expression>) ]
FREE
PWR
Explanation:
This statement controls the servo ON/OFF of the specified axes in the main group or all
axes (in the main group and sub group).
If <expression> is not specified, all axes are controlled and the motor power supply
simultaneously turns ON and OFF.
ON ----------- Turns the servo ON. If no axis is specified the motor power supply
also turns ON.
OFF ----------- Turns the servo OFF and applies the dynamic brake. Those axes
having brakes are all locked by the brake. If no axis is specified
the motor power supply also turns OFF.
FREE ----------- Turns the servo OFF and releases the dynamic brake. The axes
n· NOTE
This statement is executed after
having brakes are all released. If no axis is specified the motor
power supply also turns OFF.
positioning on all axes (in the main
group and sub group) is complete PWR ----------- Turns ON only the motor power supply.
(within the tolerance range).
· The servo for an axis cannot be Example:
turned ON as long as its motor power SERVO ON
is OFF.
----------- Turns ON the servos for all axes after turning ON the motor
c DoCAUTION
not perform any work within the SERVO OFF
power supply.
robot movement range while the ----------- Turns OFF the motor power supply and the servos for all
motor power is turned OFF by using axes. Those axes having brakes are all locked by the brake.
the SERVO OFF statement. Always SERVO FREE(3)
check that the emergency stop is ON ----------- Turns OFF the servo for axis 3 (Z-axis) and releases the brake.
when working within the robot
movement area.
142
11. Command Statements
SERVO2 statement
Format:
SERVO2 ON
OFF
[ (<expression>) ]
2
FREE
PWR
Explanation:
This statement controls the servo ON/OFF of the specified axes in the sub group or all
axes (in the main group and sub group).
If <expression> is not specified, all axes are controlled and the motor power supply
simultaneously turns ON and OFF.
ON ----------- Turns the servo ON. If no axis is specified the motor power supply
also turns ON.
OFF ----------- Turns the servo OFF and applies the dynamic brake. Those axes
n· NOTE
This statement can be used only when
having brakes are all locked by the brake. If no axis is specified
the sub group is set in the system
the motor power supply also turns OFF.
generation. FREE ----------- Turns the servo OFF and releases the dynamic brake. The axes
· This statement is executed after having brakes are all released. If no axis is specified the motor
positioning on all axes (in the main power supply also turns OFF.
group and sub group) is complete
(within the tolerance range).
PWR ----------- Turns ON only the motor power supply.
· The servo for an axis cannot be
turned ON as long as its motor power Example:
is OFF. SERVO2 ON
----------- Turns ON the servos for all axes after turning ON the motor
c DoCAUTION
not perform any work within the
power supply.
SERVO2 OFF
robot movement range while the
motor power is turned OFF by using ----------- Turns OFF the motor power supply and the servos for all
the SERVO OFF statement. Always axes. Those axes having brakes are all locked by the brake.
check that the emergency stop is ON SERVO2 FREE(2)
when working within the robot ----------- Turns OFF the servo for axis 2 (Y-axis of sub group) and
movement area. releases the brake.
143
11. Command Statements
SET statement
Format:
2 S E T DOm ( [ b, · · ·, b ] ) [, <expression> ]
DO (mb, · · ·, mb)
MOm ([b, · · ·, b])
MO (mb, · · ·, mb)
TO0 ([b, · · ·, b])
TO (0b, · · ·, 0b)
LO0 ([b, · · ·, b])
LO (0b, · · ·, 0b)
SOm ([b, · · ·, b])
SO (mb, · · ·, mb)
Explanation:
This statement turns ON the bits of the specified ports.
Specify the pulse output time (unit: ms) in <expression>. When the specified time has
elapsed, the output turns OFF to end the command execution.
n· NOTE
Output to the DO0 ( ) and DO1 ( )
Example:
SET DO2()
ports is not allowed. ----------- DO (27 to 20) are turned ON.
· Output to the MO0 ( ) and MO1 ( ) SET DO2(6,5,1),200
ports is not allowed.
----------- DO (26, 25, 21) are turned ON for 200ms.
· Output to the SO0 ( ) and SO1 ( )
SET DO(37,35,27,20)
ports is not allowed.
· Bits must be specified in ascending ----------- DO (37, 35, 27, 20) are turned ON.
order from the right.
· External output is unavailable to DO/ Related commands: RESET, DO, MO, SO, TO, LO
SO ports not connected to hardware.
144
11. Command Statements
SHARED statement
Format:
Example:
DIM Y!(10)
X!=2.5
Y!(10)=1.2
CALL *DISTANCE
CALL *AREA
HALT
SUB *DISTANCE
SHARED X!,Y!( )
PRINT X!^2+Y!(10)^2 --------- Variable is shared.
END SUB
SUB *AREA
DIM Y!(10)
PRINT X!*Y!(10) --------- Variable is not shared.
END SUB
145
11. Command Statements
SHIFT statement
(Shift coordinate setting statement for main robot)
Format:
2
SHIFT <shift variable>
n This
NOTE
statement is executed after
Explanation:
This statement sets the shift coordinates for the main robot by using the shift data specified
positioning on the main robot axes is in <shift variable>.
complete (within the tolerance range).
Example:
SHIFT S1
MOVE P,P10
SHIFT S[A]
MOVE P,P20
HALT
146
11. Command Statements
SHIFT2 statement
(Shift coordinate setting statement for sub robot)
Format:
2
SHIFT2 <shift variable>
n· NOTE
This statement can be used only when
Explanation:
This statement sets the shift coordinates for the sub robot by using the shift data specified
the sub robot is set in the system
generation.
in <shift variable>.
· This statement is executed after
positioning on the sub robot axes is Example:
complete (within the tolerance range). SHIFT2 S1
MOVE2 P,P10
SHIFT2 S[A]
MOVE2 P,P20
HALT
147
11. Command Statements
Format:
2 [ LET ] SO m ( [ b, · · ·, b ] ) = <expression>
SO ( mb, · · ·, mb )
Explanation:
This statement outputs the specified value to the SO port.
n· NOTE
Output to the SO0 ( ) and SO1 ( )
Example:
SO2()=&B10111000
ports is not allowed. ----------- SO (27, 25, 24, 23) are turned ON, and SO (26, 22, 21, 20)
· Bits must be specified in ascending
order from the right.
are turned OFF.
SO2(6,5,1)=&B010
· External output is unavailable to SO
ports not connected to hardware. ----------- SO (25) is turned ON, and SO (26, 21) are turned OFF.
SO3()=15
----------- SO (33, 32, 31, 30) are turned ON, and SO (37, 36, 35, 34)
are turned OFF.
SO(37,35,27,20)=A
----------- The contents of the 4 lower bits obtained when variable A is
converted to an integer are output to SO (37, 35, 27, 20),
respectively.
148
11. Command Statements
SPEED statement
(Speed setting statement for main group)
Format:
SPEED <expression>
2
The value of <expression> must be from 1 to 100. (Unit: %)
Explanation:
This statement changes the program speed for the main group to the value specified in
<expression>.
n· NOTE
This statement changes all the
Example:
ASPEED 100
movement speed parameters for the SPEED 70
main axes and auxiliary axes of the MOVE P,P0
robot. ----------- Moves at 70% (=100*70) of maximum speed from the current
· Robot operating speed is determined
by the product of the automatic
position to P0.
movement speed (specified by the SPEED 50
MPB or ASPEED command) and the MOVE P, P1
program speed (specified by the ----------- Moves at 50% (=100*50) of maximum speed from the current
SPEED command). position to P1.
Example: MOVE P,P2, S=10
When the automatic movement speed ----------- Moves at 10% (=100*10) of maximum speed from the current
is 80% and the program speed set by position to P2.
the SPEED command is 50%, then:
HALT
Robot operating speed = 80%*50% =
40%
Related commands: ASPEED, ASPEED2, SPEED2
149
11. Command Statements
SPEED2 statement
(Speed setting statement for sub group)
Format:
2
SPEED2 <expression>
n· NOTE
This statement changes all the
Explanation:
This statement changes the program speed for the sub group to the value specified in
movement speed parameters for the <expression>.
standard axes and auxiliary axes of
the sub robot.
· Robot operating speed is determined Example:
by the product of the automatic ASPEED2 50
movement speed (specified by the SPEED2 70
MPB or ASPEED2 command) and the MOVE2 P,P0
program speed (specified by the ----------- Moves at 35% (=50*70) of maximum speed from the current
SPEED2 command). position to P0.
Example: SPEED2 50
When the automatic movement speed MOVE2 P,P1
is 80% and the program speed set by ----------- Moves at 25% (=50*50) of maximum speed from the current
the SPEED2 command is 50%, then:
Robot operating speed = 80%*50% = position to P1.
40% MOVE2 P,P2,S=10
----------- Moves at 5% (=50*10) of maximum speed from the current
c This
CAUTION
statement can be used only when HALT
position to P2.
the sub group is set in the system
generation.
Related commands: ASPEED, ASPEED2, SPEED
150
11. Command Statements
START statement
Format:
START <label>, Tn [, p ]
2
n : task number 2 to 8
p : task priority 17 to 47
Explanation:
This statement starts the task specified by <label> as task “n” with priority “p”.
If the task priority “p” is omitted, the priority will be 32.
Example:
START *SUBTASK,T2,33
*ST:
MOVE P,P0,P1
GOTO *ST
HALT
’SUBTASK ROUTINE
*SUBTASK:
n· NOTE
The priority of task 1 (main task) is
P100 = WHERE
IF LOCZ(P100) > 10000 THEN
32. DO(20) = 1
· The smaller the priority number, the ELSE
higher the priority level. DO(20) = 0
· When a task with a higher priority is ENDIF
set “READY”, all tasks with lower GOTO *SUBTASK
priority levels also stay “READY”. EXIT TASK
151
11. Command Statements
Format:
n· NOTE
Sub-procedures cannot be defined
Explanation:
The SUB statement and END SUB statement define a sub-procedure that can be executed
within a sub-procedure. with the CALL statement. When the END SUB statement is executed, the program jumps
· The DECLARE statement cannot be
to the next command in the CALL statement that was called. Defines are shown below.
used within a sub-procedure.
· A label can be defined within a sub-
procedure, but it cannot jump with a 1. All variables declared within the sub-procedure are local variables so they are
GOTO or GOSUB statement to a label valid only within the sub-procedure. Local variables are initialized each time the
outside the sub-procedure.
sub-procedure is called up.
· Sub-procedures cannot be used within
an expression. 2. Use a SHARED statement when using global variables (program level).
· Local variables cannot be used with
PRINT and SEND statements.
3. Use <dummy argument> when variables are to be passed on. If two or more dummy
arguments are used, separate them by a comma ( , ).
4. A valid <dummy argument> consists of a name of variable and an entire array
(array name followed by parentheses).
152
11. Command Statements
Example 1:
I=1
CALL *TEST
PRINT I
HALT
’SUB ROUTINE: TEST
SUB *TEST
I=50
2
END SUB
In the above example, the program level variable I does not have any relation to
variable I within the sub-procedure. The value displayed with the PRINT statement
on the third line will be “1”.
Example 2:
X% = 4
Y% = 5
CALL *COMPARE( REF X%, REF Y% )
PRINT X%,Y%
Z% = 7
W% = 2
CALL *COMPARE( REF Z%, REF W% )
PRINT Z%,W%
HALT
’SUB ROUTINE: COMPARE
SUB *COMPARE( A%, B% )
IF A% < B% THEN
TEMP% = A%
A% = B%
B% = TEMP%
ENDIF
END SUB
In the above example, different variables are passed on as arguments to call up the
sub-procedure twice.
153
11. Command Statements
SUSPEND statement
Format:
2 SUSPEND Tn
n: task number 2 to 8
Explanation:
This statement temporarily stops another task being executed.
Examples:
START *SUBTASK,T2
SUSFLG=0
*L0:
MOVE P,P0
MOVE P,P1
WAIT SUSFLG=1
SUSPEND T2
SUSFLG=0
GOTO *L0
HALT
’SUBTASK ROUTINE
*SUBTASK:
WAIT SUSFLG=0
DO2(0)=1
DELAY 1000
DO2(0)=0
DELAY 1000
SUSFLG=1
GOTO *SUBTASK
EXIT TASK
154
11. Command Statements
SWI statement
Format:
2
SWI <program name>
n· NOTE
If there is no program to switch to,
Explanation:
This statement switches from the current program to the specified program, starting from
then the message “3.3: Program the first line after executing compiling. The output variable status does not change when
doesn't exist” appears and operation
stops.
the program was switched. However, dynamic variables and array variables are cleared.
· If an error occurs during compiling, If an error occurs during compiling, the operation stops. The program name you want to
an error message line is displayed switch to must be enclosed in < >.
and the program stops.
· The SWI statement can only be
executed within task 1 (main task).
Example:
If used within tasks 2 through 8, the SWI <ABC>
message “6.1:Illegal command” ----------- The execution program switches to <ABC>.
appears and operation stops.
· The Stop key does not function during
compiling.
· Execution of a SWI statement is
always accompanied by compiling,
and the time required for this
compiling depends on the size of
program to switch to.
155
11. Command Statements
TO statement
Format:
b : bit definition 0 to 7
The value of <expression> should be an integer or it will be converted to an integer. The
lower bits corresponding to the bits specified on the left side will be valid.
Explanation:
This statement outputs the specified value to the TO port.
n Bits
NOTE
must be specified in ascending
Example:
TO0() = &B00000110
order from the right.
Related commands: RESET, SET
156
11. Command Statements
TOLE statement
(Tolerance setting statement for main group)
Format 1:
2
TOLE <expression>
Format 2:
n· IfNOTE
an axis that is set to “no axis” in
Explanation:
This statement changes the tolerance parameter for the main group to the value specified
the system generation is specified, in <expression>. Format 1 changes all axes in the main group. Format 2 changes the
then an error message “Specification
mismatch” appears and execution of
tolerance parameter for the main group axis specified in <expression 1> to the value
the command will stop. specified in <expression 2>.
· This statement is executed after
positioning on the specified axes is Example:
complete (within the tolerance range). ’CYCLE WITH DECREASING TOLERANCE
FOR A=100 TO 20 STEP -20
GOSUB *CHANGE_TOLE
MOVE P,P0
MOVE P,P1
NEXT A
HALT
*CHANGE_TOLE:
FOR B=1 TO 4
TOLE(B)=A
NEXT B
RETURN
157
11. Command Statements
TOLE2 statement
(Tolerance setting statement for sub group)
Format 1:
2
TOLE2 <expression>
Format 2:
n· NOTE
This statement can be used only when
Explanation:
This statement changes the tolerance parameter for the sub group to the value specified in
the sub group is set in the system <expression>. Format 1 changes all axes in the sub group. Format 2 changes the tolerance
generation.
parameter for the sub group axis specified in <expression 1> to the value specified in
· If an axis that is set to “no axis” in
the system generation is specified, <expression 2>.
then an error message “Specification
mismatch” appears and execution of Example:
the command will stop. ’CYCLE WITH DECREASING TOLERANCE
· This statement is executed after FOR A=100 TO 20 STEP -20
positioning on the specified axes is GOSUB *CHANGE_TOLE
complete (within the tolerance range). MOVE2 P,P0
MOVE2 P,P1
NEXT A
HALT
*CHANGE_TOLE:
FOR B=1 TO 4
TOLE2(B)=A
NEXT B
RETURN
158
11. Command Statements
TORQUE statement
Format
n IfNOTE
an axis that is set to “no axis” in the
Explanation:
This statement changes the maximum torque instruction for the main group axis specified
system generation is specified, then an in <expression 1> to the value specified in <expression 2>. The torque parameter value
error message “Specification
does not change.
mismatch” appears and execution of
the command will stop. The maximum torque instruction by this statement remains valid until any of the following
operations are performed.
· When another TORQUE command for the same axis is executed.
c· CAUTION
If the specified value is too small, the · When a torque limit option is executed in the DRIVE statement for the same axis.
axis may not move. In this case,
· When power to the controller is turned off and then turned on.
press the emergency stop button and
then continue operation. · When parameters are changed or initialized.
· If the specified value is less than the
rated torque, then an error might not
· When return-to-origin or absolute reset is performed.
occur even when the robot bumps · When the servo turns off.
into an obstacle.
Example:
DRIVE(3,P0)
----------- Axis 3 moves from the current position to the point specified
by P0.
DRIVE(3,P1),T=50
----------- Axis 3 moves from the current position to the point specified
by P1 at 50% of rated torque.
WAIT ARM(3)
----------- Monitors movement and stopping of axis 3.
IF MO(12)=1 THEN
----------- Checks the current mode of axis 3. (If the check result is true,
the target position was reached.)
TORQUE(3) =100
----------- Sets the torque on axis 3 to a maximum (100%).
ELSE
DRIVE(3,P0),T=50
----------- Axis 3 moves from the current position to the point specified
by P0 at 50% of rated torque.
WAIT MO(12)=1
----------- Waits until axis 3 is held (at the target position).
TORQUE(3)=100
----------- Sets the torque on axis 3 to a maximum (100%).
ENDIF
159
11. Command Statements
TORQUE2 statement
Format
n· NOTE
This statement can be used only when
Explanation:
This statement changes the maximum torque instruction for the sub group axis specified
the sub robot is set in the system
generation.
in <expression 1> to the value specified in <expression 2>. The torque parameter value
· If an axis that is set to “no axis” in does not change.
the system generation is specified, The maximum torque instruction by this statement remains valid until any of the following
then an error message “Specification operations are performed.
mismatch” appears and execution of
the command will stop.
· When another TORQUE2 command for the same axis is executed.
· When a torque limit option is executed in the DRIVE2 statement for the same axis.
· When power to the controller is turned off and then turned on.
c· CAUTION
If the specified value is too small, the
· When parameters are changed or initialized.
axis may not move. In this case, · When return-to-origin or absolute reset is performed.
press the emergency stop button and
· When the servo turns off.
then continue operation.
· If the specified value is less than the
rated torque, then an error might not Example:
occur even if the robot bumps into an DRIVE2(1,P0)
obstacle.
----------- Axis 1 moves from the current position to the point specified
by P0.
DRIVE2(1,P1),T=50
----------- Axis 1 moves from the current position to the point specified
by P1 at 50% of rated torque.
WAIT ARM2(1)
----------- Monitors movement and stopping of axis 1.
IF MO(12)=1 THEN
----------- Checks the current mode of axis 1. (If the check result is true,
the target position was reached.)
TORQUE2(1)=100
----------- Sets the torque on axis 1 to a maximum (100%).
ELSE
DRIVE2(1,P0),T=50
----------- Axis 1 moves from the current position to the point specified
by P0 at 50% of rated torque.
WAIT MO(12)=1
----------- Waits until axis 1 is held (at the target position).
TORQUE2(1)=100
----------- Sets the torque on axis 1 to a maximum (100%).
ENDIF
160
11. Command Statements
WAIT statement
Format 1:
Explanation:
This statement allows waiting until the condition in <DI/DO conditional expression> is
met. Specify the time-out period (milliseconds) in the second <expression>.
If the wait condition is not met within the time-out period, the command terminates. Note
that the minimum wait time is 10 ms.
Format 2:
WAIT ARM
WAIT ARM2
Explanation:
This statement allows waiting until positioning on the robot axes is complete (within the
tolerance range).
If the <expression 1> and <expression 2> are not specified, then all axes (ARM) of the
main robot or all axes (ARM2) of the sub robot are subject to this command. When the
<expression 1> and <expression 2> are specified, only the specified axes are subject to
this command.
Examples:
WAIT A=10
----------- Waits until variable A is set to 10.
WAIT DI2(4,3,2)=&B101
----------- Waits until DI(22) and DI(24) are turned ON, and DI(23) is
turned OFF.
WAIT DI(20)=1,1000
----------- Waits until DI(20) is ON. If not turned ON after 1 second,
the command will end.
161
11. Command Statements
WAIT ARM
----------- Waits until the main robot movement is complete.
WAIT ARM2(2)
----------- Waits until movement on axis 2 of the sub robot is complete.
162
11. Command Statements
WEIGHT statement
(Tip weight parameter setting statement for main robot)
Format:
2
WEIGHT <expression>
Explanation:
This statement changes the tip weight parameter of the main robot to the value of
<expression>.
n This
NOTE
statement changes the robot tip
Example:
A=5
weight parameter but does not have B=2
any effect on auxiliary axes. C=WEIGHT
WEIGHT A
MOVE P,P0
WEIGHT B
MOVE P,P1
WEIGHT C
HALT
163
11. Command Statements
WEIGHT2 statement
(Tip weight parameter setting statement for sub robot)
Format:
2
WEIGHT2 <expression>
Explanation:
This statement changes the tip weight parameter of the sub robot to the value of
<expression>.
Example:
n· NOTE
A=5
B=2
This statement can be used only when C=WEIGHT2
the sub robot is set in the system WEIGHT2 A
generation. MOVE2 P,P0
· This statement changes the robot tip WEIGHT2 B
weight parameter but does not have MOVE2 P,P1
any effect on auxiliary axes. WEIGHT2 C
HALT
164
11. Command Statements
Format:
2
WHILE <expression>
<command block>
WEND
Explanation:
This statement executes the command block placed between the WHILE and WEND
statements when the condition specified by <expression> is met, and then returns to the
WHILE statement to repeat the same operation. When the condition specified by
n· NOTE
The WHILE and WEND statements
<expression> is not met, the program jumps to the next command following the WEND
must be used together as a set. statement. If the condition specified by <expression> is not satisfied from the beginning,
· If the value of <expression> is –1, the then no commands between the WHILE and WEND statements are executed and a jump
condition is judged to be satisfied. is made to the next command following the WEND statement.
To jump outside of the WHILE and WEND statement loop, use a GOTO statement, etc.
Examples 1:
A=0
WHILE DI3(0)=0
A=A+1
MOVE P,P0
MOVE P,P1
PRINT ”COUNTER=”;A
WEND
HALT
Examples 2:
A=0
WHILE -1 -------------- This will be an endless loop because the conditional expression is
always true (-1).
A=A+1
MOVE P,P0
IF DI3(0)=1 THEN *END
MOVE P,P1
PRINT ”COUNTER=”;A
IF DI3(0)=1 THEN *END
WEND
*END
HALT
165
11. Command Statements
Label statement
Format:
2 <label>:
Explanation:
This statement defines <Label> in the program lines. Labels must begin with an asterisk
( * ).
Examples:
*SUB2:
*PROG_END:
166
12. Functions
■ ABS
Format:
ABS (<expression>)
Explanation:
This function gives the absolute value of the value specified in <expression>.
Example:
A=ABS(-326.54)
----------- The absolute value of -326.54 (=326.54) is assigned to variable
A.
■ ACCEL
Format:
ACCEL (<expression>)
n IfNOTE
an axis that is set to “no axis” in the
Explanation:
This function gives the acceleration coefficient parameter for the main group axis specified
system generation is specified in in <expression>.
<expression>, then an error message
“Specification mismatch” appears and
execution of the command will stop. Example:
A=ACCEL(3)
----------- The acceleration coefficient parameter for axis 3 in the main
group is assigned to variable A.
■ ACCEL2
Format:
ACCEL2 (<expression>)
n• NOTE
This function can be used only when
Explanation:
This function gives the acceleration coefficient parameter for the sub group axis specified
the sub group has been set in the in the <expression>.
system generation.
• If an axis that is set to “no axis” in
the system generation is specified in Example:
<expression>, then an error message A=ACCEL2(2)
“Specification mismatch” appears ----------- The acceleration coefficient parameter for axis 2 in the sub
and execution of the command will group is assigned to variable A.
stop.
167
12. Functions
■ ARCH
Format:
ARCH (<expression>)
2
The value of <expression> must be from 1 to 6 (axis number).
n IfNOTE
an axis that is set to “no axis” in
Explanation:
This function gives the arch position parameter for the main group axis specified in
the system generation is specified in <expression>.
<expression>, then an error message
“Specification mismatch” appears and
execution of the command will stop. Example:
A=ARCH(1)
----------- The arch position parameter for axis 1 in the main group is
assigned to variable A.
■ ARCH2
Format:
ARCH2 (<expression>)
n• NOTE
This function can be used only when
Explanation:
This function gives the arch position parameter for the sub group axis specified in the
the sub group has been set in the
<expression>.
system generation.
• If an axis that is set to “no axis” in
the system generation is specified in Example:
<expression>, then an error message A=ARCH2(1)
“Specification mismatch” appears ----------- The arch position parameter for axis 1 in the sub group is
and execution of the command will
assigned to variable A.
stop.
■ ARMCND
Format:
ARMCND
Explanation:
This function gives the current arm status used for the SCARA robot in the main group.
The arm status is “1” for left-handed condition and “0” for right-handed condition.
This function is enabled only when a SCARA robot is used.
Example:
A=ARMCND --------- The current arm status of the main robot is assigned to variable
A.
IF A=0 THEN --------- If right-handed system is used…
MOVE P,P100,Z=0
ELSE --------- If left-handeded system is used…
MOVE P,P200,Z=0
ENDIF
168
12. Functions
■ ARMCND2
Format:
ARMCND2
2
n This
NOTE
function can be used only when
Explanation:
This function gives the current arm status for the SCARA robot in the sub group.
the sub group has been set in the The arm status is “1” for left-handed condition and “0” for right-handed condition.
system generation.
This function is enabled only when a SCARA robot is used.
Example:
A=ARMCND2 --------- The current arm status of the sub robot is assigned to variable A.
IF A=0 THEN --------- If right-handed system is used…
MOVE2 P,P100,Z=0
ELSE --------- If left-handed system is used…
MOVE2 P,P200,Z=0
ENDIF
■ ARMTYPE
Format:
ARMTYPE
Explanation:
This function gives the hand system currently selected for the SCARA robot in the main
group.
The arm type is “1” for left-handed system and “0” for right-handed system.
This function is enabled only when a SCARA robot is used.
Example:
A=ARMTYPE --------- The arm type of the main robot is assigned to variable A.
IF A=0 THEN --------- If the arm type is a right-handed system …
MOVE P,P100,Z=0
ELSE --------- If the arm type is a left-handed system…
MOVE P,P200,Z=0
ENDIF
169
12. Functions
■ ARMTYPE2
Format:
ARMTYPE2
2
n• NOTE
This function can be used only when
Explanation:
This function gives the hand system currently selected for the SCARA robot in the sub
the sub group has been set in the group.
system generation. The arm type is “1” for left-handed system and “0” for right-handed system.
This function is enabled only when a SCARA robot is used.
Example:
A=ARMTYPE2 --------- The arm type of the sub robot is assigned to variable A.
IF A=0 THEN --------- If the arm type is a right-handed system …
MOVE2 P,P100,Z=0
ELSE --------- If the arm type is a left-handed system…
MOVE2 P,P200,Z=0
ENDIF
■ ATN
Format:
ATN (<expression>)
Explanation:
This function gives the arctangent of the value of <expression>. The resulting value
obtained will be from -π/2 rad to +π/2 rad.
Examples:
A(0)=A*ATN(Y/X)
----------- The product of the arctangent of the expression (Y/X) and
variable A is assigned to array A (0).
A(0)=ATN(0.5)
----------- The arctangent of 0.5 is assigned to array A (0).
170
12. Functions
■ AXWGHT
Format:
AXWGHT (<expression>)
2
n• NOTE
This function can be used only for
The value of <expression> must be from 1 to 6 (axis number).
■ AXWGHT2
Format:
AXWGHT2 (<expression>)
n• NOTE
This function can be used only when
The value of <expression> must be from 1 to 4 (axis number).
Format:
COS (<expression>)
Explanation:
This function gives the cosine of the value of <expression>. The <expression> units are in
radians.
Examples:
A(0)=B*COS(C)
----------- The product of the cosine of variable C and variable B is
assigned to array A (0).
A(1)=COS(DEGRAD(20))
----------- The cosine of 20.0° is assigned to array A (1).
171
12. Functions
■ DECEL
c The
CAUTION
DECEL statement is enabled
only when the software version is Format:
V8.15 or later.
DECEL (<expression>)
2 n• If an axis that is set to "no axis" in the
NOTE
Example:
A = DECEL (3)
----------- The deceleration rate parameter for axis 3 in the main group
is assigned to variable A.
■ DECEL2
c The
CAUTION
DECEL2 statement is enabled
only when the software version is Format:
V8.15 or later.
n• NOTE
This function can be used only when
DECEL2 (<expression>)
the sub group is set in the system The value of <expression> must be from 1 to 4 (axis number).
generation.
• If an axis that is set to "no axis" in the
system generation is specified, then an
Explanation:
error message "Specification This function gives the deceleration rate parameter for the sub group axis specified in the
mismatch" appears and execution of <expression>.
the command will stop.
Example:
A = DECEL2 (2)
----------- The deceleration rate parameter for axis 2 in the sub group is
assigned to variable A.
■ DEGRAD
Format:
DEGRAD (<expression>)
Explanation:
This function converts the value of <expression> into radians. The <expression> units are
in degrees.
Example:
A=COS(DEGRAD(30))
----------- The cosine of 30° is assigned to variable A.
172
12. Functions
■ DIST
Format:
Explanation:
2
This function gives the distance between the 2 points (X, Y, Z) specified in <point expression
1> and <point expression 2>. An error is issued when the 2 points specified by each
<point expression> are not in the Cartesian coordinate system.
Example:
A=DIST(P0,P1)
----------- The distance between P0 and P1 is assigned to variable A.
■ ERR, ERL
Format:
ERR
ERL
Explanation:
These are used for in error processing routines specified by the ON ERROR GOTO
statement. ERR gives the error code of the error that has occurred, and ERL gives the line
number in which the error occurred.
Examples:
IF ERR<>&H604 THEN HALT
IF ERL=20 THEN RESUME NEXT
■ INT
Format:
INT (<expression>)
Explanation:
This function gives an integer that does not exceed the value of <expression>, by truncating
all decimal fractions.
Examples:
A=INT(A(0))
B=INT(-1.233)
----------- “-2” is assigned to B.
173
12. Functions
■ LEN
Format:
Example:
B=LEN(A$)
■ LSHIFT
Format:
Explanation:
This function shifts the value of <expression 1> to the left, by the number of bits in
<expression 2>. Here, a "0" is inserted in spaces open to the right due to shifting.
Example:
A=LSHIFT(&B10111011,2)
----------- “&B1011101100” is assigned to A.
■ MCHREF
Format:
MCHREF (<expression>)
Explanation:
This function gives the return-to-origin machine reference for the main group axis specified
in <expression>.
Example:
A=MCHREF(1)
----------- The return-to-origin machine reference of axis 1 in the main
group is assigned to variable A.
174
12. Functions
■ MCHREF2
Format:
MCHREF2 (<expression>)
Example:
A=MCHREF2(3)
----------- The return-to-origin machine reference of axis 3 in the sub
group is assigned to variable A.
■ ORD
Format:
Explanation:
This function gives the character code of the first character specified in <character string
expression>.
Example:
A=ORD(”B”)
----------- “66 (=&H42)” is assigned to A.
■ ORGORD
Format:
ORGORD
Explanation:
This function gives the axis sequence parameter for performing return-to-origin operation
for the main group.
Example:
A=ORGORD
----------- The return-to-origin sequence parameter for the main group
is assigned to variable A.
175
12. Functions
■ ORGORD2
Format:
ORGORD2
2
n This
NOTE
function can be used only when
Explanation:
This function gives the axis sequence parameter for performing return-to-origin operation
the sub group has been set in the for the sub group.
system generation.
Example:
A=ORGORD2
----------- The return-to-origin sequence parameter for the sub group is
assigned to variable A.
■ OUTPOS
Format:
OUTPOS (<expression>)
n IfNOTE
an axis that is set to “no axis” in the
Explanation:
This function gives the Out position parameter for the main group axis specified in the
system generation is specified in <expression>.
<expression>, then an error message
“Specification mismatch” appears and
execution of the command will stop. Example:
A=OUTPOS(3)
----------- The Out position parameter for axis 3 in the main group is
assigned to A.
■ OUTPOS2
Format:
OUTPOS2 (<expression>)
n• NOTE
This function can be used only when
Explanation:
This function gives the Out position parameter for the sub group axis specified in the
the sub group has been set in the <expression>.
system generation.
• If an axis that is set to “no axis” in
the system generation is specified in Example:
<expression>, then an error message A=OUTPOS2(3)
“Specification mismatch” appears ----------- The Out position parameter for axis 3 in the sub group is
and execution of the command will assigned to A.
stop.
176
12. Functions
■ RADDEG
Format:
RADDEG (<expression>)
Explanation:
2
This function converts the value of <expression> into degrees. The <expression> units
are in radians.
Example:
LOCR(P0)=RADDEG(ATN(B))
----------- The arctangent of variable B is converted into a value in
degrees and assigned to R data for the P0.
■ RSHIFT
Format:
Explanation:
This function shifts the value of <expression 1> to the right, by the number of bits in
<expression 2>. Here a "0" is inserted in space open to the left due to shifting.
Example:
A=RSHIFT(&B10111011,2)
----------- “&B00101110” is assigned to A.
■ SIN
Format:
SIN (<expression>)
Explanation:
This function gives the sine of the value of <expression>. The <expression> units are in
radians.
Examples:
A(0)=SIN(B*2+C)
----------- The sine of the expression "B*2+C" is assigned to array A
(0).
A(1)=SIN(DEGRAD(30))
----------- The sine of 30.0° is assigned to array A (1).
177
12. Functions
■ SQR
Format:
SQR (<expression>)
2 The value of <expression> must be a positive integer or “0”.
n AnNOTE
error occurs if a negative value is
Explanation:
This function gives the square root of the value in <expression>.
specified in <expression>.
Example:
A=SQR(X^2+Y^2)
----------- The square root of X^2+Y^2 will be assigned to A.
■ TAN
Format:
TAN (<expression>)
Explanation:
This function gives the tangent of the value of <expression>. The <expression> units are
in radians.
Examples:
A(0)=B-TAN(C)
----------- The tangent of variable C is subtracted from variable B and
the result is assigned to array A (0).
A(1)=TAN(DEGRAD(20))
----------- The tangent of 20.0° is assigned to array A (1).
178
12. Functions
■ TIMER
Format:
TIMER
2
n The
NOTE
time can be set in
Explanation:
This function gives the current time in seconds, counting from 12:00 midnight as “0:00”.
“SYSTEM>INIT>CLOCK” mode. It is used to measure operation time during program execution, as well as for other uses.
Example:
c· CAUTION
The clock used in the controller
A%=TIMER
FOR B=1 TO 10
might differ from the correct time.
MOVE P,P0
MOVE P,P1
NEXT
A%=TIMER-A%
PRINT A%/60;”:”;A% MOD 60
HALT
■ TOLE
Format:
TOLE (<expression>)
n• NOTE
If an axis that is set to “no axis” in
Explanation:
This function gives the tolerance parameter for the main group axis specified in
the system generation is specified in <expression>.
<expression>, then an error message
“Specification mismatch” appears
and execution of the command will
Example:
stop. A=TOLE(2)
----------- The tolerance parameter for axis 2 in the main group is
assigned to variable A.
179
12. Functions
■ TOLE2
Format:
TOLE2 (<expression>)
2 The value of <expression> must be from 1 to 4 (axis number).
n· NOTE
This function can be used only when
the sub group has been set in the Explanation:
system generation. This function gives the tolerance parameter for the sub group axis specified in <expression>.
· If an axis that is set to “no axis” in
the system generation is specified in
<expression>, then an error message Example:
“Specification mismatch” appears A=TOLE2(2)
and execution of the command will ----------- The tolerance parameter for axis 2 in the sub group is assigned
stop. to variable A.
■ TORQUE
Format:
TORQUE (<expression>)
n IfNOTE
an axis that is set to “no axis” in the
Explanation:
This function gives the torque setting value for the main group axis specified in
system generation is specified in <expression>.
<expression>, then an error message
“Specification mismatch” appears and
execution of the command will stop.
Example:
A=TORQUE (2)
----------- The torque setting value for axis 2 in the main group is
assigned to variable A.
■ TORQUE2
Format:
TORQUE2 (<expression>)
n· NOTE
This function can be used only when
Explanation:
This function gives the torque setting value for the sub group axis specified in <expression>.
the sub group has been set in the
system generation.
· If an axis that is set to “no axis” in
Example:
the system generation is specified in A=TORQUE2 (2)
<expression>, then an error message ----------- The torque setting value for axis 2 in the sub group is assigned
“Specification mismatch” appears to variable A.
and execution of the command will
stop.
180
12. Functions
■ VAL
Format:
Explanation:
2
This function converts the numeric value of the character string specified in <character
string expression> into an actual numeric value.
The value may be expressed in integer format (binary, decimal, hexadecimal), or real
number format (decimal point format, exponential format).
If the first character of the character string is “+”, “-”, “&” or anything other than a
numeric character, then the VAL function value becomes 0. If there are non-numeric
characters or spaces elsewhere in the character string, then all subsequent characters are
ignored by this function. However, in the case of hexadecimal numbers, A to F are
considered part of the numeric character.
Example:
A=VAL(”&B100001”)
■ WEIGHT
Format:
WEIGHT
Explanation:
This function gives the tip weight parameter for the main robot.
Example:
A=WEIGHT
----------- The tip weight parameter of the main robot is assigned to
variable A.
■ WEIGHT2
Format:
WEIGHT2
Explanation:
This function gives the tip weight parameter for the sub robot.
n This
NOTE
function can be used only when Example:
the sub group has been set in system A=WEIGHT2
generation.
----------- The tip weight parameter of the sub robot is assigned to
variable A.
181
12. Functions
■ TCOUNTER
Format:
TCOUNTER
2 Explanation:
This function outputs count-up values at 10ms intervals starting from the point when the
TCOUNTER variable is reset.
n The
NOTE
10ms COUNTER variable counts
Example:
A=TCOUNETR
up from 0 to 65535, and then returns to
0 to continue count-up. Related functions: RESET
■ _SYSFLG
Format:
_SYSFLG
Explanation:
This is used as a flag that monitors the axis status according to the value specified by the
_SYSFLG variable. This should not be used during normal operation.
n When
NOTE
using this function as a flag for
Example:
_SYSFLG = 1
monitoring the axis status, please
consult us for proper support.
Related functions: RESET
182
12. Functions
■ CHR$
Format: 2
CHR$ (<expression>)
Explanation:
This function gives the character having a character code specified in <expression>. The
value of <expression> must be between 0 and 255, otherwise an error will result.
Example:
A$=CHR$(65)
----------- A character “A” is assigned to A$.
■ DATE$
Format:
DATE$
Explanation:
n The
NOTE
date can be set in This function gives the date in the format “yy/mm/dd” (last two digits of the year, month,
“SYSTEM>INIT>CLOCK” mode. day).
Examples:
A$=DATE$
PRINT DATE$
183
12. Functions
■ LEFT$
Format:
Explanation:
This function extracts a character string with the digits specified by <expression> from
the left end of the character string specified by <character string expression>. The value
of <expression> must be between 0 and 75, otherwise an error will result. If the value of
<expression> is 0, then LEFT$ will be a null string. If the value of <expression> is greater
than the length of <character string expression>, then the LEFT$ string will be the same
as the <character string expression>.
Example:
B$=LEFT$(A$,4)
■ MID$
Format:
Explanation:
This function extracts a character string with the desired length (number of characters)
from the character string specified by <character string expression>. The value of
<expression 1> specifies the first character to be extracted, and the value of <expression
2> the number of characters. The value of <expression 1> must be between 1 and 75 and
<expression 2> must be between 0 and 75, otherwise an error will result. If <expression
2> is omitted, or if the number of characters to the right of the character of <expression
1> is less than the value of <expression 2>, then all characters to the right of the character
expressed by <expression 1> will be extracted. If <expression 1> is longer than the character
string, MID$ will be a null string.
Example:
B$=MID$(A$,2,4)
184
12. Functions
■ RIGHT$
Format:
Example:
B$=RIGHT$(A$,4)
■ STR$
Format:
STR$ (<expression>)
Explanation:
This function changes the value of <expression> into a character string. The value of
<expression> may be either an integer or real number.
Example:
B$=STR$(10.01)
■ TIME$
Format:
TIME$
n The
NOTE
clock can be set in
Explanation:
This function gives the time in the format “hh:mm:ss” (hours, minutes, seconds).
“SYSTEM>INIT>CLOCK” mode.
Examples:
A$=TIME$
PRINT TIME$
185
12. Functions
■ JTOXY
2 Format:
n When
NOTE
the command is executed, the
Explanation:
This function converts the joint coordinate data (unit: pulses) specified by <point
data is converted based on the expression> into Cartesian coordinate data (unit: mm, deg.) for the main group.
standard coordinate, shift coordinate
and hand definition that are set.
Example:
P10=JTOXY(WHERE)
----------- The current position data is converted into Cartesian
coordinate data.
■ JTOXY2
Format:
Explanation:
n• NOTE
This function can be used only when This function converts the joint coordinate data (unit: pulses) specified by <point
the sub group has been set in the expression> into Cartesian coordinate data (unit: mm, deg.) for the sub group.
system generation.
• When the command is executed, the
data is converted based on the
Example:
P10=JTOXY2(WHERE2)
standard coordinate, shift coordinate
and hand definition that are set. ----------- The current position data is converted into Cartesian
coordinate data.
■ PPNT
Format:
Explanation:
This function creates point data specified by a pallet definition number and pallet position
number.
Example:
P10=PPNT(1, 24)
----------- Creates, at point P10, point data specified by pallet position
number 24 of pallet definition number 1.
186
12. Functions
■ WHERE
Format:
WHERE
Explanation:
2
This function reads out the current position of the main group robot arm in joint coordinates.
Example:
P10=WHERE
----------- The current position is read and assigned to point 10. Point
10 is defined in joint coordinates (pulses).
■ WHERE2
Format:
WHERE2
Explanation:
This function reads out the current position of the sub group robot arm in joint coordinates.
n This
NOTE
function can be used only when
Example:
P10=WHERE2
the sub group has been set in the ----------- The current position is read and assigned to point 10. Point
system generation. 10 is defined in joint coordinates (pulses).
■ XYTOJ
Format:
n When
NOTE
the command is executed, the
Explanation:
This function converts the Cartesian coordinate data (unit: mm, deg.) in the main group
data is converted based on the specified by <point expression> into joint coordinate data (unit: pulses).
standard coordinate, shift coordinate
and hand definition that were set.
On SCARA robots, the converted result Example:
differs depending on whether right- P10=XYTOJ(P10)
handed or left-handed is specified. ----------- Point data at P10 is converted into joint coordinate data.
187
12. Functions
■ XYTOJ2
Format:
188
13. Multi-tasking
Multi-tasking is used to create more sophisticated programs.
Before using the multi-tasking function, read this section thoroughly and make sure that you fully
understand its contents.
13.1 Outline
Multi-tasking allows executing two or more tasks in parallel. However, this does not mean
that multiple tasks are executed simultaneously because the controller has only one CPU
to execute the tasks. In multi-tasking, the CPU time is shared among multiple tasks by
assigning a priority to each task so that they can be executed efficiently.
A maximum of 8 tasks (task 1 to task 8) can be executed in one program. The priority
level of task 1 is fixed at 32, while the priority of task 2 to task 8 can be set to any level
between 17 and 47.
’MAIN TASK(TASK1)
START *IOTASK,T2
*ST1:
MOVE P,P1,P0
IF DI(20)= 1 THEN
HALT
ENDIF
GOTO *ST
HALT
’SUB TASK(TASK2)
*IOTASK:
IF DI(21)=1 THEN
DO(30)=1
ELSE
DO(30)=0
ENDIF
GOTO *IOTASK
EXIT TASK
189
13. Multi-tasking
Call
NON EXISTEN
Delete
Stop
STOP
Start
Resume
Cancel waiting
RUN
Wait condition
190
13. Multi-tasking
32
Task 1 Task 3 Task 4
33
Task 5
34
Task 2
The task in the RUN status moves to the end of the ready queue when the CPU occupation
time exceeds a specified time or a task with a higher priority level is put in READY
status.
Priority level
Task 1
32
Task 1 Task 3 Task 4 Task 1
191
13. Multi-tasking
Event Command
Wait for axis Axis movement MOVE, MOVEI, MOVE2, MOVEI2
movement to command
DRIVE, DRIVEI, DRIVE2, DRIVEI2
complete
PMOVE, PMOVE2
SERVO, SERVO2
WAIT ARM, WAIT ARM2
Parameter ACCEL, ARCH, AXWGHT, DECEL, OUTPOS, TOLE
command
ACCEL2, ARCH2, AXWGHT2, DECEL2, OUTPOS2, TOLE2
ORGORD, WEIGHT, ORGORD2, WEIGHT2
Robot status CHANGE, SHIFT, CHANGE2, SHIFT2
change command
LEFTY, RIGHTY, LEFTY2, RIGHTY2
ASPEED, SPEED, ASPEED2, SPEED2
Wait for time to elapse DELAY, SET (Time should be specified.), WAIT (Time should be
specified.)
Wait for condition to be met WAIT
Wait for data to send or to be received SEND
Wait for print buffer to become empty PRINT
Wait for key input INPUT
The tasks are not put in WAIT status if the event has been established before the above
commands are executed.
192
13. Multi-tasking
Tasks in the SUSPEND status can be restarted with the RESTART command. However,
the RESTART command cannot be used for task 1.
When the RESTART command is executed, the status transition takes place as follows.
Task for which the RESTART command was executed - > RUN
Specified task -> READY
A task can also be deleted and put in the NON EXISTEN (no task registration) status by
the other tasks using the CUT command. The CUT command cannot be used for task 1.
When the CUT command is executed, the status transition takes place as follows.
Task that executed the CUT command - > RUN
Specified task - > NON EXISTEN
193
13. Multi-tasking
n When
NOTE
the program is restarted without
(4) When the emergency stop switch on the programming unit (MPB) is pressed or
the emergency stop signal is cut off.
being reset after the tasks have been
stopped by a cause other than (1), then
All tasks are put in STOP status. At this point, the power to the robot is shut off and
each task is processed from the status the servo sets to the non-hold state. After the canceling emergency stop, when the
in which the task stopped. This holds program is restarted, the tasks in STOP status are set to the READY or SUSPEND
true when the power to the controller status. To turn back on the power to the robot, other processing is required.
is turned off and then turned on.
194
13. Multi-tasking
’TASK1
START *ST2,T2
START *ST3,T3
*ST1:
2
DO(20) = 1
WAIT MO(20) = 1
MOVE P,P1,P2,Z=0
IF MO(21)=1 THEN *FIN
GOTO *ST1
*FIN:
CUT T2
HALT
’TASK2
*ST2:
IF DI(20) = 1
MO(20) = 1
DELAY 100
ELSE
MO(20) = 0
ENDIF
GOTO *ST2
EXIT TASK
’TASK3
*ST3:
IF DI(21) = 0 THEN *ST3
IF DI(30) = 0 THEN *ST3
IF DI(33) = 0 THEN *ST3
MO(21) = 1
EXIT TASK
195
13. Multi-tasking
c When
CAUTION
the same variables and data are
13.11 Sharing the data
used in two or more tasks, use Point data, shift coordinate definition data, hand definition data, pallet definition data, all
sufficient caution when rewriting the
variable and data. Improper changes
global variables and other variables are shared between all tasks.
may cause trouble in the task Execution of each task can be controlled while using the same variables and data shared
2 processing. with the other tasks. In this case, however, use sufficient caution when rewriting the variable
and data because improper changes may cause trouble in the task processing.
196
14. Data file description
This section explains data files used with a SEND statement and READ/WRITE online commands.
n• NOTE
All data is handled as character
1. Program file 14. DI file
197
14. Data file description
2 Format:
PGM
Data format:
NAME=program name[cr/lf]
aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf]
:
aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf]
NAME=program name[cr/lf]
:
NAME=program name[cr/lf]
aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf]
:
aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf]
[cr/lf]
Example:
SEND PGM TO CMU
----------- Outputs all programs from communication port as shown
below.
SEND CMU TO PGM
----------- Inputs all programs from communication as shown below.
Response:
NAME=TEST1[cr/lf]
A=1[cr/lf]
RESET DO2()[cr/lf]
:
NAME=TEST2[cr/lf]
:
NAME=PGM1[cr/lf]
:
HALT[cr/lf]
[cr/lf]
198
14. Data file description
Format:
<program name>
2
• Expresses a specified program.
• Program name may be up to 8 characters consisting of alphanumeric characters
and underscore ( _ ) and must be enclosed by ”<” and ”>”.
• If no program name is specified, the currently selected program is specified.
• An error occurs if the specified program name differs from the program name on
the data.
Data format:
NAME=program name[cr/lf]
aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf]
:
aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf]
[cr/lf]
Example:
SEND <TEST1> TO CMU
----------- Outputs the program “TEST1” from communication port as
shown below.
n• NOTE
When the current mode is “AUTO” or
SEND CMU TO <TEST1>
----------- Inputs the program “TEST1” from communication port as
“PROGRAM” mode, and writing into
the currently selected program is not
shown below.
possible. Response:
• When a sequence program is being NAME=TEST1[cr/lf]
executed, writing into the program A=1[cr/lf]
name “SEQUENCE” is not possible. RESET DO2()[cr/lf]
• If there is no NAME statement used to :
specify a program, writing into the HALT[cr/lf]
program is not possible. [cr/lf]
199
14. Data file description
2 Format:
PNT
Data format:
Example:
SEND PNT TO CMU
----------- Outputs all points from communication port as shown below.
SEND CMU TO PNT
----------- Inputs all points from communication port as shown below.
Response:
P0 = 1 2 3 4 5 6[cr/lf]
P1 = 1.00 2.00 3.00 4.00 5.00 6.00[cr/lf]
P2 = 1.00 0.00 0.00 0.00 0.00 0.00[cr/lf]
:
P9999 = -1.00 0.00 0.00 0.00 0.00 0.00[cr/lf]
[cr/lf]
200
14. Data file description
Format:
Pmmmm
2
c In controllers whose software version
CAUTION • Expresses a specified point.
• “mmmm” must be from 0 to 9999
is earlier than V8.28, "mmmm"
represents a number from 0 to 4000.
Data format:
n Integers
NOTE
indicate point data in “pulse”
Example:
SEND P100 TO CMU
units, and real numbers (containing a ----------- Outputs the specified point from communication port as
decimal point) in “mm” units.
shown below.
SEND CMU TO PNT
----------- Inputs the specified point from communication port as shown
below.
Response:
P100 = 1 2 3 4 5 6[cr/lf]
201
14. Data file description
2 Format:
PCM
Data format:
PCmmmm= sssssssssssssss[cr/lf]
PCmmmm= sssssssssssssss[cr/lf]
:
PCmmmm= sssssssssssssss[cr/lf]
PCmmmm= sssssssssssssss[cr/lf]
[cr/lf]
Example:
SEND PCM TO CMU
----------- Outputs all point comments from communication port as
shown below.
SEND CMU TO PCM
----------- Inputs all point comments from communication port as shown
below.
Response:
PC1 =ORIGIN POS[cr/lf]
PC3 =WAIT POS[cr/lf]
:
PC3999= WORK100[cr/lf]
[cr/lf]
202
14. Data file description
n· NOTE
Parameters can be written only when
Format:
2
the axis servo is off.
· Parameters are already compatible
PRM
with upper versions. However,
parameters might not always be • Expresses all parameters (including settings in “UTILITY” mode).
compatible with lower versions.
· When you attempt to load a
• When used as a readout file, all parameters currently stored are read out.
parameter file of new version into a • When used as a write file, only the parameters specified by parameter labels are
controller of an earlier version, an written.
error "10.14 : Undefined parameter
found" may appear. If this happens,
you may load the parameter by setting Data format:
the "Skip undefined parameters"
parameter to "VALID". For more
details, refer to the "SYSTEM mode" – /parameter label/ ’ <comment> [cr/lf]
"Other parameters" section in the RC= xxxxxx [cr/lf]
robot controller owner's manual. /parameter label/ ’ <comment> [cr/lf]
R1= xxxxxx R2= yyyyyy [cr/lf]
/parameter label/ ’ <comment> [cr/lf]
A1= xxxxxx A2= yyyyyy A3= zzzzzz A4= rrrrrr[cr/lf]
/parameter label/ ’ <comment> [cr/lf]
:
[cr/lf]
203
14. Data file description
Example:
SEND PRM TO CMU
----------- Outputs all parameters from communication port as shown
below.
SEND CMU TO PRM
----------- Inputs all parameters from communication port as shown
2 Response:
below.
204
14. Data file description
Format:
/parameter label/
2
• Expresses a parameter label with 6 alphabetic characters.
• When used as a readout file, only the parameter specified by a parameter label is
read out.
• When used as a write file, only the parameter specified by a parameter label is
written.
Data format:
n· NOTE
Parameters can be written only when
Example:
SEND /ACCEL / TO CMU
the axis servo is off. ----------- Outputs the acceleration parameter from communication port
· Parameters are already compatible as shown below.
with upper versions. However, SEND CMU TO /ACCEL /
parameters might not always be
compatible with lower versions.
----- ------ Inputs the acceleration parameter from communication port
· When you attempt to load a as shown below.
parameter file of new version into a Response:
controller of an earlier version, an /ACCEL / ’Accel coefficient[%]
error "10.14 : Undefined parameter A1= 100 A2= 100 A3= 100 A4= 100[cr/lf]
found" may appear. If this happens, [cr/lf]
you may load the parameter by setting
the "Skip undefined parameters"
parameter to "VALID". For more
details, refer to the "SYSTEM mode" –
"Other parameters" section in the
robot controller owner's manual.
205
14. Data file description
2 Format:
SFT
Data format:
Example:
SEND SFT TO CMU
----------- Outputs all shift data from communication port as shown
below.
SEND CMU TO SFT
----------- Inputs all shift data from communication port as shown below.
Response:
S0 = 0.00 0.00 0.00 0.00[cr/lf]
SP0 = 0.00 0.00 0.00 0.00[cr/lf]
SM0 = 0.00 0.00 0.00 0.00[cr/lf]
S1 = 1.00 1.00 1.00 1.00[cr/lf]
:
SM9 = 9.00 9.00 9.00 9.00[cr/lf]
[cr/lf]
206
14. Data file description
Format:
Sm
2
• Expresses a specified shift definition.
• “m” must be from 0 to 9.
Data format:
● “m” is from 0 to 9.
● “f” represents a +, - or space.
● “xxxxxx”, “yyyyyy” … “rrrrrr” represent a numeric value of 8 digits or less, having
2 or less places below the decimal point.
● [cr/lf] indicates CR code (0Dh) + LF code (0Ah).
● A line may be up to 75 characters long.
Example:
SEND S0 TO CMU
----------- Outputs the specified shift coordinate definition data from
communication port as shown below.
SEND CMU TO S0
----------- Inputs the specified shift coordinate definition data from
communication port as shown below.
Response:
S0 = 0.00 0.00 0.00 0.00[cr/lf]
SP0 = 0.00 0.00 0.00 0.00[cr/lf]
SM0 = 0.00 0.00 0.00 0.00[cr/lf]
[cr/lf]
207
14. Data file description
2 Format:
HND
Data format:
● “m” represents a number from 0 to 7. 0 to 3 are used for the main robot, and 4 to 7
for the sub robot.
● “f” represents a +, - or space.
● “xxxxxx”, “yyyyyy”, “zzzzzz” represent a numeric value of 8 digits or less, having
2 or less places below the decimal point, or an integer of 7 digits or less. (This
numeric format depends on the robot type setting and hand definition type.)
● {R} indicates whether a hand is attached to the R-axis.
● [cr/lf] indicates CR code (0Dh) + LF code (0Ah).
● A line containing only [cr/lf] is added at the end of the file, indicating the end of
the file.
● A line may be up to 75 characters long.
Example:
SEND HND TO CMU
----------- Outputs all hand data from communication port as shown
below.
SEND CMU TO HND
----------- Inputs all hand data from communication port as shown below.
Response:
H0 = 0.00 0.00 0.00[cr/lf]
H1 = 1.00 1.00 1.00[cr/lf]
H2 = 2.00 2.00 2.00[cr/lf]
H3 = 3.00 3.00 3.00[cr/lf]
H4 = 4.00 4.00 4.00[cr/lf]
H5 = 5.00 5.00 5.00[cr/lf]
H6 = 6.00 6.00 6.00[cr/lf]
H7 = 7.00 7.00 7.00[cr/lf]
[cr/lf]
208
14. Data file description
Format:
Hm
2
• Expresses a specified hand definition.
• “m” must be from 0 to 7.
Data format:
● “m” is from 0 to 7. 0 to 3 are used for the main robot, and 4 to 7 for the sub robot.
● “f” represents a +, - or space.
● “xxxxxx”, “yyyyyy”, “zzzzzz” represent a numeric value of 8 digits or less, having
2 or less places below the decimal point, or an integer of 7 digits or less. (This
numeric format depends on the robot type setting and hand definition type.)
● {R} indicates whether a hand is attached to the R-axis.
● [cr/lf] indicates CR code (0Dh) + LF code (0Ah).
● A line may be up to 75 characters long.
Example:
SEND H3 TO CMU
----------- Outputs the specified hand definition data from
communication port as shown below.
SEND CMU TO H3
----------- Inputs the specified hand definition data from communication
port as shown below.
Response:
H3 = 3.00 3.00 3.00[cr/lf]
209
14. Data file description
2 Format:
PLT
Data format:
PLm [cr/lf]
PLN = XY [cr/lf]
NX = nnn [cr/lf]
NY = nnn [cr/lf]
NZ = nnn [cr/lf]
P[1] = fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]
:
P[5] = fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]
PLm [cr/lf]
:
[cr/lf]
210
14. Data file description
Example:
SEND PLT TO CMU
----------- Outputs all pallet definitions from communication port as
shown below.
SEND CMU TO PLT
----------- Inputs all pallet definitions from communication port as shown
Response:
below. 2
PL0[cr/lf]
PLN=XY[cr/lf]
NX= 3[cr/lf]
NY= 4[cr/lf]
NZ= 2[cr/lf]
P[1]= 0.00 0.00 0.00 0.00 0.00 0.00[cr/lf]
P[2]= 100.00 0.00 0.00 0.00 0.00 0.00[cr/lf]
P[3]= 0.00 100.00 0.00 0.00 0.00 0.00[cr/lf]
P[4]= 100.00 100.00 0.00 0.00 0.00 0.00[cr/lf]
P[5]= 0.00 0.00 50.00 0.00 0.00 0.00[cr/lf]
PL1[cr/lf]
PLN=XY[cr/lf]
NX= 3[cr/lf]
NY= 4[cr/lf]
NZ= 2[cr/lf]
P[1]= 0.00 0.00 0.00 0.00 0.00 0.00[cr/lf]
P[2]= 100.00 100.00 0.00 0.00 0.00 0.00[cr/lf]
P[3]= 0.00 200.00 0.00 0.00 0.00 0.00[cr/lf]
P[4]= 100.00 200.00 0.00 0.00 0.00 0.00[cr/lf]
P[5]= 0.00 0.00 100.00 0.00 0.00 0.00[cr/lf]
[cr/lf]
211
14. Data file description
Format:
PLm
2 • Expresses a specified pallet definition.
• “m” must be from 0 to 19.
Data format:
PLm [cr/lf]
PLN = XY [cr/lf]
NX = nnn [cr/lf]
NY = nnn [cr/lf]
NZ = nnn [cr/lf]
P[1] = fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]
:
P[5] = fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]
[cr/lf]
Example:
SEND PL2 TO CMU
----------- Outputs the specified pallet definition from communication
port as shown below.
SEND CMU TO PL2
----------- Inputs the specified pallet definition from communication port
as shown below.
Response:
PL2[cr/lf]
PLN=XY[cr/lf]
NX= 3[cr/lf]
NY= 3[cr/lf]
NZ= 2[cr/lf]
P[1]= 100.00 100.00 50.00 90.00 0.00 0.00[cr/lf]
n Integers
P[2]= 200.00 100.00 50.00 90.00 0.00 0.00[cr/lf]
NOTE
P[3]= 100.00 200.00 50.00 90.00 0.00 0.00[cr/lf]
indicate point data in “pulse”
P[4]= 200.00 200.00 50.00 90.00 0.00 0.00[cr/lf]
units, and real numbers (containing a
P[5]= 100.00 10.00 100.00 90.00 0.00 0.00[cr/lf]
decimal point) in “mm” units.
[cr/lf]
212
14. Data file description
Format: 2
ALL
Data format:
[PGM]
All program format
[PNT]
All point format
[PCM]
All point comment format
[PRM]
All parameter format
[SFT]
All shift data format
[HND]
All hand data format
[PLT]
All pallet data format
[END]
n• NOTE
For more details on each file, see the
Example:
SEND ALL TO CMU
description of each file. ----------- Outputs all files of the entire system from communication
• The [xxx] identifiers are used to
port.
determine the file format from the next
SEND CMU TO ALL
line.
• [END] indicates the end of all files. ----------- Inputs all files of the entire system from communication port.
213
14. Data file description
2 Format:
DIR
Data format:
Example:
SEND DIR TO CMU
----------- Outputs information on all program directory from
communication port as shown below.
Response:
No. Name Line Byte RW/RO Date Time[cr/lf]
1o* 12345678 5 21 RW 01/06/20 10:35[cr/lf]
2 PGM1 5 66 RW 01/06/20 10:35[cr/lf]
3 PGM2 5 66 RW 01/06/20 10:35[cr/lf]
4 PGM3 5 66 RW 01/06/20 10:35[cr/lf]
5 PGM4 5 66 RW 01/06/20 10:35[cr/lf]
6 PGM5 5 66 RW 01/06/20 10:35[cr/lf]
7 PGM6 5 66 RW 01/06/20 10:35[cr/lf]
8s SEQUENCE 1 15 RW 01/06/20 10:35[cr/lf]
END[cr/lf]
214
14. Data file description
Format:
<<program name>>
2
• Expresses information on one program.
Data format:
Example:
SEND <<TEST>> TO CMU
----------- Outputs information on the specified program from
communication port as shown below.
Response:
No. Name Line Byte RW/RO Date Time[cr/lf]
3o* PGM2 5 66 RW 01/06/20 10:35[cr/lf]
215
14. Data file description
2 Format:
DPM
Data format:
Example:
SEND DPM TO CMU
----------- Outputs information on all parameter directory from
communication port as shown below.
Response:
/RBTNUM/ ’Robot number(V8.01/R1001)[cr/lf]
/AXES / ’Number of axes[cr/lf]
/AXSNUM/ ’Axis number (V1.01/V1.01/V1.01/V1.01/-----/-----/-----/-----/)[cr/lf]
/ATTRIB/ ’Axis attribute[cr/lf]
/WEIGHT/ ’Tip weight[kg][cr/lf]
/ORIGIN/ ’Origin sequence[cr/lf]
/RORIEN/ ’R axis orientation[cr/lf]
:
/CURPNO/ ’Port number of output[cr/lf]
/CURPT1/ ’Compare point number1[cr/lf]
/CURPT2/ ’Compare point number2[cr/lf]
[cr/lf]
216
14. Data file description
Data format:
217
14. Data file description
Example:
SEND VAR TO CMU
----------- Outputs all global variables from communication port as
shown below.
Response:
SGI0=0[cr/lf]
2 SGI1=1111[cr/lf]
SGI2=2222[cr/lf]
SGI3=3333[cr/lf]
SGI4=4444[cr/lf]
SGI5=5555[cr/lf]
SGI6=6666[cr/lf]
SGI7=7777[cr/lf]
SGR0=0[cr/lf]
SGR1=1.1111E3[cr/lf]
SGR2=2.2222E3[cr/lf]
SGR3=3.3333E3[cr/lf]
SGR4=4.4444E3[cr/lf]
SGR5=5.5555E3[cr/lf]
SGR6=6.6666E3[cr/lf]
SGR7=7.7777E3[cr/lf]
B1%=111[cr/lf]
B2%=222[cr/lf]
C1$=”CNS_1”[cr/lf]
C2$=”CNS_2”[cr/lf]
[cr/lf]
218
14. Data file description
Format:
<variable name>t
2
• Expressed one variable.
Data format:
xxxxxx [cr/lf]
Example:
n• NOTE
SGIx indicates an integer type static
SEND SGI6 TO CMU[cr/lf]
----------- Outputs the specified variable SGI6 from communication port
variable.
• SGRx indicates a real type static as shown below.
variable. Response:
• Dynamic global variables are 6666[cr/lf]
registered during compiling. Variables
cannot be referred to unless they are
registered.
219
14. Data file description
2 Format:
”<character string>”
Data format:
sssss…ssssss[cr/lf]
Example:
SEND”””YAMAHA ROBOT””” TO CMU
----------- Outputs the specified character string from communication
port as shown below.
Response:
”YAMAHA ROBOT”[cr/lf]
220
14. Data file description
Format: 2
ARY
Data format:
● <Variable name> is a global array variable defined by the DIM statement in the
program.
● <Variable name> is shown with 16 characters or less consisting of alphanumeric
characters and underscore ( _ ).
● “t” indicates a type of variable. (!: real type, %: integer type, $: character type)
● “l”, “m” and “n” indicate array arguments.
● “xxxxx” differs depending on the type of variable.
Integer type: integer of 8 digits or less
Real type: real number of 7 digits or less including decimal fractions
Character type: character string of 70 characters or less
● [cr/lf] shows CR code (0Dh) + LF code (0Ah).
● A line containing only [cr/lf] is added at the end of the file, indicating the end of
the file.
● A line may be up to 75 characters long.
221
14. Data file description
Example:
SEND ARY TO CMU
----------- Outputs all global array variables from communication port
as shown below.
Response:
A!(0)=0[cr/lf]
2 A!(1)=1.E2[cr/lf]
A!(2)=2.E2[cr/lf]
B%(0,0)=0[cr/lf]
B%(0,1)=1111[cr/lf]
B%(1,0)=2222[cr/lf]
B%(1,1)=3333[cr/lf]
C$(0,0,0)=”ARY1”[cr/lf]
C$(0,0,1)=”ARY2”[cr/lf]
C$(0,1,0)=”ARY3”[cr/lf]
C$(0,1,1)=”ARY4”[cr/lf]
C$(1,0,0)=”ARY5”[cr/lf]
C$(1,0,1)=”ARY6”[cr/lf]
C$(1,1,0)=”ARY7”[cr/lf]
C$(1,1,1)=”ARY8”[cr/lf]
[cr/lf]
222
14. Data file description
Format:
<variable name>t(l{,m{,n}})
2
• Expresses one array variable.
Data format:
xxxxxx [cr/lf]
● <Variable name> is a global array variable defined by the DIM statement in the
program.
● <Variable name> is shown with 16 characters or less consisting of alphanumeric
characters and underscore ( _ ).
● “t” indicates a type of variable. (!: real type, %: integer type, $: character type)
● “l”, “m” and “n” indicate array arguments.
● “xxxxx” differs depending on the type of variable.
Integer type: integer of 8 digits or less
Real type: real number of 7 digits or less including decimal fractions
Character type: character string of 70 characters or less
● [cr/lf] shows CR code (0Dh) + LF code (0Ah).
Example:
SEND CMU TO C1$(2)[cr/lf]
----------- Inputs the specified array variable C1$(2) from
n Array
NOTE
variables defined by the DIM communication port as shown below.
statement are registered during
compiling. Array variables cannot be Response:
referred to unless they are registered. YAMAHA ROBOT[cr/lf]
223
14. Data file description
14.14 DI file
2 Format:
DI()
Data format:
DI0()=&Bnnnnnnnn [cr/lf]
DI1()=&Bnnnnnnnn [cr/lf]
:
DI27()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND DI() TO CMU
----------- Outputs all DI information from communication port as shown
below.
Response:
DI0()=&B10001001[cr/lf]
DI1()=&B00000010[cr/lf]
DI2()=&B00000000[cr/lf]
:
DI7()=&B00000000[cr/lf]
DI10()=&B00000000[cr/lf]
DI11()=&B00000000[cr/lf]
DI12()=&B00000000[cr/lf]
:
DI17()=&B00000000[cr/lf]
DI20()=&B00000000[cr/lf]
:
DI26()=&B00000000[cr/lf]
DI27()=&B00000000[cr/lf]
[cr/lf]
224
14. Data file description
DIm()
Data format:
DIm()=&Bnnnnnnnn[cr/lf]
Example:
SEND DI5() TO CMU
----------- Outputs the DI5 port status from communication port as
shown below.
Response:
DI5()=&B00000000[cr/lf]
225
14. Data file description
14.15 DO file
2 Format:
DO()
Data format:
DO0()=&Bnnnnnnnn [cr/lf]
DO1()=&Bnnnnnnnn [cr/lf]
:
DO27()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND DO() TO CMU
----------- Outputs all DO information from communication port as
shown below.
Response:
DO0()=&B10001001[cr/lf]
DO1()=&B00000010[cr/lf]
DO2()=&B00000000[cr/lf]
:
DO7()=&B00000000[cr/lf]
DO10()=&B00000000[cr/lf]
DO11()=&B00000000[cr/lf]
DO12()=&B00000000[cr/lf]
:
DO17()=&B00000000[cr/lf]
DO20()=&B00000000[cr/lf]
:
DO26()=&B00000000[cr/lf]
DO27()=&B00000000[cr/lf]
[cr/lf]
226
14. Data file description
Format:
DOm()
2
• Expresses the status of one DO port.
• When used as a readout file, the specified DO port status is read out.
• When used as a write file, the value is written to the specified DO port. However,
writing to DO0() and DO1() is prohibited.
Data format:
Readout file
DOm()=&Bnnnnnnnn[cr/lf]
Write file
&Bnnnnnnnn[cr/lf] or k[cr/lf]
n Writing
NOTE
to DO0() and DO1() is
Example 1:
SEND DO5() TO CMU
prohibited. ----------- Outputs the DO5 port status from communication port as
shown below.
Response:
DO5()=&B00000000[cr/lf]
Example 2:
SEND CMU TO DO5()
----------- Inputs the DO5 port status from communication port as shown
below.
&B00000111
Response:
OK[cr/lf]
227
14. Data file description
14.16 MO file
2 Format:
MO()
Data format:
MO0()=&Bnnnnnnnn [cr/lf]
MO1()=&Bnnnnnnnn [cr/lf]
:
MO27()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND MO() TO CMU
----------- Outputs all MO information from communication port as
shown below.
Response:
MO0()=&B10001001[cr/lf]
MO1()=&B00000010[cr/lf]
MO2()=&B00000000[cr/lf]
:
MO7()=&B00000000[cr/lf]
MO10()=&B00000000[cr/lf]
MO11()=&B00000000[cr/lf]
MO12()=&B00000000[cr/lf]
:
MO17()=&B00000000[cr/lf]
MO20()=&B00000000[cr/lf]
:
MO26()=&B00000000[cr/lf]
MO27()=&B00000000[cr/lf]
[cr/lf]
228
14. Data file description
Format:
MOm()
2
• Expresses the status of one MO port.
• When used as a readout file, the specified MO port status is read out.
• When used as a write file, the value is written to the specified MO port. However,
writing to MO0() and MO1() is prohibited.
Data format:
Readout file
MOm()=&Bnnnnnnnn[cr/lf]
Write file
&Bnnnnnnnn[cr/lf] or k[cr/lf]
n Writing
NOTE
to MO0() and MO1() is
Example 1:
SEND MO5() TO CMU
prohibited. ----------- Outputs the MO5 port status from communication port as
shown below.
Response:
MO5()=&B00000000[cr/lf]
Example 2:
SEND CMU TO MO5()
----------- Inputs the MO5 port status from communication port as shown
below.
&B00000111
Response:
OK[cr/lf]
229
14. Data file description
14.17 LO file
2 Format:
LO()
Data format:
LO0()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND LO() TO CMU
----------- Outputs all LO information from communication port as
shown below.
Response:
LO0()=&B10001001[cr/lf]
[cr/lf]
230
14. Data file description
Format:
LO0 ()
2
• Expresses the status of one LO port.
• When used as a readout file, the specified LO port status is read out.
• When used as a write file, the value is written to the specified LO port.
Data format:
Readout file
LO0()=&Bnnnnnnnn[cr/lf]
Write file
&Bnnnnnnnn[cr/lf] or k[cr/lf]
Example 1:
SEND LO0() TO CMU
----------- Outputs the LO0 port status from communication port as
shown below.
Response:
LO0()=&B00000000[cr/lf]
Example 2:
SEND CMU TO LO0()
----------- Inputs the LO0 port status from communication port as shown
below.
&B00000111
Response:
OK[cr/lf]
231
14. Data file description
14.18 TO file
2 Format:
TO()
Data format:
TO0()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND TO() TO CMU
----------- Outputs all TO information from communication port as
shown below.
Response:
TO0()=&B10001001[cr/lf]
[cr/lf]
232
14. Data file description
Format:
TO0()
2
• Expresses the status of one TO port.
• When used as a readout file, the specified TO port status is read out.
• When used as a write file, the value is written to the specified TO port.
Data format:
Readout file
TO0()=&Bnnnnnnnn[cr/lf]
Write file
&Bnnnnnnnn[cr/lf] or k[cr/lf]
Example 1:
SEND TO0() TO CMU
----------- Outputs the TO0 port status from communication port as
shown below.
Response:
TO0()=&B00000000[cr/lf]
Example 2:
SEND CMU TO TO0()
----------- Inputs the TO0 port status from communication port as shown
below.
&B00000111
Response:
OK[cr/lf]
233
14. Data file description
14.19 SI file
2 Format:
SI()
Data format:
SI0()=&Bnnnnnnnn [cr/lf]
SI1()=&Bnnnnnnnn [cr/lf]
:
SI27()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND SI() TO CMU
----------- Outputs all SI information from communication port as shown
below.
Response:
SI0()=&B10001001[cr/lf]
SI1()=&B00000010[cr/lf]
SI2()=&B00000000[cr/lf]
:
SI7()=&B00000000[cr/lf]
SI10()=&B00000000[cr/lf]
SI11()=&B00000000[cr/lf]
SI12()=&B00000000[cr/lf]
:
SI17()=&B00000000[cr/lf]
SI20()=&B00000000[cr/lf]
:
SI26()=&B00000000[cr/lf]
SI27()=&B00000000[cr/lf]
[cr/lf]
234
14. Data file description
Format:
SIm()
2
• Expresses the status of one SI port.
• When used as a readout file, the specified SI port status is read out.
• Cannot be used as a write file.
Data format:
SIm()=&Bnnnnnnnn[cr/lf]
Example:
SEND SI5() TO CMU
----------- Outputs the SI5 port status from communication port as shown
below.
Response:
SI5()=&B00000000[cr/lf]
235
14. Data file description
14.20 SO file
2 Format:
SO()
Data format:
SO0()=&Bnnnnnnnn [cr/lf]
SO1()=&Bnnnnnnnn [cr/lf]
:
SO27()=&Bnnnnnnnn [cr/lf]
[cr/lf]
Example:
SEND SO() TO CMU
----------- Outputs all SO information from communication port as
shown below.
Response:
SO0()=&B10001001[cr/lf]
SO1()=&B00000010[cr/lf]
SO2()=&B00000000[cr/lf]
:
SO7()=&B00000000[cr/lf]
SO10()=&B00000000[cr/lf]
SO11()=&B00000000[cr/lf]
SO12()=&B00000000[cr/lf]
:
SO17()=&B00000000[cr/lf]
SO20()=&B00000000[cr/lf]
:
SO26()=&B00000000[cr/lf]
SO27()=&B00000000[cr/lf]
[cr/lf]
236
14. Data file description
Format:
SOm()
2
• Expresses the output status of one SO port.
• When used as a readout file, the specified SO port status is read out.
• When used as a write file, the value is written to the specified SO port. However,
writing to SO0() and SO1() is prohibited.
Data format:
Readout file
SOm()=&Bnnnnnnnn[cr/lf]
Write file
&Bnnnnnnnn[cr/lf] or k[cr/lf]
Example 1:
SEND SO5() TO CMU
----------- Outputs the SO5 port status from communication port as
shown below.
Response:
SO5()=&B00000000[cr/lf]
Example 2:
SEND CMU TO SO5()
----------- Inputs the SO5 port status from communication port as shown
below.
n Writing
NOTE
to SO0() and SO1() is
&B00000111
prohibited.
Response:
OK[cr/lf]
237
14. Data file description
2 Format:
LOG
Data format:
nnn:yy/mm/dd,hh:mm:ss gg.bb:msg[cr/lf]
nnn:yy/mm/dd,hh:mm:ss gg.bb:msg[cr/lf]
:
nnn:yy/mm/dd,hh:mm:ss gg.bb:msg[cr/lf]
[cr/lf]
Example:
SEND LOG TO CMU
----------- Outputs all error message history from communication port
as shown below.
238
14. Data file description
• Expresses the machine reference data obtained after return-to-origin has been
performed.
• Reads out all machine reference data when used as a readout file.
• Cannot be used as a write file.
Data format:
Example:
SEND MRF TO CMU
----------- Outputs all machine reference data from communication port
as shown below.
Response:
M1= 55% M2= 23% M3= 33% M4= 26%[cr/lf]
[cr/lf]
239
14. Data file description
2 Format:
EOF
Data format:
^ Z (=1Ah)
Example:
SEND PGM TO CMU
SEND EOF TO CMU
----------- Outputs EOF data from communication port as shown below.
n When
NOTE
transmitting data to an external
device through the communication NAME=TEST1[cr/lf]
port, the EOF data can be used to add A=1[cr/lf]
a ^Z code at the end of file. :
HALT[cr/lf]
[cr/lf]
^Z
240
14. Data file description
Format: 2
CMU
Example:
SEND PNT TO CMU
----------- Outputs all point data from communication port.
SEND CMU TO PNT
----------- Inputs all point data from communication port.
241
14. Data file description
2 c SIW
CAUTION
is enabled only when the
Format:
Data format:
Example:
SEND SIW() TO CMU
----------- Outputs all SIW data from communication port as shown
below.
Response:
SIW( 0)=&H1001[cr/lf]
SIW( 1)=&H0010[cr/lf]
SIW( 2)=&H0000[cr/lf]
:
SIW(15)=&H0000[cr/lf]
[cr/lf]
242
14. Data file description
Format:
c SIW
CAUTION
is enabled only when the
software version is V8.08 or later.
SIW(m)
2
• Expresses one SIW state.
• Reads out the designated SIW information in hexadecimal when used as a readout
file.
• Cannot be used as a write file.
Data format:
SIW(m)=&Hnnnn [cr/lf]
Example:
SEND SIW(5) TO CMU
----------- Outputs SIW (5) from communication port as shown below.
Response:
SIW( 5)=&H1001[cr/lf]
243
14. Data file description
2 Format:
c SOW
CAUTION
is enabled only when the
SOW()
software version is V8.08 or later.
• Expresses all SOW data.
• Reads out all SOW information in hexadecimal when used as a readout file.
• Cannot be used as a write file.
Data format:
Example:
SEND SOW() TO CMU
----------- Outputs all SOW data from communication port as shown
below.
Response:
SOW( 0)=&H1001[cr/lf]
SOW( 1)=&H0010[cr/lf]
SOW( 2)=&H0000[cr/lf]
:
SOW(15)=&H0000[cr/lf]
[cr/lf]
244
14. Data file description
Format:
c SOW
CAUTION
is enabled only when the
software version is V8.08 or later.
SOW(m)
2
• Expresses one SOW state.
• Reads out the designated SOW information in hexadecimal when used as a readout
file.
• When used as a write file, the value is written to the designated SOW. However,
writing to SOW (0) and SOW (1) is prohibited.
Data format:
SOW(m)=&Hnnnn [cr/lf]
nWriting
NOTE
to SOW (0) and SOW (1) is
Example1:
SEND SOW(5) TO CMU
prohibited. ----------- Outputs SOW (5) from communication port as shown below.
Response:
SOW( 5)=&H1001[cr/lf]
Example2:
SEND CMU TO SOW(5)
----------- Outputs SOW (5) from communication port as shown below.
&H1001
Response:
OK[cr/lf]
245
15. User program examples
Processing flow
START
STOP
Program example
MOVE P, 300.00 300.00 50.00 90.00 0.00 0.00
MOVE P, 300.00 100.00 0.00 0.00 0.00 0.00
MOVE P, 200.00 200.00 10.00 -90.00 0.00 0.00
HALT
246
15. User program examples
Processing flow
START
PTP movement to P0
PTP movement to P1
PTP movement to P2
PTP movement to P3
PTP movement to P4
PTP movement to P5
STOP
Program example
MOVE P, P0 FOR J=0 TO 5
MOVE P, P1 MOVE P,P[J]
MOVE P, P2 NEXT J
MOVE P, P3 or HALT
MOVE P, P4
MOVE P, P5
HALT
247
15. User program examples
P5
Shift Coordinate P4
S0
→ X+
0 Shift
100 Coordinate
S1
140
Processing flow
START
STOP
Program example
SHIFT S0
FOR J=3 TO 5
MOVE P, P[J]
NEXT J
SHIFT S1
FOR K=3 TO 5
MOVE P,P[K]
NEXT K
HALT
248
15. User program examples
15.1.4 Palletizing
Overview
Repetitive movement between a fixed work supply position P0 and each of the equally 2
spaced points on a pallet can be performed with the following program. In the drawing
below, points N1 to N20 are on Cartesian coordinates, consisting of 5 points positioned at
a 50mm pitch in the X-axis direction and 4 points at a 25mm pitch in the Y-axis direction.
The robot arm moves from point to point in the order of P0-N1-P0-N2...N5-P0-N6-P0...
while repeatedly moving back and forth between point P0 and each pallet.
Work supply position : P0= 0.0 0.0 0.0 0.0 0.0 0.0
X-axis pitch : P10= 50.0 0.0 0.0 0.0 0.0 0.0
Y-axis pitch : P20= 0.0 25.0 0.0 0.0 0.0 0.0
N1 position : P1= 100.0 50.0 0.0 0.0 0.0 0.0
N6 N7 N8 N9 N10
25 X+
N1 N2 N3 N4 N5
→
50 P0
Processing flow
START
P200=P1
P100=P1
Movement to P0
Repeat 5 times Movement to P100
P100=P100+P10
P200=P200+P20
Repeat 4 times P100=P200
STOP
249
15. User program examples
Program Example
SHIFT S1
P100=P1
P200=P1
FOR J=1 TO 4
FOR K=1 TO 5
2 SHIFT S0
MOVE P,P0
SHIFT S1
MOVE P,P100
P100=P100+P10
NEXT K
P200=P200+P20
P100=P200
NEXT J
Overview
Repetitive movement between a fixed work supply position P0 and each of the equally
spaced points on a pallet can be performed with the following program. In the drawing
below, points N1 to N24 are on Cartesian coordinates, consisting of 3 points positioned at
a 50mm pitch in the X-axis direction, 4 points at a 50mm pitch in the Y-axis direction, and
2 points at 100mm pitch in the Z-axis direction. The robot arm moves from point to point
in the order of P0-N1-P0-N2...-N5-P0-N6... while repeatedly moving back and forth
between point P0 and each pallet.
P3998 P3999
NZ
NY
P0 P3996 P3997
NX
250
15. User program examples
Processing flow
START
Pallet definition
Point assignment
2
Movement to P0
Repeat 24 times
Pallet movement
STOP
Program example
FOR I=1 TO 24
MOVE P,P0,Z=0.00
PMOVE (0,I),Z=0.00
NEXT I
MOVE P,P0,Z=0.00
HALT
251
15. User program examples
START
N=1
Y
DI2 (1)=“1”?
END
N
Set all of DO2 ( ) to “0”.
Wait 0.5 seconds
N=N+1
Program example
WAIT DI2( )=0
DO2( )=&B11111111
DELAY 1000
WAIT DI2(0)=1
N=1
*LOOP1:
IF DI2(1)=1 THEN *PROGEND
IF N>20 THEN *ALLEND
DO2( )=0
DELAY 500
N=N+1
GOTO *LOOP1
’END ROUTINE
*PROGEND:
DO2(7,6,1,0)=&B1111
DELAY 2000
DO2( )=0
*ALLEND:
HALT
252
15. User program examples
15.2 Application
P3 30mm P4
50mm
P1 P2
Point A Point B
Precondition
1. Set the robot movement path.
P3→P1→P3→P4→P2→P4
Locate P3 and P4 respectively at a position 50mm above P1 and P2 and set the P1
and P2 positions by teaching.
2. I/O signal
DO2 (0) Chuck (gripper) open/close = 0: open, 1: close
A 0.1 second wait time is set during chuck open and close.
253
15. User program examples
Program examples
(1) When calculating to find P3 and P4
P3=P1
P4=P2
LOCZ(P3)=LOCZ(P3)-50.0
2 LOCZ(P4)=LOCZ(P4)-50.0
MOVE P,P3
GOSUB *OPEN
MOVE P,P1
GOSUB *CLOSE
MOVE P,P3
MOVE P,P4
MOVE P,P2
GOSUB *OPEN
MOVE P,P4
HALT
*OPEN:
DO2(0)=0
DELAY 100
RETURN
*CLOSE:
DO2(0)=1
DELAY 100
RETURN
254
15. User program examples
15.2.2 Palletizing
Overview
The following is an example for picking up parts supplied from the parts feeder and
placing them on a pallet on the conveyor. The pallet is ejected when full.
Z
2
0
50mm
P1
P1 P0
Robot
P0
Parts feeder
Precondition
1. I/O signal
Robot hand open/close time is 0.1 second and pallet eject time is 0.5 seconds.
3. Vertical movement is performed to a position Z=50mm above the pallet and parts
feeder.
255
15. User program examples
Program example 1
WHILE -1
FOR A=0 TO 2
FOR B=0 TO 2
WAIT DI(31)=1
WAIT DI(30)=1
2 DO(30)=0
DELAY 100
MOVE P,P0,Z=50.0
DO(30)=1
DELAY 100
P100=P1+P10*B+P11*A
MOVE P,P100,Z=50.0
DO(30)=0
DELAY 100
NEXT
NEXT
DRIVE (3,0)
DO(31)=1
DELAY 500
DO(31)=0
WEND
HALT
Program example 2
* When defined in pallet 0
WHILE -1
FOR A=1 TO 9
WAIT DI(31)=1
WAIT DI(30)=1
DO(30)=0
DELAY 100
MOVE P,P0,Z=50.0
DO(30)=1
DELAY 100
PMOVE(0,A),Z=50.0
DO(30)=0
DELAY 100
NEXT
DRIVE(3,0)
DO(31)=1
DELAY 500
DO(31)=0
WEND
HALT
256
15. User program examples
P5 P1 P2 P3
Conveyor Block 1 Block 2 Block 3
Precondition
1. I/O signal
P1 Bottom of block 1
P2 Bottom of block 2
P3 Bottom of block 3
P5 Position on conveyor
3. Movement proceeds at maximum speeds but slows down when in proximity to the
part.
High speed
P4=WHERE
Set the current position
P4=WHERE
into point data (P4).
Slow down
Move to P1
P5 P1
4. Use a STOPON condition in the MOVE statement for sensor detection during
movement.
257
15. User program examples
Program example
FOR A=1 TO 3
SPEED 100
GOSUB *OPEN
P6=P[A]
LOCZ(P6)=0.00
2 MOVE P,P6,Z=0.0
WHILE -1
SPEED 20
MOVE P,P[A],STOPON DI3(0)=1
IF DI3(0)=0 THEN *L1
’SENSOR ON
P4=JTOXY(WHERE)
GOSUB *CLOSE
SPEED 100
MOVE P,P5,Z=0.0
GOSUB *OPEN
MOVE P,P4,Z=0.0
WEND
*L1: ’SENSOR OFF
NEXT A
SPEED 100
DRIVE (3,0)
HALT
*OPEN:
DO3(0)=0
DELAY 100
RETURN
*CLOSE:
DO3(0)=1
DELAY 100
RETURN
258
15. User program examples
P1 P2 P3 P4
A B C D
A’ B’ C’ D’
P11 P12 P13 P14
Precondition
n*1:NOTE
As the start signal, supply a 0.1
1. I/O signal
2. The main task (task 1) is used to test part 1 and the subtask (task 2) is used to test
part 2.
3. An exclusive control flag is used to allow other tasks to run while waiting for the
test completion signal from the testing device.
FLAG1 = 1 : Task 1 busy (Task 2 is kept waiting)
= 0 : Task 1 ready (Task 2 operable)
FLAG2 = 1 : Task 2 busy (Task 1 is kept waiting)
= 0 : Task 2 ready (Task 1 operable)
259
15. User program examples
4. Flow chart
START
N
Part 1 supplied?
Y
Task 2 busy?
N
Exclusive control flag set FLAG1=1
Chuck open
Chuck close
Chuck open
N
Test completed?
Y Task 2 busy?
N
Exclusive control flag set
FLAG1=1
Move to testing device 1
Chuck close
N
Part OK?
Y Y
Y Y
OK parts? NG parts?
N N
Move to OK parts position Move to NG parts position
Chuck open
260
15. User program examples
Program example
FLAG1=0
FLAG2=0
UPPOS=0.0
START *S1,T2 Subtask Start
2
*L1: *S1:
WAIT DI4(0)=1 Part supply standby WAIT DI4(1)=1
WAIT FLAG2=0 Task completion standby WAIT FLAG1=0
FLAG1=1 Exclusive control flag set FLAG2=1
GOSUB *OPEN Chuck open GOSUB *OPEN
MOVE P,P1,Z=UPPOS Move to part supply position MOVE P,P11,Z=UPPOS
GOSUB *CLOSE Chuck close GOSUB *CLOSE
MOVE P,P2,Z=UPPOS Move to testing device MOVE P,P12,Z=UPPOS
GOSUB *OPEN Chuck open GOSUB *OPEN
DRIVEI (3,-10000) Move Z-axis upward Z 10,000 pulses DRIVEI (3,-10000)
FLAG1=0 Exclusive control flag reset FLAG2=0
DO2(0)=1 Testing device start DO2(3)=1
DELAY 100 DELAY 100
DO2(0)=0 DO2(3)=0
WAIT DI3(0)=1 Test completion standby WAIT DI3(4)=1
WAIT FLAG2=0 Task completion standby WAIT FLAG1=0
FLAG1=1 Exclusive control flag set FLAG2=1
MOVE P,P2,Z=UPPOS Move to testing device MOVE P,P12,Z=UPPOS
GOSUB *CLOSE Chuck close GOSUB *CLOSE
IF DI3(1)=1 THEN Test IF DI3(5)=1 THEN
’GOOD ’GOOD
WAIT DI4(2)=0 Part movement standby WAIT DI4(4)=0
MOVE P,P3,Z=UPPOS Move to OK parts position MOVE P,P13,Z=UPPOS
ELSE ELSE
’NG ’NG
WAIT DI4(3)=0 Part movement standby WAIT DI4(5)=0
MOVE P,P4,Z=UPPOS Move to NG parts position MOVE P,P14,Z=UPPOS
ENDIF ENDIF
GOSUB *OPEN Chuck open GOSUB *OPEN
DRIVEI (3,-10000) Move Z-axis upward 10,000 pulses DRIVEI (3,-10000)
FLAG1=0 Exclusive control flag reset FLAG2=0
GOTO *L1 GOTO *S1
*OPEN:
DO2(7)=0
DELAY 100
RETURN
*CLOSE:
DO2(7)=1
DELAY 100
RETURN
261
15. User program examples
15.2.5 Sealing
Overview
This section shows an example of the parts sealing operation.
P5 P4
2 P3
P2
20mm
P6 P7
P0 P1
10mm
Precondition
1. I/O signal
2. Set P0 - P7 by teaching.
Program example
MOVE P,P0,Z=0
SPEED 40
PATH SET Start of path setting
PATH L,P1,DO(20)[email protected] Start of coating at 10 mm position
PATH L,P2
PATH C,P3,P4
Path setting
PATH L,P5
(Robot does not operate.)
PATH L,P6,S=30
PATH L,P7,DO(20)[email protected] End of coating at 20 mm position
PATH END End of path setting
PATH START Execute PATH motion (Robot starts from P0 and stops at P7.)
HALT
262
15. User program examples
263
15. User program examples
2 Precondition
1. Input to the external device from the controller
SDATA/X/Y [cr]
n• NOTE
"SEND xxx TO CMU" outputs the
Program example
'INT
contents specified by "xxx" through VCMD$="SDATA/X/Y"
the RS-232C. VIN$=""
• "SEND CMU TO xxx" sends data into VX$=""
the files specified by "xxx" through the VY$=""
RS-232C. P0 = 0.00 0.00 0.00 0.00 0.00 0.00
• The LEN ( ) function obtains the P11 = 100.00 100.00 0.00 0.00 0.00 0.00
length of the character string. 'MAIN ROUTINE
• The MID$ ( ) function obtains the MOVE P, P0
specified character string from among *ST:
the character strings. SEND VCMD$ TO CMU
• The VAL ( ) function obtains the value SEND CMU TO VIN$
I=1
from the character string.
VMAX=LEN(VIN$)
*LOOP:
IF I>VMAX THEN GOTO *E_LOOP
C$=MID$(VIN$,I ,1)
IF C$="X"THEN
I=I+2
J=I
*X_LOOP:
C$=MID$(VIN$, J, 1)
IF C$="," THEN
*X1_LP:
L=J-I
VX$=MID$(VIN$, I, L)
I=J+1
GOTO *LOOP
ENDIF
J=J+1
IF J>VMAX THEN GOTO *X1_LP
GOTO *X_LOOP
ENDIF
IF C$="Y" THEN
I=I+2
J=I
*Y_LOOP:
C$=MID$(VIN$, J, 1)
IF C$=","THEN
*Y1_LP:
L=J-I
VY$=MID$(VIN$, I, L)
I=J+1
GOTO *LOOP
ENDIF
J=J+1
IF J>VMAX THEN GOTO *Y1_LP
GOTO *Y_LOOP
END IF
I=I+1
GOTO *LOOP
*E_LOOP:
WX=VAL(VX$)
WY=VAL(VY$)
LOCX(P11)=WX
LOCY(P11)=WY
MOVE P, P11
GOTO *ST
264
16. Sequence function
Besides normal robot programs, this controller can execute high-speed processing programs (sequence
programs) in response to the robot input/output (DI, DO, MO, LO TO, SI, SO) signals. This means
that two different programs (robot program and sequence program) can be executed at the same
time.
The sequence program runs according to its own cycle in “AUTO” or “MANUAL” mode, regardless
of the execution or stopping of a robot program. The sequence program starts running as soon as
the controller is turned on (that is, in “MANUAL” mode), so it can be used to monitor the status of
sensors, push button switches, solenoid valves, etc.
The sequence program can be written in the same robot language used for robot programs. This
eliminates the need to learn a new language and making it easier to program.
Next, create a sequence program the same way as you create a robot program. The
commands that may be used are explained later.
Fig. 16-1-1-2 Creating a sequence program
PROGRAM>EDIT <SEQUENCE>
1 2 3
1 DO(20)=DI(21) AND DI(22)
2 MO(30)=DO(23) OR DI(22)
3 MO(31)= ˜ MO(30)
4 DO(21)=(DI(36) OR DI(25))AND DI(2
5 DO(30)=MO(30) OR DI_
SELECT COPY CUT PASTE BS
265
16. Sequence function
16.1.2 Compiling
After editing the program, it must be compiled as a sequence program. Compiling is
performed in the same way as for robot programs. Press the F 5 (COMPILE) key on
the highest-level screen in “PROGRAM” mode (Fig. 16-1-2-1).
2 Fig. 16-1-2-1 Sequence program
PROGRAM <SEQUENCE>
1 2 3
1 DO(20)=DI(21) AND DI(22)
2 MO(30)=DO(23) OR DI(22)
3 MO(31)= ˜ MO(30)
4 DO(21)=(DI(36) OR DI(25))AND DI(2
5 DO(30)=MO(30) OR DI(27)
EDIT DIR COMPILE
A check message appears asking if you want to compile the sequence program. (Fig. 16-
1-2-2) Press the F 4 (YES) key to compile the program. To cancel this compiling,
press the F 5 (NO) key. The display changes to the compiling screen for normal robot
programs.
Fig. 16-1-2-2 Compiling the sequence program
PROGRAM>COMPILE <SEQUENCE>
1 2 3
1 DO(20)=DI(21) AND DI(22)
2 MO(30)=DO(23) OR DI(22)
3 MO(31)= ˜ MO(30)
4 DO(21)=(DI(36) OR DI(25))AND DI(2
5 DO(30)=MO(30) OR DI(27)
Compile for SEQUENCE OK? YES NO
If there is a syntax error in the program, an error message appears and the program will be
listed from the line with the error (Fig. 16-1-2-3)
When the compiling ends without any error, the program will be listed from its first line.
Fig. 16-1-2-3 Compiling error
PROGRAM <SEQUENCE>
5.1:Syntax error 2 3
3 MO(31)= ˜ MO(30)’ AB
4 DO(21)=MO(36) OR DI(27)
5 DO(30)=MO(30) OR DI(27)
6 DO(25)=DI(26) AND DO(32)
7 DO(30)=MO(30) OR DI(27)
EDIT DIR COMPILE
266
16. Sequence function
c The
CAUTION
sequence execution program is
When you display the directory after the compiling the sequence program, a letter “s”
appears to the left of the program name “SEQUENCE”. This means that the sequence
erased and the letter “s” disappears in program has been compiled successfully and is ready for use (Fig. 16-1-2-4).
the following cases. In these cases the
sequence function cannot be used in Fig. 16-1-2-4 Sequence execution program after compiling
“UTILITY” mode.
1. When the sequence program was
erased
2. When the sequence program was
PROGRAM>DIR <TEST10 > 2
edited No. Name Line Byte RW/RO
3. When normal robot program
compiling was performed for the 1 TEST10 12 145 RW
sequence program 2 LOCATE20 25 320 RW
4. Program data was initialized.
3 s SEQUENCE 8 141 RW
5. A “Sequence object check sum” error
occurred.
NEW I INFO
When all of the above conditions are met, the sequence program can now be executed.
While the program is running, the letter “s” will appear at the left end of the second line
of the screen. (Fig. 16-2-1)
Fig. 16-2-1 Sequence program execution in progress
267
16. Sequence function
2 program compiling is canceled and the normal robot compile screen (Fig. 16-2-2) then
appears.
Press the F 4 (YES) key to compile and create a normal execution program. Then,
execute this program with the STEP statement in “AUTO” mode to check the operation.
PROGRAM>COMPILE <SEQUENCE>
1 2 3
1 DO(20)=DI(21) AND DI(22)
2 MO(30)=DO(23) OR DI(22)
3 MO(31)= ˜ MO(30)
4 DO(21)=(DI(36) OR DI(25))AND DI(2
5 DO(30)=MO(30) OR DI(27)
Compile program OK? YES NO
<expression> may only be a logic operation using parallel input/output variables, internal
auxiliary output variables, arm lock output variables, timer output variables or serial input/
output variables.
268
16. Sequence function
There are a total of 8 timer output variables: TO(00) to TO(07). The timer of each variable
is defined by the timer definition statement TIM00 to 07.
269
16. Sequence function
Timer example:
TIM02=2500
TO(02)=DI(23)
DI (23)
1.6sec
2.5sec
TO (02)
Examples:
DO(35)
MO(24)
DI(16)
Incorrect examples:
DO(37,24)
DI3(4)
MO3()
270
16. Sequence function
The value of <expression> must be from 100 to 999900msec (=0.1 to 999.9 second). 2
However, since the units are set every 100msec, values less than 99msec are truncated
Examples:
TIM00 = 650 ............ 0.6 seconds
TIM03 = 2480 ............ 2.4 seconds
The timer definition statement sets the timer value of the timer output variable. This
definition statement may be anywhere in the program. When the timer definition statement
is omitted, the timer setting value of the variable is 0.
TIM00 to 07 correspond to the timer output variables TO(00) to (07).
271
16. Sequence function
c1. NOT
CAUTION
cannot be used prior to the first
16.3.5 Priority of logic operations
parenthesis “ ( “ or on the left of an 1. Expressions in parentheses
expression. For example, the 2. NOT, ~
following commands cannot be used.
DO(21)=~(DI(30) | DI(32)) 3. AND, &
2 ~DO(30)=DI(22) & DI(27)
272
17. Online commands
This chapter explains online commands that can be input to the robot controller through the RS-
232C port to execute specific instructions. See the robot controller owner's manual for information
on methods for connecting to the RS-232C port.
273
17. Online commands
274
17. Online commands
n Basically,
NOTE 17.1.1 Changing the mode 2
a response “OK” appears
when an instruction from key operation Command format:
online command is received.
An error message responds if online @AUTO[c/r]
commands cannot be executed due to
error. @PROGRAM[c/r]
@MANUAL[c/r]
@SYSTEM[c/r]
Response format:
OK[c/r]
Meaning:
• Changes the mode.
AUTO : Changes to AUTO mode.
PROGRAM : Changes to PROGRAM mode.
MANUAL : Changes to MANUAL mode.
SYSTEM : Changes to SYSTEM mode.
Example:
Command @AUTO[c/r]
Response OK[c/r]
@RESET[c/r]
@RUN[c/r]
@STEP[c/r]
@SKIP[c/r]
@NEXT[c/r]
@STOP[c/r]
Response format:
OK[c/r]
275
17. Online commands
Meaning:
• Executes or stops the current program.
RESET : Resets the program.
RUN : Executes the program.
STEP : Executes one line of the program. (Enters the subroutine.)
2 SKIP : Skips one line of program. (Skips one line of the subroutine.)
n Programs
NOTE
can be executed only in
NEXT
STOP
: Executes to the next line. (Executes the subroutine as one line.)
: Stops the program.
AUTO mode.
Example:
Command @RUN[c/r]
Response OK[c/r]
@BREAK m,n[c/r]
Response format:
OK[c/r]
n Break
NOTE
points can be set only in AUTO
Meaning:
• Sets a break point used to temporarily stop execution of the program.
mode.
Example:
Command @BREAK 1, 28[c/r]
Response OK[c/r]
276
17. Online commands
@CHGTSK[c/r]
Response format: 2
OK[c/r]
n Tasks
NOTE
can be switched only in AUTO
Meaning:
• Switches the selected task while program execution is stopped.
mode.
• The ongoing task is switched to another task not being executed in order from task 1
–> 2 -> …-> 8 -> 1.
Example:
Command @CHGTSK[c/r]
Response OK[c/r]
@MSPEED k[c/r]
@MSPEED2 k[c/r]
Response format:
OK[c/r]
n The
NOTE
MANUAL mode speed can be
Meaning:
• Changes the MANUAL mode movement speed.
changed only in MANUAL mode.
MSPEED : Changes manual movement speed for main robot.
MSPEED2 : Changes manual movement speed for sub robot.
Example:
Command @MSPEED 50[c/r]
Response OK[c/r]
277
17. Online commands
@ABSADJ k,f[c/r]
@ABSADJ2 k,f[c/r]
2 @ABSRESET k[c/r]
@ABSRESET2 k[c/r]
k : Designated axis (k = 1 to 6)
f : Movement direction (f = 0: + direction, 1: - direction)
Response format:
OK[c/r]
n Absolute
NOTE
reset can be performed only
Meaning:
• Performs absolute reset.
in MANUAL mode.
ABSADJ : Moves the main robot axes to the absolute reset positions.
ABSADJ2 : Moves the sub robot axes to the absolute reset positions.
ABSRESET : Performs absolute reset on the main robot axes.
ABSRESET2 : Performs absolute reset on the sub robot axes.
Example:
Command @ABSADJ 1,0[c/r]
Response OK[c/r]
278
17. Online commands
Response format:
Meaning:
• Acquires the current program execution status.
n The
NOTE
current program execution status
can be acquired only when the Example:
program is stopped during AUTO
mode.
Command @PADDR[c/r]
Response <TEST>,T3,134,32[c/r]
17.2.2 Copy
Response format:
OK[c/r]
Meaning:
• Copies the contents of program name 1 under program name 2.
Example:
Command @COPY <TEST1> TO <TEST2>[c/r]
Response OK[c/r]
279
17. Online commands
c InCAUTION
controllers whose software version
@COPY Pmmmm-Pnnnn TO Pkkkk[c/r]
Response format:
OK[c/r]
Meaning:
• Copies the point data between Pmmmm and Pnnnn to Pkkkk and subsequent point
numbers.
Example:
Command @COPY P101-P200 TO P1101[c/r]
Response OK[c/r]
c InCAUTION
controllers whose software version
@COPY PCmmmm-PCnnnn TO PCkkkk[c/r]
is earlier than V8.28, point numbers
from 0 to 4000 can be specified as the mmmm : Top point comment number in copy source (mmmm = 0 to 9999)
point comment copy source and nnnn : Last point comment number in copy source (nnnn = 0 to 9999)
destination. kkkk : Top point comment number in copy destination (kkkk = 0 to 9999)
Response format:
OK[c/r]
Meaning:
• Copies the point comments between PCmmmm and PCnnnn to PCkkkk and subsequent
point comment numbers.
Example:
Command @COPY PC101-PC200 TO PC1101[c/r]
Response OK[c/r]
280
17. Online commands
17.2.3 Erase
Response format:
OK[c/r]
Meaning:
• Erases the designated program.
Example:
Command @ERA <TEST1>[c/r]
Response OK[c/r]
c InCAUTION
controllers whose software version
@ERA Pmmmm-Pnnnn[c/r]
is earlier than V8.28, point numbers
from 0 to 4000 can be used to specify mmmm : Top point number to be erased (mmmm = 0 to 9999)
the top and last point numbers of the nnnn : Last point number to be erased (nnnn = 0 to 9999)
point range to be erased.
Response format:
OK[c/r]
Meaning:
• Erases the point data between Pmmmm and Pnnnn.
Example:
Command @ERA P101-P200[c/r]
Response OK[c/r]
281
17. Online commands
c InCAUTION
controllers whose software version
@ERA PCmmmm-PCnnnn[c/r]
Response format:
OK[c/r]
Meaning:
• Erases the point comments between PCmmmm and PCnnnn.
Example:
Command @ERA PC101-PC200[c/r]
Response OK[c/r]
@ERA PLm[c/r]
Response format:
OK[c/r]
Meaning:
• Erases the designated pallet data.
Example:
Command @ERA PL1[c/r]
Response OK[c/r]
282
17. Online commands
17.2.4 Rename
Command format:
Response format:
OK[c/r]
Meaning:
• Changes program name 1 to program name 2.
Example:
Command @REN <TEST1> TO <TEST2>[c/r]
Response OK[c/r]
Program name : Program name to change the attribute (8 characters or less consisting
of alphanumeric characters and underscore)
s: Attribute (s = RW: read & write, RO: read only)
Response format:
OK[c/r]
Meaning:
• Changes the attribute of the designated program.
Example:
Command @ATTR <TEST1> TO RO[c/r]
Response OK[c/r]
283
17. Online commands
17.2.6 Initialize
Response format:
OK[c/r]
Meaning:
• Initializes the memory.
PGM : Initializes the program area.
PNT : Initializes the point data area.
SFT : Initializes the shift data area.
HND : Initializes the hand data area.
PLT : Initializes the pallet data area.
PCM : Initializes the point comment area.
MEM : Initializes the above areas (PGM+PNT+SFT+HND+PLT+PCM).
PRM : Initializes the parameter area.
ALL : Initializes all areas (MEM+PRM).
Example:
Command @INIT PGM[c/r]
Response OK[c/r]
284
17. Online commands
@INIT CMU[c/r]
Response format: 2
OK[c/r]
Meaning:
• Initializes the communication port parameters.
• For information about the communication port initial settings, refer to the
communication port manual.
Example:
Command @INIT CMU[c/r]
Response OK[c/r]
@LANGUAGE k[c/r]
Response format:
OK[c/r]
Meaning:
• Sets the controller display language.
Example:
Command @ LANGUAGE 1[c/r]
Response OK[c/r]
285
17. Online commands
@UNIT k[c/r]
2 c k=2
CAUTION
(mm or degree units in tool k :Unit definition (k=0 : pulses, 1 : mm, 2 : mm or degrees in tool coordinate mode)
coordinate mode) can be selected only
when the software version is V8.19 or
later. Response format:
OK[c/r]
Meaning:
• Select the display unit to indicate current position.
• k=2 (tool coordinate mode) can be selected only when the hand attached to the R-axis
of a Cartesian or SCARA robot is selected.
Example:
Command @UNIT 1[c/r]
Response OK[c/r]
@MSGCLR[c/r]
Response format:
OK[c/r]
Meaning:
• Clears the error messages displayed on the MPB.
Example:
Command @MSGCLR[c/r]
Response OK[c/r]
286
17. Online commands
@ ACCESS k[c/r]
2
k : Access level (k = 0 to 3)
Response format:
OK[c/r]
n For
NOTE
a detailed description of the access
Meaning:
• Sets the access level.
level, refer to the robot controller
owner’s manual.
Example:
Command @ACCESS 1[c/r]
Response OK[c/r]
@EXELVL k[c/r]
k : Execution level (k = 0 to 8)
Response format:
OK[c/r]
n For
NOTE
a detailed description of the
Meaning:
• Sets the execution level.
execution level, refer to the robot
controller owner’s manual.
Example:
Command @ EXELVL 1[c/r]
Response OK[c/r]
287
17. Online commands
@SEQUENCE k[c/r]
Response format:
OK[c/r]
Meaning:
• Sets the sequence program execution flag.
Example:
Command @ SEQUENCE 1[c/r]
Response OK[c/r]
@ARMTYP m,k[c/r]
@ARMTYP2 m,k[c/r]
Response format:
OK[c/r]
Meaning:
• Sets the SCARA robot hand system.
ARMTYP : Changes the main robot hand system.
ARMTYP2 : Changes the sub robot hand system.
Example:
Command @ ARMTYP 0, 0 [c/r]
Response OK[c/r]
288
17. Online commands
@EMGRST[c/r]
Response format: 2
OK[c/r]
Meaning:
• Resets the internal emergency stop flag.
Example:
Command @ EMGRST[c/r]
Response OK[c/r]
289
17. Online commands
2 Command format:
@?LANGUAGE[c/r]
Response format:
m[c/r]
Meaning:
• Acquires the language for displaying messages on the MPB.
Example:
Command @?LANGUAGE[c/r]
Response JAPANESE[c/r]
@?ACCESS[c/r]
Response format:
LEVELk[c/r]
k : Access level (k = 0 to 3)
n For
NOTE
a detailed description of the access
Meaning:
• Acquires the access level.
level, refer to the robot controller
owner’s manual.
Example:
Command @?ACCESS[c/r]
Response LEVEL2[c/r]
290
17. Online commands
@?ARM[c/r]
Response format: 2
m1/s1,m2/s2[c/r]
Main robot
m1 : Current arm setting status (m1 = RIGHTY: right-handed system, LEFTY: left-handed
system)
m2 : Arm setting status at program reset (m2 = RIGHTY: right-handed system, LEFTY:
left-handed system)
Sub robot
s1 : Current arm setting status (s1 = RIGHTY: right-handed system, LEFTY: left-handed
system)
s2 : Arm setting status at program reset (s2 = RIGHTY: right-handed system, LEFTY:
left-handed system)
n• NOTE
This command is valid only for
Meaning:
• Acquires the arm setting status.
SCARA robot setting.
• “s1” and “s2” are not displayed
when sub robot is not set. Example:
Command @?ARM[c/r]
Response RIGHTY,RIGHTY[c/r]
@?BREAK[c/r]
Response format:
k1,k2,k3,k4[c/r]
Meaning:
• Acquires the break point status.
Example:
Command @?BREAK[c/r]
Response 12,35,0,0[c/r]
291
17. Online commands
@?CONFIG[c/r]
2 Response format:
mr/sr-ma/sa-r-o1-o2[c/r]
n “sr”
NOTE
and “sa” are not displayed when
Meaning:
• Acquires the controller configuration status.
sub robot is not set.
Example:
Command @?CONFIG[c/r]
Response YK250X-XYZR-SRAM/196kB,DIO_N-DIO_N(1/2)[c/r]
@?EXELVL[c/r]
Response format:
LEVELk[c/r]
k : Execution level (k = 0 to 8)
n For
NOTE
a detailed description of the
Meaning:
• Acquires the execution level.
execution level, refer to the robot
controller owner’s manual.
Example:
Command @?EXELVL[c/r]
Response LEVEL2[c/r]
292
17. Online commands
@?MOD[c/r]
Response format: 2
s[c/r]
s : Mode status
s
Meaning
English Japanese
AUTO ジドウ AUTO mode
PROGRAM プログラム PROGRAM mode
MANUAL シュドウ MANUAL mode
SYSTEM システム SYSTEM mode
Meaning:
• Acquires the controller mode status.
Example:
Command @?MOD[c/r]
Response AUTO[c/r]
@?MSG[c/r]
Response format 1:
gg,bb:msg[c/r]
or
OK[c/r]
gg : Error group
bb : Error category
msg : Error message
Command format 2:
@?MSG m,n[c/r]
293
17. Online commands
Response format 2:
yy/mm/dd,hh:mm:ss gg.bb:msg[c/r]
yy/mm/dd,hh:mm:ss gg.bb:msg[c/r]
2 :
OK[c/r]
Meaning:
• Command format 1 acquires information on the message line displayed on the MPB.
• Command format 2 acquires error history message.
Example:
Command @?MSG[c/r]
Response 5.30: Undefined identifier[c/r] or OK[c/r]
Example:
Command @?MSG 1,5[c/r]
Response 01/10/28,14:20:20 5.30: Undefined identifier[c/r]
01/10/28,14:18:34 5.1: Syntax error[c/r]
01/10/28,14:10:54 5.30: Undefined identifier[c/r]
01/10/28,14:05:40 14.22: No start code(@)[c/r]
01/10/28,14:05:00 5.52: Command doesn’t exist[c/r]
OK[c/r]
@?ORIGIN[c/f]
Response format:
COMPLETE[c/f] or INCOMPLETE[c/f]
Meaning:
• Acquires return-to-origin status.
Example:
Command @?ORIGIN[c/f]
Response COMPLETE[c/f]
294
17. Online commands
@?ABSRST[c/r]
Response format: 2
COMPLETE[c/r] or INCOMPLETE,xxxxxxxx[c/r]
Meaning:
• Acquires the absolute reset status.
Example:
Command @?ABSRST[c/r]
Response INCOMPLETE,99991011[c/r]
@?SERVO[c/r]
Response format:
Meaning:
• Acquires the servo status.
Example:
Command @?SERVO[c/r]
Response OFF,99991011[c/r]
295
17. Online commands
@?SEQUENCE[c/r]
2 Response format:
Meaning:
• Acquires the sequence program execution status.
Example:
Command @? SEQUENCE[c/r]
Response DISABLE[c/r]
@?SPEED[c/r]
Response format:
ma/sa,mm/sm[c/r]
Main group
ma : Automatic movement speed setting status (ma = 1 to 100)
mm : Manual movement speed setting status (mm = 1 to 100)
Sub group
sa : Automatic movement speed setting status (sa = 1 to 100)
sm : Manual movement speed setting status (sm = 1 to 100)
n "sa"
NOTE
and "sm" are not displayed unless
Meaning:
• Acquires the speed setting status.
the sub robot is set.
Example:
Command @?SPEED[c/r]
Response 100,50[c/r]
296
17. Online commands
@?UNIT[c/r]
Response format: 2
s [c/r]
s : Coordinates and units (s = PULSE: joint coordinate in “pulse” units, MM: Cartesian
coordinate in “mm” or “deg.” units)
Meaning:
• Acquires the coordinates and units for point data.
Example:
Command @?UNIT[c/r]
Response PULSE[c/r]
@?VER[c/r]
Response format:
cv,cr-mv-d1/d2/d3/d4/d5/d6/d7/d8{-ov}[c/r]
Meaning:
• Acquires the version information.
Example:
Command @?VER[c/r]
Response V8.02,R1021-V5.10-V1.01/V1.01/V1.01/V1.01/-----/-----/-----/-----/[c/r]
297
17. Online commands
2 @?WHERE[c/r]
@?WHERE2[c/r]
Response format:
Meaning:
• Acquires the current positions.
n WHERE2
NOTE
cannot be used unless the WHERE : Acquires the current positions of main group axes.
sub robot is set. WHERE2 : Acquires the current positions of sub group axes.
Example:
Command @?WHERE[c/r]
Response [POS] 1000 2000 3000 -40000 0 0[c/r]
@?WHRXY[c/r]
@?WHRXY2[c/r]
Response format:
Meaning:
• Acquires the current positions.
n WHRXY2
NOTE
cannot be used unless the
WHRXY : Acquires the current positions of main group axes.
sub robot is set. WHRXY2 : Acquires the current positions of sub group axes.
Example:
Command @?WHRXY[c/r]
Response [POS] 100.00 200.00 300.00 -40.00 0.00 0.00[c/r]
298
17. Online commands
@?TASKS[c/r]
Response format: 2
n{,n{,{…}}}[c/r]
Meaning:
• Acquires the tasks in RUN or SUSPEND status.
Example:
Command @?TASKS[c/r]
Response 1,3,4,6[c/r]
@?TSKMON[c/r]
Response format:
nfp,{nfp},{nfp},{nfp},{nfp},{nfp},{nfp},{nfp}[c/r]
Meaning:
• Acquires the status of each task in order from Task 1 to Task 8.
Example:
Command @?TSKMON[c/r]
Response 11R32,,43U32,,,,129R31,[c/r]
299
17. Online commands
@?SHIFT[c/r]
2 Response format:
m/s[c/r]
n "s"NOTE
is not displayed unless the sub
Meaning:
• Acquires the shift status.
robot is set.
Example:
Command @?SHIFT[c/r]
Response 1[c/r]
@?HAND[c/r]
Response format:
m/s[c/r]
n "s"NOTE
is not displayed unless the sub
Meaning:
• Acquires the hand status.
robot is set.
Example:
Command @?HAND[c/r]
Response 1[c/r]
300
17. Online commands
@?MEM[c/r]
Response format: 2
k/m[c/r]
Meaning:
• Acquires the remaining memory capacity.
Example:
Command @?MEM[c/r]
Response 102543/1342[c/r]
@?EMG[c/r]
Response format:
k[c/r]
Meaning:
• Acquires the emergency stop status by checking the internal emergency stop flag.
Example:
Command @?EMG[c/r]
Response 1[c/r]
301
17. Online commands
@?SELFCHK[c/r]
2 Response format:
• If an error occurred
OK [c/r]
Meaning:
• Acquires the error status by self-diagnosis that checks for errors inside the controller.
Example:
Command @?SELFCHK[c/r]
Response 12.1: Emg.stop on[c/r]
END[c/r]
302
17. Online commands
@?OPSLOT[c/r]
Response format: 2
OP.1 : ”option board name” [c/r]
OP.2 : ”option board name” [c/r]
OP.3 : ”option board name” [c/r]
OP.4 : ”option board name” [c/r]
Meaning:
• Acquires the option slot status by checking the option boards.
Example:
Command @?OPSLOT[c/r]
Response OP.1 : DIO_N2[c/r]
OP.2 : DIO_N1[c/r]
OP.3 : no board[c/r]
OP.4 : CCLnk [c/r]
303
17. Online commands
Response format:
• Response output depends on the designated readout file.
n For
NOTE
more information about files, refer
Meaning:
• Reads out the data from the designated file.
to the earlier section "Data file • Online commands that are input through the RS-232C port have the same meaning as
description".
the following command.
SEND <readout file> TO CMU
Definition format
Type Readout file name
All Separate file
User memory All files ALL ––––
Program PGM <bbbbbbbb>
Point data PNT Pn
Point comment PCM ––––
Parameter PRM /cccccc/
Shift definition SFT Sn
Hand definition HND Hn
Pallet definition PLT PLn
Variable, Variable VAR ab...by
constant Array variable ARY ab...by (x)
Constant –––– “cc...c”
Status Program directory DIR <<bbbbbbbb>>
Parameter directory DPM ––––
Machine reference MRF ––––
Error history (log) LOG ––––
Memory size MEM ––––
Device DI port DI () DIn ()
DO port DO () DOn ()
MO port MO () MOn ()
TO port TO () TOn ()
LO port LO () LOn ()
SI port SI () SIn ()
SO port SO () SOn ()
Others File end code EOF ––––
n: Number
a: Alphabetic character
b: Alphanumeric character or underscore ( _ )
c: Alphanumeric character or symbol
x: Expression
y: Format
Example:
Command @READ PGM[c/r]
Example:
Command @READ P100[c/r]
304
17. Online commands
• The following response appears when writing to the designated file has been finished.
OK[c/r]
Meaning:
• Writes the data in the designated file.
n For
NOTE
more information about files, refer • Online commands that are input through the RS-232C port have the same meaning as
to the earlier section "Data file the following commands.
description".
SEND CMU TO <write file>
Definition format
Type Write file name
All Separate file
User memory All files ALL ––––
Program PGM <bbbbbbbb>
Point data PNT Pn
Point comment PCM ––––
Parameter PRM /cccccc/
Shift definition SFT Sn
Hand definition HND Hn
Pallet definition PLT PLn
Variable, Variable VAR ab...by
constant Array variable ARY ab...by (x)
Device DO port DO () DOn ()
MO port MO () MOn ()
TO port TO () TOn ()
LO port LO () LOn ()
SO port SO () SOn ()
n: Number
a: Alphabetic character
b: Alphanumeric character or underscore ( _ )
c: Alphanumeric character or symbol
x: Expression
y: Format
Example:
Command @WRITE PRM[c/r]
Example:
Command @WRITE P100[c/r]
305
17. Online commands
2 Command format:
Response format:
OK[c/r] or LINEx,m,n:”message”
Meaning:
• Switches the program.
• In AUTO mode, the program that is switched to will be compiled.
• In other modes, the program is only switched.
However, when “SEQUENCE” program is designated, a sequence object is created.
306
17. Online commands
@”robot language”[c/r]
Response format: 2
OK[c/r] or *** Aborted
• Response output means as follows:
OK : Command was executed correctly.
*** Aborted : An error occurred during execution.
Meaning:
• Robot language commands can be executed.
• Independently executable commands can only be executed.
• Command format depends on each command to be executed.
Example:
Command @SET DO(20) [c/r]
Response OK[c/r]
Example:
Command @MOVE P,P100,S=20[c/r]
Response OK[c/r]
^C (=03H)
Response format:
*** Aborted[c/r]
Meaning:
• Interrupts execution of the current command.
Example:
Command @MOVE P,P100,S=20[c/r]
^C
Response *** Aborted[c/r]
307
18. IO commands
Using bit information (DI/DO port) for general-purpose input/output allows issuing commands directly
from the PLC. It is now possible to execute commands such as the MOVE command that were
impossible to execute up until now without using the robot program or RS-232C port.
c •CAUTION
IO commands are valid only when
The following features are assigned to each IO.
Output (Controller → PLC) Input (Controller ← PLC)
the software version is V8.18 or
later. Output port Contents Input port Contents
• To use IO commands, the "IO cmd RCX DO26 Execution check output DI05 IO command execution trigger input
(DI05) on STD.DIO" parameter 141/142/40 DO27 Execution in-progress output DI2() Command code
(explained in the "SYSTEM mode" RCX DO16 Execution check output DI3() Command data
- "Other parameters" section in the 221/222 DO17 Execution in-progress output DI4()
robot controller owner's manual)
must be set to "VALID" ■ IO commands can be executed by using part of the general-purpose input and output.
beforehand. For more details, refer When no connection is made to the option DIO, then DI4() is always recognized as
to the robot controller owner's
manual. being OFF.
n General-purpose
NOTE
outputs DO26 and
■ IO commands cannot be executed while program execution is in progress (DO13 is
ON).
DO27 are used when executing an IO
command. General-purpose outputs ■ IO commands cannot be executed simultaneously with online commands.
DO26 and DO27 (DO16 and DO17 for
RCX221/222) are used when executing ■ IO commands assign command codes to be executed to DI2(), and command data to
an IO command. Pay attention to this DI3() and DI4(). These are executed when the DI05 is changed from OFF to ON. The
point when you are using them for controller processes the IO commands when they are received and sends execution
other purposes.
check results and execution in-progress information to the PLC via DO26 and DO27
(DO16 and DO17 for RCX221/222).
■ Command data added to the IO commands will differ according to the IO command.
See detailed information available on the IO commands. Command data settings must
always be made before attempting to set the IO commands.
■ Data is set in binary code. If the data size is greater than 8 bits, set the upper bit data
into the higher address. (little endian)
For example, to set 0x0F9F [hexadecimal] (=3999) in the DI3 () and DI4 () ports, set
0x0F [hexadecimal] in DI4 () and set 0x9F [hexadecimal] in DI3 ().
■ The IO command execution trigger input is not accepted when the execution in-progress
output is ON.
■ The execution in-progress output is ON in the following cases.
• When an IO command is running after receiving an IO command execution trigger
input.
• When an IO command is terminated after receiving an IO command execution trigger
input yet a maximum of 100ms state is maintained when IO command trigger input
is ON.
■ The IO command trigger input pulse must always be maintained for 100ms or more
during input. Commands cannot be accepted unless this statement is maintained.
■ Sometimes 20ms or more is needed for the execution in-progress output to turn ON
after startup (rising edge) of the IO command trigger input pulse. The IO command
trigger input might not be accepted during this period.
■ After inputting the IO command trigger input pulse and the in-progress output turns
OFF, at least a 100ms time period must always elapse before executing the next com-
mand. If this elapsed time period is too small, the IO command execution trigger input
might not be accepted.
■ The execution check output turns OFF when an IO command is received.
■ The execution check output turns ON when an IO command ends normally, but it
remains OFF if the IO command ends abnormally.
308
18. IO commands
e t
DO27
Output port
DO17*
DO26 t
DO16*
Execution end
* When using RCX221/222
c To use IO commands, the "IO cmd
CAUTION
q Set command code and command data (Time interval between q and w: 30ms or
(DI05) on STD.DIO" parameter more)
(explained in the "SYSTEM mode" -
"Other parameters" section in the w Set IO command execution trigger input (Pulse width: 100ms or more)
robot controller owner's manual)
must be set to "VALID" beforehand.
e Transition to execute
For more details, refer to the robot r Clear the IO command execution trigger input and command code and command data
controller owner's manual.
t Set termination of IO command and execution check output
c Output
CAUTION
port for the execution check
Example : Follow these steps when sending and receiving IO commands to execute the
PTP movement command to point 19.
output is as follows:
RCX141/142/40 : DO26
RCX221/222 : DO16
Output port for the execution in-
q Set the following values in the register to execute the PTP movement command by
progress output is as follows: designating a point.
RCX141/142/40 : DO27 DI2 ( ) : Command code (0x01)
RCX221/22 : DO17
DI3 ( ) : Lower point setting (0x13= point 19)
DI4 ( ) : Upper point setting (0x00=point 19)
w Set DI05 from ON to OFF.
e The controller receives the IO command and executes it if the command and command
data are acceptable. The execution in-progress output turns ON and the execution
check output turns OFF at this time. The robot moves to the position specified by
point 19.
r Clear DI2 ( ) through DI4 ( ) after checking that execution in-progress output is ON.
t The command has ended so the execution in-progress output turns OFF and execution
check output turns ON if command ended correctly, and turns OFF if the command
failed.
* If DI05 was not set to OFF in r, the execution in-progress output remains ON for
a maximum of 100ms from the timing in t.
DI05 w r
q r
Input port DI2( )
DI3( ) to q r
DI4( )
e t
DO27
Output port 100ms
DO17*
DO26 t
DO16*
Execution end
* When using RCX221/222
309
18. IO commands
310
18. IO commands
2
c •CAUTION
In controllers whose software
18.4.1.1 PTP designation
c •CAUTION
In controllers whose software
18.4.1.2 Linear interpolation
version is earlier than V8.28, point This command moves the robot to a target position by linear interpolation by specifying
numbers from 0 to 4000 can be the point number. The sub robot is not subject to this command.
specified.
• The point number setting range is 0 Command
to 255 when there is no DI4().
DI port Contents Value
• When moving the robot by linear
interpolation to a point where a DI2() Command code For main robot 0x03
hand system flag is specified, make DI3() Point number 0xpppp
sure that the same hand system is DI4()
used at the current position and
target position. If the same hand pppp: Specify the point number in 16 bits.
system is not used, then an error Specified range: 0 (=0x0000) to 9999(=0x270F)
will occur and robot movement will
not be allowed.
n When
NOTE
a SCARA robot is used and a
hand system flag is set for the point
data you specify, that hand system has
priority over the current arm type.
c •CAUTION
In controllers whose software
18.4.2 MOVEI command
version is earlier than V8.28, point Execute this command group to move the robot to a relative position.
numbers from 0 to 4000 can be
specified.
• The point number setting range is 0
18.4.2.1 PTP designation
to 255 when there is no DI4().
This command moves the robot a specified distance in PTP motion by specifying the
point number.
n When
NOTE
a SCARA robot is used and a
Command
hand system flag is set for the point DI port Contents Value
data you specify, that hand system has DI2() Command code For main robot 0x09
priority over the current arm type.
For sub robot 0x89
DI3() Point number 0xpppp
DI4()
pppp: Specify the point number in 16 bits.
Specified range: 0 (=0x0000) to 9999(=0x270F)
311
18. IO commands
To stop the jog movement command, set the dedicated input interlock signal to OFF.
After checking that jog movement has stopped, set the interlock signal back to ON.
Command
DI port Contents Value
DI2() Command code For main robot 0x20
For sub robot 0xA0
DI3() Axis to move and bit 0 Axis 1 tt
direction bit 1 Axis 2
bit 2 Axis 3
bit 3 Axis 4
bit 6-bit 4 (0:Fixed) 0
bit 7 Direction d
DI4() Not used 0x00
tt : Specify the axis to move in 0 to 3 bits. Only one axis can be specified.
d : Specify the movement direction in 1 bit.
Value Meaning
0 + direction
1 - direction
312
18. IO commands
313
18. IO commands
2 Command
DI port Contents Value
DI2() Command code For main robot 0x30
For sub robot 0xB0
DI3() Axis to move and bit 0 Axis 1 tt
direction bit 1 Axis 2
bit 2 Axis 3
bit 3 Axis 4
bit 6-bit 4 (0:Fixed) 0
bit 7 Direction d
DI4() Not used 0x00
tt : Specify the axis to move in 0 to 3 bits. Only one axis can be specified.
d : Specify the movement direction in 1 bit.
Value Meaning
0 + direction
1 - direction
314
18. IO commands
Command
DI port Contents Value
DI2() Command code Servo ON For main robot 0x34
For sub robot 0xB4
Servo OFF For main robot 0x35
For sub robot 0xB5
Servo Free For main robot 0x36
For sub robot 0xB6
Power ON All controller servos 0x37
DI3() Specify the axis bit 0 Axis 1 tt
bit 1 Axis 2
bit 2 Axis 3
bit 3 Axis 4
bit 7-bit 4 (0:Fixed) 0
DI4() Not used 0x00
tt : Specify the axis to move in 0 to 3 bits. All controller servos are processed if no axis
is specified. No axis can be specified when executing Power ON.
315
18. IO commands
2 DI port
DI2() Command code
Contents
For main robot
Value
0x38
For sub robot 0xB8
DI3() Specified speed 0xss
DI4() Not used 0x00
ss : Specify the manual movement speed in 8 bits.
Specified range: 1 (=0x01) to 100 (=0x64)
316
18. IO commands
317
Appendix
n The
NOTE
above words are reserved for robot language and cannot be used as identifiers (variables, etc.).
318
B. Robot language lists
■ General commands
Function
Ref.
Language Type Cond. page
Format
319
Robot language lists
Function
Ref.
Language Type Cond. page
Format
320
Robot language lists
■ Robot operation
Function
Ref.
Language Type Cond. page
Format
321
Robot language lists
Function
Ref.
Language Type Cond. page
Format
Controls the servo ON/OFF of the specified axes in the main group
or all axes (in main group and sub group).
SERVO ON [(<expression>)]
SERVO Command 5 142
OFF
FREE
PWR
Controls the servo ON/OFF of the specified axes in the sub group
or all axes (in main group and sub group).
SERVO2 ON [(<expression>)]
SERVO2 Command 5 143
OFF
FREE
PWR
322
Robot language lists
■ I/O control
Function
Ref.
Language Type Cond. page
Format
323
Robot language lists
Function
Ref.
Language Type Cond. page
Format
■ Coordinate control
Function
Ref.
Language Type Cond. page
Format
324
Robot language lists
■ Condition change
Function
Ref.
Language Type Cond. page
Format
325
Robot language lists
Function
Ref.
Language Type Cond. page
Format
Changes the maximum torque instruction for the specified axis in the main group.
TORQUE Command 5 159
TORQUE(<expression 1>)=<expression 2>
Changes the maximum torque instruction for the specified axis in the sub group.
TORQUE2 Command 5 160
TORQUE2(<expression 1>)=<expression 2>
Changes the tip weight parameter of the main robot.
WEIGHT Command 5 163
WEIGHT <expression>
Changes the tip weight parameter of the sub robot.
WEIGHT2 Command 5 164
WEIGHT2 <expression>
326
Robot language lists
■ Parameter reference
Function
Ref.
Language Type Cond. page
Format
Arithmetic Gives the acceleration coefficient parameter of the specified main group axis.
ACCEL – 167
function ACCEL(<expression>)
Arithmetic Gives the acceleration coefficient parameter of the specified sub group axis.
ACCEL2 – 167
function ACCEL2(<expression>)
Arithmetic Gives the arch position parameter of the specified main group axis.
ARCH – 168
function ARCH(<expression>)
Arithmetic Gives the arch position parameter of the specified sub group axis.
ARCH2 – 168
function ARCH2(<expression>)
Arithmetic Gives the axis tip weight parameter of the specified main group axis.
AXWGHT – 171
function AXWGHT(<expression>)
Arithmetic Gives the axis tip weight parameter of the specified sub group axis.
AXWGHT2 – 171
function AXWGHT2(<expression>)
Arithmetic Gives the deceleration rate parameter of the specified main group axis.
DECEL – 172
function DECEL(<expression>)
Arithmetic Gives the deceleration rate parameter of the specified sub group axis.
DECEL2 – 172
function DECEL2(<expression>)
Arithmetic Gives the axis sequence parameter to perform return-to-origin movement in the main group.
ORGORD – 175
function ORGORD
Arithmetic Gives the axis sequence parameter to perform return-to-origin movement in the sub group.
ORGORD2 – 176
function ORGORD2
OUTPOS Arithmetic Gives the OUT position parameter of the specified main group axis.
– 176
function OUTPOS(<expression>)
OUTPOS2 Arithmetic Gives the OUT position parameter of the specified sub group axis. – 176
function OUTPOS2(<expression>)
Arithmetic Gives the tolerance parameter of the specified main group axis.
TOLE – 179
function TOLE(<expression>)
Arithmetic Gives the tolerance parameter of the specified sub group axis.
TOLE2 – 180
function TOLE2(<expression>)
Arithmetic Gives the torque setting for the specified axis in the main group.
TORQUE – 180
function TORQUE(<expression>)
Arithmetic Gives the torque setting for the specified axis in the sub group.
TORQUE2 – 180
function TORQUE2(<expression>)
327
Robot language lists
■ Condition reference
Function
Ref.
Language Type Cond. page
Format
Arithmetic Gives the current arm status of the SCARA robot in the main group.
ARMCND – 168
function ARMCND
Arithmetic Gives the current arm status of the SCARA robot in the sub group. 169
ARMCND2 –
function ARMCND2
Gives the hand system currently selected for the SCARA robot in the main
Arithmetic group.
ARMTYPE – 169
function
ARMTYPE
Gives the hand system currently selected for the SCARA robot in the sub
Arithmetic group.
ARMTYPE2 – 170
function
ARMTYPE2
Gives the return-to-origin machine reference of the specified main group
Arithmetic axis.
MCHREF – 174
function
MCHREF(<expression>)
Gives the return-to-origin machine reference of the specified sub group
Arithmetic axis.
MCHREF2 – 175
function
MCHREF2(<expression>)
■ Communication control
Function
Ref.
Language Type Cond. page
Format
■ Screen control
Function
Ref.
Language Type Cond. page
Format
328
Robot language lists
■ Key control
Function
Ref.
Language Type Cond. page
Format
■ Procedure
Function
Ref.
Language Type Cond. page
Format
■ Task control
Function
Ref.
Language Type Cond. page
Format
329
Robot language lists
■ Error control
Function
Ref.
Language Type Cond. page
Format
ERR Arithmetic Gives the error code number when an error occurred.
– 173
function ERR
■ PATH control
Function
Ref.
Language Type Cond. page
Format
Sets the PATH motion on the main robot axis. Command options allow
circular interpolation so that a movement projected on a specified
coordinate plane is circular and also specifying port output at a specified
PATH Command 6 113
position during robot movement.
PATH L , <point definition> [, option [, option...] ]
C
Terminates the path setting for PATH motion.
PATH END Command 6 117
PATH END
Starts the path setting for PATH motion.
PATH SET Command 6 118
PATH SET [<point definition>]
Starts the PATH motion.
PATH START Command 6 120
PATH START
330
Robot language lists
Function
Ref.
Language Type Cond. page
Format
LOCx Point element Handles point data for each axis and hand system flag. – 14
variable LOCx(<point expression>)
Creates point data specified by a pallet definition number and pallet
Point position number.
PPNT – 186
function
PPNT(pallet definition number, pallet position number)
Point Reads out the current position of the main group robot arm in joint coordinates.
WHERE – 187
function WHERE
Point Reads out the current position of the sub group robot arm in joint coordinates.
WHERE2 – 187
function WHERE2
Converts the Cartesian coordinate data (unit: mm, deg.) in the main group
Point at the specified point into joint coordinate data (unit: pulses).
XYTOJ – 187
function
XYTOJ(<point expression>)
Converts the Cartesian coordinate data (unit: mm, deg.) in the sub group
Point at the specified point into joint coordinate data (unit: pulses).
XYTOJ2 – 188
function
XYTOJ2(<point expression>)
Function
Ref.
Language Type Cond. page
Format
331
Robot language lists
■ Arithmetic functions
Function
Ref.
Language Type Cond. page
Format
ABS Arithmetic Gives the absolute value of the specified value. – 167
function ABS(<expression>)
DIST Arithmetic Gives the distance between the specified 2 points. – 173
function DIST(<point expression 1>,<point expression 2>)
INT Arithmetic Gives an integer of the specified value by truncating all decimal fractions. – 173
function INT(<expression>)
LSHIFT Arithmetic Shifts the specified value to the left by the specified number of bits. – 174
function LSHIFT(<expression 1>,<expression 2>)
RSHIFT Arithmetic Shifts the specified value to the right by the specified number of bits. – 177
function RSHIFT(<expression 1>,<expression 2>)
SQR Arithmetic Gives the square root of the specified value. – 178
function SQR(<expression>)
332
Robot language lists
Function
Ref.
Language Type Cond. page
Format
CHR$ Character Gives the character having a specified character code. – 183
string function CHR$(<expression>)
Extracts a character string with the specified digits from the left end of the
Character specified character string.
LEFT$ – 184
string function
LEFT$(<character string expression>, <expression>)
Arithmetic Acquires the length (number of bytes) of the specified character string.
LEN – 174
function LEN(<character string expression>)
Extracts a character string with the desired length (number of characters)
Character
MID$ from the specified character string. – 184
string function
MID$(<character string expression>,<expression 1>[,<expression 2>])
Acquires the character code of the first character of the specified
Arithmetic
ORD character string. – 175
function
ORD(<character string expression>)
Extracts a character string with the specified digits from the right end of
Character
RIGHT$ the specified character string. – 185
string function
RIGHT$(<character string expression>,<expression>)
Character Converts the specified value into a character string.
STR$ string function STR$(<expression>) – 185
Converts the numeric value of the specified character string into an actual
Arithmetic
VAL function numeric value. – 181
VAL(<character string expression>)
Function
Ref.
Language Type Cond. page
Format
DATE$ Character Gives the date in the "yy/mm/dd" format character string. – 183
string function DATE$
TIME$ Character Gives the time in the format "hh:mm:ss" format character string. – 185
string function TIME$
TIMER Arithmetic Gives the current time in seconds, counting from 12:00 midnight as "0:00". – 179
function TIMER
333
Robot language lists
■ Variables
Function
Ref.
Language Type Cond. page
Format
–
Array <Variable name>[ % ] (<expression>,[<expression>, <expression>])
Array variable – 12
variable !
$
Specifies a point number.
Point
Pn Pnnnn – 14
variable
P"["<expression>"]"
Specifies a shift number.
Shift
Sn Sn – 14
variable
S"["<expression>"]"
Parallel Indicates the parallel input signal status.
DI input DIm([b,...,b]) – 15
variable DI(mb,...,mb)
Parallel Specifies the parallel output signal and indicates the output status.
DO output DOm([b,...,b]) – 16
variable DO(mb,...,mb)
Internal This variable is used for signal exchange with a sequence program.
MO output MOm([b,...,b]) – 17
variable MO(mb,...,mb)
This variable is used for the timer function of a sequence program.
Timer output TOm([b,...,b])
TO – 19
variable
TO(mb,...mb)
Arm lock This variable is used to prohibit axis movement.
LO output LOm([b,...,b]) – 18
variable LO(mb,...,mb)
Indicates the serial input signal status.
Serial input
SI SIm([b,...,b]) – 20
variable
SI(mb,...,mb)
Serial Specifies the serial output signal and indicates the output status.
SO output SOm([b,...,b]) – 21
variable SO(mb,...,mb)
Serial word Indicates the status of serial input word information.
SIW – 22
input variable SIW(m)
Serial double-word Indicates the status of serial input word information in a double word.
SID – 22
input variable SID(m)
Serial word Outputs to the serial output word information and indicate the output status.
SOW – 23
output variable SOW(m)
Outputs the status of serial output word information in a double word and
Serial double-word
SOD output variable indicate the output status. – 23
SOD(m)
334
MEMO
Revision record
Ver. 1.00 Mar. 2005 English manual Ver. 1.00 is based on Japanese manual 2nd edition.
Ver. 2.00 Jun. 2005 English manual Ver. 2.00 is based on Japanese manual Ver. 3.00.
Ver. 2.01 Nov. 2006 English manual Ver. 2.01 is based on Japanese manual Ver. 3.02.
PROGRAMMING MANUAL
Robot Controller
Nov. 2006
Ver. 2.01
This manual is based on Ver. 3.02 of the Japanese manual.