rcx40-pro

317
PROGRAMMING

Upload: e

Post on 20-Jun-2015

158 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: rcx40-pro

PROGRAMMING

Page 2: rcx40-pro

1

2

Introduction

Our sincere thanks for your purchase of this YAMAHA robot controller.

This manual describes robot program commands and related information for usingYAMAHA robot controllers. Be sure to read this manual carefully as well as relatedmanuals and comply with their instructions for using the YAMAHA robot controllerssafely and correctly.

For details on how to operate YAMAHA robot controllers, refer to the separate “YAMAHArobot controller owner’s manual”.

Page 3: rcx40-pro

2

2

Safety precautions (Be sure to read before using)

Before using the YAMAHA robot controller, be sure to read this manual and relatedmanuals, 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.When this robot controller is used in a robot controller system, please take appropriatesafety measures needed by the user’s individual system.

This manual classifies safety caution items and operating points into the following levels,along with symbols for “WARNING”, “CAUITON” and “NOTE”.

w WARNINGFailure to follow WARNING instructions could result in severe injury or death to theoperator, bystanders or persons inspecting or repairing the robot controller or robot.

c CAUTIONFailure to follow CAUTION instructions may result in injury to the operator, bystanders or personsinspecting or repairing the robot controller or robot, and may damage the robot controller or robot.

n NOTEExplains the key point in the operation in a simple and clear manner.

Note that the items classified into “CAUTION” might result in serious injury dependingon the situation or environmental conditions. So always comply with the CAUTION andWARNING instructions as these are essential for safety.

Keep this manual carefully so that the operator can refer to it when needed. Also makesure that this manual reaches the end user.

[System design precautions]

c CAUTION• When the program execution stops before it is complete, the program re-executes the command

that has stopped. Keep this point in mind when re-executing the program, for example, whenusing an arch motion with the MOVE command, a relative movement command such as theMOVEI or DRIVEI command, or a communication command such as the SEND command.

Jan. 2002Jul. 2002Nov. 2002

Jan. 2003

Feb. 2004Jul. 2004

First editionThird edition : Mistakes were corrected.Fourth edition : Description of point data hand system flag, etc. was added. Applicable software Version 8.08 and aboveFifth edition : I/O commands were added Applicable software Version 8.18 and aboveSixth edition : Cautions were added.Seventh edition : Sample programs were added.

Revision Record

Date of revision Description

This manual does not constitute a concession of rights or a guarantee of industrial rights. Pleaseacknowledge that we bear no liability whatsoever for conflicts with industrial rights arising from

the contents of this manual.

2004 YAMAHA MOTOR CO., LTD.

Page 4: rcx40-pro

i

Contents1. The YAMAHA Robot Language .......................................................... 1

2. Characters......................................................................................... 2

3. Program Names ................................................................................ 3

4. Identifiers.......................................................................................... 7

5. Command Statement Format ............................................................ 8

6. Constants .......................................................................................... 96.1 Character constants ...................................................................................... 96.2 Numeric constants ........................................................................................ 9

6.2.1 Integer constants .......................................................................................................... 9

6.2.2 Real constants .............................................................................................................. 9

7. Variables ......................................................................................... 107.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 ..................................................................................... 127.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 ....................................................................................... 137.5.1 Clearing dynamic variables ........................................................................................ 13

7.5.2 Clearing static variables ............................................................................................. 13

8. Other Variables ............................................................................... 14

9. Expressions and Operations ............................................................ 249.1 Arithmetic operations ................................................................................. 24

9.1.1 Arithmetic operators ................................................................................................... 24

9.1.2 Relational operators ................................................................................................... 24

9.1.3 Logic operations ......................................................................................................... 25

9.1.4 Priority of arithmetic operation ................................................................................... 25

9.1.5 Data format conversion .............................................................................................. 26

9.2 Character string operations ......................................................................... 269.2.1 Character string connection ....................................................................................... 26

9.2.2 Character string comparison ....................................................................................... 26

9.3 Point data format ........................................................................................ 279.3.1 Joint coordinate format ............................................................................................... 27

9.3.2 Cartesian coordinate format ....................................................................................... 27

9.4 DI/DO conditional expressions ................................................................... 27

10. Multiple Robot Control ................................................................... 2810.1 Overview ................................................................................................... 2810.2 Command list for each group...................................................................... 29

Page 5: rcx40-pro

ii

11. Command Statements ..................................................................... 30ABSRST statement ................................................................................................. 30ACCEL statement(Acceleration setting statement for main group) .................................................... 31

ACCEL 2 statement(Acceleration setting statement for sub group) ....................................................... 32ARCH statement(Arch position setting statement for main group) ................................................... 33ARCH2 statement(Arch position setting statement for sub group) ...................................................... 34

ASPEED statement(Automatic movement speed setting statement for main group) ............................. 35ASPEED2 statement(Automatic movement speed setting statement for sub group) ............................... 36AXWGHT statement(Axis tip weight setting statement for main group) ................................................. 37

AXWGHT2 statement(Axis tip weight setting statement for sub group) ................................................... 38CALL statement ..................................................................................................... 39CHGPRI statement ................................................................................................ 40

CUT statement ...................................................................................................... 41DECEL statement(Deceleration setting statement for main group) .................................................... 42DECEL2 statement(Deceleration setting statement for sub group) ...................................................... 43

DECLARE statement .............................................................................................. 44DEF FN statement ................................................................................................. 46DELAY statement .................................................................................................. 47

DIM statements(Array variable declaration statement) ................................................................... 48DO statement (Parallel output) .............................................................................. 49DRIVE statement ................................................................................................... 50

DRIVE2 statement ................................................................................................. 54DRIVEI statement .................................................................................................. 58DRIVEI2 statement ................................................................................................ 60

EXIT FOR statement .............................................................................................. 62EXIT SUB statement .............................................................................................. 63EXIT TASK statement ............................................................................................. 64

FOR statement, NEXT statement ........................................................................... 65GOSUB statement, RETURN statement ................................................................. 66GOTO statement................................................................................................... 67

HALT statement .................................................................................................... 69HAND definition statement, CHANGE statement (Main robot hand selection) ...... 69HAND2 definition statement, CHANGE2 statement (Sub robot hand selection) .... 73

HOLD statement ................................................................................................... 77IF statement .......................................................................................................... 78INPUT statement .................................................................................................. 80

LET statement (Assignment statement) ................................................................... 81LO statement (Arm lock output) ............................................................................ 83MO statement (Internal output) ............................................................................. 84

MOVE statement(Absolute position movement command) .............................................................. 85

Page 6: rcx40-pro

iii

MOVE2 statement(Absolute position movement command) .............................................................. 91

MOVEI statement(Relative position movement command) ............................................................... 95MOVEI2 statement(Relative position movement command) ............................................................... 97ON ERROR GOTO statement ............................................................................... 99

ON GOTO statement .......................................................................................... 100ON GOSUB statement ........................................................................................ 101ONLINE statement, OFFLINE statement .............................................................. 102

ORGORD statement(Return-to-origin sequence setting statement for main group) .............................. 103ORGORD2 statement(Return-to-origin sequence setting statement for sub group) ................................ 104OUTPOS statement(OUT effective position setting statement for main group) ................................... 105

OUTPOS2 statement(OUT effective position setting statement for sub group) ..................................... 106PDEF statement ................................................................................................... 107PMOVE statement (Pallet movement command) .................................................. 108

PMOVE2 statement (Pallet movement command) ................................................ 112PRINT statement ................................................................................................. 116Pn (Point definition statement) ............................................................................ 117

REM (Comment statement) .................................................................................. 118RESET statement ................................................................................................. 119RESTART statement ............................................................................................. 120

RESUME statement ............................................................................................. 121RIGHTY statement, LEFTY statement ................................................................... 122RIGHTY2 statement, LEFTY2 statement ............................................................... 123

Sn (Shift coordinate definition statement) ............................................................ 124SELECT CASE statement, END SELECT statement ................................................ 125SEND statement .................................................................................................. 126

SERVO statement ................................................................................................ 128SERVO2 statement .............................................................................................. 129SET statement ..................................................................................................... 130

SHARED statement ............................................................................................. 131SHIFT statement(Shift coordinate setting statement for main robot) .............................................. 132SHIFT2 statement(Shift coordinate setting statement for sub robot) ................................................. 133

SO statement (Serial output) ................................................................................ 134SPEED statement(Speed setting statement for main group) ............................................................. 135SPEED2 statement(Speed setting statement for sub group) ............................................................... 136

START statement ................................................................................................. 137SUB statement, END SUB statement ................................................................... 138SUSPEND statement ........................................................................................... 139

SWI statement ..................................................................................................... 140TO statement ...................................................................................................... 141TOLE statements(Tolerance setting statement for main group) ....................................................... 142

Page 7: rcx40-pro

iv

TOLE2 statement(Tolerance setting statement for sub group) ......................................................... 143

TORQUE statement ............................................................................................ 144TORQUE2 statement .......................................................................................... 145WAIT statement .................................................................................................. 146

WEIGHT statement(Tip weight parameter setting statement for main robot) ...................................... 147WEIGHT2 statement(Tip weight parameter setting statement for sub robot) ......................................... 148WHILE statement, WEND statement ................................................................... 149

Label statements ................................................................................................. 150

12. Functions ...................................................................................... 15112.1 Arithmetic functions ................................................................................. 15112.2 Character string functions ......................................................................... 164

12.3 Point functions .......................................................................................... 167

13. Multi-tasking ................................................................................. 16913.1 Outline ..................................................................................................... 16913.2 Task definition .......................................................................................... 16913.3 Task status and transition .......................................................................... 170

13.4 Starting tasks ............................................................................................. 17113.5 Task scheduling ........................................................................................ 17113.6 Task status flow ......................................................................................... 172

13.7 Suspending and restarting tasks ................................................................ 17313.8 Deleting tasks ........................................................................................... 17313.9 Stopping tasks ........................................................................................... 173

13.10 Multi-task program example ..................................................................... 17413.11 Sharing the data ........................................................................................ 174

14. Command statement list ............................................................... 175

15. Robot language function list ......................................................... 18315.1 Arithmetic functions ................................................................................. 18315.2 Character array function ........................................................................... 18515.3 Point function ........................................................................................... 185

16. Data file description ..................................................................... 18616.1 Program file .............................................................................................. 187

16.1.1 All programs ............................................................................................................ 187

16.1.2 One program ........................................................................................................... 188

16.2 Point file ................................................................................................... 18916.2.1 All points ................................................................................................................. 189

16.2.2 One point ................................................................................................................ 190

16.3 Point comment file ................................................................................... 19116.3.1 All point comments .................................................................................................. 191

16.4 Parameter file ............................................................................................ 19216.4.1 All parameters .......................................................................................................... 192

16.4.2 One parameter ......................................................................................................... 194

16.5 Shift coordinate definition file ................................................................... 19516.5.1 All shift data ............................................................................................................. 195

16.5.2 One shift definition .................................................................................................. 196

16.6 Hand definition file .................................................................................. 19716.6.1 All hand data ........................................................................................................... 197

16.6.2 One hand definition ................................................................................................. 198

Page 8: rcx40-pro

v

16.7 Pallet definition file ................................................................................... 19916.7.1 All pallet definitions ................................................................................................. 199

16.7.2 One pallet definition ................................................................................................ 201

16.8 All file ...................................................................................................... 20216.8.1 All files ..................................................................................................................... 202

16.9 Program directory file ............................................................................... 20316.9.1 Entire program directory ........................................................................................... 203

16.9.2 One program ........................................................................................................... 204

16.10 Parameter directory file ............................................................................. 20516.10.1 Entire parameter directory ........................................................................................ 205

16.11 Variable file .............................................................................................. 20616.11.1 All variables ............................................................................................................. 206

16.11.2 One variable ............................................................................................................ 207

16.12 Constant file ............................................................................................. 20816.12.1 One character string ................................................................................................. 208

16.13 Array variable file ..................................................................................... 20916.13.1 All array variables .................................................................................................... 209

16.13.2 One array variable ................................................................................................... 210

16.14 DI file ....................................................................................................... 21116.14.1 All DI information .................................................................................................... 211

16.14.2 One DI port ............................................................................................................. 212

16.15 DO file ..................................................................................................... 21316.15.1 All DO information .................................................................................................. 213

16.15.2 One DO port ........................................................................................................... 214

16.16 MO file ..................................................................................................... 21516.16.1 All MO information .................................................................................................. 215

16.16.2 One MO port ........................................................................................................... 216

16.17 LO file ...................................................................................................... 21716.17.1 All LO information ................................................................................................... 217

16.17.2 One LO port ............................................................................................................ 218

16.18 TO file ...................................................................................................... 21916.18.1 All TO information ................................................................................................... 219

16.18.2 One TO port ............................................................................................................. 220

16.19 SI file ........................................................................................................ 22116.19.1 All SI information ..................................................................................................... 221

16.19.2 One SI port .............................................................................................................. 222

16.20 SO file ...................................................................................................... 22316.20.1 All SO information ................................................................................................... 223

16.20.2 One SO port ............................................................................................................ 224

16.21 Error message history file .......................................................................... 22516.21.1 All error message history .......................................................................................... 225

16.22 Machine reference file .............................................................................. 22616.22.1 All machine reference data ...................................................................................... 226

16.23 EOF file .................................................................................................... 22716.23.1 EOF data .................................................................................................................. 227

16.24 Serial port communication file .................................................................. 22816.24.1 Serial port communication file ................................................................................. 228

16.25 SIW file .................................................................................................... 22916.25.1 All SIW .................................................................................................................... 229

16.25.2 One SIW data .......................................................................................................... 230

16.26 SOW file ................................................................................................... 23116.26.1 All SOW .................................................................................................................. 231

16.26.2 One SOW data ........................................................................................................ 232

Page 9: rcx40-pro

vi

17. User program examples ................................................................ 23317.1 Basic operation ......................................................................................... 233

17.1.1 Point data written directly in program ...................................................................... 233

17.1.2 Using point numbers ................................................................................................ 234

17.1.3 Using shift coordinates ............................................................................................. 235

17.1.4 Palletizing ................................................................................................................ 23617.1.4.1 Utilizing the shift coordinates .................................................................................... 236

17.1.4.2 Utilizing pallet movement .......................................................................................... 237

17.1.5 DI/DO (digital input and output) operation .............................................................. 239

17.2 Application ............................................................................................... 24017.2.1 Pick and place between 2 points .............................................................................. 240

17.2.2 Palletizing ................................................................................................................ 242

17.2.3 Pick and place of stacked parts ................................................................................ 244

17.2.4 Parts inspection (Multi-tasking example) ................................................................... 246

17.2.5 Sealing ..................................................................................................................... 249

17.2.6 Connection to an external device through RS-232C (example 1) .............................. 250

17.2.7 Connection to an external device through RS-232C (example 2) .............................. 251

18. Sequence function ........................................................................ 25218.1 Creating a sequence program ................................................................... 252

18.1.1 Programming method ............................................................................................... 252

18.1.2 Compiling ................................................................................................................ 253

18.2 Executing a sequence program ................................................................. 25418.2.1 Sequence program STEP execution .......................................................................... 255

18.3 Creating a sequence program ................................................................... 25518.3.1 Assignment statements used with sequence program................................................ 255

18.3.2 Input/output variables used in sequence program ..................................................... 256

18.3.3 Timer definition statement ........................................................................................ 258

18.3.4 Logical operators used with sequence program ........................................................ 258

18.3.5 Priority of logical operations .................................................................................... 258

19. Online commands ......................................................................... 25919.1 Key operation ........................................................................................... 261

19.1.1 Changing the mode .................................................................................................. 261

19.1.2 AUTO mode operation ............................................................................................. 26119.1.2.1 Program execution ..................................................................................................... 261

19.1.2.2 Setting a break point .................................................................................................. 262

19.1.2.3 Switching the execution task ...................................................................................... 262

19.1.3 MANUAL mode operation ....................................................................................... 26319.1.3.1 Changing the MANUAL mode speed ......................................................................... 263

19.1.3.2 Absolute reset ............................................................................................................ 263

19.2 Utility operation ....................................................................................... 26419.2.1 Acquiring the program execution status ................................................................... 264

19.2.2 Copy ........................................................................................................................ 26419.2.2.1 Copying a program .................................................................................................... 264

19.2.2.2 Copying point data .................................................................................................... 265

19.2.2.3 Copying point comments ........................................................................................... 265

19.2.3 Erase ........................................................................................................................ 26619.2.3.1 Erasing a program ...................................................................................................... 266

19.2.3.2 Erasing point data ...................................................................................................... 266

19.2.3.3 Erasing point comments ............................................................................................. 267

19.2.3.4 Erasing pallet data ...................................................................................................... 267

19.2.4 Rename .................................................................................................................... 268

19.2.5 Changing the attribute .............................................................................................. 268

19.2.6 Initialize ................................................................................................................... 26919.2.6.1 Initializing the memory .............................................................................................. 269

19.2.6.2 Initializing the communication port ........................................................................... 269

19.2.7 Setting the display language ..................................................................................... 270

19.2.8 Setting the coordinates and units in MANUAL mode ................................................ 270

Page 10: rcx40-pro

vii

19.2.9 Clearing the MPB error message ............................................................................... 270

19.2.10 Setting the UTILITY mode ........................................................................................ 27119.2.10.1 Setting the access level .............................................................................................. 271

19.2.10.2 Setting the execution level ......................................................................................... 271

19.2.10.3 Setting the sequence program execution flag ............................................................. 271

19.2.10.4 Setting the SCARA robot hand system ........................................................................ 272

19.2.10.5 Resetting the internal emergency stop flag .................................................................. 272

19.3 Data handling ........................................................................................... 27319.3.1 Acquiring the display language ................................................................................ 273

19.3.2 Acquiring the access level ........................................................................................ 273

19.3.3 Acquiring the arm status ........................................................................................... 274

19.3.4 Acquiring the break point status ............................................................................... 274

19.3.5 Acquiring the controller configuration status ............................................................ 275

19.3.6 Acquiring the execution level ................................................................................... 275

19.3.7 Acquiring the mode status ........................................................................................ 276

19.3.8 Acquiring the message ............................................................................................. 276

19.3.9 Acquiring the absolute reset status ........................................................................... 277

19.3.10 Acquiring the servo status ........................................................................................ 278

19.3.11 Acquiring the sequence program execution status .................................................... 278

19.3.12 Acquiring the speed setting status ............................................................................. 279

19.3.13 Acquiring the point coordinates and units ................................................................ 279

19.3.14 Acquiring the version information ............................................................................ 280

19.3.15 Acquiring the current positions ................................................................................ 28019.3.15.1 Acquiring the current positions on pulse unit coordinates ............................................ 280

19.3.15.2 Acquiring the current positions on XY coordinates ..................................................... 281

19.3.16 Acquiring the tasks in RUN or SUSPEND status ....................................................... 281

19.3.17 Acquiring the tasks operation status ......................................................................... 282

19.3.18 Acquiring the shift status .......................................................................................... 282

19.3.19 Acquiring the hand status ......................................................................................... 283

19.3.20 Acquiring the remaining memory capacity ............................................................... 283

19.3.21 Acquiring the emergency stop status ........................................................................ 284

19.3.22 Acquiring the error status by self-diagnosis ............................................................... 284

19.3.23 Acquiring the option slot status ................................................................................ 285

19.3.24 Data readout processing ........................................................................................... 286

19.3.25 Data write processing ............................................................................................... 287

19.4 Executing the robot language independently ............................................ 28819.4.1 Switching the program ............................................................................................. 288

19.4.2 Other robot language command processing ............................................................. 289

19.5 Control codes ........................................................................................... 28919.5.1 Interrupting the command execution ........................................................................ 289

20. IO command format ..................................................................... 29020.1 IO command format ................................................................................. 290

20.2 Sending and receiving IO commands ....................................................... 29120.3 IO command list ....................................................................................... 29220.4 IO command description .......................................................................... 293

20.4.1 MOVE command ..................................................................................................... 29320.4.1.1 PTP designation ......................................................................................................... 293

20.4.1.2 Linear interpolation .................................................................................................... 293

20.4.2 MOVEI command .................................................................................................... 29320.4.2.1 PTP designation ......................................................................................................... 293

20.4.3 Pallet movement command ...................................................................................... 29420.4.3.1 PTP designation ......................................................................................................... 294

20.4.4 Jog movement command ......................................................................................... 294

20.4.5 Inching movement command ................................................................................... 295

20.4.6 Point teaching command .......................................................................................... 295

20.4.7 Absolute reset movement command ........................................................................ 296

20.4.8 Absolute reset command .......................................................................................... 296

20.4.9 Servo command ....................................................................................................... 297

Page 11: rcx40-pro

viii

20.4.10 Manual speed change command .............................................................................. 298

20.4.11 Auto speed change command .................................................................................. 298

20.4.12 Program speed change command ............................................................................ 298

20.4.13 Shift designation change command .......................................................................... 299

20.4.14 Hand designation change command ........................................................................ 299

20.4.15 Arm designation change command .......................................................................... 299

20.4.16 Point display unit designation command .................................................................. 299

Appendix ............................................................................................ 300A. Reserved word list .......................................................................................... 300

Page 12: rcx40-pro

ix

Robot language command and function index

� General CommandsCommands

DECLARE .........................................44

DEF FN ............................................46

DIM .................................................48

EXIT FOR .........................................62

FOR ~ NEXT ....................................65

GOSUB ~ RETURN .........................66

GOTO .............................................67

HALT ...............................................69

HOLD..............................................77

IF .....................................................78

LET ..................................................81

ON GOSUB...................................101

ON GOTO.....................................100

REM ...............................................118

SELECT CASE ~ END SELECT .........125

SWI................................................140

WHILE ~ WEND ............................149

Label statements ............................150

� Robot MovementCommands

ABSRST............................................30

DRIVE ..............................................50

DRIVE2 ............................................54

DRIVEI .............................................58

DRIVEI2 ...........................................60

MOVE ..............................................85

MOVE2 ............................................91

MOVEI .............................................95

MOVEI2 ...........................................97

PMOVE ..........................................108

PMOVE2 ........................................112

SERVO ...........................................128

SERVO2 .........................................129

� Input/Output ControlCommands

DELAY .............................................47

DO ..................................................49

LO ...................................................83

MO ..................................................84

RESET ............................................119

SET ................................................130

SO .................................................134

TO .................................................141

WAIT .............................................146

Functions

DO ..................................................49

LO ...................................................83

MO ..................................................84

SO .................................................134

TO .................................................141

� Screen ControlCommands

PRINT ............................................116

Page 13: rcx40-pro

x

� Coordinate ControlCommands

CHANGE .........................................69

CHANGE2 .......................................73

HAND .............................................69

HAND2 ...........................................73

� Key ControlCommands

INPUT .............................................80

RIGHTY/LEFTY ..............................122

RIGHTY2/LEFTY2 ..........................123

SHIFT.............................................132

SHIFT2...........................................133

� RS-232C Communication Port ControlCommands

SEND CMU TO~............................126 SEND~TO CMU ............................126

� Status ChangeCommands

ACCEL .............................................32

ACCEL 2 ..........................................32

ARCH ..............................................33

ARCH2 ............................................34

ASPEED ...........................................35

ASPEED2 .........................................36

AXWGHT ........................................37

AXWGHT2 ......................................38

DECEL .............................................42

DECEL2 ...........................................43

ONLINE/OFFLINE ..........................102

ORGORD ......................................103

� ProcedureCommands

CALL ................................................39

EXIT SUB .........................................63

ORGORD2 ....................................104

OUTPOS .......................................105

OUTPOS2 .....................................106

PDEF..............................................107

SPEED ............................................135

SPEED2 ..........................................136

TOLE .............................................142

TOLE2 ...........................................143

TORQUE .......................................144

TORQUE2 .....................................145

WEIGHT ........................................147

WEIGHT2 ......................................148

SHARED ........................................131

SUB~END SUB ..............................138

Page 14: rcx40-pro

xi

� Arithmetic FunctionsFunctions

ABS................................................151

ARMTYPE ......................................153

ARMTYPE2 ....................................153

ATN ...............................................154

COS ...............................................155

DEGRAD .............................. 155, 156

DIST ..............................................156

INT ................................................157

� Error ControlCommands

ON ERROR GOTO ..........................99

RESUME ........................................121

Functions

ERL ................................................156

ERR ................................................156

� Point OperationsCommands

LET ..................................................81

Pn ..................................................117

� Task ControlCommands

CHGPRI ...........................................40

CUT .................................................41

EXIT TASK ........................................64

RESTART ........................................120

START ............................................137

SUSPEND ......................................139

� Shift OperationsCommands

LET ..................................................81

Sn ..................................................124

Functions

JTOXY ............................................167

JTOXY2 ..........................................167

LOCx ...............................................14

PPNT .............................................167

WHERE ..........................................168

WHERE2 ........................................168

XYTOJ ............................................168

XYTOJ2 ..........................................168

Functions

LOCx ...............................................14

LSHIFT ...........................................157

MCHREF ........................................157

MCHREF2 ......................................158

RADDEG .......................................160

RSHIFT ..........................................160

SIN ................................................160

SQR ...............................................161

TAN ...............................................161

Page 15: rcx40-pro

xii

� Character String OperationFunctions

CHR$.............................................164

LEFT$.............................................164

LEN................................................157

MID$ .............................................165

� Parameter ReferenceFunctions

ACCEL ...........................................151

ACCEL2 .........................................151

ARCH ............................................152

ARCH2 ..........................................152

AXWGHT ......................................154

AXWGHT2 ....................................154

DECEL ...........................................155

DECEL2 .........................................155

ORGORD ......................................158

ORGORD2 ....................................159

OUTPOS .......................................159

OUTPOS2 .....................................159

TOLE .............................................162

TOLE2 ...........................................162

TORQUE .......................................144

TORQUE2 .....................................145

WEIGHT ........................................163

WEIGHT2 ......................................163

ORD ..............................................162

RIGHT$ .........................................165

STR$ ..............................................165

VAL................................................162

� Date and Time ControlFunctions

DATE$ ...........................................164

TIME$ ............................................166TIMER ............................................161

Page 16: rcx40-pro

xiii

� Main Robot CommandsCommands

ACCEL .............................................31

ARCH ..............................................33

ASPEED ...........................................35

AXWGHT ........................................37

CHANGE .........................................69

DECEL .............................................42

DRIVE ..............................................50

DRIVEI .............................................58

HAND .............................................69

MOVE ..............................................85

MOVEI .............................................95

ORGORD ......................................103

OUTPOS .......................................105

PMOVE ..........................................108

RIGHTY/LEFTY ..............................122

SERVO ...........................................128

SHIFT.............................................132

SPEED ............................................135

TOLE .............................................142

TORQUE .......................................144

WAIT ARM ....................................146

WEIGHT ........................................147

Functions

ACCEL ...........................................151

ARCH ............................................152

ARMTYPE ......................................153

AXWGHT ......................................154

DECEL ...........................................155

JTOXY ............................................167

ORGORD ......................................158

OUTPOS .......................................159

TOLE .............................................162

TORQUE .......................................144

WEIGHT ........................................163

WHERE ..........................................168

XYTOJ ............................................168

� Sub Robot CommandsCommands

ACCEL 2 ..........................................32

ARCH2 ............................................34

ASPEED2 .........................................36

AXWGHT2 ......................................38

CHANGE2 .......................................73

DECEL2 ...........................................43

DRIVE2 ............................................54

DRIVEI2 ...........................................60

HAND2 ...........................................73

MOVE2 ............................................91

MOVEI2 ...........................................97

ORGORD2 ....................................104

OUTPOS2 .....................................106

PMOVE2 ........................................112

RIGHTY2/LEFTY2 ..........................123

SERVO2 .........................................129

SHIFT2...........................................133

SPEED2 ..........................................136

TOLE2 ...........................................143

TORQUE2 .....................................145

WAIT ARM2 ..................................146

WEIGHT2 ......................................148

Functions

ACCEL2 .........................................151

ARCH2 ..........................................152

ARMTYPE2 ....................................153

AXWGHT2 ....................................154

DECEL2 .........................................155

JTOXY2 ..........................................167

ORGORD2 ....................................159

OUTPOS2 .....................................159

TOLE2 ...........................................162

TORQUE2 .....................................145

WEIGHT2 ......................................163

WHERE2 ........................................168

XYTOJ2 ..........................................168

Robot language command and function index for robot group

Page 17: rcx40-pro

xiv

MEMO

Page 18: rcx40-pro

1

2

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.

Page 19: rcx40-pro

2

2

2. Characters

The YAMAHA robot language uses the following characters and symbols.

Alphabetic charactersA, 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

Numbers0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Symbols( ) [ ] + - * / ^ = < > & | ~ _ % ! # $ : ; , . ” ’ @ ?

Page 20: rcx40-pro

3

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 ( _ ).

The functions and examples of program names having special meaning are shown below.a) FUNCTION

b) SEQUENCE

c) _SELECT

d) COMMON

a) FUNCTIONFunctions:

Pressing the USER key in “PROGRAM” mode or “MANUAL” mode allows theuser function to be used.

When used in “PROGRAM” mode, commands (MOVE, GOTO, etc.) frequentlyused during program editing can be entered with the function keys.

When used in “MANUAL” mode, DO output is available with the function keyswithout 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)MOMENTARYDO(25)=1DO(25)=0 :

’FOR PROGRAM MODE*P_F1:’MOVE P,*P_F6:’MOVE L,*P_F2:’GOTO * :

See the YAMAHA Robot Controller Owner’s Manual for more details.

Page 21: rcx40-pro

4

b) SEQUENCEFunctions:

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 bythe program capacity.

Using this function allows the controller to operate as if it had a buit-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) :

See the descriptions of sequence programs in this manual.

3. Program Names

Page 22: rcx40-pro

5

3. Program Names

c) _SELECTFunctions:

This program is always selected if present when the robot program is reset. Thisfunction is for selecting a program by DI input and that program is then alwaysselected 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 onlinecommand, the system switches to the “_SELECT” program.

· When program reset at power ON is selected, the system resets when power is turnedon 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 iscurrently running.

ON ERROR GOTO *ER1*ST:SELECT CASE DI3( )CASE 0GOTO *ST

CASE 1SWI <PART1>

CASE 2SWI <PART2>

CASE 3SWI <PART3>

CASE ELSEGOTO *FIN

END SELECTGOTO *ST

*FIN:HALT*ER1:IF ERR=&H0303 THEN *NEXT_LON ERROR GOTO 0

*NEXT_L:RESUME NEXT

See the description of each command in this manual for details.

n NOTE· Using an ON ERROR statement

allows running the program in a loopnot ending in an error even withoutthe program name specified by a SWIstatement.

· An error code issued during executionof the program is input into a variableERR. “ERR=&0303” means“Program doesn’t exist”.

Page 23: rcx40-pro

6

d) COMMONFunctions:

Using two or more robot programs for the same processing is usually a waste ofprogramming area. So the COMMON program can be used to perform an identicaltask from multiple robot programs.

Program examples:Program name: SAMPLE1

DECLARE SUB *DISTANCE(A!,B!,C!)DECLARE *AREAX!=2.5Y!=1.2CALL *DISTANCE(X!,Y!,REF C!)GOSUB *AREAPRINT C!,Z!HALT

Program name: SAMPLE2DECLARE SUB *DISTANCE(A!,B!,C!)DECLARE *AREAX!=5.5Y!=0.2CALL *DISTANCE(X!,Y!,REF C!)GOSUB *AREAPRINT C!,Z!HALT

Program name: COMMONSUB *DISTANCE(A!,B!,C!)C!=SQR(A!^2+B!^2)

END SUB*AREA:Z!=X!*Y!

RETURN

See the description of each command in this manual for details.

3. Program Names

Page 24: rcx40-pro

7

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.

Examples: LOOP, SUBROUTINE, GET_DATA

Page 25: rcx40-pro

8

5. Command Statement Format

One robot language command must be written on a single line within 75 characters andarranged in the format shown below:

[<label>:] <statement> [<operand>]n NOTE· Items enclosed in [ ] can be omitted.· 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 withan asterisk ( * ) and end with a colon( : ).

· Operands may be unnecessary forsome commands.

· Programs are executed in order fromtop to bottom unless a branchinginstruction is given.

Page 26: rcx40-pro

9

6. Constants

Constants are basically classified as follows:

Real type

Integer type

Constants

Monorefined real numbers

Character type

Numeric type

Character string

Binary constants

Decimal constants

Hexadecimal constants

6.1 Character constantsCharacter constants are character string data of up to 75 bytes surrounded by doublequotation marks ( ” ). Character strings may include upper case alphabetic characters,numbers and symbols. To include a double quotation mark in a string, enter two doublequotation marks in succession.

Examples:”YAMAHA ROBOT””EXAMPLE OF””A”””PRINT ”COMPLETED””YAMAHA ROBOT”

6.2 Numeric constants

6.2.1 Integer constants

1. Decimal constants

Integers from –1,073,741,823 to 1,073,741,823 may be used.

2. Binary constants

Binary numbers of 8 bits or less may be used. The prefix “&B” is attached to thenumber to define it as a binary value.

3. Hexadecimal constants

Hexadecimal values from 0 to FFFF may be used. The prefix “&H” is attached tothe number to define it as a hexadecimal value.

6.2.2 Real constants

1. Monorefined real numbers

Real numbers from -999999.9 to +999999.9 may be used (7 digits including integersand decimals). For example, “.0000001” may be used.

2. Monorefined real numbers in exponent form

Numbers from -1.0*1038 to +1.0*1038 may be used. Mantissas should be 7 digits orless, including integers and decimals.

Examples:-1.23456E-123.14E01.E5

Page 27: rcx40-pro

10

7. Variables

Variables are classified as follows:

Variable

Simple variables

Dynamic variables

Character type

Character string variables

Character string variables

Point data variables

Shift coordinate variables

Element variables

Input-output variables

Array variables

Dynamic arrays

Static variables

Numeric type

Numeric type

Character type

Numeric type

Arithmetic array variables

Character string array variables

Arithmetic variables

Arithmetic variables

Shift element variables

Integer variablesReal variables (monorefined)

Integer variables

Real variables (monorefined)

Character string array variables

Integer array variables

Real number array variables (monorefined)Input variables

Output variables

Point element variables

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=0 to 9) cannot be used.

Examples:COUNT ... permittedABS ........not permittedFNAME ... not permittedS91 ..... not permitted

The type of variable is specified by the type declaration character attached at the end ofthe variable name. If no type declaration character is attached, the variable is viewed as areal type.

Type declaration characters

$ (Character type)

% (Integer type)

! (Real type)

Examples:CNT0% .......... Integer variableCNT! ...........Real variableSTR1$ ..........Character variableACT%(1)........ Integer array

Names of static variables are predetermined as follows:Integer type ....... S G I n (n: 0 to 7)

Real type ........... S G R n (n: 0 to 7)

Page 28: rcx40-pro

11

7. Variables

7.1 Valid range of variables

7.1.1 Valid range of dynamic variables

Dynamic variables are classified into global variables and local variables according totheir declaration position in the program.

• Dynamic global variables are declared outside of sub-procedures (outside ofprogram areas enclosed by a SUB statement and END SUB statement).

• Dynamic local variables are declared within sub-procedures and are valid only inthese sub-procedures.

7.1.2 Valid range of static variables

Static variables are always valid in the entire program regardless of program statements.

7.1.3 Valid range of dynamic array variables

Dynamic array variables are classified into global array variables and local array variablesaccording to their declaration position in the program.

• Dynamic global array variables are declared outside of sub-procedures (outside ofprogram areas enclosed by a SUB statement and END SUB statement).

• Dynamic local array variables are declared within sub-procedures and are validonly in these sub-procedures.

An array variable can express multiple elements. The elements of an array can be integersor subscript expressions following the variable name (see below). The length of an arrayvariable is defined by the DIM statement. The actual number of array elements will be theDIM statement subscript number plus 1, as subscripts begin with 0.

Format :

<variable name> [ % ] (<expression>, [<expression>, <expression>] ) ! $

Examples:C%(2) ...... Integer variableN!(1,2)....Real variableR1$(A).....Character variable

The length of an array variable that can be declared with the DIM statement depends onthe program size.

Page 29: rcx40-pro

12

7.2 Character variablesCharacter variables and character array variables can express a character string of up to75 characters. Character strings may include alphabetic characters, numbers and symbols.

Examples:R1$ = “YAMAHA“R2$(2)= R1$ + “ MOTOR“

7.3 Numeric variables

7.3.1 Integer variables

Integer variables and integer array variables can express an integer from –1,073,741,823to 1,073,741,823.

Examples:R1% = 10R2%(2)= R1% + 10000

7.3.2 Real variables

Real variables and real array variables can express a real number from –1.0*1038 to 1.0*1038.

Examples:R1! = 10.31R2!(2)= R1% + 1.98E3

7.4 Array variablesAn array variable can express multiple elements. The elements of an array can be integersor subscript expressions following the variable name (see below). The length of an arrayvariable is defined by the DIM statement. The actual number of array elements will be theDIM statement subscript number plus 1, as subscripts begin with 0. The subscripts can beused in up to three dimensions. All array variables are dynamic variables.

Format :

<variable name> [ % ] (<expression>, [<expression>, <expression>] ) ! $

Examples:A%(1) ................. Integer array variableDATA!(1,10,3)......... Monorefined real number array variableSTRING$(10)........... Character array variable

7. Variables

n NOTEThe length of an array variable thatcan be declared with the DIMstatement depends on the program size.

Page 30: rcx40-pro

13

7.5 Clearing variables

7.5.1 Clearing dynamic variables

In the cases below, numeric variables are cleared to zero, and character variables arecleared to a null string. Array variables are cleared in the same way.

� When the program was edited in PROGRAM mode.

� When the program was switched.

� When compiling was performed in PROGRAM mode.

� When the program was compiled in AUTO mode.

� When the program was reset in AUTO mode.

� When dedicated input signal DI15 (program reset input) was turned on while theprogram was stopped in AUTO mode.

� When either of the following was initialized in SYSTEM mode.

1. Program memory (SYSTEM>INIT>MEMORY>PROGRAM)

2. Entire memory (SYSTEM>INIT>MEMORY>ALL)

� When the SWI command was executed in AUTO mode.

� When any of the following online commands was executed.

@RESET, @INIT PGM, @INIT MEM, @INIT ALL, @SWI

� When the SWI statement was executed in the program.

� When the HALT statement was executed in the program.

7.5.2 Clearing static variables

In the cases below, integer variables and real variables are cleared to zero.

� When the following was initialized in SYSTEM mode.

Entire memory (SYSTEM>INIT>MEMORY>ALL)

� When any of the following online commands was executed.

@INIT MEM, @INIT ALL

7. Variables

c CAUTIONDefinitions of dynamic variables arecleared when the program was editedin PROGRAM mode.

Page 31: rcx40-pro

14

8. Other Variables

1. Point data variableThis variable specifies a point data number with a numeric constant or expression. Apoint data number is expressed with a “P” followed by a number of 4 digits or less, or anexpression surrounded by brackets ( [ ] ).Point number can be from 0 to 4000.

Format :

Pnnnn or P ”[”<expression>”]”

n = 0 to 9

(The quotation marks around the brackets do not mean that the brackets may be omitted.They mean that the brackets should be directly written.)

Examples:P0,P110P[A],P[START_POINT],P[A(10)]

2. Shift coordinate variableThis variable specifies a shift coordinate number with a numeric constant or expression.A shift coordinate number is expressed with an “S” followed by a 1-digit number or anexpression surrounded by brackets ( [ ] ).

Format :

Sn or S ”[”<expression>”]”

n = 0 to 9

(The quotation marks around the brackets do not mean that the brackets may be omitted.They mean that the brackets should be directly written.)

Examples:S1S[A],S[BASE],S[A(10)]

3. Point data element variableThis variable handles the point data with the axis unit and hand system flag.

Format :LOCx

LOCx (<point expression>)

x : X, Y, Z, R, A, B (axis definition), F (hand system flag definition)

Examples:A(1)=LOCX(P10)

----------- The X-axis data of P10 is assigned to array variable A(1).LOCZ(P[A])=100.0

----------- The Z-axis data of P[A] is set to 100.0.LOCF(P100)=1

----------- Sets the P100 hand system flag to RIGHTY (a right-handedsystem).(The P100 point data must be a "mm" unit.)

n NOTEThe hand system flag is valid when thepoint data unit is set to the "mm" units.Note that the hand system flag is validonly for the SCARA robot.The hand system flag value may be 0(no designation), 1 (right-handedsystem) or 2 (left-handed system).

Page 32: rcx40-pro

15

8. Other Variables

4. Shift element variableThis variable is used with shift data for each element.

Format :

LOCx (<shift expression>)

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°.

5. Parallel input variableThis variable is used to indicate the status of parallel input signals.

Format 1:

DIm ( b, · · ·, b )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

DI ( mb, · · ·, mb )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7

Examples:A%=DI1()

----------- Input status of ports DI(17) to DI(10) is assigned to variableA%.

A%=DI5(7,4,0)----------- Input status of DI(57), DI(54) and DI(50) is assigned to

variable A%.(If all above signals are 1(ON), then A%=7.)

A%=DI(27,15,10)----------- Input status of DI(27), DI(15) and DI(10) is assigned to

variable A%.(If all above signals except DI(10) are 1 (ON), then A%=6.)

n NOTEBits must be specified in ascendingorder from the right.A “0” is entered if there is no actualinput board.

Page 33: rcx40-pro

16

6. Parallel output variableThis variable is used to specify the parallel output signals and indicate the output status.

Format 1:

DOm ( [ b, · · ·, b ] )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

DO ( mb, · · ·, mb )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7

Examples:A%=DO2()

----------- Output status of DO(27) to DO(20) is assigned to variableA%.

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.)

n NOTEBits must be specified in ascendingorder from the right.External output is unavailable if thereis no output board.

8. Other Variables

Page 34: rcx40-pro

17

7. Internal output variableThis variable is used to exchange signals with a sequence program.The contents of this variable can be changed and referred to as needed.Ports 0 and 1 are used for dedicated internal output variables that can only be referred to.

1) Port 0 indicates the status of origin sensors for axes 1 to 8 (in order from bit 0).

Each bit sets to “1” when the origin sensor turns ON, and to “0” when OFF.

2) Port 1 indicates the HOLD status of axes 1 to 8 (in order from bit 0).

Each bit sets to “1” when the axis is in HOLD status, and to “0” when not.

Being in HOLD status means that the axis movement is stopped and positionedwithin the target point tolerance while the servo is still turned ON.

When the servo turns OFF, the HOLD status is released.

Axes not being used are set to “1”.

Format 1:

MOm ( [ b, · · ·, b ] )

m : port number 0 to 7, 10 to 17, 20 to27b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

MO ( mb, · · ·, mb )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7

Examples:A=MO2 ()

----------- Internal output status of MO(27) to MO(20) is assigned tovariable 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.)

n NOTEBits must be specified in ascendingorder from the right.

8. Other Variables

Page 35: rcx40-pro

18

8. Arm lock output variableThis variable is used to prohibit axis movement.The contents of this variable can be output and referred to as needed.There is only 1 port and bits 0 to 7 respectively correspond to axes 1 to 8.When this variable is ON, movement on the corresponding axis is prohibited.

Format 1:

LOm ( [ b, · · ·, b ] )

m : port number 0b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

LO ( mb, · · ·, mb )

m : port number 0b : bit definition 0 to 7

Examples:A%=LO0()

----------- Arm lock status of LO(07) to LO(00) is assigned to variableA%.

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%=LO(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.)

8. Other Variables

n NOTEBits must be specified in ascendingorder from the right.

Page 36: rcx40-pro

19

9. Timer output variableThis variable is used in the timer function of a sequence program.The contents of this variable can be changed and referred to as needed.Timer function is valid only in the sequence program. If this variable is output in a normalprogram, it is an internal output like the MO variable.

Format 1:

TOm ( [ b, · · ·, b ] )

m : port number 0b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

TO ( mb, · · ·, mb )

m : port number 0b : 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 variableA%.(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.)

8. Other Variables

n NOTEBits must be specified in ascendingorder from the right.

Page 37: rcx40-pro

20

10. Serial input variableThis variable is used to indicate the status of serial input signals.

Format 1:

SIm ( [ b, · · ·, b ] )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

SI ( mb, · · ·, mb )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7

Examples:A%=SI1()

----------- Input status of ports SI(17) to SI(10) is assigned to variableA%.

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).

8. Other Variables

n NOTEBits must be specified in ascendingorder from the right.A “0” is entered if there is no actualserial board.

Page 38: rcx40-pro

21

11. Serial output variableThis variable is used to define the serial output signals and indicate the output status.

Format 1:

SOm ( [ b, · · ·, b ] )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7If the bit definition is omitted, bits 0 to 7 are all selected.

Format 2:

SO ( mb, · · ·, mb )

m : port number 0 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7

Examples:A%=SO2()

----------- Output status of SO(27) to SO(20) is assigned to variableA%.

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.)

8. Other Variables

n NOTEBits must be specified in ascendingorder from the right.External output is unavailable if thereis no serial board.

Page 39: rcx40-pro

22

2

8. Other Variables

12. Serial word inputThis variable indicates the status of the serial input word information.

Format 1:

SIW (m)

m : Port No. 2 to 15The 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%.

13. Serial double word inputThis variable indicates the state of the serial input word information as a double word.

Format 1:

SID (m)

m : Port No. 2, 4, 6, 8, 10, 12, 14The acquisition range is -1073741824 (&HC0000000) to 1073741823 (&H3FFFFFFF).

Example:A%=SID (2)

----------- The input state from SIW (2) , SIW (3) is assigned to variableA%.

A%=SID (14)----------- The input state from SIW (14), SIW (15) is assigned to

variable A%.

n NOTEThe information is handled asunsigned word data.0 is input if the serial board does notactually exist.

n NOTEThe information is handled as signeddouble word data.0 is input if the serial board does notactually exist.An error will occur if the value is notwithin the acquisition range(&H80000000 to &HBFFFFFFF,&H40000000 to &H7FFFFFFF.)

Page 40: rcx40-pro

23

2

8. Other Variables

14. Serial word outputThis variable outputs the serial output word information, and indicates the output status.

Format 1:

SOW (m)

m : Port No. 2 to 15The output range is 0 (&H0000) to 65535 (&HFFFF).Note that if a negative value is output, the low-order word information, converted into ahexadecimal, will be 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.

15. Serial double word outputThis variable outputs the serial input word information status as a double word, andindicates the output status.

Format 1:

SOD (m)

m : Port No. 2, 4, 6, 8, 10, 12, 14The output range is -1073741824 (&HC0000000) to 1073741823 (&H3FFFFFFF).Note that if a negative value is output, the low-order word information, converted into ahexadecimal, will be output.

Example:A%=SOD (2)

----------- The input status from SOW (2), SOW (3) is assigned tovariable A%.

SOD (14)=A%----------- The contents of variable A% are assigned in SOD (14).

n NOTEThe information is handled asunsigned word data.If a serial board does not actuallyexist, the information is not outputexternally.If a value exceeding the output rangeis assigned, the low-order 2-byteinformation is output.

n NOTEThe information is handled as signeddouble word data.If a serial board does not actuallyexist, the information is not outputexternally.An error will occur if the value is notwithin the output range (&H80000000to &HBFFFFFFF, &H40000000 to&H7FFFFFFF.)

Page 41: rcx40-pro

24

9. Expressions and Operations

9.1 Arithmetic operations

9.1.1 Arithmetic operators

^ Exponent operation

- Minus sign

*, / Multiplication and division

+, - Addition and subtraction

MOD Remainder

When the values used in remainder calculations are real numbers, they are converted intointegers (all decimal fractions are truncated) and the calculation is then performed withthe 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)

9.1.2 Relational operators

= Equal to

<>, >< Not equal to

< Less than

> Greater than

<=, =< Less than or equal to

>=, => Greater than or equal to

Relational operators are used to compare 2 values. If the result is true, a “-1” is obtained.If it is false, a “0” is obtained.

Example:A=10>5

----------- Since 10 > 5 is true, A = -1.

n NOTEThe expected result might sometimesnot be obtained if equivalent relationaloperators were used with realvariables or real array variables.Examples:

A = 2B = SQR (A!)IF A! = B!*B ! THEN :In this case, A! will be unequal toB!*B!.

Page 42: rcx40-pro

25

9.1.3 Logic operations

NOT, ~ Logical NOT

AND, & Logical AND

OR, | Logical OR

XOR Exclusive OR

Logic operators are used to manipulate 1 or 2 values bit by bit. For example, the status ofan I/O port can be manipulated. Depending on the logic operation performed, the resultsgenerated are either “0” or “1”. Logic operations with real numbers convert the valuesinto integers before they are executed.

Examples:A%=NOT 13.05

----------- Each bit of 13 is reversed, and the result “–14” is assigned toA%.

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%, soA% 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%, soA% 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 resultis assigned to A%, so A% becomes 9.

9.1.4 Priority of arithmetic operation

1. Expressions included in parentheses

2. Functions, variables

3. ^ (exponents)

4. Independent “+” and “-” signs (monominal operators)

5. * (multiplication), / (division)

6. MOD

7. + (addition), - (subtraction)

8. Relational operators

9. NOT, ~ (Logical NOT)

10. AND, & (logical AND)

11. OR, |, XOR (Logical OR, exclusive OR)

Operations are performed in the above priority order. When two operations of equal priorityappear in the same statement, the operations are executed in order from left to right.

9. Expressions and Operations

Page 43: rcx40-pro

26

9.1.5 Data format conversion

Data format is converted in cases where two values of different formats are involved inthe same operation.

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 resultbecomes 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

9.2 Character string operations

9.2.1 Character string connection

Character strings may be combined by using the “+” sign.

Examples:A$=”YAMAHA”B$=”ROBOT”C$=”LANGUAGE”D$=”MOUNTER”E$=A$+” ”+B$+” ”+C$F$=A$+” ”+D$PRINT E$PRINT F$

Results: YAMAHA ROBOT LANGUAGEYAMAHA MOUNTER

9.2.2 Character string comparison

Characters can be compared with the same relational operators as used for numeric values.In the case of character strings, the comparison is performed from the beginning of eachstring, character by character. If all characters match in both strings, they are consideredto be equal. Even if only one character in the string differs from its corresponding characterin the other string, the string with the larger (higher) character code is treated as the largerstring.If one string is shorter than the other, it is judged to be the string of a lesser value.

All examples below are “true”.

Examples:”AA”<”AB””X&”>”X#””DESK"<”DESKS”

Character string comparison can be used to find out the contents of character strings, or tosort character strings into alphabetical order.

9. Expressions and Operations

Page 44: rcx40-pro

27

9.3 Point data formatThere are two types of point data formats: joint coordinate format and Cartesian coordinateformat.Point numbers are in the range of 0 to 4000.

9.3.1 Joint coordinate format

± n n n n n n (same for X, Y, Z, R, A, B axes)This is a decimal integer constant of 7 digits or less with a plus or minus sign, and can bespecified from –6144000 to 6144000. (Unit: pulses)

9.3.2 Cartesian coordinate format

± n n n . n n to ± n n n n n n n. (same for X, Y, Z, R, A, B axes)This is a decimal fraction of a total of 7 digits including 2 or less decimal places. (Unit:mm or degrees)When setting a hand system flag of the extended setting for the SCARA robot, set either1 or 2 at the end of the data. If a value other than 1 or 2 is set, or if no value is designated,0 will be set to indicate that no hand system flag is set.

1: RIGHTY (right-handed system) 2: LEFTY (left-handed system)

9.4 DI/DO conditional expressionsDI/DO conditional expressions may be used to set conditions for WAIT statements andSTOPON options in MOVE statements. Numeric constants, variables and arithmeticoperators that may be used with DI/DO conditional expressions are shown below.

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.

n NOTEPlus (+) signs can be omitted.

9. Expressions and Operations

Page 45: rcx40-pro

28

10. Multiple Robot Control

10.1 OverviewThe YAMAHA robot controller can be used to control multiple robots.The multitask function also enables multiple robots to move asynchronously. To use thisfunction, settings for two robots or settings for auxiliary axes must be made in the systemat the time of shipment.

A robot axis is classified into one of the groups below.Main group (4 axes)Main group (2 axes) + sub group (2 axes)

A main group is composed of one main robot and main auxiliary axes, and a sub group iscomposed of one sub robot and sub auxiliary axes.When using one robot without auxiliary axis, settings are made only for the main grouprobot.When no settings have been made for main auxiliary axes and sub auxiliary axes, themain group is composed only of the one main robot, and the sub group is composed onlyof the one sub robot.

Main robot (Number of axes: 1 to 4)

Main auxiliary axis (Number of axes: 1 to 4)Main group (Number of axes: 1 to 4)

Sub robot (Number of axes: 1 or 2)

Sub auxiliary axis (Number of axes: 1 or 2)

Sub group(Number of axes: 1 or 2)

Page 46: rcx40-pro

29

n NOTE1. The MOVE (MOVE2) and MOVEI

(MOVEI2) commands are used tomove a main robot (a sub robot).

An axis specified as an auxiliary axiscannot be moved with the MOVE(MOVE2), MOVEI (MOVEI2) andPMOVE (PMOVE2) commands. Usethe DRIVE (DRIVE2) or DRIVEI(DRIVEI2) command to move it.

2. Linear interpolation or circularinterpolation using the MOVEstatement can only be executed withtask 1 (main task) or direct command.

3. PTP control is possible with theMOVE2 statement. Linearinterpolation and circularinterpolation are inoperable.

4. When specifying all axes with theSERVO or SERVO2 command, theservos of all axes in the main groupand sub group can be switched ON orOFF.

10. Multiple Robot Control

10.2 Command list for each groupThe special commands and functions for robot movement and coordinate control are shownbelow.

Classification Main group Sub group

Robot movement DRIVE, DRIVEI, MOVE, MOVEI,

PMOVE, SERVO, WAIT ARM

DRIVE2, DRIVEI2, MOVE2,

MOVEI2, PMOVE2, SERVO2,

WAIT ARM2

Coordinate control CHANGE, HAND, LEFTY/RIGHTY,

SHIFT

CHANGE2, HAND2,

LEFTY2/RIGHTY2, SHIFT2

Status change ACCEL, ARCH, ASPEED,

AXWGHT, DECEL, ORGORD,

OUTPOS, SPEED, TOLE,

WEIGHT.

ACCEL2, ARCH2, ASPEED2,

AXWGHT2, DECEL2, ORGORD2,

OUTPOS2, SPEED2, TOLE2,

WEIGHT2

Point operation JTOXY, WHERE, XYTOJ JTOXY2, WHERE2, XYTOJ2

Parameter change ACCEL, ARCH, AXWGHT,

DECEL, ORGORD, OUTPOS,

TOLE, WEIGHT

ACCEL2, ARCH2, AXWGHT2,

DECEL2, ORGORD2, OUTPOS2,

TOLE2, WEIGHT2

Page 47: rcx40-pro

30

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 subrobot group run and finally absolute reset performed.

Example:ABSRST

----------- Performs return-to-origin along absolute motor axes.

Related commands: ORIGIN, ORGORD, ORGORD2, MCHREF, MCHREF2

n NOTE· This command applies to axes whose

return-to-origin method is notspecified as “MARK”.

· This command cannot be executed ifreturn-to-origin is incomplete for anaxis whose return-to-origin method isspecified as “MARK”.

Page 48: rcx40-pro

31

2

11. Command Statements

ACCEL statement(Acceleration setting statement for main group)

Format 1:

ACCEL <expression>

Format 2:

ACCEL (<expression 1>) = <expression 2>

The value of <expression 1> must be from 1 to 6 (axis number).The value of <expression> and <expression 2> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the acceleration coefficient of the main group parameters to thevalue specified in <expression>.Format 1 changes all axes in the main group. Format 2 changes the acceleration coefficientof the axis specified in <expression 1> to the value specified in <expression 2>.

Example:A=50ACCEL AACCEL(3)=100’CYCLE WITH INCREASING ACCELERATIONFOR A=10 TO 100 STEP 10ACCEL AMOVE P,P0MOVE P,P1NEXT AHALT “END TEST”

n NOTE· This command changes the

acceleration parameters for the mainaxes and auxiliary axes of the robot.

· If an axis that is set to “no axis” inthe system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

Page 49: rcx40-pro

32

2

11. Command Statements

ACCEL 2 statement(Acceleration setting statement for sub group)

Format 1:

ACCEL2 <expression>

Format 2:

ACCEL2 (<expression 1>) = <expression 2>

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: %)

Explanation:This command changes the acceleration coefficient of the sub group parameter to thevalue specified in <expression>.Format 1 changes all axes in the sub group. Format 2 changes the acceleration coefficientof the axis specified in <expression 1> to the value specified in <expression 2>.

Example:A=50ACCEL2 AACCEL2(3)=100’CYCLE WITH INCREASING ACCELERATIONFOR A=10 TO 100 STEP 10ACCEL2 AMOVE2 P,P0MOVE2 P,P1NEXT AHALT “END TEST”

n NOTE· This statement is valid only when the

sub group is set in the systemgeneration.

· If an axis that is set to “no axis” inthe system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

Page 50: rcx40-pro

33

2

11. Command Statements

ARCH statement(Arch position setting statement for main group)

Format 1:

ARCH <expression>

Format 2:

ARCH (<expression 1>) = <expression 2>

The value of <expression 1> must be from 1 to 6 (axis number).The value of <expression> and <expression 2> must be from 1 to 6144000. (Unit: pulses)

Explanation:This statement changes the arch position parameter for the main group to the value specifiedin <expression>. Format 1 changes all axes of the main group. Format 2 changes the archposition parameter for the axis specified in <expression 1> to the value specified in<expression 2>.

Example:’CYCLE WITH INCREASING ARCH POSITIONDIM SAV(3)GOSUB *SAVE_ARCHFOR A=1000 TO 10000 STEP 1000GOSUB *CHANGE_ARCHMOVE P,P0,Z=0DO3(0)=1 --------- Chuck (or gripper) closes.MOVE P,P1,Z=0DO3(0)=0 --------- Chuck (or gripper) opens.NEXT AGOSUB *RESTORE_ARCHHALT*CHANGE_ARCH:FOR B=1 TO 4ARCH(B)=A

NEXT BRETURN

*SAVE_ARCH:FOR B=1 TO 4SAV(B-1)=ARCH(B)

NEXT BRETURN

*RESTORE_ARCH:FOR B=1 TO 4ARCH(B)=SAV(B-1)

NEXT BRETURN

n NOTEIf an axis that is set to “no axis” in thesystem generation is specified, then anerror message “Specificationmismatch” appears and execution ofthe command will stop.

Page 51: rcx40-pro

34

2

11. Command Statements

ARCH2 statement(Arch position setting statement for sub group)

Format 1:

ARCH2 <expression>

Format 2:

ARCH2 (<expression 1>) = <expression 2>

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)

Explanation:This statement changes the arch position parameter for the sub group to the value specifiedin <expression>. Format 1 changes all axes of the sub group. Format 2 changes the archposition parameter for the axis specified in <expression 1> to the value specified in<expression 2>.

Example:’CYCLE WITH INCREASING ARCH POSITIONDIM SAV(3)GOSUB *SAVE_ARCHFOR A=1000 TO 10000 STEP 1000GOSUB *CHANGE_ARCHMOVE2 P,P0,Z=0DO3(0)=1 --------- Chuck (or gripper) closes.MOVE2 P,P1,Z=0DO3(0)=0 --------- Chuck (or gripper) opens.NEXT AGOSUB *RESTORE_ARCHHALT*CHANGE_ARCH:FOR B=1 TO 4ARCH2(B)=ANEXT BRETURN*SAVE_ARCH:FOR B=1 TO 4SAV(B-1)=ARCH2(B)

NEXT BRETURN*RESTORE_ARCH:FOR B=1 TO 4ARCH2(B)=SAV(B-1)NEXT BRETURN

n NOTE· This statement is valid only when the

sub group is set in the systemgeneration.

· If an axis that is set to “no axis” inthe system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

Page 52: rcx40-pro

35

2

11. Command Statements

ASPEED statement(Automatic movement speed setting statement for main group)

Format:

ASPEED <expression>

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the automatic movement speed for the main group to the valuespecified in <expression>.

Example:SPEED 70ASPEED 100MOVE P,P0

----------- Moves at 70% (=100*70) of maximum speed from the currentposition to P0.

ASPEED 50MOVE P,P1

----------- Moves at 35% (=50*70) of maximum speed from the currentposition to P1.

MOVE P,P2,S=10----------- Moves at 5% (=50*10) of maximum speed from the current

position to P2.HALT

Related commands: ASPEED2, SPEED, SPEED2

n NOTE· This statement changes all the

movement speed parameters for themain axes and auxiliary axes of therobot.

· Robot operating speed is determinedby the product of the automaticmovement speed (specified by theMPB or ASPEED command) and theprogram speed (specified by theSPEED command).Example:When the automatic movement speedis 80% and the program speed set bythe SPEED command is 50%, then:Robot operating speed = 80%*50% =40%

Page 53: rcx40-pro

36

2

11. Command Statements

ASPEED2 statement(Automatic movement speed setting statement for sub group)

Format:

ASPEED2 <expression>

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the automatic movement speed for the sub group to the valuespecified in <expression>.

Example:SPEED2 70ASPEED2 100MOVE2 P,P0

----------- Moves at 70% (=100*70) of maximum speed from the currentposition to P0.

ASPEED2 50MOVE2 P,P1

----------- Moves at 35% (=50*70) of maximum speed from the currentposition to P1.

MOVE2 P,P2,S=10----------- Moves at 5% (=50*10) of maximum speed from the current

position to P2.

Related commands: ASPEED, SPEED, SPEED2

n NOTE· This command changes all the

movement speed parameters for themain axes and auxiliary axes of therobot.

· Robot operating speed is determinedby the product of the automaticmovement speed (specified by theMPB or ASPEED2 command) and theprogram speed (specified by theSPEED2 command).Example:When the automatic movement speedis 80% and the program speed set bythe SPEED2 command is 50%, then:Robot operating speed = 80%*50% =40%

n NOTEThis statement is valid only when thesub group is set in the systemgeneration.

Page 54: rcx40-pro

37

2

11. Command Statements

AXWGHT statement(Axis tip weight setting statement for main group)

Format:

AXWGHT (<expression 1>) = <expression 2>

The value of <expression 1> must be from 1 to 6 (axis number).The range of <expression 2> differs depending on the selected robot model.

Explanation:This statement changes the axis tip weight parameter for the main group axis specified in<expression 1> to the value specified in <expression 2>.

Example:A=5B=0C=AXWGHT(1) --------- EscapeAXWGHT(1)=ADRIVE(1,P0)AXWGHT(1)=BDRIVE(1,P1)AXWGHT(1)=C ------ RestoreHALT

Related commands: WEIGHT, WEIGHT2, AXWGHT2

n NOTE· This command changes the tip weight

parameter of a specified axis.· This command is valid only for

“MULTI” axes or auxiliary axes ofthe main robot.

· Robot type and auxiliary axes arepreset prior to shipping.

Page 55: rcx40-pro

38

2

11. Command Statements

AXWGHT2 statement(Axis tip weight setting statement for sub group)

Format:

AXWGHT2 (<expression 1>) = <expression 2>

The value of <expression 1> must be from 1 to 4 (axis number).The range of <expression 2> differs depending on the selected robot model.

Explanation:This statement changes the axis tip weight parameter for the sub group axis specified in<expression 1> to the value specified in <expression 2>.

Example:A=5B=0C=AXWGHT2(1) --------EscapeAXWGHT2(1)=ADRIVE2(1,P0)AXWGHT2(1)=BDRIVE2(1,P1)AXWGHT2(1)=C --------RestoreHALT

Related commands: WEIGHT, WEIGHT2, AXWGHT

n NOTE· This command changes the tip weight

parameter of a specified axis.· This command is valid only for

“MULTI” axes or auxiliary axes ofthe sub robot.

· Robot type and auxiliary axes arepreset prior to shipping.

Page 56: rcx40-pro

39

2

11. Command Statements

CALL statement

Format:

CALL <label> [(<actual argument> [, <actual argument >, ...] )]

Explanation:This statement calls up sub-procedures defined by the SUB and END SUB statements.The <label> is the name of the sub-procedure defined by the SUB statement. The argumentsused here are defined as follows:

1. When a constant or expression is specified as an actual argument, its value is passedon to the sub-procedure.

2. When an element of variable or array variable is specified as an actual argument,its value is passed on to the sub-procedure but can also be passed on as a referenceby adding “REF” to the head of the real argument.

3. When an entire array variable (array name followed by parentheses) is specified asan argument, this is passed along as a reference.

Example 1:X%=4Y%=5CALL *COMPARE( REF X%, REF Y% )HALT’SUB ROUTINE: COMPARESUB *COMPARE( A%, B% )IF A% < B% THENTEMP%=A%A%=B%B%=TEMP%

ENDIFEND SUB

Example 2:I = 1CALL *TEST( I )HALT’SUB ROUTINE: TESTSUB *TESTX = X + 1IF X < 15 THENCALL *TEST( X )

ENDIFEND SUB

Related commands: SUB, END SUB, CALL, DECLEAR, EXIT SUB

n NOTE· When a value is passed on to the sub-

procedure, the value of the realargument will not change even if it ischanged in the sub-procedure.

· When a reference is passed on to thesub-procedure, the value of the realargument will also change if it ischanged in the sub-procedure.

n NOTE· CALL statements containing one

actual argument can be used up to 15times in succession.Note that the number of times willdrop if commands containing a stacksuch as an IF statement or GOSUBstatement are used, or depending onthe number of arguments in the CALLstatement.

· To end a sub-procedure which hasbeen called with the CALL statement,always use the END SUB statement. Ifanother statement such as GOTO isused to jump out of the subroutine, anerror such as “Stack overflow” mayoccur.

Page 57: rcx40-pro

40

2

11. Command Statements

CHGPRI statement

Format:

CHGPRI Tn, p

n : Task number 2 to 8.p : Task priority 17 to 47

Explanation:This statement changes the priority ( p ) of the specified task ( n ).

Example:START *SUBTASK,T2,33*ST:MOVE P,P0,P1IF DI(20) = 1 THENCHGPRI T2,32

ELSECHGPRI T2,33

ENDIFGOTO *STHALT’SUBTASK ROUTINE*SUBTASK:IF LOCZ(WHERE) > 10000 THENDO(20) = 1GOTO *SUBTASK

ENDIFDO(20) = 0

GOTO *SUBTASKEXIT TASK

Related commands: CUT, EXIT TASK, RESTART, SUSPEND, START

n NOTE· The priority of task 1 (main task) is

32.· The smaller the priority number, the

higher the priority level.· When a task with a higher priority is

set “READY”, all tasks with lowerpriority levels also stay “READY”.

Page 58: rcx40-pro

41

2

11. Command Statements

CUT statement

Format:

CUT Tn

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) = 0START *SUBTASK2,T2MOVE P,P0MOVE P,P1WAIT MO(20) = 1CUT T2

GOTO *STHALT’TASK2 ROUTINE*SUBTASK2:P100=JTOXY(WHERE)IF LOCZ(P100) >= 100.0 THENMO(20) = 1

ELSEDELAY 100

ENDIFGOTO *SUBTASK2EXIT TASK

Related commands: EXIT TASK, CUT, RESTART, START, SUSPEND

Page 59: rcx40-pro

42

2

11. Command Statements

DECEL statement(Deceleration setting statement for main group)Format 1:

DECEL <expression>

Format 2:

DECEL (<expression 1>) = <expression 2>

The value of <expression 1> must be from 1 to 6 (axis number).The value of <expression> and <expression 2> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the deceleration coefficient of the main group parameter to thevalue specified in <expression>.Format 1 changes all axes in the main group. Format 2 changes the deceleration coefficientof the axis specified in <expression 1> to the value specified in <expression 2>.

Example:A =50DECEL ADECEL(3)=100'CYCLE WITH INCREASING DECELERATIONFOR A =10 TO 100 STEP 10 DECEL A MOVE P ,P0 MOVE P ,P1NEXT AHALT "END TEST"

n NOTE• The deceleration speed set in the axis

parameters for the robotconfiguration axis and additional axisis changed.

• If an axis that is set to "no axis" in thesystem generation is specified, then anerror message "Specificationmismatch" appears and execution ofthe command will stop.

Page 60: rcx40-pro

43

2

11. Command Statements

DECEL2 statement(Deceleration setting statement for sub group)Format 1:

DECEL2 <expression>

Format 2:

DECEL2 (<expression 1>) = <expression 2>

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: %)

Explanation:This statement changes the deceleration coefficient of the sub group parameter to thevalue specified in <expression>.Format 1 changes all axes in the sub group. Format 2 changes the deceleration coefficientof the axis specified in <expression 1> to the value specified in <expression 2>.

Example:A =50DECEL2 ADECEL2(3)=100'CYCLE WITH INCREASING DECELERATIONFOR A =10 TO 100 STEP 10 DECEL2 A MOVE2 P ,P0 MOVE2 P ,P1NEXT AHALT "END TEST"

n NOTE• The deceleration speed set in the axis

parameters for the robotconfiguration axis and additional axisis changed.

• This statement is valid only when thesub group is set in the systemgeneration.

• If an axis that is set to "no axis" in thesystem generation is specified, then anerror message "Specificationmismatch" appears and execution ofthe command will stop.

Page 61: rcx40-pro

44

2

11. Command Statements

n NOTE· External programs can only use

“COMMON”.· Only the GOSUB, CALL, ON ~

GOSUB statements can use externallabels.

DECLARE statement

Format 1:

DECLARE <label> [, <label>...]

<label>: Label defined by an external program.

Format 2:

DECLARE SUB <label> [(<dummy argument> [, <dummy argument>]...) ]

<label> : Name of sub-procedure defined by an external program.

<dummy argument> : Argument for sub-procedure. This format is significant only forthe number of arguments and data type.

Explanation:This statement declares that a label or sub-procedure is in an external program. In thecase of a sub-procedure, the data type of the argument is also checked.The DECLARE statement can be written in programs other than the COMMON program(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,*AREAX!=2.5Y!=1.2GOSUB *DISTANCEGOSUB *AREAHALTProgram name: COMMON’===============================’ ’COMMON’PROGRAM’===============================*DISTANCE:PRINT X!^2+Y!^2RETURN

*AREA:PRINT X!*Y!RETURN

Page 62: rcx40-pro

45

2

11. Command Statements

Example:Sub-procedures shared with an external programProgram name: DIST2’===========================’ MAIN PROGRAM’===========================DECLARE SUB *DISTANCE(X!,Y!,D!)DECLARE SUB *AREA(X!,Y!,A!)CALL *DISTANCE(2.5,1.2,REF D!)PRINT D!CALL *AREA(2.5,1.2,REF A!)PRINT A!HALTProgram name: COMMON’===========================’ ’COMMON’ PROGRAM’===========================SUB *DISTANCE(X!,Y!,D!)D!=X!^2+Y!^2END SUBSUB *AREA(X!,Y!,A!)A!=X!*Y!END SUB

Related commands: CALL, EXIT SUB, GOSUB, ON~GOSUB, SUB, END SUB

Page 63: rcx40-pro

46

2

11. Command Statements

DEF FN statement

Format:

DEF FN <name> [ % ] [(<dummy argument>, < dummy argument >...) ] = <function definition expression> ! $

Explanation:The DEF FN statement defines functions available to the user. The functions defined herecan be called in the format of “FN name (variable)”.The name can be up to 16 characters including the characters “FN”.The <dummy arguments> are the names of the variables used in the <function definitionexpression>. The names of these variables are effective only when the <function definitionexpression> is evaluated. There may be other variables with the same name in the program.When calling a function that uses a <dummy argument>, specify the constant, variable orexpression that has the same type as the <dummy argument> type.

Example:DEF FNPAI=3.141592DEF FNASIN(X)=ATN(X/SQR(-X^2+1))··

A=FNASIN(B)*10

n NOTE· You may specify numeral variables or

character type variables in the<dummy arguments>.

· If a variable used in the <functiondefinition expression> is not includedin the list of arguments, the valueassigned to that particular variable isused for the calculation.

· Be sure to put a space between“DEF”and “FN”, otherwise“DEFFN” will be viewed as avariable.

· The DEF FN statement cannot beused within procedures.

· Definition by the DEF FN statementmust be declared before insertingstatements using functions.

Page 64: rcx40-pro

47

2

11. Command Statements

DELAY statement

Format:

DELAY <expression>

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 waitingtime is 10 milliseconds.

Example:DELAY 3500

----------- Waits for 3500ms (3.5 seconds).DELAY A*10

Page 65: rcx40-pro

48

2

11. Command Statements

DIM statements(Array variable declaration statement)

Format:

DIM <array definition> [, <array definition>, .....]

Array definition:

<name> [ % ] (<constant> [, < constant> [, < constant>] ] ) ! $

The value of <constant> must be a positive integer from 0 to 32767.

Explanation:This statement declares the name and length (number of elements) of an array variable. Amaximum of 3 dimensions may be used for the array subscripts. Multiple arrays can bedeclared in one line by differentiating them with a comma ( , ).

Examples:DIM A%(10)

----------- Defines an integer array variable A%(0) to A%(10). (Numberof elements: 11)

DIM B(2,3,4)----------- Defines a real array variable B(0, 0, 0) to B(2, 3, 4). (Number

of elements: 60)DIM C%(2,2),D!(10)

----------- Defines an integer array C%(0,0) to C%(2,2) and a real arrayD!(0) to D!(10).

n NOTE· The size of each dimension in an

array is equal to the DIM constant+1. Each element of an array variablebegins with 0.

· An error “Memory full” may occurdepending on the size of eachdimension defined in an array.

Page 66: rcx40-pro

49

2

11. Command Statements

DO statement (Parallel output)

Format:

[ LET ] DOm ([b, · · · , b ] ) = <expression>

DO (mb , · · · , mb )

m : port number 2 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7The value of <expression> will be converted to an integer and the lower bits correspondingto the bits specified on the left side will be valid.

Explanation:This statement outputs the specified value to the DO ports.

Examples:DO2() = &B10111000

----------- DO (27, 25, 24, 23) are turned ON, and DO (26, 22, 21, 20)are turned OFF.

DO2(6,5,1) = &B010----------- DO (25) is turned ON, and DO (26, 21) are turned OFF.

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 isconverted to an integer are output to DO (37, 35, 27, 20),respectively.

Related commands: RESET, SET

n NOTE· Output to the DO0 ( ) and DO1 ( )

ports is not allowed.· Bits must be specified in ascending

order from the right.· External output is unavailable to DO

ports not connected to hardware.

Page 67: rcx40-pro

50

2

11. Command Statements

DRIVE statement

Format:

DRIVE (<expression 1>, <expression 2> ) [, (<expression 1>, <expression 2> ) ...] [, option]

<point expression> <point expression>

Explanation:The DRIVE statement executes an absolute movement for each axis in the main group,including auxiliary axes in the main group.

Movement type : PTP movement on specified axisPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting, STOPON condition setting, torque limit setting, XY

setting

Movement type· PTP (point to point) movement on specified axisPTP 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 enterthe OUT effective position range. When two or more axes are specified, they will reachtheir target positions simultaneously.To execute the next command after waiting for the axes to enter the target position tolerancerange, use the WAIT ARM statement.

Example:DRIVE(1,P0)

----------- Axis 1 moves from the current position to the point specifiedby P0.

Point data setting· Direct coordinate data inputDirectly specify the coordinate data in <expression 2> with an integer or real number.When the coordinate data is an integer, the movement units are viewed as “pulses”. Whenthe coordinate data is a real number containing a decimal point, the units are viewed as“mm” or “deg” and the robot will move to a position converted for each axis relative tothe 0 pulse position.

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 rotatingaxis.)

· Point definitionSpecify the point expression in <expression 2>, while using the data for the axis specifiedin <expression 1>.The robot moves to the position determined by the units used for point expression. Whenthe units are viewed as “mm” or “deg”, the robot moves to the position converted for eachaxis relative to the 0 pulse position.

Page 68: rcx40-pro

51

2

11. Command Statements

Examples:DRIVE(1,P1)

----------- Axis 1 moves from the current position to the positionspecified by P1.

DRIVE(4,P90)----------- Axis 4 moves from the current position to the position

specified by P90 (mm or deg) relative to the 0 pulse position.(When axis 4 is a rotating axis.)

Option types· Speed settingFormat:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly 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.

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only during programexecution.

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.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

Page 69: rcx40-pro

52

2

11. Command Statements

· Torque limit settingFormat:

T = n

n : 1 to 100

Explanation:When this command option is used, the robot moves at a torque specified by “n/standardtorque” as the maximum torque setting.When the time specified to reach a target position has elapsed before reaching the targetposition, the movement command terminates after the specified torque value is held for 1seconds.To check whether the target position was reached, use the MO statement (internal output).

Note the following limitations when using this command option.1. This torque limit option cannot be used for multiple axes.

2. Maximum speed is 10% of normal operating speed.

3. The movement command will not terminate until the time specified to reach thetarget position has elapsed.

4. The maximum torque setting does not change once the torque limit option wasused. Use the TORQUE command to change the maximum torque setting. In thiscase, before executing the TORQUE statement, make sure that the axes are in thetarget position.

The maximum torque setting is initialized at the following timings independent ofthe TORQUE statement.

· When the power is turned on.

· When parameters are changed or initialized.

· When return-to-origin operation starts.

· When the servo turns off.

5. When a stop command is received during execution of the torque limit option, thetorque mode still continues without canceling the torque limit setting, but no manualmovement along the axis in torque mode is possible.

Examples:DRIVE(3,P0)

----------- Axis 3 moves from the current position to the positionspecified by P0.

DRIVE(3,P1),T=50----------- Axis 3 moves from the current position to the position

specified by P1 at 50% of standard torque.WAIT ARM(3)

----------- 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 thetarget position was reached.

ELSEDRIVE(3,P0),T=50

----------- Axis 3 moves from the current position to the point specifiedby P0 at 50% of standard 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

c CAUTION· If the specified value is too small, the

axis may not move. In this case,press the emergency stop button andthen continue operation.

· An error might not occur even if therobot bumps into an obstacle.

· When changing the maximum torquesetting, make sure that the workpiecedoes not interfere with the robot armor hand and also that the robot axesare at their target positions. If not,the robot might move to the targetpositions at maximum speed andmaximum torque when the TORQUEstatement is executed.

c CAUTION. The torque limit setting range differs

depending on the robot model, soalways set the torque limit within thespecified range. Setting a torquelimit higher than the maximum levelmay cause the robot malfunction orbreakdown. For the torque limitsetting range of each robot, refer tothe robot instruction manual.

. If you have any point unclear aboutthe torque limit setting, pleasecontact your YAMAHA sales dealer.

Page 70: rcx40-pro

53

2

11. Command Statements

· XY settingFormat:

XY

Explanation:This option moves the specified multiple axes to the position specified on the XYcoordinates.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 Cartesianrobots.

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 positionon the XY coordinates specified by P100.

Page 71: rcx40-pro

54

2

11. Command Statements

DRIVE2 statement

Format:

DRIVE2 (<expression 1>, <expression 2> ) [, (<expression 1>, <expression 2> ) ...] [, option]

<point expression> <point expression>

Explanation:The DRIVE2 statement executes an absolute movement for each axis in the sub group,including auxiliary axes in the sub group.

Movement type : PTP movement on specified axisPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting, STOPON condition setting, torque limit setting, XY

setting

Movement type· PTP (point to point) movement on specified axisPTP 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 enterthe OUT effective position range. When two or more axes are specified, they will reachtheir target positions simultaneously.To execute the next command after waiting for the axes to enter the target position tolerancerange, use the WAIT ARM2 statement.

Example:DRIVE2(1,P0)

----------- Axis 1 moves from the current position to the point specifiedby P0.

Point data setting· Direct coordinate data inputDirectly specify the coordinate data in <expression 2> with an integer or real number.When the coordinate data is an integer, the movement units are viewed as “pulses”. Whenthe coordinate data is a real number containing a decimal point, the units are viewed as“mm” or “deg” and the robot will move to a position converted for each axis relative tothe 0 pulse 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 point at +90

degrees from the 0 pulse position. (When axis 2 is a rotatingaxis.)

· Point definitionSpecify the point expression in <expression 2>, while using the data for the axis specifiedin <expression 1>.The robot moves to the position determined by the units used for point expression. Whenthe units are viewed as “mm” or “deg”, the robot moves to the position converted for eachaxis relative to the 0 pulse position.

Page 72: rcx40-pro

55

2

11. Command Statements

Examples:DRIVE2(1,P1)

----------- Axis 1 moves from the current position to the positionspecified by P1.

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.)

Option types· Speed settingFormat:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly 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.

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only during programexecution.

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.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

Page 73: rcx40-pro

56

2

11. Command Statements

· Torque limit settingFormat:

T = n

n : 1 to 100

Explanation:When this command option is used, the robot moves at a torque specified by “n/standardtorque” as the maximum torque setting.When the time specified to reach a target position has elapsed before reaching the targetposition, the movement command terminates after the specified torque value is held for 1seconds.To check whether the target position was reached, use the MO statement (internal output).

Note the following limitations when using this command option.1. This torque limit option cannot be used for multiple axes.

2. Maximum speed is 10% of normal operating speed.

3. The movement command will not terminate until the time specified to reach thetarget position has elapsed.

4. The maximum torque setting does not change once the torque limit option wasused. Use the TORQUE2 command to change the maximum torque setting. In thiscase, before executing the TORQUE2 statement, make sure that the axes are in thetarget position.

The maximum torque setting is initialized at the following timings independent ofthe TORQUE2 statement.

· When the power is turned on.

· When parameters are changed or initialized.

· When return-to-origin operation starts.

· When the servo turns off.

5. When a stop command is received during execution of the torque limit option, thetorque mode still continues without canceling the torque limit setting, but no manualmovement along the axis in torque mode is possible.

Examples:DRIVE2(2, P0)

----------- Axis 2 moves from the current position to the point specifiedby P0.

DRIVE2(2, P1),T=50----------- Axis 2 moves from the current position to the point specified

by P1 at 50% of standard torque.WAIT ARM2(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 thetarget position was reached.

ELSEDRIVE2(2,P0),T=50

----------- Axis 2 moves from the current position to the point specifiedby P0 at 50% of standard 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

c CAUTION· If the specified value is too small, the

axis may not move. In this case,press the emergency stop button andthen continue operation.

· An error might not occur even if therobot bumps into an obstacle

· When changing the maximum torquesetting, make sure that the workpiecedoes not interfere with the robot armor hand and also that the robot axesare at their target positions. If not,the robot might move to the targetpositions at maximum speed andmaximum torque when the TORQUEstatement is executed.

c CAUTION. The torque limit setting range differs

depending on the robot model, soalways set the torque limit within thespecified range. Setting a torquelimit higher than the maximum levelmay cause the robot malfunction orbreakdown. For the torque limitsetting range of each robot, refer tothe robot instruction manual.

. If you have any point unclear aboutthe torque limit setting, pleasecontact your YAMAHA sales dealer.

Page 74: rcx40-pro

57

2

11. Command Statements

· XY settingFormat:

XY

Explanation:This option moves the specified multiple axes to the position specified on the XYcoordinates.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 Cartesianrobots.

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 positionon the XY coordinates specified by P100.

Page 75: rcx40-pro

58

2

11. Command Statements

DRIVEI statement

Format:

DRIVEI (<expression 1>, <expression 2> ) [, (<expression 1>, <expression 2> ) ...] [, option]

<point expression> <point expression>

Explanation:The DRIVEI statement executes a relative movement for each axis in the main group,including auxiliary axes in the main group.

Movement type : PTP movement on specified axisPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting, STOPON condition setting

Movement type· PTP (point to point) movement on specified axisPTP 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 enterthe OUT effective position range. When two or more axes are specified, they will reachtheir target positions simultaneously.To execute the next command after waiting for the axes to enter the target position tolerancerange, use the WAIT ARM statement.

Example:DRIVEI(1,P0)

----------- Axis 1 moves a distance specified by P0 from the currentposition.

Point data setting· Direct coordinate data inputDirectly specify the coordinate data in <expression 2> with an integer or real number.When the coordinate data is an integer, the movement units are viewed as “pulses”. Whenthe coordinate data is a real number containing a decimal point, the units are viewed as“mm” or “deg” and the robot will move a certain distance converted for each axis.

Examples:DRIVEI(1,10000)

----------- Axis 1 moves a distance “+10000 pulses” from the currentposition.

DRIVEI(4,90.00)----------- Axis 4 moves through “+90 degrees” from the current

position. (When axis 4 is a rotating axis.)

· Point definitionSpecify the point expression in <expression 2>, while using the data for the axis specifiedin <expression 1>.The robot moves to the position determined by the units used for point expression. Whenthe units are viewed as “mm” or “deg”, the robot moves a certain distance converted foreach axis.

Examples:DRIVEI(1, P1)

----------- Axis 1 moves a distance specified by P1 from the currentposition.

DRIVEI(4, P90)----------- Axis 4 moves a distance (degrees) specified by P90 from the

current position. (When axis 4 is a rotating axis.)

c CAUTIONIf the robot is stopped duringexecution of the DRIVEI statementand then restarted, the robot willmove the specified distance from thestopped position.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

Page 76: rcx40-pro

59

2

11. Command Statements

Option types· Speed settingFormat:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified DRIVEI statement.

Example:DRIVEI(1,10000),S=10

----------- Axis 1 moves a distance “+10000 pulses” from the currentposition at 10% of normal program speed.

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only during programexecution.

Example:DRIVEI(1,10000),STOPON DI(20)=1

----------- Axis 1 moves a distance “+10000 pulses” from the currentposition and stops when the condition “DI (20) = 1” is met.

c CAUTIONWhen execution of the DRIVEIstatement is halted with the STOPONoption, executing the DRIVEIstatement again on the same axismoves the robot the specified distancefrom the stopped position.When executing relative movementcommands in succession, takesufficient precaution so that therobot’s work points won’t bump eachother.

Page 77: rcx40-pro

60

2

11. Command Statements

DRIVEI2 statement

Format:

DRIVEI2 (<expression 1>, <expression 2> ) [, (<expression 1>, <expression 2> ) ...] [, option]

<point expression> <point expression>

Explanation:The DRIVEI2 statement executes a relative movement for each axis in the sub group,including auxiliary axes in the sub group.

Movement type : PTP movement on specified axisPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting, STOPON condition setting

Movement type· PTP (point to point) movement on specified axisPTP 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 enterthe OUT effective position range. When two or more axes are specified, they will reachtheir target positions simultaneously.To execute the next command after waiting for the axes to enter the target position tolerancerange, use the WAIT ARM2 statement.

Example:DRIVEI2(1,P0)

----------- Axis 1 moves a distance specified by P0 from the currentposition.

Point data setting· Direct coordinate data inputDirectly specify the coordinate data in <expression 2> with an integer or real number.When the coordinate data is an integer, the movement units are viewed as “pulses”. Whenthe coordinate data is a real number containing a decimal point, the units are viewed as“mm” or “deg” and the robot will move a certain distance converted for each axis.

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 definitionSpecify the point expression in <expression 2>, while using the data for the axis specifiedin <expression 1>.The robot moves to the position determined by the units used for point expression. Whenthe units are viewed as “mm” or “deg”, the robot moves a certain distance converted foreach axis.

Examples:DRIVEI2(1,P1)

-------- Axis 1 moves a distance specified by P1 from the current position.DRIVEI2(2,P90)

----------- Axis 2 moves a distance specified by P90 (degrees) from thecurrent position. (When axis 2 is a rotating axis.)

c CAUTIONIf the robot is stopped duringexecution of the DRIVEI2 statementand then restarted, the robot willmove the specified distance from thestopped position.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

Page 78: rcx40-pro

61

2

11. Command Statements

Option types· Speed settingFormat:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operatimg speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified DRIVEI2 statement.

Example:DRIVEI2(1,10000),S=10

----------- Axis 1 moves a distance “+10000 pulses” from the currentposition at 10% of normal program speed.

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only during programexecution.

Example:DRIVEI2(1,10000),STOPON DI(20)=1

----------- Axis 1 moves a distance “+10000 pulses” from the currentposition, and stops when the condition “DI (20) = 1” is met.

c CAUTIONWhen execution of the DRIVEI2statement is halted with the STOPONoption, executing the DRIVEI2statement again on the same axismoves the robot the specified distancefrom the stopped position.When executing relative movementcommands in succession, takesufficient precaution so that therobot’s work points won’t bump eachother.

Page 79: rcx40-pro

62

2

11. Command Statements

EXIT FOR statement

Format:

EXIT FOR

Explanation:The EXIT FOR statement terminates the loop of the FOR and NEXT statements and thenjumps to the command following the NEXT statement.This statement is valid only between the FOR and NEXT statements.

Example:*ST:WAIT DI(20)=1FOR A%=101 TO 109MOVE P,P100,Z=0DO(20)=1MOVE P,P[A%],Z=0DO(20)=0IF DI(20)=0 THEN EXIT FOR

NEXT A%GOTO *STHALT

Related commands: FOR, NEXT

n NOTEThe loop of the FOR and NEXTstatements will end when the FORstatement condition is satisfied or theEXIT FOR statement is executed. Ifanother statement such as GOTO isused to jump out of the loop, an errorsuch as “Stack overflow” may occur.

Page 80: rcx40-pro

63

2

11. Command Statements

EXIT SUB statement

Format:

EXIT SUB

Explanation:The EXIT SUB statement terminates the sub-procedure defined by the SUB and ENDSUB statements and then jumps to the next command in the CALL statement that calledup the sub-procedure.This statement is valid only within the sub-procedure defined by the SUB and END SUBstatements.

Example:’MAIN ROUTINECALL *SORT2(REF X%,REF Y%)HALT’SUB ROUTINE: SORTSUB *SORT2(X%, Y%)IF X%>=Y% THEN EXIT SUBTMP%=Y%Y%=X%X%=TMP%

END SUB

Related commands: CALL, SUB, END SUB

n NOTETo end the sub-procedure defined bythe SUB and END SUB statements, usethe END SUB statement or EXIT SUBstatement. If another statement such asGOTO is used to jump out of the sub-procedure, an error such as “Stackoverflow” may occur.

Page 81: rcx40-pro

64

2

11. Command Statements

EXIT TASK statement

Format:

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)=0START *SUBTASK2,T2MOVE P,P0,P1WAIT MO(20)=1

GOTO *STHALT’TASK2 ROUTINE*SUBTASK2:P100=JTOXY(WHERE)IF LOCZ(P100)>=100.0 THENMO(20)=1EXIT TASK

ENDIFDELAY 100

GOTO *SUBTASK2EXIT TASK

Related commands: CUT, RESTART, START, SUSPEND, CHGPRI

n NOTEIf a task that has started as a subtaskjumps to another task processingroutine with a statement such as GOTO, that processing routine is thenexecuted as this subtask processing.

Page 82: rcx40-pro

65

2

11. Command Statements

FOR statement, NEXT statement

Format:

FOR <control variable> = <expression 1> TO <expression 2> [STEP <expression 3>]

<command block>

NEXT [<control variable>]

Explanation:These statements repeatedly execute commands between the FOR and NEXT statementsfor the number of times equal to the difference between <expression 1> and <expression2>, while changing the value of <control variable> in steps specified by <expression 3>.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 DISPLAYFOR A=1 TO 10

MOVE P,P0MOVE P,P1MOVE P,P2PRINT “CYCLE NUMBER=”;A

NEXT AHALT

Related command: EXIT FOR

n NOTE· If the value of <expression 3> in the

FOR statement is 1, then STEP<expression 3> can be omitted.

· The FOR and NEXT statements mustalways be used together as a set.

Page 83: rcx40-pro

66

2

11. Command Statements

GOSUB statement, RETURN statement

Format:

GOSUB <label>

GO SUB

<command block>

<label> :

<command block>

RETURN

Explanation:The GOSUB statement makes a jump to the subroutine of <label> defined by the GOSUBstatement.When a RETURN statement is found in the subroutine, a jump is made to the next line inthe GOSUB statement.

Example:*ST:MOVE P,P0GOSUB *CLOSEHANDMOVE P,P1GOSUB *OPENHAND

GOTO *STHALT’SUB ROUTINE*CLOSEHAND:DO(20) = 1

RETURN*OPENHAND:DO(20) = 0

RETURN

n NOTE· The GOSUB statement can be used up

to 29 times in succession.Note that the number of times willdrop if commands containing a stacksuch as an IF statement or CALLstatement are used.

· When a jump to a subroutine wasmade with the GOSUB statement,always use the RETURN statement toend the subroutine. If anotherstatement such as GOTO is used tojump out of the subroutine, an errorsuch as “Stack overflow” may occur.

Page 84: rcx40-pro

67

2

11. Command Statements

GOTO statement

Format:

GOTO <label>

GO TO

Explanation:This statement makes an unconditional jump to the line specified in <label>.

Example:’MAIN ROUTINE*ST:MOVE P,P0,P1IF DI(20) = 1 THENGOTO *FIN

ENDIFGOTO *ST*FIN:HALT

Page 85: rcx40-pro

68

2

11. Command Statements

HALT statement

Format:

HALT [ <expression> ]

<character string>

Explanation:This statement stops the program and resets it. The program will run from its beginningwhen restarted.

Examples:’MAIN ROUTINE*ST:MOVE P,P0,P1IF DI(20) = 1 THENGOTO *FIN

ENDIFGOTO *ST*FIN:HALT “PROGRAM FIN”

n NOTE· If an <expression> or <character

string> is written in the statement, thecontents of the <expression> or<character string> are displayed onthe MPB screen.

· If a program name “_SELECT” existsamong the programs that werecreated, the selected program willswitch to “_SELECT”.

Page 86: rcx40-pro

69

2

11. Command Statements

HAND definition statement, CHANGE statement(Main robot hand selection)

These statements are used to define or switch the main robot hands.

Format 1: For SCARA robots

Definition statement:

HAND Hn = <1st parameter> <2nd parameter> <3rd parameter> [R]

Selection statement:

CHANGE Hn

n : 0 to 3

a. If the 4th parameter “R” is not specified, hands installed on the second arm tip areselected (see below).

<1st parameter> : Number of offset pulses between the standard second armposition 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

150.

00m

m

stan

dard

sec

ond

arm

leng

th

-5000pulses

HAND H1= 0 150.0 0.0HAND H2= -5000 20.00 0.0P1=150.00 300.00 0.00 0.00 0.00 0.00CHANGE H2MOVE P,P1 --------- The tip of hand 2 moves to P1. (1)CHANGE H1MOVE P,P1 --------- The tip of hand 1 moves to P1. (2)HALT

Y

X

hand 2

(150.00, 300.00)

(1)(2)

Hand1

X

Y

(150.00, 300.00)

Page 87: rcx40-pro

70

2

11. Command Statements

b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, handsthat 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 parametershows the angle of hand “n” from the X-axis of a Cartesiancoordinate system. [degree] (The “+” number indicates thecounterclockwise 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

100.00mm Hand2

Hand1

X

Y

-90.00degrees

HAND H1= 0.00 150.0 0.0 RHAND H2= -90.00 100.00 0.0 RP1=150.00 300.00 0.00 0.00 0.00 0.00CHANGE H1MOVE P,P1 --------- The tip of hand 1 moves to P1. (1)CHANGE H2MOVE P,P1 --------- The tip of hand 2 moves to P1. (2)HALT

(1)

X

Y

Hand1

(150.00, 300.00)

(2)

X

Y

Hand2

(150.00, 300.00)

Page 88: rcx40-pro

71

2

11. Command Statements

Format 2: For Cartesian robots

Definition statement:

Definition statement:

HAND Hn = <1st parameter> <2nd parameter> <3rd parameter> [R]

Selection statement:

CHANGE Hn

n: 0 to 3

a. If the 4th parameter “R” is not specified, hands installed on the second arm tip areselected (see below).

<1st parameter> : X-axis offset for hand “n”. [mm]

<2nd parameter> : Y-axis offset value for hand “n”. [mm]

<3rd parameter> : Z-axis offset value for hand “n”. [mm]

Hand2

X

Y -100.00mm

Hand1

-100.00mm

HAND H1= 0.00 150.0 0.0 RHAND H2= -90.00 100.00 0.0 RP1=150.00 300.00 0.00 0.00 0.00 0.00CHANGE H1MOVE P,P1 --------- The tip of hand 2 moves to P1. (1)CHANGE H2MOVE P,P1 --------- The tip of hand 1 moves to P1. (2)HALT

X

Y

(100.00, -150.00)

(1)

Hand2

X

Y

(2)

(100.00, -150.00)

Hand1

Page 89: rcx40-pro

72

2

11. Command Statements

b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, handsthat 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 parametershows the angle of hand “n” along the X-axis of a Cartesiancoordinate system. [degree] (The “+” number indicates thecounterclockwise 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)

X

Y100.00mm

150.00mm-90degrees

Hand2

Hand1

HAND H1= 0.00 100.00 0.00 RHAND H2= -90.00 150.00 0.00 RP1=150.00 100.00 0.00 90.00 0.00 0.00CHANGE H2MOVE P,P1 --------- The tip of hand 1 moves to P1. (1)CHANGE H1MOVE P,P1 --------- The tip of hand 2 moves to P1. (2)

X

Y

-150.00

100.00

(1)

(100.00, -150.00)

Hand2

X

Y

100.00

(2)

-150.00

(100.00, -150.00)

Hand1

c CAUTIONIf power is turned off duringexecution of a hand definitionstatement, an error “9.7: Hand checksum error” may occur.

Page 90: rcx40-pro

73

2

11. Command Statements

HAND2 definition statement, CHANGE2 statement(Sub robot hand selection)

These statements are used to define or switch the sub robot hands.

Format 1: For SCARA robots

Definition statement:

HAND 2 Hn = <1st parameter> <2nd parameter> <3rd parameter> [R]

Selection statement:

CHANGE2 Hn

n : 4 to 7

a. If the 4th parameter “R” is not specified, hands installed on the second arm tip areselected (see below).

<1st parameter> : Number of offset pulses between the standard second armposition 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

150.

00m

m

stan

dard

sec

ond

arm

leng

th

-5000pulses

HAND2 H5= 0 150.0 0.0HAND2 H6= -5000 20.00 0.0P1=150.00 300.00 0.00 0.00 0.00 0.00CHANGE2 H6MOVE2 P,P1 --------- The tip of hand 6 moves to P1. (1)CHANGE2 H5MOVE2 P,P1 --------- The tip of hand 5 moves to P1. (2)HALT

Y

X

Hand6

(150.00, 300.00)

(1)(2)

Hand5

X

Y

(150.00, 300.00)

n NOTEThis statement is valid only when thesub group is set in the systemgeneration.

Page 91: rcx40-pro

74

2

11. Command Statements

b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, handsthat 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 parametershows the angle of hand “n” along the X-axis of a Cartesiancoordinate system. [degree] (The “+” number indicates thecounterclockwise 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 RHAND2 H6= -90.00 100.00 0.0 R

standard second arm length 150.00mm

100.00mm Hand6

Hand5

X

Y

-90.00degrees

HAND2 H5= 0.00 150.0 0.0 RHAND2 H6= -90.00 100.00 0.0 RP1=150.00 300.00 0.00 0.00 0.00 0.00CHANGE2 H5MOVE2 P,P1 --------- The tip of hand 5 moves to P1. (1)CHANGE2 H6MOVE2 P,P1 --------- The tip of hand 6 moves to P1. (2)HALT

(1)

X

Y

Hand5

(150.00, 300.00)

(2)

X

Y

Hand6

(150.00, 300.00)

Page 92: rcx40-pro

75

2

11. Command Statements

Format 2: For Cartesian robots

Definition statement:

Definition statement:

HAND 2 Hn = <1st parameter> <2nd parameter> <3rd parameter> [R]

Selection statement:

CHANGE2 Hn

n : 4 to 7

a. If the 4th parameter “R” is not specified, hands installed on the second arm tip areselected (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]

Hand6

X

Y -100.00mm

Hand5

-100.00mm

HAND2 H5= 0.00 0.00 0.00HAND2 H6= -100.0 -100.0 -100.0P1=150.00 100.00 0.00 0.00 0.00 0.00CHANGE2 H6MOVE2 P,P1 --------- The tip of hand 6 moves to P1. (1)CHANGE2 H5MOVE2 P,P1 --------- The tip of hand 1 moves to P1. (2)HALT

X

Y

(100.00, -150.00)

(1)

Hand2

X

Y

(2)

(100.00, -150.00)

Hand1

Page 93: rcx40-pro

76

2

11. Command Statements

b. When the 4th parameter “R” is specified and the R-axis uses a servo motor, handsthat 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 parametershows the angle of hand “n” along the X-axis of a Cartesiancoordinate system. [degree] (The “+” number indicates thecounterclockwise 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)

X

Y100.00mm

150.00mm-90degrees

Hand6

Hand5

HAND2 H5= 0.00 100.00 0.00 RHAND2 H6= -90.00 150.00 0.00 RP1=150.00 100.00 0.00 90.00 0.00 0.00CHANGE2 H6MOVE2 P,P1 --------- The tip of hand 6 moves to P1. (1)CHANGE2 H5MOVE2 P,P1 --------- The tip of hand 5 moves to P1. (2)HALT

X

Y

-150.00

100.00

(1)

(100.00, -150.00)

Hand2

X

Y

100.00

(2)

-150.00

(100.00, -150.00)

Hand1

c CAUTIONIf power is turned off duringexecution of a hand definitionstatement, an error “9.7: Hand checksum error” may occur.

Page 94: rcx40-pro

77

2

11. Command Statements

HOLD statement

Format:

HOLD [ <expression> ]

<character string>

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:MOVE P,P0,P1IF DI(20)=1 THENHOLD “PROGRAM STOP”

ENDIFGOTO *STHALT

n NOTEIf an <expression> or <characterstring> is written in the statement, thecontents of the <expression> or<character string> are displayed onthe MPB screen.

Page 95: rcx40-pro

78

2

11. Command Statements

IF statement

a. Simple IF statementFormat 1:

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 ajump to the line specified by <label 1> or executes the <statement 1> and jumps to thenext line. If the condition is not met, the command jumps to the line specified by <label2> or executes the <statement 2> and then jumps to the next line.

Example:’MAIN ROUTINE*ST:MOVE P,P0,P1IF DI(20)=1 THEN *L1DO(20)=1DELAY 100

*L1:IF DI(21)=1 THEN *ST ELSE *FIN

*FIN:HALT

Page 96: rcx40-pro

79

2

11. Command Statements

b. Block IF statementFormat 2:

IF <expression> THEN

<command block>

[ ELSEIF ] <conditional expression 2> THEN

<command block>

[ ELSE ]

<command block n>

ENDIF

Explanation:If the condition specified by <conditional expression> is met, this statement executes theinstructions 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 <conditionalexpression 2> is met, the instructions specified in <command block 2> are executed.Unless all conditions specified by <conditional expression n> are satisfied, the instructionsspecified in <command block n> are executed and a jump is made to the line under ENDIF.

Example:’MAIN ROUTINE*ST:MOVE P,P0,P1IF DI(21,20)=1 THENDO(20)= 1DELAY 100WAIT DI(20)=0

ELSEIF DI(21,20)=2 THENDELAY 100

ELSEGOTO *FIN

ENDIFGOTO *ST*FIN:HALT

n NOTE• The IF statement can be used up to 48

times in succession.Note that the maximum number oftimes will drop if commandscontaining a stack such as an GOSUBstatement or CALL statement areused.

Page 97: rcx40-pro

80

2

11. Command Statements

INPUT statement

Format:

INPUT [<prompt statement> ; ] <variable> [, <variable> , … ]

, <point variable> <point variable>

<shift variable> <shift variable>

Explanation: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 enteredfollowing the prompt statement, a question mark ( ? ) and a space will appear at theend of the message. When a comma ( , ) is entered, nothing will be displayedfollowing the message.

3. When <prompt statement> is omitted, only a question mark ( ? ) and a space willbe displayed.

4. The input data type must match the type of the corresponding variables. Whendata 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 determinedthat “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 significantspace before and after a comma ( , ), double quotation mark ( “ ) or characterstring, the character variable must be enclosed in double quotation marks ( “ ).Note in this case that you must enter two double quotation marks in succession sothat they will be identified as a double quotation mark input.

7. Pressing the ESC key skips input of this statement.

Example:INPUT AINPUT ”INPUT POINT NUMBER”;A1INPUT ”INPUT STRING”,B$(0),B$(1)INPUT P100HALT

n NOTE· If assignment data type differs from

type of variable, a message “? Inputagain” appears and awaits datainput.

· When assigning alphabetic charactersand numbers to a character variable,enclosing the character string indouble quotation marks ( “ ) is notnecessary.

Page 98: rcx40-pro

81

2

11. Command Statements

LET statement (Assignment statement)

Format:

[LET] <arithmetic statement >

<character string assignation statement >

<point data assignation statement >

<shift data assignation statement >

Explanation:The LET statement executes the specified assignment statement.

a. Arithmetic statementFormat:

[LET] <arithmetic variable> = <expression>

<point element variable>

<shift element variable>

<parallel output variable>

<internal output variable>

<arm lock output variable>

<timer output variable>

<serial output variable>

Explanation:The value of <expression> is assigned to the variable on the left side.

Example:A!=B!+1B%(1,2,3)=INT(10.88)LOCZ(P0)=A!LOCX(S1)=100.00DO2()=&B00101101MO(21,20)=2LO(00)=1TO(01)=0SO12()=255

n NOTEIf the controller power is turned offduring execution of a point assignmentstatement or shift assignmentstatement, a memory-related errorsuch as “Point check sum error” and“Shift check sum error” may occur.

Page 99: rcx40-pro

82

2

11. Command Statements

b. Character string assignment statementFormat:

[LET ] <character string variable> = <character string expression>

Explanation:The value of <character string expression> is assigned to the character string variable.

Example:A$ = “YAMAHA”B$ = “ROBOT”D$ = A$ + “-“ + B$

c. Point assignment statementFormat:

[ LET ] <point variable> = <point expression>

Explanation:The value of <point expression> is assigned to the point variable.

Example:P1 =P10

----------- Point 10 is assigned to P1.P20=P20+P5

----------- Each element of point 20 and point 5 is summed and assignedto P20.

P30=P30-P3----------- Each element of point 3 is subtracted from point 30 and

assigned to P30.P80=P70*4

----------- Each element of point 70 is multiplied by 4 and assigned toP80.

P60=P5/3----------- Each element of point 5 is divided by 3 and assigned to P60.

Format:

[ LET ] <shift variable> = <shift expression>

Explanation:The value of <shift expression> is assigned to the shift variable.

Example:S1=S1

----------- Shift 0 is assigned to shift 1.S2=S1+S0

----------- Each element of shift 1 and shift 0 are summed and assignedto shift 2.

n NOTE· Only 4 arithmetic operators “+”, “-”,

“*”, “/” can be used in <pointexpression>. Multiplication anddivision are performed only withconstants or variables.Valid examples: P15*5, P [E] / AInvalid examples: P10*P11, 3 / P10

· Multiplication and division resultswill differ depending on the type ofpoint data.When the point data is in “pulses”,each element of the arithmetic resultis converted to an integer andassigned to the point variable.When the point data is in “mm”, eachelement of the arithmetic result isconverted to a real number up to thesecond decimal places and thenassigned to the point variable.

n NOTEOnly “+” sign can be used asarithmetic operators in <characterstring expression>. Other arithmeticoperators and parentheses cannot beused.

n NOTE· Only “+” and “-“ signs can be used

as arithmetic operators in <shiftexpression>. Other arithmeticoperators and parentheses cannot beused.

· The only element that can be used in<shift expression> is a shift element.Invalid example: S 1 + 3

Page 100: rcx40-pro

83

2

11. Command Statements

LO statement (Arm lock output)

Format:

[ LET ] LO0 ( [b, · · ·, b ] ) = <expression>

LO ( 0b, · · ·, 0b )

b : bit definition 0 to 7The value of <expression> will be converted to an integer and the lower bits correspondingto the bits specified on the left side will be valid.

Explanation:This statement outputs the specified value to the LO port to prohibit axis movement orallow axis movement.LO(00) to LO(07) respectively correspond to axes 1 to 8. Axis movement is prohibited inON status.

Example:LO0()=&B00001010

----------- Prohibits movement of axes 2 and 4.LO0(2,1)=&B10

----------- Prohibits movement of axis 3.

Related commands: RESET, SET

n NOTE· This statement is valid for the axis

that starts to move.· Bits must be specified in ascending

order from the right.

Page 101: rcx40-pro

84

2

11. Command Statements

MO statement (Internal output)

Format:

[LET ] MOm ( [b, · · ·, b ] ) = <expression>

MO ( mb, · · ·, mb )

m : port number 2 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7The value of <expression> will be converted to an integer and the lower bits correspondingto the bits specified on the left side will be valid.

Explanation:This statement outputs the specified value to the MO ports.

Examples:MO2()=&B10111000

----------- MO (27, 25, 24, 23) are turned ON, and MO (26, 22, 21, 20)are turned OFF.

MO2(6,5,1)=&B010----------- MO (25) is turned ON, and MO (26, 21) are turned OFF.

MO3() = 15----------- MO (33, 32, 31, 30) are turned ON, and MO (37, 36, 35, 34)

are turned OFF.MO(37,35,27,20)=A

----------- The contents of the 4 lower bits obtained when variable A isconverted to an integer are output to MO (37, 35, 27, 20),respectively.

Related commands: RESET, SET

n NOTE· Output to the MO0 ( ) and MO1 ( )

ports is not allowed.· The output status of the origin sensors

for axes 1 to 8 (in order from bit 0) isavailable to the MO0 ( ) port. Eachbit sets to “1” when the origin sensorturns ON, and to “0” when OFF.

· The HOLD status of axes 1 to 8 (inorder from bit 0) is output to the MO1( ) port. Each bit sets to “1” when theaxis is in a HOLD status, and to “0”when not. Being in HOLD statusmeans that the axis has alreadyreached the target position.

· Bits must be specified in ascendingorder from the right.

Page 102: rcx40-pro

85

2

11. Command Statements

MOVE statement(Absolute position movement command)

Format:

MOVE PTP , <point definition> [, option [, option] … ] P L C

Explanation:This statement executes an absolute movement of all main robot axes. This statement willnot move the sub robot axes and auxiliary axes.

Movement type : PTP, linear interpolation, circular interpolationPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting, arch motion setting, STOPON condition

setting, CONT setting, acceleration setting, decelerationsetting

Movement type· PTP (point to point) movementPTP movement begins after positioning on all movable axes is complete (within thetolerance range), and the command terminates when all movable axes enter the OUTeffective 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 tolerancerange, use the WAIT ARM statement.

Example:MOVE P,P0MOVE PTP,P0

----------- Main robot axes move from the current position to the positionspecified by P0.

· Linear interpolation movementLinear interpolation movement begins after positioning on all movable axes is complete(within the tolerance range), and the command terminates immediately afterwards. Othercommands placed immediately after the MOVE statement are therefore executedimmediately after linear interpolation movement begins.If the preceding command is also a MOVE command for linear interpolation or circularinterpolation, the traveling paths made with the two MOVE commands are connected atthe deceleration/acceleration point to allow smooth, continuous axis movement. Allmovable axes will reach the specified position simultaneously.However, if a STOPON condition setting option was inserted, axis movement begins andthen waits for all movable axes to complete the operation (reach within target positiontolerance range).To execute the next command after waiting for the axes to enter the target position tolerancerange, use the WAIT ARM statement.

Page 103: rcx40-pro

86

2

11. Command Statements

Example: MOVE L,P0,P1

----------- Main robot axes move from the current position to the positionspecified by P0 and then to the position specified by 1.

P0

Current position

P1

· Circular interpolation movementCircular interpolation movement begins after positioning on all movable axes is complete(within the tolerance range), and the command terminates immediately afterwards. Othercommands placed immediately after the MOVE statement are therefore executedimmediately after circular interpolation movement begins.If the preceding command is also a MOVE command for linear interpolation or circularinterpolation, the traveling paths made with the two MOVE commands are connected atthe deceleration/acceleration point to allow smooth, continuous axis movement. Allmovable axes will reach the target positions simultaneously.One circular segment is formed by 3 points consisting of the current position, intermediateposition and target position.To execute the next command after waiting the axes to enter the target position tolerancerange, use the WAIT ARM statement.

Example:MOVE L,P20MOVE C,P21,P22,P23,P20MOVE L,P24

----------- Moves linearly from the current position to P20, then movesalong a circle formed by points P20, P21, P22 and P23, andmoves again linearly to P24.

P23

Current position P24

P22

P21

P20

Point data setting· Direct coordinate data inputFormat:

X Y Z R A B

X, Y, Z, R, A and B are coordinate values on respective axes and must be separated fromeach other by a space.

Explanation:Directly specify the coordinate data on each axis with an integer or a real number. Whenthe coordinate data is an integer, the movement units are viewed as “pulses”. When thecoordinate data is a real number containing a decimal point, the units are viewed as “mm”or “deg”.PTP movement and linear interpolation movement can be used with this coordinate datasetting.

Example:MOVE P,10000 10000 1000 1000 0 0

----------- Moves by PTP from the current position to the specifiedpositions.

n NOTE· Linear interpolation can be

performed by task 1 only.· Smooth traveling paths may

sometimes not be possible dependingon the axis movement speed,acceleration and distance between thetarget points.

· Movement speed between the targetpoints may not be constant dependingon the axis movement speed,acceleration and distance between thetarget points.

· On robots having an R-axis, the R-axis speed may become too fast andcause an error depending on the R-axis movement distance.

n NOTE· The movable range for circular

interpolation is 5000.00mm to1.00mm in radius.

· Circular interpolation can beperformed by task 1 only.

· Circular interpolation must bespecified by an even number of points.

· Circular segment may becomedistorted depending on the axismovement speed, acceleration and thecircular segment radius.

· On robots having an R-axis, the R-axis speed may become too fast andcause an error depending on the R-axis movement distance.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

Page 104: rcx40-pro

87

2

11. Command Statements

· Point definitionFormat:

<point expression> [, point expression> …]

Explanation:Specify the point data in <point expression>. Two or more pieces of data can be designatedby separating them with a comma ( , ).

Example: MOVE P,P1

----------- Moves from the current position to the position specified byP1.

MOVE P,P20,P0,P100----------- Moves in order from the current position to the positions

specified by P20, P0 and P100.

Option types· Speed settingFormat 1:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified MOVE statement.

Example:MOVE P,P10,S=10

----------- Moves from the current position to the position specified byP10 at 10% of normal program speed.

Format 2:

VEL = <expression>

The value of <expression> must be from 1 to 750 for SCARA robots, and from 1 to 1000for 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 orCartesian robots and is valid only for the specified MOVE statement.

Example:MOVE L,P10,VEL=100

----------- Moves at a maximum XYZ composite speed of 100mm/secfrom the current position to the position specified by P10.

n NOTECircular interpolation must always bespecified with an even number ofpoints.

n NOTEThis option merely specifies themaximum speed and does notguarantee the specified speed.

n NOTEThis option merely specifies themaximum composite speed and doesnot guarantee the specified speed.

Page 105: rcx40-pro

88

2

11. Command Statements

· Arch motion settingFormat:

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” axismove toward the target position. Finally, all axes other than the “x” axis enter the archposition range and also the specified “x” axis enters within the tolerance range of theposition specified in <expression>, the specified “x” axis moves toward the target position,and when it enters the OUT effective 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 “0pulse” position and then other axes move to P1. Finally theZ-axis moves to P1.

P1Current position

Z=0

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option can be used for PTPmovement or linear interpolation movement and is valid only during program execution.

Example:MOVE P,P100,STOPON DI(20)=1

----------- Moves from the current position to the position specified byP100, and slows down and stops when the condition “DI (20)= 1” is met.

Page 106: rcx40-pro

89

2

11. Command Statements

· CONT settingFormat:

CONT

Explanation:When PTP movement is executed with the CONT setting option, PTP movement (to beexecuted immediately after all movable axes enter the OUT effective position range andthe command terminates) will begin without waiting for the movable axes to complete theoperation (reach within target position tolerance range).This option can be used for PTP movement and is valid only for the specified MOVEstatement.

Example:MOVE P,P10,P11,CONT

----------- Moves from the current position to the position specified byP10, and then moves to P11 without waiting for the movableaxes to enter the tolerance range.

P10

Current position

P11

OUT effective position range

· Acceleration settingFormat:

ACC = <expression>

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the robot acceleration rate in <expression>.This option can be used for linear interpolation movement and is valid only for the specifiedMOVE statement.

Example:MOVE L,P100,ACC=10

----------- Moves from the current position to the position specified byP100 at 10% acceleration.

n NOTEThe positioning time for starting PTPmovement can be reduced by CONTsetting.

Page 107: rcx40-pro

90

2

11. Command Statements

· Deceleration settingFormat:

DEC = <expression>

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the robot deceleration rate in <expression>.This option can be used for linear interpolation movement and is valid only for the specifiedMOVE statement.

Example:MOVE L,P100,DEC=20

----------- Moves from the current position to the position specified byP100 at 20% deceleration.

· Coordinate plane settingFormat:

XY

YZ

ZX

XY : XY coordinate planeYZ : YZ coordinate planeZX : ZX coordinate plane

Explanation:When a circular interpolation is executed by setting the coordinates, this option executescircular interpolation so that the projection on the specified coordinate plane becomes acircle.This option can be used for circular interpolation movement and is valid only for thespecified MOVE statement.

Example:P10 = 100.00 100.00 20.00 0.00 0.00 0.00P11 = 150.00 100.00 0.00 0.00 0.00 0.00P12 = 150.00 150.00 20.00 0.00 0.00 0.00P13 = 100.00 150.00 40.00 0.00 0.00 0.00MOVE P,P10MOVE C,P11,P12MOVE C,P13,P10

----------- Continuously moves along a 3-dimensional circle formed byP10, P11 and P12, and also P12, P13 and P10.

MOVE C,P11,P12,XYMOVE C,P13,P10,XY

----------- Continuously moves along a circle on the XY plane, formedby P10, P11 and P12, and also P12, P13 and P10. At thispoint, the Z-axis moves to a position specified by P12 andP10 as the target position of the circular movement.

Related commands: MOVEI, DRIVE, DRIVEI, WAIT ARM

n NOTE· If no coordinate plane is specified, the

robot moves along a 3-dimensionalcircle.

· When a 2-axis robot is used, it movesalong a circle on the XY plane.

Page 108: rcx40-pro

91

2

11. Command Statements

MOVE2 statement(Absolute position movement command)

Format:

MOVE2 PTP , <point definition> [, option [, option] … ]

P

Explanation:This statement executes an absolute movement of all sub robot axes. This statement willnot move the main robot axes and auxiliary axes.

Movement type : PTPPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting, arch motion setting, STOPON condition

setting, CONT setting

Movement type· PTP (point to point) movementPTP movement begins after positioning on all movable axes is complete (within thetolerance range), and the command terminates when all movable axes enter the OUTeffective 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 tolerancerange, use the WAIT ARM2 statement.

Example:MOVE2 P,P0MOVE2 PTP,P0

----------- Sub robot axes move from the current position to the positionspecified by P0.

Point data setting· Direct coordinate data inputFormat:

X Y Z R A B

X, Y, Z, R, A and B are the coordinate values on respective axes, and must be separatedfrom each other by a space.

Explanation:Directly specify the coordinate data on each axis with an integer or a real number. Whenthe coordinate data is an integer, the movement units are viewed as “pulses”. When thecoordinate data is a real number containing a decimal point, the units are viewed as “mm”or “deg”.PTP movement and linear interpolation movement can be used with this coordinate datasetting.

Example: MOVE2 P,10000 10000 1000 1000 0 0

----------- Moves by PTP from the current position to the specifiedpositions.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

Page 109: rcx40-pro

92

2

11. Command Statements

· Point definitionFormat:

<point expression> [, point expression> …]

Explanation:Specify the point data in <point expression>. Two or more pieces of data can be designatedby separating them with a comma ( , ).

Example:MOVE2 P,P1

----------- Moves from the current position to the position specified byP1.

MOVE2 P,P20,P0,P100----------- Moves in order from the current position to the positions

specified by P20, P0 and P100.

Option types· Speed settingFormat 1:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified MOVE2 statement.

Example:MOVE2 P,P10,S=10

----------- Moves from the current position to the position specified byP10 at 10% of normal program speed.

· Arch motion settingFormat:

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”.

n NOTEThis option merely specifies themaximum speed and does notguarantee the specified speed.

Page 110: rcx40-pro

93

2

11. Command Statements

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” axismove toward the target position. Finally, all axes other than the “x” axis enter the archposition range and also the specified “x” axis enters within the tolerance range of theposition specified in <expression>, the specified “x” axis moves toward the target position,and when it enters the OUT effective 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 “0pulse” position and then other axes move to P1. Finally theZ-axis moves to P1.

P1Current position

Z=0

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only for PTPmovement or linear interpolation movement during program execution.

Example: MOVE2 P,P100,STOPON DI(20)=1

----------- Moves from the current position to the position specified byP100, and slows down and stops when the condition “DI (20)= 1” is met.

· CONT settingFormat:

CONT

Explanation:When PTP movement is executed with the CONT setting option, PTP movement (to beexecuted immediately after all movable axes enter the OUT effective position range andthe command terminates) will begin without waiting for the movable axes to complete theoperation (reach within target position tolerance range). This option can be used for PTPmovement and is valid only the specified MOVE2 statement.

Page 111: rcx40-pro

94

2

11. Command Statements

Example:MOVE2 P,P10,P11,CONT

----------- Moves from the current position to the position specified byP10, and then moves to P11 without waiting for the movableaxes to enter the tolerance range.

P10

Current position

P11

OUT effective position range

Related commands: MOVEI2, DRIVE2, DRIVEI2, WAIT ARM2

n NOTEThe positioning time for starting PTPmovement can be reduced by CONTsetting.

Page 112: rcx40-pro

95

2

11. Command Statements

MOVEI statement(Relative position movement command)

Format:

MOVEI PTP , <point definition> [, option [, option] … ]

P

Explanation:This statement executes a relative movement of all main robot axes. This statement willnot move the sub robot axes and auxiliary axes.

Movement type : PTPPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting

Movement type· PTP (point to point) movementPTP movement begins after positioning on all movable axes is complete (within thetolerance range), and the command terminates when all movable axes enter the OUTeffective 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 tolerancerange, use the WAIT ARM statement.

Example:MOVEI P,P0MOVEI PTP,P0

----------- Main robot axes move a distance specified by P0 from thecurrent position.

Point data setting· Direct coordinate data inputFormat:

X Y Z R A B

X, Y, Z, R, A and B are the coordinate values on respective axes and must be separatedfrom each other by a space.

Explanation:Directly specify the coordinate data on each axis with an integer or a real number. Whenthe coordinate data is an integer, the movement units are viewed as “pulses”. When thecoordinate data is a real number containing a decimal point, the units are viewed as “mm”or “deg”.

Example:MOVEI P, 10000 10000 1000 1000 0 0

----------- Moves by PTP the specified distances from the currentposition.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

c CAUTION• If the robot is stopped during

execution of the MOVEI statementand then restarted, the robot willmove the specified distance from thestopped position.

Page 113: rcx40-pro

96

2

11. Command Statements

· Point definitionFormat:

<point expression> [, point expression> …]

Explanation:Specify the point data in <point expression>. Two or more pieces of data can be designatedby separating them with a comma ( , ).

Example: MOVEI P,P1

----------- Moves a distance specified by P1 from the current position.

Option type· Speed settingFormat 1:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified MOVEI statement.

Example:MOVEI P,P10,S=10

----------- Moves a distance specified by P1 from the current position at10% of normal program speed.

Related commands: MOVE, DRIVE, DRIVEI, WAIT ARM

n NOTEThis option merely specifies themaximum speed and does notguarantee the specified speed.

Page 114: rcx40-pro

97

2

11. Command Statements

MOVEI2 statement(Relative position movement command)

Format:

MOVEI2 PTP , <point definition> [, option [, option] … ]

P

Explanation:This statement executes a relative movement of all sun robot axes. This statement will notmove the main robot axes and auxiliary axes.

Movement type : PTPPoint data setting : Direct coordinate data input, point definitionOptions : Speed setting

Movement type· PTP (point to point) movementPTP movement begins after positioning on all movable axes is complete (within thetolerance range), and the command terminates when all movable axes enter the OUTeffective 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 tolerancerange, use the WAIT ARM2 statement.

Example:MOVEI2 P,P0MOVEI2 PTP,P0

----------- Sub robot axes move a distance specified by P0 from thecurrent position.

Point data setting· Direct coordinate data inputFormat:

X Y Z R A B

X, Y, Z, R, A and B are the coordinate values on respective axes and must be separatedfrom each other by a space.

Explanation:Directly specify the coordinate data on each axis with an integer or a real number. Whenthe coordinate data is an integer, the movement units are viewed as “pulses”. When thecoordinate data is a real number containing a decimal point, the units are viewed as “mm”or “deg”.

Example:MOVEI2 P,10000 10000 1000 1000 0 0

----------- Moves by PTP the specified distances from the currentposition.

n NOTEIf point data is specified with bothintegers and real numbers in the samestatement, all axes move in “mm” or“deg” units.

c CAUTION• If the robot is stopped during

execution of the MOVEI2 statementand then restarted, the robot willmove the specified distance from thestopped position.

Page 115: rcx40-pro

98

2

11. Command Statements

· Point definitionFormat:

<point expression> [, point expression> …]

Explanation:Specify the point data in <point expression>. Two or more pieces of data can be designatedby separating them with a comma ( , ).

Example:MOVEI2 P,P1

----------- Moves a distance specified by P1 from the current position.

Option type· Speed settingFormat 1:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified MOVEI2 statement.

Example:MOVEI2 P,P10,S=10

----------- Moves a distance specified by P1 from the current position at10% of normal program speed.

Related commands: MOVE2, DRIVE2, DRIVEI2, WAIT ARM2

n NOTEThis option merely specifies themaximum speed and does notguarantee the specified speed.

Page 116: rcx40-pro

99

2

11. Command Statements

ON ERROR GOTO statement

Format:

ON ERROR GOTO <label>

0

Error output information ERR : Error numberERL : Line number of error

Explanation:Even if an error occurs during execution of the robot language, this statement allows theprogram to jump to the error processing routine specified by <label>, so that the programstill continues without being suspended. (Some serious errors are excluded.) If “0” isspecified for <label> in this statement, the program stops when an error is issued and theerror message is displayed.The error processing routine processes the error using the RESUME statement and handlesthe error output information.

Example:ON ERROR GOTO *ER1FOR A = 0 TO 9P[A+10] = P[A]

NEXT A*L99: HALT’ERROR ROUTINE*ER1:IF ERR = &H0604 THEN *NEXT1

----------- Checks whether an error “no point” has occurred.IF ERR = &H0606 THEN *NEXT2

----------- Checks whether an error “range-over” has 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 erroroccurred, and continues executing the program.

*NEXT2:RESUME *L99

----------- Jumps to the label “*L99” and continues executing theprogram.

Related commands: RESUME

n NOTE· If a serious error such as “overload”

occurs, the program execution stops.· The last “ON ERROR GOTO

<label>” statement that was used isvalid.

· If an error occurs while an errorprocessing routine is being executed,the program will stop.

· “ON ERROR GOTO <label>”statements cannot be executed withinerror processing routines.

Page 117: rcx40-pro

100

2

11. Command Statements

ON GOTO statement

Format:

ON <expression> GOTO <label 1> [, <label 2>. . .]

GO TO

The value of <expression> must be “0” or a positive integer.

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 jumpto <label n>.If the value of <expression> is “0” or greater than the number of labels specified, the nextcommand is executed without making a jump.

Example:’MAIN ROUTINE*ST:ON DI3() GOTO *L1,*L2,*L3GOTO *STHALT’SUB ROUTINE*L1:MOVE P,P10,Z=0GOTO *ST

*L2:DO(30) = 1GOTO *ST

*L3:DO(30) = 0GOTO *ST

Related commands: GOTO, DECLARE

Page 118: rcx40-pro

101

2

11. Command Statements

ON GOSUB statement

Format:

ON <expression> GOSUB <label 1> [, <label 2>. . .]

GO SUB

The value of <expression> must be “0” or a positive integer.

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 jumpto <label n>.After the subroutine at the jumped destination has been executed, the next commandfollowing the ON GOSUB statement is executed.If the value of <expression> is “0” or greater than the number of labels, the next commandis executed without making a jump.

Example:’MAIN ROUTINE*ST:ON DI3() GOSUB *SUB1,*SUB2,*SUB3GOTO *STHALT’SUB ROUTINE*SUB1:MOVE P,P10,Z=0RETURN

*SUB2:DO(30) = 1RETURN

*SUB3:DO(30) = 0RETURN

Related commands: GOSUB, RETURN, DECLARE

Page 119: rcx40-pro

102

2

11. Command Statements

ONLINE statement, OFFLINE statementFormat:

ONLINE

OFFLINE

Explanation:These statements change the communication mode and initialize the communication port.

Example:OFFLINESEND CMU TO A$SEND CMU TO P10ONLINEHALT

n NOTECommunication port initializationclears the communication error andreceiving buffer.

Page 120: rcx40-pro

103

2

11. Command Statements

ORGORD statement(Return-to-origin sequence setting statement for main group)

Format:

ORGORD <expression>

The value of <expression> must be an integer from 0 to 654321.

Explanation:This statement sets the axis sequence parameter to perform return-to-origin movementfor the main group.

Example:A=3ORGORD AABSRST

----------- After return-to-origin operation on axis 3 of the main groupis complete, absolute reset is executed by performingsimultaneous return-to-origin on the remaining axes.

MOVE P,P0HALT

Related commands: ABSRST, ORGORD2

Page 121: rcx40-pro

104

2

11. Command Statements

ORGORD2 statement(Return-to-origin sequence setting statement for sub group)

Format:

ORGORD2 <expression>

The value of <expression> must be an integer from 0 to 4321.

Explanation:This statement sets the axis sequence parameter to perform return-to-origin movementfor the sub group.

Example:A=1234ORGORD2 AABSRSTMOVE2 P,P0HALT

Related commands: ABSRST, ORGORD

Page 122: rcx40-pro

105

2

11. Command Statements

OUTPOS statement(OUT effective position setting statement for main group)

Format 1:

OUTPOS <expression>

Format 2:

OUTPOS (<expression 1>) = <expression 2>

The value of <expression 1> must be from 1 to 6 (axis number).The value of <expression> and <expression 2> must be from 1 to 6144000. (Unit: pulses)

Explanation:This statement changes the OUT effective position parameter for the main group to thevalue specified in <expression>. Format 1 changes all main group axes. Format 2 changesthe OUT effective position parameter for the axis specified in <expression 1> to the valuespecified in <expression 2>.

Example:’CYCLE WITH DECREASING OUTPOSDIM SAV(3)GOSUB *SAVE_OUTPOSFOR A=1000 TO 10000 STEP 1000GOSUB *CHANGE_OUTPOSMOVE P,P0DO3(0)=1MOVE P,P1DO3(0)=0NEXT AGOSUB *RESTORE_OUTPOSHALT*CHANGE_OUTPOS:FOR B=1 TO 4OUTPOS(B)=A

NEXT BRETURN

*SAVE_OUTPOS:FOR B=1 TO 4SAV(B-1)=OUTPOS(B)

NEXT BRETURN

*RESTORE_OUTPOS:FOR B=1 TO 4OUTPOS(B)=SAV(B-1)

NEXT BRETURN

n NOTEIf an axis that is set to “no axis” in thesystem generation is specified, then anerror message “Specificationmismatch” appears and execution ofthe command will stop.

Page 123: rcx40-pro

106

2

11. Command Statements

OUTPOS2 statement(OUT effective position setting statement for sub group)

Format 1:

OUTPOS2 <expression>

Format 2:

OUTPOS2 (<expression 1>)=<expression 2>

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)

Explanation:This statement changes the OUT effective position parameter for the sub group to thevalue specified in <expression>. Format 1 changes all sub group axes. Format 2 changesthe OUT effective position parameter for the axis specified in <expression 1> to the valuespecified in <expression 2>.

Example:’CYCLE WITH DECREASING OUTPOSDIM SAV(3)GOSUB *SAVE_OUTPOSFOR A=1000 TO 10000 STEP 1000GOSUB *CHANGE_OUTPOSMOVE2 P,P0DO3(0)=1MOVE2 P,P1DO3(0)=0NEXT AGOSUB *RESTORE_OUTPOSHALT*CHANGE_OUTPOS:FOR B=1 TO 4OUTPOS2(B)=A

NEXT BRETURN

*SAVE_OUTPOS:FOR B=1 TO 4SAV(B-1)=OUTPOS2(B)

NEXT BRETURN

*RESTORE_OUTPOS:FOR B=1 TO 4OUTPOS2(B)=SAV(B-1)

NEXT BRETURN

n NOTE· This statement is valid only when the

sub group is set in the systemgeneration.

· If an axis that is set to “no axis” inthe system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

Page 124: rcx40-pro

107

2

11. Command Statements

PDEF statement

Format:

PDEF (<expression 1>) = <expression 2>, <expression 3>, <expression 4>

The value of <expression 1> must be from 0 to 19.The value of <expression 2>, <expression 3> and <expression 4> can be 1 to 32767 solong as the value of <expression 2> * <expression 3> * <expression 4> is equal to or lessthan 32767.

Explanation:This statement defines the pallet used to execute a pallet movement command.

P [5]

P [3] P [4]

P [2]P [1]

NZ

NX

NY

4

710

1

16

1922

13

2

5

811

3

6

912

14

17

2023

15

18

2124

<expression 1> : Pallet definition number (0 to 19)<expression 2> : Number of points between P[1] and P[2]<expression 3> : Number of points between P[1] and P[3]<expression 4> : Number of points between P[1] and P[5]

Example:PDEF(1) = 3,4,2

----------- Pallet definition 1 is defined as 3×4×2.

n NOTE· Point data used in pallet definition

uses the data area as follows.Pallet definition 0: P[1] to P[5]----- P3996 to P4000Pallet definition 1: P[1] to P[5]----- P3991 to P3995

:Pallet definition 19:P[1] to P[5]----- P3901 to P3905

Page 125: rcx40-pro

108

2

11. Command Statements

PMOVE statement (Pallet movement command)

Format:

PMOVE (palette definition number, palette position number) [,option [,option] …]

Explanation:This statement executes a pallet movement command for all main robot axes. This statementwill not move the sub robot axes and auxiliary axes.

Movement type : PTPPallet definition number : Numerical expressionPallet position number : Numerical expressionOptions : Speed setting, arch motion setting, STOPON

condition setting

Movement type· PTP (point to point) movementPTP movement begins after positioning on all movable axes is complete (within thetolerance range), and the command terminates when all movable axes enter the OUTeffective 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 tolerance range of thetarget position, use the WAIT ARM statement.

Example:PMOVE(1,16)

----------- Main robot axes move from the current position to the positionspecified by pallet position number 16 of pallet definitionnumber 1.

n NOTE· The pallet definition number must be

designated to execute a PMOVEstatement.

· The XYZ axes move to the positionsdetermined by the calculated values.However, the R-axis moves to theposition specified by pallet point dataP[1].

· In each pallet definition, palletposition numbers are designated asfollows:

P [1]

NZ

P [5]NX*(NY-1)+1

NX+1

21

NX

NX

P [2]

NX*2

NX*NY

P [4]

NX*NY*(NZ-1)+NXNX*NY*(NZ-1)+NXNX*NY*(NZ-1)+NX

NX*NY*NZ

NY

NX*NY*(NZ-1)+1NX*NY*(NZ-1)+1NX*NY*(NZ-1)+1

P [3]P [3]P [3]

...

Page 126: rcx40-pro

109

2

11. Command Statements

Pallet definition numberFormat:

<expression 1>

The value of <expression 1> must be 0 to 19.

Explanation:Specify the pallet definition number.

Pallet position numberFormat:

<expression 2>

The value of <expression 2> must be from 1 to 32767.

Explanation:Specify the pallet position number.

Example:PMOVE(1,16)

----------- Main robot axes move from the current position to the positionspecified by pallet position number 16 of pallet definitionnumber 1.

Page 127: rcx40-pro

110

2

11. Command Statements

Option types· Speed settingFormat 1:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified PMOVE statement.

Example:PMOVE(1,3),S=10

----------- Moves at 10% of normal program speed from the currentposition to the position specified by pallet position number 3of pallet definition number 1.

· Arch motion settingFormat:

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 “x” axis enters the arch position range, all axes other than the “x” axismove toward the target position. Finally, when the all axes other than the “x” axis enterthe arch position range and also the specified “x” axis enters within the tolerance range ofthe position specified in <expression>, the specified “x” axis moves toward the targetposition, and when it enters the OUT effective position range, the command terminates.

Example:PMOVE(1,A),Z=0

----------- The Z-axis first moves from the current position to the “0pulse” position. Then other axes move to the position specifiedby pallet position number A of pallet definition number 1.Finally the Z-axis moves to the position specified by palletposition number A.

Current position

Z=0

Position specified by palette position number A

n NOTEThis option merely specifies themaximum speed and does notguarantee the specified speed.

Page 128: rcx40-pro

111

2

11. Command Statements

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only during programexecution.

Example:PMOVE(A,16),STOPON DI(20)=1

----------- Moves from the current position to the position specified bypallet position number 16 of pallet definition number A, andslows down and stops when the condition “DI (20) = 1” ismet.

Page 129: rcx40-pro

112

2

11. Command Statements

PMOVE2 statement (Pallet movement command)

Format:

PMOVE2 (palette definition number, palette position number) [,option [,option] …]

Explanation:This statement executes a pallet movement command for all sub robot axes. This statementwill not move the main robot axes and auxiliary.

Movement type : PTPPallet definition number : Numerical expressionPallet position number : Numerical expressionOptions : Speed setting, arch motion setting, STOPON

condition setting

Movement type· PTP (point to point) movementPTP movement begins after positioning on all movable axes is complete (within thetolerance range), and the command terminates when all movable axes enter the OUTeffective 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 tolerance range of thetarget position, use the WAIT ARM2 statement.

Example:PMOVE2(1,16)

----------- Sub robot axes move from the current position to the positionspecified by pallet position number 16 of pallet definitionnumber 1.

n NOTE· The pallet definition number must be

designated to execute a PMOVE2statement.

· The XYZ axes move to the positionsdetermined by the calculated values.However, the R-axis moves to theposition specified by pallet point dataP[1].

· In each pallet definition, palletposition numbers are designated asfollows:

P [1]

NZ

P [5]NX*(NY-1)+1

NX+1

21

NX

NX

P [2]

NX*2

NX*NY

P [4]

NX*NY*(NZ-1)+NXNX*NY*(NZ-1)+NXNX*NY*(NZ-1)+NX

NX*NY*NZ

NY

NX*NY*(NZ-1)+1NX*NY*(NZ-1)+1NX*NY*(NZ-1)+1

P [3]P [3]P [3]

...

Page 130: rcx40-pro

113

2

11. Command Statements

Pallet definition numberFormat:

<expression 1>

The value of <expression 1> must be 0 to 19.

Explanation:Specify the pallet definition number.

Pallet position numberFormat:

<expression 2>

The value of <expression 2> must be from 1 to 32767.

Explanation:Specify the pallet position number.

Example:PMOVE2(1,16)

----------- Sub robot axes move from the current position to the positionspecified by pallet position number 16 of pallet definitionnumber 1.

Page 131: rcx40-pro

114

2

11. Command Statements

Option types· Speed settingFormat 1:

SPEED = <expression>

S

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:Specify the program speed in <expression>. Robot operating speed is determined by theproduct of the automatic movement speed and the program speed. This option is validonly for the specified PMOVE2 statement.

Example:PMOVE2(1,3),S=10

----------- Moves at 10% of normal program speed from the currentposition to the position specified by pallet position number 3of pallet definition number 1.

· Arch motion settingFormat:

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 “x” axis enters the arch position range, all axes other than the “x” axismove toward the target position. Finally, when the all axes other than the “x” axis enterthe arch position range and also the specified “x” axis enters within the tolerance range ofthe position specified in <expression>, the specified “x” axis moves toward the targetposition, and when it enters the OUT effective position range, the command terminates.

Example:PMOVE2(1,A),Z=0

----------- The Z-axis first moves from the current position to the “0pulse” position. Then other axes move to the position specifiedby pallet position number A of pallet definition number 1.Finally the Z-axis moves to the position specified by palletposition number A.

Current position

Z=0

Position specified by palette position number A

n NOTEThis option merely specifies themaximum speed and does notguarantee the specified speed.

Page 132: rcx40-pro

115

2

11. Command Statements

· STOPON condition settingFormat:

STOPON <conditional expression>

Explanation:This command option stops the robot movement when the conditional expression is met.Since the robot movement slows down and comes to a stop, there will be a slight distancethe robot moves while slowing down after the condition is met.If the conditional expression is already satisfied before the robot begins to move, thecommand will terminate without moving the robot. This option is valid only during programexecution.

Example:PMOVE2(A,16),STOPON DI(20)=1

-------- --- Moves from the current position to the position specified bypallet position number 16 of pallet definition number A, andslows down and stops when the condition “DI (20) = 1” ismet.

Page 133: rcx40-pro

116

2

11. Command Statements

PRINT statement

Format:

PRINT [<expression>] [ , <expression>...] [ , ]

; ;

Explanation:This statement displays a value for the variable specified on the MPB screen. Outputdefinitions are as follows:

1. If numbers or character strings are specified in <expression>, they will be displayedas is. If variables or arrays are specified, the values assigned to the specified variablesor arrays will be displayed. If no <expression> is specified, only line-feed isperformed.

2. If the data length exceeds the width of the screen, line-feed is performed so thatthe remainder of the data appears on the following lines of the screen.

3. If a comma ( , ) is used as a delimiter, a space (blank) is inserted between thedisplayed items.

4. If a semicolon ( ; ) is used as a delimiter, the displayed items appear in successionwithout being separated.

5. If the data is ended with a delimiter, no line-feed is inserted and the next PRINTstatement is executed on the same display line. If not ended with a delimiter, line-feed is performed.

Examples:PRINT APRINT “A1 =”;A1PRINT “B(0),B(1) = “;B(0);”,”;B(1)PRINT P100

Related command: INPUT

n NOTEEvery time a PRINT statement isexecuted, data is sent to display thespecified value on the MPB screen.The program execution time may belonger if two or more PRINTstatements are executed in succession.

Page 134: rcx40-pro

117

2

11. Command Statements

Pn (Point definition statement)

Format:

Pn = x y z r a b

n: 0 to 4000Input range for x, y, z, r, a, b is determined by the point data format.

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 unitsare viewed as “pulses”. At this point, “x” through “b” correspond to axis 1 throughaxis 6.

4. If one of input data for “x” through “b” is a real number (containing a decimalpoint), the movement units are viewed as “mm”. At this point, “x” to “z” correspondto 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, andinput data in “mm” units must be in the range from –99999.99 to 99999.99.

Example:P1= 0 0 0 0 0 0P2= 100.00 200.00 50.00 0.00 0.00 0.00P3= 10.00 0.00 0.00 0.00 0.00 0.00P10= P2FOR A=10 TO 15P[A+1]=P[A]+P3

NEXT AFOR A=10 TO 16MOVE P,P1,P[A]

NEXT AHALT

Related command: Point assignment statement

n NOTE· Input data is treated as a constant.· If power is turned off during execution

of a point definition statement, amemory-related error such as “Pointcheck sum error” may occur.

Page 135: rcx40-pro

118

2

11. Command Statements

REM (Comment statement)

Format:

REM <character string>

Explanation:All characters that follow REM or an apostrophe (’) are viewed as comments. This statementcan only be used to make comments in the program and does not execute any command.

Example:REM *** MAIN PROGRAM ***’*** SUBROUTINE ***HALT ’HALT COMMAND

Page 136: rcx40-pro

119

2

11. Command Statements

RESET statement

Format 1:

RESET DOm ( [b, · · ·, b] )

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 )

m : port number 2 to 7, 10 to 17, 20 to 27b : bit definition 0 to 7

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.

Example:RESET DO2()

----------- DO (20 to 27) are turned OFF.RESET DO2(6,5,1)

----------- DO (26, 25, 24) are turned OFF.RESET (37,35,27,20)

----------- DO(37, 35, 27, 20) are turned OFF.RESET _SYSFLG

----------- System flag variables are cleared.RESET TCOUNTER

----------- 10ms counter variables are cleared.

Related commands: SET, DO, MO, SO, TO, LO

n NOTE· Output to ports 0 and 1 of DO, MO

and SO is not allowed.· Bits must be specified in ascending

order from the right.· External output is unavailable to DO/

SO ports not connected to hardware.· System flag variables are used when

making checks with the overloadmonitor.

· 10ms counter variables are used tomeasure the time in 10ms units.

Page 137: rcx40-pro

120

2

11. Command Statements

RESTART statement

Format:

RESTART Tn

n : task number 2 to 8

Explanation:This statement restarts a task after a pause.

Example:START *SUBTASK,T2FLAG=1*L0:IF FLAG=1 AND DI2(0)=1 THENSUSPEND T2FLAG=2WAIT DI2(0)=0ENDIFIF FLAG=2 AND DI2(0)=1 THENRESTART T2FLAG=1WAIT DI2(1)=0ENDIFMOVE P,P0MOVE P,P1GOTO *L0HALT’SUBTASK ROUTINE*SUBTASK:DO2(0)=1DELAY 1000DO2(0)=0DELAY 1000GOTO *SUBTASKEXIT TASK

Related commands: CUT, EXIT TASK, START, SUSPEND

Page 138: rcx40-pro

121

2

11. Command Statements

RESUME statement

Format:

RESUME [ NEXT ]

<label>

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 theerror.

2. RESUME NEXT The program resumes from the command following thecommand that caused the error.

3. RESUME <label> The program resumes from the command specified by<label>.

Example:See the description of the ON ERROR GOTO statement.

Related command: ON ERROR GOTO

n NOTE· The RESUME statement can also be

executed in an error processingroutine.

· Error recovery processing does notwork if the error is serious.

Page 139: rcx40-pro

122

2

11. Command Statements

RIGHTY statement, LEFTY statement

Format:

RIGHTY

LEFTY

Explanation:These statements select whether the main robot will be “right-handed” or “left-handed”when moving to a point specified on a Cartesian coordinate system. This is a just selectionand does not move the robot. If the robot arm is moving, the command execution waitsuntil movement is complete (positioned within tolerance range).

Example:RIGHTYMOVE P,P1LEFTYMOVE P,P1RIGHTYHALT

P1

(1)(2)

Left-handed Right-handed

SCARA robot

n NOTEThese statements are valid only forSCARA robots, and so cannot be usedfor Cartesian robots.

Page 140: rcx40-pro

123

2

11. Command Statements

RIGHTY2 statement, LEFTY2 statement

Format:

RIGHTY2

LEFTY2

Explanation:These statements select whether the sub robot will be “right-handed” or “left-handed”when moving to a point specified on a Cartesian coordinate system. This is just a selectionand does not move the robot. If the robot arm is moving, the command execution waitsuntil movement is complete (positioned within tolerance range).

Example:RIGHTY2MOVE2 P,P1LEFTY2MOVE2 P,P1RIGHTY2HALT

P1

(1)(2)

Left-handed Right-handed

SCARA robot

n NOTE· These statements are valid only when

the sub group is set in the systemgeneration.

· These statements are valid only forSCARA robots, and so cannot be usedfor Cartesian robots.

Page 141: rcx40-pro

124

2

11. Command Statements

Sn (Shift coordinate definition statement)

Format:

Sn = x y z r

n: 0 to 9The 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 robotmovement. 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 Cartesiancoordinate system, and “r” to the rotating shift value on the xy coordinates.

Example:S0= 0.00 0.00 0.00 0.00S1=100.00 200.00 50.00 90.00P3=100.00 0.00 0.00 0.00 0.00 0.00SHIFT S0MOVE P,P3SHIFT S1MOVE P,P3HALT

Related commands: Shift assignment statement, SHIFT, SHIFT2

n NOTE· Input data is treated as a constant.· If power is turned off during

execution of a shift coordinatedefinition statement, a memory-related error such as “Shift check sumerror” may occur.

Page 142: rcx40-pro

125

2

11. Command Statements

SELECT CASE statement, END SELECT statement

Format:

SELECT [CASE] <expression>

CASE <expression list 1>

[command block 1]

[CASE <expression list 2>

[command block 2]]

:

[CASE ELSE

[command block n]

END SELECT

Explanation:These statements execute multiple command blocks according to the value in <expression>.Make the settings while referring to the following notes.

1. The <expression list> following CASE consists of multiple numerical expressionsand character expressions separated from each other by a comma ( , ).

2. If the value of <expression> matches one of expressions contained in <expressionlist>, the specified command block is executed. After executing the command block,the program jumps to the next command following the END SELECT statement.

3. If the value of <expression> does not match any of the expressions contained in<expression list>, the command block written after the CASE ELSE statement isexecuted. After executing the command block, the program jumps to the nextcommand following the END SELECT statement.

4. If the value of <expression> does not matcjt°ny of the expressions contained in<expression list> and the CASE ELSE statement is not written, the program jumpsto the next command following the END SELECT statement.

Example:WHILE -1SELECT CASE DI3()CASE 1,2,3CALL *EXEC(1,10)

CASE 4,5,6,7,8,9,10CALL *EXEC(11,20)

CASE ELSECALL *EXEC(21,30)

END SELECTWENDHALT

Page 143: rcx40-pro

126

2

11. Command Statements

SEND statement

Format:

SEND <read file> TO <write file>

Explanation:This statement sends the data in the <read file> to the <write file>.

Type File name Definition format Read

All Separate file

Write

User memory

Variable,

constant

Status

Device

Others

All files

Program

Point data

Point comment

Parameter

Shift definition

Hand definition

Palette definition

Variable

Array variable

Constant

Program directory

Parameter directory

Machine reference

Error log

Memory size

DI port

DO port

MO port

TO port

LO port

SI port

SO port

RS232C

File end code

ALL

PGM

PNT

PCM

PRM

SFT

HND

PLT

VAR

ARY

––––

DIR

DPM

MRF

LOG

MEM

DI ()

DO ()

MO ()

TO ()

LO ()

SI ()

SO ()

CMU

EOF

––––

<bbbbbbbb>

Pn

––––

––––

Sn

Hn

PLn

ab...by

ab...by (x)

“cc...c”

<<bbbbbbbb>>

––––

––––

––––

––––

DIn ()

DOn ()

MOn ()

TOn ()

LOn ()

SIn ()

SOn ()

––––

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

No

No

No

No

No

No

No

Yes

Yes

Yes

Yes

No

Yes

Yes

No

n: Number

a: Alphabetic character

b: Alphanumeric character or underscore ( _ )

c: Alphanumeric character or symbol

x: Expression

y: Format

n NOTEFor details on files, refer to “Datafiles” described later.

c CAUTION· When you restart the controller after

stopping the SEND statement, notethe following points.

1.SEND CMU TO XXX· When the SEND statement stops

while data is still being read out fromthe RS232C receive buffer, the dataacquired up until that point isdiscarded.

2.SEND XXX TO CMU· When the SEND statement stops

while data is still being written intothe RS232C transmit buffer, the datais rewritten from the beginning.

Page 144: rcx40-pro

127

2

11. Command Statements

Example:SEND PGM TO CMU

----------- All user programs are output through the RS232C port.SEND <<PRG1>> TO CMU

----------- The program named “PRG1” is output through the RS232Cport.

SEND CMU TO PNT----------- Point data files are input through the RS232C port.

SEND CMU TO P100----------- Data of point number 100 is input through the RS232C port.

SEND “T1” TO CMU----------- The character string “T1” is output through the RS232C port.

SEND CMU TO A$----------- The character string is input to variable A$ through the

RS232C port.

n NOTE· The SEND statement cannot be used

to write onto read-only files.Incorrect examples:

S E N D C M U T O D I RS E N D P N T T O S I ( )

· Even if the read and write files arecorrect, writing cannot be executedunless the data formats match.

Incorrect Examples:S E N D P G M T O P N TS E N D S I ( ) T O S F T

Page 145: rcx40-pro

128

2

11. Command Statements

SERVO statement

Format:

SERVO ON [ (<expression>) ]

OFF

FREE

PWR

The value of <expression> must be from 1 to 6 (axis number).

Explanation:This statement controls the servo ON/OFF of the specified axes in the main group or allaxes (in the main group and sub group).If <expression> is not specified, all axes are controlled and the motor power supplysimultaneously turns ON and OFF.

ON ----------- Turns the servo ON. If no axis is specified the motor power supplyalso turns ON.

OFF ----------- Turns the servo OFF and applies the dynamic brake. The axeshaving brakes are all locked by the brake. If no axis is specifiedthe motor power supply also turns OFF.

FREE ----------- Turns the servo OFF and releases the dynamic brake. The axeshaving brakes are all released. If no axis is specified the motorpower supply also turns OFF.

PWR ----------- Turns ON only the motor power supply.

Example:SERVO ON

----------- Turns ON the servos for all axes after turning ON the motorpower supply.

SERVO OFF----------- Turns OFF the motor power supply and the servos for all

axes. The axes having brakes are all locked by the brake.SERVO FREE(3)

----------- Turns OFF the servo for axis 3 (Z-axis) and releases the brake.

n NOTE· This statement is executed after

positioning on all axes (in the maingroup and sub group) is complete(within the tolerance range).

· The servo for an axis cannot beturned ON as long as its motor poweris OFF.

c CAUTIONWhen the motor power was OFFusing the SERVO OFF statement, donot perform any work within the robotmovement area. Always check that theemergency stop is ON when workingwithin the robot movement area.

Page 146: rcx40-pro

129

2

11. Command Statements

SERVO2 statement

Format:

SERVO2 ON [ (<expression>) ]

OFF

FREE

PWR

The value of <expression> must be from 1 to 4 (axis number).

Explanation:This statement controls the servo ON/OFF of the specified axes in the sub group or allaxes (in the main group and sub group).If <expression> is not specified, all axes are controlled and the motor power supplysimultaneously turns ON and OFF.

ON ----------- Turns the servo ON. If no axis is specified the motor power supplyalso turns ON.

OFF ----------- Turns the servo OFF and applies the dynamic brake. The axeshaving brakes are all locked by the brake. If no axis is specifiedthe motor power supply also turns OFF.

FREE ----------- Turns the servo OFF and releases the dynamic brake. The axeshaving brakes are all released. If no axis is specified the motorpower supply also turns OFF.

PWR ----------- Turns ON only the motor power supply.

Example:SERVO2 ON

----------- Turns ON the servos for all axes after turning ON the motorpower supply.

SERVO2 OFF----------- Turns OFF the motor power supply and the servos for all

axes. The axes having brakes are all locked by the brake.SERVO2 FREE(2)

----------- Turns OFF the servo for axis 2 (Y-axis) and releases the brake.

n NOTE· This statement is executed after

positioning on all axes (in the maingroup and sub group) is complete(within the tolerance range).

· The servo for an axis cannot beturned ON as long as its motor poweris OFF.

c CAUTIONWhen the motor power was turnedOFF using the SERVO OFFstatement, do not perform any workwithin the robot movement area.Always check that the emergency stopis ON when working within the robotmovement area.

Page 147: rcx40-pro

130

2

11. Command Statements

SET statement

Format:

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)

m : port number 2 to 7, 10 to 11, 20 to 27b : bit definition 0 to 7The value of <expression> must be from 1 to 3600000. (Unit: ms) Note that the minimumrun time is 10ms.

Explanation:This statement turns ON the bits of the specified ports.Specify the pulse output time (unit: ms) in <expression>. When the specified time haselapsed, the output turns OFF to end the command execution.

Example:SET DO2()

----------- DO (27 to 20) are turned ON.SET DO2(6,5,1),200

----------- DO (26, 25, 21) are turned ON for 200ms.SET DO(37,35,27,20)

----------- DO (37, 35, 27, 20) are turned ON.

Related commands: RESET, DO, MO, SO, TO, LO

n NOTE· Output to the DO0 ( ) and DO1 ( )

ports is not allowed.· Output to the MO0 ( ) and MO1 ( )

ports is not allowed.· Output to the SO0 ( ) and SO1 ( )

ports is not allowed.· Bits must be specified in ascending

order from the right.· External output is unavailable to DO/

SO ports not connected to hardware.

Page 148: rcx40-pro

131

2

11. Command Statements

SHARED statement

Format:

SHARED <variable> [ ( ) ] [, <variable> [ ( ) ]. . .]

Explanation:This statement does not permit variables declared with a program level code to be passedon as dummy arguments, but allows them to be referred to with a sub-procedure.As a <variable>, specify a simple variable or an array variable followed by parentheses.This variable should be at the program level used with sub-procedures. If an array isspecified, that entire array is selected.

Example:DIM Y!(10)X!=2.5Y!(10)=1.2CALL *DISTANCECALL *AREAHALTSUB *DISTANCESHARED X!,Y!( )PRINT X!^2+Y!(10)^2 --------- Variable is shared.END SUBSUB *AREADIM Y!(10)PRINT X!*Y!(10) --------- Variable is not shared.END SUB

Related commands: SUB, END SUB

n NOTE· The SHARED statement allows

variables to be shared only betweenthe program level code and sub-procedure within the same program.

· The program level code is a programwritten outside of a sub-procedure.

Page 149: rcx40-pro

132

2

11. Command Statements

SHIFT statement(Shift coordinate setting statement for main robot)

Format:

SHIFT <shift variable>

Explanation:This statement sets the shift coordinates for the main robot by using the shift data specifiedin <shift variable>.

Example:SHIFT S1MOVE P,P10SHIFT S[A]MOVE P,P20HALT

Related commands: Shift definition statement, shift assignment statement

n NOTEThis statement is executed afterpositioning on the main robot axes iscomplete (within the tolerance range).

Page 150: rcx40-pro

133

2

11. Command Statements

SHIFT2 statement(Shift coordinate setting statement for sub robot)

Format:

SHIFT2 <shift variable>

Explanation:This statement sets the shift coordinates for the sub robot by using the shift data specifiedin <shift variable>.

Example:SHIFT2 S1MOVE2 P,P10SHIFT2 S[A]MOVE2 P,P20HALT

Related commands: Shift definition statement, shift assignment statement

n NOTE· This statement is valid only when the

sub robot is set in the systemgeneration.

· This statement is executed afterpositioning on the sub robot axes iscomplete (within the tolerance range).

Page 151: rcx40-pro

134

2

11. Command Statements

SO statement (Serial output)

Format:

[ LET ] SO m ( [ b, · · ·, b ] ) = <expression>

SO ( mb, · · ·, mb )

m : port number 2 to 7, 10 to 11, 20 to 27b : bit definition 0 to 7The value of <expression> will be converted to an integer and the lower bits correspondingto the bits specified on the left side will be valid.

Explanation:This statement outputs the specified value to the SO port.

Example:SO2()=&B10111000

----------- SO (27, 25, 24, 23) are turned ON, and SO (26, 22, 21, 20)are turned OFF.

SO2(6,5,1)=&B010----------- 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 isconverted to an integer are output to SO (37, 35, 27, 20),respectively.

Related commands: RESET, SET

n NOTE· Output to the SO0 ( ) and SO1 ( )

ports is not allowed.· Bits must be specified in ascending

order from the right.· External output is unavailable to SO

ports not connected to hardware.

Page 152: rcx40-pro

135

2

11. Command Statements

SPEED statement(Speed setting statement for main group)

Format:

SPEED <expression>

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>.

Example:ASPEED 100SPEED 70MOVE P,P0

----------- Move at 70% (=100*70) of normal program speed from thecurrent position to P0.

SPEED 50MOVE P, P1

----------- Move at 50% (=100*50) of normal program speed from thecurrent position to P1.

MOVE P,P2, S=10----------- Move at 10% (=100*10) of normal program speed from the

current position to P1.HALT

Related commands: ASPEED, ASPEED2, SPEED2

n NOTE· This statement changes all the

movement speed parameters for themain axes and auxiliary axes of therobot.

· Robot operating speed is determinedby the product of the automaticmovement speed (specified by theMPB or ASPEED command) and theprogram speed (specified by theSPEED command).Example:When the automatic movement speedis 80% and the program speed set bythe SPEED command is 50%, then:Robot operating speed = 80%*50% =40%

Page 153: rcx40-pro

136

2

11. Command Statements

SPEED2 statement(Speed setting statement for sub group)

Format:

SPEED2 <expression>

The value of <expression> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the program speed for the sub group to the value specified in<expression>.

Example:ASPEED2 50SPEED2 70MOVE2 P,P0

----------- Move at 35% (=50*70) of normal program speed from thecurrent position to P0.

SPEED2 50MOVE2 P,P1

----------- Move at 25% (=50*50) of normal program speed from thecurrent position to P1.

MOVE2 P,P2,S=10----------- Move at 5% (=50*10) of normal program speed from the

current position to P1.HALT

Related commands: ASPEED, ASPEED2, SPEED2

n NOTE· This statement changes all the

movement speed parameters for thestandard axes and auxiliary axes ofthe sub robot.

· Robot operating speed is determinedby the product of the automaticmovement speed (specified by theMPB or ASPEED2 command) and theprogram speed (specified by theSPEED2 command).Example:When the automatic movement speedis 80% and the program speed set bythe SPEED2 command is 50%, then:Robot operating speed = 80%*50% =40%

c CAUTIONThis statement is valid only when thesub group is set in the systemgeneration.

Page 154: rcx40-pro

137

2

11. Command Statements

START statement

Format:

START <label>, Tn [, p ]

n : task number 2 to 8p : 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 *STHALT’SUBTASK ROUTINE*SUBTASK:P100 = WHEREIF LOCZ(P100) > 10000 THENDO(20) = 1

ELSEDO(20) = 0

ENDIFGOTO *SUBTASKEXIT TASK

Related commands: CUT, EXIT TASK, RESTART, SUSPEND, CHGPRI

n NOTE· The priority of task 1 (main task) is

32.· The smaller the priority number, the

higher the priority level.· When a task with a higher priority is

set “READY”, all tasks with lowerpriority levels also stay “READY”.

Page 155: rcx40-pro

138

2

11. Command Statements

SUB statement, END SUB statement

Format:

SUB <label> [ ( <dummy argument> [, <dummy argument> . . . ] ) ] <command block>END SUB

Explanation:The SUB statement and END SUB statement define a sub-procedure that can be executedwith the CALL statement. When the END SUB statement is executed, the program jumpsto the next command in the CALL statement that was called. Defines are shown below.

1. All variables declared within the sub-procedure are local variables so they arevalid only within the sub-procedure. Local variables are initialized each time thesub-procedure is called up.

2. Use a SHARED statement when using global variables (program level).

3. Use <dummy argument> when variables are to be passed on. If two or more dummyarguments are used, separate them by a comma ( , ).

4. A valid dummy argument consists of a name of variable and an entire array (arrayname followed by parentheses).

Example 1:

CALL *TESTPRINT IHALT’SUB ROUTINE: TESTSUB *TESTI=50

END SUB

In the above example, program level variable I does not have any relation to variableI within the sub-procedure. The value displayed with the PRINT statement on thethird line will be “1”.

Example 2:X% = 4Y% = 5CALL *COMPARE( REF X%, REF Y% )PRINT X%,Y%Z% = 7W% = 2CALL *COMPARE( REF Z%, REF W% )PRINT Z%,W%HALT’SUB ROUTINE: COMPARESUB *COMPARE( A%, B% )IF A% < B% THENTEMP% = A%A% = B%B% = TEMP%

ENDIFEND SUB

In the above example, different variables are passed on as arguments to call up thesub-procedure twice.

Related commands: CALL, DECLARE, EXIT SUB, SHARED

n NOTE· Sub-procedures cannot be defined

within a sub-procedure.· The DECLARE statement cannot be

used within a sub-procedure.· A label can be defined within a sub-

procedure, but it cannot jump with aGOTO or GOSUB statement to a labeloutside the sub-procedure.

· Sub-procedures cannot be used withinan expression.

· Local variables cannot be used withPRINT and SEND statements.

Page 156: rcx40-pro

139

2

11. Command Statements

SUSPEND statement

Format:

SUSPEND Tn

n: task number 2 to 8

Explanation:This statement temporarily stops a task being executed.

Examples:START *SUBTASK,T2SUSFLG=0*L0:

MOVE P,P0MOVE P,P1WAIT SUSFLG=1SUSPEND T2SUSFLG=0

GOTO *L0HALT’SUBTASK ROUTINE*SUBTASK:

WAIT SUSFLG=0DO2(0)=1DELAY 1000DO2(0)=0DELAY 1000SUSFLG=1GOTO *SUBTASKEXITTASK

Related commands: CUT, EXIT TASK, RESTART, SUSPEND

Page 157: rcx40-pro

140

2

11. Command Statements

SWI statement

This statement switches the current program.

Format:

SWI <program name>

Explanation:This statement switches from the current program to the specified program, starting fromthe first line after executing compiling. The output variable status does not change whenthe program was switched. However, dynamic variables and array variables are cleared.If an error occurs during compiling, the operation stops. The program name you want toswitch to must be enclosed in < >.

Example:SWI <ABC>

----------- The execution program switches to <ABC>.

n NOTE· If there is no program to switch to, the

message “3.3: Program doesn't exist”appears and operation stops.

· If an error occurs during compiling,an error message line is displayedand the program stops.

· The SWI statement can only beexecuted within task 1 (main task).If used within tasks 2 through 8, themessage “6.1:Illegal command”appears and operation stops.

· The Stop key does not function duringcompiling.

· Execution of a SWI statement isalways accompanied by compiling,and the time required for thiscompiling depends on the size ofprogram to switch to.

Page 158: rcx40-pro

141

2

11. Command Statements

TO statement

Format:

[ LET ] TO0 ( [b, · · ·, b ] ) = <expression>

TO ( 0 b, · · ·, 0 b )

b : bit definition 0 to 7The value of <expression> will be converted to an integer and the lower bits correspondingto the bits specified on the left side will be valid.

Explanation:This statement outputs the specified value to the TO port.

Example:TO0() = &B00000110

Related commands: RESET, SET

n NOTEBits must be specified in ascendingorder from the right.

Page 159: rcx40-pro

142

2

11. Command Statements

TOLE statements(Tolerance setting statement for main group)

Format 1:

TOLE <expression>

Format 2:

TOLE ( <expression 1> ) = <expression 2>

The value of <expression> must be from 1 to 6 (axis number).The values of <expression 1> and <expression 2> differ depending on the motor. (Unit:pulses)

Explanation:This statement changes the tolerance parameter for the main group to the value specifiedin <expression>. Format 1 changes all axes in the main group. Format 2 changes thetolerance parameter for the main group axis specified in <expression 1> to the valuespecified in <expression 2>.

Example:’CYCLE WITH DECREASING TOLERANCEFOR A=100 TO 20 STEP -20GOSUB *CHANGE_TOLEMOVE P,P0MOVE P,P1NEXT AHALT*CHANGE_TOLE:FOR B=1 TO 4TOLE(B)=ANEXT BRETURN

n NOTE· If an axis that is set to “no axis” in

the system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

· This statement is executed afterpositioning on the specified axes iscomplete (within the tolerance range).

Page 160: rcx40-pro

143

2

11. Command Statements

TOLE2 statement(Tolerance setting statement for sub group)

Format 1:

TOLE2 <expression>

Format 2:

TOLE2 ( <expression 1> ) = <expression 2>

The value of <expression> must be from 1 to 4 (axis number).The value of <expression 1> and <expression 2> differs depending on the motor setting.(Unit: pulses)

Explanation:This statement changes the tolerance parameter for the sub group to the value specified in<expression>. Format 1 changes all axes in the sub group. Format 2 changes the toleranceparameter for the sub group axis specified in <expression 1> to the value specified in<expression 2>.

Example:’CYCLE WITH DECREASING TOLERANCEFOR A=100 TO 20 STEP -20GOSUB *CHANGE_TOLEMOVE2 P,P0MOVE2 P,P1NEXT AHALT*CHANGE_TOLE:FOR B=1 TO 4TOLE2(B)=ANEXT BRETURN

n NOTE· This statement is valid only when the

sub group is set in the systemgeneration.

· If an axis that is set to “no axis” inthe system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

· This statement is executed afterpositioning on the specified axes iscomplete (within the tolerance range).

Page 161: rcx40-pro

144

2

11. Command Statements

TORQUE statement

Format

TORQUE ( <expression 1> ) = <expression 2>

The value of <expression 1> must be from 1 to 6 (axis number).The value of <expression 2> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the maximum torque instruction for the main group axis specifiedin <expression 1> to the value specified in <expression 2>. The torque parameter valuedoes not change.The maximum torque instruction by this statement remains valid until any of the followingoperations are performed.

· When another TORQUE command for the same axis is executed.

· When a torque limit option is executed in the DRIVE statement for the same axis.

· When power to the controller is turned off and then turned on.

· When parameters are changed or initialized.

· When return-to-origin is performed by absolute reset.

· When the servo turns off.

Example:DRIVE(3,P0)

----------- Axis 3 moves from the current position to the point specifiedby 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%).

ELSEDRIVE(3,P0),T=50

----------- Axis 3 moves from the current position to the point specifiedby 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

Related command: DRIVE

n NOTEIf an axis that is set to “no axis” in thesystem generation is specified, then anerror message “Specificationmismatch” appears and execution ofthe command will stop.

c CAUTION· If the specified value is too small, the

axis may not move. In this case,press the emergency stop button andthen continue operation.

· If the specified value is less than therated torque, then an error might notoccur even when the robot bumpsinto an obstacle.

Page 162: rcx40-pro

145

2

11. Command Statements

TORQUE2 statement

Format

TORQUE2 ( <expression 1> ) = <expression 2>

The value of <expression 1> must be from 1 to 4 (axis number).The value of <expression 2> must be from 1 to 100. (Unit: %)

Explanation:This statement changes the maximum torque instruction for the sub group axis specifiedin <expression 1> to the value specified in <expression 2>. The torque parameter valuedoes not change.The maximum torque instruction by this statement remains valid until any of the followingoperations are performed.

· 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.

· When parameters are changed or initialized.

· When return-to-origin is performed by absolute reset.

· When the servo turns off.

Example:DRIVE2(1,P0)

----------- Axis 1 moves from the current position to the point specifiedby 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%).

ELSEDRIVE2(1,P0),T=50

----------- Axis 1 moves from the current position to the point specifiedby 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

Related command: DRIVE2

n NOTE· This statement is valid only when the

sub robot is set in the systemgeneration.

· If an axis that is set to “no axis” inthe system generation is specified,then an error message “Specificationmismatch” appears and execution ofthe command will stop.

c CAUTION· If the specified value is too small, the

axis may not move. In this case,press the emergency stop button andthen continue operation.

· If the specified value is less than therated torque, then an error might notoccur even if the robot bumps into anobstacle.

Page 163: rcx40-pro

146

2

11. Command Statements

WAIT statement

Format 1:

WAIT < DI / DO conditional expression> [, <expression>]

The value of <expression> must be from 1 to 3600000. (Unit: ms)

Explanation:This statement allows waiting until the condition in <DI/DO conditional expression> ismet. 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. Notethat the minimum wait time is 10 ms.

Format 2:WAIT ARMWAIT ARM2

WAIT ARM [ (<expression 1>) ]

ARM2 [ (<expression 2>) ]

The value of <expression 1> must be from 1 to 6 (axis number).The value of <expression 2> must be from 1 to 4 (axis number).

Explanation:This statement allows waiting until positioning on the robot axes is complete (within thetolerance range).When the <expression 1> and <expression 2> are not specified, all axes of the main robotor the sub robot are subject to this command. When the <expression 1> and <expression2> 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( )=&B01010110

----------- Waits until DI(21), (22), (24), (26) are turned ON, and DI(20),(23), (25), (27) are turned OFF.

WAIT DI2(4,3,2)=&B101----------- Waits until DI(22) and DI(24) are turned ON, and DI(23) is

turned OFF.WAIT DI(31)=1 OR DO(21)=1

----------- Waits until DI(31) or DO(21) is turned ON.WAIT DI(20)=1,1000

----------- Waits until DI(20) is ON. If not turned ON after 1 second,the command will end.

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.

Related commands: DRIVE, DRIVE2, DRIVEI, DRIVEI2, MOVE, MIVE2, MOVEI,MOVEI2

Page 164: rcx40-pro

147

2

11. Command Statements

WEIGHT statement(Tip weight parameter setting statement for main robot)

Format:

WEIGHT <expression>

The range of <expression> differs depending on the robot setting.

Explanation:This statement changes the tip weight parameter of the main robot to the value of<expression>.

Example:A=5B=2C=WEIGHTWEIGHT AMOVE P,P0WEIGHT BMOVE P,P1WEIGHT CHALT

n NOTEThis statement changes the robot tipweight parameter but does not haveany effect on auxiliary axes.

Page 165: rcx40-pro

148

2

11. Command Statements

WEIGHT2 statement(Tip weight parameter setting statement for sub robot)

Format:

WEIGHT2 <expression>

The range of <expression> differs depending on the robot setting.

Explanation:This statement changes the tip weight parameter of the sub robot to the value of<expression>.

Example:A=5B=2C=WEIGHT2WEIGHT2 AMOVE2 P,P0WEIGHT2 BMOVE2 P,P1WEIGHT2 CHALT

n NOTE· This statement is valid only when the

sub robot is set in the systemgeneration.

· This statement changes the robot tipweight parameter but does not haveany effect on auxiliary axes.

Page 166: rcx40-pro

149

2

11. Command Statements

WHILE statement, WEND statementThe WHILE statement allows the same operation to repeat as long as the condition specifiedby <expression> is met.

Format:

WHILE <expression>

<command block>

WEND

Explanation:This statement executes the command block placed between the WHILE and WENDstatements when the condition specified by <expression> is met, and then returns to theWHILE statement to repeat the same operation. When the condition specified by<expression> is not met, the program jumps to the next command following the WENDstatement. If the condition specified by <expression> is not satisfied from the beginning,no commands between the WHILE and WEND statements are executed and a jump ismade 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=0WHILE DI3(0)=0A=A+1MOVE P,P0MOVE P,P1PRINT ”COUNTER=”;AWENDHALT

Examples 2:A=0WHILE -1 -------------- This will be an endless loop because the conditional expression is

always true (-1).A=A+1MOVE P,P0IF DI3(0)=1 THEN *ENDMOVE P,P1PRINT ”COUNTER=”;AIF DI3(0)=1 THEN *ENDWEND*ENDHALT

n NOTE· The WHILE and WEND statements

must be used together as a set.· If the value of <expression> is –1, the

condition is judged to be satisfied.

Page 167: rcx40-pro

150

2

11. Command Statements

Label statements

Format:

<label>:

Explanation:This statement defines “labels” in the program lines. Labels must begin with an asterisk( * ).

Examples:*SUB2:*PROG_END:

Page 168: rcx40-pro

151

12. Functions

12.1 Arithmetic functionsThese functions are used as elements in arithmetic expressions.

� 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 variableA.

� ACCEL

Format:

ACCEL (<expression>)

The value of <expression> must be from 1 to 6 (axis number).

Explanation:This function gives the acceleration parameter for the main group axis specified in<expression>.

Example:A=ACCEL(3)

----------- The acceleration parameter for axis 3 is assigned to variableA.

� ACCEL2

Format:

ACCEL2 (<expression>)

The value of <expression> must be from 1 to 4 (axis number).

Explanation:This function gives the acceleration parameter for the sub group axis specified in the<expression>.

Example:A=ACCEL2(2)

----------- The acceleration parameter for axis 2 in the sub group isassigned to variable A.

n NOTEIf an axis that is set to “no axis” in thesystem generation is specified in<expression>, then an error message“Specification mismatch” appears andexecution of the command will stop.

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

Page 169: rcx40-pro

152

2

12. Functions

� ARCH

Format:

ARCH (<expression>)

The value of <expression> must be from 1 to 6 (axis number).

Explanation:This function gives the arch position parameter for the main group axis specified in<expression>.

Example:A=ARCH(1)

----------- The arch position parameter for axis 1 is assigned to variableA.

� ARCH2

Format:

ARCH2 (<expression>)

The value of <expression> must be from 1 to 4 (axis number).

Explanation:This function gives the arch position parameter for the sub group axis specified in the<expression>.

Example:A=ARCH2(1)

----------- The arch position parameter for axis 1 in the sub group isassigned to variable A.

� 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 valid 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

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

n NOTE If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appears andexecution of the command will stop.

Page 170: rcx40-pro

153

2

12. Functions

� ARMCND2

Format:

ARMCND2

Explanation:This function gives the current arm status for the SCARA robot in the sub group.The arm status is “1” for left-handed condition and “0” for right-handed condition.This function is valid 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 maingroup.The arm type is “1” for left-handed system and “0” for right-handed system.This function is valid 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

� ARMTYPE2

Format:

ARMTYPE2

Explanation:This function gives the hand system currently selected for the SCARA robot in the subgroup.The arm type is “1” for left-handed system and “0” for right-handed system.This function is valid 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

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

n NOTEThis function is valid only when thesub group has been set in the systemgeneration.

Page 171: rcx40-pro

154

2

12. Functions

� ATN

Format:

ATN (<expression>)

Explanation:This function gives the arctangent of the value of <expression>. The resulting valueobtained 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) andvariable A is assigned to array A (0).

A(0)=ATN(0.5)----------- The arctangent of 0.5 is assigned to array A (0).

Related functions: COS, DEGRAD, RADDEG, SIN, TAN

� AXWGHT

Format:

AXWGHT (<expression>)

The value of <expression> must be from 1 to 6 (axis number).

Explanation:This function gives the axis tip weight parameter for the main group axis specified in<expression>.

Example:A=AXWGHT(1)

----------- The axis tip weight parameter for axis 1 is assigned to variableA.

� AXWGHT2

Format:

AXWGHT2 (<expression>)

The value of <expression> must be from 1 to 4 (axis number).

Explanation:This function gives the axis tip weight parameter for the sub group axis specified in<expression>.

Example:A=AXWGHT2(1)

----------- The axis tip weight parameter for axis 1 in sub group isassigned to variable A.

n NOTE• This function is valid only for MULTI

type robot axes or auxiliary axes.Robot type and auxiliary axes are setat the time of shipment.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• This function is valid only for MULTItype robot axes or auxiliary axes.Robot type and auxiliary axes are setat the time of shipment.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

Page 172: rcx40-pro

155

2

12. Functions

� COS

Format:

COS (<expression>)

Explanation:This function gives the cosine of the value of <expression>. The <expression> is in unitsof radians.

Examples:A(0)=B*COS(C)

----------- The product of the cosine of variable C and variable B isassigned to array A (0).

A(1)=COS(DEGRAD(20))----------- The cosine of 20.0° is assigned to array A (1).

Related functions: ATN, DEGRAD, RADDEG, SIN, TAN

� DECEL

Format:

DECEL (<expression>)

The value of <expression 1> must be from 1 to 6 (axis number).

Explanation:This function gives the deceleration coefficient parameter for the main group axis specifiedin the <expression>.

Example:A = DECEL (3)

----------- The deceleration parameter for axis 3 is assigned to variableA.

� DECEL2

Format:

DECEL2 (<expression>)

The value of <expression 1> must be from 1 to 4 (axis number).

Explanation:This function gives the deceleration coefficient parameter for the sub group axis specifiedin the <expression>.

Example:A = DECEL2 (2)

----------- The deceleration parameter for axis 2 in the sub group isassigned to variable A.

n NOTE• If an axis that is set to "no axis" in the

system generation is specified, then anerror message "Specificationmismatch" appears and execution ofthe command will stop.

n NOTE• The deceleration speed set in the axis

parameters for the robotconfiguration axis and additional axisis changed.

• This statement is valid only when thesub group is set in the systemgeneration.

• If an axis that is set to "no axis" in thesystem generation is specified, then anerror message "Specificationmismatch" appears and execution ofthe command will stop.

Page 173: rcx40-pro

156

2

12. Functions

� DEGRAD

Format:

DEGRAD (<expression>)

Explanation:This function converts the value of <expression> into radians. The <expression> is inunits of degrees.

Example:A=COS(DEGRAD(30))

----------- The cosine of 30° is assigned to variable A.

Related functions: ATN, COS, RADDEG, SIN, TAN

� DIST

Format:

DIST (<point expression 1>, <point expression 2>)

Explanation:This function gives the distance between the 2 points specified in <point expression 1>and <point expression 2>. An error is issued when the 2 points specified by each <pointexpression> 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:

ERRERL

Explanation:These are used for in error processing routines specified by the ON ERROR GOTOstatement. ERR gives the error code of an error that has occurred, and ERL gives the linenumber in which the error occurred.

Examples:IF ERR<>&H604 THEN HALTIF ERL=20 THEN RESUME NEXT

Related commands: ON ERROR GOTO, RESUME

Page 174: rcx40-pro

157

2

12. Functions

� INT

Format:

INT (<expression>)

Explanation:This function gives an integer that does not exceed the value of <expression>, by truncatingall decimal fractions.

Examples:A=INT(A(0))B=INT(-1.233)

----------- “-2” is assigned to B.

� LEN

Format:

LEN (<character string expression>)

Explanation:This function gives the character string length (number of bytes) specified in <characterstring expression>.

Example:B=LEN(A$)

� LSHIFT

Format:

LSHIFT (<expression 1>, <expression 2>)

Explanation:This function shifts the value of <expression 1> to the left, by the number of bits in<expression 2>. “0” is put in the place that is right open by shifting.

Example:A=LSHIFT(&B10111011,2)

----------- “&B11101100” is assigned to A.

Related functions: RSHIFT

� MCHREF

Format:

MCHREF (<expression>)

The value of <expression> must be 1 to 6 (axis number).

Explanation:This function gives the return-to-origin machine reference for the main group axis specifiedin <expression>.

Example:A=MCHREF(1)

----------- The return-to-origin machine reference of axis 1 in the maingroup is assigned to variable A.

Page 175: rcx40-pro

158

2

12. Functions

� MCHREF2

Format:

MCHREF2 (<expression>)

The value of <expression> must be 1 to 4 (axis number).

Explanation:This function gives the return-to-origin machine reference of the sub group axis specifiedin <expression>.

Example:A=MCHREF2(3)

----------- The return-to-origin machine reference of axis 3 in the subgroup is assigned to variable A.

� ORD

Format:

ORD (<character string expression>)

Explanation:This function gives the character code of the first character specified in <character stringexpression>.

Example:A=ORD(”B”)

----------- “66 (=&H42)” is assigned to A.

Related functions: CHR$

� ORGORD

Format:

ORGORD

Explanation:This function gives the axis sequence parameter for performing return-to-origin operationfor the main group.

Example:A=ORGORD

----------- The return-to-origin sequence parameter for the main groupis assigned to variable A.

Page 176: rcx40-pro

159

2

12. Functions

� ORGORD2

Format:

ORGORD2

Explanation:This function gives the axis sequence parameter for performing return-to-origin operationfor the sub group.

Example:A=ORGORD2

----------- The return-to-origin sequence parameter for the sub group isassigned to variable A.

� OUTPOS

Format:

OUTPOS (<expression>)

The value of <expression> must be 1 to 6 (axis number).

Explanation:This function gives the Out position parameter for the main group axis specified in the<expression>.

Example:A=OUTPOS(3)

----------- The Out possition parameter for axis 3 in the main group isassigned to A.

� OUTPOS2

Format:

OUTPOS2 (<expression>)

The value of <expression> must be 1 to 4 (axis number).

Explanation:This function gives the Out position parameter for the sub group axis specified in the<expression>.

Example:A=OUTPOS2(3)

----------- The Out position parameter for axis 3 in the sub group isassigned to A.

n NOTEThis function is valid only when thesub group has been set in the systemgeneration.

n NOTEIf an axis that is set to “no axis” in thesystem generation is specified in<expression>, then an error message“Specification mismatch” appears andexecution of the command will stop.

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

Page 177: rcx40-pro

160

2

12. Functions

� RADDEG

Format:

RADDEG (<expression>)

Explanation:This function converts the value of <expression> into degrees. The <expression> is inunits of radians.

Example:LOCR(P0)=RADDEG(ATN(B))

----------- The arctangent of variable B is converted into a value indegrees and assigned to R data for the P0.

Related functions: ATN, COS, DEGRAD, SIN, TAN

� RSHIFT

Format:

RSHIFT (<expression 1>, <expression 2>)

Explanation:This function shifts the value of <expression 1> to the right, by the number of bits in<expression 2>. “0” is put in the place that is left open by shifting.

Example:A=RSHIFT(&B10111011,2)

----------- “&B00101110” is assigned to A.

Related functions: LSHIFT

� SIN

Format:

SIN (<expression>)

Explanation:This function gives the sine of the value of <expression>. The <expression> is in units ofradians.

Examples:A(0)=SIN(B*2+C)

----------- The cosine of the value of B*2+C will be assigned to place 0of array A.

A(1)=SIN(DEGRAD(30))----------- The cosine of 30.0° is assigned to array A (1).

Related functions: ATN, COS, DEGRAD, RADDEG, TAN

Page 178: rcx40-pro

161

2

12. Functions

■ SQR

Format:

SQR (<expression>)

The value of <expression> must be a positive integer or “0”.

Explanation:This function gives the square root of the value 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> is in unitsof radians.

Examples:A(0)=B-TAN(C)

----------- The tangent of variable C is subtracted from variable B andthe result is assigned to array A (0).

A(1)=TAN(DEGRAD(20))----------- The tangent of 20.0° is assigned to array A (1).

Related functions: ATN, COS, DEGRAD, RADDEG, SIN

■ TIMER

Format:

TIMER

Explanation:This function gives the current time in seconds, counting from 12:00 midnight as “0:00”.It is used to measure operation time during program execution, as well as for other uses.

Example:A%=TIMERFOR B=1 TO 10MOVE P,P0MOVE P,P1

NEXTA%=TIMER-A%PRINT A%/60;”:”;A% MOD 60HALT

Related functions: TIME$

n NOTEAn error occurs if a negative value isspecified in <expression>.

n NOTEThe time can be set in“SYSTEM>INIT>CLOCK” mode.

c CAUTION· The clock used in the controller

might differ from the correct time.

Page 179: rcx40-pro

162

2

12. Functions

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• If an axis that is set to “no axis” inthe system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

� TOLE

Format:

TOLE (<expression>)

The value of <expression> must be from 1 to 6 (axis number).

Explanation:This function gives the tolerance parameter for the main group axis specified in<expression>.

Example:A=TOLE(2)

----------- The tolerance parameter for axis 2 in the main group isassigned to variable A.

� TOLE2

Format:

TOLE2 (<expression>)

The value of <expression> must be from 1 to 4 (axis number).

Explanation:This function gives the tolerance parameter for the sub group axis specified in <expression>.

Example:A=TOLE2(2)

----------- The tolerance parameter for axis 2 in the sub group is assignedto variable A.

� VAL

Format:

VAL (<character string expression>)

Explanation:This function converts the numeric value of the character string specified in <characterstring expression> into an actual numeric value.The value may be expressed in integer format (binary, decimal, hexadecimal), or realnumber format (decimal point format, exponential format).If the first character of the character string is “+”, “-”, “&” or anything other than anumeric character, the VAL function value becomes 0. If there are non-numeric charactersor spaces elsewhere in the character string, all succeeding characters are ignored by thisfunction. However, in the case of hexadecimal numbers, A to F are considered part of thenumeric character.

Example:A=VAL(”&B100001”)

Related functions: STR$

n NOTE• If an axis that is set to “no axis” in

the system generation is specified in<expression>, then an error message“Specification mismatch” appearsand execution of the command willstop.

Page 180: rcx40-pro

163

2

12. Functions

� WEIGHT

Format:

WEIGHT

Explanation:This function gives the weight parameter for the main robot.

Example:A=WEIGHT

----------- The weight parameter is assigned to variable A.

� WEIGHT2

Format:

WEIGHT2

Explanation:This function gives the weight parameter for the sub robot.

Example:A=WEIGHT2

----------- The weight parameter is assigned to variable A.

� TCOUNTER

Format:

TCOUNTER

Explanation:This function outputs count-up values at 10ms intervals starting from the point when theTCOUNTER variable is reset.

Example:A=TCOUNETR

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 in normal operation.

Example:_SYSFLG = 1

Related functions: RESET

n NOTEThis function is valid only when thesub group has been set in systemgeneration.

n NOTEThe 10ms COUNTER variable countsup from 0 to 65535, and then returns to0 to continue count-up.

n NOTEWhen using this function as a flag formonitoring the axis status, pleaseconsult us for proper support.

Page 181: rcx40-pro

164

2

12. Functions

12.2 Character string functionsCharacter string functions are used as elements only in character string expressions.

� CHR$

Format:

CHR$ (<expression>)

Explanation:This function gives the character having a character code specified in <expression>. Thevalue of <expression> must be between 0 and 255, otherwise an error will result.

Example:A$=CHR$(65)

----------- A character “A” is assigned to A$.

Related functions: ORD

� DATE$

Format:

DATE$

Explanation:This function gives the date in the format “yy/mm/dd” (last two digits of the year, month,day).

Examples:A$=DATE$PRINT DATE$

Related functions: TIME$

� LEFT$

Format:

LEFT$ (<character string expression>, <expression>)

The value of <expression> must be 0 to 75.

Explanation:This function extracts a character string with the digits specified by <expression> fromthe left end of the character string specified by <character string expression>. The valueof <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 greaterthan the length of <character string expression>, the LEFT$ string will be the same as the<character string expression>.

Example:B$=LEFT$(A$,4)

Related functions: MID$, RIGHT$

n NOTEThe date can be set in“SYSTEM>INIT>CLOCK” mode.

Page 182: rcx40-pro

165

2

12. Functions

� MID$

Format:

MID$ (<character string expression>, <expression 1>[, <expression 2>])

The value of <expression 1> must be 1 to 75.The value of <expression 2> must be 0 to 75.

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 <expression2> 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 <expression2> is omitted, or if the number of characters to the right of the character of <expression1> is less than the value of <expression 2>, all characters to the right of the characterexpressed by <expression 1> will be extracted. If <expression 1> is longer than the characterstring, MID$ will be a null string.

Example:B$=MID$(A$,2,4)

Related functions: LEFT$, RIGHT$

� RIGHT$

Format:

RIGHT$ (<character string expression>, <expression>)

The value of <expression> must be 0 to 75.

Explanation:This function extracts a character string with the digits specified by <expression> fromthe right end of the character string specified by <character string expression>. The valueof <expression> must be between 0 and 75, otherwise an error will result. If the value of<expression> is 0, then RIGHT$ will be a null string. If the value of <expression> isgreater than the length of <character string expression>, the RIGHT$ string will be thesame as the <character string expression>.

Example:B$=RIGHT$(A$,4)

Related functions: LEFT$, MID$

� 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)

Related functions: VAL

Page 183: rcx40-pro

166

2

12. Functions

� TIME$

Format:

TIME$

Explanation:This function gives the time in the format “hh:mm:ss” (hours, minutes, seconds).

Examples:A$=TIME$PRINT TIME$

Related functions: DATE$, TIMER

n NOTEThe clock can be set in“SYSTEM>INIT>CLOCK” mode.

Page 184: rcx40-pro

167

2

12. Functions

12.3 Point functionsPoint functions are used as elements only for point expressions.

� JTOXY

Format:

JTOXY (<point expression>)

Explanation:This function converts the joint coordinate data (unit: pulses) specified by <pointexpression> into Cartesian coordinate data (unit: mm, deg.) for the main group.

Example:P10=JTOXY(WHERE)

----------- The current position data is converted into Cartesiancoordinate data.

Related functions: XYTOJ

� JTOXY2

Format:

JTOXY2 (<point expression>)

Explanation:This function converts the joint coordinate data (unit: pulses) specified by <pointexpression> into Cartesian coordinate data (unit: mm, deg.) for the sub group.

Example:P10=JTOXY2(WHERE2)

----------- The current position data is converted into Cartesiancoordinate data.

Related functions: XYTOJ2

Format:

� PPNT

Format:

PPNT (palette definition number, palette position number)

Explanation:This function creates point data specified by a pallet definition number and pallet positionnumber.

Example:P10=PPNT(1, 24)

----------- Creates, at point P10, point data specified by pallet positionnumber 24 of pallet definition number 1.

Related functions: PDEF, PMOVE, PMOVE2

n NOTEWhen the command is executed, thedata is converted based on thestandard coordinate, shift coordinateand hand definition that are set.

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• When the command is executed, thedata is converted based on thestandard coordinate, shift coordinateand hand definition that are set.

Page 185: rcx40-pro

168

2

12. Functions

� WHERE

Format:

WHERE

Explanation: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. Point10 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.

Example:P10=WHERE2

----------- The current position is read and assigned to point 10. Point10 is defined in joint coordinates (pulses).

� XYTOJ

Format:

XYTOJ (<point expression>)

Explanation:This function converts the Cartesian coordinate data (unit: mm, deg.) in the main groupspecified by <point expression> into joint coordinate data (unit: pulses).

Example:P10=XYTOJ(P10)

----------- Point data at P10 is converted into joint coordinate data.

Related functions: JTOXY

� XYTOJ2

Format:

XYTOJ2 (<point expression>)

Explanation:This function converts the Cartesian coordinate data (unit: mm, deg.) in the sub groupspecified by <point expression> into joint coordinate data (unit: pulses).

Example:P10=XYTOJ2(P10)

—— Point data at P10 is converted into joint coordinate data.

Related functions: JTOXY2

n NOTEThis function is valid only when thesub group has been set in the systemgeneration.

n NOTEWhen the command is executed, thedata is converted based on thestandard coordinate, shift coordinateand hand definition that are set.On SCARA robots, the converted resultdiffers depending on whether right-handed or left-handed is specified.

n NOTE• This function is valid only when the

sub group has been set in the systemgeneration.

• When the command is executed, thedata is converted based on thestandard coordinate, shift coordinateand hand definition that are set.On SCARA robots, the convertedresult differs depending on whetherright-handed or left-handed isspecified.

Page 186: rcx40-pro

169

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 well

understand the contents.

13.1 OutlineMulti-tasking allows execution of two or more tasks in parallel. However, this does notmean that multiple tasks are simultaneously executed, because the controller has only oneCPU to execute tasks. In multi-tasking, the CPU occupation time is shared among multipletasks by assigning the 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 prioritylevel of task 1 is fixed at 32, while the priority of task 2 to task 8 can be set any levelbetween 17 and 47.

13.2 Task definitionA task is a set of instructions written in a program, which are executed in sequence. In aprogram, tasks are defined by placing a label as shown below.

’MAIN TASK(TASK1)START *IOTASK,T2*ST1:

MOVE P,P1,P0IF DI(20)= 1 THENHALT

ENDIFGOTO *STHALT’SUB TASK(TASK2)*IOTASK:

IF DI(21)=1 THENDO(30)=1

ELSEDO(30)=0

ENDIFGOTO *IOTASKEXIT TASK

Label *IOTASK: to EXIT TASK is a subtask.

Page 187: rcx40-pro

170

2

13. Multi-tasking

13.3 Task status and transitionThere are 6 types of task status.

(1) STOP status

A task is present but the task processing is stopped.

(2) RUN status

A task is present and the task processing is being executed by the CPU.

(3) READY status

A task is present and ready to be allocated to the CPU for task processing.

(4) WAIT status

A task is present and waiting for an event to begin the task processing.

(5) SUSPEND status

A task is present but suspended, while waiting to begin the task processing.

(6) NON EXISTEN status

No tasks exist in the program.

Call

Delete

Resume

Start

Wait condition

Cancel waiting

Stop

Task state transition

STOP

RUN

NON EXISTEN

SUSPEND READY WAIT

CPU assignment

Wait for CPU assignmentSuspend

Page 188: rcx40-pro

171

2

13. Multi-tasking

13.4 Starting tasksTask 1 is called up by a program if present, and put in the RUN status when the programhas started in AUTO mode. To call up the other tasks and put them in the READY status,use the SATRT command.

13.5 Task schedulingTask scheduling determines the priority to be used in allocating tasks in the READYstatus to the CPU and executing them. One task is selected from among tasks in theREADY status and put in the RUN status.When there are two or more tasks which are put in the READY status, ready queues forCPU allocation are used to determine the priority for executing the tasks. The number ofready queues equal the number of task priority levels and supervised by the FCFS (FirstCome First Service). The smaller the number, the higher the task priority level.

Task 1 Task 3

Task 1

Task 4

Task 5

Task 2

Order in which tasks are put in READY status.

Priority level

32

33

34

The head of the task with the highest priority is put in the RUN status.

The task in the RUN status moves to the end of the ready queue when the CPU occupationtime exceeds a specified time or a task with a higher priority level is put in the READYstatus.

Task 1 Task 3

Task 1

Task 4 Task 1

Priority level

32

Page 189: rcx40-pro

172

2

13. Multi-tasking

13.6 Task status flowA task is put in the WAIT state (waiting for an event) when the WAIT command is executedfor that task. At this time, the transition to the READY status does not take place until thewait condition is canceled.

1. When the WAIT command is executed, the following transition happens.

Task for which WAIT command is executed - > WAIT

Task at the head of the ready queue with higher priority - > RUN

2. When an event waited by the task in the WAIT status occurs, the following statustransition takes place by task scheduling.

Task in the WAIT status for which the waited event occurred - > READY

However, if the task put in the READY status was at the head of the ready queuewith the highest priority, the following transition takes place.

Task that is currently in the RUN status - > READY

Task at the head of the ready queue with higher priority - > RUN

Tasks are put in the WAIT status by the following commands.

Wait for axis movement command

Axismovement to be completed

Parameter command

Robot status change command

MOVE, MOVEI, MOVE2, MOVEI2

DRIVE, DRIVEI, DRIVE2, DRIVEI2

PMOVE, PMOVE2

SERVO, SERVO2

WAIT ARM, WAIT ARM2

ACCEL, ARCH, AXWGHT, DECEL, OUTPOS, TOLE

ACCEL2, ARCH2, AXWGHT2, DECEL2, OUTPOS2, TOLE2

ORGORD, WEIGHT, ORGORD2, WEIGHT2

CHANGE, SHIFT, CHANGE2, SHIFT2

LEFTY, RIGHTY, LEFTY2, RIGHTY2

ASPEED, SPEED, ASPEED, SPEED2

DELAY, SET (Time should be specified.), WAIT (Time should be

specified.)

WAIT

SEND

PRINT

INPUT

Wait for time to elapse

Wait for condition to be met

Wait for data to send or to be received

Wait for print buffer to become empty

Wait for key input

Event Command

The tasks are not put in the WAIT status if the event has been established before the abovecommands are executed.

n NOTEIf multiple tasks are in the WAIT statuswaiting for the same condition event,or different condition events occursimultaneously, all tasks for which thewaited events occur are put in theREADY status.

Page 190: rcx40-pro

173

2

13. Multi-tasking

13.7 Suspending and restarting tasksThe SUSPEND command temporarily stops tasks other than task 1 and put them in theSUSPEND status. The SUSPEND command cannot be used for task 1.When the SUSPEND command is executed, the status transition takes place as follows.

Task that executed the SUSPEND command - > RUN

Specified task - > SUSPEND

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

13.8 Deleting tasksTasks can delete themselves by using the EXIT TASK command and set to the NONEXISTEN (no task registration) status. The EXIT TASK command cannot be used fortask 1.When the EXIT TASK command is executed, the status transition takes place as follows.

Task that executed the EXIT TASK command - > NON EXISTEN

Task at the head of the ready queue with higher priority - > RUN

A task can also be deleted and put in the NON EXISTEN (no task registration) status bythe 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

13.9 Stopping tasksAll tasks stop if any of the following cases occurs.

(1) HALT command is executed.

The program is reset and all tasks other than task 1 are put in the NON EXISTENstatus. Task 1 is put in the STOP status.

(2) HOLD command is executed.

All tasks are put in the STOP status. When the program is restarted, the tasks in theSTOP status set to the READY or SUSPEND status.

(3) STOP key on the programming pendant (MPB) is pressed or the interlock signal iscut off.

Just as in the case where the HOLD command is executed, all tasks are put in theSTOP status. When the program is restarted, the tasks in the STOP status set to theREADY or SUSPEND status.

(4) When the emergency stop switch on the programming pendant (MPB) is pressedor the emergency stop signal is cut off.

All tasks are put in the STOP status. At this point, the power to the robot is shut offand the servo sets to the non-hold state. After the canceling emergency stop, whenthe program is restarted, the tasks in the STOP status set to the READY orSUSPEND status. To turn back on the power to the robot, another processing isrequired.

n NOTEWhen the SUSPEND command isexecuted for a task that is in the WAITstatus, the command being executedwith the specified task is terminated.

n NOTEWhen the program is restarted withoutbeing reset after the tasks have beenstopped by a cause other than (1),each task is processed from the statusin which the task stopped. This holdstrue when the power to the controlleris turned off and then turned on.

Page 191: rcx40-pro

174

2

13. Multi-tasking

13.10 Multi-task program exampleEach task in a multi-task program is processed according to the task scheduling.

’TASK1START *ST2,T2START *ST3,T3*ST1:

DO(20) = 1WAIT MO(20) = 1MOVE P,P1,P2,Z=0IF MO(21)=1 THEN *FIN

GOTO *ST1*FIN:CUT T2HALT’TASK2*ST2:

IF DI(20) = 1MO(20) = 1DELAY 100

ELSEMO(20) = 0

ENDIFGOTO *ST2EXIT TASK’TASK3*ST3:

IF DI(21) = 0 THEN *ST3IF DI(30) = 0 THEN *ST3IF DI(33) = 0 THEN *ST3MO(21) = 1

EXIT TASK

13.11 Sharing the dataPoint data, shift coordinate definition data, hand definition data and pallet definition dataand all variables including global variables are shared between all tasks.Execution of each task can be controlled while using the same variables and data sharedwith the other tasks. In this case, however, use sufficient caution when rewriting the variableand data because improper changes may cause troubles in the task processing.

n NOTEWhen the same variables and data areused in two or more tasks, usesufficient caution when rewriting thevariable and data. Improper changesmay cause troubles in the taskprocessing.

Page 192: rcx40-pro

175

14. Command statement list

Type of statement

Array declaration

statement

Function definition

statement

Point definition

Pallet definition

Shift coordinate

definition

Reference to global

variable

Reference to external

symbol

Main robot hand

definition

Sub robot hand

definition

Arithmetic assignment

statement

Character string

assignment statement

Point assignment

statement

Shift assignment

statement

Jump

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

DIM <array definition>[,<array definition>...]

DIM A%(10)

DIM B(2,2,2)

DIM C$(5)

DEF FN<name>[ % ] [(<argument>,<argument>...)]

!

$

=<function definition statement>

DEF FNAPAI=3.141592

DEF FNASIN(X)=ATN(X/SQR(-X^2+1))

Pm=x y z r a b

P123=100.00 200.00 0.00 0.00 0.00 0.00

PDEF(m)=nx, ny, nz

PDEF(1)=3, 4, 5

Sm=x y z r

S0=-123.45 123.45 123.45 123.45

SHARED <simple variable>[()] [,<simple variable>[()]...]

SHARED X!,Y!,D!()

DECLARE <label>[,<label>...]

DECLARE SUB <label>[(<argument>[,<argument>....])]

DECLARE *DISTANCE,*AREA

DECLARE SUB*COMPARE

DECLARE SUB *AREA(X!,Y!)

HAND Hn=<constant 1><constant 2> <constant 3>[R]

HAND H1= 0 150.0 0.0

HAND H2= 45.0 20.0 0.0 R

HAND2 Hn=<constant 1><constant 2> <constant 3>[R]

HAND2 H5= 0 150.0 0.0

HAND2 H6= 45.0 20.0 0.0 R

[LET] <variable>=<expression>

A=10

B(0)=10.05

LOCX(P1)=A(1)

LOCX(S1)=100.00

[LET] <character string variable>=<character string expression>

A$="YAMAHA"

B$(1)=A$+" ROBOT"

[LET] Pm=<point expression>

P1=P100

P[A]=P200+P5

P[START_POINT]=P300

[LET] Sm=<shift expression>

S1=S0

S[A]=-S1+S2

GOTO <label>

GO TO

GOTO *LOOP

Executable condition (*1)

6

6

1

1

5

6

6

5

5

1

1

1

5

6

c CAUTION(*1) Executable conditions are asfollows:Condition 1:These commands can be executedwith direct command and onlinecommands.Condition 2:In addition to condition 1, thesecommands can also be executed intask 1 (main task).Condition 3:In addition to condition 1, commandscontaining an operand part of whichcannot be executed with direct andonline commands are executable.Condition 4:In addition to condition 5, the MOVEL and MOVE C can be executed intask 1 (main task). (These cannot beexecuted with direct command andonline commands.)Condition 5:In addition to condition 1, thesecommands can also be executed afterpositioning is complete.Condition 6:These commands cannot be executedwith direct command and onlinecommands

• One numerical variable uses 4 bytesof the object memory, while onecharacter variable uses 84 bytes of theobject memory.

• Defining an array variable with theDIM statement reserves the arrayvariable space on the memory.

Page 193: rcx40-pro

176

2

14. Command statement list

Type of statement

Decision

Multiple decision

Subroutine

Conditional jump

Conditional subroutine

call

Format

Example

Format

Example

Format

Example

Format

Example

Example

Format

Example

Format

IF<expression>THEN <label> [ELSE <label> ]

<statement> <statement>

IF A=1 THEN *PRGEND

IF A=1 THEN *L1 ELSE *L2

IF A=1 THEN PRINT “OK”

IF A=1 THEN MOVE P,P1 ELSE MOVE P,P2

IF <expression> [THEN]

:

[ELSEIF]

:

[ELSE]

:

ENDIF

IF DI3(1)=1 THEN

MOVE P,P1

DO(30)=1

ELSE

MOVE P,P2

DO(30)=0

ENDIF

SELECT[CASE]<expression>

CASE<list 1 of expression>

[block 1]

[CASE<list 2 of expression>

[block 2]]

:

:

[CASE ELSE

[blockn]]

END SELECT

SELECT CASE DI3()

CASE 1

CALL *EXEC(1,10)

CASE 2

CALL *EXEC(21,30)

CASE ELSE

GOTO *FIN

END SELECT

GOSUB <label>

GO SUB

:

<label>:

:

RETRUN

GOSUB *SUBROUTIN

:

*SUBROUTIN:

:

RETURN

ON <expression> GOTO <label> [,<<label>...]

GO TO

ON A GOTO *L10,*L20,*L30

ON <expression> GOSUB <label> [,<<label>,...]

GO SUB

ON A GOSUB *SB10,*SB20,*SB30

Executable condition (*1)

6

6

6

6

6

6

Page 194: rcx40-pro

177

2

14. Command statement list

Type of statement

Loop

Exit from loop

Conditional loop

Sub-procedure call

Sub-procedure definition

Exit form sub-procedure

Error processing

Pause

Operation quitting

Program switching

Format

Example

Format

Format

Example

Example

Example

Example

Format

Format

Format

Example

Format

Format

Example

Format

Example

Format

Format

Example

FOR <variable>=<expression 1> TO <expression 2> [STEP expression 3>]

:

NEXT <variable>

FOR A=10 TO 4 STEP -2

:

NEXT A

EXIT FOR

FOR A=10 TO 20

:

IF DI(20)=1 THEN

EXIT FOR

ENDIF

:

NEXT A

WHILE <expression>

:

WEND

WHILE A>10

:

WNED

CALL <label>[(real argument,[real argument[,...]])]

CALL *DISTANCE

CALL *AREA(2.5,X!,REF Y!)

SUB <label>[(<dummy argument> [,<dummy argument>...])]

:

END SUB

SUB *DISTANCE(X!,Y!,D!)

:

END SUB

EXIT SUB

EXIT SUB

ON ERROR GOTO <label>

0

:

RESUME [ NEXT ]

<label>

ON ERROR GOTO *ER1

:

*ER1:

IF ERR=&H0604 THEN

ON ERROR GOTO 0

ENDIF

RESUME NEXT

HOLD[ <expression> ]

<character string>

HOLD

HOLD "ERROR STOP"

HALT[ <expression> ]

<character string>

HALT

HALT "PROGRAM STOP"

SWI <Program name>

SWI <ABC>

Executable condition (*1)

6

6

6

6

6

6

6

6

6

2

Page 195: rcx40-pro

178

2

14. Command statement list

Type of statement

Main robot absolute

movement

Main robot relative

movement

Main group absolute

movement

Main group relative

movement

Main group servo control

Wait for condition

Format

Format

Example

Format

Example

Example

Example

Format

Format

Example

Format

Example

MOVE P <point definition> [,<option> [,<option>...]]

PTP

L

C

MOVE P,P100

MOVE L,100.00 100.00 200.00 0.00 0.00 0.00

MOVE P,P[A],P10+P20,S=70,Z=0

MOVE P,P1,STOPON DI3(0)=1

MOVE C,P1,P2,S=50

MOVE L,P1,STOPON DI3(1)=1

MOVEI P,<point definition>[,<option>[,<option>...]]

MOVEI P,P100

MOVEI P,100.00 100.00 200.00 0.00 0.00 0.00

DRIVE (<expression>, <expression> ) [, (<expression>, <expression> )....] [,<option>...]

<point expression> <point expression>

DRIVE (1,100.00)

DRIVE (2,100.00),(3,50.00)

DRIVE (A,P10), S=10

DRIVEI (<expression>, <expression> ) [, (<expression>, <expression> )....] [,<option>...]

<point expression> <point expression>

DRIVEI (1,100.00)

DRIVEI (2,100.00),(3,50.00)

DRIVEI (A,P10), S=10

SERVO ON [(<expression>)]

OFF

FREE

PWR

SERVO ON

SERVO OFF

SERVO FREE(2)

SERVO PWR

WAIT<conditional expression> [,<expression>]

WAIT ARM [(<expression>)]

ARM2

WAIT DI2()=&B10101011

WAIT DI2(3,1)=&B10,1000

WAIT DI(17,15,13,10)=&H0C

WAIT DO2(3,1)=&B10 AND DI1(7)=1

WAIT ARM

WAIT ARM2(1)

Executable condition (*1)

4

5

5

5

5

6

Page 196: rcx40-pro

179

2

14. Command statement list

Type of statement

Sub robot absolute

movement

Sub robot relative

movement

Sub group absolute

movement

Sub group relative

movement

Sub group servo control

DO output

MO output

TO output

LO output

SO output

SET statement

Format

Format

Example

Example

Format

Format

Example

Format

Example

Example

Example

Format

Example

Format

Example

Format

Example

Format

Format

Format

Example

Example

MOVE2 P,<point definition>[,<option>[,<option>...]]

MOVE2 P,P100

MOVE2 P,100.00 100.00 200.00 0.00 0.00 0.00

MOVE2 P,P[A],P10+P20,S=70,Z=0

MOVE2 P,P1,STOPON DI3(0)=1

MOVEI2 P,<point definition>[,<option>[,<option>...]]

MOVEI2 P,P100

MOVEI2 P,100.00 100.00 200.00 0.00 0.00 0.00

DRIVE2 (<expression>, <expression> ) [, (<expression>, <expression> )....] [,<option>....]

<point expression> <point expression>

DRIVE2 (1,100.00)

DRIVE2 (2,100.00),(3,50.00)

DRIVE2 (A,P10), S=10

DRIVEI2 (<expression>, <expression> ) [, (<expression>, <expression> )....] [,<option>....]

<point expression> <point expression>

DRIVEI2 (1,100.00)

DRIVEI2 (2,100.00),(3,50.00)

DRIVEI2 (A,P10), S=10

SERVO2 ON [(<expression>)]

OFF

FREE

PWB

SERVO2 ON

SERVO2 OFF

SERVO2 FREE(2)

<DO variable>=<expression>

DO2()=&B10111000

DO2(7,5)=2

DO(27,25,23,20)=&H0C

<MO variable>=<expression>

MO2()=&B10111000

MO2(7,5)=2

MO(27,25,23,20)=&H0C

<TO variable>=<expression>

TO0()=&B10111000

TO0(7,5)=2

TO(07,05,03,00)=&H0C

<LO variable>=<expression>

LO0()=&B10111000

LO0(7,5)=2

LO(07,05,03,00)=&H0C

<SO variable>=<expression>

SO2()=&B10111000

SO2(7,5)=2

SO(27, 25,23,20)=&H0C

SET <DO variable> [,<expression>]

<MO variable>

<TO variable>

<LO variable>

<SO variable>

SET DO2(7,5,0)

SET MO(27,25,23,20),1000

SET TO0()

SET LO0(7,5)

Executable condition (*1)

5

5

5

5

5

1

1

1

1

1

3

Page 197: rcx40-pro

180

2

14. Command statement list

Type of statement

RESET statement

PRINT statement

INPUT statement

Communications

DELAY statement

Main robot speed setting

statement

Main group OUT

effective position setting

Main group tolerance

setting

Main group acceleration

setting

Main group deceleration

setting

Main robot weight

parameter setting

Main group axis tip

weight setting

Main group arch position

setting

Format

Example

Format

Format

Example

Format

Example

Example

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Format

Format

Example

Example

RESET <DO variable>

<MO variable>

<TO variable>

<LO variable>

<SO variable>

RESET DO2()

RESET MO(27,25,20)

RESET TO0(7,5,6,1)

RESET LO(07,05,00)

PRINT [<expression>][ , <expression>][ , ]

; ;

PRINT "COUNT=";C,"TIME=";T

PRINT A$

PRINT "P10=";P10

PRINT S[A]

INPUT [<prompt statement> ; ] <variable>[,<variable>...]

,

INPUT A

INPUT "FILE NAME=";F_NAME$

INPUT "P10=";P10

SEND <file 1> TO <file 2>

SEND PGM TO CMU

SEND <000000> TO CMU

SEND CMU TO P10

DELAY <expression>

DELAY 1000

DELAY A*10

SPEED <expression>

SPEED 70

SPEED A*10

OUTPOS <expression>

OUTPOS (<expression>)=<expression>

OUTPOS=1000

OUTPOS(1)=100

TOLE <expression>

TOLE (<expression>)=<expression>

TOLE 20

TOLE(1)=10

ACCEL <expression>

ACCEL(<expression>)=<expression>

ACCEL 100

ACCEL(1)=100

DECEL <expression>

DECEL(<expression>)=<expression>

DECEL 100

DECEL(1)=100

WEIGHT <expression>

WEIGHT 10

WEIGHT A

AXWGHT(<expression>)=<expression>

AXWGHT(1)=100

AXWGHT(ANO)=B

ARCH <expression>

ARCH(<expression>)=<expression>

ARCH 1000

ARCH(ANO)=B

Executable condition (*1)

1

1

1

1

6

5

5

5

5

5

5

5

5

Page 198: rcx40-pro

181

2

14. Command statement list

Type of statement

Main robot automatic

speed setting

Sub robot speed setting

statement

Sub group OUT effective

position setting

Sub group tolerance

setting

Sub group acceleration

setting

Sub group deceleration

setting

Sub robot weight

parameter setting

Sub group axis tip

weight setting

Sub group arch position

setting

Sub robot automatic

speed setting

Communication mode

selection

Main robot shift

coordinate selection

Main robot arm selection

Main robot hand

selection

Sub robot shift

coordinate selection

Sub robot arm selection

Format

Format

Example

Example

Format

Example

Format

Format

Example

Format

Example

Format

Example

Example

Example

Format

Example

Format

Example

Format

Format

Example

Format

Example

Format

Format

Format

Example

Example

Example

ASPEED <expression>

ASPEED 70

ASPEED A*10

SPEED2 <expression>

SPEED2 70

SPEED2 A*10

OUTPOS2 <expression>

OUTPOS2(<expression>)=<expression>

OUTPOS2 1000

OUTPOS2(1)=100

TOLE2 <expression>

TOLE2(<expression>)=<expression>

TOLE2 20

TOLE2(1)=10

ACCEL2 <expression>

ACCEL2(<expression>)=<expression>

ACCEL2 100

ACCEL2(1)=100

DECEL2 <expression>

DECEL2(<expression>)=<expression>

DECEL2 100

DECEL2(1)=100

WEIGHT2 <expression>

WEIGHT2 10

WEIGHT2 A

AXWGHT2(<expression>)=<expression>

AXWGHT2(1)=100

AXWGHT2(ANO)=B

ARCH2 <expression>

ARCH2(<expression>)=<expression>

ARCH2 1000

ARCH2(ANO)=B

ASPEED2 <expression>

ASPEED2 70

ASPEED2 A*10

ONLINE

OFFLINE

ONLINE

OFFLINE

SHIFT <shift variable>

SHIFT S1

SHIFT S[A]

LEFTY

RIGHTY

LEFTY

RIGHTY

CHANGE Hn

CHANGE H2

SHIFT2 <shift variable>

SHIFT2 S1

SHIFT2 S[A]

LEFTY2

RIGHTY2

LEFTY2

RIGHTY2

Executable condition (*1)

5

5

5

5

5

5

5

5

5

5

1

5

5

5

5

5

Format

Example

Page 199: rcx40-pro

182

2

14. Command statement list

Type of statement

Sub robot hand selection

Task start

Task priority change

Task stop

Task pause

Task restart

Task quitting

Comment

Label statement

Format

Format

Example

Example

Format

Example

Format

Example

Format

Example

Format

Example

Format

Example

CHANGE2 Hn

CHANGE2 H5

START <label>,Tn [,p]

START *IOTASK,T2

CHGPRI Tn, p

CHGPRI T2, 33

CUT Tn

CUT T2

SUSPEND Tn

SUSPEND T2

RESTART Tn

RESTART T2

EXIT TASK

EXIT TASK

REM <comment>

’SUBROUTINE***

*<label>:

*L10:

Executable condition (*1)

5

6

6

6

6

6

6

6

6

Format

Format

Example

Example

Page 200: rcx40-pro

183

15. Robot language function list

15.1 Arithmetic functions

DI

DO

MO

TO

LO

SO

Array variable

Point element

variable

Shift element

variable

ABS

ACCEL

ACCEL2

ARCH

ARCH2

ARMCND

ARMCND2

ARMTYPE

ARMTYPE2

ATN

AXWGHT

AXWGHT2

COS

DECEL

DECEL2

DEGRAD

DIST

ERL

ERR

INT

LEN

LSHIFT

ORD

OUTPOS

OUTPOS2

RADDEG

RSHIFT

SIN

SQR

(1)DIm([b,...,b])

(2)DI(mb,...,mb)

(1)DOm([b,...,b])

(2)DO(mb,...,mb)

(1)MOm([b,...,b])

(2)MO(mb,...,mb)

(1)TOm([b,...,b])

(2)TO(mb,...,mb)

(1)LOm([b,...,b])

(2)LO(mb,...,mb)

(1)SOm([b,...,b])

(2)SO(mb,...,mb)

variable(<expression>,[<expression>,[<expression>]])

LOCx(<point expression>)

LOCx(<shift expression>)

ABS(<expression>)

ACCEL(<expression>)

ACCEL2(<expression>)

ARCH(<expression>)

ARCH2(<expression>)

ARMCND

ARMCND2

ARMTYPE

ARMTYPE2

ATN(<expression>)

AXWGHT(<expression>)

AXWGHT2(<expression>)

COS(<expression>)

A(0)=COS(DEGRAD(45))

DCCEL(<expression>)

DECEL2(<expression>)

DEGRAD (<expression>)

DIST (<point expression>,<point expression>)

ERL

ERR

INT(<expression>)

LEN(<character string expression>)

LSHIFT(<expression>,<expression>)

ORD(<character string expression>)

OUTPOS(<expression>)

OUTPOS2(<expression>)

RADDEG (<expression>)

RSHIFT(<expression>,<expression>)

SIN(<expression>)

SQR(<expression>)

A=DI0()

A=DI2(7,5,0)

A=DI(37,35,25,20)

DO2()=&B10101010

DO(37,35,23,20)=&H0C

MO2()=&B10101010

MO(37,35,23,20)=&H0C

TO0()=&B10101010

TO(07,05,03,00)=&H0C

LO0()=&B10101010

LO(07,05,03,00)=&H0C

SO2()=&B10101010

SO(37,35,23,20)=&H0C

A(0)=12345.67

B(0,2,1)=A(0)

LOCX(P0)=123.45

LOCY(P0)=LOCY(P[A])+LOCY(P[B])

LOCX(S0)=100.00

LOCR(S[A])=LOCR(S9)

A(0)=ABS(-123.45)

A(1)=ABS(B/2+C)

IF ACCEL(1)=50 THEN *ABC

LOCX(P[B])=ACCEL2(1)

IF ARCH(1)=500 THEN *ABC

B=ARCH2(I%)

IF ARMCND=0 THEN *L

IF ARMCND2=0 THEN *L

IF ARMTYPE=0 THEN *ABC

IF ARMTYPE2=0 THEN *ABC

A(0)=ATN(0.5)

A(1)=ATN(Y/X)

B%(D%)=AXWGHT(D%)

B%(D%)=AXWGHT2(D%)

A(0)=COS(DEGRAD(45))

A(1)=B*COS(C)

IF DECEL(1)=50 THEN *ABC

LOCX(P[ B] )=DECEL2(1)

A=COS(DEGRAD(30))

A=DIST(P0,P1)

IF ERL=20 THEN RESUME NEXT

IF ERR<>&H604 THEN HALT

B=INT(-1.233)

B=LEN(A$)

A=LSHIFT(B(0),2)

A=ORD("B")

IF OUTPOS(1)=500 THEN *ABC

A(B)=OUTPOS2(B)

A=RADDEG(ATN(B))

A=RSHIFT(B(0),2)

A(0)=SIN(DEGRAD(60))

A(1)=SIN(B*2+C)

A(0)=SQR(4)

A(1)=SQR(B+C+D)

Format ExampleType of function

or variable

Page 201: rcx40-pro

184

2

15. Robot language function list

TAN

TIMER

TOLE

TOLE2

VAL

WEIGHT

WEIGHT2

MCHREF

MCHREF2

System flag variable

10ms counter variable

TAN(<expression>)

TIMER

TOLE(<expression>)

TOLE2(<expression>)

VAL(<character string expression>)

WEIGHT

WEIGHT2

MCHREF(<expression>)

MCHREF2(<expression>)

_SYSFLG

TCOUNTER

A(0)=TAN(DEGRAD(45))

A(1)=B+TAN(C)

A%=TIMER

IF TOLE(1)=10 THEN *ABC

A%=TOLE2(1)

A=VAL("&B10001")

IF WEIGHT=0 THEN *ABC

IF WEIGHT2=0 THEN HALT "ERROR"

B=MCHREF(2)

IF MCHREF2(1) >60 THEN *ABC

_SYSFLG=1

A=TCOUNTER

Format ExampleType of function

or variable

Page 202: rcx40-pro

185

2

15. Robot language function list

15.2 Character array function

CHR$

DATE$

LEFT$

MID$

RIGHT$

STR$

TIME$

CHR$(<expression>)

DATE$

LEFT$(<character string expression>,<expression>)

MID$(<character string expression>,<expression>[,<expression>]

RIGHT$(<character string expression>,<expression>)

STR$(<expression>)

TIME$

A$=CHR$(A)

PRINT DATE$

C$=LEFT$(A$.4)

D$=MID$(A$,4,2)

B$=RIGHT$(A$,4)

A$=STR$(10.01)

PRINT TIME$

Format ExampleType of function

or variable

15.3 Point function

JTOXY

JTOXY2

WHERE

WHERE2

XYTOJ

XYTOJ2

PPNT

JTOXY(<point expression>)

JTOXY2(<point expression>)

WHERE

WHERE2

XYTOJ(<point expression>)

XYTOJ2(<point expression>)

PPNT(<pallet definition number>,<pallet position number>)

P10=JTOXY(WHERE)

P10=JTOXY2(WHERE2)

P0=WHERE

P0=WHERE2

P10=XYTOJ(P10)

P10=XYTOJ2(P10)

P10=PPNT(1, 5)

Format ExampleType of function

or variable

Page 203: rcx40-pro

186

16. Data file description

There are 26 different types of data files.

1. Program file

2. Point file

3. Point comment file

4. Parameter file

5. Shift coordinate definition file

6. Hand definition file

7. Pallet definition file

8. All file

9. Program directory file

10. Parameter directory file

11. Variable file

12. Constant file

13. Array variable file

14. DI file

15. DO file

16. MO file

17. LO file

18. TO file

19. SI file

20. SO file

21. Error message file

22. Machine reference file

23. EOF file

24. Serial port communication file

25. SIW file

26. SOW file

This section explains data files used with a SEND statement and READ/WRITE online commands.

n NOTE• All data is handled as character

strings conforming to ASCII charactercodes.

• No lower case alphabetic charactersmay be used in command statements.

Page 204: rcx40-pro

187

2

16. Data file description

16.1 Program file

16.1.1 All programs

Format:

PGM

• Expresses all programs.

• When used as a readout file, all programs currently stored are read out.

• When used as a write file, writing is performed with a program name.

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]

� Program names are shown with 8 characters or less consisting of alphanumericcharacters and underscore ( _ ).

� “a” indicates a character code.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

� A TAB code is converted to a space.

Example:SEND PGM TO CMU

----------- Outputs all programs from communication port as shownbelow.

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]

Page 205: rcx40-pro

188

2

16. Data file description

16.1.2 One program

Format:

<program name>

• Expresses a specified program.

• Program name may be up to 8 characters consisting of alphanumeric charactersand 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 onthe data.

Data format:

NAME=program name[cr/lf]aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf] :aaaaa…..aaaaaaaaaaaaaaaaaaaaaaaaaaaaa[cr/lf][cr/lf]

� The program name is shown with 8 characters or less consisting of alphanumericcharacters and underscore ( _ ).

� “a” indicates a character code.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

� A TAB code is converted to a space.

Example:SEND <TEST1> TO CMU

----------- Outputs the program “TEST1” from communication port asshown below.

SEND CMU TO <TEST1>----------- Inputs the program “TEST1” from communication port as

shown below.Response:

NAME=TEST1[cr/lf]A=1[cr/lf]RESET DO2()[cr/lf] :HALT[cr/lf][cr/lf]

n NOTE• When the current mode is “AUTO” or

“PROGRAM” mode, and writing intothe currently selected program is notpossible.

• When a sequence program is beingexecuted, writing into the programname “SEQUENCE” is not possible.

• If there is no NAME statement used tospecify a program, writing into theprogram is not possible.

Page 206: rcx40-pro

189

2

16. Data file description

16.2 Point file

16.2.1 All points

Format:

PNT

• Expresses all point data.

• When used as a readout file, all points currently stored are read out.

• When used as a write file, writing is performed with a point number.

Data format:

Pmmmm= fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]Pmmmm= fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf] :Pmmmm= fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]Pmmmm= fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf][cr/lf]

� “mmmm” represents a number from 0 to 4000.

� “f” represents a +, - or space.

� “xxxxxx”, “yyyyyy” … “bbbbbb” represent a numeric value of 8 digits or less.When a dot (decimal point) is included, this is treated as point data in “mm” units.Each piece of data is separated by one or more spaces.

� “t” is for an extended function. Not currently used.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

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] :P4000= -1.00 0.00 0.00 0.00 0.00 0.00[cr/lf][cr/lf]

Page 207: rcx40-pro

190

2

16. Data file description

16.2.2 One point

Format:

Pmmmm

• Expresses a specified point.

• “mmmm” must be from 0 to 4000

Data format:

Pmmmm= fxxxxxx fyyyyyy fzzzzzz frrrrrr faaaaaa fbbbbbb t [cr/lf]

� “mmmm” is from 0 to 4000.

� “f” represents a +, - or space.

� “xxxxxx”, “yyyyyy” … “bbbbbb” represent a numeric value of 8 digits or less.When a dot (decimal point) is included, this is treated as point data in “mm” units.Each piece of data is separated by one or more spaces.

� “t” is for an extended function. Not currently used.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line may be up to 75 characters long.

Example:SEND P100 TO CMU

----------- Outputs the specified point from communication port asshown 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]

n NOTEIntegers indicate point data in “pulse”units, and real numbers (containing adecimal point) in “mm” units.

Page 208: rcx40-pro

191

2

16. Data file description

16.3 Point comment file

16.3.1 All point comments

Format:

PCM

• Expresses all point comments.

• When used as a readout file, all point comments currently stored are read out.

• When used as a write file, writing is performed with a point comment number.

Data format:

PCmmmm= sssssssssssssss[cr/lf]PCmmmm= sssssssssssssss[cr/lf] :PCmmmm= sssssssssssssss[cr/lf]PCmmmm= sssssssssssssss[cr/lf][cr/lf]

� “mmmm” represents a number from 0 to 4000.

� “ss…ss” represents comment data. Comment data exceeding 15 characters isignored.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND PCM TO CMU

----------- Outputs all point comments from communication port asshown 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]

Page 209: rcx40-pro

192

2

16. Data file description

16.4 Parameter file

16.4.1 All parameters

Format:

PRM

• Expresses all parameters (including settings in “UTILITY” mode).

• When used as a readout file, all parameters currently stored are read out.

• When used as a write file, only the parameters specified by parameter labels arewritten.

Data format:

/parameter label/ ’ <comment> [cr/lf]RC= xxxxxx [cr/lf]/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]

� Parameter labels are shown with 6 alphabetic characters.

� The description of each parameter is shown in <comment>.

� “RC=” indicates the entire controller.

� “R1=” indicates the main robot, and “R2=” the sub robot.

� “A1=” to “An=” indicate axis numbers from axis 1 to axis n.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

n NOTE• Parameters can be written only when

the axis servo is off.• Parameters are verified to be

compatible with an upper version.However, compatibility with a lowerversion may not always bemaintained.

Page 210: rcx40-pro

193

2

16. Data file description

Example:SEND PRM TO CMU

----------- Outputs all parameters from communication port as shownbelow.

SEND CMU TO PRM----------- Inputs all parameters from communication port as shown

below.Response:

/RBTNUM/ ’Robot number(V8.01/R1001)[cr/lf] R1= 3000 R2= 3010[cr/lf]/AXES / ’Number of axes[cr/lf] R1= 2 R2= 2[cr/lf]/AXSNUM/ ’Axis number(V1.01/V1.01/V1.01/V1.01/-----/-----/-----/-----/)[cr/lf] A1= 5000 A2= 5001 A3= 5010 A4= 5011[cr/lf] A5= 0 A6= 0 A7= 0 A8= 0[cr/lf]/ATTRIB/ ’Axis attribute[cr/lf] A1= 33792 A2= 33792 A3= 33792 A4= 33792[cr/lf] A5= 256 A6= 256 A7= 256 A8= 256[cr/lf]/WEIGHT/ ’Tip weight[kg][cr/lf] R1= 2 R2= 12[cr/lf]

:/CURPNO/ ’Port number of output[cr/lf] RC= 20[cr/lf]/CURPT1/ ’Compare point number1[cr/lf] RC= 0[cr/lf]/CURPT2/ ’Compare point number2[cr/lf] RC= 0[cr/lf][cr/lf]

Page 211: rcx40-pro

194

2

16. Data file description

16.4.2 One parameter

Format:

/parameter label/

• Expresses a parameter label with 6 alphabetic characters.

• When used as a readout file, only the parameter specified by a parameter label isread out.

• When used as a write file, only the parameter specified by a parameter label iswritten.

Data format:

/parameter label/ ’ <comment> [cr/lf]RC= xxxxxx [cr/lf][cr/lf] or/parameter label/ ’ <comment> [cr/lf]R?= xxxxxx [cr/lf][cr/lf] or/parameter label/ ’ <comment> [cr/lf]A?= xxxxxx[cr/lf][cr/lf]

� The parameter label is shown with 6 alphabetic characters.

� The description of each parameter is shown in <comment>.

� “RC=” indicates the entire controller.

� “R1=” indicates the main robot, and “R2=” the sub robot.

� “A1=” to “An=” indicate axis numbers from axis 1 to axis n.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND /ACCEL / TO CMU

----------- Outputs the acceleration parameter from communication portas shown below.

SEND CMU TO /ACCEL /----- ------ Inputs the acceleration parameter from communication port

as shown below.Response:

/ACCEL / ’Accel coefficient[%]A1= 100 A2= 100 A3= 100 A4= 100[cr/lf][cr/lf]

n NOTE• Parameters can be written only when

the axis servo is off.• Parameters are verified to be

compatible with an upper version.However, compatibility with a lowerversion may not be maintained.

Page 212: rcx40-pro

195

2

16. Data file description

16.5 Shift coordinate definition file

16.5.1 All shift data

Format:

SFT

• Expresses all shift data.

• When used as a readout file, all shift data currently stored are read out.

• When used as a write file, writing is performed with a shift number.

Data format:

Sm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]{SPm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]}{SMm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]} :Sm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]{SPm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]}{SMm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]}[cr/lf]

� “m” represents a number from 0 to 9.

� “f” represents a +, - or space.

� “xxxxxx”, “yyyyyy” … “rrrrrr” represent a numeric value of 8 digits or less, having2 or less places below the decimal point.

� Data enclosed by { } is shown depending on the data input.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND SFT TO CMU

----------- Outputs all shift data from communication port as shownbelow.

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]

Page 213: rcx40-pro

196

2

16. Data file description

16.5.2 One shift definition

Format:

Sm

• Expresses a specified shift definition.

• “m” must be from 0 to 9.

Data format:

Sm = fxxxxxx fyyyyyy fzzzzzz frrrrrr [cr/lf]

� “m” is from 0 to 9.

� “f” represents a +, - or space.

� “xxxxxx”, “yyyyyy” … “rrrrrr” represent a numeric value of 8 digits or less, having2 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 fromcommunication 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]

Page 214: rcx40-pro

197

2

16. Data file description

16.6 Hand definition file

16.6.1 All hand data

Format:

HND

• Expresses all hand data.

• When used as a readout file, all hand data currently stored are read out.

• When used as a write file, writing is performed with a hand number.

Data format:

Hm = fxxxxxx fyyyyyy fzzzzzz {R} [cr/lf] :Hm = fxxxxxx fyyyyyy fzzzzzz {R} [cr/lf][cr/lf]

� “m” represents a number from 0 to 7. H0 to H3 are used for the main robot, and H4to H7 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.

� {R} indicates whether a hand is attached to the R-axis.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND HND TO CMU

----------- Outputs all hand data from communication port as shownbelow.

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]

Page 215: rcx40-pro

198

2

16. Data file description

16.6.2 One hand definition

Format:

Hm

• Expresses a specified hand definition.

• “m” must be from 0 to 7.

Data format:

Hm = fxxxxxx fyyyyyy fzzzzzz {R} [cr/lf]

� “m” is from 0 to 7. H0 to H3 are used for the main robot, and H4 to H7 for the subrobot.

� “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.

� {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 fromcommunication 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]

Page 216: rcx40-pro

199

2

16. Data file description

16.7 Pallet definition file

16.7.1 All pallet definitions

Format:

PLT

• Expresses all pallet definitions.

• When used as a readout file, all pallet definitions currently stored are read out.

• When used as a write file, writing is performed with a pallet number.

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]

� “m” represents a number from 0 to 19.

� “nnn” represents a positive integer.

� “f” represents a +, - or space.

� “xxxxxx”, “yyyyyy” … “bbbbbb” represent a numeric value of 8 digits or less.When a dot (decimal point) is included, this is treated as point data in “mm” units.Each piece of data is separated by one or more spaces.

� “t” is for an extended function. Not currently used.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Page 217: rcx40-pro

200

2

16. Data file description

Example:SEND PLT TO CMU

----------- Outputs all pallet definitions from communication port asshown below.

SEND CMU TO PLT----------- Inputs all pallet definitions from communication port as shown

below.Response:

PL0[cr/lf]PLN=XY[cr/lf]NX= 1[cr/lf]NY= 1[cr/lf]NZ= 1[cr/lf]P[1]= 1 0 0 0 0 0[cr/lf]P[2]= 2 0 0 0 0 0[cr/lf]P[3]= 3 0 0 0 0 0[cr/lf]P[4]= 4 0 0 0 0 0[cr/lf]P[5]= 5 0 0 0 0 0[cr/lf]PL1[cr/lf]PLN=XY[cr/lf]NX= 2[cr/lf]NY= 2[cr/lf]NZ= 2[cr/lf]P[1]= 1 0 0 0 0 0[cr/lf]P[2]= 2 0 0 0 0 0[cr/lf]P[3]= 3 0 0 0 0 0[cr/lf]P[4]= 4 0 0 0 0 0[cr/lf]P[5]= 5 0 0 0 0 0[cr/lf][cr/lf]

Page 218: rcx40-pro

201

2

16. Data file description

16.7.2 One pallet definition

Format:

PLm

• 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]

� “m” is from 0 to 4000.

� “nnn” represents a positive integer.

� “f” represents a +, - or space.

� “xxxxxx”, “yyyyyy” … “bbbbbb” represent a numeric value of 8 digits or less.When a dot (decimal point) is included, this is treated as point data in “mm” units.Each piece of data is separated by one or more spaces.

� “t” is for an extended function. Not currently used.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND PL2 TO CMU

----------- Outputs the specified pallet definition from communicationport 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]P[2]= 200.00 100.00 50.00 90.00 0.00 0.00[cr/lf]P[3]= 100.00 200.00 50.00 90.00 0.00 0.00[cr/lf]P[4]= 200.00 200.00 50.00 90.00 0.00 0.00[cr/lf]P[5]= 100.00 10.00 100.00 90.00 0.00 0.00[cr/lf][cr/lf]

n NOTEIntegers indicate point data in “pulse”units, and real numbers (containing adecimal point) in “mm” units.

Page 219: rcx40-pro

202

2

16. Data file description

16.8 All file

16.8.1 All files

Format:

ALL

• Expresses all files essential for the entire system.

• When used as a readout file, all files of the entire system are read out.

• When used as a write file, a specified file is written.

Data format:

[PGM]All programs[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]

Example:SEND ALL TO CMU

----------- Outputs all files of the entire system from communicationport as shown below.

SEND CMU TO ALL----------- Inputs all files of the entire system from communication port

as shown below.

n NOTE• For more details on each file, see the

description of each file.• The [xxx] identifiers are used to

determine the file format from the nextline.

• [END] indicates the end of all files.

Page 220: rcx40-pro

203

2

16. Data file description

16.9 Program directory file

16.9.1 Entire program directory

Format:

DIR

• Expresses entire program directory.

• When used as a readout file, information on entire program directory is read out.

• Cannot be used as a write file.

Data format:

No. Name Line Byte RW/RO Date Time[cr/lf]nnnfgssssssss llll bbbbbb xx yy/mm/dd hh:mm[cr/lf] :nnnfgssssssss llll bbbbbb xx yy/mm/dd hh:mm[cr/lf]END[cr/lf]

� “nnn” (3 digits) represents a program directory number.

� “f” (1 digit) shows “o” when a program object is present and “s” when a sequenceobject is present.

� “g” (1 digit) shows an asterisk ( * ) for the currently selected program.

� “ssssssss” (8 digits) represents a program name.

� “llll” (4 digits) represents the number of program lines.

� “bbbbbb” (6 digits) represents the byte size of the program.

� “xx” (2 digits) shows “RW” when the program is rewritable and “RO” when notrewritable.

� ”yy/mm/dd” (8 digits) is the date when the program was updated.

� ”hh:mm” (5 digits) is the time when the program was updated.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

Example:SEND DIR TO CMU

----------- Outputs information on all program directory fromcommunication 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]

Page 221: rcx40-pro

204

2

16. Data file description

16.9.2 One program

Format:

<<program name>>

• Expresses information on one program.

Data format:

No. Name Line Byte RW/RO Date Time[cr/lf]nnnfgssssssss llll bbbbbb xx yy/mm/dd hh:mm[cr/lf]

� “nnn” (3 digits) represents a program directory number.

� “f” (1 digit) shows “o” when a program object is present and “s” when a sequenceobject is present.

� “g” (1 digit) shows an asterisk ( * ) for the currently selected program.

� “ssssssss” (8 digits) represents a program name.

� “llll” (4 digits) represents the number of program lines.

� “bbbbbb” (6 digits) represents the byte size of the program.

� “xx” (2 digits) shows “RW” when the program is rewritable and “RO” when notrewritable.

� ”yy/mm/dd” (8 digits) is the date when the program was updated.

� ”hh:mm” (5 digits) is the time when the program was updated.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

Example:SEND <<TEST>> TO CMU

----------- Outputs information on the specified program fromcommunication 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]

Page 222: rcx40-pro

205

2

16. Data file description

16.10 Parameter directory file

16.10.1 Entire parameter directory

Format:

DPM

• Expresses entire parameter directory.

• When used as a readout file, information on entire parameter directory is read out.

• Cannot be used as a write file.

Data format:

/parameter label/ ’<comment>[cr/lf]/parameter label/ ’<comment>[cr/lf] :/parameter label/ ’<comment>[cr/lf] [cr/lf]

� Parameter labels are shown with 6 alphabetic characters.

� The description of each parameter is shown in <comment>.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND DPM TO CMU

----------- Outputs information on all parameter directory fromcommunication 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]

Page 223: rcx40-pro

206

2

16. Data file description

16.11 Variable file

16.11.1 All variables

Format:

VAR

• Expresses all global variables.

• When used as a readout file, all global variables currently stored are read out.

• When used as a write file, a specified global variable is written.

Data format:

<variable name>t = xxxxxx [cr/lf]<variable name>t = xxxxxx [cr/lf] :<variable name>t = xxxxxx [cr/lf] [cr/lf]

� <Variable name> is a global variable defined in the program.

� <Variable name> is shown with 16 characters or less consisting of alphanumericcharacters and underscore ( _ ).

� “t” indicates a type of variable. (!: real type, %: integer type, $: character type)

� “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 [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND VAR TO CMU

----------- Outputs all global variables from communication port asshown below.

Response:SGI0=0[cr/lf]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]

Page 224: rcx40-pro

207

2

16. Data file description

16.11.2 One variable

Format:

<variable name>t

• Expressed one variable.

Data format:

xxxxxx [cr/lf]

� <Variable name> is a global variable defined in the program.

� <Variable name> is shown with 16 characters or less consisting of alphanumericcharacters and underscore ( _ ).

� “t” indicates a type of variable. (!: real type, %: integer type, $: character type)

� “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 [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND SGI6 TO CMU[cr/lf]

----------- Outputs the specified variable SGI6 from communication portas shown below.

Response:6666[cr/lf]

n NOTE• SGIx indicates an integer type static

variable.• SGRx indicates a real type static

variable.• Dynamic global variables are

registered during compiling. Variablescannot be referred to unless they areregistered.

Page 225: rcx40-pro

208

2

16. Data file description

16.12 Constant file

16.12.1 One character string

Format:

”<character string>”

• Expresses a specified character string.

• When used as a readout file, the specified character string is read out.

• Cannot be used as a write file.

Data format:

sssss…ssssss[cr/lf]

� “sssss…ssssss” shown with 61 characters or less.

� Output of a double quotation ( ” ) is shown with two successive double quotations.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example:SEND”””YAMAHA ROBOT””” TO CMU

----------- Outputs the specified character string from communicationport as shown below.)

Response:”YAMAHA ROBOT”[cr/lf]

Page 226: rcx40-pro

209

2

16. Data file description

16.13 Array variable file

16.13.1 All array variables

Format:

ARY

� Expresses all array variables.

� When used as a readout file, all array variables are read out.

� When used as a write file, writing is performed with a specified array variable.

Data format:

< variable name>t(l{,m{,n}}) = xxxxxx [cr/lf]< variable name>t(l{,m{,n}}) = xxxxxx [cr/lf] :< variable name>t(l{,m{,n}}) = xxxxxx [cr/lf][cr/lf]

� <Variable name> is a global array variable defined by the DIM statement in theprogram.

� <Variable name> is shown with 16 characters or less consisting of alphanumericcharacters 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 [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

� A line may be up to 75 characters long.

Example:SEND ARY TO CMU

----------- Outputs all global array variables from communication portas shown below.

Response:A!(0)=0[cr/lf]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]

Page 227: rcx40-pro

210

2

16. Data file description

16.13.2 One array variable

Format:

<variable name>t(l{,m{,n}})

• Expresses one array variable.

Data format:

xxxxxx [cr/lf]

� <Variable name> is a global array variable defined by the DIM statement in theprogram.

� <Variable name> is shown with 16 characters or less consisting of alphanumericcharacters 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]

----------- Outputs the specified array variable C1$(2) fromcommunication port as shown below.

Response:YAMAHA ROBOT[cr/lf]

n NOTEArray variables defined by the DIMstatement are registered duringcompiling. Array variables cannot bereferred to unless they are registered.

Page 228: rcx40-pro

211

2

16. Data file description

16.14 DI file

16.14.1 All DI information

Format:

DI()

• Expresses all DI information.

• When used as a readout file, all DI information is read out.

• Cannot be used as a write file.

Data format:

DI0()=&Bnnnnnnnn [cr/lf]DI1()=&Bnnnnnnnn [cr/lf] :DI27()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND DI() TO CMU

----------- Outputs all DI information from communication port as shownbelow.

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]

Page 229: rcx40-pro

212

2

16. Data file description

16.14.2 One DI port

Format:

DIm()

• Expresses the status of one DI port.

• When used as a readout file, the specified DI port status is read out.

• Cannot be used as a write file.

Data format:

DIm()=&Bnnnnnnnn[cr/lf]

� “m” is from 0 to 7, 10 to 17 or 20 to 27.

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example:SEND DI5() TO CMU

----------- Outputs the DI5 port status from communication port asshown below.

Response:DI5()=&B00000000[cr/lf]

Page 230: rcx40-pro

213

2

16. Data file description

16.15 DO file

16.15.1 All DO information

Format:

DO()

• Expresses all DO information.

• When used as a readout file, all DO information is read out.

• Cannot be used as a write file.

Data format:

DO0()=&Bnnnnnnnn [cr/lf]DO1()=&Bnnnnnnnn [cr/lf] :DO27()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND DO() TO CMU

----------- Outputs all DO information from communication port asshown 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]

Page 231: rcx40-pro

214

2

16. Data file description

16.15.2 One DO port

Format:

DOm()

• 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]

� “m” is from 0 to 7, 10 to 17 or 20 to 27.

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� k is an integer from 0 to 255.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example 1:SEND DO5() TO CMU

----------- Outputs the DO5 port status from communication port asshown below.

Response:DO5()=&B00000000[cr/lf]

Example 2:SEND CMU TO DO5()

----------- Inputs the DO5 port status from communication port as shownbelow.

&B00000111

Response:OK[cr/lf]

n NOTEWriting to DO0() and DO1() isprohibited.

Page 232: rcx40-pro

215

2

16. Data file description

16.16 MO file

16.16.1 All MO information

Format:

MO()

• Expresses all MO information.

• When used as a readout file, all MO information is read out.

• Cannot be used as a write file.

Data format:

MO0()=&Bnnnnnnnn [cr/lf]MO1()=&Bnnnnnnnn [cr/lf] :MO27()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND MO() TO CMU

----------- Outputs all MO information from communication port asshown 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]

Page 233: rcx40-pro

216

2

16. Data file description

16.16.2 One MO port

Format:

MOm()

• 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]

� “m” is from 0 to 7, 10 to 17 or 20 to 27.

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� k is an integer from 0 to 255.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example 1:SEND MO5() TO CMU

----------- Outputs the MO5 port status from communication port asshown below.

Response:MO5()=&B00000000[cr/lf]

Example 2:SEND CMU TO MO5()

----------- Inputs the MO5 port status from communication port as shownbelow.

&B00000111

Response:OK[cr/lf]

n NOTEWriting to MO0() and MO1() isprohibited.

Page 234: rcx40-pro

217

2

16. Data file description

16.17 LO file

16.17.1 All LO information

Format:

LO()

• Expresses all LO information.

• When used as a readout file, all LO information is read out.

• Cannot be used as a write file.

Data format:

LO0()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds to00, 01 … 07 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND LO() TO CMU

----------- Outputs all LO information from communication port asshown below.

Response:LO0()=&B10001001[cr/lf][cr/lf]

Page 235: rcx40-pro

218

2

16. Data file description

16.17.2 One LO port

Format:

LOm ()

• 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]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds to00, 01 … 07 from the right.

� k is an integer from 0 to 255.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example 1:SEND LO0() TO CMU

----------- Outputs the LO0 port status from communication port asshown below.

Response:LO0()=&B00000000[cr/lf]

Example 2:SEND CMU TO LO0()

----------- Inputs the LO0 port status from communication port as shownbelow.

&B00000111

Response:OK[cr/lf]

Page 236: rcx40-pro

219

2

16. Data file description

16.18 TO file

16.18.1 All TO information

Format:

TO()

• Expresses all TO information.

• When used as a readout file, all TO information is read out.

• Cannot be used as a write file.

Data format:

TO0()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds to00, 01 … 07 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND TO() TO CMU

----------- Outputs all TO information from communication port asshown below.

Response:TO0()=&B10001001[cr/lf][cr/lf]

Page 237: rcx40-pro

220

2

16. Data file description

16.18.2 One TO port

Format:

TOm()

• 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

TOm()=&Bnnnnnnnn[cr/lf]

Write file

&Bnnnnnnnn[cr/lf] or k[cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds to00, 01 … 07 from the right.

� k is an integer from 0 to 255.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example 1:SEND TO0() TO CMU

----------- Outputs the TO0 port status from communication port asshown below.

Response:TO0()=&B00000000[cr/lf]

Example 2:SEND CMU TO TO0()

----------- Inputs the TO0 port status from communication port as shownbelow.

&B00000111

Response:OK[cr/lf]

Page 238: rcx40-pro

221

2

16. Data file description

16.19 SI file

16.19.1 All SI information

Format:

SI()

• Expresses all SI information.

• When used as a readout file, all SI information is read out.

• Cannot be used as a write file.

Data format:

SI0()=&Bnnnnnnnn [cr/lf]SI1()=&Bnnnnnnnn [cr/lf] :SI27()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND SI() TO CMU

----------- Outputs all SI information from communication port as shownbelow.

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]

Page 239: rcx40-pro

222

2

16. Data file description

16.19.2 One SI port

Format:

SIm()

• 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]

� “m” is from 0 to 7, 10 to 17 or 20 to 27.

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example:SEND SI5() TO CMU

----------- Outputs the SI5 port status from communication port as shownbelow.

Response:SI5()=&B00000000[cr/lf]

Page 240: rcx40-pro

223

2

16. Data file description

16.20 SO file

16.20.1 All SO information

Format:

SO()

• Expresses all SO information.

• When used as a readout file, all SO information is read out.

• Cannot be used as a write file.

Data format:

SO0()=&Bnnnnnnnn [cr/lf]SO1()=&Bnnnnnnnn [cr/lf] :SO27()=&Bnnnnnnnn [cr/lf][cr/lf]

� “n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND SO() TO CMU

----------- Outputs all SO information from communication port asshown 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]

Page 241: rcx40-pro

224

2

16. Data file description

16.20.2 One SO port

Format:

SOm()

• Expresses the 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]

� “m” is from 0 to 7, 10 to 17 or 20 to 27.

�“n” is a binary number of 0 or 1, comprising a 8-digit number that corresponds tom0, m1 … m7 from the right.

� k is an integer from 0 to 255.

� [cr/lf] shows CR code (0Dh) + LF code (0Ah).

Example 1:SEND SO5() TO CMU

----------- Outputs the SO5 port status from communication port asshown below.

Response:SO5()=&B00000000[cr/lf]

Example 2:SEND CMU TO SO5()

----------- Inputs the SO5 port status from communication port as shownbelow.

&B00000111

Response:OK[cr/lf]

n NOTEWriting to SO0() and SO1() isprohibited.

Page 242: rcx40-pro

225

2

16. Data file description

16.21 Error message history file

16.21.1 All error message history

Format:

LOG

• Expresses all error message history.

• When used as a readout file, all error message history is read out.

• Cannot be used as a write file.

Data format:

nnn:yy/mm/dd,hh:ff gg.bb:msg[cr/lf]nnn:yy/mm/dd,hh:ff gg.bb:msg[cr/lf] :nnn:yy/mm/dd,hh:ff gg.bb:msg[cr/lf][cr/lf]

� “nnn” represents an error history serial number and may be up to 500.

� “yy/mm/dd” is the year/month/day when the error occurred.

� “dd”, “ff” and “ss” represent hour, minute and second.

� “gg” represents an error message group.

� “bb” represents an error message category.

� “msg” represents an error message.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND LOG TO CMU

----------- Outputs all error message history from communication portas shown below.

1 :01/06/14,13:19:20 14.22:No start code (@)[cr/lf]2 :01/06/14,13:18:34 22.7:I/O DC24V power low[cr/lf]

:498:01/06/12,21:49:54 5.39:Illegal identifier[cr/lf]499:01/06/12,21:49:14 14.22:No start code (@)[cr/lf]500:01/06/12,21:49:00 22.7:I/O ABC.encoder backup error[cr/lf][cr/lf]

Page 243: rcx40-pro

226

2

16. Data file description

16.22 Machine reference file

16.22.1 All machine reference data

Format:

MRF

• Expresses the machine reference data obtained after return-to-origin has beenperformed.

• Reads out all machine reference data when used as a readout file.

• Cannot be used as a write file.

Data format:

M1=nnn% M2=nnn% . . . nnn%[cr/lf]S1=nnn% S2=nnn% . . . nnn%[cr/lf][cr/lf]

� “nnn” is an integer from 0 to 100.

� “M1”, “M2” … indicate the main robot group axes.

� “S1”, “Sn” … indicate the sub robot group axes.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [cr/lf] alone is added at the end of the file, indicating the end ofthe file.

Example:SEND MRF TO CMU

----------- Outputs all machine reference data from communication portas shown below.

Response:M1= 55% M2= 23% M3= 33% M4= 26%[cr/lf][cr/lf]

Page 244: rcx40-pro

227

2

16. Data file description

16.23 EOF file

16.23.1 EOF data

Format:

EOF

• This file is a special file consisting only of a ^Z (=1Ah) code.

• When used as a readout file, ^Z (=1Ah) is read out.

• Cannot be used as a write file.

Data format:

^ Z (=1Ah)

Example:SEND PGM TO CMUSEND EOF TO CMU

----------- Outputs EOF data from communication port as shown below.NAME=TEST1[cr/lf]A=1[cr/lf] :HALT[cr/lf][cr/lf]^Z

n NOTEWhen transmitting data to an externaldevice through the communicationport, the EOF data can be used to adda ^Z code at the end of file.

Page 245: rcx40-pro

228

2

16. Data file description

16.24 Serial port communication file

16.24.1 Serial port communication file

Format:

CMU

• Expresses the serial communication port.

• Depends on the various data formats.

Example:SEND PNT TO CMU

----------- Outputs all points from communication port.SEND CMU TO PNT

----------- Inputs all points from communication port.

Page 246: rcx40-pro

229

2

16. Data file description

16.25 SIW file

16.25.1 All SIW

Format:

SIW()

• Expresses all SIW data.

• Reads out all SIW information in hexadecimal digit when used as a readout file.

• This cannot be used as a write file.

Data format:

SIW( 0)=&Hnnnn [cr/lf]SIW( 1)=&Hnnnn [cr/lf] :SIW(15)=&Hnnnn [cr/lf][ cr/lf]

� n represents a 4-digit number from 0 to 9 and A to F.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [ cf/lf] alone is added at the end of the file.

Example:SEND SIW() TO CMU

----------- Outputs all SIW data from communication port as shownbelow.

Response:SIW( 0)=&H1001[cr/lf]SIW( 1)=&H0010[cr/lf]SIW( 2)=&H0000[cr/lf] :SIW(15)=&H0000[cr/lf][cr/lf]

Page 247: rcx40-pro

230

2

16. Data file description

16.25.2 One SIW data

Format:

SIW(m)

• Expresses one SIW state.

• Reads out the designated SIW information in hexadecimal digit when used as areadout file.

• This cannot be used as a write file.

Data format:

SIW(m)=&Hnnnn [cr/lf]

� m represents a number from 0 to 15.

� n represents a 4-digit number from 0 to 9 and A to F.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

Example:SEND SIW(5) TO CMU

----------- Outputs SIW (5) from communication port as shown below.Response:

SIW( 5)=&H1001[cr/lf]

Page 248: rcx40-pro

231

2

16. Data file description

16.26 SOW file

16.26.1 All SOW

Format:

SOW()

• Expresses all SOW data.

• Reads out all SOW information in hexadecimal digit when used as a readout file.

• This cannot be used as a write file.

Data format:

SOW( 0)=&Hnnnn [cr/lf]SOW( 1)=&Hnnnn [cr/lf] :SOW(15)=&Hnnnn [cr/lf][ cr/lf]

� n represents a 4-digit number from 0 to 9 and A to F.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

� A line containing [ cf/lf] alone is added at the end of the file.

Example:SEND SOW() TO CMU

----------- Outputs all SIW data from communication port as shownbelow.

Response:SOW( 0)=&H1001[cr/lf]SOW( 1)=&H0010[cr/lf]SOW( 2)=&H0000[cr/lf] :SOW(15)=&H0000[cr/lf][cr/lf]

Page 249: rcx40-pro

232

2

16. Data file description

16.26.2 One SOW data

Format:

SOW(m)

• Expresses one SOW state.

• Reads out the designated SIW information in hexadecimal digit when used as areadout file.

• When used as a write file, the value is written to the designated SOW. Note thatdata cannot be written to SOW (0) or SOW (1).

Data format:

SOW(m)=&Hnnnn [cr/lf]

� m represents a number from 2 to 15.

� n represents a 4-digit number from 0 to 9 and A to F.

� [cr/lf] indicates CR code (0Dh) + LF code (0Ah).

Example1:SEND SOW(5) TO CMU

----------- Outputs SOW (5) from communication port as shown below.Response:

SIW( 5)=&H1001[cr/lf]

Example2:SEND CMU TO SOW(5)

----------- Outputs SOW (5) from communication port as shown below.&H1001

Response:OK[cr/lf]

n NOTE• Data cannot be written to SOW (0) or

SOW (1).

Page 250: rcx40-pro

233

17. User program examples

17.1 Basic operation

17.1.1 Point data written directly in program

OverviewBy directly specifying point data in the program, the robot arm moves by PTP (point-to-point) motion.

Processing flow

300.00 300.00 50.00 90.00 0.00 0.00 PTP movement300.00 100.00 0.00 0.00 0.00 0.00 PTP movement200.00 200.00 10.00 -90.00 0.00 0.00 PTP movement

START

STOP

Program exampleMOVE P, 300.00 300.00 50.00 90.00 0.00 0.00MOVE P, 300.00 100.00 0.00 0.00 0.00 0.00MOVE P, 200.00 200.00 10.00 -90.00 0.00 0.00HALT

Page 251: rcx40-pro

234

2

17. User program examples

17.1.2 Using point numbers

OverviewCoordinate data can be specified by using point numbers in a program. Coordinate datashould be entered beforehand in “MANUAL>POINT” mode, for example as shown below.P0= 0.00 0.00 0.00 0.00 0.00 0.00P1= 100.00 0.00 150.00 30.00 0.00 0.00P2= 0.00 100.00 50.00 0.00 0.00 0.00P3= 300.00 300.00 0.00 0.00 0.00 0.00P4= 300.00 100.00 100.00 90.00 0.00 0.00P5= 200.00 200.00 0.00 0.00 0.00 0.00

Processing flow

PTP movement to P0PTP movement to P1PTP movement to P2PTP movement to P3PTP movement to P4PTP movement to P5

START

STOP

Program exampleMOVE P, P0 FOR J=0 TO 5MOVE P, P1 MOVE P,P[J]MOVE P, P2 NEXT JMOVE P, P3 or HALTMOVE P, P4MOVE P, P5HALT

Page 252: rcx40-pro

235

2

17. User program examples

17.1.3 Using shift coordinates

OverviewIn the example shown below, after PTP movement from P3 to P5, the coordinate system isshifted +100 along the X-axis and -100 along the Y-axis, and then the robot moves fromP3 to P5 again. The shift coordinate data is set in S1 and P3, P4, P5 are set as described inthe previous section (“17-1-2 Using point numbers”).S0= 0.00 0.00 0.00 0.00S1= 140.00 -100.00 0.00 0.00

P3

P5

P4Shift CoordinateS0

Shift Coordinate

S1

0

140

100

X+→

↑Y+

Processing flow

PTP movement from P3 to P5.Shift according to S1, PTP movement from P3 to P5.

START

STOP

Program exampleSHIFT S0FOR J=3 TO 5MOVE P, P[J]

NEXT JSHIFT S1FOR K=3 TO 5MOVE P,P[K]

NEXT KHALT

Page 253: rcx40-pro

236

2

17. User program examples

17.1.4 Palletizing

17.1.4.1 Utilizing the shift coordinates

OverviewRepetitive movement between a fixed work supply position P0 and each of equally spacedpallets can be performed with the following program. In the drawing below, points N1 toN20 are on Cartesian coordinates, consisting of 5 points positioned at a 50mm pitch in theX-axis direction and 4 points at a 25mm pitch in the Y-axis direction. The robot armmoves from point to point in order P0-N1-P0-N2...N5-P0-N6-P0... while repeatedly movingbetween point P0 and each pallet.

Work supply position : P0= 0.0 0.0 0.0 0.0 0.0 0.0X-axis pitch : P10= 50.0 0.0 0.0 0.0 0.0 0.0Y-axis pitch : P20= 0.0 25.0 0.0 0.0 0.0 0.0N1 position : P1= 100.0 50.0 0.0 0.0 0.0 0.0

The above data should be entered beforehand in “MANUAL>POINT” mode.

Shift Coordinate S1

N16 N17 N18 N19 N20

N11 N12 N13 N14 N15

N6 N7 N8 N9 N10

N1 N2 N3 N4 N5

50

25

P0

Y+

X+

Processing flow

START

P200=P1P100=P1

P200=P200+P20P100=P200

STOP

Movement to P0Movement to P100P100=P100+P10

Repeat 4 times

Repeat 5 times

Page 254: rcx40-pro

237

2

17. User program examples

Program ExampleSHIFT S1P100=P1P200=P1FOR J=1 TO 4FOR K=1 TO 5SHIFT S0MOVE P,P0SHIFT S1MOVE P,P100P100=P100+P10NEXT KP200=P200+P20P100=P200NEXT J

17.1.4.2 Utilizing pallet movement

OverviewRepetitive movement between a fixed work supply position P0 and each of equally spacedpallets can be performed with the following program. In the drawing below, points N1 toN24 are on Cartesian coordinates, consisting of 3 points positioned at a 50mm pitch in theX-axis direction, 4 points at a 25mm pitch in the Y-axis direction, and 2 points at 100mmpitch in the Z-axis direction. The robot arm moves from point to point in order P0-N1-P0-N2...N5-P0-N6-P0... while repeatedly moving between point P0 and each pallet.

Work supply position : P0 = 0.00 0.00 100.00 0.00 0.00 0.00Pallet definition : PLT0 (P3996 to P4000 are used)

NX= 3NY= 4NZ= 2P3996= 100.00 50.00 100.00 0.00 0.00 0.00P3997= 200.00 50.00 100.00 0.00 0.00 0.00P3998= 100.00 200.00 100.00 0.00 0.00 0.00P3999= 200.00 200.00 100.00 0.00 0.00 0.00P4000= 100.00 50.00 100.00 0.00 0.00 0.00

P4000

P3998 P3999

P3997P3996

NZ

NX

NY

P0

Page 255: rcx40-pro

238

2

17. User program examples

Processing flow

START

STOP

Pallet definition

Point assignment

Movement to P0

Pallet movementRepeat 24 times

Program exampleFOR I=1 TO 24MOVE P,P0,Z=0.00PMOVE (0,I),Z=0.00NEXT IMOVE P,P0,Z=0.00HALT

Page 256: rcx40-pro

239

2

17. User program examples

17.1.5 DI/DO (digital input and output) operation

OverviewThe following example shows operation of general-purpose signal input and output throughthe STD. I/O connector.

Processing flow

N

Y

Y

N

START

Wait until DI2( ) is all at “0”.Set all of DO2 ( ) to “1”.

Wait 1 second.Wait until DI2 (0) is at “1”.

N=1

DI2 (1)=“1”?

N>20

Set all of DO2 ( ) to “0”.Wait 0.5 second.

N=N+1

Set DO2 (7, 6, 1, 0) to “1”.Wait 2 second.

Set all of DO2 ( ) to “0”.

END

Program exampleWAIT DI2( )=0DO2( )=&B11111111DELAY 1000WAIT DI2(0)=1N=1*LOOP1:IF DI2(1)=1 THEN *PROGENDIF N>20 THEN *ALLENDDO2( )=0DELAY 500N=N+1GOTO *LOOP1’END ROUTINE*PROGEND:DO2(7,6,1,0)=&B1111DELAY 2000DO2( )=0*ALLEND:HALT

Page 257: rcx40-pro

240

2

17. User program examples

17.2 Application

17.2.1 Pick and place between 2 points

OverviewThe following is an example for picking up a part at point A and placing it at point B.

0

Z

P3

P1

P4

P2

50mm

30mm

Point A Point B

Precondition1. 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 P1and P2 positions by teaching.

2. I/O signal

D02 (0) Chuck (gripper) open/close = 0: open, 1: close

A 0.1 second wait time is set during chuck open and close.

Page 258: rcx40-pro

241

2

17. User program examples

Program examples(1) When calculating to find P3 and P4

P3=P1P4=P2LOCZ(P3)=LOCZ(P3)-50.0LOCZ(P4)=LOCZ(P4)-50.0MOVE P,P3GOSUB *OPENMOVE P,P1GOSUB *CLOSEMOVE P,P3MOVE P,P4MOVE P,P2GOSUB *OPENMOVE P,P4HALT*OPENDO2(0)=0DELAY 100RETURN*CLOSE:DO2(0)=1DELAY 100RETURN

(2) When using arch motionP4=P2LOCZ(P4)=LOCZ(P4)-50.0GOSUB *OPENMOVE P,P1,Z=30.0GOSUB *CLOSEMOVE P,P2,Z=30.0GOSUB *OPENMOVE P,P4HALT*OPEN:DO2(0)=0DELAY 100RETURN*CLOSE:DO2(0)=1DELAY 100RETURN

Page 259: rcx40-pro

242

2

17. User program examples

17.2.2 Palletizing

OverviewThe following is an example for picking up parts supplied from the parts feeder andplacing them on a pallet on the conveyor. The pallet is ejected when full.

P1

Z

0

50mm

P1 P0

P0

Parts feeder

Robot

Precondition1. I/O signal

DI(30)

DI(31)

= 1: Parts are supplied

= 1: Pallet is loaded

DO(30)

DO(31)

Robot hand open/close = 0: open, 1: close

= 1: Pallet eject

Robot hand open/close time is 0.1 second and pallet eject time is 0.5 seconds.

2. The points below should be input beforehand as point data.

P0

P1

P10

P11

Part supply position

Pallet reference position

X direction pitch

Y direction pitch

3. Vertical movement is performed to a position Z=50mm above the pallet and partsfeeder.

Page 260: rcx40-pro

243

2

17. User program examples

Program example 1WHILE -1FOR A=0 TO 2FOR B=0 TO 2WAIT DI(31)=1WAIT DI(30)=1DO(30)=0DELAY 100MOVE P,P0,Z=50.0DO(30)=1DELAY 100P100=P1+P10*B+P11*AMOVE P,P100,Z=50.0DO(30)=0DELAY 100NEXTNEXTDRIVE (3,0)DO(31)=1DELAY 500DO(31)=0WENDHALT

Program example 2* When defined in pallet 0

WHILE -1FOR A=1 TO 9WAIT DI(31)=1WAIT DI(30)=1DO(30)=0DELAY 100MOVE P,P0,Z=50.0DO(30)=1DELAY 100PMOVE(0,A),Z=50.0DO(30)=0DELAY 100

NEXTDRIVE(3,0)DO(31)=1DELAY 500DO(31)=0WENDHALT

Page 261: rcx40-pro

244

2

17. User program examples

17.2.3 Pick and place of stacked parts

OverviewThe following is an example for picking up parts stacked in a maximum of 6 layers and 3blocks and placing them on the conveyor.The number of parts per block may differ from others. Parts are detected with a sensorinstalled on the robot hand.

Z=0.0

ConveyorP5 P1

Block 1P2

Block 2P3

Block 3

Precondition1. I/O signal

DI(30)

DO(30)

Part detection sensor = 1: Parts are supplied

Robot hand open/close = 0: open, 1: close

Robot hand open/close time is 0.1 seconds.

2. The points below should be input beforehand as point data.

P1

P2

P3

P5

Bottom of block 1

Bottom of block 2

Bottom of block 3

Position on conveyor

3. Movement proceeds at maximum speeds, but slows down when in proximity tothe part.

P5 P1

P4=WHERE

P5 P1

P4=WHERE Slow

High speed

High speed

P4=WHERESet the current position into point data (P4).

Set the speed at maximum

Load the part onto conveyor position (P5)

Move to position (P4) during parts detection

Move to P1

Slow down

4. Use a STOPON condition in the MOVE statement for sensor detection duringmovement.

Page 262: rcx40-pro

245

2

17. User program examples

Program exampleFOR A=1 TO 3SPEED 100GOSUB *OPENP6=P[A]LOCZ(P6)=0.00MOVE P,P6,Z=0.0WHILE -1SPEED 20MOVE P,P[A],STOPON DI3(0)=1IF DI3(0)=0 THEN *L1’SENSOR ONP4=JTOXY(WHERE)GOSUB *CLOSESPEED 100MOVE P,P5,Z=0.0GOSUB *OPENMOVE P,P4,Z=0.0WEND*L1: ’SENSOR OFFNEXT ASPEED 100DRIVE (3,0)HALT*OPEN:DO3(0)=0DELAY 100RETURN*CLOSE:DO3(0)=1DELAY 100RETURN

Page 263: rcx40-pro

246

2

17. User program examples

17.2.4 Parts inspection (Multi-tasking example)

OverviewOne robot is used to inspect two different parts and sort them according to the OK/NGresults.The robot picks up the part at point A and moves it to the testing device at point B. Thetesting device checks the part and sends it to point C if OK or to point D if NG.In the same way, the part at point A’ is picked up and moved to the testing device at pointB’. The testing device checks the part and sends it to point C’ if OK or to point D’ if NG.It is assumed that 10 to 20 seconds are required for the testing device to issue the OK/NGresults.

A

P1

B

P2

C

P3

D

P4

A’

P11

B’

P12

C’

P13

D’

P14

Parts supply Testing device OK NG

Precondition1. I/O signal

Testing device 1 start (0.1 second)Testing device 2 start (0.1 second)Chuck (gripper) open/close

DO21: Start *11: Start *10: open, 1: close *2

7 6 5 4 3 2 1 0

Testing device 1 test completedTesting device 1 OK/NG signalTesting device 2 test completedTesting device 2 OK/NG signal

DI37 6 5 4 3 2 1 0

Part supply 1 Part supply 2 Part 1 OKPart 1 NGPart 2 OKPart 2 NG

DI47 6 5 4 3 2 1 0

*3

2. The main task (task 1) is used to test part 1 and the subtask (task 2) is used to testpart 2.

3. An exclusive control flag is used to allow other tasks to run while waiting for thetest 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)

n NOTE1: As the start signal, supply a 0.1

second pulse signal to the testingdevice.

ONOFF

0.1 seconds

2: Chuck open and close time is 0.1seconds.

3: Each time a test is finished, testcompletion signal and OK/NG signalare sent from the testing device.After testing, test completion signalturns ON (=1), and OK/NG signalturns ON (=1) when the result is OKand turns OFF (=0) when NG.

Page 264: rcx40-pro

247

2

17. User program examples

4. Flow chart

Task 2 busy?

Exclusive control flag set

Task 2 busy?

Start

Exclusive control flag reset

Subtask start

Part 1 supplied?

Chuck open

Move to parts supply position P1

Chuck close

Move to testing device 1

Chuck open

Move upward 10000 pulses

Exclusive control flag reset

Testing device 1 start

Test completed?

Exclusive control flag set

Move to testing device 1

Chuck close

Part OK?

OK parts? NG parts?

Move to OK parts position

Chuck open

Move upward 10000 pulses

Exclusive control flag reset

FLAG1=FLAG2=0

Move to NG parts position

FLAG1=0

FLAG1=1

FLAG1=0

FLAG1=1

N

Y

Y

N

Y

N

N

N

Y

Y

Y

Y

N N

Task 2 (subtask) runs in the same flow.

Page 265: rcx40-pro

248

2

17. User program examples

Program example

FLAG1=0

FLAG2=0

UPPOS=0.0

START *S1,T2

*L1:

WAIT DI4(0)=1

WAIT FLAG2=0

FLAG1=1

GOSUB *OPEN

MOVE P,P1,Z=UPPOS

GOSUB *CLOSE

MOVE P,P2,Z=UPPOS

GOSUB *OPEN

DRIVEI (3,-10000)

FLAG1=0

DO2(0)=1

DELAY 100

DO2(0)=0

WAIT DI3(0)=1

WAIT FLAG2=0

FLAG1=1

MOVE P,P2,Z=UPPOS

GOSUB *CLOSE

IF DI3(1)=1 THEN

’GOOD

WAIT DI4(2)=0

MOVE P,P3,Z=UPPOS

ELSE

’NG

WAIT DI4(3)=0

MOVE P,P4,Z=UPPOS

ENDIF

GOSUB *OPEN

DRIVEI (3,-10000)

FLAG1=0

GOTO *L1

*OPEN:

DO2(7)=0

DELAY 100

RETURN

*CLOSE:

DO2(7)=1

DELAY 100

RETURN

Subtask Start

Part supply standby

Task completion standby

Exclusive control flag reset

Chuck open

Move to parts supply position

Chuck close

Move to testing device

Chuck open

Move Z-axis upward Z 10,000 pulses

Exclusive control flag reset

Testing device start

Test completion standby

Task completion standby

Exclusive control flag reset

Move to testing device

Chuck close

Test

Part movement standby

Move to OK parts position

Part movement standby

Move to NG parts position

Chuck open

Move Z-axis upward 10,000 pulses

Exclusive control flag reset

*S1:

WAIT DI4(1)=1

WAIT FLAG1=0

FLAG2=1

GOSUB *OPEN

MOVE P,P11,Z=UPPOS

GOSUB *CLOSE

MOVE P,P12,Z=UPPOS

GOSUB *OPEN

DRIVEI (3,-10000)

FLAG2=0

DO2(3)=1

DELAY 100

DO2(3)=0

WAIT DI3(4)=1

WAIT FLAG1=0

FLAG2=1

MOVE P,P12,Z=UPPOS

GOSUB *CLOSE

IF DI3(5)=1 THEN

’GOOD

WAIT DI4(4)=0

MOVE P,P13,Z=UPPOS

ELSE

’NG

WAIT DI4(5)=0

MOVE P,P14,Z=UPPOS

ENDIF

GOSUB *OPEN

DRIVEI (3,-10000)

FLAG2=0

GOTO *S1

Page 266: rcx40-pro

249

2

17. User program examples

17.2.5 Sealing

OverviewThis section shows an example for parts sealing operation.

Y

0

P8P9

P10

P11

P12P1 P2

P3P4

P5

P6P7

X

P100

Precondition1. I/O signal

DI3(0)

DO3(0)

Sealing start = 1: Start

Valve open/close = 1: open, 0: close

2. Set positions at P1 to P12 and P100 (standby position) by teaching.

Program exampleP0=P1LOCZ(P0)=LOCZ(P1)-50.0*L1:MOVE P,P100WAIT DI3(0)=1MOVE P,P1DO3(0)=1MOVE L,P2MOVE C,P3,P4MOVE L,P5MOVE C,P6,P7MOVE L,P8MOVE C,P9,P10MOVE L,P11MOVE C,P12,P1WAIT ARMDO3(0)=0MOVE P,P0GOTO *L1

Page 267: rcx40-pro

250

2

17. User program examples

17.2.6 Connection to an external device through RS-232C (example 1)

OverviewThe following program allows the RCX40 to write point data into an external deviceconnected through the RS-232C interface.

Precondition1. Input to the external device from the RCX40 controller

SDATA/X/Y [cr]

2. Output to the RCX40 controller from the external device

P10=156.42 243.91 0.00 0.00 0.00 0.00 [cr]

* The [cr] is cr (=0Dh).

Program example'INIT VCMD$="SDATA/X/Y" P0 = 0.00 0.00 0.00 0.00 0.00 0.00'MAIN ROUT INE MOVE P, P0*ST: SEND VCMD$ TO CMU SEND CMU TO P10 MOVE P, P10GOTO *ST

n NOTE• "SEND xxx TO CMU" outputs the

contents specified by "xxx" throughthe RS-232C.

• "SEND CMU TO xxx" sends them intothe files specified by "xxx" through theRS-232C.

Page 268: rcx40-pro

251

2

17. User program examples

17.2.7 Connection to an external device through RS-232C (example 2)

OverviewThe following program allows the RCX40 to create point data from any desired characterstring data and write it into an external device connected through the RS-232C interface.

Precondition1. Input to the external device from the RCX40 controller

SDATA/X/Y [cr]

2. Output to the RCX40 controller from the external device

X=156.42, Y=243.91 [cr]

* The [cr] is cr (=0Dh).

Program example'INT VCMD$="SDATA/X/Y" VIN$="" VX$="" VY$="" P0 = 0.00 0.00 0.00 0.00 0.00 0.00 P11 = 100.00 100.00 0.00 0.00 0.00 0.00'MAIN ROUT INE MOVE P, P0*ST: SEND VCMD$ TO CMU SEND CMU TO VIN$ I=1 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-1 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-1 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, P11GOTO *ST

n NOTE• "SEND xxx TO CMU" outputs the

contents specified by "xxx" throughthe RS-232C.

• "SEND CMU TO xxx" sends them intothe files specified by "xxx" through theRS-232C.

• The LEN ( ) function obtains thelength of the character string.

• The MID$ ( ) function obtains thespecified character string from amongcharacter strings.

• The VAL ( ) function obtains the valuefrom the character string.

Page 269: rcx40-pro

252

18. 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, a robot program and a 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, eliminating

the need to learn a new language and making it easier to program.

18.1 Creating a sequence program

18.1.1 Programming method

The following explains how to create a sequence program in order to make use of thesequence function.First, enter “PROGRAM” mode and create a file with the file name “SEQUENCE”. Withthis name, the controller automatically recognizes the file is a sequence program.

Fig. 18-1-1-1 Naming a sequence program file

PROGRAM>DIR <TEST10 >

No. NAME LINE BYTE RW/RO

Enter program name >SEQUENCE

1 TEST10 12 145 RW

2 LOCATE20 25 320 RW

Next, create a sequence program in the same way as you create a robot program. Thecommands that may be used are explained later.

Fig. 18-1-1-2 Creating a sequence program

PROGRAM>EDIT <SEQUENCE>

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

Page 270: rcx40-pro

253

2

18. Sequence function

18.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. 18-1-2-1).

Fig. 18-1-2-1 Sequence program

PROGRAM <SEQUENCE>

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. 18-

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 robotprograms.

Fig. 18-1-2-2 Compiling the sequence program

PROGRAM <SEQUENCE>

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 SEQUENCER OK? YES NO

If there is a syntax error in the program, an error message appears and the program will belisted from the line with the error (Fig. 18-1-2-3)When the compiling ends without any error, the program will be listed from its first line.

Fig. 18-1-2-3 Compiling error

PROGRAM <SEQUENCE>0.5:Syntax error

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

Page 271: rcx40-pro

254

2

18. Sequence function

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 sequenceprogram has been compiled successfully and is ready for use (Fig. 18-1-2-4).

Fig. 18-1-2-4 Sequence execution program after compiling

PROGRAM>DIR <TEST10 >

No. NAME LINE BYTE RW/RO

1 TEST10 12 145 RW

2 LOCATE20 25 320 RW

3 s SEQUENCE 8 141 RW

NEW I INFO

18.2 Executing a sequence programThe following conditions must be satisfied to execute a sequence program. If any of theseconditions is not met, the sequence program cannot be executed.

1. The sequence execution program has been created by compiling.

2. The sequence function is enabled in “UTILITY” mode.

3. The external sequence control input (DI10) contact is closed.

4. The current operation mode is “MANUAL” or “AUTO”.

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 lineof the screen. (Fig. 18-2-1)

Fig. 18-2-1 Sequence program execution in progress

MANUAL 50% [MG] [S0H0J]S

Current position

M1= 0 M2= 0 *M3= 0

*M4 0

POINT PALLET VEL+ VEL-

c CAUTIONThe sequence execution program iserased and the letter “s” disappears inthe following cases. In these cases thesequence function cannot be used in“UTILITY” mode.

1. When the sequence program waserased

2. When the sequence program wasedited

3. When normal robot programcompiling was performed for thesequence program

4. Program data was initialized.5. A “Sequence object check sum” error

occurred.

Page 272: rcx40-pro

255

2

18. Sequence function

18.2.1 Sequence program STEP execution

The sequence program may be executed line by line while checking one command line ata time.

To do this, press the F 5 (NO) key on the compile screen (Fig. 18-1-2-2). Sequence

program compiling is canceled and the normal robot compile screen (Fig. 18-2-2) thenappears.

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.

Fig. 18-2-2 Sequence program STEP execution

Compile program OK? YES NO

PROGRAM>DIR <SEQUENCE>

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)

18.3 Creating a sequence programWhen creating a sequence program, you may use only assignment statements comprisedof input/output variables and logical operators. An error will occur during compiling ifany statement other than assignment statements is used in the program, and the compilingwill not be completed.

18.3.1 Assignment statements used with sequence program

<output variable> =<expression><internal auxiliary output variable><arm lock output variable><timer output variable>

<expression> may only be a logical operation using parallel input/output variables, internalauxiliary output variables, arm lock output variables, timer output variables or serial input/output variables.

Page 273: rcx40-pro

256

2

18. Sequence function

18.3.2 Input/output variables used in sequence program

a. Parallel input variablesThese variables show the status of parallel input signal.

DI(mb) m: Port number 0 to 7, 10 to 17, 20 to 27 b:bit definition 0 to 7

b. Parallel output variablesThese variables specify or refer to the status of parallel output signal.

DO(mb) m: port number 0 to 7, 10 to 17, 20 to 27b: bit definition 0 to 7

Output to ports 0 and 1 is not possible.

c. Internal auxiliary output variablesThese variables are used within the controller and are not output externally.

MO(mb) m: port number 0 to 7, 10 to 17, 20 to 27b: bit definition 0 to 7

Output to ports 0 and 1 is not possible.

d. Arm lock output variablesThese variables are used to prohibit the arm movement. An axis movement is prohibitedby ON status.

LO(mb) m: port number 0 b: bit definition 0 to 7

LO(00) to LO(07) corresponds to arm 1 to arm 8.

e. Timer output variables

TO(mb) m: port number 0 b: bit definition 0 to 7

There are a total of 8 timer output variables: TO(00) to TO(07). The timer of each variableis defined by the timer definition statement TIM00 to 07.

Page 274: rcx40-pro

257

2

18. Sequence function

f. Serial input variablesThese variables show the status of parallel input signal.

SI(mb) m: Port number 0 to 7, 10 to 17, 20 to 27b: bit definition 0 to 7

g. Serial output variablesThese variables show the status of serial output signal.

SO(mb) m: port number 0 to 7, 10 to 17, 20 to 27b: bit definition 0 to 7

Output to ports 0 and 1 is not possible.

Timer example:TIM02=2500TO(02)=DI(23)

When DI(23) is ON, after 2.5 seconds, TO(02) is set ON.When DI(23) is OFF, TO(02) is also OFF.When DI(23) isn’t ON after 2.5 second or more, TO(02) does not change to ON.

DI (23)

2.5sec

TO (02)

1.6sec

Variables may only be defined in the 1 bit format.

Examples:DO(35)MO(24)DI(16)

Incorrect examples:DO(37,24)DI3(4)MO3()

Page 275: rcx40-pro

258

2

18. Sequence function

18.3.3 Timer definition statement

This shows the status of input signal.

TIMmb=expression m: port number 0 b: bit definition 0 to 7

The value of <expression> must be from 100 to 999900msec (=0.1 to 999.9 second).However, since the units are set for every 100msec, values less than 99msec are truncated

Examples:TIM00 = 650 ....0.6 secondsTIM03 = 2480 ....2.4 seconds

The timer definition statement sets the timer value of the timer output variable. Thisdefinition statement may be anywhere in the program. When the timer definition statementis omitted, the timer setting value of the variable is 0.TIM00 to 07 correspond to the timer output variables TO(00) to (07).

18.3.4 Logical operators used with sequence program

OR, | Logical OR

AND, & Logical AND

NOT, ~ Logical NOT

18.3.5 Priority of logical operations

1. Expressions in parentheses

2. NOT, ~

3. AND, &

4. OR, |

Assignment statement example:A ladder diagram is also shown just for your reference.

DO(23)=DI(16)&DO(35)MO(34)=DO(25)| DI(24)DO(31)=(DI(20)|DO(31))& DI(21)

Ladder diagram

DI (16)

DO (25)

~DI (24)

DI (20)

DO (31)

DO (35)

~DI (21)

DO (23)

MO (34)

DO (31)

(Self-hold circuit)

Sequence program specifications

Commands

I/O

Program capacity

Scan time

Logical OR, AND, NOT

Same as robot language

4096 bytes (A maximum of 512 variables can be specified.)

10 to 30ms depending on the number of steps (This changes automatically.)

c CAUTION1. NOT cannot be used prior to the first

parenthesis “ ( “ or on the left of anexpression. For example, thefollowing commands cannot be used.DO(21)=~(DI(30) | DI(32))~DO(30)=DI(22) & DI(27)

2. Numeric values cannot be assignedon the right of an expression. Thefollowing examples cannot be used:MO(35)=1DO(26)=0

3. There is no need to define ”HALT” or”HOLD” statement at the end of theprogram.

4. The I/O and internal auxiliary outputvariables used in sequence programsare shared with robot programs, so becareful not to make improper changeswhen using the same variablesbetween them.

Page 276: rcx40-pro

259

19. Online commands

This chapter explains online commands that can be input to the robot controller through the RS-

232C port to execute specific instructions. For the method for connecting to the RS-232C port, see

the robot controller owner’s manual.

1. Key operation

2. Utility

AUTO

PROGRAM

MANUAL

SYSTEM

RESET

RUN

STEP

SKIP

NEXT

STOP

BREAK

CHGTSK

MSPEED

MSPEED2

ABSADJ

ABSADJ2

ABSRESET

ABSRESET2

PADDR

COPY

ERA

REN

ATTR

INIT

LANGUGAE

ACCESS

EXELVL

SEQUENCE

UNIT

ARMTYP

ARMTYP2

EMGRST

MSGCLR

m, n (m: break point No., n: line)

k (k : 1-100)

k (k : 1-100)

k, 0 or k, 1 (k : 1-6)

k, 0 or k, 1 (k : 1-6)

k (k : 1-6)

k (k : 1-6)

<program 1> TO <program 2>

Pm-Pn TO Pk

PCm-PCn TO PCk

<program>

Pm-Pn

PCm-PCn

PLm

<program 1> TO <program 2>

<program 1> TO s (s: RW/RO)

PGM

PNT

SFT

HND

PLT

PCM

MEM

PRM

ALL

CMU

k

k

k

k

k

m, k

m, k

Change mode

Program

Set break point

Switch execution task

Change manual speed

Move to absolute reset position

Absolute reset on each axis

Acquire program execution status

Copy program 1 to program 2

Copy points “m - n” to point “k”

Copy point comments “m - n” to point comment “k”

Delete program

Delete points “m - n”

Delete point comments “m - n”

Delete pallet “m”

Rename “program 1” to “program 2”

Change program attribute

Initialize data

Setting Display language

Setting

Reset internal emergency stop flag

Clear line message

Meaning ExampleCommandOperation type Option

AUTO mode

PROGRAM mode

MANUAL mode

SYSTEM mode

Reset program

Execute program

Execute one line

Skip one line

Execute to next line

Stop program

Main robot

Sub robot

Main robot

Sub robot

Main robot

Sub robot

Program

Point

Shift

Hand

Pallet

Point comment

Above data

Parameter

MEM+PRM

Communication parameter

Access level

Execution level

Sequence execution flag

Point units

Main hand system

Sub hand system

3

4

2

4

3

3

4

3

3

3

3

3

3

3

1

Page 277: rcx40-pro

260

2

19. Online commands

3. Data

handling

4. Robot language

independent

execution

5.Control code

?

READ

WRITE

SWI

^C(=03H)

LANGUGAE

ACCESS

ARM

BREAK

CONFIG

EXELVL

MEM

MOD

MSG [m, n]

ORIGIN

ABSRST

SERVO

SEQUENCE

SPEED

UNIT

VER

WHERE

WHERE2

WHRXY

WHRXY2

TASKS

TSKMON

SHIFT

HAND

EMG

SELFCHK

OPSLOT

Data file (PGM, PNT, …)

Data file (PGM, PNT, …)

<program>

Acquiring status

Meaning ExampleCommandOperation type Option

Display language

Access level

Arm status

Break point status

Controller configuration

Execution level

Remaining memory capacity

Mode status

Error message

Return-to-origin status

Absolute reset status

Servo status

Sequence execution flag status

AUTO/MANUAL speed status

Point unit status

Version information

Current main robot position (pulse coordinate)

Current sub robot position (pulse coordinate)

Current main robot position (XY coordinate)

Current sub robot position (XY coordinate)

Task number

Task operation status

Selected shift status

Selected hand status

Emergency stop status

Error status by self-diagnosis

Option slot status

1

2

2

4

4

1

Data readout

Data write

Execution language interruption

Robot language that can be executed independently.

Conditions:1. Always executable.2. Executable except when MPB is used for input/output operation.3. Executable except when in condition 2 or program is being executed.4. Executable except for condition 3 or specific limitation.

Page 278: rcx40-pro

261

2

19. Online commands

Online command description

19.1 Key operation

19.1.1 Changing the mode

Command format:

@AUTO[c/r]@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]

19.1.2 AUTO mode operation

19.1.2.1 Program execution

Command format:

@RESET[c/r]@RUN[c/r]@STEP[c/r]@SKIP[c/r]@NEXT[c/r]@STOP[c/r]

Response format:

OK[c/r]

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.)SKIP : Skips one line of program. (Skips one line of the subroutine.)NEXT : Executes to the next line. (Executes one line of the subroutine.)STOP : Stops the program.

Example:Command @RUN[c/r]Response OK[c/r]

n NOTEBasically, a response “OK” appearswhen an instruction from key operationonline command is received.An error message responds if onlinecommands cannot be executed due toerror.

n NOTEPrograms can be executed only inAUTO mode.

Page 279: rcx40-pro

262

2

19. Online commands

19.1.2.2 Setting a break point

Command format:

@BREAK m,n[c/r]

m : Break point number (m = 1 to 4)

n : Line number to set a break point. (n = 1 to 9999)

When setting a break point in the COMMON program, the line number should be+10000.

Break point is cleared when 0 is specified as the line number.

Response format:

OK[c/r]

Meaning:• Sets a break point used to temporarily stop execution of the program.

Example:Command @BREAK 1, 28[c/r]Response OK[c/r]

19.1.2.3 Switching the execution task

Command format:

@CHGTSK[c/r]

Response format:

OK[c/r]

Meaning:• Switches the selected task while program execution is stopped.

• 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]

n NOTEBreak points can be set only in AUTOmode.

n NOTETasks can be switched only in AUTOmode.

Page 280: rcx40-pro

263

2

19. Online commands

19.1.3 MANUAL mode operation

19.1.3.1 Changing the MANUAL mode speed

Command format:

@MSPEED k[c/r]@MSPEED2 k[c/r]

k : Manual movement speed (k = 1 to 100)

Response format:

OK[c/r]

Meaning:• Changes the MANUAL mode movement speed.

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]

19.1.3.2 Absolute reset

Command format:

@ABSADJ k,f[c/r]@ABSADJ2 k,f[c/r]@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]

Meaning:• Performs absolute reset.

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]

n NOTEThe MANUAL mode speed can bechanged only in MANUAL mode.

n NOTEAbsolute reset can be performed onlyin MANUAL mode.

Page 281: rcx40-pro

264

2

19. Online commands

19.2 Utility operation

19.2.1 Acquiring the program execution status

Command format:

@PADDR[c/r]

Response format:

<program name>, Tn,m,k[c/r]

Program name : Currently selected program nameTn: Current task number (n = 1 to 8)

m : Current program number (m = 1 to 9999)

k : Current task priority level (k = 17 to 47)

If the COMMON program is used, the response format may become as follows.

<COMMON>/<program name>,Tn,m,k,[c/r]

<COMMON>/<program name>, Tn,m,k[c/r]

Meaning:• Acquires the current program execution status.

Example:Command @PADDR[c/r]Response <TEST>,T3,134,32[c/r]

19.2.2 Copy

19.2.2.1 Copying a program

Command format:

@COPY <program name 1> TO <program name 2>[c/r]

Program name 1 : Program name in copy source (8 characters or less consisting ofalphanumeric characters and underscore)

Program name 2 : Program name in copy destination (8 characters or less consisting ofalphanumeric characters and underscore)

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]

n NOTEThe current program execution statuscan be acquired only when theprogram is stopped.

Page 282: rcx40-pro

265

2

19. Online commands

19.2.2.2 Copying point data

Command format:

@COPY Pmmmm-Pnnnn TO Pkkkk[c/r]

mmmm : Top point number in copy source (mmmm = 0 to 4000)nnnn : Last point number in copy source (nnnn = 0 to 4000)kkkk : Top point number in copy destination (kkkk = 0 to 4000)

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]

19.2.2.3 Copying point comments

Command format:

@COPY PCmmmm-PCnnnn TO PCkkkk[c/r]

mmmm : Top point comment number in copy source (mmmm = 0 to 4000)nnnn : Last point comment number in copy source (nnnn = 0 to 4000)kkkk : Top point comment number in copy destination (kkkk = 0 to 4000)

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]

Page 283: rcx40-pro

266

2

19. Online commands

19.2.3 Erase

19.2.3.1 Erasing a program

Command format:

@ERA <program name>[c/r]

Program name : Program name to be erased (8 characters or less consisting ofalphanumeric characters and underscore)

Response format:

OK[c/r]

Meaning:• Erases the designated program.

Example:Command @ERA <TEST1>[c/r]Response OK[c/r]

19.2.3.2 Erasing point data

Command format:

@ERA Pmmmm-Pnnnn[c/r]

mmmm : Top point number to be erased (mmmm = 0 to 4000)nnnn : Last point number to be erased (nnnn = 0 to 4000)

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]

Page 284: rcx40-pro

267

2

19. Online commands

19.2.3.3 Erasing point comments

Command format:

@ERA PCmmmm-PCnnnn[c/r]

mmmm : Top point comment number to be erased (mmmm = 0 to 4000)nnnn : Last point comment number to be erased (nnnn = 0 to 4000)

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]

19.2.3.4 Erasing pallet data

Command format:

@ERA PLm[c/r]

m : Pallet number to be erased (m = 0 to 19)

Response format:

OK[c/r]

Meaning:• Erases the designated pallet data.

Example:Command @ERA PL1[c/r]Response OK[c/r]

Page 285: rcx40-pro

268

2

19. Online commands

19.2.4 Rename

Command format:

@REN <program name 1> TO <program name 2>[c/r]

Program name 1 : Program name before renaming (8 characters or less consisting ofalphanumeric characters and underscore)

Program name 2 : Program name after renaming (8 characters or less consisting ofalphanumeric characters and underscore)

Response format:

OK[c/r]

Meaning:• Changes program name 1 to program name 2.

Example:Command @REM <TEST1> TO <TEST2>[c/r]Response OK[c/r]

19.2.5 Changing the attribute

Command format:

@ATTR <program name> TO s[c/r]

Program name : Program name to change the attribute (8 characters or less consistingof 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]

Page 286: rcx40-pro

269

2

19. Online commands

19.2.6 Initialize

19.2.6.1 Initializing the memory

Command format:

@INIT PGM[c/r]@INIT PNT[c/r]@INIT SFT[c/r]@INIT HND[c/r]@INIT PLT[c/r]@INIT PCM[c/r]@INIT MEM[c/r]@INIT PRM[c/r]@INIT ALL[c/r]

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]

19.2.6.2 Initializing the communication port

Command format:

@INIT CMU[c/r]

Response format:

OK[c/r]

Meaning:• Initializes the communication port parameters.

• For information about the communication port initial settings, refer to thecommunication port manual.

Example:Command @INIT CMU[c/r]Response OK[c/r]

Page 287: rcx40-pro

270

2

19. Online commands

19.2.7 Setting the display language

Command format:

@LANGUAGE k[c/r]

k : Display language (k = 0: Japanese, 1: English)

Response format:

OK[c/r]

Meaning:• Sets the language for displaying messages on the MPB.

Example:Command @ LANGUAGE 1[c/r]Response OK[c/r]

19.2.8 Setting the coordinates and units in MANUAL mode

Command format:

@UNIT k[c/r]

k : Coordinates and units (k = 0: joint coordinate in “pulse” units, 1: Cartesian coordinatein “mm” or “deg.” units)

Response format:

OK[c/r]

Meaning:• Sets the coordinates and units for point data.

Example:Command @UNIT 1[c/r]Response OK[c/r]

19.2.9 Clearing the MPB error message

Command format:

@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]

Page 288: rcx40-pro

271

2

19. Online commands

19.2.10 Setting the UTILITY mode

19.2.10.1Setting the access level

Command format:

@ ACCESS k[c/r]

k : Access level (k = 0 to 3)

Response format:

OK[c/r]

Meaning:• Sets the access level.

Example:Command ACCESS 1[c/r]Response OK[c/r]

19.2.10.2Setting the execution level

Command format:

@EXELVL k[c/r]

k : Execution level (k = 0 to 8)

Response format:

OK[c/r]

Meaning:• Sets the execution level.

Example:Command @ EXELVL 1[c/r]Response OK[c/r]

19.2.10.3Setting the sequence program execution flag

Command format:

@SEQUENCE k[c/r]

k : Execution flag (k = 0: disable, 1: enable, 3: enable (DO reset))

Response format:

OK[c/r]

Meaning:• Sets the sequence program execution flag.

Example:Command @ SEQUENCE 1[c/r]Response OK[c/r]

n NOTEFor a detailed description of the accesslevel, refer to the robot controllerowner’s manual.

n NOTEFor a detailed description of theexecution level, refer to the robotcontroller owner’s manual.

Page 289: rcx40-pro

272

2

19. Online commands

19.2.10.4Setting the SCARA robot hand system

Command format:

@ARMTYP m,k[c/r]@ARMTYP2 m,k[c/r]

m : Current hand system (m = 0: right-handed system, 1: left-handed system)

k : Hand system at program reset (k = 0: right-handed system, 1: left-handed system)

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]

19.2.10.5Resetting the internal emergency stop flag

Command format:

@EMGRST[c/r]

Response format:

OK[c/r]

Meaning:• Resets the internal emergency stop flag.

Example:Command @ EMGRST[c/r]Response OK[c/r]

Page 290: rcx40-pro

273

2

19. Online commands

19.3 Data handling

19.3.1 Acquiring the display language

Command format:

@?LANGUAGE[c/r]

Response format:

m[c/r]

m : Display language (m = JAPANESE or ENGLISH)

Meaning:• Acquires the language for displaying messages on the MPB.

Example:Command @?LANGUAGE[c/r]Rresponse JAPANESE[c/r]

19.3.2 Acquiring the access level

Command format:

@?ACCESS[c/r]

Response format:

LEVELk[c/r]

k : Access level (k = 0 to 3)

Meaning:• Acquires the access level.

Example:Command @?ACCESS[c/r]Response LEVEL2[c/r]

n NOTEFor a detailed description of the accesslevel, refer to the robot controllerowner’s manual.

Page 291: rcx40-pro

274

2

19. Online commands

19.3.3 Acquiring the arm status

Command format:

@?ARM[c/r]

Response format:

m1/s1,m2/s2[c/r]

Main robotm1 : 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 robots1 : 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)

Meaning:• Acquires the arm setting status.

Example:Command @?ARM[c/r]Response RIGHTY,RIGHTY[c/r]

19.3.4 Acquiring the break point status

Command format:

@?BREAK[c/r]

Response format:

k1,k2,k3,k4[c/r]

kn : Line number on which break point “n” is set (kn = 1 to 9999)

• When kn is 0, this means no break point is set.

• When a break point is set in the COMMON program, the line number shows +10000.

Meaning:• Acquires the break point status.

Example:Command @?BREAK[c/r]Response 12,35,0,0[c/r]

n NOTE• This command is valid only for

SCARA robot setting.• “s1” and “s2” are not displayed

when sub robot is not set.

Page 292: rcx40-pro

275

2

19. Online commands

19.3.5 Acquiring the controller configuration status

Command format:

@?CONFIG[c/r]

Response format:

mr/sr-ma/sa-r-o1-o2[c/r]

mr : Main robot name

sr : Sub robot name

ma : Main group axis setting (Auxiliary axes are shown separated by “+”.)

sa : Sub group axis setting (Auxiliary axes are shown separated by “+”.)

r : Standard interface unit

o1 : Option unit

o2 : Other setting

Meaning:• Acquires the controller configuration status.

Example:Command @?CONFIG[c/r]Response YK250X-XYZR-SRAM/196kB,DIO_N-DIO_N(1/2)[c/r]

19.3.6 Acquiring the execution level

Command format:

@?EXELVL[c/r]

Response format:

LEVELk[c/r]

k : Execution level (k = 0 to 8)

Meaning:• Acquires the execution level.

Example:Command @?EXELVL[c/r]Response LEVEL2[c/r]

n NOTE“s1” and “s2” are not displayed whensub robot is not set.

n NOTEFor a detailed description of theexecution level, refer to the robotcontroller owner’s manual.

Page 293: rcx40-pro

276

2

19. Online commands

19.3.7 Acquiring the mode status

Command format:

@?MOD[c/r]

Response format:

s[c/r]

s : Mode status

AUTO mode

PROGRAM mode

MANUAL mode

SYSTEM mode

English

AUTO

PROGRAM

MANUAL

SYSTEM

s Meaning

Meaning:• Acquires the controller mode status.

Example:Command @?MOD[c/r]Response AUTO[c/r]

19.3.8 Acquiring the message

Command format:

@?MSG[c/r]

Response format 1:

gg,bb:msg[c/r] orOK[c/r]

gg : Error group

bb : Error category

msg : Error message

Command format 2:

@?MSG m,n[c/r]

m : Top number to be acquired (m = 1 to 500)

m : Last number to be acquired (n = 1 to 500)

Page 294: rcx40-pro

277

2

19. Online commands

Response format 2:

yy/mm/dd,hh:mm gg,bb:msg[c/r]

yy/mm/dd,hh:mm gg,bb:msg[c/r] :OK[c/r]

yy/mm/dd : Date (year/month/day) when error occurred

hh:mm : Time (hour:minute) when error occurred

gg : Error group

bb : Error category

msg : Error message

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 5.30: Undefined identifier[c/r]

01/10/28,14:18 5.1: Syntax error[c/r]01/10/28,14:10 5.30: Undefined identifier[c/r]01/10/28,14:05 14.22: No start code[c/r]01/10/28,14:05 5.52: Command doesn’t exist[c/r]OK[c/r]

19.3.9 Acquiring the absolute reset status

Command format:

@?ABSRST[c/r]

Response format:

COMPLETE[c/r] or INCOMPLETE,xxxxxxxx[c/r]

COMPLETE : Absolute reset is complete.

INCOMPLETE : Absolute reset is incomplete.

xxxxxxxx : Absolute reset status of each axis (axis 1 to axis 8 from the right)

“0”: Incomplete

“1”: Complete

“9”: Not applicable

Meaning:• Acquires the absolute reset status.

Example:Command @?ABSRST[c/r]Response INCOMPLETE,99991011[c/r]

Page 295: rcx40-pro

278

2

19. Online commands

19.3.10 Acquiring the servo status

Command format:

@?SERVO[c/r]

Response format:

OFF,xxxxxxxx [c/r] or ON,xxxxxxxx[c/r]

• Response output means as follows:

ON : Motor power is ON.OFF : Motor power is OFF.xxxxxxxx : Status of each axis (axis 1 to axis 8 from the right)

“0”: Mechanical break ON + dynamic break ON“1”: Servo ON“2”: Mechanical break OFF + dynamic break OFF“9”: Not applicable

Meaning:• Acquires the servo status.

Example:Command @?SERVO[c/r]Response OFF,99991011[c/r]

19.3.11 Acquiring the sequence program execution status

Command format:

@?SEQUENCE[c/r]

Response format:

ENABLE,s[c/r] or ENABLE(RST.DO),s[c/r] or DISABLE[c/r]

• Response output means as follows:

ENABLE : EnabledENABLE(RST.DO): Enabled and output is cleared at emergency stopDISABLE : Disableds : Program execution is in progress or stopped. (s = RUNNUNG

or STOP)

Meaning:• Acquires the sequence program execution status.

Example:Command @? SEQUENCE[c/r]Response DISABLE[c/r]

Page 296: rcx40-pro

279

2

19. Online commands

19.3.12 Acquiring the speed setting status

Command format:

@?SPEED[c/r]

Response format:

ma/sa,mm/sm[c/r]

Main groupma : Automatic movement speed setting status (ma = 1 to 100)

mm : Manual movement speed setting status (mm = 1 to 100)

Sub groupsa : Automatic movement speed setting status (sa = 1 to 100)

sm : Manual movement speed setting status (sm = 1 to 100)

Meaning:• Acquires the speed setting status.

Example:Command @?SPEED[c/r]Response 100,50[c/r]

19.3.13 Acquiring the point coordinates and units

Command format:

@?UNIT[c/r]

Response format:

s [c/r]

s : Coordinates and units (s = PULSE: joint coordinate in “pulse” units, MM: Cartesiancoordinate in “mm” or “deg.” units)

Meaning:• Acquires the coordinates and units for point data.

Example:Command @?UNIT[c/r]Response PULSE[c/r]

n NOTE“s1” and “s2” are not displayed whensub robot is not set.

Page 297: rcx40-pro

280

2

19. Online commands

19.3.14 Acquiring the version information

Command format:

@?VER[c/r]

Response format:

cv,cr-mv-d1/d2/d3/d4/d5/d6/d7/d8{-ov}[c/r]

• Response output means as follows:

cv : Host version number (V8.xx)cr : Host revision number (Rxxxx)mv : MPB version number (V5.xx)d?(?:1-8) : Driver version number (Vx.xx)ov : Option unit version number (Vx.xx)

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]

19.3.15 Acquiring the current positions

19.3.15.1 Acquiring the current positions on pulse unit coordinates

Command format:

@?WHERE[c/r]@?WHERE2[c/r]

Response format:

[POS]xxxxxx yyyyyy zzzzzz rrrrrr aaaaaa bbbbbb[c/r]

xxxxxx : Current position of axis 1 in “pulse” units

yyyyyy : Current position of axis 2 in “pulse” units

:

bbbbbb : Current position of axis 6 in “pulse” units

Meaning:• Acquires the current positions.

WHERE : Acquires the current positions of main group axes.WHERE2 : Acquires the current positions of sub group axes.

Example:Command @?WHERE[c/r]Response [POS] 1000 2000 3000 -40000 0 0[c/r]

n NOTEWHERE2 cannot be used when subrobot is not set.

Page 298: rcx40-pro

281

2

19. Online commands

19.3.15.2Acquiring the current positions on XY coordinates

Command format:

@?WHRXY[c/r]@?WHRXY2[c/r]

Response format:

[POS] xxxxxx yyyyyy zzzzzz rrrrrr aaaaaa bbbbbb[c/r]

xxxxxx : Current position of axis 1 in “mm” units

yyyyyy : Current position of axis 2 in “mm” units

:

bbbbbb : Current position of axis 6 in “mm” units

Meaning:• Acquires the current positions.

WHEXY : Acquires the current positions of main group axes.WHEXY2 : 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]

19.3.16 Acquiring the tasks in RUN or SUSPEND status

Command format:

@?TASKS[c/r]

Response format:

n{,n{,{…}}}[c/r]

n : Task number currently run or suspended (n = 1 to 8)

Meaning:• Acquires the tasks in RUN or SUSPEND status.

Example:Command @?TASKS[c/r]Response 1,3,4,6[c/r]

n NOTEWHRXY2 cannot be used when subrobot is not set.

Page 299: rcx40-pro

282

2

19. Online commands

19.3.17 Acquiring the tasks operation status

Command format:

@?TSKMON[c/r]

Response format:

nfp,{nfp},{nfp},{nfp},{nfp},{nfp},{nfp},{nfp}[c/r]

n : Line number being executed in each tack (n = 1 to 8)

f : Status of each tack (f = R: RUN, U: SUSPEND, S: STOP)

p : Priority level of each task (p = 17 to 47)

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]

19.3.18 Acquiring the shift status

Command format:

@?SHIFT[c/r]

Response format:

m/s[c/r]

m : Shift number selected for main robot (m = 0 to 9)

s : Shift number selected for sub robot (s = 0 to 9)

Meaning:• Acquires the shift status.

Example:Command @?SHIFT[c/r]Response 1[c/r]

n NOTE“s” is not displayed when sub robot isnot set.

Page 300: rcx40-pro

283

2

19. Online commands

19.3.19 Acquiring the hand status

Command format:

@?HAND[c/r]

Response format:

m/s[c/r]

m : Hand number selected for main robot (m = 0 to 9)

s : Hand number selected for sub robot (s = 0 to 9)

Meaning:• Acquires the hand status.

Example:Command @?HAND[c/r]Response 1[c/r]

19.3.20 Acquiring the remaining memory capacity

Command format:

@?MEM[c/r]

Response format:

k/m[c/r]

k : Remaining source area (unit: bytes)

m : Remaining object area (unit: bytes)

Meaning:• Acquires the remaining memory capacity.

Example:Command @?MEM[c/r]Response 102543/1342[c/r]

n NOTE“s” is not displayed when sub robot isnot set.

Page 301: rcx40-pro

284

2

19. Online commands

19.3.21 Acquiring the emergency stop status

Command format:

@?EMG[c/r]

Response format:

k[c/r]

k : Emergency stop status (k = 0: normal operation, 1: emergency stop)

Meaning:• Acquires the emergency stop status by checking the internal emergency stop flag.

Example:Command @?EMG[c/r]Response 1[c/r]

19.3.22 Acquiring the error status by self-diagnosis

Command format:

@?SELFCHK[c/r]

Response format:• If an error occurred

m.n: ”message” [c/r] :END [c/r]

m : Shows error group

n : Shows error category

msg : Show error message

• When no error was found

OK [c/r]

Meaning:• Acquires the error status by self-diagnosis that checks for error inside the controller.

Example:Command @?SELFCHK[c/r]Response 12.1: Emg.stop on[c/r]

END[c/r]

Page 302: rcx40-pro

285

2

19. Online commands

19.3.23 Acquiring the option slot status

Command format:

@?OPSLOT[c/r]

Response format:

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]

“option boar name” : Name of option board installed in the controller.DIO_Nm : DIO board with NPN specifications (m: board ID)DIO_Pm : DIO board with PNP specifications (m: board ID)CCLnk : CC_LINK compatible boardno board : No option board is installed.illegal board : Incompatible board is installed.

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]

Page 303: rcx40-pro

286

2

19. Online commands

n NOTEFor more information about files, referto the earlier section "Data filedescription".

19.3.24 Data readout processing

Command format:

@READ “readout file” [c/r]

“readout file”: Designate a readout file name.

Response format:• Response output depends on the designated readout file.

Meaning:• Reads out the data from the designated file.

• Online commands that are input through the RS232C port have the same meaning asthe following command.

SEND <readout file> TO CMU

Type Readout file nameDefinition format

All Separate file

User memory

Variable,

constant

Status

Device

Others

All files

Program

Point data

Point comment

Parameter

Shift definition

Hand definition

Palette definition

Variable

Array variable

Constant

Program directory

Parameter directory

Machine reference

Error log

Memory size

DI port

DO port

MO port

TO port

LO port

SI port

SO port

File end code

ALL

PGM

PNT

PCM

PRM

SFT

HND

PLT

VAR

ARY

––––

DIR

DPM

MRF

LOG

MEM

DI ()

DO ()

MO ()

TO ()

LO ()

SI ()

SO ()

EOF

––––

<bbbbbbbb>

Pn

––––

/cccccc/

Sn

Hn

PLn

ab...by

ab...by (x)

“cc...c”

<<bbbbbbbb>>

––––

––––

––––

––––

DIn ()

DOn ()

MOn ()

TOn ()

LOn ()

SIn ()

SOn ()

––––

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]

Page 304: rcx40-pro

287

2

19. Online commands

19.3.25 Data write processing

Command format:

@WRITE “write file” [c/r]

“write file” : Designate a write file name.

Response format:• The following response appears asking you to enter the data to write.

*** Please enter !

• The following response appears when writing to the designated file has been finished.

OK[c/r]

Meaning:• Writes the data from the designated file.

• Online commands that are input through the RS232C port have the same meaning asthe following command.

SEND CMU TO <write file>

Type Write file nameDefinition format

All Separate file

User memory

Variable,

constant

Device

All files

Program

Point data

Point comment

Parameter

Shift definition

Hand definition

Palette definition

Variable

Array variable

DO port

MO port

TO port

LO port

SO port

ALL

PGM

PNT

PCM

PRM

SFT

HND

PLT

VAR

ARY

DO ()

MO ()

TO ()

LO ()

SO ()

––––

<bbbbbbbb>

Pn

––––

/cccccc/

Sn

Hn

PLn

ab...by

ab...by (x)

DOn ()

MOn ()

TOn ()

LOn ()

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]

n NOTEFor more information about files, referto the earlier section "Data filedescription".

Page 305: rcx40-pro

288

2

19. Online commands

19.4 Executing the robot language independently

19.4.1 Switching the program

Command format:

@SWI <program name>[c/r]

Response format:

OK[c/r] or LINEx,m,n:”message”

OK : Program was switched correctly.LINEx,m,n : ”message” Error occurred during compiling.x: Shows the line number on which error occurred.m : Shows error groupn : Shows error categorymessage : Show error message

Meaning:• Switches the program.

• In AUTO mode, the program that is switched to will be complied.

• In other modes, the program is only switched.

However, when “SEQUENCE” program is designated, a sequence object is created.

Example: AUTO modeCommand @SWI <TEST1>[c/r]Response 5.39:Line2,Illegal identifier[c/r]

Example: Other modesCommand @SWI <TEST1>[c/r]Response OK[c/r]

Page 306: rcx40-pro

289

2

19. Online commands

19.4.2 Other robot language command processing

Command format:

@”robot language”[c/r]

Response format:

OK[c/r] or *** Aborted[c/r]

• Response output means as follows:

OK : Command was executed correctly.*** Aborted[c/r] : 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]

19.5 Control codes

19.5.1 Interrupting the command execution

Command format:

^C (=03H)

Response format:

*** Aborted[c/r]

Meaning:• Interrupts execution of the current command.

Example:Command @MOVE P,P100,S=20[c/r]

^CResponse *** Aborted[c/r]

Page 307: rcx40-pro

290

20. IO command format

20.1 IO command format

The following features are assigned to each IO.Output (Controller → PLC) Input (Controller ← PLC)

Output porDO26DO27

Input portDI05DI2()DI3()DI4()

ContentsExecution check output

Execution in-progress output

ContentsIO command execution trigger input

Command codeCommand data

■ IO commands can be executed by using part of the general-purpose input and output.When no connection is made to the option DIO, DI4() is always recognized to beOFF.

■ IO commands cannot be executed while program execution is in progress (DO13 isON).

■ IO commands cannot be executed simultaneously with on-line instructions.

■ IO commands assign command codes to be executed to DI2(), and command data toDI3() and DI4(). These are executed when the DI05 is changed from OFF to ON. Thecontroller processes the IO commands when they are received and sends executioncheck results and execution in-progress information to the PLC via DO26 and DO27.

■ 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 mustalways 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 datainto the higher address. (little endian)For example, to set 0x0F9F [hexadecimal] (=3999) in the DI13 () and DI14 () ports,set 0x0F [hexadecimal] in DI4 () and set 0x9F [hexadecimal] in DI13 ().

■ The IO command execution trigger is disabled when the execution in-progress outputDO27 is ON.

■ The execution in-progress output DO27 is ON in the following cases.• When an IO command is running after receiving IO command execution trigger

input.• When an IO command is terminated after receiving IO command execution trigger

input yet a maximum of 100ms state is maintained when IO command trigger inputis ON.

■ The IO command trigger input pulse must always be maintained for 100ms or moreduring input. Commands cannot be accepted if this state is not maintained.

■ Sometimes 20ms or more is needed for the execution in-progress output DO27 to turnON after startup (rising edge) of the IO command trigger input pulse. The IO com-mand trigger input might not be accepted during this period.

■ After inputting the IO command trigger input pulse and the in-progress output turnsOFF, 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 inputmight not be accepted.

■ The execution check output DO26 turns OFF when an IO command is received.

■ The execution check output DO26 turns ON when an IO command ends normally, butit remains OFF if the IO command ends abnormally.

Using bit information (DI/DO port) of 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 RS232C port.

c CAUTIONIO commands are valid only when thesoftware version is V8.18 or later.

n NOTEGeneral-purpose outputs DO26 andDO27 are used when executing an IOcommand. Pay attention to this pointwhen you are using them for otherpurpose.

Page 308: rcx40-pro

291

2

20. IO command format

20.2 Sending and receiving IO commandsSending and receiving is performed in the IO register as shown below.

q

e t

t

w r

r

q r

Input port

Output port

Execution end

100ms or more

30ms or more

DI05

DI2( )

DI3( ) to DI4( )

DO27

DO26

q Set command code and command data (Time interval between (1) and (2): 30ms ormore)

w Set IO command execution trigger input (Pulse width: 100ms or more)

e Transition to execute

r Clear the IO command trigger input and command code and command data

t Set termination of IO command and execution check output

Example : Follow these steps when sending and receiving IO commands to execute thePTP movement command to point 19.

q Set the following values in the register to execute the PTP movement command bydesignating a point.

DI2 ( ) : Command code (0x01)

DI3 ( ) : Lower point setting (0x13= point 19)

DI4 ( ) : Upper point setting (0x00=point 19)

w Set to ON after DI05 turns OFF.

e The controller receives the IO command and executes it if the command and commanddata are acceptable. The in-progress output (DO27) turns ON and the execution checkoutput (DO26) is turned OFF at this time. The robot moves to the position specifiedby point 19.

r Clear DI2 ( ) through DI4 ( ) after checking that in-progress output (DO27) is ON.

t The command has ended so in-progress output (DO27) turns OFF and execution checkoutput (DO26) turns ON if command ended correctly, and turns OFF if the commandfailed.

* If DI05 was not set to OFF in r, the in-progress output (DO27) remains ON for amaximum of 100ms from the timing in t.

q

e t

t

w r

r

q r

Input port

Output port

Execution end

100ms

DI05

DI2( )

DI3( ) to DI4( )

DO27

DO26

Page 309: rcx40-pro

292

2

20. IO command format

20.3 IO command listIO commands are expressed with hexadecimal codes.

Command contentsCommand code (DI2( ))Main robot Sub robot

0x010x030x090x180x200x240x280x300x310x340x350x360x370x380x390x3A0x3B0x3C0x3D0x3E

0x81

0x890x980xA00xA40xA80xB00xB10xB40xB50xB6

0xB80xB90xBA0xBB0xBC0xBD

No.

1

23456789

10111213141516

MOVE command

MOVEI commandPallet movement commandJog movement commandInching movement commandPoint teachingAbsolute movement commandAbsolute commandServo command

Manual movement speedAuto movement speedProgram speed changeShift designation change commandHand designation change commandArm designation change commandPoint unit designation command

PTP point designationLinear interpolationPTP designationPTP designation at pallet 0

OnOffFreePower-on

* Linear interpolation No.1 with the MOVE command is only possible on the main robot.* The pallet movement command No.3 is only valid for pallet 0.* The movement methods on the jog movement command No.4 and inching movement command No.5 will

differ according to the point units that were specified.* The point teaching command No.6 uses different point units according to the point units that were specified.* The point unit designation command No.16 is for use on the controller.

Page 310: rcx40-pro

293

2

20. IO command format

20.4 IO command description

20.4.1 MOVE command

Execute this command group to move the robot to an absolute position.

20.4.1.1 PTP designation

This command moves the robot to a target position in PTP motion by specifying the pointnumber.

Command

Contents Value0x010x81

0xpppp

DI portDI2()

DI3()DI4()

Command code

Point number

For main robot For sub robot

pppp: Specify the point number in 16 bits.Specified range: 0 (=0x0000) to 4000 (=0x0FA0)

20.4.1.2 Linear interpolation

This command moves the robot to a target position by linear interpolation by specifyingthe point number. The sub robot is not subject to this command.

Command

Contents Value0x03

0xpppp

DI portDI2()DI3()DI4()

Command codePoint number

For main robot

pppp: Specify the point number in 16 bits.Specified range: 0 (=0x0000) to 4000 (=0x0FA0)

20.4.2 MOVEI command

Execute this command group to move the robot to a relative position.

20.4.2.1 PTP designation

This command moves the robot a specified distance in PTP motion by specifying thepoint number.

Command

Contents Value0x090x89

0xpppp

DI portDI2()

DI3()DI4()

Command code

Point number

For main robot For sub robot

pppp: Specify the point number in 16 bits.Specified range: 0 (=0x0000) to 4000 (=0x0FA0)

c CAUTIONThe point number setting range is 0to 255 when DI4() does not exist.

c CAUTIONThe point number setting range is 0to 255 when DI4() does not exist.

c CAUTIONThe point number setting range is 0to 255 when DI4() does not exist.

Page 311: rcx40-pro

294

2

20. IO command format

20.4.3 Pallet movement command

Execute this command group to move the robot to a position with respect to pallet 0.

20.4.3.1 PTP designation

This command moves the robot to a target position in PTP motion by specifying the workposition number.

Command

Contents Value0x180x98

0xwwww

DI portDI2()

DI3()DI4()

Command code

Work position number

For main robot For sub robot

wwww : Specify the work position number in 16 bits.Specified range: 1 (=0x0001) to 32767 (=0x7FFF)

20.4.4 Jog movement command

This command moves the robot in jog mode while in MANUAL mode. This command isonly valid in MANUAL mode.This command is linked with the controller point display units. The robot axis moves inPTP motion when display units are in pulses, and moves by linear interpolation on Carte-sian coordinates when units are in millimeters.Jog speed is determined by the MANUAL speed.

To stop the jog movement command, set the dedicated input interlock signal (DI10) toOFF. After checking that jog movement has stopped, set the interlock signal back to ON.

Command

Contents Value0x200xA0

tt

0d

0x00

DI portDI2()

DI3()

DI4()

Command code

Axis to move anddirection

Not used

For main robot For sub robot bit 0 Axis 1 bit 1 Axis 2 bit 2 Axis 3 bit 3 Axis 4 bit 6-bit 4 (0:Fixed) bit 7 Direction

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.

Value01

Meaning+ direction- direction

c CAUTIONThe work position number settingrange is 0 to 255 when DI4() does notexist.

Page 312: rcx40-pro

295

2

20. IO command format

20.4.5 Inching movement command

Execute this command to move the robot by inching in MANUAL mode. Inching move-ment distance is linked to the manual movement speed. The inching command can onlybe executed in MANUAL mode.This command is linked with the controller’s point display unit system. So when displayunits are in pulses, the axis moves a certain number of pulses at the manual speed setting.When display units are in millimeters, the axis moves on Cartesian coordinates by linearinterpolation at the manual speed setting divided by 100.

Command

Contents Value0x240xa4

tt

0d

0x00

DI portDI2()

DI3()

DI4()

Command code

Axis to move and direction

Not used

For main robot For sub robot bit 0 Axis 1 bit 1 Axis 2 bit 2 Axis 3 bit 3 Axis 4 bit 6-bit 4 (0:Fixed) bit 7 Direction

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.

Value01

Meaning+ direction- direction

20.4.6 Point teaching command

Execute this command to teach the current robot position to the specified point number.Point data units of this command are linked to the controller's point display unit system.

Command

Contents Value0x280xA8

0xpppp

DI portDI2()

DI3()DI4()

Command code

Point number

For main robot For sub robot

pppp: Specify the point number in 16 bits.Specified range: 0 (=0x0000) to 4000 (=0x0FA0)

c CAUTIONThe point number setting range is 0to 255 when DI4() does not exist.

Page 313: rcx40-pro

296

2

20. IO command format

20.4.7 Absolute reset movement command

When absolute reset of the specified axis uses the mark method, this command moves theaxis to the nearest position where absolute reset can be executed.Positions capable of absolute reset are located at every 1/4 rotation of the motor.

Command

Contents Value0x300xB0

tt

0d

0x00

DI portDI2()

DI3()

DI4()

Command code

Axis to move anddirection

Not used

For main robot For sub robot bit 0 Axis 1 bit 1 Axis 2 bit 2 Axis 3 bit 3 Axis 4 bit 6-bit 4 (0:Fixed) bit 7 Direction

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.

Value01

Meaning+ direction- direction

20.4.8 Absolute reset command

This command executes absolute reset of the specified axis.When absolute reset of the specified axis uses the mark method, the axis must be at aposition where absolute reset can be executed.When no axis is specified, absolute reset is performed on all axes. However, this com-mand cannot be executed if return-to-origin is not yet complete on the axis using the markmethod. In this case, perform return-to-origin individually on each axis.

Command

Contents Value0x310xB1

tt

00x00

DI portDI2()

DI3()

DI4()

Command code

Specify the axis

Not used

For main robot For sub robot bit 0 Axis 1 bit 1 Axis 2 bit 2 Axis 3 bit 3 Axis 4 bit 7-bit 4 (0:Fixed)

tt : Specify the axis to move in 0 to 3 bits. Only one axis can be specified.If no particular axis is specified then absolute reset is performed on all axes.

Page 314: rcx40-pro

297

2

20. IO command format

20.4.9 Servo command

Execute this command group to operate the robot servos.ContentsOperation

Execute this command to turn on the servo of a specified axis. The motor power must be turned on when specifying the axis.All controller servos are turned on if no axis is specified.

Execute this command to turn off the servo of a specified axis. All controller servos are turned off if no axis is specified.

Execute this command to turn off the mechanical brake and dynamic brake after turning off the servo of a specified axis. Servo OFF and Free are repeated when this command is consecutively executed.

Execute this command to turn on the motor power.No axis can be specified.

Servo ON

Servo OFF

Servo Free

Power ON

Command

Contents Value0x340xB40x350xB50x360xB60x37

tt

00x00

DI portDI2()

DI3()

DI4()

Command code

Specify the axis

Not used

Servo ON For main robot For sub robot Servo OFF For main robot For sub robot Servo Free For main robot For sub robot Power ON All controller servos bit 0 Axis 1 bit 1 Axis 2 bit 2 Axis 3 bit 3 Axis 4 bit 7-bit 4 (0:Fixed)

tt : Specify the axis to move in 0 to 3 bits. All controller servos are processed if no axisis specified. No axis can be specified when executing Power ON.

Page 315: rcx40-pro

298

2

20. IO command format

20.4.10 Manual speed change command

Execute this command to change the manual movement speed in MANUAL mode.This command can only be executed in MANUAL mode.

Command

Contents Value0x380xB80xss0x00

DI portDI2()

DI3()DI4()

Command code

Specified speedNot used

For main robot For sub robot

ss : Specify the manual movement speed in 8 bits.Specified range: 1 (=0x01) to 100 (=0x64)

20.4.11 Auto speed change command

Execute this command to change the auto movement speed in AUTO mode.This command can only be executed in AUTO mode.

Command

Contents Value0x390xB90xss0x00

DI portDI2()

DI3()DI4()

Command code

Specified speedNot used

For main robot For sub robot

ss : Specify the auto movement speed in 8 bits.Specified range: 1 (=0x01) to 100 (=0x64)

20.4.12 Program speed change command

Execute this command to change the program speed in AUTO mode.The program speed changed with this command is reset to 100% when the program isreset or changed.

Command

Contents Value0x3A0xBA0xss0x00

DI portDI2()

DI3()DI4()

Command code

Specified speedNot used

For main robot For sub robot

ss : Specify the program speed in 8 bits.Specified range: 1 (=0x01) to 100 (=0x64)

Page 316: rcx40-pro

299

2

20. IO command format

20.4.13 Shift designation change command

Execute this command to change the selected shift to a specified shift number.

Command

Contents Value0x3B0xBB0xss0x00

DI portDI2()

DI3()DI4()

Command code

Specified shift numberValue

For main robot For sub robot

ss : Specify the shift number in 8 bits.Specified range: 0 (=0x00) to 9 (0x09)

20.4.14 Hand designation change command

Execute this command to change the selected hand to a specified hand number.

Command

Contents Value0x3C0xBC0xss0x00

DI portDI2()

DI3()DI4()

Command code

Specified hand numberNot used

For main robot For sub robot

ss : Specify the hand number in 8 bits.Specified range for main robot : 0 (=0x00) to 3 (0x03)Specified range for sub robot : 4 (=0x04) to 7 (0x07)

20.4.15 Arm designation change command

Execute this command to change the arm designation status.

Command

Contents Value0x3D0xBD0xss0x00

DI portDI2()

DI3()DI4()

Command code

Status of specified armNot used

For main robot For sub robot

ss : Specify the arm designation status in 8 bits.

Value0x000x01

MeaningRight-handed systemLeft-handed system

20.4.16 Point display unit designation command

Execute this command to change the point display unit.

Command

Contents Value0x3E0xBE0xss0x00

DI portDI2()

DI3()DI4()

Command code

Display units for specified pointNot used

For main robot For sub robot

ss : Specify the point display unit in 8 bits.

Value0x000x01

MeaningPulse units

Millimeter units

Page 317: rcx40-pro

300

ABSADJABSADJ2ABSRESETABSRESET2ABSRPOSABSRPOS2ABSRSTABOVEABSACCACCELACCEL2ACCESSALLANDARCHARCH2ARMARM2ARMTYPEARMTYPE2ARYASPEEDASPEED2ATNATN2ATTRAUTOAXWGHTAXWGHT2BELOWBINBITBREAKBYTECALLCASECHANGECHANGE2CHGPRICHGTSKCHRCMUCMU1CONFIGCONTCOOCOPYCOSCUTDATEDECDECELDECEL2DECLARE

DEFDEFIODEFPOSDEGRADDELAYDIDIMDIRDISTDODPMDRIVEDRIVE2DRIVEIDRIVEI2ELSEELSEIFEMGRSTEMGENDENDIFEOFERAERLERRERRORETHEXELVLEXITEXITTASKFDDFLIPFNFORFREEFUNCTIONGASPGENGOGOHOMEGOSUBGOTOHALTHANDHAND2HNDHEXHOMEHOLDIFININCHINCH2INITINPUT

INTINTEGERIRETJTOXYJTOXY2JOGJOG2LANGUAGELEFTLEFTYLEFTY2LENLETLOCALOCBLOCFLOCRLOCXLOCYLOCZLOGLOOPLSHIFTMANUALMCHREFMCHREF2MEMMIDMIRRORMODMOVEMOVE2MOVEIMOVEI2MRFMSGMSGCLRMSPEEDMSPEED2NAMENEXTNONFLIPNOTOFFOFFLINEONONLINEORORDORGORDORGORD2ORIGINOUTOUTPOSOUTPOS2

PPASSPADDRPCPCMPDEFPLNPLTPMOVEPMOVE2PRINTPROGRAMPGMPNTPOSPPNTPRMPTPPWRRADDEGREADREFRENRELESEREMREMOTERESETRESTARTRESUMERETURNRIGHTRIGHTYRIGHTY2ROROTATERSHIFTRUNRWSSELECTSENDSEQUENCESERVOSERVO2SETSFTSGISGRSHAREDSHIFTSHIFT2SISIDSINSIW

SKIPSOSODSOWSPEEDSPEED2SQRSTARTSTEPSTOPSTOPONSTRSUBSUSPENDSWISYSSYSTEMTANTASKTASKSTCOUNTERTEACHTHENTIMETIMERTOTOLETOLE2TORQUETORQUE2TSKMONUNITUNTILVALVARVERVELWAITWEIGHTWEIGHT2WENDWHEREWHERE2WHILEWHRXYWHRXY2WORDWRITEXORXYXYTOJXYTOJ2YZZX_SYSFLG

Appendix

A. Reserved word list

n NOTEThe above words are reserved for robot language and cannot be used as identifiers (variables, etc.).