Epson C12XL 6-Axis Robot Manual | Manualzz

EPSON RC+ 7.0

Ver.7.4

SPEL

+

Language

Reference

Rev.8 EM19XS4122F

EPSON RC+ 7.0 (Ver.7.4)

SPEL

Rev.8

+

Language Reference

Copyright  2012-2019 SEIKO EPSON CORPORATION. All rights reserved.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 i

FOREWORD

WARRANTY

Thank you for purchasing our robot products.

This manual contains the information necessary for the correct use of the EPSON RC+ 7.0 software.

Please carefully read this manual and other related manuals before installing the robot system.

Keep this manual handy for easy access at all times.

The robot and its optional parts are shipped to our customers only after being subjected to the strictest quality controls, tests, and inspections to certify its compliance with our high performance standards.

Product malfunctions resulting from normal handling or operation will be repaired free of charge during the normal warranty period. (Please contact the supplier of your region for warranty period information.)

However, customers will be charged for repairs in the following cases (even if they occur during the warranty period):

1. Damage or malfunction caused by improper use which is not described in the manual, or careless use.

2. Malfunctions caused by customers’ unauthorized disassembly.

3. Damage due to improper adjustments or unauthorized repair attempts.

4. Damage caused by natural disasters such as earthquake, flood, etc.

Warnings, Cautions, Usage:

1. If the robot or associated equipment is used outside of the usage conditions and product specifications described in the manuals, this warranty is void.

2. If you do not follow the WARNINGS and CAUTIONS in this manual, we cannot be responsible for any malfunction or accident, even if the result is injury or death.

3. We cannot foresee all possible dangers and consequences. Therefore, this manual cannot warn the user of all possible hazards. ii EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

TRADEMARKS

Microsoft, Windows, Windows logo, Visual Basic, and Visual C++ are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Pentium is a trademark of Intel Corporation. Other brand and product names are trademarks or registered trademarks of the respective holders.

TRADEMARK NOTATION IN THIS MANUAL

Microsoft® Windows® 7 Operating system

Microsoft® Windows® 8 Operating system

Microsoft® Windows® 10 Operating system

Throughout this manual, Windows 7, Windows 8, and Windows 10 refer to above respective operating systems. In some cases, Windows refers generically to Windows 7,

Windows 8, and Windows 10.

NOTICE

No part of this manual may be copied or reproduced without authorization.

The contents of this manual are subject to change without notice.

Please notify us if you should find any errors in this manual or if you have any comments regarding its contents.

MANUFACTURER

CONTACT INFORMATION

Contact information is described in “SUPPLIERS” in the first pages of the following manual:

Robot System Safety and Installation Read this manual first

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 iii

SAFETY PRECAUTIONS

Installation of robots and robotic equipment should only be performed by qualified personnel in accordance with national and local codes. Please carefully read this manual and other related manuals when using this software.

Keep this manual in a handy location for easy access at all times.

WARNING

This symbol indicates that a danger of possible serious injury or death exists if the associated instructions are not followed properly.

CAUTION

This symbol indicates that a danger of possible harm to people or physical damage to equipment and facilities exists if the associated instructions are not followed properly. iv EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands 1

System Management Commands ................................................................ 1

Robot Control Commands ............................................................................ 2

Torque Commands ........................................................................................ 7

Input / Output Commands ............................................................................. 7

Point Management Commands .................................................................... 9

Coordinate Change Commands ................................................................. 10

Program Control Commands ....................................................................... 11

Program Execution Commands .................................................................. 12

Pseudo Statements ..................................................................................... 12

File Management Commands ..................................................................... 13

Fieldbus Commands .................................................................................... 14

Numeric Value Commands ......................................................................... 14

String Commands ....................................................................................... 15

Logical Operators ........................................................................................ 15

Variable Commands .................................................................................... 16

Security Commands .................................................................................... 16

Conveyor Tracking Commands ................................................................... 16

Force Sensing Commands .......................................................................... 17

DB Commands ............................................................................................ 17

PG Commands ............................................................................................ 17

Collision Detection Commands ................................................................... 17

Parts Consumption Commands ................................................................... 18

Simlator Commands..................................................................................... 19

SPEL+ Language Reference 20

SPEL+ Error Messages

Appendix A: SPEL+ Command Use Condition List

Appendix B: Precaution of Compatibility

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Table of Contents

791

921

931

B-1: Precaution of EPSON RC+ 6.0 Compatibility .................................... 931

B-2: Precaution of EPSON RC+ 5.0 Compatibility .................................... 941

B-3: Precaution of EPSON RC+ Ver.4.* Compatibility ............................... 952 v

Table of Contents

Appendix C: Commands of EPSON RC+7.0 963

C-1: List of Commands Added EPSON RC+4.0 or Later .......................... 963

C-2: List of Commands Added for Each Version of EPSON RC+ 7.0 ........ 966

C-3: Deletion Commands (Sort by Version) ............................................... 972 vi EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands

Summary of SPEL

+

Commands

The following is a summary of SPEL+ commands.

System Management Commands

Reset

SysConfig

SysErr

Date

Time

Date$

Time$

Hour

Stat

CtrlInfo

RobotInfo

RobotInfo$

TaskInfo

TaskInfo$

DispDev

EStopOn

CtrlDev

Cls

Resets the controller.

Displays controller setup.

Returns the latest error status or warning status.

Sets the system date.

Sets system time.

Returns the system date as a string.

Returns system time as a string.

Displays / returns controller operation time.

Returns controller status bits.

Returns controller information.

Returns robot information.

Returns robot text information.

Returns task information.

Returns task text information.

Sets the current display device.

Return the Emergency Stop status.

Returns the current control device number.

Clears the EPSON RC+ 6.0 Run, Operator, or Command window text area.

Clears the TP print panel.

Toff

Ton

SafetyOn

Eval

Turns off execution line display on the LCD.

Specifies a task which shows an execution line on the LCD.

Return the Safety Door open status.

Executes a Command window statement from a program and returns the error status.

ShutDown Shuts down EPSON RC+ and optionally shuts down or restarts

Windows.

TeachOn

WindowsStatus

Returns the Teach mode status.

Returns the Windows startup status.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 1

Summary of SPEL+ Commands

Robot Control Commands

AIO_TrackingSet

AIO_TrackingStart

AIO_TrackingEnd

Sets the distance tracking function.

Starts the distance tracking function.

Ends the distance tracking function.

AIO_TrackingOn Function Returns the status of the distance tracking function.

AtHome Retunes if the current robot orientation is Home position or not.

Calib Replaces the current arm posture pulse values with the current

CalPls values.

CalPls

Hofs

MCal

MCalComplete

MCordr

Specifies and displays the position and orientation pulse values for calibration.

Returns the offset pulses used for software zero point correction.

Executes machine calibration for robots with incremental encoders.

Returns status of MCal.

Specifies and displays the moving joint order for machine calibration Mcal. Required only for robots with incremental encoders.

Power

Motor

MHour Function

SFree

SLock

SyncRobots

Jump

Jump3

Jump3CP

JumpTLZ

Arch

LimZ

LimZMargin

Start the reserved robot motion.

Jumps to a point using point to point motion.

Jumps to a point using 3D gate motion.

Jumps to a point using 3D motion in continuous path.

Jumps to a point using 3D gate motion.

Sets / returns arch parameters for Jump motion.

Sets the upper Z limit for the Jump command.

Sets / returns the margin for error detection when the operation starts at the position higher than LimZ value.

Sense

Sets / returns servo power mode.

Sets / returns motor status.

Returns the accumulated MOTOR ON time of the robot motors.

Removes servo power from the specified servo axis.

Restores servo power to the specified servo axis.

JS

JT

Sets / returns the condition to stop the manipulator above the target coordinate when Sense is specified by Jump command.

Returns status of Sense operation.

Returns the status of the most recent Jump command for the current robot.

Go

Pass

Pulse

BGo

BMove

Moves the robot to a point using point to point motion.

Executes simultaneous four joint Point to Point motion, passing near but not through the specified points.

Moves the robot to a position defined in pulses.

Executes Point to Point relative motion, in the selected local coordinate system.

Executes linear interpolation relative motion, in the selected local coordinate system.

2 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands

TGo

TMove

Till

TillOn

!…!

Speed

Accel

SpeedFactor

Inertia

Weight

Arc

Arc3

Move

Curve

Executes Point to Point relative motion, in the current tool coordinate system.

Executes linear interpolation relative motion, in the selected tool coordinate system.

Specifies motion stop when input occurs.

Returns the current Till status.

Process statements during motion.

Sets / returns speed for point to point motion commands.

Sets / returns acceleration and deceleration for point to point motion.

Sets / returns speed for point to point motion commands.

Specifies or displays the inertia settings for the robot arm.

Specifies or displays the weight settings for the robot arm.

CVMove

Moves the arm using circular interpolation.

Moves the arm in 3D using circular interpolation.

Moves the robot using linear interpolation.

Defines the data and points required to move the arm along a curved path. Many data points can be defined in the path to improve precision of the path.

Performs the continuous spline path motion defined by the Curve instruction.

SpeedS

AccelS

SpeedR

AccelR

AccelMax

Brake

Home

HomeClr

HomeDef

HomeSet

Hordr

InPos

CurPos

TCPSpeed

Pallet

PalletClr

Fine

FineDist

FineStatus Function

Sets / returns speed for linear motion commands.

Sets / returns acceleration and deceleration for linear motion.

Sets / returns speed for tool rotation.

Sets / returns acceleration and deceleration for tool rotation.

Returns maximum acceleration value limit available for Accel.

Turns brake on or off for specified joint of the current robot.

Moves robot to user defined home position.

Clears the home position definition.

Returns status of home position definition.

Sets user defined home position.

Sets motion order for Home command.

Checks if robot is in position (not moving).

Returns current position while moving.

Returns calculated current tool center point velocity.

Defines a pallet or returns a pallet point.

Clears a pallet definition.

Specifies and displays the positioning error limits. (Unit: pulse)

Specifies and displays the positioning error limits (Unit: mm)

Returns whether Fine or FineDist is used by the integer.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 3

Summary of SPEL+ Commands

QP

QPDecelR

QPDecelS

CP

Box

BoxClr

BoxDef

Plane

PlaneClr

PlaneDef

InsideBox

InsidePlane

GetRobotInsideBox

GetRobotInsidePlane

Find

FindPos

PosFound

WaitPos

Robot

RobotModel$

RobotName$

RobotSerial$

RobotType

TargetOK

JRange

Range

XYLim

XYLimClr

XYLimDef

XY

4

Sets / returns Quick Pause status.

Sets the deceleration speed of quick pause for the change of tool orientation during the CP motion.

Sets the deceleration speed of quick pause in the CP motion.

Sets CP (Continuous Path) motion mode.

Specifies and displays the approach check area.

Clears the definition of approach check area.

Returns whether Box has been defined or not.

Specifies and displays the approach check plane.

Clears (undefines) a Plane definition.

Returns the setting of the approach check plane.

Returns the check status of the approach check area.

Returns the check status of the approach check plane.

Returns a robot which is in the approach check area.

Returns a robot which is in the approach check plane.

Specifies or displays the condition to store coordinates during motion.

Returns a robot point stored by Find during a motion command.

Returns status of Find operation.

Waits for robot to decelerate and stop at position before executing the next statement while path motion is active.

Selects the current robot. (Returns the robot number by Robot

Function)

Returns the robot model name.

Returns the robot name.

Returns the robot serial number.

Returns the robot type.

Returns a status indicating whether or not the PTP (Point to Point) motion from the current position to a target position is possible.

Sets / returns joint limits for one joint.

Sets limits for all joints.

Sets or displays the permissible XY motion range limits for the robot.

Clears the XYLim definition.

Returns whether XYLim has been defined or not.

Returns a point from individual coordinates that can be used in a point expression.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands

Dist

PTPBoost

PTPTime

PTPBoostOK

CX

CY

CZ

CU

CV

CW

CR

CS

CT

Pls

Agl

PAgl

JA

AglToPls

DegToRad

RadToDeg

Returns the distance between two robot points.

Specifies or displays the acceleration, deceleration and speed algorithmic boost parameter for small distance PTP (point to point) motion.

Returns whether or not the PTP (Point to Point) motion from a current position to a target position is a small travel distance.

Returns the estimated time for a point to point motion command without executing it.

Sets / returns the X axis coordinate of a point.

Sets / returns the Y axis coordinate of a point.

Sets / returns the Z axis coordinate of a point.

Sets / returns the U axis coordinate of a point.

Sets / returns the V axis coordinate of a point.

Sets / returns the W axis coordinate of a point.

Sets / returns the R axis coordinate of a point.

Sets / returns the S axis coordinate of a point.

Sets / returns the T axis coordinate of a point.

Returns the pulse value of one joint.

Returns joint angle at current position.

Return a joint value from a specified point.

Returns a robot point specified in joint angles.

Converts robot angles to pulses.

Converts degrees to radians.

Converts radians to degrees.

Joint

JTran

PTran

RealPls

RealPos

RealAccel Function

PPls

Displays the current position for the robot in joint coordinates.

Perform a relative move of one joint.

Perform a relative move of one joint in pulses.

Returns the pulse value of the specified joint.

Returns the current position of the specified robot.

Returns the Accel value automatically adjusted by OLAccel.

LJM Function

Return the pulse position of a specified joint value from a specified point.

Returns the point data with the orientation flags converted to enable least joint motion when moving to a specified point based

AutoLJM

AutoLJM Function

AutoOrientationFlag on the reference point.

Sets the Auto LJM

Returns the state of the Auto LJM

Changes orientation flag of N6-A1000**

AutoOrientationFlag Function Returns the state of the AutoOrientationFlag

AvoidSingularity Sets the Singularity avoiding function

AvoidSingularity Function

SingularityAngle

Returns the state of the Singularity avoiding function

Sets the singularity neighborhood angle for the singularity avoiding function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 5

Summary of SPEL+ Commands

SingularityAngle Function

SingularitySpeed

Returns the singularity neighborhood angle for the singularity avoiding function

Sets the singularity neighborhood speed for the singularity avoiding function

SingularitySpeed Function Returns the singularity neighborhood speed for the singularity avoiding function

SingularityDist Sets the singularity neighborhood distance necessary for the singularity avoiding function.

SingularityDist Function Returns the singularity neighborhood distance necessary for the singularity avoiding function.

AbortMotion

Align Function

Aborts a motion command and puts the running task in error status.

AlignECP Function

Returns point data converted to align robot orientation with the nearest coordinate axis in local coordinate system.

Returns point data converted to align robot orientation with a nearest coordinate axis in ECP coordinate system.

SoftCP

SoftCP Function

Here

Where

PerformMode

PerformMode Function

VSD

VSD Function

CP_Offset

CP_Offset Function

AvgSpeedClear

AvgSpeed

AvgSpeed Function

PeakSpeedClear

PeakSpeed

PeakSpeed Function

Sets / returns SoftCP motion mode.

Returns the status of SoftCP motion mode.

Teach a robot point at the current position.

Displays current robot position data.

Sets the mode of the robot.

Returns the robot performance mode number.

Sets the variable speed CP motion of SCARA robots.

Returns the variable speed CP motion setting of SCARA robots.

executing CP On.

Returns the offset time to start the subsequent motion command when executing CP On.

Clears and initializes the average of the joint speed.

Displays the average of the joint speed.

Returns the average value of the joint speed.

Clears and initializes the peak speed for one or more joints.

Displays the peak speed values for the specified joint.

Returns the peak speed for the specified joint.

Sets the offset time to start the subsequent motion command when

6 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands

Torque Commands

TC

TCSpeed

TCLim

RealTorque

Returns the torque control mode setting and current mode.

Specifies the speed limit in the torque control.

Specifies the torque limit of each joint for the torque control mode.

Returns the current torque instruction value of the specified joint.

ATCLR

ATRQ

PTCLR

PTRQ

Clears and initializes the average torque for one or more joints.

Displays the average torque for the specified joint.

Clears and initializes the peak torque for one or more joints.

Displays the peak torque for the specified joint.

OLAccel

OLRate

Sets up the automatic adjustment of acceleration/deceleration that is adjusted.

Display overload rating for one or all joints for the current robot.

LimitTorque

LimitTorque Function

LimitTorqueLP

LimitTorqueLP Function

LimitTorqueStop

Sets / returns the upper torque value in High power mode.

Returns the LimitTorque setting value.

Sets / returns the upper limit torque value in Low power mode.

Returns the LimitTorqueLP setting value.

Specifies /returns whether or not to stop the robot when torque reaches the upper limit in High power mode.

LimitTorqueStop Function

LimitTorqueStopLP

Returns the LimitTorqueStop setting value.

Specifies / returns whether or not to stop the robot when torque reaches the upper limit in Low power mode.

LimitTorqueStopLP Function Returns the LimitTorqueStopLP setting value.

Input / Output Commands

On

Off

Oport

Sw

In

InW

InBCD

Out

OutW

OpBCD

MemOn

MemOff

MemSw

MemIn

MemOut

MemInW

Turns an output on.

Turns an output off.

Reads status of one output bit.

Returns status of input.

Reads 8 bits of inputs.

Returns the status of the specified input word port.

Reads 8 bits of inputs in BCD format.

Sets / returns 8 bits of outputs.

Simultaneously sets 16 output bits.

Simultaneously sets 8 output bits using BCD format.

Turns a memory bit on.

Turns a memory bit off.

Returns status of memory bit.

Reads 8 bits of memory I/O.

Sets / returns 8 memory bits.

Returns the status of the specified memory I/O word port.

Each word port contains 16 memory I/O bits.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 7

Summary of SPEL+ Commands

MemOutW

Wait

TMOut

Tw

Input

InReal

Print

Line Input

Input #

Print #

Line Input #

Lof

SetIn

SetInW

SetSw

IOLabel$

IONumber

IODef

OpenCom

OpenCom Function

CloseCom

SetCom

ChkCom

OpenNet

OpenNet Function

OutReal

CloseNet

SetNet

8

Simultaneously sets 16 memory I/O bits.

Wait for condition or time.

Sets default time out for Wait statement.

Returns the status of the Wait condition and Wait timer interval.

Receives input data from the display device and stored in a variable(s).

Reads an input data of 2 words (32 bits) as a floating-point data

(IEEE754 compliant) of 32 bits.

Display characters on current display window.

Input a string from the current display window.

Allows string or numeric data to be received from a file, communications port, or database and stored in one or more variables.

Outputs data to the specified file, communications port, database, or device.

Reads data of one line from a file, communication port, database, or the device.

Checks whether the specified RS-232 or TCP/IP port has any lines of data in its buffer.

For Virtual IO, sets specified input port (8 bits) to the specified value.

For Virtual IO, sets specified input word (16 bits) to the specified value.

For Virtual IO, sets specified input bit to the specified value.

Returns the I/O label for a specified input or output bit, byte, or word.

Returns the I/O number of the specified I/O label.

Returns whether the specified I/O label is defined.

Open an RS-232 communication port.

Acquires the task number that executes OpenCom.

Close the RS-232C port that has been opened with OpenCom.

Sets or displays parameters for RS-232C port.

Returns number of characters in the reception buffer of a communication port

Open a TCP/IP network port.

Acquires the task number that executes OpenNet.

Output the output data of real value as the floating-point data

(IEEE754 compliant) of 32 bits to the output port 2 words (32 bits).

Close the TCP/IP port previously opened with OpenNet.

Sets parameters for a TCP/IP port.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ChkNet

WaitNet

Read

ReadBin

Write

WriteBin

InputBox

MsgBox

RunDialog

LatchEnable

LatchState Function

LatchPos Function

SetLatch

AIO_In Function

AIO_InW Function

AIO_Out

AIO_Out Function

AIO_OutW

AIO_OutW Function

AIO_Set

AIO_Set Function

Summary of SPEL+ Commands

Returns number of characters in the reception buffer of a network port

Wait for TCP/IP port connection to be established.

Reads characters from a file or communications port.

Reads binary data from a file or communications port.

Writes characters to a file or communication port without end of line terminator.

Writes binary data to a file or communications port.

Displays a prompt in a dialog box, waits for the operator to input text or choose a button, and returns the contents of the box.

Displays a message in a dialog box and waits for the operator to choose a button.

Runs an EPSON RC+ dialog from a SPEL + program.

Enable / Disable the latch function for the robot position by the

R-I/O input.

Returns the latch state of robot position using the R-I/O.

Returns the robot position latched using the R-I/O input signal.

Sets the latch function of the robot position using the R-I/O input.

Reads analog value form analog I/O input channel.

Reads one word input data from analog I/O input channel.

Output analog value on the analog I/O output channel.

Returns the output state of analog I/O output channel.

Output the one word data to analog I/O output channel.

Returns the output state by one word of analog I/O output channel.

Output the speed information to analog I/O output channel .

Returns setting information of robot speed output which is set on optional analog I/O output channel.

Point Management Commands

ClearPoints

LoadPoints

SavePoints

ImportPoints

ExportPoints

P#

PDef

PDel

PLabel

PLabel$

PNumber

PList

Clears all point data in memory.

Loads point data from a file in memory.

Saves point data to a file in memory.

Imports a point file into the current project for the specified robot.

Exports a point file to the specified path in the PC.

Defines a specified point.

Returns the definition status of a specified point.

Deletes specified position data.

Defines a label for a specified point.

Returns the point label associated with a point number.

Returns the point number associated with a point label.

Displays point data in memory for the current robot.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 9

Summary of SPEL+ Commands

PLocal

PDescription

PDescription$

Sets the local attribute for a point.

Define a description of specified point data.

Returns description of point that defined to the specified point number

WorkQue_Add Adds the work queue data (point data and user data) to the

WorkQue_AutoRemove specified work queue.

Sets the auto delete function to the specified work queue.

WorkQue_AutoRemove Function Returns the state of the auto delete function set to the work queue.

WorkQue_Get Function

WorkQue_Len Function

WorkQue_List

Returns the point data from the specified work queue.

Returns the number of the valid work queue data registered to the specified work queue.

Displays the work queue data list (point data and user data)

WorkQue_Reject of the specified work queue

Sets and displays the minimum distance for double registration prevention of the point data to the specified work queue

WorkQue_Reject Function

WorkQue_Remove

WorkQue_Sort

WorkQue_Sort Function

WorkQue_UserData

Returns the distance of the double registration prevention set to the specified work queue

Deletes the work queue data (point data and user data) from the specified work queue

Sets and displays the Sort type of the specified work queue

Returns the Sort type of the specified work queue

Resets and displays the user data (real number) registered to

WorkQue_UserData Function the specified work queue

Returns the user data (real number) registered to the specified work queue

10

Coordinate Change Commands

Arm

ArmSet

ArmDef

ArmClr

Tool

TLSet

TLDef

TLClr

ECP

ECPSet

ECPDef

ECPClr

Base

Sets / returns current arm.

Defines an arm.

Returns status of arm definition.

Clears an arm definition.

Sets / returns the current tool number.

Defines or displays a tool coordinate system.

Returns status of tool definition.

Clears a tool definition.

Sets / returns the current ECP number.

Defines or displays an external control point.

Returns status of ECP definition.

Clears an ECP definition.

Defines and displays the base coordinate system.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Local

LocalDef

LocalClr

Elbow

Hand

Wrist

J4Flag

J6Flag

J1Flag

J2Flag

J1Angle

J4Angle

VxCalib

VxTrans

VxCalInfo

VxCalDelete

VxCalSave

VxCalLoad

Summary of SPEL+ Commands

Define a local coordinate system.

Returns status of local definition.

Clears (undefines) a local coordinate system.

Sets / returns elbow orientation of a point.

Sets / returns hand orientation of a point.

Sets / returns wrist orientation of a point.

Sets / returns the J4Flag setting of a point.

Sets / returns the J6Flag orientation of a point.

Sets / returns the J1Flag setting of a point.

Sets / returns the J2Flag orientation of a point.

Returns the J1Angle attribute of a point.

Returns the J4Angle attribute of a point.

Creates the calibration data.

Converts the pixel coordinates to the robot coordinates and returns the converted the point data.

Returns the calibration completion status / calibration data.

Deletes the calibration data.

Saves the calibration data to the file.

Loads the calibration data from the file.

Trap

OnErr

Era

Erf$

Erl

Err

Ert

Errb

Program Control Commands

Function

For...Next

GoSub

Return

GoTo

Call

If..Then..Else..EndIf

Else

Select ... Send

Do...Loop

Declare

Declare a function.

Executes one or more statements for a specific count.

Execute a subroutine.

Returns from a subroutine.

Branch unconditionally to a line number or label.

Call a user function.

Conditional statement execution.

Used with the If instruction to allow statements to be executed when the condition used with the If instruction is

False. Else is an option for the If/Then instruction.

Executes one of several groups of statements, depending on the value of an expression.

Do...Loop construct.

Declares an external function in a dynamic link library

(DLL).

Specify a trap handler.

Defines an error handler.

Returns the robot joint number for last error.

Returns the function name for last error.

Returns the line number of error.

Returns the error number.

Returns the task number of error.

Returns the robot number of error.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 11

Summary of SPEL+ Commands

ErrMsg$

Signal

SyncLock

SynUnlock

WaitSig

ErrorOn

Error

EResume

PauseOn

Exit

Returns the error message.

Sends a signal to tasks executing WaitSig.

Synchronizes tasks using a mutual exclusion lock.

Unlocks a sync ID that was previously locked with

SyncLock.

Waits for a signal from another task.

Returns the error status of the controller.

Generates a user error.

Resumes execution after an error-handling routine is finished.

Returns the pause status.

Exits a loop construct or function.

Program Execution Commands

Xqt

Pause

Cont

Halt

Quit

Resume

MyTask

TaskDone

TaskState

TaskWait

Restart

Recover

RecoverPos

Execute a task.

Pause all tasks that have pause enabled.

Resumes the controller after a Pause statement has been executed and continues the execution of all tasks.

Suspend a task.

Quits a task.

Resume a task in the halt state.

Returns current task.

Returns the completion status of a task.

Returns the current state of a task.

Waits to for a task to terminate .

Restarts the current main program group.

Executes safeguard position recovery and returns status.

Returns the position where a robot was in when safeguard was open.

StartMain Executes the main function from a background task.

Pseudo Statements

#define

#ifdef ... #endif

#ifndef ... #endif

#include

#undef

Defines a macro.

Conditional compile.

Conditional compile.

Include a file.

Undefines an identifier previously defined with #define.

12 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands

File Management Commands

ChDir

ChDisk

MkDir

RmDir

Changes and displays the current directory.

Sets the object disk for file operations.

Creates a subdirectory on a controller disk drive.

Removes an empty subdirectory from a controller disk drive.

Rename a directory. RenDir

FileDateTime$

FileExists

FileLen

FolderEx ists

Del

Copy

Rename

AOpen

BOpen

ROpen

Uopen

WOpen

Input #

Returns the date and time of a file.

Checks if a file exists.

Returns the length of a file.

Checks if a folder exists.

Deletes one or more files.

Copies a file to another location.

Renames a file.

Print #

Line Input #

Read

ReadBin

Write

WriteBin

Seek

Close

Eof

ChDrive

CurDir$

CurDrive$

CurDisk$

Flush

Opens file in the appending mode.

Opens file in binary mode.

Opens a file for reading.

Opens a file for read / write access.

Opens a file for writing.

Allows string or numeric data to be received from a file, communications port, or database and stored in one or more variables.

Outputs data to the specified file, communications port, database, or device.

Reads data of one line from a file, communication port, database, or the device.

Reads characters from a file or communications port.

Reads binary data from a file or communications port.

Writes characters to a file or communication port without end of line terminator.

Writes binary data to a file or communications port.

Changes position of file pointer for a specified file.

Closes a file.

Returns end of file status.

Changes the current disk drive for file operations.

Returns a string representing the current directory.

Returns a string representing the current drive.

Returns a string representing the current disk.

Writes a file's buffer into the file.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 13

Summary of SPEL+ Commands

Fieldbus Commands

FbusIO_GetBusStatus

FbusIO_GetDeviceStatus

FbusIO_SendMsg

Returns the status of the specified Fieldbus.

Returns the status of the specified Fieldbus device.

Sends an explicit message to a Fieldbus device and returns the reply.

Numeric Value Commands

Ctr

CTReset

ElapsedTime

ResetElapsedTime

Tmr

TmReset

BClr

BSet

BTst

BClr64

BSet64

BTst64

Fix

Hex

Sin

Cos

Tan

Acos

Asin

Atan

Atan2

Sqr

Abs

Sgn

Int

Randomize

Redim

Rnd

UBound

Return the value of a counter.

Resets a counter.

Measures a takt time.

Resets and starts a takt time measurement timer.

Returns the value of a timer.

Resets a timer to 0.

Returns the sine of an angle.

Returns cosine of an angle.

Returns the tangent of an angle.

Returns arccosine.

Returns arcsine.

Returns arctangent.

Returns arctangent based on X, Y position.

Returns the square root of a number.

Returns the absolute value of a number.

Returns the sign of a number.

Converts a real number to an integer.

Clears one bit in a number and return the new value.

Sets a bit in a number and returns the new value.

Returns the status of 1 bit in a number.

Clears one bit in a number and return the new value.

Sets a bit in a number and returns the new value.

Returns the status of 1 bit in a number.

Returns the integer portion of a real number.

Returns a string representing a specified number in hexadecimal format.

Initializes the random-number generator.

Redimension an array at run-time.

Return a random number.

Returns the largest available subscript for the indicated dimension of an array.

14 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

String Commands

Asc

Chr$

Left$

Mid$

Right$

Len

LSet$

RSet$

Space$

Str$

Val

LCase$

UCase$

LTrim$

RTrim$

Trim$

ParseStr

FmtStr

FmtStr$

InStr

Tab$

Logical Operators

And

Or

LShift

LShift64

Mod

Not

RShift

RShift64

Xor

Mask

Summary of SPEL+ Commands

Returns the ASCII value of a character.

Returns the character of a numeric ASCII value.

Returns a substring from the left side of a string.

Returns a substring.

Returns a substring from the right side of a string.

Returns the length of a string.

Returns a string padded with trailing spaces.

Returns a string padded with leading spaces.

Returns a string containing space characters.

Converts a number to a string.

Converts a numeric string to a number.

Converts a string to lower case.

Converts a string to upper case.

Removes spaces from beginning of string.

Removes spaces from end of string.

Removes spaces from beginning and end of string.

Parse a string and return array of tokens.

Format a number or string.

Format a number or string.

Returns position of one string within another.

Returns a string containing the specified number of tabs characters.

Performs logical and bitwise AND operation.

Or operator.

Shifts bits to the left.

Shifts bits to the left.

Modulus operator.

Not operator.

Shifts bits to the right.

Shifts bits to the right.

Exclusive Or operator.

Performs bitwise AND operation in Wait statements.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 15

Summary of SPEL+ Commands

Variable commands

Boolean

Byte

Double

Global

Int32

Integer

Long

Int64

Real

Short

String

UByte

UInt32

UShort

UInt64

Security Commands

GetCurrentUser$

Login

16

Declares Boolean variables.

Declares byte variables.

Declares double variables.

Declares global variables.

Declares 4-byte integer variables.

Declares 2-byte integer variables.

Declares long integer variables.

Declares 8-byte integer variables.

Declares real variables.

Declares 2-byte integer variables.

Declares string variables.

Declares unsigned integer variables.

Declares unsigned 4-byte integer variables.

Declares unsigned 2-byte integer variables.

Declares unsigned 8-byte integer variables.

Returns the current EPSON RC+ user.

Log into EPSON RC+ 6.0 as another user.

Conveyor Tracking Commands

Cnv_AbortTrack

Cnv_Accel Function

Cnv_Accel

Cnv_Downstream Function

Cnv_Downstream

Cnv_Fine Function

Cnv_Fine

Cnv_Flag Function

Cnv_Mode Function

Cnv_Mode

Cnv_Name$ Function

Cnv_Number Function

Cnv_OffsetAngle

Cnv_OffsetAngle Function

Cnv_Point Function

Cnv_PosErr Function

Cnv_Pulse Function

Cnv_QueAdd

Cnv_QueGet Function

Cnv_QueLen Function

Cnv_QueList

Aborts tracking motion to a conveyor queue point.

Returns acceleration and deceleration for the conveyor

Sets acceleration and deceleration for the conveyor

Returns the downstream limit for the specified conveyor.

Sets the downstream limit for the specified conveyor.

Returns the current Cnv_Fine setting.

Sets the value of Cnv_Fine for one conveyor.

Returns the tracking state of the robot

Returns the setting mode value of the conveyor

Sets the setting mode value of the conveyor

Returns the name of the specified conveyor.

Returns the number of a conveyor specified by name.

Sets the offset value for the conveyor queue data.

Returns the offset value of the conveyor queue data.

Returns a robot point in the specified conveyor's coordinate system derived from sensor coordinates.

Returns deviation in current tracking position compared to tracking target.

Returns the current position of a conveyor in pulses.

Adds a robot point to a conveyor queue.

Returns a point from the specified conveyor's queue.

Returns the number of items in the specified conveyor's queue.

Displays a list of items in the specified conveyor's queue.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_QueMove

Cnv_QueReject

Cnv_QueReject Function

Cnv_QueRemove

Cnv_QueUserData

Cnv_QueUserData Function

Cnv_RobotConveyor Function

Cnv_Speed Function

Cnv_Trigger

Cnv_Upstream Function

Cnv_Upstream

Force Sensing Commands

Force_Calibrate

Force_ClearTrigger

Force_GetForces

Force_GetForce Function

Force_Sensor

Force_Sensor Function

Force_SetTrigger

DB Commands

CloseDB

DeleteDB

OpenDB

SelectDB

UpdateDB

Summary of SPEL+ Commands

Moves data from upstream conveyor queue to downstream conveyor queue.

Sets and displays the queue reject distance for a conveyor.

Returns the current part reject distance for a conveyor.

Removes items from a conveyor queue.

Sets and displays user data associated with a queue entry.

Returns the user data value associated with an item in a conveyor queue.

Returns the conveyor being tracked by a robot.

Returns the current speed of a conveyor.

Latches current conveyor position for the next Cnv_QueAdd statement.

Returns the upstream limit for the specified conveyor.

Sets the upstream limit for the specified conveyor.

Sets zero offsets for all axes for the current force sensor.

Clears all trigger conditions for the current force sensor.

Returns the forces and torques for all force sensor axes in an array.

Returns the force for a specified axis.

Sets the current force sensor for the current task.

Returns the current force sensor for the current task.

Sets the force trigger for the Till command.

Close the database that has been opened with the OpenDB command and releases the file number.

Deletes data from the table in the opened database.

Opens a database or Excel workbook.

Searches the data in the table in an opened database.

Updates data of the table in the opened database.

PG Commands

PG_FastStop

PG_LSpeed

PG_Scan

PG_SlowStop

Stops the PG axes immediately.

Sets the pulse speed of the time when the PG axis starts accelerating and fishishes decelerating.

Starts the continuous spinning motion of the PG robot axes.

Stops slowly the PG axis spinning continuously.

Collision Detection Commands

CollisionDetect

CollisionDetect Function

Enables or disables the collision detection.

Returns the setting value of CollisionDetect command.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 17

Summary of SPEL+ Commands

Parts Consumption Commands

HealthCalcPeriod

HealthCalcPeriod Function

HealthCtrlAlarmOn Function

HealthCtrlInfo

Set the calculation period of parts consumption commands .

Returns the calculation period of parts consumption commands.

Returns the status of the parts consumption alarm for the specified Controller parts.

Displays the remaining months before the recommended replacement time for the specified Controller parts.

HealthCtrlInfo Function

HealthCtrlRateOffset

Returns the remaining months before the recommended replacement time for the specified Controller parts.

Sets the offset for the consumption rate of the specified parts.

Clears the consumption rate for the specified Controller HealthCtrlReset

HealthCtrlWarningEnable parts.

Sets enable or disable the parts consumption alarm notification of the Controller parts.

HealthCtrlWarningEnable Function Returns enable or disable the parts consumption alarm

HealthRateCtrlInfo Function notification of the controller part.

Returns the consumption rate of the specified Controller

HealthRateRBInfo Function

HealthRBAlarmOn Function parts.

Returns the consumption rate for the specified robot parts.

Returns the status of the parts consumption alarm for the specified robot parts.

HealthRBAnalysis

HealthRBAnalysis Function

Displays the analysis result regarding the parts consumption

(remaining months before the recommended parts replacement time) for the specified robot parts.

Returns the analysis result regarding the parts consumption

HealthRBDistance

HealthRBDistance Function

HealthRBInfo

(remaining months before the recommended parts replacement time) for the specified robot parts.

Displays the driving amount of the specified joint.

Returns the driving amount of the specified joint.

Displays the remaining months before the recommended replacement time for the specified robot parts.

HealthRBInfo Function

HealthRBRateOffset

HealthRBReset

HealthRBSpeed

HealthRBSpeed Function

HealthRBStart

HealthRBStop

HealthRBTRQ

HealthRBTRQ Function

Returns the remaining months before the recommended replacement time for the specified robot parts.

Sets the offset for the consumption rate of the specified parts.

Clears the consumption rate for the specified robot parts.

Displays the average speed of the specified joint.

Returns the average of the absolute speed of the specified joint.

Starts analysis of the parts consumption for the specified robot parts.

Stops analysis of the parts consumption for the specified robot parts.

Displays the torque value of the specified joint.

Returns the torque value of the specified joint.

18 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Summary of SPEL+ Commands

HealthRBWarningEnable Sets enable or disable the parts consumption alarm notification of the robot parts.

HealthRBWarningEnable Function Returns enable or disable the parts consumption alarm notification of the robot parts.

Simlator Commands

SimSet

SimGet

Sets the object settings, operations, and robot motions of simulator.

Acquires the setting values of simulator object.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 19

SPEL+ Language Reference

SPEL

+

Language Reference

This section describes each SPEL + command as follows:

Syntax Syntax describes the format used for each command. For some commands, there is more than one syntax shown, along with a number that is referenced in the command description. Parameters are shown in italics.

Describes each of the parameters for this command. Parameters

Return Values

Description

Note

See Also

Example

Describes any values that the command returns.

Gives details about how the command works.

Gives additional information that may be important about this command.

Shows other commands that are related to this command. Refer to the Table of

Contents for the page number of the related commands.

Gives one or more examples of using this command.

20 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Operators

Operators

The following table shows the operators for the SPEL + language.

Keyword or Symbol Example Description

+

*

/

**

=

>

<

>=

<=

<>

And

Mod

Not

A+B

A-B

A*B

A/B

A**B

A=B

A>B

A<B

A>=B

A<=B

A<>B

A And B

A Mod B

Not A

Addition

Subtraction

Multiplication

Division

Exponentiation

Equal

Greater than

Less than

Greater than or equal

Less or than equal

Not equal

Performs logical and bitwise AND operation.

Returns the remainder obtained by dividing a numeric expression by another numeric expression.

Performs logical or bitwise negation of the operand.

Performs the bitwise Or operation on the values of the

Or

Xor

A Or B

A Xor B operands.

Performs the bitwise Xor operation on the values of the operand.

Priority Order of the Operators

The operators are processed in programs in the following order.

Priority level Operator

1

2

3

()

**

*

/

4 Mod

5

6

7

8

9

<

>

<=

>=

+

-

=

<>

Not

And

Or

10 Xor

Example

( A+B )

A**B

A*B

A/B

A Mod B

A+B

A-B

A=B

A<>B

A<B

A>B

A<=B

A>=B

Not A

A And B

A Or B

A Xor B

Description

Brackets

Exponentiation

Multiplication

Division

Returns the remainder obtained by dividing a numeric expression by another numeric expression.

Addition

Subtraction

Equal

Not equal

Less than

Greater than

Less or than equal

Greater than or equal

Performs logical or bitwise negation of the operand.

Performs logical and bitwise AND operation.

Performs the bitwise Or operation on the values of the operands.

Performs the bitwise Xor operation on the values of the operand.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 21

!...! Parallel Processing

!...! Parallel Processing

Processes input/output statements in parallel with motion.

Syntax

motion cmd

!

statements

!

Parameters

motion cmd statements

Any valid motion command included in the following list: Arc, Arc3, Go, Jump,

Jump3, Jump3CP, Move, BGo, BMove, TGo, TMove.

Any valid parallel processing I/O statement(s) which can be executed during motion.

(See the table below)

Description

Parallel processing commands are attached to motion commands to allow I/O statements to execute simultaneously with the beginning of motion travel. This means that I/O can execute while the arm is moving rather than always waiting for arm travel to stop and then executing I/O. There is even a facility to define when within the motion that the I/O should begin execution. (See the “D

n

” parameter described in the table below.)

The table below shows all valid parallel processing statements. Each of these statements may be used as single statements or grouped together to allow multiple I/O statements to execute during one motion statement.

Used to specify %travel before the next parallel statement is executed. “

n

” is a percentage between 0 and 100 which represents the position within the motion where the parallel processing statements should begin. Statements which follow the Dn parameter will begin execution after n% of the motion travel has been

D

n

completed.

When used with the Jump, Jump3, and Jump3CP commands, %travel does not include the depart and approach motion. To execute statements after the depart motion has completed, include D0 (zero) at the beginning of the statement.

“D

n

” may appear a maximum of 16 times in a parallel processing statement.

On / Off

n

Turn Output bit number “

n

” on or off.

MemOn / MemOff

n

Turns memory I/O bit number “

n

” on or off.

Out

p,d

OpBCD

p,q

OutW

p,d

MemOut

p, d

MemOutW

p,d

Signal

s

Outputs data “

d

” to output port “

p

”.

Outputs data “

d

” to memory I/O port “

p”.

Wait

t

WaitSig

Wait Sw(

s n

) =

Wait MemSw(

j n

) =

Wait other conditions

Print

Print #

j

Generates synchronizing signal.

Delays for “

t

” seconds prior to execution of the next parallel processing statement.

Waits for signal “

s

” before processing next statement.

Delays execution of next parallel processing statement until the input bit “

n

” is equal to the condition defined by “

j

”. (On or Off)

Delays execution of the next parallel processing statement until the memory I/O bit “

n

” is equal to the condition defined by “

j

”. (On or Off)

Wait other than the above two patterns is available. Refer to

Wait Statement

for details.

Prints data to the display device.

Prints data to the specified communications port.

External functions Executes the external functions declared with Declare statement.

22 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

!...! Parallel Processing

Notes

When Motion is Completed before All I/O Commands are Complete

If, after completing the motion for a specific motion command, all parallel processing statement execution has not been completed, subsequent program execution is delayed until all parallel processing statements execution has been completed. This situation is most likely to occur with short moves with many I/O commands to execute in parallel.

When the Till statement is used to stop the arm before completing the intended motion

If Till is used to stop the arm at an intermediate travel position, the system considers that the motion is completed. The next statement execution is delayed until the execution of all parallel processing statements has been completed.

When the AbortMotion statement or Trap is used to stop the arm before completing the motion

After the arm stops at an intermediate travel position, D statement cannot be executed.

Specifying “

n

” near 100% can cause path motion to decelerate

If a large value of “

n

” is used during CP motion, the robot may decelerate to finish the current motion.

This is because the position specified would normally be during deceleration if CP was not being used. To avoid deceleration, consider placing the processing statement after the motion command. For example, in the example below, the On 1 statement is moved from parallel processing during the jump to P1 to after the jump.

CP On

Jump P1 !D96; On 1!

Go P2

CP On

Jump P1

On 1

Go P2

The Jump statement and Parallel Processing

It should be noted that execution of parallel processing statements which are used with the Jump statement begins after the rising motion has completed and ends at the start of falling motion.

It should be noted that execution of parallel processing statements which are used with the Jump3 statement begins after the depart motion has completed and ends at the start of approach motion.

The Here statement and Parallel Processing

You cannot use both of the Here statement and parallel processing in one motion command like this:

Go Here :Z(0) ! D10; MemOn 1 !

Be sure to change the program like this:

P999 = Here

Go P999 Here :Z(0) ! D10; MemOn 1 !

See Also

Arc, Arc3, Go, Jump, Jump3, Jump3CP, Move, BGo, BMove, TGo, TMove

!...! Parallel Processing Example

The following examples show various ways to use the parallel processing feature with Motion Commands:.

Parallel processing with the Jump command causes output bit 1 to turn on at the end of the Z joint rising travel and when the 1st, 2nd, and 4th axes begin to move. Then output bit 1 is turned off again after 50% of the Jump motion travel has completed.

Function test

Jump P1 !D0; On 1; D50; Off 1!

Fend

Parallel processing with the Move command causes output bit 5 to turn on when the joints have completed

10% of their move to the point P1. Then 0.5 seconds later turn output bit 5 off.

Function test2

Move P1 !D10; On 5; Wait 0.5; Off 5!

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 23

#define

#define

Defines identifier to be replaced by specified replacement string.

Syntax

#define

identifier

[(

parameter

[,

parameter

])]

string

Parameters

identifier

Keyword defined by user which is an abbreviation for the

string

parameter. Rules for identifiers are as follows:

- The first character must be alphabetic while the characters which follow may be alphanumeric or an underscore ( _ ).

- Spaces or tab characters are not allowed as part of the

identifier

.

parameter

Normally used to specify a variable (or multiple variables) which may be used by the replacement string. This provides for a dynamic define mechanism which can be used like a macro. A maximum of up to 8 parameters may be used with the #define command. However, each parameter must be separated by a comma and the parameter list must be enclosed within parenthesis.

string

This is the replacement string which replaces the identifier when the program is compiled.

Rules regarding replacement strings are as follows:

- Spaces or tabs are allowed in replacement strings.

- Identifiers used with other #define statements cannot be used as replacement strings.

- If the comment symbol ( ' ) is included, the characters following the comment symbol will be treated as a comment and will not be included in the replacement string.

- The replacement string may be omitted. In this case the specified identifier is replaced by

"nothing" or the null string. This actually deletes the identifier from the program

Description

The #define instruction causes a replacement to occur within a program for the specified identifier. Each time the specified identifier is found the identifier is replaced with the replacement string prior to compilation. However, the source code will remain with the identifier rather than the replacement string.

This allows code to become easier to read in many cases by using meaningful identifier names rather than long difficult to read strings of code.

The defined identifier can be used for conditional compiling by combining with the #ifdef or #ifndef commands.

If a parameter is specified, the new identifier can be used like a macro.

Note

Using #define for variable declaration or label substitutions will cause an error:

It should be noted that usage of the #define instruction for variable declaration will cause an error.

See Also

#ifdef, #ifndef

24 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

#define Example

' Uncomment next line for Debug mode.

'

#define

DEBUG

Input #1, A$

#ifdef DEBUG

Print "A$ = ", A$

#endif

Print "The End"

#define

SHOWVAL(x) Print "var = ", x

Integer a a = 25

SHOWVAL(a)

#define

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 25

#ifdef...#else...#endif

#ifdef...#else...#endif

Provides conditional compiling capabilities.

Syntax

#ifdef

identifier

.

.put selected source code for conditional compile here

.

[

#else

..

.put selected source code for false condition here

.]

#endif

Parameters

identifier

Keyword defined by the user which when defined allows the source code defined between

#ifdef and #else or #endif to be compiled. Thus the identifier acts as the condition for the conditional compile.

Description

#ifdef...#else...#endif allows for the conditional compiling of selected source code. The condition as to whether or not the compile will occur is determined based on the

identifier

. #ifdef first checks if the specified identifier is currently defined by #define. The #else statement is optional.

If defined, and the #else statement is not used, the statements between #ifdef and #endif are compiled.

Otherwise, if #else is used, then the statements between #ifdef and #else are compiled.

If not defined, and the #else statement is not used, the statements between #ifdef and #endif are skipped without being compiled. Otherwise, if #else is used, then the statements between #else and #endif are compiled.

See Also

#define, #ifndef

#ifdef Example

A section of code from a sample program using #ifdef is shown below. In the example below, the printing of the value of the variable A$ will be executed depending on the presence or absence of the definition of the #define DEBUG pseudo instruction. If the #define DEBUG pseudo instruction was used earlier in this source, the Print A$ line will be compiled and later executed when the program is run. However, the printing of the string "The End" will occur regardless of the #define DEBUG pseudo instruction.

' Uncomment next line for Debug mode.

' #define DEBUG

Input #1, A$

#ifdef

DEBUG

Print "A$ = ", A$

#endif

Print "The End"

26 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

#ifndef...#endif

#ifndef...#endif

Provides conditional compiling capabilities.

Syntax

#ifndef

identifier

.

.Put selected source code for conditional compile here

.

[

#else

..

.put selected source code for true condition here

.]

#endif

Parameters

identifier

Keyword defined by the user which when not defined allows the source code defined between

#ifndef and #else or #endif to be compiled. Thus the identifier acts as the condition for the conditional compile.

Description

This instruction is called the "if not defined" instruction. #ifndef...#else...#endif allow for the conditional compiling of selected source code. The #else statement is optional.

If defined, and the #else statement is not used, the statements between #ifndef and #endif are not compiled.

Otherwise, if #else is used, then the statements between #else and #endif are compiled.

If not defined, and the #else statement is not used, the statements between #ifndef and #endif are compiled.

Otherwise, if #else is used, then the statements between #else and #endif are not compiled.

Note

Difference between #ifdef and #ifndef

The fundamental difference between #ifdef and #ifndef is that the #ifdef instruction compiles the specified source code if the identifier is defined. The #ifndef instruction compiles the specified source code if the identifier is not defined.

See Also

#define, #ifdef

#ifndef Example

A section of code from a sample program using #ifndef is shown below. In the example below, the printing of the value of the variable A$ will be executed depending on the presence or absence of the definition of the #define NODELAY pseudo instruction. If the #define NODELAY pseudo instruction was used earlier in this source, the Wait 1 line

will NOT be compiled

along with the rest of the source for this program when it is compiled. (i.e. submitted for running.) If the #define NODELAY pseudo instruction was not used (i.e. NODELAY is not defined) earlier in this source, the Wait 1 line

will be compiled

and later executed when the program is run. The printing of the string "The End" will occur regardless of the

#define NODELAY pseudo instruction.

' Comment out next line to force delays.

#define NODELAY 1

Input #1, A$

#ifndef

NODELAY

Wait 1

#endif

Print "The End"

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 27

#include

#include

Includes the specified file into the file where the #include statement is used.

Syntax

#include "

fileName

.

INC"

Parameters

fileName

fileName must be the name of an include file in the current project. All include files have the

“.inc” extension. The filename specifies the file which will be included in the current file.

Description

#include inserts the contents of the specified include file with the current file where the #include statement is used.

Include files are used to contain #define statements and global variable declarations.

The #include statement must be used outside of any function definitions.

An include file may contain a secondary include file. For example, FILE2 may be included within FILE1, and FILE3 may be included within FILE2. This is called nesting.

See Also

#define, #ifdef, #ifndef

#include Example

Include File (Defs.inc)

#define DEBUG 1

#define MAX_PART_COUNT 20

Program File (main.prg)

#include

"defs.inc"

Function main

Integer i

Integer Parts(MAX_PART_COUNT)

Fend

28 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

#undef

Undefines an identifier previously defined with #define.

Syntax

#undef

identifier

Parameters

identifier

Keyword used in a previous #define statement.

See Also

#define, #ifdef, #ifndef

#undef

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 29

AbortMotion Statement

AbortMotion Statement

Aborts a motion command and puts the running task in error status.

This command is for the experienced user and you need to understand the command specification before use.

Syntax

AbortMotion

{

robotNumber

| All }

Parameters

robotNumber

All

Robot number that you want to stop the motion for.

Aborts motion for all robots.

Description

Depending on the robot status when AbortMotion is executed, the result is different as follows.

In each case, hook an error and handle the error processing with OnErr to continue the processing.

Error 2999 can use the constant ERROR_DOINGMOTION.

Error 2998 can use the constant ERROR_NOMOTION.

Write a program not to execute AbortMotion more than twice before executing the continuous execution

(Cont).

When the robot is executing the motion command

The robot promptly pauses the arm motion immediately and cancels the remaining motions.

Error 2999 (ERROR_DOINGMOTION) occurs in the task which was running the motion command for the robot.

For the following motion commands, the robot directly moves to the next position from the point where it was paused.

When the robot has been paused immediately

When AbortMotion is executed, the remaining motion is canceled.

Error 2999 (ERROR_DOINGMOTION) occurs in the task which was running the motion command for the robot when specifying the Cont statement.

For the following motion commands, the robot directly moves to the next position from the point where it was paused.

When the robot is in WaitRecover status (Safeguard Open)

When AbortMotion is executed, the remaining motion is canceled.

The following motions can be selected with the Recover command flags.

When executing “Recover robotNumber, WithMove”, the robot motors turn on and the recovery motion is executed.

When Cont is executed, error 2999 (ERROR_DOINGMOTION) occurs in the task which was running the motion command for the robot.

For the following motion commands, the robot directly moves to the next position from the point where it was paused.

When executing “Recover robotNumber, WithoutMove”, the robot motors turn on.

When Cont is executed, error 2999 (ERROR_DOINGMOTION) occurs in the task which was running the motion command for the robot.

For the following motion commands, the robot directly moves to the next position from the point where it was paused, without the recovery motion.

30 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AbortMotion Statement

When the robot is executing commands other than motion commands

Error 2998 (ERROR_NOMOTION) occurs in the task which was previously running the motion command for the robot. When the task is waiting with Wait or Input commands, the task is aborted promptly and error 2998 occurs.

When executing a motion command with CP On and a program has no more motion commands, error 2998 occurs even if the robot is running.

When the robot is not running from a program (task)

An error occurs.

See Also

OnErr, Recover, Till

AbortMotion Statement Example

When memory I/O #0 turns on, AbortMotion is executed and the robot goes back to the home position.

Function main

Motor On

Xqt sub, NoEmgAbort

OnErr GoTo errhandle

Go P0

Wait Sw(1)

Go P1

Quit sub

Exit Function errstart:

Home

Quit sub

Exit Function errhandle:

Print Err

If Err = ERROR_DOINGMOTION Then

Print "Robot is moving"

EResume errstart

' Executing Go P0 or Go P1

ElseIf Err = ERROR_NOMOTION Then

Print " Robot is not moving " ' Executes Wait Sw(1)

EResume errstart

EndIf

Print "Error Stop"

Quit All

Fend

Function sub

MemOff 0

Wait MemSw(0)

AbortMotion

1

MemOff 0

Fend

' Other error occurs

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 31

Abs Function

Abs Function

Returns the absolute value of a number.

Syntax

Abs

(

number

)

Parameters

number

Any valid numeric expression.

Return Values

The absolute value of a number.

Description

The absolute value of a number is its unsigned magnitude. For example, Abs(-1) and Abs(1) both return 1.

See Also

Atan, Atan2, Cos, Int, Mod, Not, Sgn, Sin, Sqr, Str$, Tan, Val

Abs Function Example

The following examples are done from the command window using the Print instruction.

> print

abs

(1)

1

> print

abs

(-1)

1

> print

abs

(-3.54)

3.54

>

32 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Accel Statement

Accel Statement

Sets (or displays) the acceleration and deceleration rates for the point to point motion instructions Go, Jump and Pulse.

Syntax

(1)

Accel

accel

,

decel

[,

departAccel, departDecel, approAccel, approDecel

]

(2)

Accel

Parameters

accel decel

Integer expression 1 or more representing a percentage of maximum acceleration rate.

Integer expression 1 or more representing a percentage of the maximum deceleration rate.

departAccel

Depart acceleration for Jump. Valid Entries are 1 or more.

Optional. Available only with Jump command.

departDecel

Depart deceleration for Jump. Valid Entries are 1 or more.

Optional. Available only with Jump command.

approAccel

Approach acceleration for Jump. Valid Entries are 1 or more.

Optional. Available only with Jump command.

approDecel

Approach deceleration for Jump. Valid Entries are 1 or more.

Optional. Available only with Jump command.

Return Values

When parameters are omitted, the current Accel parameters are displayed.

Description

Accel specifies the acceleration and deceleration for all Point to Point type motions. This includes motion caused by the Go, Jump and Pulse robot motion instructions.

Each acceleration and deceleration parameter defined by the Accel instruction may be an integer value 1 or more. This number represents a percentage of the maximum acceleration (or deceleration) allowed.

Usually, the maximum value is 100. However, some robots allow setting larger than 100. Use AccelMax function to get the maximum value available for Accel.

The Accel instruction can be used to set new acceleration and deceleration values or simply to print the current values. When the Accel instruction is used to set new accel and decel values, the first 2 parameters

(accel and decel ) in the Accel instruction are required.

The optional

departAccel

,

departDecel

,

approAccel

, and

approDecel

parameters are effective for the Jump instruction only and specify acceleration and deceleration values for the depart motion at the beginning of

Jump and the approach motion at the end of Jump.

The Accel value initializes to the default values (low acceleration) when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 33

Accel Statement

Notes

Executing the Accel command in Low Power Mode (Power Low)

If Accel is executed when the robot is in low power mode (Power Low), the new values are stored, but the current values are limited to low values.

The current acceleration values are in effect when Power is set to High, and Teach mode is OFF.

Accel vs. AccelS

It is important to note that the Accel instruction does not set the acceleration and deceleration rates for straight line and arc motion. The AccelS instruction is used to set the acceleration and deceleration rates for the straight line and arc type moves.

Accel setting larger than 100

Usually, the maximum value is 100. However, some robots allow setting larger than 100.

In general use, Accel setting 100 is the optimum setting that maintains the balance of acceleration and vibration when positioning. However, you may require an operation with high acceleration to shorten the cycle time by decreasing the vibration at positioning. In this case, set the Accel to larger than 100. Except in some operation conditions, the cycle time may not change by setting Accel to larger than 100.

See Also

AccelR, AccelS, Go, Jump, Jump3, Power, Pulse, Speed, TGo

Accel Statement Example

The following example shows a simple motion program where the acceleration (Accel) and speed (Speed) is set using predefined variables.

<Example 1>

Function acctest

Integer slow, accslow, decslow, fast, accfast, decfast

slow = 20 ' set slow speed variable

fast = 100 ' set high speed variable

accslow = 20 ' set slow acceleration variable

decslow = 20 ' set slow deceleration variable

accfast = 100 ' set fast acceleration variable

decfast = 100 ' set fast deceleration variable

Accel

accslow, decslow

Speed slow

Jump pick

On gripper

Accel

accfast, decfast

Speed fast

Jump place

.

.

.

Fend

34 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Accel Statement

<Example 2>

Set the Z joint downward deceleration to be slow to allow a gentle placement of the part when using the

Jump instruction. This means we must set the

Zdnd

parameter low when setting the Accel values.

>

Accel

100,100,100,100,100,35

>

Accel

100 100

100 100

100 35

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 35

Accel Function

Accel Function

Returns specified acceleration value.

Syntax

Accel

(

paramNumber

)

Parameters

paramNumber

Integer expression which can have the following values:

1: acceleration specification value

2: deceleration specification value

3: depart acceleration specification value for Jump

4: depart deceleration specification value for Jump

5: approach acceleration specification value for Jump

6: approach deceleration specification value for Jump

Return Values

Integer 1% or more

See Also

Accel Statement

Accel Function Example

This example uses the Accel function in a program:

Integer currAccel, currDecel

'

Get current accel and decel currAccel =

Accel

(1) currDecel =

Accel

(2)

Accel 50, 50

SRVJump pick

' Restore previous settings

Accel currAccel, currDecel

36 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AccelMax Function

Returns maximum acceleration value limit available for Accel.

Syntax

AccelMax

(maxValueNumber)

Parameters

maxValueNumber

Integer expression which can have the following values:

1: acceleration maximum value

2: deceleration maximum value

3: depart acceleration maximum value for Jump

4: depart deceleration maximum value for Jump

5: approach acceleration maximum value for Jump

Return Values

Integer 1% or more

6: approach deceleration maximum value for Jump

See Also

Accel

AccelMax Function Example

This example uses the AccelMax function in a program:

' Get maximum accel and decel

Print

AccelMax

(1),

AccelMax

(2)

AccelMax Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 37

AccelR Statement

AccelR Statement

Sets or displays the acceleration and deceleration values for tool rotation control of CP motion.

Syntax

(1)

AccelR

accel

[,

decel

]

(2)

AccelR

Parameters

accel

Real expression in degrees / second 2 (0.1 to 5000).

decel

Real expression in degrees / second 2 (0.1 to 5000).

Valid entries range of the parameters

accel

/

decel

VT6L 0.1 to 1000

C4, C8, C12, N2, N6

T series, G series, RS series

LS series, LS-B series

X5

0.1 to 5000

(deg/sec

2

)

Return Values

When parameters are omitted, the current AccelR settings are displayed.

Description

AccelR is effective when the ROT modifier is used in the Move, Arc, Arc3, BMove, TMove, and Jump3CP motion commands.

The AccelR value initializes to the default values when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

See Also

Arc, Arc3, BMove, Jump3CP, Power, SpeedR, TMove

AccelR Statement Example

AccelR

360, 200

38 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AccelR Function

Returns specified tool rotation acceleration value.

Syntax

AccelR

(

paramNumber

)

Parameters

paramNumber

Integer expression which can have the following values:

1: acceleration specification value

2: deceleration specification value

Return Values

Real value in degrees / second

2

See Also

AccelR Statement

AccelR Function Example

Real currAccelR, currDecelR

' Get current accel and decel currAccelR =

AccelR

(1) currDecelR =

AccelR

(2)

AccelR Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 39

AccelS Statement

AccelS Statement

Sets the acceleration and deceleration rates for the Straight Line and Continuous Path robot motion instructions such as Move, Arc, Arc3, Jump3, CVMove, etc.

Syntax

(1)

AccelS

accel

[,

decel

] [,

departAccel

,

departDecel

,

approAccel

,

approDecel

]

(2)

AccelS

Parameters

accel

Real expression represented in mm/sec

2

units to define acceleration and deceleration values for straight line and continuous path motion. If

decel

is omitted, then

accel

is used to specify both the acceleration and deceleration rates.

decel

Optional. Real expression represented in mm/sec 2 units to define the deceleration value.

departAccel

Optional. Real expression for depart acceleration value for Jump3, Jump3CP.

departDecel

Optional. Real expression for depart deceleration value for Jump3, Jump3CP.

approAccel

Optional. Real expression for approach acceleration value for Jump3, Jump3CP.

approDecel

Optional. Real expression for approach deceleration value for Jump3, Jump3CP.

Valid entries range of the parameters

N2, X5

LS20, LS20-B, T3, T6, VT6L

C4-A901**

C4-A601**, C8-A1401**,

G1, G3, G6, G10, G20, RS,

LS3, LS6, LS3-B, LS6-B, LS10-B

C8-A701**W, C8-A901**W, N6, C12

C8-A701**, C8-A701**R,

C8-A901**, C8-A901**R

accel

/

decel departAccel

/

departDecel approAccel

/

approDecel

0.1~5000

0.1 to 10000

0.1 to 15000

0.1 to 25000

0.1 to 35000

(mm/sec 2 )

Return Values

Displays Accel and Decel values when used without parameters

Description

AccelS specifies the acceleration and deceleration for all interpolated type motions including linear and curved interpolations. This includes motion caused by the Move and Arc motion instructions.

The AccelS value initializes to the default values when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

40 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AccelS Statement

Notes

Executing the AccelS command in Low Power Mode (Power Low):

If AccelS is executed when the robot is in low power mode (Power Low), the new values are stored, but the current values are limited to low values.

The current acceleration values are in effect when Power is set to High, and Teach mode is OFF.

Accel vs. AccelS:

It is important to note that the AccelS instruction does not set the acceleration and deceleration rates for point to point type motion. (i.e. motions initiated by the Go, Jump, and Pulse instructions.) The Accel instruction is used to set the acceleration and deceleration rates for Point to Point type motion.

Upper limit value

The AccelS upper limit value varies depending on Weight setting and the position of the spline unit. For details, refer to the Manipulator manuals.

See Also

Accel, Arc, Arc3, Jump3, Jump3CP, Power, Move, TMove, SpeedS

AccelS Statement Example

The following example shows a simple motion program where the straight line/continuous path acceleration (AccelS) and straight line/continuous path speed (SpeedS) are set using predefined variables.

Function acctest

Integer slow, accslow, fast, accfast

slow = 20 ' set slow speed variable

fast = 100 ' set high speed variable

accslow = 200 ' set slow acceleration variable

accfast = 5000 ' set fast acceleration variable

AccelS

accslow

SpeedS slow

Move P1

On 1

AccelS

accfast

SpeedS fast

Jump P2

.

.

.

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 41

AccelS Function

AccelS Function

Returns acceleration or deceleration for CP motion commands.

Syntax

AccelS

(

paramNumber

)

Parameters

paramNumber

Integer expression which can have the following values:

1: acceleration value

2: deceleration value

3: depart acceleration value for Jump3, Jump3CP

4: depart deceleration value for Jump3, Jump3CP

5: approach acceleration value for Jump3, Jump3CP

6: approach deceleration value for Jump3, Jump3CP

Return Values

Real value from 0 to 5000 mm/sec/sec

See Also

AccelS Statement, Arc3, SpeedS, Jump3, Jump3CP

AccelS Function Example

Real savAccelS savAccelS =

AccelS

(1)

42 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Acos Function

Acos Function

Returns the arccosine of a numeric expression.

Syntax

Acos

(

number

)

Parameters

number

Numeric expression representing the cosine of an angle.

Return Values

Real value, in radians, representing the arccosine of the parameter

number

.

Description

Acos returns the arccosine of the numeric expression. Values range is from -1 to 1. The value returned by

Acos will range from 0 to PI radians. If

number

is < -1 or > 1, an error occurs.

To convert from radians to degrees, use the RadToDeg function.

See Also

Abs, Asin, Atan, Atan2, Cos, DegToRad, RadToDeg, Sgn, Sin, Tan, Val

Acos Function Example

Function acostest

Double x

x = Cos(DegToRad(30))

Print "Acos of ", x, " is ",

Acos

(x)

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 43

Agl Function

Agl Function

Returns the joint angle for the selected rotational joint, or position for the selected linear joint.

Syntax

Agl

(

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number. Values are from 1 to the number of joints on the robot. The additional S axis is 8 and T axis is 9.

Return Values

The joint angle for selected rotational joint or position for selected linear joints.

Description

The Agl function is used to get the joint angle for the selected rotational joint or position for the selected linear joint.

If the selected joint is rotational, Agl returns the current angle, as measured from the selected joint's 0 position, in degrees. The returned value is a real number.

If the selected joint is a linear joint, Agl returns the current position, as measured from the selected joint's 0 position, in mm. The returned value is a real number.

If an auxiliary arm is selected with the Arm statement, Agl returns the angle (or position) from the standard arm's 0 pulse position to the selected arm.

See Also

PAgl, Pls, PPls

Agl Function Example

The following examples are done from the command window using the Print instruction.

> print

agl

(1),

agl

(2)

17.234 85.355

44 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AglToPls Function

AglToPls Function

Converts robot angles to pulses.

Syntax

AglToPls(

j1

,

j2

,

j3

,

j4

[,

j5

,

j6

] [,

j7

] [,

j8

,

j9

]

)

Parameters

j1 - j6 j7 j8 j9

Real expressions representing joint angles.

Real expression representing the joint #7 angle. For the Joint type 7-axis robot.

Real expression representing the additional S axis angle.

Real expression representing the additional T axis angle.

Return Values

A robot point whose location is determined by joint angles converted to pulses.

Description

Use AglToPls to create a point from joint angles.

Note

Assignment to point can cause part of the joint position to be lost.

In certain cases, when the result of AglToPls is assigned to a point data variable, the arm moves to a joint position that is different from the joint position specified by AglToPls.

For example:

P1 =

AglToPls

(0, 0, 0, 90, 0, 0)

Go P1 '

moves to AglToPls(0, 0, 0, 0, 0, 90) joint position

Similarly, when the AglToPls function is used as a parameter in a CP motion command, the arm may move to a different joint position from the joint position specified by AglToPls.

Move

AglToPls

(0, 0, 0, 90, 0, 0) ' moves to AglToPls(0, 0, 0, 0, 0, 90) joint position

When using the AglToPls function as a parameter in a PTP motion command, this problem does not occur.

See Also

Agl, JA, Pls

AglToPls Function Example

Go

AglToPls

(0, 0, 0, 90, 0, 0)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 45

AIO_In Function

AIO_In Function

Reads analog value form optional analog I/O input channel.

Syntax

AIO_In

(Channel Number)

Parameters

Channel Number Specify the channel number of the analog I/O.

Return Values

Return the analog input value of the analog I/O channel which specified in channel number in real number.

Return value range differs depending on the input range configuration of the analog I/O board.

Description

InFunction

See Also

AIO_InWFunction, AIO_Out, AIO_OutW, AIO_OutFunction, AIO_OutWFunction, AIO_Set, Wait

AIO_In Function Example

Function main

Real var1

var1 =

AIO_In

(2) ' Acquires input state of analog channel input 2

If var1 > 5.0 Then

Go P1

Go P2

' Execute other motion command here

'.

'.

Else

Print "Error in initialization!"

Print "Sensory Inputs not ready for cycle start"

Print "Please check analog inputs 2."

EndIf

Fend

46 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_InW Function

AIO_InW Function

Reads analog value from optional analog I/O input channel.

Syntax

AIO_InW(

Channel Number

)

Parameters

Channel Number Specify the channel number of the analog I/O.

Return Values

Returns the input states (long integers from 0 to 65535) of specified analog I/O channel.

Countermeasures of board input voltage (current) and return value are follows according to input range configuration of analog I/O board.

Input Data

Hexadecimal Decimal

0xFFFF

0x8001

0x8000

0x0000

65535

32769

32768

0

± 10.24(V)

10.23969

0.00031

0.00000

-10.24000

± 5.12(V)

5.11984

0.00016

0.00000

Input Range Configuration

-5.12000

0-5.12(V)

5.12000

2.56008

2.56000

0.00000

0-10.24(V) 0-24(mA)

10.24000

5.12016

5.12000

0.00000

24.00000

12.00037

12.00000

0.00000

See Also

AIO_InFunction, AIO_Out, AIO_OutW, AIO_OutFunction, AIO_OutWFunction, AIO_Set, Wait

AIO_In Function Example

Long word0 word0 =

AIO_InW

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 47

AIO_Out

AIO_Out

Output analog value from the optional analog I/O output channel.

Syntax

AIO_Out Channel Number, Outputdata [, Forced]

Parameters

Channel Number Specify the channel number of the analog I/O.

Output data Specify the real number of Real type which indicates output voltage [V] or current value [mA] in formula or value.

Forced Optional. Usually omitted.

Description

Output the Real value indicating specified voltage [V] or current [mA] to analog output port which specified on channel port. Set the voltage output range of analog output port or selection of voltage and current output by the switch on the board. If setting a value which out of range of analog I/O port, output the border value (maximum and minimum value) which is not out of the range.

AIO_Out command becomes an error if outputting the speed information by specified channel. Stop the speed information output and execute the AIO_Out command.

Note

Forced Flag

Specify the flag if outputting the analog I/O when operating emergency stop or opening the Safety Door by

NoPause task and NoEmgAbort task (special task specified NoPause or NoEmgAbort to start when executing Xqt).

Need to be careful about the system design since analog I/O output changes when operating emergency stop or opening the Safety Door.

See Also

AIO_In, AIO_InFunction, AIO_OutW, AIO_OutFunction, AIO_OutWFunction, AIO_Set

AIO_Out Example

Output 7.0 [V] from the analog I/O channel 1.

AIO_Out 1, 7.0

48 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_Out Function

AIO_Out Function

Returns analog value in real number which is outputting in optional analog I/O output channel.

Syntax

AIO_Out(

Channel Number

)

Parameters

Channel Number Specify the channel number of the analog I/O.

Return Values

Returns specified analog I/O channel voltage and current output state in real number. Unit of voltage output is [V] and current output is [mA].

This function is available when outputting the speed information of the robot on specified channel.

See Also

AIO_In, AIO_InFunction, AIO_Out, AIO_OutW, AIO_OutWFunction, AIO_Set, Wait

AIO_Out Function Example

Real rdata01 rdata01 =

AIO_Out

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 49

AIO_OutW

AIO_OutW

Output 16 bits analog value from optional analog I/O output channel.

Syntax

AIO_OutW

Channel Number

,

Output data

[, Forced]

Parameters

Channel Number Specify the channel number of the analog I/O.

Output data

Forced

Specify the output data (Integer expression from 0 to 65535) in formula or value.

Optional. Usually omitted.

Description

Output to analog I/O channel specified by channel number.

For the output data, specify integer expression from 0 to 65535 in formula or value.

Output voltage (current) is as follows according to output range configuration which is set by the switch on the board.

Output Data

Hexadecimal Decimal

±

10(V)

0xFFFF

0x8001

0x8000

0x0000

65535

32769

32768

0

9.99970

0.00031

0.00000

±

5(V)

4.99985

0.00015

0.00000

-10.00000 -5.00000

Output Range Configuration

0-5(V)

5.00000

2.50008

2.50000

0.00000

0-10(V) 4-20(mA) 0-20(mA)

10.00000 20.00000 20.00000

5.00015

5.00000

0.00000

12.00024 10.00031

12.00000 10.00000

4.00000 0.00000

Note

Forced Flag

Specify the flag if outputting the analog I/O when operating emergency stop or opening the Safety Door by

NoPause task, NoEmgAbort task (special task specified NoPause or NoEmgAbort to start when executing

Xqt), and background task.

Need to be careful about the system design since analog I/O output changes when operating emergency stop or opening the Safety Door.

See Also

AIO_In, AIO_InFunction, AIO_Out, AIO_OutFunction, AIO_OutWFunction, AIO_Set, Wait

AIO_OutW Example

AIO_OutW

1, &H8000

50 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_OutW Function

AIO_OutW Function

Returns output analog value in Long integers from 0 to 65535 which is output on optional analog I/O channel.

Syntax

AIO_OutW(

Channel Number

)

Parameters

Channel Number Specify the channel number of the analog I/O.

Return Values

Returns the output state of specified analog I/O channel in Long integers from 0 to 65535.

Countermeasures of board output voltage (current) and return value are follows according to output range configuration of analog I/O board.

Output Data

Hexadecimal Decimal

± 10(V)

0xFFFF

0x8001

0x8000

0x0000

65535

32769

32768

Output Range Configuration

0-5(V) 0-10(V) 4-20(mA) 0-20(mA)

10.00000 20.00000 20.00000

12.00024 10.00031

12.00000 10.00000

4.00000 0

9.99970

0.00031

0.00000

± 5(V)

4.99985

0.00015

0.00000

5.00000

2.50008

2.50000

-10.00000 -5.00000 0.00000

5.00015

5.00000

0.00000 0.00000

This function is available when outputting the speed information of the robot on specified channel.

See Also

AIO_In, AIO_InFunction, AIO_Out, AIO_OutW, AIO_OutFunction, AIO_Set, Wait

AIO_OutW Function Example

Long word0 word0 =

AIO_OutW

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 51

AIO_Set

AIO_Set

Output the speed information of the robot to optional analog I/O output channel.

Syntax

(1) AIO_Set

channelNumber

, On, {RefTCPSpeed | RealTCPSpeed | RefECPSpeed |

RealECPSpeed }, MaximumOutputSpeed [, MiminumOutputSpeed]

(2) AIO_Set

Channel Number

, Off

(3) AIO_Set [

Channel Number

]

Parameters

Channel Number

On

Off

Specify the channel number of the analog I/O.

value.

Specify the output data (Integer expression from 0 to 65535) in formula or

Finish analog output of the speed information and initializes to output “0”.

RefTCPSpeed

RealTCPSpeed

RefECPSpeed

RealECPSpeed

Output the commanded speed of TCP which is currently selected.

Output the actual speed of TCP which is currently selected.

Output the commanded speed of ECP which is currently selected.

Output the actual speed of ECP which is currently selected.

MaximumOutputSpeed Specify the Real type real number (unit [mm/s]) indicating speed when outputting the maximum value of the output range in formula or value.

MinimumOutputSpeed Specify the Real type real number (unit [mm/s]) indicating speed when outputting the minimum value of the output range in formula or value. Value is “0” [0mm/s] when omitting.

Description

Perform real-time output the speed of TCP (tool center point) or ECP (external control point) by analog voltage or current to analog I/O channel specified by channel number. Set the selection of analog voltage or current and output range configuration by a switch and jumper on the analog I/O board.

The robot speed corresponding to minimum and maximum value of the output range is determined by liner interpolation depending on specified minimum output speed and maximum output speed as shown in the figure below.

Tip Speed [mm/s]

Maximum Output Speed

52

Minimum Output Speed

Minimum Output

Output

[V or mA]

Maximum Output

If specifying the commanded speed (RefTCPSpeed or RefECPSpeed), output the ideal speed waveform based on the applying command value on the robot.

If specifying the actual speed (RealTCPSpeed and RealECPSpeed), output the calculated speed waveform

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_Set based on the actual robot move.

If specifying the TCP (RefTCPSpeed or RealTCPSpeed), output the center point speed of currently selected tool (default: Tool 0).

If specifying the ECP (RefECPSpeed or RealECPSpeed), output the speed of external control point (ECP) which is currently selected. If ECP is not selected (when ECP = 0), output the minimum output.

If only channel number is specified, display the output configuration information of the specified analog channel I/O. If all argument is omitted, display the output configuration information of all analog channel

I/O.

See Also

AIO_In, AIO_InFunction, AIO_Out, AIO_OutFunction, AIO_Out, AIO_OutWFunction, AIO_Set,

Wait

AIO_Set Example

Set actual speed output of TCP of robot 1 and tool 1 to analog output channel.

Perform analog output the robot operating speed and disable the speed output configuration.

Robot 1

Tool 1

Motor On

Power High

SpeedS 2000

AccelS 5000

AIO_Set

1, On, RealTCPSpeed, 2000.0, 0.0

Move P1

AIO_Set

1, Off

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 53

AIO_Set Function

AIO_Set Function

Returns the configuration information of the robot speed output which is set in optional analog I/O output channel.

Syntax

AIO_Set(

channelNumber, Index

)

Parameters

Channel number Specify the channel number of the analog I/O.

Index Specify the index of acquiring configuration information in integer.

Return Values

The following table shows the information that is available from the AIO_Set function:

Index

1

2

3

4

Information

On(1) / Off(0)

RefTCPSpeed(0)/ RealTCPSpeed(1)/ RefECPSpeed(2)/ RealECPSpeed(3)

Maximum output speed [mm/sec]

Minimum output speed [mm/sec]

See Also

AIO_In, AIO_InFunction, AIO_Out, AIO_OutW, AIO_OutFunction, AIO_OutWFunction, AIO_Set,

Wait

AIO_Set Function Example

Print ‘‘Analog Ch#1 speed output is: ’’,

AIO_Set

(1, 1)

54 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_TrackingSet

AIO_TrackingSet

Sets the distance tracking function.

Syntax

(1) AIO_TrackingSet

channelNumber

,

Conversion coefficient of measured value and distance,

Measured value at 0mm, Lower limit of available range for tracking,

Upper limit of available range for tracking, [, Robot motions out of the available range for tracking [,

Axis to execute the distance tracking function

]]

(2) AIO_TrackingSet

channelNumber

Parameters

Channel Number Integer expression from 1 to 8 representing the channel number of analog I/O which the distance sensor to be used is connected.

Conversion coefficient of measured value and distance

Convert the measured value (V, mA) of distance sensor to distance (mm).

Specify the coefficient in read number between

500 to 500 excepting 0.

(Unit: mm/V, mm/mA)

Measured value at 0mm

Specify the voltage or current value when the distance is 0mm (in case of displacement meter: amount of displacement). (Unit: V, mA)

Set the value within the input range setting of the analog I/O board.

Input range setting

Minimum value

±

10.24 V

10.24 V

±

5.12 V

5.12 V

0-5.12 V

0-10.24 V

0-24 mA

0 V

0 V

0 mA

Maximum value

10.24 V

5.12 V

5.12 V

10.24 V

24 mA

Lower limit of available range for tracking

Lower limit of the available range for tracking is the same as the lower limit of of the allowable displacement amount when executing the distance tracking function. Specify the limit between

300 to 300 in real number.

(Unit: mm)

Be sure to specify a larger value than the lower limit of the measurable range of the distance sensor.

For lower limit of the available range for tracking, specify a smaller value than its upper limit.

Upper limit of available range for tracking

Upper limit of the available range for tracking is the same as the upper limit of of the allowable displacement amount when executing the distance tracking function. Specify the limit between − 300 to 300 in real number.

(Unit: mm)

Be sure to specify a smaller value than the upper limit of the measurable range of the distance sensor.

For upper limit of the available range for tracking, specify a larger value than its lower limit.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 55

AIO_TrackingSet

Robot motions out of the available range for tracking

When the robot is out of the available range for tracking (between the upper and lower limits as described in previous page), specify 0 or 1 to stop

/continue the robot motion.

The value can be omitted. If omitted, “0” is set.

Constants are as follows:

Constant

AIOTRACK_ERRSTOP

AIOTRACK_CONTINUE

Value

0

1

Description

Robot stops due to an error outside of the available range for tracking.

Robot continues motion outside of the available range for tracking.

Axis to execute the distance tracking function

Specify an axis (integer value from 0 to 5) to execute the distance tracking function. Specify the axis which is matched with the measured direction of the distance sensor to be used.

The value can be omitted. If omitted, “2” is set.

Constants are as follows:

Constant

AIOTRACK_TOOL_X

AIOTRACK_TOOL_Y

AIOTRACK_TOOL_Z

AIOTRACK_ECP_X

AIOTRACK_ECP_Y

AIOTRACK_ECP_Z

Value

0

3

4

1

2

5

Description

Too coordinate X axis

Tool coordinate Y axis

Tool coordinate Z axis

ECP coordinate X axis

ECP coordinate Y axis

ECP coordinate Z axis

Values: 3 to 5 can be specified when the external control point (ECP) option is enabled.

Return Values

Syntax (2) shows the current set value on the console.

The following is a correspondence table of the above mentioned parameter names and parameter names displayed on the console.

Parameter names

Names displayed on the console

Conversion coefficient of measured value and distance

Measured value at 0mm

Lower limit of available range for tracking

ScaleFactor

RefVoltage

ThresholdMin

Upper limit of available range for tracking ThresholdMax

Robot motions out of the available range for tracking OutOfRangeMode

Axis to execute the distance tracking function TrackingAxis

Displayed examples are as follows:

Ex 1: When channel #1 is set

Ch1:

ScaleFactor 1.000[V/mm or mA/mm]

RefVoltage 0.000 [V or mA]

ThresholdMin − 10.000[mm]

ThresholdMax 10.000[mm]

OutOfRangeMode AIOTRACK_ERRSTOP

TrackingAxis AIOTRACK_TOOL_Z

Ex2: When channel #1 is not set

Ch1: Undefined

56 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_TrackingSet

Description

AIO_TrackingSet sets parameters for the distance tracking function. Parameters to be set are determined by the distance sensor or the working environment. After booting the controller, AIO_TrackingSet must be executed before executing AIO_TrackingStart. Set parameters keep values until the robot controller is turned OFF or rebooted.

Detailed descriptions for parameters are as follows:

Conversion coefficient of measured value and distance:

When the distance sensor indicates displacement: +2mm per +1V, conversion coefficient is 2. At this time, +2mm is the displacement to direction where the distance becomes longer. Depending on the displacement meter, the voltage is set to positive to the direction where the distance becomes shorter. In this case, the conversion coefficient will be negative.

Measured value at 0mm:

For distance sensor, especially the displacement meter, voltage or current value at distance: 0mm differs depending on the products. Also, some of products can set any value for voltage or current value at distance: 0mm by user setting. Specify values depending on the using distance sensor. If the output voltage is of distance sensor is 0V when the distance (or displacement) is 0mm, this parameter is “0”.

Upper/lower limit of available range for tracking:

Set the upper and lower limits depending on the variations allowed by applications.

Set values must be within the measurable range of the distance sensor. The measurable range of the distance sensor differs depending on each sensor and user settings. Be sure to set the limits before executing the distance tracking function. If this parameter is set outside the measurable range of the distance sensor, the distance tracking function cannot work properly and the robot may move unintentionally.

Robot motions out of the available range for tracking:

The following figures indicates the motion trajectory of the robot when the distance tracking function is executed to Z direction in Tool (when the “

Robot motions out of the available range for tracking

” parameter is set to “0” or “1”).

P1: Start point of the distance tracking function

P2: Target point

The figures indicate an object which will move outside of the measurable range at point A and return inside the range at point B.

Set the measured value (displacement) in Tool Z direction at P1 (start point of the function) as a reference value. The distance tracking function controls the robot so that the measured value always becomes the reference value. Therefore, when the robot moves from P1 to P2, the measured values between P1 and point A will be constant.

When the robot is arrived at point A, it stops due to an error if the parameter is set to “0”. If the parameter is set to “1”, the robot keeps moving to P2 from point A. However, the distance tracking function is disabled while the robot is out of the available range. When the robot moved to point B, the function is enabled since the robot is within the available range. The robot moves as with the motion from P1 to point A so that the measured value will be constant.

Distance Tracking Function

Tool Z direction

Enabled Disabeled Enabled

Out of the range

0: Stop the robot motion due to out of the range

1: Continue the robot motion even out of the range

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 57

AIO_TrackingSet

When the parameter is set to “1” and the robot moves outside of the range, the robot moves on the trajectory from the start point (P1) to the target point (P2) with CP motion. As shown in the figures below, the trajectory between A and B (outside of the available range) will become parallel to its of P1-

P2. When the robot arrived to point B, the robot returned to inside the available range. Therefore, the robot is controlled based on the measured value and may move suddenly.

Tool Z direction

0: Stop the robot motion due to out of the range

1: Continue the robot motion even out of the range

CAUTION

0: Stop the robot motion due to out of the range

1: Continue the robot motion even out of the range

■ If each parameter is not set correctly, the robot may move unintentionally when

AIO_TrackingStart is executed.

Be sure to set properly depending on the using device and working environment.

If the robot moves abnormally, immediately hold down the emergency button.

See Also

AIO_TrackingStart, AIO_TrackingEnd, AIO_TrackingOn Function

58 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_TrackingSet

AIO_TrackingSet Function Example

The following is an example program which moves the robot by using the distance tracking function.

(P1: Start point, P2: End point)

■ The parameters set in the example are reference values.

CAUTION

Please note that the operation may not be successful or the motion may be vibratory depending on the set parameters and some operating conditions.

If the robot moves abnormally, immediately hold down the emergency button.

Function Main

Motor On

Power High

SpeedS 30

AccelS 300,300

Go P1

AIO_TrackingSet

1,1,0,-5,5,0,2

AIO_TrackingStart 1,5,5,5

Move P2

AIO_TrackingEnd

Motor Off

‘ Move to P1: start point

‘ Set the distance tracking function

‘ Start the distance tracking function function

‘ End the distance tracking function

‘ Move to P2 with executing the distance tracking

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 59

AIO_TrackingStart

AIO_TrackingStart

Starts the distance tracking function.

Syntax

AIO_TrackingStart

channelNumber

,

ProportionalGain [,IntegralGain [,DifferentialGain]]

Parameters

Channel Number Integer expression from 1 to 8 representing the channel number of analog I/O which the distance sensor to be used is connected.

ProportionalGain Real value (less than 50 except 0) representing a proportional gain of the distance tracking function.

Optimum value differs depending on the robot motion speed or workpiece shape. Therefore, the value needs to be set depending on the using environment.

IntegralGain Real value (less than 100) representing an integral gain of the distance tracking function.

Optional. If omitted, “0” is set.

To increase accuracy of the distance tracking, adjust the integral gain.

DifferentialGain Real value (less than 100) representing a differential gain of the distance tracking function.

Optional. If omitted, “0” is set.

To increase accuracy of the distance tracking, adjust the differential gain.

Description

The distance tracking function controls the robot so that a constant distance can be kept between the robot and the workpiece using the value measured by distance sensor which is connected to the analog I/O.

Direction of the robot axis to be controlled is specified by the

“Axis to execute the distance tracking function”

parameter of AIO_TrackingSet. If the kept distance is set as “reference value”, the measured value by the distance sensor when executing the command will be the reference value.

Execute AIO_TrackingStart to start the distance tracking function and the function ends by executing

AIO_TrackingEnd. The function is working until AIO_TrackingEnd is executed. If you do not use the function, execute AIO_TrackingEnd immediately to end the function.

If AIO_TrackingStart is executed before AIO_TrackingSet, an error occurs. Be sure to execute

AIO_TrackingSet before executing AIO_TrackingStart.

The distance tracking function is available for SCARA robots (including RS series manipulators) and 6-

Axis robots (including N series manipulators).

The robot can move while the function is working. However, the robot moves in CP motion only and PTP motion is not available.

If the robot passes singularity neighborhood while the distance tracking function is working, an error occurs.

60 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_TrackingStart

The following commands cannot be used while the distance tracking function is executed.

Command to turn OFF the motor

PTP motion commands

Force control commands

Torque control command

Conveyor tracking commands

VRT commands

Setting commands

Motor off, SFree

BGo, Go, JTran, Jump, Jump3, Jump3CP, JumpTLZ, Pass, Ptran,

Pulse, TGo

FCKeep, Motion commands with FC, FS#.Reset, FS.Reboot

TC

Motion command + Cnv_QueGet

VRT, VRT_CPMotion

AIO_TrackingSet, Arm, ArmSet, Base, Calib, CalPls, ECP,

Others

ECPSet, Hofs, Inertia, MCal, Power, TLSet, Tool, Weight

(For AIO_TrackingSet, ArmSet, ECPSet, and TLSet, an error occurs when changing the using number.)

Brake, Here, Home, VCal, WaitPos

Settings for ProportionalGain, IntegralGain, and DifferentialGain

In ProportionalGain, the larger value you set, the faster the robot tracks. However, if the set value is too large, the robot moves too fast and may result in an error.

IntegralGain and DifferentialGain can be omitted. To increase the correction accuracy, the setting is required.

If the setting is not proper, the robot may move fast or vibrate.

For details on each gain setting, refer to the following manual.

EPSON RC+ User’s Guide: 19. Distance Tracking Function

■ If too large value is set for ProportionalGain, IntegralGain, and DifferentialGain, the robot may move unintentionally.

CAUTION

Please increase values of each parameter gradually. Changing the value to a larger one at one time is extremely hazardous and the robot may move unintentionally.

If the robot moves abnormally, immediately hold down the emergency button.

See Also

AIO_TrackingSet, AIO_TrackingEnd, AIO_TrackingOn Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 61

AIO_TrackingStart

AIO_TrackingStart Statement Example

The following is an example program which moves the robot by using the distance tracking function.

(P1: Start point, P2: relay point, P3: End point)

■ The parameters set in the example are reference values.

CAUTION

Please note that the operation may not be successful or the motion may be vibratory depending on the set parameters and some operating conditions.

If the robot moves abnormally, immediately hold down the emergency button.

Fend

Function Main

Motor On

Power High

SpeedS 30

AccelS 300,300

Go P1

‘ Move to P1: start point

AIO_TrackingSet 1,1,0,-5,5,0,2 ‘ Set the distance tracking function

AIO_TrackingStart

1,1,0,0

Move P2

Move P3

AIO_TrackingEnd

Motor Off

‘ Start the distance tracking function

‘ Move to P2 with executing the distance tracking function

‘ Move to P3 with executing the distance tracking function

‘ End the distance tracking function

62 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AIO_TrackingEnd

AIO_TrackingEnd

Ends the distance tracking function.

Syntax

AIO_TrackingEnd

Description

End the distance tracking function started by AIO_TrackingStart.

See Also

AIO_TrackingSet, AIO_TrackingStart, AIO_TrackingOn Function

AIO_TrackingEnd Statement Example

The following is an example program which moves the robot by using the distance tracking function.

(P1: Start point, P2: relay point, P3: End point)

■ The parameters set in the example are reference values.

CAUTION

Please note that the operation may not be successful or the motion may be vibratory depending on the set parameters and some operating conditions.

If the robot moves abnormally, immediately hold down the emergency button.

Function Main

Integer ChNo

Motor On

Power High

SpeedS 30

AccelS 300,300

ChNo=1

Go P1 ‘ Move to P1: start point

AIO_TrackingSet ChNo,10,0,-3,3,0,2 ‘ Set the distance tracking function

AIO_TrackingStart ChNo,1,0,0

Move P2

Move P3

AIO_TrackingEnd

Motor Off

‘ Start the distance tracking function

‘ Move to P2 with executing the distance tracking function

‘ Move to P3 with executing the distance tracking function

‘ End the distance tracking function

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 63

AIO_TrackingOnFunction

AIO_TrackingOnFunction

Returns whether the specified robot is executing the distance tracking function or not.

Syntax

AIO_TrackingOn(robotNumber)

Parameters

robotNumber An integer expression representing a robot number which you want to acquire.

Return Values

True (

1) when the distance tracking function is executed, False(0) when it stopped.

See Also

AIO_TrackingSet, AIO_TrackingStart, AIO_TrackingEnd

AIO_TrackingOn Function Example

Function Main

Integer i i =

AIO_TrackingOn

(1) print i

Fend

Example on command window

> print

AIO_TrackingOn

(1)

0

64 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Align Function

Align Function

Returns the point data converted to align the robot orientation (U, V, W) at the specified point in the tool coordinate system with the nearest or specified axis of the specified local coordinate system.

Syntax

(1)

Align

(

Point

[,

localNumber

[,

axisNumber

] ])

Parameters

Point localNumber axisNumber

The point data.

The local coordinate system number to be a reference for the alignment of orientation.

If omitted, the base coordinate system is used.

Specify the axis number to align the robot orientation. If omitted, the robot orientation will be aligned to the nearest coordinate axis.

Constant Value

COORD_X_PLUS 1: +X axis

COORD_Y_PLUS

COORD_Z_PLUS

2:

3:

COORD_X_MINUS 4:

COORD_Y_MINUS 5:

COORD_Z_MINUS 6:

+Y axis

+Z axis

-X axis

-Y axis

-Z axis

Description

While operating the 6-axis robot (including N series), the robot orientation may have to be aligned with an axis of the specified local coordinate system without changing the tool coordinate system position (origin) defined with the point data.

Align Function converts the orientation data (U, V, W) of the specified point data and aligns with the nearest or specified axis of the specified local coordinate system.

For robots except for the 6-axis robots (including N series), it returns a specified point.

See Also

AlignECP Function, LJM Function

Align Function Example

Move

Align

(P0) ROT

P1 =

Align

(P0, 1)

P2 =

Align

(P0, 1, 3)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 65

AlignECP Function

AlignECP Function

Returns the point data converted to align the robot orientation (U, V, W) at the specified point in the tool coordinate system with the nearest axis of the specified ECP coordinate system.

Syntax

(1)

AlignECP

(

Point

,

ECPNumber

)

Parameters

Point

ECPNumber

The point data.

The ECP coordinate system number to be a reference for the alignment of orientation.

Description

While operating the 6-axis robot (including N series), the robot orientation may have to be aligned with an axis of the specified local coordinate system without changing the tool coordinate system position (origin) defined with the point data.

AlignECP Function converts the orientation data (U,V,W) of the specified point data and aligns with the nearest axis of the specified local coordinate system.

For robots except for the 6-axis robots (including N series), it returns a specified point.

See Also

Align Function, LJM Function

AlignECP Function Example

Move

AlignECP

(P0) ROT

P1 =

AlignECP

(P0, 1)

66 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

And Operator

And Operator

Operator used to perform a logical or bitwise And of 2 expressions.

Syntax

result = expr1

And

expr2

Parameters

expr1, expr2

For logical And, any valid expression which returns a Boolean result. For bitwise And, an integer expression.

result

For logical And, result is a Boolean value. For bitwise And, result is an integer.

Description

A logical And is used to combine the results of 2 or more expressions into 1 single Boolean result. The following table indicates the possible combinations.

expr1

True

True

False

False

A bitwise And performs a bitwise comparison of identically positioned bits in two numeric expressions and sets the corresponding bit in

result

according to the following table:

If bit in expr1 is

0

0

1

1

expr2

True

False

True

False

And bit in expr2 is

0

1

0

1

result

True

False

False

False

The result is

0

0

0

1

See Also

LShift, Mask, Not, Or, RShift, Xor

And Operator Example

Function LogicalAnd(x As Integer, y As Integer)

If x = 1

And

y = 2 Then

Print "The values are correct"

EndIf

Fend

Function BitWiseAnd()

If (Stat(0)

And

&H800000) = &H800000 Then

Print "The enable switch is open"

EndIf

Fend

>print 15 and 7

7

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 67

AOpen Statement

AOpen Statement

Opens file in the appending mode.

Syntax

AOpen

fileName

As

#

fileNumber

.

Close

#

fileNumber

Parameters

fileName fileNumber

String expression that specifies valid path and file name. If specifying only a file name, the file must be in the current directory. See

ChDisk

for details.

Integer expression representing values from 30 to 63.

Description

Opens the specified file and identifies it by the specified file number. This statement is used for appending data to the specified file. If the specified file is not found, create a new file.

The specified

fileNumber

identifies the file while it is open and cannot be used to refer to a different file until the current file is closed.

fileNumber

is used by other file operations such as Print#, Write, Flush, and

Close.

Use the Close statement to close the file and release the file number.

It is recommended that you use the FreeFile function to obtain the file number so that more than one task are not using the same number.

Notes

A network path is available.

File write buffering

File writing is buffered. The buffered data can be written with Flush statement. Also, when closing a file with Close statement, the buffered data can be written.

See Also

Close, Print #, BOpen, ROpen, UOpen, WOpen, FreeFile, Flush

AOpen Statement Example

Integer fileNum, i

FileNum = FreeFile

WOpen "TEST.TXT" As #fileNum

For i = 0 To 100

Print #fileNum, i

Next I

Close #fileNum

....

....

....

FileNum = FreeFile

AOpen

"TEST.TXT" As #FileNum

For i = 101 to 200

Print #FileNum, i

Next i

Close #FileNum

68 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Arc, Arc3 Statements

Arc, Arc3 Statements

Arc moves the arm to the specified point using circular interpolation in the XY plane.

Arc3 moves the arm to the specified point using circular interpolation in 3 dimensions.

These two commands are available for SCARA robots (including RS series) and 6-axis robots (including N series).

Syntax

(1)

Arc

midPoint, endPoint

[

ROT

] [

CP

] [

searchExpr

] [

!...!

] [

SYNC

]

(2)

Arc3

midPoint, endPoint

[

ROT

] [

ECP

] [

CP

] [

searchExpr

] [

!...!

] [

SYNC

]

Parameters

midPoint

Point expression. The middle point (taught previously by the user) which the arm travels through on its way from the current point to

endPoint

.

endPoint

Point expression. The end point (taught previously by the user) which the arm travels to during the arc type motion. This is the final position at the end of the circular move.

ROT

ECP

CP

Optional. :Decides the speed/acceleration/deceleration in favor of tool rotation.

Optional. External control point motion. This parameter is valid when the ECP option is enabled.

Optional. Specifies continuous path motion.

searchExpr

Optional. A Till or Find expression.

Till

|

Find

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

!...!

Parallel processing statements may be used with the Arc statement. These are optional.

(Please see the Parallel Processing description for more information.)

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Arc and Arc3 are used to move the arm in a circular type motion from the current position to

endPoint

by way of

midPoint

. The system automatically calculates a curve based on the 3 points (current position,

endPoint

, and

midPoint

) and then moves along that curve until the point defined by

endPoint

is reached.

The coordinates of

midPoint

and

endPoint

must be taught previously before executing the instruction. The coordinates cannot be specified in the statement itself.

Arc and Arc3 use the SpeedS speed value and AccelS acceleration and deceleration values. Refer to

Using

Arc3 with CP

below on the relation between the speed/acceleration and the acceleration/deceleration. If, however, the ROT modifier parameter is used, Arc and Arc3 use the SpeedR speed value and AccelR acceleration and deceleration values. In this case SpeedS speed value and AccelS acceleration and deceleration value have no effect.

Usually, when the move distance is 0 and only the tool orientation is changed, an error will occur.

However, by using the ROT parameter and giving priority to the acceleration and the deceleration of the tool rotation, it is possible to move without an error. When there is not an orientational change with the

ROT modifier parameter and movement distance is not “0”, an error will occur.

Also, when the tool rotation is large as compared to move distance, and when the rotation speed exceeds the specified speed of the manipulator, an error will occur. In this case, please reduce the speed or append the ROT modifier parameter to give priority to the rotational speed/acceleration/deceleration.

When ECP is used (Arc3 only), the trajectory of the external control point coresponding to the ECP number specified by ECP instruction moves circular with respect to the tool coordinate system. In this case, the trajectory of tool center point does not follow a circular line.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 69

Arc, Arc3 Statements

TCP

Work

ECP

Setting Speed and Acceleration for Arc Motion

SpeedS and AccelS are used to set speed and acceleration for the Arc and Arc3 instructions. SpeedS and

AccelS allow the user to specify a velocity in mm/sec and acceleration in mm/sec

2.

Notes

Arc Instruction works in Horizontal Plane Only

The Arc path is a true arc in the Horizontal plane. The path is interpolated using the values for

endPoint

as its basis for Z and U. Use Arc3 for 3 dimensional arcs.

Range Verification for Arc Instruction

The Arc and Arc3 statements cannot compute a range verification of the trajectory prior to the arc motion.

Therefore, even for target positions that are within an allowable range, en route the robot may attempt to traverse a path which has an invalid range, stopping with a severe shock which may damage the arm. To prevent this from occurring, be sure to perform range verifications by running the program at low speeds prior to running at faster speeds.

Suggested Motion to Setup for the Arc Move

Because the arc motion begins from the current position, it may be necessary to use the Go, Jump or other related motion command to bring the robot to the desired position prior to executing Arc or Arc3.

Using Arc, Arc3 with CP

The CP parameter causes the arm to move to the end point without decelerating or stopping at the point defined by

endPoint

. This is done to allow the user to string a series of motion instructions together to cause the arm to move along a continuous path while maintaining a specified speed throughout all the motion. The Arc and Arc3 instructions without CP always cause the arm to decelerate to a stop prior to reaching the end point.

Potential Errors

Changing Hand Attributes

Pay close attention to the HAND attributes of the points used with the Arc instruction. If the hand orientation changes (from Right Handed to Left Handed or vice-versa) during the circular interpolation move, an error will occur. This means the arm attribute (/L Lefty, or /R Righty) values must be the same for the current position,

midPoint

and

endPoint

points.

Attempt to Move Arm Outside Work Envelope

If the specified circular motion attempts to move the arm outside the work envelope of the arm, an error will occur.

70 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Arc, Arc3 Statements

See Also

!Parallel Processing!, AccelS, Move, SpeedS

Arc, Arc3 Statements Example

The diagram below shows arc motion which originated at the point P100 and then moves through P101 and ends up at P102. The following function would generate such an arc:

Function ArcTest

Go P100

Arc

P101, P102

Fend

P102

P101

P100

Tip

When first trying to use the Arc instruction, it is suggested to try a simple arc with points directly in front of the robot in about the middle of the work envelope. Try to visualize the arc that would be generated and make sure that you are not teaching points in such a way that the robot arm would try to move outside the normal work envelope.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 71

Arch Statement

Arch Statement

Defines or displays the Arch parameters for use with the Jump, Jump3, Jump3CP instructions.

Syntax

(1)

Arch

archNumber, departDist, approDist

(2)

Arch

archNumber

(3)

Arch

Parameters

archNumber

Integer expression representing the Arch number to define. Valid Arch numbers are from 0 to 6 making a total of 7 entries into the Arch table. (see default Arch Table below)

departDist

The vertical distance moved (Z) at the beginning of the Jump move before beginning horizontal motion. (specified in millimeters)

For Jump3 and Jump3CP, it specifies the depart distance before a span motion. (specified in millimeters)

approDist

The vertical distance required (as measured from the Z position of the point the arm is moving to) to move in a completely vertical fashion with all horizontal movement complete.

(specified in millimeters)

For Jump3 and Jump3CP, it specifies the approach distance before a span motion.

(specified in millimeters)

Return Values

Displays Arch Table when used without parameters.

The Arch table of the specified Arch number will be displayed when only the Arch number is specified.

Description

The primary purpose of the Arch instruction is to define values in the Arch Table which is required for use with the Jump motion instruction. The Arch motion is carried out per the parameters corresponding to the arch number selected in the Jump C modifier. (To completely understand the Arch instruction, the user must first understand the Jump instruction.)

The Arch definitions allow the user to "round corners" in the Z direction when using the Jump C instruction.

While the Jump instruction specifies the point to move to (including the final Z joint position), the Arch table entries specify how much distance to move up before beginning horizontal motion (

riseDist

) and how much distance up from the final Z joint position to complete all horizontal motion (

fallDist

). (See the diagram below)

Approach

Distance

Depart

Distance

72 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Arch Statement

There are a total of 8 entries in the Arch Definition Table with 7 of them (0-6) being user definable. The

8th entry (Arch 7) is the default Arch which actually specifies no arch at all which is referred to as Gate

Motion. (See Gate Motion diagram below) The Jump instruction used with the default Arch entry (Entry 8) causes the arm to do the following:

1) Begin the move with only Z-joint motion until it reaches the Z-Coordinate value specified by the

LimZ command. (The upper Z value)

2) Next move horizontally to the target point position until the final X, Y and U positions are reached.

3) The Jump instruction is then completed by moving the arm down with only Z-joint motion until the target Z-joint position is reached.

Gate Motion

(Jump with Arch 7)

P0

P1

Arch Table Default Values

Arch

Number

0

1

2

3

4

5

6

Depart

Distance

30

40

50

60

70

80

90

Approach

Distance

30

40

50

60

70

80

90

Notes

Another Cause of Gate Motion

When the specified value of the Rising Distance or Falling Distance is larger than the actual Z-joint distance which the robot must move to reach the target position, Gate Motion will occur. (i.e. no type Arch motion will occur.)

Arch values are Maintained

The Arch Table values are permanently saved and are not changed until either the user changes them.

Caution for Arch motion

Jump motion trajectory is comprised of vertical motion and horizontal motion. It is not a continuous path trajectory. The actual Jump trajectory of arch motion is not determined by Arch parameters alone. It also depends on motion and speed.

In a Jump trajectory, the depart distance increases and the approach distance decreases when the motion speed is set high. When the fall distance of the trajectory is shorter than the expected, lower the speed and/or the deceleration, or change the fall distance to be larger.

Always use care when optimizing Jump trajectory in your applications. Execute Jump with the desired motion and speed to verify the actual trajectory.

When speed is lower, the trajectory will be lower. If Jump is executed with high speed to verify an arch motion trajectory, the end effector may crash into an obstacle with lower speed.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 73

Arch Statement

Even if Jump commands with the same distance and speed are executed, the trajectory is affected by motion of the robot arms. As a general example, for a SCARA robot the vertical upward distance increases and the vertical downward distance decreases when the movement of the first arm is large. When the vertical fall distance decreases and the trajectory is shorter than the expected, lower the speed and/or the deceleration, or change the fall distance to be larger.

See Also

Jump, Jump3, JumpCP

Arch Statement Example

The following are examples of Arch settings done from the command window.

>

arch

0, 15, 15

>

arch

1, 25, 50

> jump p1 c1

> arch

arch0 = 15.000 15.000

arch1 = 25.000 50.000

arch2 = 50.000 50.000

arch3 = 60.000 60.000

arch4 = 70.000 70.000

arch5 = 80.000 80.000

arch6 = 90.000 90.000

>

74 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Arch Function

Arch Function

Syntax

Arch

(

archNumber, paramNumber

)

Parameters

archNumber

Returns arch settings.

paramNumber

Integer expression representing arch setting to retrieve parameter from (0 to 6).

1: depart distance

2: approach distance

Return Values

Real number containing distance.

See Also

Arch Statement

Arch Function Example

Real archValues(6, 1)

Integer i

' Save current arch values

For i = 0 to 6

archValues(i, 0) =

Arch

(i, 1)

archValues(i, 1) =

Arch

(i, 2)

Next i

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 75

Arm Statement

Arm Statement

Selects or displays the arm number to use.

Syntax

(1)

Arm

armNumber

(2)

Arm

Parameters

armNumber

Optional integer expression. Valid range is from 0 to 15. The user may select up to

16 different arms. Arm 0 is the standard (default) robot arm. Arm 1 to 15 are auxiliary arms defined by using the ArmSet instruction. When omitted, the current arm number is displayed.

Return Values

When the Arm instruction is executed without parameters, the system displays the current arm number.

Description

Allows the user to specify which arm to use for robot instructions. Arm allows each auxiliary arm to use common position data. If no auxiliary arms are installed, the standard arm (arm number 0) operates. Since at time of delivery the arm number is specified as “0”, it is not necessary to use the Arm instruction to select an arm. However, if auxiliary arms are used they must first defined with the ArmSet instruction.

The auxiliary arm configuration capability is provided to allow users to configure the proper robot parameters for their robots when the actual robot configuration is a little different than the standard robot.

For example, if the user mounted a 2nd orientation joint to the 2nd robot link, the user will probably want to define the proper robot linkages for the new auxiliary arm which is formed. This will allow the auxiliary arm to function properly under the following conditions:

- Specifying that a single data point be moved through by 2 or more arms.

- Using Pallet

- Using Continuous Path motion

- Using relative position specifications

- Using Local coordinates

For SCARA robots (including RS series) with rotating joints used with a Cartesian coordinate system, joint angle calculations are based on the parameters defined by the ArmSet parameters. Therefore, this command is critical if any auxiliary arm or hand definition is required.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Notes

Arm 0

Arm 0 cannot be defined or changed by the user through the ArmSet instruction. It is reserved since it is used to define the standard robot configuration. When the user sets Arm to “0”, this means to use the standard robot arm parameters.

Arm Number Not Defined

Selecting auxiliary arm numbers that have not been defined by the ArmSet command will result in an error.

76 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Arm Statement

See Also

ArmClr, ArmSet, ECPSet, TLSet

Arm Statement Example

The following examples are potential auxiliary arm definitions using the ArmSet and Arm instructions.

ArmSet defines the auxiliary arm and Arm defines which Arm to use as the current arm. (Arm 0 is the default robot arm and cannot be adjusted by the user.)

From the command window:

> ArmSet 1, 300, -12, -30, 300, 0

> ArmSet

arm0 250 0 0 300 0

arm1 300 -12 -30 300 0

>

Arm

0

> Jump P1

'Jump to P1 using the Standard Arm Config

>

Arm

1

> Jump P1 'Jump to P1 using auxiliary arm 1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 77

Arm Function

Arm Function

Returns the current arm number for the current robot.

Syntax

Arm

Return Values

Integer containing the current arm number.

See Also

Arm Statement

Arm Function Example

Print "The current arm number is: ",

Arm

78 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ArmClr Statement

ArmClr Statement

Clears (undefines) an arm definition.

Syntax

ArmClr

armNumber

Parameters

armNumber

Integer expression representing which of 15 arms to clear (undefine).

(Arm 0 is the default arm and cannot be cleared.)

Description

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

Arm, ArmSet, ECPSet, Local, LocalClr, Tool, TLSet

ArmClr Statement Example

ArmClr

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 79

ArmDef Function

ArmDef Function

Returns arm definition status.

Syntax

ArmDef

(

armNumber

)

Parameters

armNumber

Integer expression representing which arm to return status for.

Return Values

True if the specified arm has been defined, otherwise False.

See Also

Arm, ArmClr, ArmSet, ECPSet, Local, LocalClr, Tool, TLClr, TLSet

ArmDef Function Example

Function DisplayArmDef(armNum As Integer)

Integer i

If

ArmDef

(armNum) = False Then

Print "Arm ", ArmNum, "is not defined"

Else

Print "Arm ", armNum, " Definition:"

For i = 1 to 5

Print ArmSet(armNum, i)

Next i

EndIf

Fend

80 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ArmSet Statement

ArmSet Statement

Specifies and returns auxiliary arms.

Syntax

(1)

ArmSet

armNumber

,

link2Dist

,

joint2Offset, zOffset

[

, link1Dist

] [,

orientAngOffset

]

(2)

ArmSet

armNumber

(3)

ArmSet

Parameters

armNumber

Integer expression: Valid range from 1 to 15. The user may define up to 15 different auxiliary arms.

paramNumber

1

2

3

4

5

SCARA Robots (including RS series)

Horizontal distance from joint #2 to orientation center (mm)

Joint #2 angle offset (degree)

Height offset (mm)

Horizontal distance from joint #1 to joint #2 (mm)

Orientation joint angle offset in degrees.

Return Values

When the ArmSet instruction is initiated without parameters, the system displays all the auxiliary arm numbers and parameters.

The specified arm numbers and parameters will be displayed when only the arm number is specified.

Description

Allows the user to specify auxiliary arm parameters to be used in addition to the standard arm configuration.

This is most useful when an auxiliary arm or hand is installed to the robot. When using an auxiliary arm, the arm is selected by the Arm instruction.

The

link1Dist

and

orientAngOffset

parameters are optional. If they are omitted, the default values are the standard arm values.

The auxiliary arm configuration capability is provided to allow users to configure the proper robot parameters for their robots when the actual robot configuration is a little different than the standard robot.

For example, if the user mounted a 2nd orientation joint to the 2nd robot link, the user will probably want to define the proper robot linkages for the new auxiliary arm which is formed. This will allow the auxiliary arm to function properly under the following conditions:

- Specifying that a single data point be moved through by 2 or more arms.

- Using Pallet

- Using Continuous Path motion

- Using relative position specifications

- Using Local coordinates

For SCARA robots (including RS series) with rotating joints used with a Cartesian coordinate system, joint angle calculations are based on the parameters defined by the ArmSet parameters. Therefore, this command is critical if any auxiliary arm or hand definition is required.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 81

ArmSet Statement

Note

Arm 0

Arm 0 cannot be defined or changed by the user. It is reserved since it is used to define the standard robot configuration. When the user sets Arm to 0 this means to use the standard robot arm parameters.

Auxiliary Arm

RS Series:

View from this direction

Auxiliary

Arm

Y Axis

Joint #1

Joint #2

Auxiliary Arm Joint #1

Joint #2

X Axis

SCARA Robot

See Also

Arm, ArmClr

Cartesian Robot

SCARA Robots (RS Series)

ArmSet Statement Example

The following examples are potential auxiliary arm definitions using the ArmSet and Arm instructions.

ArmSet defines the auxiliary arm and Arm defines which Arm to use as the current arm. (Arm 0 is the default robot arm and cannot be adjusted by the user.)

From the command window:

>

ArmSet

1, 300, -12, -30, 300, 0

>

ArmSet

Arm 0: 125.000, 0.000, 0.000, 225.000, 0.000

Arm 1: 300.000, -12.000, -30.000, 300.000, 0.000

> Arm 0

> Jump P1 '

Jump to P1 using the Standard Arm Config

> Arm 1

> Jump P1 ' Jump to P1 using auxiliary arm 1

82 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ArmSet Function

ArmSet Function

Returns one ArmSet parameter.

Syntax

ArmSet

(

armNumber, paramNumber

)

Parameters

armNumber paramNumber

Integer expression representing the arm number to retrieve values for.

Integer expression representing the parameter to retrieve (0 to 5), as described below.

SCARA Robots (including RS series)

paramNumber

Value Returned

3

4

1

2

5

Horizontal distance from joint #2 to orientation center (mm)

Joint #2 angle offset (degree)

Height offset (mm)

Horizontal distance from joint #1 to joint #2 (mm)

Orientation joint angle offset in degrees.

Return Values

Real number containing the value of the specified parameter, as described above.

Auxiliary Arm

RS Series:

View from this direction

Auxiliary

Arm

Y Axis

Joint #1

Joint #2

Auxiliary Arm Joint #1

X Axis

Joint #2

SCARA Robot

See Also

ArmClr, ArmSet Statement

ArmSet Function Example

Real x x =

ArmSet

(1, 1)

Cartesian Robot

SCARA Robots (RS Series)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 83

Asc Function

Asc Function

Returns the ASCII code of the first character in a character string.

(Returns the character code in a decimal number.)

Syntax

Asc

(

string

)

Parameters

string

Any valid string expression of at least one character in length.

Return Values

Returns an integer representing the ASCII code of the first character in the string sent to the Asc function.

Description

The Asc function is used to convert a character to its ASCII numeric representation. The character string send to the ASC function may be a constant or a variable.

Note

Only the First Character ASCII Value is Returned

Although the Asc instruction allows character strings larger than 1 character in length, only the 1st character is actually used by the Asc instruction. Asc returns the ASCII value of the 1st character only.

See Also

Chr$, InStr, Left$, Len, Mid$, Right$, Space$, Str$, Val

Asc Function Example

This example uses the Asc instruction in a program and from the command window as follows:

Function asctest

Integer a, b, c

a =

Asc

("a")

b =

Asc

("b")

c =

Asc

("c")

Print "The ASCII value of a is ", a

Print "The ASCII value of b is ", b

Print "The ASCII value of c is ", c

Fend

From the command window:

>print

asc

("a")

97

>print

asc

("b")

98

>

84 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Asin Function

Asin Function

Returns the arcsine of a numeric expression.

Syntax

Asin(

number

)

Parameters

number

Numeric expression representing the sine of an angle.

Return Values

Real value, in radians, representing the arc sine of the parameter

number

.

Description

Asin returns the arcsine of the numeric expression. Values range is from -1 to 1. The value returned by

Asin will range from -PI / 2 to PI / 2 radians. If

number

is < -1 or > 1, an error occurs.

To convert from radians to degrees, use the RadToDeg function.

See Also

Abs, Acos, Atan, Atan2, Cos, DegToRad, RadToDeg, Sgn, Sin, Tan, Val

Asin Function Example

Function asintest

Double x

x = Sin(DegToRad(45))

Print "Asin of ", x, " is ",

Asin

(x)

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 85

AtHome Function

AtHome Function

Returns if the current robot is in its Home position or not.

Syntax

AtHome

Return Values

True if the current robot is in its Home position, otherwise False.

Description

The AtHome function returns if the current robot is in its Home position or not. To register the Home position, use HomeSet command or Robot Manager. To move to the Home position, use the Home command.

See Also

Home, HomeClr, HomeDef, HomeSet, Hordr, MCalComplete

86 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Atan Function

Atan Function

Returns the arctangent of a numeric expression.

Syntax

Atan

(

number

)

Parameters

number

Numeric expression representing the tangent of an angular value.

Return Values

Real value, in radians, representing the arctangent of the parameter

number

.

Description

Atan returns the arctangent of the numeric expression. The numeric expression (

number)

may be any numeric value. The value returned by Atan will range from -PI to PI radians.

To convert from radians to degrees, use the RadToDeg function.

See Also

Abs, Acos, Asin, Atan2, Cos, DegToRad, RadToDeg, Sgn, Sin, Tan, Val

Atan Function Example

Function atantest

Real x, y

x = 0

y = 1

Print "Atan of ", x, " is ",

Atan

(x)

Print "Atan of ", y, " is ",

Atan

(y)

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 87

Atan2 Function

Atan2 Function

Returns the angle of the imaginary line connecting points (0,0) and (X, Y) in radians.

Syntax

Atan2

(

X, Y

)

Parameters

X

Y

Numeric expression representing the X coordinate.

Numeric expression representing the Y coordinate.

Return Values

Numeric value in radians (-PI to +PI).

Description

Atan2(

X

,

Y

) returns the angle of the line which connects points (0, 0) and (

X

,

Y

). This trigonometric function returns an arctangent angle in all four quadrants.

See Also

Abs, Acos, Asin, Atan, Cos, DegToRad, RadToDeg, Sgn, Sin, Tan, Val

Atan2 Function Example

Function at2test

Real x, y

Print "Please enter a number for the X Coordinate:"

Input x

Print "Please enter a number for the Y Coordinate:"

Input y

Print "Atan2 of ", x, ", ", y, " is ",

Atan2

(x, y)

Fend

88 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ATCLR Statement

ATCLR Statement

Clears and intializes the average torque for one or more joints.

Syntax

ATCLR

[

j1

[,

j2

[,

j3

[,

j4

[,

j5

[,

j6

[,

j7

[,

j8

[,

j9

]]]]]]]]]

Parameters

j1 – j9

Integer expression representing the joint number. If no parameters are supplied, then the average torque values are cleared for all joints.

The additional S axis is 8 and T axis is 9. If non-existent joint number is supplied, an error occurs.

Description

ATCLR clears the average torque values for the specified joints.

You must execute ATCLR before executing ATRQ.

See Also

ATRQ, PTRQ

ATCLR Statement Example

<Example 1>

The following is the example to display the torque values of specified joints after clearing the effective torque values of all joints.

>

atclr

> go p1

> atrq 1

0.028

> atrq

0.028 0.008

0.029 0.009

0.000 0.000

>

<Example 2>

The following is the example to display the torque values of specified joints after clearing the effective torque values of J1, J4, and J5 for the vertical multi-axis robots.

>

atclr

4, 1, 5

> go p1

> ptrq 1

0.227

> ptrq 4

0.083

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 89

ATRQ Statement

ATRQ Statement

Displays the average torque for the specified joint.

Syntax

ATRQ

[

jointNumber

]

Parameters

jointNumber

Optional. Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Displays current average torque values for all joints.

Description

ATRQ displays the average RMS (root-mean-square) torque of the specified joint. The loading state of the motor can be obtained by this instruction. The result is a real value from 0 to 1 with 1 being maximum average torque.

You must execute ATCLR before this command is executed.

This instruction is time restricted. You must execute ATRQ within 60 seconds after ATCLR is executed.

When this time is exceeded, error 4030 occurs.

See Also

ATCLR, ATRQ Function, PTRQ

ATRQ Statement Example

>

atclr

>

go p1

> atrq

1

0.028

>

atrq

0.028 0.008

0.029 0.009

0.000 0.000

>

90 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ATRQ Function

ATRQ Function

Returns the average torque for the specified joint.

Syntax

ATRQ

(

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Real value from 0 to 1.

Description

The ATRQ function returns the average RMS (root-mean-square) torque of the specified joint. The loading state of the motor can be obtained by this instruction. The result is a real value from 0 to 1 with 1 being maximum average torque.

You must execute ATCLR before this function is executed.

This instruction is time restricted. You must execute ATRQ within 60 seconds after ATCLR is executed.

When this time is exceeded, error 4030 occurs.

See Also

ATRQ Statement, PTCLR, PTRQ

ATRQ Function Example

This example uses the ATRQ function in a program:

Function CheckAvgTorque

Integer i

Go P1

ATCLR

Go P2

Print "Average torques:"

For i = 1 To 4

Print "Joint ", i, " = ",

ATRQ

(i)

Next i

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 91

AutoLJM Statement

AutoLJM Statement

Sets the Auto LJM function.

Syntax

AutoLJM { On | Off }

Parameters

On | Off On: Enables the Auto LJM.

Off: Disables the Auto LJM.

Description

AutoLJM is available for following commands.

Arc, Arc3, Go, Jump3, Jump3CP, Move

When AutoLJM is On, the manipulator operates with a least joint motion, just like using the LJM function, whether the LJM function is applied to the position data to be passed to each command or not. For example, to get the same effect as Go LJM(P1), you can write a program as follows.

AutoLJM On

Go P1

AutoLJM Off

Since AutoLJM can enable LJM within a particular section of a program, it is not necessary to edit each motion command.

When AutoLJM is Off, the LJM function is only enabled when it is applied to the position data to be passed to each motion command.

In any of the following cases, AutoLJM has the setting specified in the controller settings (factory default:

Off).

Controller startup

Reset

All task stop

Motor On

Switching the Auto / Programming operation mode

Notes

Double application of AutoLJM and LJM function

If LJM function is applied to the point data to be passed to the motion command while AutoLJM is On,

LJM will be doubly applied at the command execution.

For Move LJM(P1, Here) and Move LJM(P1), enabling AutoLJM will not affect the motion. However, if

AutoLJM is enabled for Move LJM(P1, P0), motion completion positions of Move LJM(LJM(P1, P0),

Here), which enabled AutoLJM, and the one of Move LJM(P1, P0), which did not enable AutoLJM, may be different.

It is recommended to write a program not to duplicate AutoLJM and LJM functions.

AutoLJM Usage Precaution

You can set the AutoLJM function to be enabled at the controller startup by setting the controller preferences. However, if Auto LJM is enabled at all times by controller preferences or commands, this function automatically adjusts the posture of the manipulator to reduce the motion distance, even when you intended to move the joint widely. Therefore, it is recommended to create a program to apply the LJM function only when necessary by using LJM function or AutoLJM command.

92 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

See Also

AuoLJM Function, LJM Function

AutoLJM Statement Example

AutoLJM

On

Go P1

Go P2

AutoLJM

Off

AutoLJM Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 93

AutoLJM Function

AutoLJM Function

Returns the state of the AutoLJM.

Syntax

AutoLJM

Return Values

0 = Auto LJM OFF

1 = Auto LJM ON

See Also

AutoLJM

AutoLJM Function Example

If

AutoLJM

= Off Then

Print "AutoLJM is off"

EndIf

94 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AutoOrientationFlag

Changes orientation flag of N6-A1000**.

Syntax

AutoOrientationFlag { On | Off }

Parameters

On | Off On : Enables the AutoOrientationFlag.

Off : Disables the AutoOrientationFlag. (Default)

Description

AutoOrientationFlag is available for following commands:

Go, BGo, TGo, Jump3, JumpTLZ

Change the following orientation flag:

Model

Parameter

OFF/ON

Orientation flag

Hand Elbow Wrist

AutoOrientationFlag

Remark

N6-A1000**

OFF

ON

-

-

-

- Move with the orientation flag which is

*1

Set “ON” when you cannot select the orientation flag.

: When setting the AutoOrientationFlag to “ON”, the orientation flag is changed

*1: Wrist orientation flag is changed only when you change the elbow orientation flag. When you change the wrist orientation flag, it will be the orientation flag which minimizes the movement of Joint #4.

Use AutoOrientationFlag with LJM Function

When you use the command with LJM Function, Wrist Flag, J4Flag, and J6Flag will be the orientation selected by LJM Function.

For example, when you set orientationFlag of LJM Function to “3”, “Wrist Flag”, “J4Flag”, and “J6Flag” are selected so that Joint #5 will be the shortest movement. When you do not use LJM Function, “Wrist

Flag”, “J4Flag”, and “J6Flag” are selected so that Joint #4 will be the shortest movement.

AutoOrientationFlag Example

Motor On

Power High

AutoOrientationFlag

On

Go P1

Go P2

NOTE

When setting the AutoOrientationFlag to “ON”:

Flag is changed as follows due to the position of point P and the red line.

Above

Below

Point P is above the red line: Above

Point P is below the red line: Below

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 95

AutoOrientationFlag Function

AutoOrientationFlag Function

Returns the state of the AutoOrientationFlag

Syntax

AutoOrientationFlag

Return Values

0 = AutoOrientationFlag OFF

1 = AutoOrientationFlag ON

See Also

AutoOrientationFlag

AutoOrientationFlag Function Example

If

AutoOrientationFlag

= Off Then

Print " AutoOrientationFlag is off"

EndIf

96 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AvgSpeedClear Statement

AvgSpeedClear Statement

Clears and initializes the average of the absolute speed values for one or more joints.

Syntax

AvgSpeedClear [

j1

[,

j2

[,

j3

[,

j4

[,

j5

[,

j6

[,

j7

[,

j8

[,

j9

]]]]]]]]]

Parameters

j1 – j9

Integer expression representing the joint number. If no parameters are supplied, then the average values for all joints are cleared.

The additional S axis is 8 and T axis is 9. If non-existent joint number is supplied, an error occurs.

Description

AvgSpeedClear clears the average of the absolute speed values for the specified joints.

You must execute AvgSpeedClear before executing AvgSpeed.

This command does not support the PG additional axes.

See Also

AvgSpeed, PeakSpeed

AvgSpeedClear Statement Example

<Example 1>

The following is the example to display the average speed values of specified joints after clearing the average speed values of all joints.

> AvgSpeedClear

>

Go P1

>

AvgSpeed 1

0.073

> AvgSpeed

0.073 0.044

0.021 0.069

0.001 0.108

0.000 0.000

0.000

>

<Example 2>

The following is the example to display the average speed values of specified joints after clearing the average speed values of J1, J4, and J5 for the vertical multi-axis robots.

>

AvgSpeedClear

4, 1, 5

> Go P1

> AvgSpeed 1

0.226

> AvgSpeed 4

0.207

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 97

AvgSpeed Statement

AvgSpeed Statement

Displays the average of the absolute speed values for the specified joints.

Syntax

AvgSpeed [

jointNumber

]

Parameters

jointNumber

Optional. Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Displays the average of the absolute values of current speed for the specified joints. If no joint is specified, the average of the absolute speed values for all joints will be displayed.

Description

AvgSpeed displays the average value of the absolute speed values for the specified joints. The loading state of the motor can be obtained by this instruction. The result is a real value from 0 to 1 with 1 being the maximum average speed value.

If the average value is below 0.001, the result will be displayed as 0.

You must execute AvgSpeedClear before this command is executed.

This instruction is time restricted. You must execute AvgSpeed within 60 seconds after AvgSpeedClear is executed. When this time is exceeded, error 4088 occurs.

When using the virtual controller or conducting dry-run, the average of the absolute speed values is calculated from the commanded speed instead of the actual speed.

This command does not support the PG additional axes.

See Also

AvgSpeedClear, AvgSpeed Function, PeakSpeed

AvgSpeed Statement Example

>

AvgSpeedClear

>

Go P1

> AvgSpeed

1

0.226

>

AvgSpeed

0.226 0.133

0.064 0.207

0.003 0.314

0.000 0.000

0.000

>

98 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AvgSpeed Function

AvgSpeed Function

Returns the average value of the absolute speed values for the specified joints.

Syntax

AvgSpeed (

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Real value from 0 to 1.

Description

AvgSpeed function returns the average value of the absolute speed values for the specified joints. The loading state of the motor can be obtained by this function. The result is a real value from 0 to 1 with 1 being the maximum average speed value.

You must execute AvgSpeedClear before this command is executed.

This instruction is time restricted. You must execute AvgSpeed function within 60 seconds after AvgSpeed statement is executed. When this time is exceeded, error 4088 occurs.

When using the virtual controller or conducting dry-run, the average of the absolute speed values is calculated from the commanded speed instead of the actual speed.

This command does not support the PG additional axes.

See Also

AvgSpeed, AvgSpeedClear, PeakSpeed

AvgSpeed Function Example

This example uses the AvgSpeed function in a program:

Function CheckAvgSpeed

Integer i

Go P1

AvgSpeedClear

Go P2

Print "Average speeds:"

For i = 1 To 6

Print "Joint ", i, " = ",

AvgSpeed

(i)

Next i

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 99

AvoidSingularity Statement

AvoidSingularity Statement

Sets the singularity avoiding function.

Syntax

AvoidSingularity { mode }

Parameters

mode Integer expression representing a singularity avoiding mode to use

Constant

SING_NONE

SING_THRU

SING_THRUROT

SING_VSD

SING_AUTO

SING_AVOID

Value Mode

0

1

2

3

4

5

Disables the singularity avoiding function.

Enables the singularity avoiding function.

Enables the singularity avoiding function in CP motions with an ROT modifier.

Enables variable speed CP motion function.

Selects the singularity avoiding function or variable speed

CP motion function automatically.

Enables the elbow singularity avoiding function.

Description

AvoidSingularity is available for following commands.

Move, Arc, Arc3, Jump3, Jump3CP, JumpTLZ

A singularity avoiding function is to prevent acceleration errors when the vertical 6-axis (including N series) or RS series robot approaches to the singularity in CP motion by passing a different trajectory and returning to the original trajectory after passing the singularity. Since the singularity avoiding function is usually set to “1: Enabled” at the controller startup, it is not necessary to change the setting. If you do not want a singularity avoidance to ensure compatibility with software which does not support the singularity avoiding function, or to avoid a trajectory gap, disable the function.

A variable speed CP motion function automatically controls speed while keeping the trajectory when the vertical 6-axis (including N series) or RS series robot approaches to the singularity in order to avoid the acceleration error and overspeed error, and returns to the normal speed command after leaving the singularity. To pass the singularity while keeping the trajectory, Joint #1, #2, #4, and #6 may move largely.

If the AvoidSingularity parameter is changed, this function remains enabled until the next controller startup.

At the controller startup, AvoidSingularity has the setting specified in the controller setting (factory default:

1). Also, parameters for SingularityAngle, SingularitySpeed, and SingularityDist are reset to the default values when AvoidSingularity setting is changed.

SING_AUTO mode is the combination of SING_THRU and SING_VSD modes. SING_THRU or

SING_VSD is selected depending on the motion or speed.

100 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

AvoidSingularity Statement

Notes

Condition setting of singularity neighborhood for vertical 6-axis robot and N series robot

To determine whether the manipulator approaches to the wrist singularity neighborhood, angle of Joint #5 and angular velocity of Joint #4 are used. By default, Joint #5 angle is set to ±10 degree, and Joint #4 angle is set to ±10 % with respect to the maximum joint velocity. To change these settings, use SingularityAngle and SingularitySpeed commands.

Also, to determine whether the manipulator approaches to the hand singularity neighborhood, the coordinates of the point P is used. By default, distance between the point P and Joint #1 rotation axis is set to 30 mm. To change this setting, use SingularityDist command.

Condition setting of singularity neighborhood for RS series robot

To determine whether the manipulator approaches to the hand singularity neighborhood, the coordinates of the origin point in the default tool 0 coordinate system is used. By default, distance between the origin point and Joint #1 rotation axis is set to 30 mm. To change this setting, use SingularityDist command.

Cautions for N series robot

Unlike other models, the default setting of singularity avoidance function for N series is “3: Enables variable speed CP motion function.”

N series robots have the elbow singularity other than the wrist and hand singularities.

The elbow singularity area is where the Joint #3 is at 0 degree (the Joint #3 and Joint #2 overlap each other).

For details of avoiding motion near the elbow singularity area, refer to the

EPSON RC+ User’s Guide

.

Difference between SING_THRU and SING_AVOID

SING_THRU avoids the wrist and shoulder singularities, but not the elbow singularity.

To avoid the elbow singularity, use SING_AVOID. Note, however, that the elbow singularity avoiding motion changes the trajectory largely than the other singularity avoiding motions.

When SING_AVOID is selected for the manipulator models other than N series, an error 4002 occurs.

See Also

AvoidSingularity Function, SingualrityAngle, SingularitySpeed, SingularityDist

AvoidSingularity Statement Example

AvoidSingularity

0 ‘

Disables the singularity avoidance and operate the manipulator

Move P1

Move P2

AvoidSingularity

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 101

AvoidSingularity Function

AvoidSingularity Function

Returns the state of AvoidSingularity.

Syntax

AvoidSingularity

Return Values

0 = Singularity avoiding function disabled

1 = Singularity avoiding function enabled

2 = Singularity avoiding function enabled for CP motion commands with an ROT modifier

3 = Variable speed CP motion function enabled

4 = Automatic selection of the singularity avoiding function or the variable speed CP motion function

5 = Elbow singularity avoiding function enabled

See Also

AvoidSingularity

AvoidSingularity Function Example

If

AvoidSingularity

= Off Then

Print "AvoidSingularity is off"

EndIf

102 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Base Statement

Base Statement

Defines and displays the base coordinate system.

Syntax

(1)

Base

pCoordinateData

(2)

Base

pOrigin, pXaxis, pYaxis

[, {

X

|

Y

} ]

Parameters

pCoordinateData

Point data representing the coordinate data of the origin and direction.

pOrigin pXaxis

Integer expression representing the origin point using robot coordinate system.

Integer expression representing a point along the X axis using robot coordinate system if X alignment is specified.

pYaxis

X | Y

Integer expression representing a point along the Y axis using robot coordinate system if Y alignment is specified.

Optional. If X alignment is specified, then

pXaxis

is on the X axis of the new coordinate system and only the Z coordinate of

pYaxis

is used. If Y alignment is specified, then

pYaxis

is on the Y axis of the new coordinate system and only the Z coordinate of

pXaxis

is used. If omitted, X alignment is assumed.

Description

Defines the robot base coordinate system by specifying base coordinate system origin and rotation angle in relation to the robot absolute coordinate system.

To reset the Base coordinate system to default, execute the following statement. This will make the base coordinate system the same as the robot absolute coordinate system.

Base XY(0, 0, 0, 0)

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Note

Changing the base coordinate system affects all local definitions

When base coordinates are changed, all local coordinate systems must be re-defined.

See Also

Local

Base Statement Example

Define base coordinate system origin at 100 mm on X axis and 100 mm on Y axis

>

Base

XY(100, 100, 0, 0)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 103

BClr Function

BClr Function

Clears one bit in a number and returns the new value

Syntax

BClr

(

number, bitNum

)

Parameters

number bitNum

Specifies the numeric value to clear the bit by an expression or numeric value.

Specifies the bit (integer from 0 to 31) to be cleared by an expression or numeric value.

Return Values

Returns the new value of the specified numeric value (integer).

See Also

BClr64, BSet, BSet64, BTst, BTst64

BClr Function Example

flags =

BClr

(flags, 1)

104 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BClr64 Function

BClr64 Function

Clears one bit in a number and returns the new value.

Syntax

BClr64

(

number, bitNum

)

Parameters

number bitNum

Specifies the numeric value to clear the bit by an expression or numeric value.

Specifies the bit (integer from 0 to 63) to be cleared by an expression or numeric value.

Return Values

Returns the new value of the specified numeric value (integer).

See Also

BClr, BSet, BSet64, BTst, BTst64

BClr64 Function Example

flags =

BClr64

(flags, 1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 105

BGo Statement

BGo Statement

Executes Point to Point relative motion, in the selected local coordinate system.

Syntax

BGo

destination

[

CP

] [PerformMode

modeNumber

] [

searchExpr

] [

!...!

] [

SYNC

]

Parameters

destination

CP

PerformMode

modeNumber

The target destination of the motion using a point expression.

Optional. Specifies continuous path motion.

Optional. Specify the robot performance mode.

Specify the operation mode assigned to

PerformMode

with an integer value (1 to 3) or with the following constant. If

PerformMode

is specified, this parameter cannot be omitted.

Constant Value Description

searchExpr

!...!

SYNC

Mode_Standard 1 Sets the Standard mode

Mode_High_Speed 2 Sets the High-speed mode

Mode_Low_Oscillation 3

Optional. A Till or Find expression.

Till

|

Find

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Sets the Low-oscillation mode

Optional. Parallel Processing statements can be added to execute I/O and other commands during motion.

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Executes point to point relative motion, in the selected local coordinate system that is specified in the

destination

point expression.

If a local coordinate system is not specified, relative motion will occur in local 0 (base coordinate system).

Arm orientation attributes specified in the

destination

point expression are ignored. The manipulator keeps the current arm orientation attributes. However, for a 6-Axis manipulator (including N series), the arm orientation attributes are automatically changed in such a way that joint travel distance is as small as possible. This is equivalent to specifying the LJM modifier parameter for Move statement. Therefore, if you want to change the arm orientation larger than 180 degrees, execute it in several times.

The Till modifier is used to complete BGo by decelerating and stopping the robot at an intermediate travel position if the current Till condition is satisfied.

The Find modifier is used to store a point in FindPos when the Find condition becomes true during motion.

When parallel processing is used, other processing can be executed in parallel with the motion command.

The CP parameter causes acceleration of the next motion command to start when the deceleration starts for the current motion command. In this case the robot will not stop at the destination coordinate and will continue to move to the next point.

Deceleration motion and acceleration motion of different modes can be combined when

PerformMode

is set while the path motion is enabled. Some combinations are not available depending on operation modes.

For details, refer to

PerformMode Statement.

106 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BGo Statement

See Also

Accel, BMove, Find, !....! Parallel Processing, Point Assignment, PerformMode, Speed, Till, TGo,

TMove, Tool

BGo Statement Example

>

BGo

XY(100, 0, 0, 0) ' Move 100 mm in X direction (in the local coordinate system)

Function BGoTest

Speed 50

Accel 50, 50

Power High

P1 = XY(300, 300, -20, 0)

P2 = XY(300, 300, -20, 0) /L

Local 1, XY(0, 0, 0, 45)

GoP1

Print Here

BGo XY(0, 50, 0, 0)

Print Here

Go P2

Print Here

BGo XY(0, 50, 0, 0)

Print Here

BGo XY(0, 50, 0, 0) /1

Print Here

Fend

[Output]

X: 300.000 Y: 300.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /R /0

X: 300.000 Y: 350.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /R /0

X: 300.000 Y: 300.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /L /0

X: 300.000 Y: 350.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /L /0

X: 264.645 Y: 385.355 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /L /0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 107

BMove Statement

BMove Statement

Executes linear interpolation relative motion, in the selected local coordinate system.

Syntax

BMove

destination

[

ROT

] [

CP

] [

searchExpr

] [

!...!

] [

SYNC

]

Parameters

destination

ROT

CP

searchExpr

!...!

The target destination of the motion using a point expression.

Optional. Decides the speed/acceleration/deceleration in favor of tool rotation.

Optional. Specifies continuous path motion.

Optional. A Till or Find expression.

Till

|

Find

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Optional. Parallel Processing statements can be added to execute I/O and other commands during motion.

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Executes linear interpolated relative motion, in the selected local coordinate system that is specified in the

destination

point expression.

If a local coordinate system is not specified, relative motion will occur in local 0 (base coordinate system).

Arm orientation attributes specified in the

destination

point expression are ignored. The manipulator keeps the current arm orientation attributes. However, for a 6-Axis manipulator (including N series), the arm orientation attributes are automatically changed in such a way that joint travel distance is as small as possible. This is equivalent to specifying the LJM modifier parameter for Move statement. Therefore, if you want to change the arm orientation larger than 180 degrees, execute it in several times.

BMove uses the SpeedS speed value and AccelS acceleration and deceleration values. Refer to

Using

BMove with CP

below on the relation between the speed/acceleration and the acceleration/deceleration. If, however, the ROT modifier parameter is used, BMove uses the SpeedR speed value and AccelR acceleration and deceleration values. In this case SpeedS speed value and AccelS acceleration and deceleration value have no effect.

Usually, when the move distance is “0” and only the tool orientation is changed, an error will occur.

However, by using the ROT parameter and giving priority to the acceleration and the deceleration of the tool rotation, it is possible to move without an error. When there is not an orientational change with the

ROT modifier parameter and movement distance is not “0”, an error will occur.

Also, when the tool rotation is large as compared to move distance, and when the rotation speed exceeds the specified speed of the manipulator, an error will occur. In this case, please reduce the speed or append the ROT modifier parameter to give priority to the rotational speed/acceleration/deceleration.

The Till modifier is used to complete BMove by decelerating and stopping the robot at an intermediate travel position if the current Till condition is satisfied.

The Find modifier is used to store a point in FindPos when the Find condition becomes true during motion.

108 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BMove Statement

When Till is used and the Till condition is satisfied, the manipulator halts immediately and the motion command is finished. If the Till condition is not satisfied, the manipulator moves to the destination point.

When Find is used and the Find condition is satisfied, the current position is stored. Please refer to Find for details.

When parallel processing is used, other processing can be executed in parallel with the motion command.

Note

Using BMove with CP

The CP parameter causes the arm to move to

destination

without decelerating or stopping at the point defined by

destination

. This is done to allow the user to string a series of motion instructions together to cause the arm to move along a continuous path while maintaining a specified speed throughout all the motion. The BMove instruction without CP always causes the arm to decelerate to a stop prior to reaching the point

destination

.

See Also

AccelS, BGo, Find, !....! Parallel Processing, Point Assignment, SpeedS, TGo, Till, TMove, Tool

BMove Statement Example

>

BMove

XY(100, 0, 0, 0)' Move 100 mm in the X direction (in the local coordinate system)

Function BMoveTest

Speed 50

Accel 50, 50

SpeedS 100

AccelS 1000, 1000

Power High

P1 = XY(300, 300, -20, 0)

P2 = XY(300, 300, -20, 0) /L

Local 1, XY(0, 0, 0, 45)

Go P1

Print Here

BMove XY(0, 50, 0, 0)

Print Here

Go P2

Print Here

BMove XY(0, 50, 0, 0)

Print Here

BMove XY(0, 50, 0, 0) /1

Print Here

Fend

[Output]

X: 300.000 Y: 300.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /R /0

X: 300.000 Y: 350.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /R /0

X: 300.000 Y: 300.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /L /0

X: 300.000 Y: 350.000 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /L /0

X: 264.645 Y: 385.355 Z: -20.000 U: 0.000 V: 0.000 W: 0.000 /L /0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 109

Boolean Statement

Boolean Statement

Declares variables of type Boolean. (2 byte whole number).

Syntax

Boolean

varName

[(

subscripts

)] [,

varName

[(

subscripts

)]...]

Parameters

varName subscripts

Variable name which the user wants to declare as type Boolean.

The subscripts syntax is as follows

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Boolean is used to declare variables as type Boolean. Variables of type Boolean can contain one of two values, False and True. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

See Also

Byte, Double, Global, Int32, Int64, Integer, Long, Real, Short, String, UByte, UInt32, UINT64,

UShort

Boolean Statement Example

Boolean

partOK

Boolean

A(10) '

Single dimension array of boolean

Boolean

B(10, 10) ' Two dimension array of boolean

Boolean

C(5, 5, 5) '

Three dimension array of boolean partOK = CheckPart()

If Not partOK Then

Print "Part check failed"

EndIf

110 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BOpen Statement

BOpen Statement

Opens file in binary mode.

Syntax

BOpen

fileName

As

#

fileNumber

.

.

Close

#

fileNumber

Parameters

fileName

String expression that specifies valid path and file name.

If specifying only a file name, the file must be in the current directory.

See ChDisk for the details.

fileNumber

Integer expression representing values from 30 to 63.

Description

Opens the specified file and identifies it by the specified file number. This statement is used for accessing the specified file in binary mode. If the specified file is not found, it will create a new file. If the file exists, it will read and write the data from the beginning.

Use the ReadBin and WriteBin commands to read and write data in binary mode.

Note

A network path is available.

The specified

fileNumber

identifies the file while it is open and cannot be used to refer to a different file until the current file is closed.

fileNumber

is used by other file operations such as ReadBin, WriteBin,

Seek, Eof, Flush, and Close.

The read/write position (pointer) of the file can be changed using the Seek command. When switching between read and write access, use Seek to reposition the file pointer.

Use the Close statement to close the file and release the file number.

It is recommended that you use the FreeFile function to obtain the file number so that more than one task are not using the same number.

See Also

Close, AOpen, FreeFile, ReadBin, ROpen, UOpen, WOpen, WriteBin

BOpen Statement Example

Integer fileNum, i

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 111

Box Statement

Box Statement

Specifies and displays the approach check area.

Syntax

(1)

Box

AreaNum

[,

robotNumber

],

minX

,

maxX

,

mixY

,

maxY

,

minZ

,

maxZ

[

localNumber

]

(2)

Box

AreaNum, robotNumber

,

minX

,

maxX

,

mixY

,

maxY

,

minZ

,

maxZ, remote OutLogic

[

localNumber

]

(3)

Box

AreaNum, robotNumber

(4)

Box

Parameters

AreaNum robotNumber

Integer expression representing the area number from 1 to 15.

Integer expression that specifies which robot you want to configure.

If

robotNumber

is omitted in syntax (1), the current robot number is used.

You cannot omit

robotNumber

in syntax (2) and (3).

minX maxX minY maxY minZ

The minimum X coordinate position which can be set to the approach check area.

The maximum X coordinate position which can be set to the approach check area.

The minimum Y coordinate position which can be set to the approach check area.

The maximum Y coordinate position which can be set to the approach check area.

maxZ

Remote OutLogic localNumber

The minimum Z coordinate position which can be set to the approach check area.

The maximum Z coordinate position which can be set to the approach check area.

On | Off

Set the Remote output logic. To set I/O output to On when the Box approaches, use On. To set I/O output to Off when the Box approaches, use Off. When the parameter is omitted, On will be used .

Specify the local coordinate system number from 0 to 15.

Be sure to add “/LOCAL” before the number. When the parameter is omitted, the local coordinate system number “0” will be used.

Return Values

When Syntax (3) is used, the area setting of the specified area is displayed.

When Syntax (4) is used, the area settings for all area numbers of the current robot are displayed.

Description

Box is used to set the approach check area. The approach check area is for checking approaches of the robot end effector in the approach check area. The position of the end effector is calculated by the current tool. The approach check area is set on the base coordinate system of the robot or the local coordinate system specified by

localNumber,

and is between the specified maximum and minimum X, Y, and Z of the specified coordinate system.

When the approach check area is used, the system detects approaches in any motor power status during the controller is ON.

You can also use GetRobotInsideBox function or InsideBox function to get the result of the approach check. GetRobotInsideBox function can be used for wait condition of Wait command. You can provide the check result to the I/O by setting the remote output setting.

112 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Box Statement

When several robots use one area, you should define the area from each robot coordinate system.

Upper limit of axes X, Y, Z

Box1

Robot 1

Robot 2

Lower limit of axes X, Y, Z

Configure the Box 1 from Robot 1 position

Box 1, 1, 100, 200, 0, 100, 0, 100

Lower limit of axes X, Y, Z is (100, 0, 0) and upper limit is (200, 100, 100)

Configure the Box 1 from Robot 2

Box 1, 2, -200, -100, 0, 100, 0, 100

Lower limit of axes X, Y, Z is (

200, 0, 0) and upper limit is (

100, 100, 100)

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Notes

Turning Off Approach Check Area by coordinate axis

You can turn off the approach check area of each coordinate axis. To turn off only the Z axis, define

minZ

and

maxZ

to be 0. For example Box 1, 200, 300, 0, 500, 0, 0.

In this case, it checks if the robot end effector is in the XY dimensional area.

Default values of Approach Check Area

The default values for the Box statement are “0, 0, 0, 0, 0, 0”. (Approach Check Area Checking is turned off.)

Tool Selection

The approach check is executed for the current tool. When you change the tool, the approach check may display the tool approach from inside to outside of the area or the other way although the robot is not operating.

Additional axis

For the robot which has the additional ST axis (including the running axis), the approach check plane to set doesn’t depend on the position of additional axis, but is based on the robot base coordinate system.

Tip

Set Box statement from Robot Manager

EPSON RC+ has a point and click dialog box for defining the approach check area. The simplest method to set the Box values is by using the Box page on the Robot Manager .

See Also

BoxClr, BoxDef, GetRobotInsideBox, InsideBox, Plane

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 113

Box Statement

Box Statement Example

<Example 1>

These are examples to set the approach check area using

Box

statement.

>

Box

1, -200, 300, 0, 500, -100, 0

>

Box

Box 1: 1, -200.000, 300.000, 0.000, 500.000, -100.000, 0.000, ON

/LOCAL0

<Example 2>

The following is a simple program to set the Box values by specifying the local coordinate system numbers

1 and 2.

Function SetBox

Integer i

Box

1, -200, 300, 0, 500, -100, 0 /LOCAL1

i = 2

Box

2, 100, 200, 0, 100, -200, 100 /LOCAL(i)

Fend

114 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Box Function

Box Function

Returns the specified approach check area.

Syntax

Box(

AreaNum

[,

robotNumber

],

limit

)

Parameters

AreaNum robotNumber

Integer expression representing the area number.

Optional. Integer expression that specifies which robot you want to configure.

If omitted, the current robot number is used.

limit

Integer expression that specifies which limit to return.

1: Lower limit

2: Upper limit

Return Values

When you select 1 for

limit

, the point contains the lower limit of the X, Y, Z coordinates.

When you select 2 for

limit

, the point contains the upper limit of the X, Y, Z coordinates.

See Also

Box, BoxClr, BoxDef, GetRobotInsideBox, InsideBox

Box Function Example

P1 =

Box

(1,1)

P2 =

Box

(1,2)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 115

BoxClr Statement

BoxClr Statement

Clears the definition of approach check area.

Syntax

BoxClr

AreaNum

[,

robotNumber

]

Parameters

AreaNum robotNumber

Integer expression representing the area number from 1 to 15.

Optional. Integer expression that specifies which robot you want to configure.

If omitted, the current robot number is used.

Description

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

Box, BoxDef, GetRobotInsideBox, InsideBox

BoxClr Statement Example

This example uses BoxClr function in a program.

Function ClearBox

If BoxDef(1) = True Then

BoxClr 1

EndIf

Fend

116 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BoxDef Function

BoxDef Function

Returns whether Box has been defined or not.

Syntax

BoxDef(

AreaNum

) [,

robotNumber

]

Parameters

AreaNum robotNumber

Integer expression representing an area number from 1 to 15.

Integer expression representing a robot number you want to configure.

If omitted, the current robot will be specified.

Return Values

True if approach check area is defined for the specified area number, otherwise False.

See Also

Box, BoxClr, GetRobotInsideBox, InsideBox

BoxDef Function Example

This example uses BoxDef function in a program.

Function ClearBox

If

BoxDef(1)

= True Then

BoxClr 1

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 117

Brake Statement

Brake Statement

Turns brake on or off for specified joint of the current robot.

Syntax

Brake

status, jointNumber

Parameters

status

The keyword On is used to turn the brake on. The keyword Off is used to turn the brake off.

jointNumber

The joint number from 1 to 6.

Description

The Brake command is used to turn brakes on or off for one joint of the 6-axis robot (including N series).

It can only be executed as a command. This command is intended for use by maintenance personnel only.

When the Brake statement is executed, the robot control parameter is initialized.

See

Motor On

for the details.

WARNING

■ Use extreme caution when turning off a brake. Ensure that the joint is properly supported, otherwise the joint can fall and cause damage to the robot and personnel.

Note

Before releasing the brake, be ready to use the emergency stop switch

When the controller is in emergency stop status, the motor brakes are locked. Be aware that the robot arm may fall by its own weight when the brake is turned off with Brake command.

See Also

Motor, Power, Reset, SFree, SLock

Brake Statement Example

>

brake

on, 1

>

brake

off, 1

118 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Brake Function

Brake Function

Returns brake status for specified joint.

Syntax

Brake

(

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number. Value are from 1 to the number of joints on the robot.

Return Values

0 = Brake off, 1 = Brake on.

See Also

Brake

Brake Function Example

If

brake

(1) = Off Then

Print “Joint 1 brake is off”

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 119

BSet Function

BSet Function

Sets a bit in a number and returns the new value.

Syntax

BSet

(

number

,

bitNum

)

Parameters

number bitNum

Specifies the value to set the bit with an expression or numeric value.

Specifies the bit (integer from 0 to 31) to be set by an expression or numeric value.

Return Values

Returns the bit set value of the specified numeric value (integer).

See Also

BClr, BClr64, BSet64, BTst, BTst64

BSet Function Example

flags =

BSet

(flags, 1)

120 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BSet64 Function

BSet64 Function

Sets a bit in a number and returns the new value.

Syntax

BSet64

(

number

,

bitNum

)

Parameters

number bitNum

Specifies the value to set the bit with an expression or numeric value.

Specifies the bit (integer from 0 to 63) to be set by an expression or numeric value.

Return Values

Returns the bit set value of the specified numeric value (integer).

See Also

BClr, BClr64, BSet, BTst, BTst64

BSet64 Function Example

flags =

BSet64

(flags, 1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 121

BTst Function

BTst Function

Returns the status of 1 bit in a number.

Syntax

BTst

(

number

,

bitNum

)

Parameters

number bitNum

Specifies the number for the bit test with an expression or numeric value.

Specifies the bit (integer from 0 to 31) to be tested.

Return Values

Returns the bit test results (integer 1 or 0) of the specified numeric value.

See Also

BClr, BClr64, BSet, BSet64, BTst64

BTst Function Example

If

BTst

(flags, 1) Then

Print "Bit 1 is set"

EndIf

122 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

BTst64 Function

Returns the status of 1 bit in a number.

Syntax

BTst64

(

number

,

bitNum

)

Parameters

number bitNum

Specifies the number for the bit test with an expression or numeric value.

Specifies the bit (integer from 0 to 63) to be tested.

Return Values

Returns the bit test results (integer 1 or 0) of the specified numeric value.

See Also

BClr, BClr64, BSet, BSet64, BTst

BTst64 Function Example

If

BTst64

(flags, 1) Then

Print "Bit 1 is set"

EndIf

BTst64 Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 123

Byte Statement

Byte Statement

Declares variables of type Byte. (2 byte whole number).

Syntax

Byte

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]...]

Parameters

varName subscripts

Variable name which the user wants to declare as type Byte.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Byte is used to declare variables as type Byte. Variables of type Byte can contain whole numbers ranging in value from -128 to +127. Local variables should be declared at the top of a function.

Global and module variables must be declared outside of functions.

See Also

Boolean, Double, Global, Int32, Int64, Integer, Long, Real, Short, String, UByte, UInt32, UInt64,

UShort

Byte Statement Example

The following example declares a variable of type Byte and then assigns a value to it. A bitwise And is then done to see if the high bit of the value in the variable test_ok is On (1) or Off (0). The result is printed to the display screen. (Of course in this example the high bit of the variable test_ok will always be set since we assigned the variable the value of 15.)

Function Test

Byte

A(10) ' Single dimension array of byte

Byte

B(10, 10) '

Two dimension array of byte

Byte

C(5, 5, 5) ' Three dimension array of byte

Byte

test_ok

test_ok = 15

Print "Initial Value of test_ok = ", test_ok

test_ok = (test_ok And 8)

If test_ok <> 8 Then

Print "test_ok high bit is ON"

Else

Print "test_ok high bit is OFF"

EndIf

Fend

124 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Calib Statement

Calib Statement

Replaces the current arm posture pulse values with the current CalPls values.

Syntax

Calib

joint1

[

, joint2

][,

joint3

][,

joint4

][,

joint5

][,

joint6

][,

joint7

][,

joint8

][,

joint9

]

Parameters

joint

Integer number from 1 to 9 that specifies the joint number to calibrate. While normally only one joint may need calibration at a time, up to all nine joints may be calibrated with the Calib command at the same time.

Additional S axis is 8 and T axis is 9.

Description

Automatically calculates and specifies the offset (Hofs) value. This offset is necessary for matching the origin for each robot joint motor to the corresponding robot mechanical origin.

The Calib command should be used when the motor pulse value has changed. The most common occurrence for use is after changing a motor. Normally, the calibration position pulse values would match the CalPls pulse values. However, after maintenance operations such as changing the motors, these two sets of values will no longer match, and therefore calibration becomes necessary.

Calibration may be accomplished by moving the arm to a desired calibration position, and then executing the Calib command. By executing Calib, the calibration position pulse value is changed to the CalPls value,

(the correct pulse value for the calibration position)

In order to perform a proper calibration, Hofs values must be determined. To have Hofs values automatically calculated, move the arm to the desired calibration position, and execute Calib. The controller automatically calculates Hofs values based on the calibration pulse values and on the CalPls pulse values.

Note

Use caution when using the Calib command

Calib is intended to be used for maintenance purposes only. Execute Calib only when necessary.

Executing Calib causes the Hofs value to be replaced. Because unintended Hofs value changes can cause unpredictable robot motion, use caution in executing Calib only when necessary.

Potential Error

No Joint Number Specified Error

If the joint number is not specified with the Calib command, an error will occur.

See Also

CalPls, Hofs

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 125

Calib Statement

Calib Statement Example

Example from the command window.

> CalPls ' Display current CalPls values

65523, 43320, -1550, 21351

> Pulse ' Display current Pulse values

PULSE: 1: 65526 pls 2: 49358 pls 3: 1542 pls 4: 21299 pls

>

Calib

2 '

Execute calibration for joint 2 only

> Pulse ' Display (changed) Pulse values

PULSE: 1: 65526 pls 2: 43320 pls 3: 1542 pls 4: 21299 pls

>

126 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Call Statement

Call Statement

Calls a user function.

Syntax

Call

funcName

[(

argList

)]

Parameters

funcName argList

The name of a Function which is being called.

Optional. List of arguments that were specified in the Function declaration.

For the argument, use the following syntax:

[

ByRef

]

varName

[( )], or numerical expression

ByRef

Optional. Specify ByRef when you refer to the variable to be seen by the calling function. In this case, the argument change in a function can be reflected to the variable of the calling side. You can change the values received as a reference.

Description

The Call instruction causes the transfer of program control to a function (defined in Function...Fend). This means that the Call instruction causes program execution to leave the current function and transfer to the function specified by Call. Program execution then continues in that function until an Exit Function or

Fend instruction is reached. Control is then passed back to the original calling function at the next statement after the Call instruction.

You may omit the Call keyword and argument parentheses. For example, here is a call statement used with or without the Call keyword:

Call MyFunc(1, 2)

MyFunc 1, 2

You can call an external function in a dynamic link library (DLL). For details, refer to

Declare Statement

.

To execute a subroutine within a function, use GoSub...Return.

You can specify a variable as an argument. Specifying the ByRef parameter, you can reflect the change of argument in the function to the variable of the calling side.

When specifying the ByRef parameter, you need to specify ByRef as well for the argument list of the function definition (Function statement) and DLL function definition (Declare statement).

ByRef is necessary when giving an array variable as an argument.

See Also

Function, GoSub

Call Statement Example

<File1: MAIN.PRG>

Function main

Call

InitRobot

Fend

<File2: INIT.PRG>

Function InitRobot

If Motor = Off Then

Motor On

EndIf

Power High

Speed 50

Accel 75, 75

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 127

CalPls Statement

CalPls Statement

Specifies and displays the position and orientation pulse values for calibration.

Syntax

(1)

CalPls

j1Pulses, j2Pulses, j3Pulses, j4Pulses

[

, j5Pulses

,

j6Pulses

] [,

j7Pulses

] [,

j8Pulses

,

(2)

CalPls

j9Pulses

]

Parameters

j1Pulses

First joint pulse value. This is a long integer expression.

j2Pulses

Second joint pulse value. This is a long integer expression.

j3Pulses

Third joint pulse value. This is a long integer expression.

j4Pulses

Fourth joint pulse value. This is a long integer expression.

j5Pulses

Optional. Fifth joint pulse value. This is a long integer expression.

j6Pulses

Optional. Sixth joint pulse value. This is a long integer expression.

j7Pulses

Optional. Seventh joint pulse value. This is a long integer expression.

j8Pulses

Optional. Eighth joint pulse value. This is a long integer expression.

j9Pulses

Optional. Nineth joint pulse value. This is a long integer expression.

Return Values

When parameters are omitted, displays the current CalPls values.

Description

Specifies and maintains the correct position pulse value(s) for calibration.

CalPls is intended to be used for maintenance, such as after changing motors or when motor zero position needs to be matched to the corresponding arm mechanical zero position. This matching of motor zero position to corresponding arm mechanical zero position is called calibration.

Normally, the calibration position Pulse values match the CalPls pulse values. However, after performing maintenance operations such as changing motors, these two sets of values no longer match, and therefore calibration becomes necessary.

Calibration may be accomplished by moving the arm to a certain calibration position and then executing

Calib. By executing Calib, the calibration position pulse value is changed to the CalPls value (the correct pulse value for the calibration position.)

Hofs values must be determined to execute calibration. To have Hofs values automatically calculated, move the arm to the desired calibration position, and execute Calib. The controller automatically calculates

Hofs values based on calibration position pulse values and on the CalPls values.

Note

CalPls Values Cannot be Changed by cycling power

CalPls values are not initialized by turning main power to the controller off and then on again. The only method to modify the CalPls values is to execute the Calib command.

See Also

Calib, Hofs

128 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CalPls Statement

CalPls Statement Example

Monitor window operation

>

CalPls

' Display current CalPls values

65523, 43320, -1550, 21351

> Pulse

PULSE: 1: 65526 pls 2: 49358 pls 3: -1542 pls 4: 21299 pls

> Calib 4

> Pulse

PULSE: 1: 65526 pls 2: 49358 pls 3: -1542 pls 4: 21351 pls

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 129

CalPls Function

CalPls Function

Returns calibration pulse value specified by the CalPls Statement.

Syntax

CalPls

(

joint

)

Parameters

joint

Integer expression representing a robot joint number or 0 to return CalPls status.

The additional S axis is 8 and T axis is 9.

Return Values

Integer value containing number of calibration pulses. When

joint

is 0, returns 1 or 0 depending on if

CalPls has been executed.

See Also

CalPls

CalPls Function Example

This example uses the CalPls function in a program:

Function DisplayCalPlsValues

Integer i

Print "CalPls Values:"

For i = 1 To 4

Print "Joint ", i, " CalPls = ",

CalPls

(i)

Next i

Fend

130 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ChDir Statement

ChDir Statement

Changes and displays the current directory.

Syntax

(1)

ChDir

pathName

(2)

ChDir

Parameters

pathName

String expression representing the name of the new default path.

See

ChDisk

for the details.

Description

(1) Changes to the specified directory by specifying the parameter.

(2) When the parameter is omitted, the current directory is displayed. This is used to display the current directory when it is not known.

ChDir is available only with the PC disk.

When the power is ON, the root directory will be the current directory if no project is open, and if a project is open, the project directory will be the current directory.

If you change the drive with ChDrive, the root directory will be the current directory.

The parameter is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

ChDrive, ChDisk, CurDir$

ChDir Statement Example

The following examples are done from the command window.

>

ChDir

\ ' Change current directory to the root directory

>

ChDir

.. ' Change current directory to parent dir

>

Cd

\TEST\H55 '

Change current directory to \H55 in \TEST

>

Cd

' Display current directory

A:\TEST\H55\

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 131

ChDisk Statement

ChDisk Statement

Sets the object disk for file operations.

Syntax

ChDisk

PC

|

USB

|

RAM

Parameters

PC

USB

RAM

Folders (such as Hard disk) on the Windows Part

USB memory on the Real Part

Memory on the Real Part

Description

Specifies which disk to use for file operations. Default is PC disk.

The Robot Controller supports the following disks as the object of file operations.

PC

USB

Folders on the Windows Part

The initial setting is PC and normally you don’t have to change the setting from PC.

Accesses to the files on the project folders.

USB memory connected to the controller memory port

This is useful to exchange files when you don’t use the Windows Part

(RC+).

Temporary files on the memory RAM

These files are not saves when you turn off the controller.

This is useful to save the data temporary.

Some of the SPEL

+

commands change the object of the file operations according to the ChDisk setting.

Also, the ChDisk setting is available only with the PC disk for some commands.

ChDisk

ChDrive

ChDir don’t affect…

ChDisk don’t affect…

Executable when

ChDisk is PC

Curve

CVMove

LoadPoints

SavePoints

ImportPoints file name

Access, Excel file name of OpenDB

ImportPoints source path

VLoadModel

VSaveImage

VSaveModel

ChDir

FolderExists

MkDir

RenDir

RmDir

Object is always the project folders.

File name can be specified.

If path is specified, an error occurs.

Object is always the Windows folders.

If only file name is specified, it can be affected by the current drive and folder.

You can also specify a full path.

If you execute without setting ChDisk to PC, an error occurs.

If only file name and directory name are specified, it can be affected by the current drive and folder.

You can also specify a full path.

USB and RAM have no idea of directory.

132 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Copy

Del

FileDataTime

FileExist

FileLen

AOpen, BOpen, ROpen, UOpen,

WOpen

Rename

ChDisk Statement

Executable when

ChDisk is USB or

RAM

Special Declare

When ChDisk is PC:

If only file name and directory name are specified, it can be affected by the current drive and folder.

You can also specify a full path.

When ChDisk is USB or RAM:

Only file name can be specified and if a path is specified, an error occurs.

See

Declare

for the details.

Any specified file name can be accepted.

It cannot be affected by the current drive and folder

How to decide a full path when ChDisk is PC is as follows:

Only file name “abc.txt” Current drive + Current directory + Specified file name

“C:\EpsonRC70\Projects\ProjectName\abc.txt”

Full path without a drive “\abc.txt”

Full path with a drive “d:\abc.txt”

Current drive + Specified full path

“C:\abc.txt”

Specified full path

“d:\abc.txt”

Drive is a network folder “k:\abc.txt” Specified full path

“k:\abc.txt”

Network path “\\Epson\data\abc.txt” Specified full path

“\\Epson\data\abc.txt”

You can have one ChDisk setting per controller.

If you want to set more than one disk as a system, take an exceptional control to switch the ChDisk setting.

See Also

ChDir, ChDrive, CurDisk$

ChDisk Statement Example

Examples from the Command window.

>

ChDisk

PC

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 133

ChDrive Statement

ChDrive Statement

Changes the current disk drive for file operations.

Syntax

ChDrive

drive

Parameters

drive

String expression or literal containing a valid drive letter.

Description

ChDrive is available only with the PC disk.

When the power is turned on, the “C” drive will be the current drive if a project is closed. If a project is open, the drive of the opened project will be the current drive.

See ChDisk for the details.

The parameter is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

ChDir, ChDisk, CurDrive$

ChDrive Statement Example

The following examples are done from the command window.

>

ChDrive

d

134 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ChkCom Function

ChkCom Function

Returns number of characters in the reception buffer of a communication port.

Syntax

ChkCom

(

portNumber

As Integer )

Parameters

portNumber

Integer value that specifies the RS-232C port number

Real Part 1 to 8

Windows Part 1001 to 1008

Return Values

Number of characters received (integer).

If the port cannot receive characters, the following negative values are returned to report the current port status:

-2 Port is used by another task

-3 Port is not open

See Also

CloseCom, OpenCom, Read, Write

ChkCom Function Example

Integer numChars numChars =

ChkCom

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 135

ChkNet Function

ChkNet Function

Returns number of characters in the reception buffer of a network port.

Syntax

ChkNet

(

portNumber

As Integer )

Parameters

portNumber

TCP/IP port number (201 to 216)

Return Values

Number of characters received (integer).

If the port cannot receive characters, the following negative values are returned to report the current port status:

-1 Port is open but communication has not been established

-2 Port is used by another task

-3 Port is not open

See Also

CloseNet, OpenNet, Read, Write

ChkNet Function Example

Integer numChars numChars =

ChkNet

(201)

136 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Chr$ Function

Chr$ Function

Returns the character specified by a numeric ASCII value.

Syntax

Chr$

(number)

Parameters

number

An integer expression between 1 and 255.

Return Values

Returns a character that corresponds with the specified ASCII code specified by the value of

number

.

Description

Chr$ returns a character string (1 character) having the ASCII value of the parameter

number

. When the

number

specified is outside of the range from 1 to 255, an error will occur.

See Also

Asc, Instr, Left$, Len, Mid$, Right$, Space$, Str$, Val

Chr$ Function Example

The following example declares a variable of type String and then assigns the string "ABC" to it. The

Chr$ instruction is used to convert the numeric ASCII values into the characters "A", "B" and "C". The &H means the number following is represented in hexadecimal form. (&H41 means Hex 41)

Function Test

String temp$

temp$ =

Chr$

(&H41) +

Chr$

(&H42) +

Chr$

(&H43)

Print "The value of temp = ", temp$

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 137

ClearPoints Statement

ClearPoints Statement

Erases the robot position data memory.

Syntax

ClearPoints

Description

ClearPoints initializes the robot position data area. Use this instruction to erase point definitions which reside in memory before teaching new points.

See Also

Plist, LoadPoints, SavePoints

ClearPoints Statement Example

The example below shows simple examples of using the ClearPoints command (from the command window). Notice that no teach points are shown when initiating the Plist command once the ClearPoints command is given.

>P1=100,200,-20,0/R

>P2=0,300,0,20/L

>plist

P1=100,200,-20,0/R

P2=0,300,0,20/L

>

clearpoints

>plist

>

138 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Close Statement

Close Statement

Closes a file that has been opened with AOpen, BOpen, ROpen, UOpen, or WOpen.

Syntax

Close

#fileNumber

Parameters

fileNumber

Integer expression whose value is from 30 to 63.

Description

Closes the file referenced by file handle

fileNumber

and releases it.

See Also

AOpen, BOpen, Flush, FreeFile, Input #, Print #, ROpen, UOpen, WOpen

Close Statement Example

This example opens a file, writes some data to it, then later opens the same file and reads the data into an array variable.

Integer fileNumber, i, j f ileNumber = FreeFile

WOpen "TEST.DAT" As #fileNum

For i = 0 To 100

Print #fileNum, i

Next i

Close

#fileNum

FileNum = FreeFile

ROpen "TEST.DAT" As #fileNum

For i = 0 to 100

Input #fileNum, j

Print j

Next i

Close

#fileNum

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 139

CloseCom Statement

CloseCom Statement

Closes the RS-232C port that has been opened with OpenCom.

Syntax

CloseCom

#

portNumber

|

All

Parameters

portNumber

RS-232C port number to close.

Real Part 1 to 8

Windows Part 1001 to 1008

If All is specified, the task will close all the open RS-232C ports.

See Also

ChkCom, OpenCom

CloseCom Statement Example

CloseCom

#1

140 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CloseDB Statement

CloseDB Statement

Closes the database that has been opened with the OpenDB command and releases the file number.

Syntax

CloseDB

#fileNumber

Parameters

fileNumber

Database number specified with OpenDB from 501 to 508

Description

CloseDB closes the database and Excel book, and releases the database number.

Note

- Connection of PC with installed RC+ is required.

See Also

OpenDB, SelectDB, UpdateDB, DeleteDB, Input #, Print #

CloseDB Statement Example

Refer to OpenDB use example.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 141

CloseNet Statement

CloseNet Statement

Closes the TCP/IP port previously opened with OpenNet.

Syntax

CloseNet

#

portNumber

|

All

Parameters

portNumber

TCP/IP port number to close ( 201 to 216)

If All is specified, the task will close all the open TCP/IP ports.

See Also

ChkNet, OpenNet

CloseNet Statement Example

CloseNet

#201

142 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cls Statement

Cls Statement

Clears the EPSON RC+ Run, Operator, or Command window text area. Clears also the TP print panel.

Syntax

(1)

Cls

#

deviceID

(2)

Cls

Parameters

deviceID

21 RC+

24 TP (TP1 only)

20 TP3

When

deviceID

is omitted, the display device is cleared.

Description

Cls clears the current EPSON RC+ Run or Operator window text area, depending on where the program was started from.

If Cls is executed from a program that was started from the Command window, the command window text area is cleared.

When

deviceID

is omitted, the display of the current display device is cleared.

Cls Statement Example

If this example is run from the Run window or Operator window, the text area of the window will be cleared when Cls executes.

Function main

Integer i

Do

For i = 1 To 10

Print i

Next i

Wait 3

Cls

Loop

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 143

Cnv_AbortTrack Statement

Cnv_AbortTrack Statement

Aborts tracking motion to a conveyor queue point.

Syntax

Cnv_AbortTrack

[

stopZheight

]

Parameters

stopZheight

Optional. Real expression that specifies the Z position the robot should move to after aborting the track.

Description

When a motion command to a conveyor queue point is in progress, Cnv_AbortTrack can be executed to abort it.

If

stopZHeight

is specified, the robot will move up to this value only if the Z axis position at the time of abort is below

stopZHeight

and will then be decelerated to a stop.

If

stopZHeight

is omitted, the robot is decelerated to a stop without the depart motion in the Z direction.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_RobotConveyor Statement

Cnv_AbortTrack Statement Example

' Task to monitor robot whose part being tracked has gone downstream

Function WatchDownstream

Robot 1

Do

If g_TrackInCycle And Cnv_QueLen(1, CNV_QUELEN_DOWNSTREAM) > 0 Then

' Abort tracking for current robot and move robot Z axis to 0

g_AbortTrackInCycle = TRUE

Cnv_AbortTrack

0

g_AbortTrackInCycle = FALSE

EndIf

Wait .01

Loop

Fend

144 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Accel Statement

Cnv_Accel Statement

Sets acceleration and deceleration of the tracking motion in the Conveyor Tracking.

Syntax

Cnv_Accel

(

conveyorNumber

) ,

accel/decel

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16)

accel/decel

Acceleration and deceleration of tracking motion

Description

Sets acceleration and deceleration of the tracking motion in Conveyor Tracking.

Acceleration and deceleration cannot be set separately.

Change the parameters when acceleration setting error occurs, or when it is required to reduce work picking

]. time. The default value is 2000[mm/sec 2

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Accel Function

Cnv_Accel Statement Example

Cnv_Accel

1,2000

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 145

Cnv_Accel Function

Cnv_Accel Function

Returns acceleration and deceleration of tracking motion in Conveyor Tracking.

Syntax

Cnv_Accel

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16)

Return Values

Real value in millimeters.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Accel

Cnv_Accel Function Example

Print

Cnv_Accel

(1)

146 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Downstream Statement

Cnv_Downstream Statement

Sets the downstream limit of the specified conveyor.

Syntax

Cnv_Downstream

(

conveyorNumber

) ,

lowerLimit

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16)

lowerLimit

A border on the downstream side of the tracking area

Return Values

By using Cnv_Downstream, you can change the downstream limit which was set in the calibration wizard.

However, if skewed downstream limit is used, you cannot change the value by Cnv_Downstream.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Upstream

Cnv_Downstream Statement Example

Cnv_Downstream

1,500

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 147

Cnv_Downstream Function

Cnv_Downstream Function

Returns the downstream limit for the specified conveyor.

Syntax

Cnv_Downstream

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16)

Return Values

Real value in millimeters.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Upstream

Cnv_Downstream Function Example

Print "Downstream limit: ",

Cnv_Downstream

(1)

148 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Fine Statement

Cnv_Fine Statement

Sets the value of Cnv_Fine for one conveyor.

Syntax

Cnv_Fine

conveyorNumber

[,

fineValue

]

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16)

fineValue

Optional. Real expression that specifies the distance at which tracking is completed in millimeters. A value of 0 means that Cnv_Fine is not used.

If omitted, the current Cnv_Fine setting is displayed.

Description

After confirming the tracking operation is complete, specify the distance from the part that is acceptable for the next command. When specifying “0”, the Cnv_Fine setting will not be used and the next command will be accepted when the motion command is complete.

The default value of “0” mm is automatically set when the following conditions occur:

Conveyor is created.

Controller is started.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Fine Function

Cnv_Fine Statement Example

Cnv_Fine

1, 5

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 149

Cnv_Fine Function

Cnv_Fine Function

Returns the current Cnv_Fine setting.

Syntax

Cnv_Fine

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16).

Return Values

Real value of Cnv_Fine in millimeters.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Fine Statement

Cnv_Fine Function Example

Real f

f = Cnv_Fine

(1)

150 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Flag Function

Cnv_Flag Function

Returns the tracking state of the robot.

Syntax

Cnv_Flag

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16).

Return Values

0: Tracking is not canceled or aborted.

1: Tracking has been canceled.

The downstream limit position is improper. Set the downstream limit closer to the upstream than the current position.

2: Tracking has been aborted.

The downstream limit positon or the robot waiting position is improper. Set the downstream limit closer to the upstream than the current position or move the robot waiting position closer to the downstream limit.

3: Tracking has been aborted.

The downstream limit position or picking time is improper. Set the downstream limit closer to the upstream than the current position, or shorten the work picking time.

4: Tracking has been canceled.

The number of work pieces is exceeding the processing capacity of the robot.

The return values other than “0” are returned only when the tracking abort line is defined.

When the value other than “0” is displayed, it is recommended to take the above-described countermeasures for each return value.

For details on the tracking abort line, refer to the

User’s Guide

.

Note

This command will only work if the Conveyor Tracking option is active.

Cnv_Flag Function Example

Print

Cnv_Flag

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 151

Cnv_LPulse Function

Cnv_LPulse Function

Returns the pulse value latched by the conveyor trigger.

Syntax

Cnv_LPulse

(

conveyorNumber

)

Parameters

ConveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Description

Returns the latest conveyor pulses latched by the hardware trigger wires or Cnv_Trigger.

Return Values

Long value that contains the latched pulses of the specified conveyor.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Trigger, Cnv_Pulse

Cnv_LPulse Function Example

Print "Latched conveyor position: ",

Cnv_LPulse

(1)

152 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Mode Statement

Cnv_Mode Statement

Sets a tracking mode of Conveyor Tracking.

Syntax

Cnv_Mode

(c

onveyorNumber

,

modeNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

modeNumber

0: Picking quantity-priority mode

1: Picking accuracy-priority mode

2: Variable speed conveyor mode

Description

Sets a tracking mode of Conveyor Tracking.

Cnv_Mode is only available for linear conveyors.

Sets the tracking mode before starting the tracking motion. If the parameters are not set or the conveyor speed is 350 mm/sec or faster, the picking quantity priority mode will be set.

Picking quantity-priority mode: Although this mode is inferior in picking accuracy to the picking

Accuracy-priority mode, it takes less time to catch up with the moving work pieces. Therefore, this mode is suitable for the conveyor systems in which space between the work pieces is narrow or the fast-speed conveyor systems.

Picking accuracy-priority mode: Although this mode takes longer time to catch up with the work pieces compared to the picking quantity-priority mode, this improves the picking accuracy. Therefore, this mode is suitable for the conveyor systems for small work pieces.

Variable speed conveyor mode: This mode can be used for conveyors which repeats stops and moves randomly. It also can be used for conveyors move at constant speed.

However, this mode is inferior in picking quantity to the Picking-quantity mode and inferior in accuracy to the Picking accuracy-priority mode .

The modes “0” and “1” are only supported by the circular conveyors. When “2” is specified, the manipulator moves as same as the mode “0”.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Mode Function

Cnv_Mode Statement Example

Cnv_Mode

1, 1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 153

Cnv_Mode Function

Cnv_Mode Function

Returns a tracking mode of Conveyor Tracking.

Syntax

Cnv_Mode

(c

onveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

Returns a real value from 0 to 2.

0: Picking quantity-priority mode

1: Picking accuracy-priority mode

2: Variable speed conveyor mode

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Mode Statement

Cnv_Mode Function Example

Print

Cnv_Mode

(1)

154 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Name$ Function

Cnv_Name$ Function

Returns the name of the specified conveyor.

Syntax

Cnv_Name$

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

A string containing the conveyor name.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Number

Cnv_Name$ Function Example

Print "Conveyor 1 Name: ",

Cnv_Name$

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 155

Cnv_Number Function

Cnv_Number Function

Returns the number of a conveyor specified by name.

Syntax

Cnv_Number

(

conveyorName

)

Parameters

conveyorName

String expression representing the conveyor name.

Return Values

Integer conveyor number.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Name$

Cnv_Number Function Example

Integer cnvNum cnvNum =

Cnv_Number

("Main Conveyor")

156 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_OffsetAngle Statement

Cnv_OffsetAngle Statement

Sets the offset value for the conveyor queue data.

Syntax

Cnv_OffsetAngle

conveyorNumber

[,

offsetAngle

]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

offsetAngle

Real value representing the offset value for the conveyor queue data (unit: degree).

Optional. If omitted, the current offset is displayed.

Description

Sets the offset value for the conveyor queue data.

Cnv_OffsetAngle is available for the circular conveyor.

Conveyor Tracking may have tracking delay according to the conveyor speed. If the tracking delay is occurred, the robot handles the parts in the wrong position moved by the tracking delay.

Cnv_OffsetAngle gives the offset value to the queue in order to move the robot back to the correct position.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_OffsetAngle Function

Cnv_OffsetAngle Statement Example

Cnv_OffsetAngle

1, 5

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 157

Cnv_OffsetAngle Function

Cnv_OffsetAngle Function

Returns the offset value of the conveyor queue data.

Syntax

Cnv_OffsetAngle

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

Integer value (unit: degree).

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_OffsetAngle Statement

Cnv_OffsetAngle Function Example

Real offsetAngle offsetAngle =

Cnv_OffsetAngle

(1)

158 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Point Function

Cnv_Point Function

Returns a robot point in the specified conveyor's coordinate system derived from sensor coordinates.

Syntax

Cnv_Point

(

conveyorNumber, sensorX

,

sensorY [, sensorU]

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

sensorX sensorY sensorU

Real expression for the sensor X coordinate.

Real expression for the sensor Y coordinate.

Optional. Real expression for the sensor U coordinate.

Return Values

Robot point in conveyor coordinate system.

Description

The Cnv_Point function must be used to create points that can be added to a conveyor queue. For vision conveyors,

sensorX

and

sensorY

are the vision coordinates from the camera. For sensor conveyors,

sensorX

and

sensorY

can be 0, since this is the origin of the conveyor's coordinate system.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Speed

Cnv_Point Function Example

Boolean found

Integer i, numFound

Real x, y, u

Cnv_Trigger 1

VRun FindParts

VGet FindParts.Part.NumberFound, numFound

For i = 1 To numFound

VGet FindParts.Part.CameraXYU(i), found, x, y, u

Cnv_QueAdd 1,

Cnv_Point

(1, x, y)

Next i

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 159

Cnv_PosErr Function

Cnv_PosErr Function

Returns deviation in current tracking position compared to tracking target.

Syntax

Cnv_PosErr

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

Real value in millimeters.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_MakePoint

Cnv_PosErr Function Example

Print "Conveyor 1 position error: ",

Cnv_PosErr

(1)

160 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Pulse Function

Returns the current position of a conveyor in pulses.

Syntax

Cnv_Pulse

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

Long value of current pulses for specified conveyor.

Note

This command will only work if the Conveyor Tracking option is active.

Cnv_Pulse Function

See Also

Cnv_Trigger, Cnv_LPulse

Cnv_Pulse Function Example

Print "Current conveyor position: ",

Cnv_Pulse

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 161

Cnv_QueAdd Statement

Cnv_QueAdd Statement

Adds a robot point to a conveyor queue.

Syntax

Cnv_QueAdd

conveyorNumber

,

pointData

[,

userData

]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

pointData

The robot point to add to the conveyor queue.

userData

Optional. Real expression used to store user data along with the point.

Description

pointData

is added to the end of the specified conveyor's queue. It is registered together with the currently latched conveyor pulse position.

If the distance between

pointData

and the previous point in the queue is at or below that specified by

Cnv_QueReject, the point data will not be added to the queue, and no error will occur.

The maximum queue data value is 1000.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_RobotConveyor

Cnv_QueAdd Statement Example

Boolean found

Integer i, numFound

Real x, y, u

Cnv_Trigger 1

VRun FindParts

VGet FindParts.Part.NumberFound, numFound

For i = 1 To numFound

VGet FindParts.Part.CameraXYU(i), found, x, y, u

Cnv_QueAdd

1, Cnv_Point(1, x, y)

Next i

162 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_QueGet Function

Cnv_QueGet Function

Returns a point from the specified conveyor's queue.

Syntax

Cnv_QueGet

(

conveyorNumber

[,

index

] )

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

index

Optional. Integer expression representing the index of the queue data to retrieve.

Return Values

A robot point in the specified conveyor's coordinate system.

Description

Use Cnv_QueGet to retrieve points from the conveyor queue. When

queNumber

is omitted, the first point in the queue is returned. Otherwise, the point from the specified queNumber is returned.

Cnv_QueGet does not delete the point from the queue. Instead, you must use Cnv_QueRemove to delete it.

To track a part as the conveyor moves, you must use Cnv_QueGet in a motion command statement.

For example:

Jump Cnv_QueGet(1) '

this tracks the part

You cannot assign the result from Cnv_QueGet to a point and then track it by moving to the point.

P1 = Cnv_QueGet(1)

Jump P1 ' this does not track the part

When you assign the result from Cnv_QueGet to a point, the coordinate values correspond to the position of the part when the point assignment was executed.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueLen, Cnv_QueRemove

Cnv_QueGet Function Example

' Jump to the first part in the queue and track it

Jump

Cnv_QueGet

(1)

On gripper

Wait .1

Jump place

Off gripper

Wait .1

Cnv_QueRemove 1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 163

Cnv_QueLen Function

Cnv_QueLen Function

Returns the number of items in the specified conveyor's queue.

Syntax

Cnv_QueLen

(

conveyorNumber

[,

paramNumber

] )

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

paramNumber

Optional. Integer expression that specifies which data to return the length for.

Symbolic constant Value Meaning

CNV_QUELEN_ALL

CNV_QUELEN_UPSTREAM

0 Returns total number of items in queue.

1 Returns number of items upstream.

CNV_QUELEN_PICKUPAREA 2 Returns number of items in pickup area.

CNV_QUELEN_DOWNSTREAM 3 Return number of items downstream.

Return Values

Integer number of items.

Description

Cnv_QueLen is used to find out how many items are available in the queue. Typically, who will want to know how many items are in the pickup area.

You can also use Cnv_QueLen as an argument to the Wait statement.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueGet

Cnv_QueLen Function Example

Do

Do While

Cnv_QueLen

(1, CNV_QUELEN_DOWNSTREAM) > 0

Cnv_QueRemove 1, 0

Loop

If

Cnv_QueLen

(1, CNV_QUELEN_PICKUPAREA) > 0 Then

Jump Cnv_QueGet(1, 0) C0

On gripper

Wait .1

Cnv_QueRemove 1, 0

Jump place

Off gripper

Jump idlePos

EndIf

Loop

164 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_QueList Statement

Cnv_QueList Statement

Displays a list of items in the specified conveyor's queue.

Syntax

Cnv_QueList

conveyorNumber

[

, numOfItems

]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

numOfItems

Optional. Integer expression to specify how many items to display. If omitted, all items are displayed.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueGet

Cnv_QueList Statement Example

Cnv_QueList

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 165

Cnv_QueMove Statement

Cnv_QueMove Statement

Moves data from upstream conveyor queue to downstream conveyor queue.

Syntax

Cnv_QueMove

conveyorNumber

[

, index

] [,

userData

]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

index

Optional. Integer expression that specifies the index of the queue to move.

(The first item in the queue is index #0.)

userData

Optional. Real expression used to store user data along with the item.

Description

Cnv_QueMove is used to move one or more items from a conveyor queue to its associated downstream conveyor queue. If

index

is specified, the first item (

index #0)

of the queue is moved.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueGet

Cnv_QueMove Statement Example

Cnv_QueMove

1

166 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_QueReject Statement

Cnv_QueReject Statement

Sets and displays the queue reject distance for a conveyor.

Syntax

Cnv_QueReject

conveyorNumber

[,

rejectDistance

]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

rejectDistance

Optional. Real expression specifying the minimum distance between parts allowed in the queue in millimeters. If a negative value is specified, 0 mm will be set. If omitted, the current

rejectDistance

is displayed.

Description

Use Cnv_QueReject to specify the minimum distance between parts to prevent double registration in the queue. As parts are scanned by the vision system, they will be found more than once, but they should only be registered once. Cnv_QueReject helps the system filter out double registration.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueReject Function

Cnv_QueReject Statement Example

Cnv_QueReject

1, 20

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 167

Cnv_QueReject Function

Cnv_QueReject Function

Returns the current part reject distance for a conveyor.

Syntax

Cnv_QueReject

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

Real value in millimeters.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueReject Statement

Cnv_QueReject Function Example

Real rejectDist

RejectDist =

Cnv_QueReject

(1)

168 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_QueRemove Statement

Cnv_QueRemove Statement

Removes items from a conveyor queue.

Syntax

Cnv_QueRemove

conveyorNumber

[,

index

| All ]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

index

Optional. Integer expression specifying the index of the first item to remove or specify All to remove all.

Description

Use Cnv_QueRemove to remove one or more items from a conveyor queue. Typically, you remove items from the queue after you are finished with the data.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueAdd

Cnv_QueRemove Statement Example

Jump Cnv_QueGet(1)

On gripper

Wait .1

Jump place

Off gripper

Wait .1

' Remove the data from the conveyor

Cnv_QueRemove

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 169

Cnv_QueUserData Statement

Cnv_QueUserData Statement

Sets and displays user data associated with a queue entry.

Syntax

Cnv_QueUserData

conveyorNumber

[

, index

] [

, userData

]

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

index userData

Optional. Integer expression specifying the index of the item number in the queue.

Optional. Real expression specifying user data.

Description

Cnv_QueUserData is used to store your own data with each item in a conveyor queue. User data is optional. It is not necessary for normal operation.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueUserData Function

Cnv_QueUserData Statement Example

Cnv_QueUserData

1, 1, angle

170 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_QueUserData Function

Cnv_QueUserData Function

Returns the user data value associated with an item in a conveyor queue.

Syntax

Cnv_QueUserData

(

conveyorNumber

[,

index

])

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

index

Optional. Integer expression specifying the index of the item number in the queue.

Return Values

Real value.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueUserData Statement

Cnv_QueUserData Function Example

'

Add to queue

Cnv_QueAdd 1, Cnv_Point(1, x, y), angle

'

Remove from queue angle =

Cnv_QueUserData

(1) ' default to queue index of 0

Jump Cnv_QueGet(1) :U(angle)

Cnv_QueRemove 1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 171

Cnv_RobotConveyor Function

Cnv_RobotConveyor Function

Returns the conveyor being tracked by a robot.

Syntax

Cnv_RobotConveyor

[ (

robotNumber

) ]

Parameters

robotNumber

Integer expression representing the robot number.

Return Values

Integer conveyor number. 0 = no conveyor being tracked.

Description

When using multiple robots, you can use Cnv_RobotConveyor to see which conveyor a robot is currently tracking.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_MakePoint Statement

Cnv_RobotConveyor Function Example

Integer cnvNum cnvNum =

Cnv_RobotConveyor

(1)

172 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Speed Function

Cnv_Speed Function

Returns the current speed of a conveyor.

Syntax

Cnv_Speed

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

For straight conveyors, a real value in millimeters per second. For circular conveyors, a real value in degrees per sec.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Pulse

Cnv_Speed Statement Example

Print "Conveyor speed: ",

Cnv_Speed

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 173

Cnv_Trigger Statement

Cnv_Trigger Statement

Latches current conveyor position for the next Cnv_QueAdd statement.

Syntax

Cnv_Trigger

conveyorNumber

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Description

Cnv_Trigger is a software trigger command that must be used if there is no hardware trigger wired to the

PG board for the conveyor encoder.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_QueAdd

Cnv_Trigger Statement Example

Boolean found

Integer i, numFound

Real x, y, u

Cnv_Trigger

1

VRun FindParts

VGet FindParts.Part.NumberFound, numFound

For i = 1 To numFound

VGet FindParts.Part.CameraXYU(i), found, x, y, u

Cnv_QueAdd 1, Cnv_Point(1, x, y)

Next i

174 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Cnv_Upstream Statement

Cnv_Upstream Statement

Sets the upperstream limit of the specified conveyor.

Syntax

Cnv_Upstream

(

conveyorNumber

),

upperLimit

Parameters

conveyorNumber

Integer expression representing the conveyor number (1 to 16)

upperLimit

A border on the upperstream side of the tracking area

Return Values

By using Cnv_Upperstream, you can change the upperstream limit which was set in the calibration wizard.

However, if skewed upperstream limit is used, you cannot change the value by Cnv_Upperstream.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Downstream

Cnv_Upstream Statement Example

Cnv_Upstream

1,200

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 175

Cnv_Upstream Function

Cnv_Upstream Function

Returns the upstream limit for the specified conveyor.

Syntax

Cnv_Upstream

(

conveyorNumber

)

Parameters

conveyorNumber

Integer expression that specifies the conveyor number (1 to 16)

Return Values

Real value in millimeters.

Note

This command will only work if the Conveyor Tracking option is active.

See Also

Cnv_Downstream

Cnv_Upstream Function Example

Print "Upstream limit: ",

Cnv_Upstream

(1)

176 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CollisionDetect Statement

CollisionDetect Statement

Enables or disables the collision detection (detetction of robot motion error) of the current robot.

Syntax

(1) CollisionDetect

status

(2) CollisionDetect

status

,

jointNumber

(3) CollisionDetect

Parameters

status

On: Enables the collision detection (detetction of robot motion error).

Off: Disables the collision detection (detetction of robot motion error).

jointNumber

SCARA robots (including RS series): Specify the joint by a joint number from 1 to 4

Vertical 6-axis robots (including N series): Specify the joint by a joint number from 1 to 6

Result

Returns the current CollisionDetect status when the parameters are omitted.

Description

Detect the robot motion error from differentiation between desired speed and the actual speed (speed deviation value). Errors can be detected by this function is classified into A and B.

A: Collision or contact of robot arm or hand occurs

B: Robot motion errors other than collision or contact

Also, error B is classified into below according to the power condition.

Error in high power

Torque saturation due to littile setting of Weight or Inertia.

Torque saturation due to combined motion of multiple joints and throwing around the long object.

Torque saturation due to supply voltage reduction.

Error motion due to hardware error or software malfunction.

Error in low power

Error motion due to hardware error or software malfunction.

Torque saturation in low power due to holding a hand or long object that exceeds the weight described in the specifications.

The collision detection is available for the general-purpose robots supported by the EPSON RC+ 7.0

Ver.7.2 or later (vertical 6-axis and SCARA robots). If this command is used while unsupported robot (X5 series, etc.) is connected, an error occurs.

Execution of this command takes a little time. If cycle time is prioritized, minimize the use of this command in the program.

This function can be enabled or disabled for each joint or all joints. The default is “all joints on”.

(The default is off if the firmware version is before Ver 7.2.0.x.)

The setting returns to the default when the Controller is turned off. In other cases, the setting does not change unless otherwise configured by this command explicitly.

Output the following messages and stop the robot when the collisition is detected.

Error 5057 “Collision was detected in High power mode” (detetction of robot motion error).

Error 5058 “Collision was detected in Low power mode” (detetction of robot motion error).

For reducing damage in High power mode, using the command together with the upper limit torque restriction by LimitTorque is also effective. For reducing damage in Low power mode, using the command together with the upper limit torque restriction by LimitTorqueLP is also effective.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 177

CollisionDetect Statement

Also refer to EPSON RC+ 7.0 User’s Guide “

6.18.10 Collision Detection Function (detetction of robot motion error)

”.

See Also

LimitTorque, LimitTorque Function, LimitTorqueLP, LimitTorqueLP Function

CollisionDetectStatement Example

CollisionDetect

On '

Turns On the collision detection for all joints

CollisionDetect

Off, 5 ' Turns On the collision detection for only Joint #5

CollisionDetect

' The result will be displayed as “on, on, on, on, off, on”.

178 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CollisionDetect Function

CollisionDetect Function

Returns the setting value of CollisionDetect command.

Syntax

CollisionDetect(

jointNumber

)

Parameters

jointNumber

Specify the joint by a joint number from 1 to 6.

Return Values

Returns the setting value of CollsionDetect command by an integer.

1 = ON

0 = OFF

See Also

CollisionDetect

CollisionDetect Function Example

Print

CollisionDetect

(1) ' Displays CollisionDetect value of the Joint #1.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 179

Cont Statement

Cont Statement

Resumes the controller after a Pause statement has been executed and continues the execution of all tasks.

This command is for the experienced user and you need to understand the command specification before the use.

Syntax

Cont

Description

To execute the Cont statement from a program, you need to set the [Enable advanced task commands] checkbox in Setup | System Configuration | Controller | Preferences page of the EPSON RC+. However, even if this preference is enabled, you cannot execute the Cont statement from a task executed by Trap

SGClose.

The Cont command resumes the controller tasks paused by the Pause statement or safeguard open and continues all tasks execution. It has the same function as the <Continue> button on the Run Window,

Operator Window, and the Continue Remote input.

If you execute the Cont command during WaitRecover status (waiting for the recover after safeguard open), it will turn on all the robot motors and execute the recover motion. Then, the program will be resumed.

If you just want to turn on motors and execute recover motion, use the Recover command.

CAUTION

■ When executing Cont command from a program, you must understand the command specification and confirm that the system has the proper conditions for the Cont command. Improper use such as continuous execution of a command within a loop may deteriorate the system safety.

See Also

Pause, Recover

Cont Statement Example

Function main

Xqt 2, monitor, NoPause

Do

Jump P1

Jump P2

Loop

Fend

Function monitor

Do

If Sw(pswitch) = On then

Pause

Wait Sw(pswitch) = Off and Sw(cswitch) = On

Cont

EndIf

Loop

Fend

180 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Copy Statement

Copy Statement

Copies a file to another location.

Syntax

Copy

source

,

destination

Parameters

source destination

Pathname and filename of the source location of the file to copy.

See ChDisk for the details.

Pathname and filename of the destination to copy the specified source file to.

See ChDisk for the details.

Description

Copies the specified

source

filename to the specified

destination

filename.

The same pathname and filename may not be specified for both source and destination files.

An error occurs if the destination already exists.

Note

A network path is available.

Wildcard characters (*, ?) are not allowed in specified filenames.

When used in the Command window, quotes and comma may be omitted.

See Also

ChDir, MkDir

Copy Command Example

The following example is done from the Command window.

>

copy

TEST.DAT TEST2.DAT

>

Copy

TEST.DAT c

: '

NG

!! Error: 7203 Access is denied.

>

Copy

>

TEST.DAT c

:\ ' OK

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 181

Cos Function

Cos Function

Returns the cosine of a numeric expression.

Syntax

Cos (

number

)

Parameters

number

Numeric expression in Radians.

Return Values

Numeric value in radians representing the cosine of the numeric expression

number

.

Description

Cos returns the cosine of the numeric expression. The numeric expression (

number)

must be in radian units.

The value returned by the Cos function will range from -1 to 1

To convert from degrees to radians, use the DegToRad function.

See Also

Abs, Atan, Atan2, Int, Mod, Not, Sgn, Sin, Sqr, Str$, Tan, Val

Cos Function Example

The following example shows a simple program which uses Cos.

Function costest

Real x

Print "Please enter a value in radians"

Input x

Print "COS of ", x, " is ",

Cos

(x)

Fend

The following examples use Cos from the Command window.

Display the cosine of 0.55:

>print

cos

(0.55)

0.852524522059506

>

Display cosine of 30 degrees:

>print

cos

(DegToRad(30))

0.866025403784439

>

182 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CP Statement

CP Statement

Sets CP (Continuous Path) motion mode.

Syntax

CP

{

On | Off

}

Parameters

On | Off

The keyword On is used to enable path motion. The keyword Off is used to disable CP mode.

Description

CP (Continuous Path) motion mode can be used for the Arc, Arc3, Go, Jump, Jump3, Jump3CP, JumpTLZ, and Move robot motion instructions.

When CP mode is On, each motion command executes the next statement as deceleration starts.

Continuous path motion will continue regardless of whether the CP parameter is specified in each motion command or not.

When CP is Off, this function is active only when the CP parameter is specified in each motion command.

Normal Motion

0

Path Motion

Start deceleration time

0

Start acceleration time

When CP is On, path motion will continue without full deceleration between two CP motions (Arc, Arc3,

Jump3, Jump3CP, JumpTLZ, and Move), or two PTP motions (Go, Jump).

In contrast, full deceleration will occur between a CP motion and a PTP motion.

CP will be set to Off in the following cases

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

See Also

CP Function, Arc, Arc3, Go, Jump, Jump3, Jump3CP, JumpTLZ, Move

CP Statement Example

CP

On

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 183

CP Function

CP Function

Returns status of path motion.

Syntax

CP

Return Values

0 = Path motion off, 1 = Path motion on.

See Also

CP Statement

CP Function Example

If

CP

= Off Then

Print "CP is off"

EndIf

184 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CP_Offset Statement

CP_Offset Statement

Sets the offset time to start the subsequent motion command when executing CP On.

Syntax

(1) CP_Offset [ On [, OffsetTime ] ]

(2) CP_Offset Off

Parameters

On | Off On: Enables the motion command start offset function in CP On. If omitted, current setting will be displayed.

Off: Disables the motion command start offset function in CP On.

OffsetTime Specify the offset time to start the subsequent command in CP On by a real value from 10 to

24 (unit: ms). If omitted, the default value (10 ms) will be set.

Description

CP_Offset is available for following commands.

Move, Arc, Arc3, CVMove

If the CP parameter is added to CP On or motion commands, the subsequent command will be executed at the same time as the prior motion starts decelerating.

As a result, the motions become a path motion as shown below, where deceleration of the first command and acceleration of the subsequent command overlap.

At this moment, the start of deceleration for the first command and the start of acceleration for the subsequent command are not strictly simultaneous due to the processing overhead time for starting the statement. Therefore, the speed declines at the switching point in the path motion, and the motion will not be constant velocity.

CP_Offset solves this problem by accelerating the starting time of the subsequent motion command.

Path motion

Deceleration start

0

Acceleration start

Time

By setting CP_Offset on, the processing start of the subsequent motion command will be accelerated by the time specified for the OffsetTime parameter, and deceleration start of the actual robot and acceleration start of the subsequent command will be synchronized. As a result, the constant velocity can be improved.

The OffsetTime parameter is set by default. Adjust the parameter according to your application.

Especially when the subsequent motion command has “!Parallel Processing!”, the overhead time required for the motion start gets longer. Therefore, set the OffsetTime parameter higher than the default value, approximately 16 ms.

To set the OffsetTime parameter for CP_Offset, measure the speed of the tool center point for the target motion by using TCPSpeed. Setting an appropriate value for the OffsetTime parameter improved the motion at the switching point to be close to constant.

TCPSpeed increases when OffsetTime is too large, and TCPSpeed decreases when OffsetTime is too small.

Adjustment of CP_Offset must be done in actual system. Appropriate adjustment cannot be done in the simulator because the processing time to start the command differs from the actual controller.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 185

CP_Offset Statement

Sample program for measurement using TCPSpeed

Function main

Motor On

Power High

SpeedS 250; AccelS 1500

Speed 50; Accel 50, 50

Go XY(300, 500, 500, 90, 0, 180)

CP_Offset On

Xqt printTcPSpeed

Move XY(0, 500, 500, 90, 0, 180) CP

Move XY(-300, 500, 500, 90, 0, 180)

Quit printTcPSpeed

CP_Offset Off

Fend

Function printTcPSpeed

Do

Loop

Fend

Print TCPSpeed

Example of OffsetTime adjustment

300

250

200

150

100

50

0

Appropriate OffsetTime

OffsetTime=0

Too large OffsetTime

This command is not intended for PTP motion. In PTP motion, the motion will be an usual path motion.

CP_Offset is off when any of the following conditions occur:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or Quit All stops tasks

186 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

See Also

CP_Offset Function, CP, Move, Arc, Arc3, CVMove

CP_Offset Statement Example

CP_Offset

On

Move P1

Move P2

CP_Offset

Off

CP_Offset Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 187

CP_Offset Function

CP_Offset Function

Returns the offset time to start the subsequent motion command when executing CP On.

Syntax

CP_Offset

Return Values

Real number representing the offset time to start the motion command.

See Also

CP_Offset Statement

CP_Offset Function Example

If

CP_Offset

= O Then

Print "CP_Offset is off"

EndIf

188 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Ctr Function

Ctr Function

Returns the counter value of the specified Hardware Input counter.

Syntax

Ctr

(

bitNumber

)

Parameters

bitNumber

Number of the Hardware Input bit set as a counter. Only 16 counters can be active at the same time.

Return Values

The current count of the specified Hardware Input Counter. (Integer expression from 0-65535)

Description

Ctr works with the CTReset statement to allow Hardware inputs to be used as counters.

Each time a hardware input specified as a counter is switched from the Off to On state that input causes the counter to increment by 1.

The Ctr function can be used at any time to get the current counter value for any counter input. Any of the

Hardware Inputs can be used as counters. However, only 16 counters can be active at the same time.

Counter Pulse Input Timing Chart

High

(ON)

4 msec or longer

Low

(OFF)

4 msec or longer

See Also

CTReset

Ctr Function Example

The following example shows a sample of code which could be used to get a hardware input counter value.

CTReset 3 ' Reset counter for input 3 to 0

On 0 ' Turn an output switch on

Wait

Ctr

(3) >= 5

Off 0 ' When 5 input cycles are counted for Input 3 turn switch off (output 0 off)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 189

CTReset Statement

CTReset Statement

Resets the counter value of the specified input counter and enables the input to be a counter input.

Syntax

CTReset

(

bitNumber

)

Parameters

bitNumber

Number of the input bit set as a counter. This must be an integer expression representing a valid input bit. Only 16 counters can be active at the same time.

Description

CTReset works with the CTR function to allow inputs to be used as counters. CTReset sets the specified input bit as a counter and then starts the counter. If the specified input is already used as a counter, it is reset and started again.

Notes

Turning Off Power and Its Effect on Counters

Turning off main power releases all counters.

Using the Ctr Function

Use the Ctr Function to retrieve current Hardware Input counter values.

See Also

Ctr

CTReset Statement Example

The following example shows a sample of code which could be used to get a hardware input counter value.

CTReset

3 ' Reset Counter 3 to 0

On 0 ' Turn an output switch on

Wait

Ctr

(3) >= 5

Off 0 ' When 5 input cycles are counted for Input 3 turn switch off (output 0 off)

190 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CtrlDev Function

Returns the current control device number.

Syntax

CtrlDev

Return Values

21

22

26

29

20

PC

Remote I/O

Remote Ethernet

Remote RS232C

TP3

See Also

CtrlInfo Function

CtrlDev Function Example

Print "The current control device is: ",

CtrlDev

CtrlDev Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 191

CtrlInfo Function

CtrlInfo Function

Returns controller information.

Syntax

CtrlInfo (

index

)

Parameters

index

Integer expression that represents the index of the information to retrieve.

Description

The following table shows the information that is available from the CtrlInfo function:

Index

0

1

2

3

4

5

6

7

8

9

Bit

N/A

Controller status

0

13

14

15-31

0

1-31

0

1

2

3-31

1

2

3-7

8

9

10

11

12

N/A

N/A

N/A

N/A

N/A

N/A

Value

&H1 Ready state

&H2 Start state

&H4

Description

Obtained for compatibility.

Use index 9 to get the firmware version of the controller.

&H100 Estop state

&H200 Safeguard open

&H400 Error state

&H800 Critical error state

&H1000 Warning

&H2000 WaitRecover state (Waiting for recover from safeguard open)

&H4000 Recover state (Recovering from the safeguard open)

&H1 Enable switch is on

&H1 Teach mode circuit problem detected

&H2 Safeguard circuit problem detected

&H4 Estop circuit problem detected

Pause state

Undefined

Undefined

Undefined

Undefined

0 – Normal mode

1 – Dry run mode

Control device:

21 – RC+

22 – Remote

26 – Remote Ethernet

29 – Remote RS232C

20 – TP3

Number of defined robots

Operation mode:

0 – Program mode

1 – Auto mode

Undefined

Firmware version of the Controller

Major No.*1000000 + Minor No.*10000 + Rev No.*100 + Build No.

(Example) Version 1.6.2.4 is 1060204

192 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

10

15

Bit

N/A

N/A

Value

CtrlInfo Function

Index Description

SMART status of hard disk

0 : SMART status is normal

1 : SMART status is not normal

If SMART status is not normal, the hard disk can be broken. You need to back up the data promptly and replace the hard disk with new one.

When using the RAID option, you cannot use the SMART status, it always returns that it is normal.

Input DC Voltage

The program returns the value 100 times greater than the input value.

For example, when the input value is 48.01V, it returns 4801.

Note that an error occurs if Controller does not support DC power supply.

Return Values

Long value of the desired data

See Also

RobotInfo, TaskInfo

CtrlInfo Function Example

Print "The controller version: ",

CtrlInfo

(6)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 193

CurDir$ Function

CurDir$ Function

Returns a string representing the current directory.

Syntax

CurDir$

Return Values

A string that includes the current drive and path.

See Also

ChDir, CurDrive$ , CurDisk$

CurDir$ Function Example

Print "The current directory is: ",

CurDir$

194 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CurDisk$ Function

Returns a string representing the current disk.

Syntax

CurDisk$

Return Values

A string that contains the current disk letter.

See Also

ChDisk, CurDir$, CurDrive$

CurDisk$ Function Example

Print "The current disk is: ",

CurDisk$

CurDisk$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 195

CurDrive$ Function

CurDrive$ Function

Returns a string representing the current drive.

Syntax

CurDrive$

Return Values

A string that contains the current drive letter.

See Also

ChDrive, CurDir$, CurDisk$

CurDrive$ Function Example

Print "The current drive is: ",

CurDrive$

196 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CurPos Function

Returns the current target position of the specified robot.

Syntax

CurPos

Return Values

A robot point representing the current target position of the specified robot.

See Also

InPos, FindPos, RealPos

CurPos Function Example

Function main

Xqt showPosition

Do

Jump P0

Jump P1

Loop

Fend

Function showPosition

Do

P99 =

CurPos

Print CX(P99), CY(P99)

Loop

Fend

CurPos Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 197

Curve Statement

Curve Statement

Defines the data and points required to move the arm along a curved path. Many data points can be defined in the path to improve precision of the path.

Syntax

Curve

fileName, closure, mode, numAxes, pointList

Parameters

fileName

A string expression for the name of the file in which the point data is stored. The specified fileName will have the extension .CVT appended to the end so no extension is to be specified by the user. When the Curve instruction is executed, file will be created.

closure

You cannot specify a file path and fileName doesn’t have any effect from ChDisk.

See ChDisk for the details.

Specifies whether or not the defined Curve is Closed or left Open at the end of the curved motion. This parameter must be set to one of two possible values, as shown below.

C - Closed Curve

O - Open Curve

mode

When specifying the open curve, the Curve instruction creates the data to stop the arm at the last point of the specified point series. When specifying the closed curve, the Curve instruction creates the data required to continue motion through the final specified point and then stopping motion after returning the arm to the starting point of the specified point series for the Curve instruction.

Specifies whether or not the arm is automatically interpolated in the tangential direction of the U-Axis. It can also specify the ECP number in the upper four bits.

Mode Setting

Hexadecimal

&H00

Decimal

0

&H10

&H20

&HA0

&HB0

16

32

160

176

&HC0

&HD0

&HE0

&HF0

&H02

&H12

&H22

&HA2

&HB2

&HC2

&HD2

&HE2

&HF2

18

34

162

178

194

192

208

224

240

2

210

226

242

Tangential

Correction

No

Yes

1

2

10

11

12

13

14

15

ECP

Number

0

1

2

10

11

12

13

14

15

0

198 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Curve Statement

When specifying tangential correction, Curve uses only the U-Axis coordinate of the starting point of the point series. Tangential correction continuously maintains tool alignment tangent to the curve in the XY plane. It is specified when installing tools such as cutters that require continuous tangential alignment. When specifying a closed curve (using the

closure

parameter) with Automatic Interpolation in the tangential direction of the U-Axis, the U-Axis rotates 360 degrees from the start point. Therefore, before executing the CVMove instruction, set the U-Axis movement range using the Range instruction so the 360 degree rotation of the

U-Axis does not cause an error.

When using ECP, specify the ECP number in the upper four bits.

When generating a curve considering the additional axis position included in the point data, specify the ninth bit as 1. For example, when using no orientation offset or ECP and generating a curve considering the additional axis position, specify &H100.

When generating a curve for the additional axis, join the continuous point data of S axis and

T axis separately from the robot coordinate system.

However if the additional axis is consisted of the PG axis, it doesn’t generate a curve with the continuous point but creates the data to move to the final point.

numAxes

Integer number 2, 3, 4, or 6 which specifies the number of axes controlled during the curve motion as follows:

2 - Generate a curve in the XY plane with no Z Axis movement or U Axis rotation.

(except for 6-Axis robots (including N series))

3 - Generate a curve in the XYZ space with no U axis rotation.

(except for 6-Axis robots (including N series))

4 - Generate a curve in the XYZ space with U-Axis rotation.

(except for 6-Axis robots (including N series))

6 - Generate a curve in the XYZ space with U, V, and W axes rotation (6-Axis robots

(including N series) only).

The axes not selected to be controlled during the Curve motion maintain their previous encoder pulse positions and do not move during Curve motion.

pointList

{ point expression | P(

start

:

finish

) } [,

output command

] ...

This parameter is actually a series of Point Numbers and optional output statements either separated by commas or an ascended range of points separated by a colon. Normally the series of points are separated by commas as shown below:

Curve "MyFile", O, 0, 4, P1, P2, P3, P4

Sometimes the user defines a series of points using an ascending range of points as shown below:

Curve

"

MyFile", O, 0, 4, P(1:4)

In the case shown above the user defined a curve using points P1, P2, P3, and P4.

output command

is optional and is used to control output operation during curve motion. The command can be On or Off for digital outputs or memory outputs. Entering an output command following any point number in the point series causes execution of the output command when the arm reaches the point just before the output command. A maximum of

16 output commands may be included in one Curve statement. In the example below, the

"On 2" command is executed just as the arm reaches the point P2, then the arm continues to all points between and including P3 and P10.

Curve "MyFile", C, 0, 4, P1, P2, ON 2, P(3:10)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 199

Curve Statement

Description

Curve creates data that moves the manipulator arm along the curve defined by the point series

pointList

and stores the data in a file on the controller. The CVMove instruction uses the data in the file created by Curve to move the manipulator in a continuous path type fashion.

The curve file is stored in the Compact Flash inside of the controller. Therefore, Curve starts writing into the Compact Flash. Frequent writing into the Compact Flash will shorten the Compact Flash lifetime. We recommend using Curve only for saving the point data.

Curve calculates independent X, Y, Z, U, V, W coordinate values for each point using a cubic spline function to create the trajectory. Therefore, if points are far apart from each other or the orientation of the robot is changed suddenly from point to point, the desired trajectory may not to be realized.

It is not necessary to specify speeds or accelerations prior to executing the Curve instruction. Arm speed and acceleration parameters can be changed any time prior to executing CVMove by using the SpeedS or

AccelS instructions.

Points defined in a local coordinate system may be used in the series to locate the curve at the desired position. By defining all of the specified points in the point series for the Curve instruction as points with local attributes, the points may be changed as points on the local coordinate system by the Local instruction following the Curve instruction.

Notes

Use tangential correction when possible

It is recommended that you use tangential correction whenever possible, especially when using CVMove in a continuous loop through the same points. If you do not use tangential correction, the robot may not follow the correct path at higher speeds.

Open Curve Min and Max Number of Points Allowed

Open Curves may be specified by using from 3 to 200 points.

Closed Curve Min and Max Number of Points Allowed

Closed Curves may be specified by using from 3 to 50 points.

Potential Error

Attempt to Move Arm Outside Work Envelope

The Curve instruction cannot check the movement range for the defined curve path. This means that a user defined path may cause the robot arm to move outside the normal work envelope. In this case an "out of range" error will occur.

See Also

AccelS Function, Arc, CVMove, ECP, Move, SpeedS

Curve Statement Example

The following example designates the free curve data file name as MYCURVE.CVT, creates a curve tracing P1-P7, switches ON output port 2 at P2, and decelerates the arm at P7.

Set up curve

>

curve

"mycurve", O, 0, 4, P1, P2, On 2, P(3:7)

Move the arm to P1 in a straight line

> jump P1

Move the arm according to the curve definition called “mycurve”

> cvmove "mycurve"

200 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CVMove Statement

CVMove Statement

Performs the continuous spline path motion defined by the Curve instruction.

Syntax

CVMove

fileName

[

CP

] [

searchExpr

] [

SYNC

]

Parameters

fileName

String expression for the file name. This file must be previously created by the Curve instruction and stored on a PC hard disk.

You cannot specify a file path and fileName doesn’t have any effect from ChDisk.

See ChDisk for the details.

CP

Optional. Specifies continuous path motion after the last point.

searchExpr

Optional. A Till or Find expression.

Till

|

Find

SYNC

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Reserves a motion command. A robot will not move until the SyncRobots gives instructions.

Description

CVMove performs the continuous spline path motion defined by the data in the file

fileName

, which is located in the controller memory. The file must be previously created with the Curve command.

Multiple files may exist at the same time on the system. If the file name does not have an extension, .CVT is added automatically.

The user can change the speed and acceleration for the continuous path motion for CVMove by using the

SpeedS and AccelS instructions.

When the Curve instruction has been previously executed using points with Local definitions, you can change the operating position by using the Local instruction.

When executing CVMove, be careful that the robot doesn’t collide with peripheral equipment. When you attempt to change the hand orientation of the 6-axis robot (including N series) between adjacent points suddenly, due to the nature of cubic spline function, the 6-axis robot may start changing its orientation from the previous and following points and move in an unexpected trajectory. Verify the trajectory thoroughly prior to a CVMove execution and be careful that the robot doesn’t collide with peripheral equipment.

Specify points closely each other and at equal interval. Do not change the hand orientation between adjacent points suddenly.

The CP parameter causes acceleration of the next motion command to start when the deceleration starts for the current motion command. In this case the robot will not stop at the destination coordinate and will continue to move to the next point.

See Also

AccelS Function, Arc, Curve, Move, SpeedS, Till, TillOn

CVMove Statement Example

The following example designates the free curve data file name as MYCURVE.CVT, creates a curve tracing P1-P7, switches ON output port 2 at P2, and decelerates the arm at P7.

Set up curve

> curve "mycurve", O, 0, 4, P1, P2, On 2, P(3:7)

Move the arm to P1 in a straight line

> jump P1

Move the arm according to the curve definition called mycurve

>

cvmove

"mycurve"

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 201

CX, CY, CZ, CU, CV, CW, CR, CS, CT Statements

CX, CY, CZ, CU, CV, CW, CR, CS, CT Statements

Sets the coordinate value of a point data.

CV, CW are for only 6-axis robots (including N series).

CR is only for Joint type robots.

CS, CT are only for robots with additional axes.

Syntax

CX(

point

)

=

value

CY(

point

)

=

value

CZ(

point

)

=

value

CU(

point

)

=

value

CV(

point

)

=

value

CW(

point

)

=

value

CR(

point

)

=

value

CS(

point

)

=

value

CT(

point

)

=

value

Parameters

point value

P

number

or

P

(

expr

) or point label.

Real expression representing the new coordinate value in millimeters.

See Also

CX, CY, CZ, CU, CV, CW, CR, CS, CT Functions

CX, CY, CZ, CU, CV, CW, CR, CS, CT Statements Example

CX

(pick) = 25.34

202 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

CX, CY, CZ, CU, CV, CW, CR, CS, CT Functions

CX, CY, CZ, CU, CV, CW, CR, CS, CT Functions

Retrieves a coordinate value from a point

CV, CW functions are only for 6-axis robots (including N series).

CS, CT are only for robots with additional axes.

Syntax

CX (

point

)

CY (

point

)

CZ (

point

)

CU (

point

)

CV (

point

)

CW (

point

)

CR (

point

)

CS (

point

)

CT (

point

)

Parameters

point

Point expression.

Return Values

Returns the specified coordinate value. The return values for CX, CY, CZ are real numbers in millimeters.

The return values for CU, CV, CW are real numbers in degrees.

Return values of CS, CT functions: Real values in mm or deg. It depends on the additional axis setting.

Description

Used to retrieve an individual coordinate value from a point.

To obtain the coordinate from the current robot position, use Here for the point parameter.

See Also

CX, CY, CZ, CU, CV, CW, CR, CS, CT Statements

CX, CY, CZ, CU, CV, CW, CR, CS, CT Functions Example

The following example extracts the X axis coordinate value from point “pick” and puts the coordinate value in the variable

x

.

Function cxtest

Real x

x =

CX

(pick)

Print "The X Axis Coordinate of point 'pick' is", x

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 203

Date Statement

Date Statement

Displays the date.

Syntax

Date

Return Values

The current date is displayed.

See Also

Time, Date$

Date Statement Example

Example from the command window.

>

Date

2009/08/01

204 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Date$ Function

Returns the system date.

Syntax

Date$

Return Values

A string containing the date in the format

yyyy/mm/dd

.

See Also

Date, Time, Time$

Date$ Function Example

Print "Today's date: ",

Date$

Date$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 205

Declare Statement

Declare Statement

Declares an external function in a dynamic link library (DLL).

Syntax

Declare

funcName, “dllFile”

, alias

” [, (

argList

)]

As

type

Parameters

funcName dllFile

The name of the function as it will be called from your program.

The path and name of the library file. This must be a literal string (characters delimited by quotation marks). You may also use a macro defined by #define. If there is no path specified, then RC+ will look for the file in the current project directory. If not found, then it is assumed that the file is in the Windows system32 directory. The file extension can be omitted, but is always assumed to be .DLL.

alias arglist

Optional. The actual name of the function in the DLL or the function index. The name is case sensitive. The alias must be a literal string (characters delimited by quotation marks). If you use an index, you must use a # character before the index.

If omitted, a function name specified by

funcName

can be used as a name of function in DLL.

Optional. List of the DLL arguments. See syntax below.

[ {

ByRef | ByVal

} ]

varName

[( )]

As

type

ByRef

Optional. Specify ByRef when you refer to the variable to be seen by the calling function. In this case, the argument change in a function can be reflected to the variable of the calling side. You can change the values received as a reference.

ByVal

Optional. Specify ByVal when you do not want any changes in the value of the variable to be seen by the calling function. This is the default.

varName

Required. Name of the variable representing the argument; follows standard variable naming conventions. If you use an array variable as argument, you must specify ByRef.

Required. You must declare the type of argument.

type

Description

Use Declare to call DLL functions from the current program. Declare must be used outside of functions.

The Declare statement checks that the DLL file and function exist at compile time.

Passing Numeric Variables ByVal

SPEL: Declare MyDLLFunc, "mystuff.dll", "MyDLLFunc", (a As Long) As Long

VC++ long _stdcall MyDllFunc(long a);

Passing String Variables ByVal

SPEL: Declare MyDLLFunc, "mystuff.dll", "MyDLLFunc", (a$ As String) As

Long

VC++ long _stdcall MyDllFunc(char *a);

206 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Declare Statement

Passing Numeric Variables ByRef

SPEL: Declare MyDLLFunc, "mystuff.dll", "MyDLLFunc", (ByRef a As Long) As

Long

VC++ long _stdcall MyDllFunc(long *a);

Passing String Variables ByRef

SPEL: Declare MyDLLFunc, "mystuff.dll", "MyDLLFunc", (ByRef a$ As String)

As Long

VC++ long _stdcall MyDllFunc(char *a);

When you pass a string using ByRef, you can change the string in the DLL. Maximum string length is 255 characters. You must ensure that you do not exceed the maximum length.

Passing Numeric Arrays ByRef

SPEL: Declare MyDLLFunc, "mystuff.dll", "MyDLLFunc", (ByRef a() As Long)

As Long

VC++ long _stdcall MyDllFunc(long *a);

Returning Values from DLL Function

The DLL function can return a value for any data type, including String. However, for a string, you must return a pointer to a string allocated in the DLL function. And the function name must end in a dollar sign, as with all SPEL + string variables and functions. Note that the alias doesn't have a dollar sign suffix.

For example:

Declare ReturnLong, "mystuff.dll", "ReturnLong", As Long

Declare ReturnString$, "mystuff.dll", "ReturnString", As String

Function main

Print "ReturnLong = ", ReturnLong

Print "ReturnString$ = ", ReturnString$

Fend

See Also

Function...Fend

Declare Statement Example

'

Declare a DLL function. Since there is no path specified, the file can be in the current project

' directory or in the Windows system32 directory

Declare

MyDLLTest, "mystuff.dll", "MyDLLTest" As Long

Function main

Print MyDLLTest

Fend

' Declare a DLL function with two integer arguments and use a #define to define the DLL file name

#define MYSTUFF "mystuff.dll"

Declare

MyDLLCall, MYSTUFF, "MyTestFunc", (var1 As Integer, var2 As

Integer) As Integer

' Declare a DLL function using a path and index.

Declare

MyDLLTest, "c:\mydlls\mystuff.dll", "#1" As Long

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 207

DegToRad Function

DegToRad Function

Converts degrees to radians.

Syntax

DegToRad(

degrees

)

Parameters

degrees

Real expression representing the degrees to convert to radians.

Return Values

A double value containing the number of radians.

See Also

ATan, ATan2, RadToDeg Function

DegToRad Function Example

s = Cos(

DegToRad

(x))

208 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Del Statement

Del Statement

Deletes one or more files.

Syntax

Del

fileName

Parameters

fileName

The path and name of the file(s) to delete. The filename should be specified with an extension. See ChDisk for the details.

Description

Deletes the specified file(s).

Del Statement Example

Example from the command window.

>

Del

TEST.PTS ' Deletes the point file from the current directory.

>

Del

c:

TEST.PTS ' NG

!! Error: 7213 The file specified by path does not exist.

>

Del

c:

\TEST.PTS ' OK

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 209

DeleteDB Statement

DeleteDB Statement

Deletes data from the table in the opened database.

Syntax

DeleteDB

#databaseNum

,

tableNumber

[

, condition

]

Parameters

databaseNum tableNumber condition

Specify the database number (integer from 501 to 508) specified in OpenDB.

Specify the table name whose data will be deleted.

Specify the condition to delete the data.

Compound condition can be specified by using AND and OR.

If the condition is not specified, all data in the table will be deleted.

Description

Deletes the data matched to the delete condition from the specified table in the opened database.

If the database is an Excel book, this command cannot be executed.

Note

- Connection of PC with installed RC+ is required.

See Also

OpenDB, CloseDB, SelectDB, UpdateDB

210 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

DiffToolOrientation Function

DiffToolOrientation Function

Returns the angle between the coordinate axes of Tool coordinate systems in order to show difference between Tool orientations of two specified points.

Syntax

DiffToolOrientation

(

pointData1

,

pointData2

,

axisNumber

)

Parameters

pointData1 pointData2 axisNumber

Specify the first point data.

Specify the second point data.

Specify the coordinate axis of Tool coordinate system.

Constant

COORD_X_PLUS

Value

1: +X axis

COORD_Y_PLUS 2:

COORD_Z_PLUS 3:

Return Values

Angle (real value, from 0 to 180 degrees)

+Y axis

+Z axis

Description

Returns the angle (real value, from 0 to 180 degrees) between the specified coordinate axes of the Tool coordinate systems which indicates the difference between Tool orientations of two specified points. The results are not affected by the order of parameters,

pointData1

and

pointData2

. The results are also not affected by positional relation (coordinate values of X, Y, and Z) between the origin points of the two points.

DiffToolOrientation Function Example

' Displays the angle between Tool coordinate Z axes of Point 1 and 2.

Print

DiffToolOrientation

(P1, P2, COORD_Z_PLUS)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 211

DispDev Statement

DispDev Statement

Sets the current display device.

Syntax

DispDev

(

deviceID

)

Parameters

deviceID

The device ID for the desired display device.

21 RC+

24 TP (TP1 only)

20 TP3

The following parameters are also available.

See Also

DispDev Function

21 DEVID_SELF

24 DEVID_TP

20 DEVID_TP3

DispDev Statement Example

DispDev

DEVID_TP

212 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

DispDev Function

Returns the current display device.

Syntax

DispDev

Return Values

Integer value containing the deviceID.

21 RC+

24 TP (TP1 only)

20 TP3

See Also

DispDev Statement

DispDev Function Example

Print "The current display device is ",

DispDev

DispDev Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 213

Dist Function

Dist Function

Returns the distance between two robot points.

Syntax

Dist

(

point1

,

point2

)

Parameters

point1, point2

Specifies two robot point expressions.

Return Values

Returns the distance between both points (real value in mm).

Description

Even if you are using the additional axis, only the robot travel distance is returned.

It doesn’t include the travel distance of additional axis while you use the additional axis as running axis.

For the Joint type robot, the return value of this function means nothing.

See Also

CU, CV, CW, CX, CY, CZ

Dist Function Example

Real distance distance =

Dist

(P1, P2)

214 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Do...Loop Statement

Do...Loop Statement

Repeats a block of statements while a condition is True or until a condition becomes True.

Syntax

Do

[ {

While

|

Until

}

condition

]

[

statements

]

[

Exit Do

]

[

statements

]

Loop

Or, you can use this syntax:

Do

[

statements

]

[

Exit Do

]

[

statements

]

Loop

[ {

While

|

Until

}

condition

]

The Do Loop statement syntax has these parts:

Part

condition

Description

Optional. Numeric expression or string expression that is True or False. If

condition

is

Null, condition is treated as False.

statements

One or more statements that are repeated while, or until,

condition

is True.

Description

Any number of Exit Do statements may be placed anywhere in the Do...Loop as an alternate way to exit a

Do...Loop. Exit Do is often used after evaluating some condition, for example, If...Then, in which case the

Exit Do statement transfers control to the statement immediately following the Loop.

When used within nested Do...Loop statements, Exit Do transfers control to the loop that is one nested level above the loop where Exit Do occurs.

Note

DO NOT use XQT command repeatedly in Loop statements.

Do not use XQT command repeatedly in Loop statements such as Do…Loop.

The controller may freeze up. If you use Loop statements repeatedly, make sure to add Wait commad

(Wait 0.1).

See Also

For...Next, Select...Send

Do...Loop Statement Example

Do While

Not Lof(1)

Line Input #1, tLine$

Print tLine$

Loop

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 215

Double Statement

Double Statement

Declares variables of type Double. (8 byte double precision number).

Syntax

Double

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]...]

Parameters

varName subscripts

Variable name which the user wants to declare as type Double.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Double is used to declare variables as type Double. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

Valid number of digits for Double is 14.

See Also

Boolean, Byte, Global, Int32, Int64, Integer, Long, Real, Short, String, UByte, UInt32, UInt64,

UShort

Double Statement Example

The following example shows a simple program which declares some variables using Double.

Function doubletest

Double

var1

Double

A(10) '

Single dimension array of double

Double

B(10, 10) ' Two dimension array of double

Double

C(5, 5, 5) '

Three dimension array of double

Double

arrayvar(10)

Integer i

Print "Please enter a Number:"

Input var1

Print "The variable var1 = ", var1

For i = 1 To 5

Print "Please enter a Number:"

Input arrayvar(i)

Print "Value Entered was ", arrayvar(i)

Next i

Fend

216 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ECP Statement

ECP Statement

Selects or displays the current ECP (external control point).

Syntax

(1)

ECP

ECPNumber

(2)

ECP

Parameters

ECPNumber

Optional. Integer expression from 0 to 15 representing which of 16 ECP definitions to use with subsequent motion instructions. ECP 0 makes the ECP selection invalid.

Return Values

Displays current ECP when used without parameters.

Description

ECP selects the external control point specified by the ECPnumber (

ECPNumber

).

Note

This command will only work if the External Control Point option is active.

Power Off and Its Effect on the ECP Selection

Turning main power off clears the ECP selection.

See Also

ECPSet

ECP Statement Example

>ecpset 1, 100, 200, 0, 0

>

ecp

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 217

ECP Function

ECP Function

Returns the current ECP (external control point) number.

Syntax

ECP

Return Values

Integer containing the current ECP number.

Note

This command will only work if the External Control Point option is active.

See Also

ECP Statement

ECP Function Example

Integer savECP savECP =

ECP

ECP 2

Call Dispense

ECP savECP

218 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ECPClr Statement

ECPClr Statement

Clears (undefines) an external control point.

Syntax

ECPClr

ECPNumber

Parameters

ECPNumber

Integer expression representing which of the 15 external control points to clear

(undefine). (ECP0 is the default and cannot be cleared.)

Description

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Note

This command will only work if the External Control Point option is active.

See Also

Arm, ArmClr, ArmSet, ECPSet, Local, LocalClr, Tool, TLSet

ECPClr Statement Example

ECPClr

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 219

ECPDef Function

ECPDef Function

Returns ECP definition status.

Syntax

ECPDef

(

ECPNumber

)

Parameters

ECPNumber

Integer expression representing which ECP to return status for.

Return Values

True if the specified ECP has been defined, otherwise False.

See Also

Arm, ArmClr, ArmSet, ECPSet, Local, LocalClr, Tool, TLClr, TLSet

ECPDef Statement Example

Function DisplayECPDef(ecpNum As Integer)

If

ECPDef

(ecpNum) = False Then

Print "ECP ", ecpNum, "is not defined"

Else

Print "ECP ", ecpNum, ": ",

Print ECPSet(ecpNum)

EndIf

Fend

220 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ECPSet Statement

ECPSet Statement

Defines or displays an external control point.

Syntax

(1)

ECPSet

ECPNum

,

ECPPoint

(2)

ECPSet

ECPNum

(3)

ECPSet

Parameters

ECPNum

ECPPoint

Integer number from 1 to 15 representing which of 15 external control points to define.

P

number

or

P

(

expr

) or point label or point expression.

Return Values

When parameters are omitted, displays the current ECPSet definitions.

When only the ECP number is specified, displays the specified ECPSet definitions.

Description

Defines an external control point.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Note

This command will only work if the External Control Point option is active.

ECPSet Statement Example

ECPSet

1, P1

ECPSet

2, 100, 200, 0, 0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 221

ECPSet Function

ECPSet Function

Returns a point containing the external control point definition for the specified ECP.

Syntax

ECPSet

(

ECPNumber

)

Parameters

ECPNumber

Integer expression representing the number of the ECP to retrieve.

Return Values

A point containing the ECP definition.

Note

This command will only work if the External Control Point option is active.

See Also

ECPSet Statement

ECPSet Function Example

P1 =

ECPSet

(1)

222 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ElapsedTime Function

ElapsedTime Function

Returns the elapsed time since the takt time measurement timer starts in seconds.

Syntax

ElapsedTime

Return Values

An actual value representing an elapsed time of a takt time measurement timer. (Unit: second)

Valid range is from 0 to approx. 1.7E+31. Timer resolution is 0.001 seconds.

Description

Returns an elapsed time since the takt time measurement timer starts. Unlike the Tmr function, the

ElapsedTime function does not count the time while the program is halted.

The takt time measurement timer can be reset by using ResetElapsedTime statement.

Real overhead

ResetElapsedTime overHead = ElapsedTime

See Also

ResetElapsedTime, Tmr Function

ElapsedTime Function Example

ResetElapsedTime ' Resets the takt time measurement timer

For i = 1 To 10 '

Executes 10 times

GoSub Cycle

Next

Print

ElapsedTime

/ 10 '

Measures a takt time and displays it

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 223

Elbow Statement

Elbow Statement

Sets the elbow orientation of a point.

Syntax

(1)

Elbow

point

[,

value

]

(2)

Elbow

Parameters

point value

P

number

or

P

(

expr

Integer expression.

1 = Above (/A)

) or point label.

2 = Below (/B)

Return Values

When both parameters are omitted, the elbow orientation is displayed for the current robot position.

If

value

is omitted, the elbow orientation for the specified point is displayed.

See Also

Elbow Function, Hand, J4Flag, J6Flag, Wrist

Elbow Statement Example

Elbow

P0, Below

Elbow

pick, Above

Elbow

P(myPoint), myElbow

P1 = 0.000, 490.000, 515.000, 90.000, -40.000, 180.000

Elbow

P1, Above

Go P1

Elbow

P1, Below

Go P1

224 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Elbow Function

Elbow Function

Returns the elbow orientation of a point.

Syntax

Elbow

[(

point

)]

Parameters

point

Optional. Point expression. If robot position is returned.

point

is omitted, then the elbow orientation of the current

Return Values

1 Above (/A)

2 Below (/B)

See Also

Elbow Statement, Hand, Wrist, J4Flag, J6Flag

Elbow Function Example

Print

Elbow

(pick)

Print

Elbow

(P1)

Print

Elbow

Print

Elbow

(P1 + P2)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 225

Eof Function

Eof Function

Returns end of file status.

Syntax

Eof

(

fileNumber

)

Parameters

fileNumber

Integer number from 30 to 60 or expression representing the file number to check.

Return Values

True if file pointer is at end of file, otherwise False.

Description

Eof is functional only if the file is opened for reading mode.

An error occurs if the file was opened with the AOpen or WOpen statements.

See Also

Lof

Eof Function Example

Integer fileNum

String data$ fileNum = FreeFile

UOpen "TEST.DAT" As #fileNum

Do While Not

Eof

(fileNum)

Line Input #fileNum, data$

Print "data = ", data$

Loop

Close #fileNum

226 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Era Function

Era Function

Returns the joint number for which an error occurred.

Syntax

Era

[(

taskNum

)]

Parameters

taskNum

Integer expression representing a task number from 0 to 32.

Task number omission or “0” specifies the current task.

Return Values

The joint number that caused the error in the range 0 to 9 as described below:

0 - The current error was not caused by a servo axis.

1 - The error was caused by joint number 1

2 - The error was caused by joint number 2

3 - The error was caused by joint number 3

4 - The error was caused by joint number 4

5 - The error was caused by joint number 5

6 - The error was caused by joint number 6

7 - The error was caused by joint number 7

8 - The error was caused by joint number 8 (additional S axis)

9 - The error was caused by joint number 9 (additional T axis)

Description

Era is used when an error occurs to determine if the error was caused by one of the robot joints and to return the number of the joint which caused the error. If the current error was not caused by any joint, Era returns “0”.

When the event “Error during Auto Mode” occurs, normal task and NoPause task in AUTO mode stop execution and end the task.

If the target task has already ended when using this function for NoEmgAbort task or background task,

“Error 2261” is occurred. Use OnErr to acquire information before the task ends.

See Also

Erl, Err, ErrMsg$, Ert, OnErr, Trap

Era Function Example

Function main

OnErr Goto eHandler

Do

Call PickPlace

Loop

Exit Function eHandler:

Print "The Error code is ", Err

Print "The Error Message is ", ErrMsg$(Err)

errTask = Ert

If errTask > 0 Then

Print "Task number in which error occurred is ", errTask

Print "The line where the error occurred is Line ", Erl(errTask)

If

Era

(errTask) > 0 Then

Print "Joint which caused the error is ",

Era

(errTask)

EndIf

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 227

EResume Statement

EResume Statement

Resumes execution after an error-handling routine is finished.

Syntax

EResume

[{

label

|

Next

}]

Description

EResume

If the error occurred in the same procedure as the error handler, execution resumes with the statement that caused the error. If the error occurred in a called procedure, execution resumes at the Call statement in the procedure containing the error handler.

EResume Next

If the error occurred in the same procedure as the error handler, execution resumes with the statement immediately following the statement that caused the error. If the error occurred in a called procedure, execution resumes with the statement immediately following the Call statement that last in the procedure containing the error handler.

EResume {

label

}

If the error occurred in the same procedure as the error handler, execution resumes at the statement containing the label.

See Also

OnErr

EResume Statement Example

Function main

Integer retry

OnErr GoTo eHandler

Do

RunCycle

Loop

Exit Function eHandler:

Select Err

Case MyError

retry = retry + 1

If retry < 3 Then

EResume

' try again

Else

Print "MyError has occurred ", retry, " times

EndIf

Send

Fend

228 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Erf$ Function

Erf$ Function

Returns the name of the function in which the error occurred.

Syntax

Erf$

[(

taskNumber

)]

Parameters

taskNumber

Integer expression representing a task number from 0 to 32.

Task number omission or “0” specifies the current task.

Return Values

The name of the function where the last error occurred.

Description

Erf$ is used with OnErr. Erf$ returns the function name in which the error occurred. Using Erf$ combined with Err, Ert, Erl and Era the user can determine much more about the error which occurred.

When the event “Error during Auto Mode” occurs, normal task and NoPause task in AUTO mode stop execution and end the task.

If the target task has already ended when using this function for NoEmgAbort task or background task,

“Error 2261” is occurred. Use OnErr to acquire information before the task ends.

See Also

Era, Erl, Err, ErrMsg$, Ert, OnErr

Erf$ Function Example

The Following items are returned in the program example below.

In which task the error occurred (Ert function)

In which function the error occurred (Erf$ function)

Where the error occurred (Erl function)

On which joint the error occurred (Era function)

Function main

OnErr Goto eHandler

Do

Call PickPlace

Loop

Exit Function eHandler:

Print "The Error code is ", Err

Print "The Error Message is ", ErrMsg$(Err)

errTask = Ert

If errTask > 0 Then

Print "Task number in which error occurred is ", errTask

Print "Function at which error occurred is ",

Erf$

(errTask)

Print "The line where the error occurred is Line ", Erl(errTask)

If Era(errTask) > 0 Then

Print "Joint which caused the error is ", Era(errTask)

EndIf

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 229

Erl Function

Erl Function

Returns the line number in which the error occurred.

Syntax

Erl

[(

taskNumber

)]

Parameters

taskNumber

Integer expression representing a task number from 0 to 32.

Task number omission or “0” specifies the current task.

Return Values

The line number where the last error occurred.

Description

Erl is used with OnErr. Erl returns the line number in which the error occurred. Using Erl combined with

Err, Ert and Era the user can determine much more about the error which occurred.

When the event “Error during Auto Mode” occurs, normal task and NoPause task in AUTO mode stop execution and end the task.

If the target task has already ended when using this function for NoEmgAbort task or background task,

“Error 2261” is occurred. Use OnErr to acquire information before the task ends.

See Also

Era, Erf$, Err, ErrMsg$, Ert, OnErr

Erl Function Example

The Following items are returned in the program example below.

In which task the error occurred (Ert function)

Where the error occurred (Erl function)

What error occurred (Err function)

On which joint the error occurred (Era function)

Function main

OnErr Goto eHandler

Do

Call PickPlace

Loop

Exit Function eHandler:

Print "The Error code is ", Err

Print "The Error Message is ", ErrMsg$(Err)

errTask = Ert

If errTask > 0 Then

Print "Task number in which error occurred is ", errTask

Print "The line where the error occurred is Line ",

Erl

(errTask)

If Era(errTask) > 0 Then

Print "Joint which caused the error is ", Era(errTask)

EndIf

EndIf

Fend

230 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Err Function

Err Function

Returns the most recent error status.

Syntax

Err

[ (

taskNumber

) ]

Parameters

taskNumber

Optional. Integer expression representing a task number from 0 to 32.

“0” specifies the current task.

Return Values

Returns a numeric error code in integer form.

Description

Err allows the user to read the current error code. This along with the SPEL + Error Handling capabilities allows the user to determine which error occurred and react accordingly. Err is used with OnErr.

To get the controller error, use SysErr function.

When the event “Error during Auto Mode” occurs, normal task and NoPause task in AUTO mode stop execution and end the task.

If the target task has already ended when using this function for NoEmgAbort task or background task,

“Error 2261” is occurred. Use OnErr to acquire information before the task ends.

See Also

Era, Erf$, Erl, ErrMsg$, EResume, Ert, OnErr, Return, SysErr

Err Function Example

The following example shows a simple utility program which checks whether points P0-P399 exist. If the point does not exist, then a message is printed on the screen to let the user know this point does not exist.

The program uses the CX instruction to test each point for whether or not it has been defined. When a point is not defined control is transferred to the error handler and a message is printed on the screen to tell the user which point was undefined.

Function errtest

Integer i, errnum

Real x

OnErr GoTo eHandle

For i = 0 To 399

x = CX(P(i))

Next i

Exit Function

'

'

'*********************************************

'* Error Handler *

'********************************************* eHandle:

errnum =

Err

' Check if using undefined point

If errnum = 78 Then

Print "Point number P", i, " is undefined!"

Else

Print "ERROR: Error number ", errnum, " Occurred."

EndIf

EResume Next

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 231

Errb Function

Errb Function

Returns the robot number which the error occurred.

Syntax

Errb

Return Values

Returns the robot number which the error occurred.

Description

Errb finds and returns the robot number where the error occurred. If the robot is not the cause of the error,

“0” will be returned.

See Also

Era, Erl, Err, ErrMsg$, OnErr, Trap

Errb Function Example

The Following items are returned in the program example below.

In which task the error occurred (Ert function)

Where the error occurred (Erl function)

What error occurred (Err function)

On which joint the error occurred (Era function)

On which robot the error occurred (Errb function)

Function main

OnErr Goto eHandler

Do

Call PickPlace

Loop

Exit Function eHandler:

Print "The Error code is ", Err

Print "The Error Message is ", ErrMsg$(Err)

errTask = Ert

If errTask > 0 Then

Print "Task number in which error occurred is ", errTask

Print "The line where the error occurred is Line ", Erl(errTask)

If Era(errTask) > 0 Then

Print "Joint which caused the error is ", Era(errTask)

EndIf

Print “Robot number in which error occurred is “,

errb

EndIf

Fend

232 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ErrMsg$ Function

ErrMsg$ Function

Returns the error message which corresponds to the specified error number.

Syntax

ErrMsg$

(

errNumber, langID

)

Parameters

errNumber

Integer expression containing the error number to get the message for.

langID

Optional. Integer expression containing the language ID based on the following values.

0 - English

1 - Japanese

2 - German

3 - French

4 – Simplified Chinese

5 – Traditional Chinese

If omitted, English is used.

Return Values

Returns the error message which is described in the Error Codes table.

See Also

Era, Erl, Err, Ert, OnErr, Trap

ErrMsg$ Function Example

The Following items are returned in the program example below.

In which task the error occurred (Ert function)

Where the error occurred (Erl function)

On which joint the error occurred (Era function)

Function main

OnErr Goto eHandler

Do

Call PickPlace

Loop

Exit Function eHandler:

Print "The Error code is ", Err

Print "The Error Message is ",

ErrMsg$

(Err)

errTask = Ert

If errTask > 0 Then

Print "Task number in which error occurred is ", errTask

Print "The line where the error occurred is Line ", Erl(errTask)

If Era(errTask) > 0 Then

Print "Joint which caused the error is ", Era(errTask)

EndIf

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 233

Error Statement

Error Statement

Generates a user error.

Syntax

(1)

Error

task Number, errorNumber

(2)

Error

errorNumber

Parameters

taskNumber errorNumber

Optional. Integer expression representing a task number from 0 to 32.

“0” specifies the current task.

Integer expression representing a valid error number. User error numbers range is from 8000 to 8999.

Description

Use the Error statement to generate system or user defined errors. You can define user error labels and descriptions by using the User Error Editor in the EPSON RC+ development environment.

See Also

Era, Erl, Err, OnErr

Error Statement Example

#define ER_VAC 8000

If Sw(vacuum) = Off Then

Error

ER_VAC

EndIf

234 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ErrorOn Function

ErrorOn Function

Returns the error status of the controller.

Syntax

ErrorOn

Return Values

True if the controller is in error status, otherwise False.

Description

ErrorOn function is used only for NoEmgAbort task (special task using NoEmgAbort at Xqt) and background task.

See Also

ErrorOn, SafetyOn, SysErr, Wait, Xqt

ErrorOn Function Example

The following example shows a program that monitors the controller error and switches the I/O On/Off according to the error number when error occurs.

Notes

Forced Flag

This program example uses Forced flag for On/Off command.

Be sure that the I/O outputs change during error, or at Emergency Stop or Safety Door Open when designing the system.

After Error Occurrence

As this program, finish the task promptly after completing the error handling.

Function main

Xqt ErrorMonitor, NoEmgAbort

:

:

Fend

Function ErrorMonitor

Wait

ErrorOn

If 4000 < SysErr Then

Print "Motion Error = ", SysErr

Off 10, Forced

On 12, Forced

Else

Print "Other Error = ", SysErr

Off 11, Forced

EndIf

On 13, Forced

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 235

Ert Function

Ert Function

Returns the task number in which an error occurred.

Syntax

Ert

Return Values

The task number in which the error occurred.

Description

Ert is used when an error occurs to determine in which task the error occurs.

Ert returns the number as follows:

No task with error (0), normal task (1 to 32), back ground task (65 to 80), TRAP task (257 to 267).

See Also

Era, Erl, Err, ErrMsg$, OnErr, Trap

Ert Function Example

The Following items are returned in the program example below.

In which task the error occurred (Ert function)

Where the error occurred (Erl function)

On which joint the error occurred (Era function)

Function main

OnErr Goto eHandler

Do

Call PickPlace

Loop

Exit Function eHandler:

Print "The Error code is ", Err

Print "The Error Message is ", ErrMsg$(Err)

errTask =

Ert

If errTask > 0 Then

Print "Task number in which error occurred is ", errTask

Print "The line where the error occurred is Line ", Erl(errTask)

If Era(errTask) > 0 Then

Print "Joint which caused the error is ", Era(errTask)

EndIf

EndIf

Fend

236 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

EStopOn Function

EStopOn Function

Returns the Emergency Stop status.

Syntax

EstopOn

Return Values

True if the status is Emergency Stop, otherwise False.

Description

EStopOn function is used only for NoEmgAbort task (special task using NoEmgAbort at Xqt).

See Also

ErrorOn, SafetyOn, Wait, Xqt

EstopOn Function Example

The following example shows a program that monitors the Emergency Stop and switches the I/O On/Off when Emergency Stop occurs.

Notes

Forced Flag

This program example uses Forced flag for On/Off command.

Be sure that the I/O outputs change during error, or at Emergency Stop or Safeguard Open when designing the system.

Error Handling

As this program, finish the task promptly after completing the error handling.

Outputs OFF during Emergency Stop

As this program example, when the task executes I/O On/Off after the Emergency Stop, uncheck the

[Setup]-[System Configuration]-[Controller]-[Preferences]-[Outputs off during emergency stop] check box.

If this check box is checked, the execution order of turn Off by the controller and turn On using the task are not guaranteed.

Function main

Xqt EStopMonitor, NoEmgAbort

:

:

Fend

Function EStopMonitor

Wait

EStopOn

Print "EStop !!!"

Off 10, Forced

On 12, Forced

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 237

Eval Function

Eval Function

Executes a Command window statement from a program and returns the error status.

Syntax

Eval

(

command

[,

reply$

] )

Parameters

command

A string expression containing a command you want to execute.

reply$

Optional. A string variable that contains the reply from the command.

If the command is in the error status, it will return “!Error: error code”.

If the reply is over 255 characters, the extra characters will be truncated.

Return Values

The error code returned from executing the command.

Even if the command execution results in an error, the function itself will not be an error. Also, the system log doesn’t record it.

When the command is completed successfully, it returns “0”.

Description

You can execute any command (executable commands from Command window) from communication port such as TCP/IP by using Eval. It takes more time to execute this function than by using a normal statement.

Use the

reply$

parameter to retrieve the reply from the command. For example, if the command was “Print

Sw(1)”, then

reply$

would be a “1” or “0”.

See Also

Error Codes

Eval Function Example

This example shows how to execute a command being read over RS-232. After the command is executed, the error code is returned to the host. For example, the host could send a command like "motor on".

Integer errCode

String cmd$

OpenCom #1

Do

Line Input #1, cmd$

errCode =

Eval

(cmd$)

Print #1, errCode

Loop

238 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Exit Statement

Exit Statement

Exits a loop construct or function.

Syntax

Exit

{

Do | For | Function

}

Description

The Exit statement syntax has these forms:

Statement

Exit Do

Description

Provides a way to exit a Do...Loop statement. It can be used only inside a Do...Loop statement. Exit Do transfers control to the statement following the Loop statement.

When used within nested Do...Loop statements, Exit Do transfers control to the loop that

Exit For is one nested level above the loop where Exit Do occurs.

Provides a way to exit a For loop. It can be used only in a For...Next loop. Exit For transfers control to the statement following the Next statement. When used within nested

For loops, Exit For transfers control to the loop that is one nested level above the loop where Exit For occurs.

Exit Function Immediately exits the Function procedure in which it appears. Execution continues with the statement following the statement that called the Function.

See Also

Do...Loop, For...Next, Function...Fend

Exit Statement Example

For i = 1 To 10

If Sw(1) = On Then

Exit For

EndIf

Jump P(i)

Next i

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 239

ExportPoints Statement

ExportPoints Statement

Exports a point file to the specified path.

Syntax

ExportPoints

fileName, destination

Parameters

fileName

String expression containing the specific file to be exported.

The extension must be “.pts”. You cannot specify a file path and

fileName

doesn’t have any effect from ChDisk. See ChDisk for the details.

destination

Specify the path and file name to save the file.

The extension must be “.pts”. See ChDisk for the details.

Description

ExportPoints copies a specified point file to a folder on the PC.

If the file already exists in the folder, it will be overwritten.

Potential Errors

File Does Not Exist

If the specified path does not exist, an error will occur.

A Path Cannot be Specified

If

fileName

contains a path, an error will occur.

See Also

Dir, LoadPoints, SavePoints, FileExists, FolderExists

ExportPoints Statement Example

Function main

LoadPoints "robot1.pts"

:

SavePoints "robot1.pts"

If FolderExists("c:\mypoints\") Then

ExportPoints

"robot1.pts", "c:\mypoints\model1.pts"

EndIf

Fend

240 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FbusIO_GetBusStatus Function

FbusIO_GetBusStatus Function

Returns the status of the specified Fieldbus.

Syntax

FbusIO_GetBusStatus

(

busNumber

)

Parameters

busNumber

Integer expression representing the Fieldbus system number. This number must be 16.

This is the ID for the bus connected to the Fieldbus master board on the PC side of the controller.

Return Values

0 - OK

1 - Disconnected

2 - Power off

Description

FbusIO_GetBusStatus can be used to verify the general status of the Fieldbus.

Note

This command will only work if the Fieldbus Master option is active.

See Also

FbusIO_GetDeviceStatus, FbusIO_SendMsg

FbusIO_GetBusStatus Function Example

Long sts sts =

FbusIO_GetBusStatus

(16)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 241

FbusIO_GetDeviceStatus Function

FbusIO_GetDeviceStatus Function

Returns the status of the specified Fieldbus device.

Syntax

FbusIO_GetDeviceStatus

(

busNumber, deviceID

)

Parameters

busNumber

Integer expression representing the Fieldbus system number. This number must be 16.

This is the ID for the bus connected to the Fieldbus master board on the PC side of the controller.

deviceID

Integer expression representing the Fieldbus ID of the device.

Return Values

0 - OK

1 - Disconnected

2 - Power off

3 - Synchronization error. Device is booting, or has incorrect baud rate.

Description

FbusIO_GetDeviceStatus can be used to verify the general status of a Fieldbus device.

Note

This command will only work if the Fieldbus Master option is active.

See Also

FbusIO_GetBusStatus, FbusIO_SendMsg

FbusIO_GetDeviceStatus Function Example

Long sts sts =

FbusIO_GetDeviceStatus

(1, 10)

242 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FbusIO_SendMsg Statement

FbusIO_SendMsg Statement

Sends an explicit message to a Fieldbus device and returns the reply.

Syntax

FbusIO_SendMsg

(

busNumber

,

deviceID, msgParam, sendData(), recvData())

Parameters

busNumber

Integer expression representing the Fieldbus system number.

This number must be 16. This is the ID for the bus connected to the Fieldbus master board on the PC side of the controller.

deviceID

Integer expression representing the Fieldbus ID of the device.

msgParam

Integer expression for the message parameter. Not used with DeviceNet.

sendData

Array of type Byte containing data that is sent to the device. This array must be dimensioned to the number of bytes to send. If there are no bytes to send, specify 0.

recvData

Array of type Byte that contains the data received from the device. This array will automatically be redimensioned to the number of bytes received.

Description

FBusIO_SendMsg is used to query one Fieldbus device. Refer to the device manufacturer for information on messaging support.

Note

This command will only work if the Fieldbus Master option is active.

See Also

FbusIO_GetBusStatus, FbusIO_GetDeviceStatus

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 243

FbusIO_SendMsg Statement

FbusIO_SendMsg Statement Example

'

Send explicit message to DeviceNet device

Byte sendData(5)

Byte recvData(0)

Integer i sendData(0) = &H0E ' Command sendData(1) = 1 '

Class sendData(3) = 1 ' Instance sendData(5) = 7 '

Attribute

' msgParam is 0 for DeviceNet

FbusIO_SendMsg

1, 1, 0, sendData(), recvData()

' Display the reply

For i = 0 to UBound(recvData)

Print recvData(i)

Next i

' Send message to Profibus device

Byte recvData(0)

Integer i

' msgParam is the service number

FbusIO_SendMsg

16, 1, 56, 0, recvData()

' Display the reply

For i = 0 to UBound(recvData)

Print recvData(i)

Next i

244 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FileDateTime$ Function

FileDateTime$ Function

Returns the date and time of a file.

Syntax

FileDateTime$

(

filename

)

Parameters

fileName

A string expression containing the file name to check. The drive and path can also be included.

If only file name is specified, the file in the current directory is displayed.

See ChDisk for the details.

Note

A network path is available.

Return Values

Returns the date and time of the last update in the following format: m/d/yyyy hh:mm:ss

See Also

FileExists, FileLen

FileDateTime$ Function Example

String myPath$ myPath$ = " c

:\TEST\TEST.DAT"

If FileExists(myPath$) Then

Print "Last access date and time: ",

FileDateTime$

(myPath$)

Print "Size: ", FileLen(myPath$)

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 245

FileExists Function

FileExists Function

Checks if a file exists.

Syntax

FileExists

(

filename

)

Parameters

fileName

A string expression containing the file name to check. The drive and path can also be included.

If only the file name is specified, the file is checked in the current directory.

See ChDisk for the details.

Note

A network path is available.

Return Values

True if the file exists, False if not.

See Also

FolderExists, FileLen, FileDateTime$

FileExists Function Example

String myPath$ myPath$ = " c

:\TEST\TEST.DAT"

If

FileExists

(myPath$) Then

Print "Last access date and time: ", FileDateTime$(myPath$)

Print "Size: ", FileLen(myPath$)

EndIf

246 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FileLen Function

FileLen Function

Returns the length of a file.

Syntax

FileLen

(

filename

)

Parameters

fileName

A string expression containing the file name to check. This includes both drive name and path name.

If only the file name is specified, the file is checked in the current directory.

See ChDisk for the details.

Note

A network path is available.

Return Values

Returns the number of bytes in the file.

See Also

FileDateTime$, FileExists

FileLen Function Example

String myPath$ myPath$ = " c

:\TEST\TEST.DAT"

If FileExists(myPath$) Then

Print "Last access date and time: ", FileDateTime$(myPath$)

Print "Size: ",

FileLen

(myPath$)

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 247

Find Statement

Find Statement

Specifies or displays the condition to store coordinates during motion.

Syntax

Find

[

condition

]

Parameters

condition

Input status specified as a trigger

[

Event

] comparative operator ( =, <>, >=, >, <, <=) [

Integer expression

]

The following functions and variables can be used in the

Event

:

Functions : Sw, In, InW, Oport, Out, OutW, MemSw, MemIn, MemInW, Ctr

GetRobotInsideBox, GetRobotInsidePlane, AIO_In, AIO_InW,

AIO_Out, AIO_OutW

Variables : Byte, Inr32, Integer, Long, Short, UByte, UInt32, UShort global preserve variable, Global variable, module variable

In addition, using the following operators you can specify multiple event conditions.

Operator : And, Or, Xor

Example : Find Sw(5) = On

Find Sw(5) = On And Sw(6) = Off

Description

Find statement can be used by itself or as a modifier of a motion command.

The Find condition must include at least one of the functions above.

When variables are included in the Find condition, their values are computed when setting the Find condition. No use of variable is recommended. Otherwise, the condition may be an unintended condition.

Multiple Find statements are permitted. The most recent Find condition remains current.

When parameters are omitted, the current Find definition is displayed.

Notes

Find Setting at Main Power On

At power on, the Find condition is:

Find Sw(0) = On 'Input bit 0 is on

Use of PosFound Function to Verify Find

Use PosFound function to verify if the Find condition has been satisfied after executing a motion command using Find modifier.

Use Variables in Event Condition Expression

- Available variables are Integer type (Byte, Int32, Integer, Long, Short, UByte, UInt32, UShort)

- Array variables are not available

- Local variables are not available

- If a variable value cannot satisfy the event condition for more than 0.01 second, the system cannot retrieve the change in variables.

- Up to 64 can wait for variables in one system (including the ones used in the event condition expressions such as Wait). If it is over 64, an error occurs during the project build.

- If you try to transfer a variable waiting for variables as a reference with Byref, an error occurs.

- When a variable is included in the right side member of the event condition expression, the value is calculated when starting the motion command. We recommend not using variables in an integer expression to avoid making unintended conditions.

248 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

See Also

FindPos, Go, Jump, PosFound

Find Statement Example

Find

Sw(5) = On

Go P10

Find

If PosFound Then

Go FindPos

Else

Print "Cannot find the sensor signal."

EndIf

Find Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 249

FindPos Function

FindPos Function

Returns a robot point stored by Fine during a motion command.

Syntax

FindPos

Return Values

A robot point that was stored during a motion command using Find.

See Also

Find, Go, Jump, PosFound, CurPos, InPos

FindPos Function Example

Find Sw(5) = On

Go P10 Find

If PosFound Then

Go

FindPos

Else

Print "Cannot find the sensor signal."

EndIf

250 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Fine Statement

Fine Statement

Specifies and displays the positioning accuracy for target points.

Syntax

(1)

Fine

axis1, axis2, axis3, axis4

[

, axis5

,

axis6

] [,

axis7

] [,

axis8

,

axis9

]

(2)

Fine

Parameters

axis1

Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 1st joint.

axis2 axis3

Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 2nd joint.

Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 3rd joint.

axis4 axis5 axis6 axis 7

Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 4th joint.

Optional. Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 5th joint. Only for the 6-axis robot (including N series).

Optional. Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 6th joint. Only for the 6-axis robot (including N series).

Optional. Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 7th joint. Only for the Joint type 7-axis robot. axis 8 axis 9

Optional. Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 7th joint. Only for the additional S axis.

Optional. Integer expression ranging from (0 to 65535) which represents the allowable positioning error for the 7th joint. Only for the additional T axis.

* For C8, C12 series Manipulators, the allowable positioning error is from 0 to 131070.

Return Values

When used without parameters, Fine displays the current fine values for each axis.

Description

Fine specifies, for each joint, the allowable positioning error for detecting completion of any given move.

This positioning completion check begins after the CPU has completed sending the target position pulse to the servo system. Due to servo delay, the robot will not yet have reached the target position. This check continues to be executed every few milliseconds until each joint has arrived within the specified range configuration. Positioning is considered complete when all axes have arrived within the specified ranges.

Once positioning is complete program control is passed to the next statement, however, servo system keeps the control of the robot target position.

When relatively large ranges are used with the Fine instruction, the positioning will be confirmed relatively early in the move, and executes the next statement.

The default Fine settings depend on the robot type. Refer to your robot manual for details.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 251

Fine Statement

Notes

Cycle Times and the Fine Instruction

The Fine value does not affect the acceleration or deceleration control of the manipulator arm. However, smaller Fine values can cause the system to run slower because it may take the servo system extra time (a few milliseconds) to get within the acceptable position range. Once the arm is located within the acceptable position range (defined by the Fine instruction), the CPU executes the next user instruction.

Initialization of Fine (by Motor On, SLock, SFree)

When any of the following commands is used, the Fine value will be initialized to the default:

SLock, SFree, Motor instructions.

Make sure that you reset Fine values after one of the above commands is executed.

Potential Error

If Fine positioning is not completed within about 2 seconds, Error 4024 will occur. This error normally means the servo system balance needs to be adjusted. (Call your distributor for assistance)

See Also

Accel, AccelR, AccelS, Arc, Go, Jump, Move, Speed, SpeedR, SpeedS, Pulse, FineDist,

FineStatus

Fine Statement Example

The examples below show the Fine statement used in a program function, and used from the monitor window.

Function finetest

Fine

5, 5, 5, 5

Go P1

Go P2

' reduces precision to +/- 5 Pulse

Fend

>

Fine

10, 10, 10, 10

>

>

Fine

10, 10, 10, 10

252 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Fine Function

Fine Function

Returns Fine setting for a specified joint.

Syntax

Fine

(

joint

)

Parameters

joint

Integer expression representing the joint number for which to retrieve the Fine setting.

The additional S axis is 8 and T axis is 9.

Return Values

Real value.

See Also

Accel, AccelS, Arc, Go, Jump, Move, Speed, SpeedS, Pulse

Fine Function Example

This example uses the Fine function in a program:

Function finetst

Integer a

a =

Fine

(1)

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 253

FineDist Statement

FineDist Statement

Specifies and displays the positioning error limits. The unit of the setting value is “mm”.

Syntax

(1)

FineDist

value

(2)

FineDist

Parameters

value

Positioning allowance ranges from 0.001[mm] to 10[mm].

Return Values

If the parameter is not specified, FineDist displays the current set value.

Fine and FineDist

The difference between Fine and FineDist is the unit of the positioning check .

Fine statement sets the positioning check value in pulse, and the positioning check is performed on each axis.

FineDist statement sets the positioning check value in mm, and the positioning check is performed in the coordinate system of Tool number 0.

Fine and FineDist can be used at the same time. If Fine and FineDist are used in the program as shown below, the positioning check will be performed by FineDist. (If the order of Fine and FineDist is reversed,

Fine will perform the positioning check.)

Function test

Fine

5, 5, 5, 5

FineDist

0.1

Go P1

Go P2

Fend

254 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FineDist Statement

Note

Initialization of Fine (by Motor On, SLock, SFree, Till)

When any of the following commands is used, the FineDist value will be initialized to the default and the positioning check will be performed by Fine:

SLock, SFree, Motor, Till

Make sure to reset the FineDist value after any of the above commands is executed.

Potential Error

If FineDist positioning is not completed within about 2 seconds, Error 4024 will occur. This error normally means the servo system balance needs to be adjusted.

See Also

Accel, AccelR, AccelS, Arc, Go, Jump, Move, Speed, SpeedR, SpeedS, Pulse, Fine, FineStatus

FineDist Statement Example

The example below show the FineDist statement used in a program function, and used from the monitor window.

Function fineDisttest

Fine

0.1 ' Set precision to +/- 0.1 mm

Go P1

Go P2

Fend

>

FineDist

0.1

>

>

FineDist

0.1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 255

FineStatus Function

FineStatus Function

Returns whether Fine or FineDist is used by an integer.

Syntax

FineStatus

Return Values

Returns whether Fine is used or FineDist is used by an integer.

0 = Fine is used

1 = FineDist is used

See Also

Fine, FineDist

FineStatus Function Example

Print FineStatus

256 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Fix Function

Returns the integer portion of a real number.

Syntax

Fix

(

number

)

Parameters

number

Real expression containing number to fix.

Return Values

An integer value containing the integer portion of the real number.

See Also

Int

Fix Function Example

>print

Fix

(1.123)

1

>

Fix Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 257

Flush Statement

Flush Statement

Writes a file's buffer into the file.

Syntax

Flush

#fileNumber

Parameters

#fileNumber

Integer value from 30 to 63 or expression

Description

Writes a file's buffer into the specified file.

Flush cannot be used if the file was opened with ROpen.

Flush Statement Example

Integer fileNum, i fileNum = FreeFile

UOpen "TEST.DAT" As #fileNum

For i = 0 To 100

Print #fileNum, i

Next i

Flush

#fileNum

Close #fileNum

258 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FmtStr Statement

FmtStr Statement

Formats a numeric expression or date/time expression.

Syntax

FmtStr

expFormat, strFormat, stringVar

Parameters

expression strFormat stringVar

Numeric expression or date/time expression to be formatted.

Specify date/time expression in “yyyy/mm/dd”.

Format specification string.

Output string variable.

Description

Returns the formatted string according to the

strFormat

.

Numeric Format Specifiers

Character Description

None

(0)

Display the number with no formatting.

Digit placeholder. Display a digit or a zero. If the expression has a digit in the position where “0” appears in the format string, display it; otherwise, display a zero in that position. If the number has fewer digits than there are “0” (on either side of the decimal) in the format expression, display leading or trailing “0”. If the number has more digits to the right of the decimal separator than there are “0” to the right of the decimal separator in the format expression, round the number to as many decimal places as there are “0”. If the number has more digits to the left of the decimal separator than there are “0” to the left of the decimal separator in the format expression, display the extra digits without modification.

(#) Digit placeholder. Display a digit or nothing. If the expression has a digit in the position where “#” appears in the format string, display it; otherwise, display nothing in that position.

This symbol works like the 0 digit placeholder, except that leading and trailing “0” aren't displayed if the number has the same or fewer digits than there are “#” characters on either side of the decimal separator in the format expression.

(.) Decimal placeholder. In some locales, a comma is used as the decimal separator. The decimal placeholder determines how many digits are displayed to the left and right of the decimal separator. If the format expression contains only number signs to the left of this symbol, numbers smaller than 1 begin with a decimal separator. To display a leading zero displayed with fractional numbers, use “0” as the first digit placeholder to the left of the decimal separator. The actual character used as a decimal placeholder in the formatted output depends on the Number Format recognized by your system.

(,) Thousand separator. In some locales, a period is used as a thousand separator. The thousand separator separates thousands from hundreds within a number that has four or more places to the left of the decimal separator. Standard use of the thousand separator is specified if the format contains a thousand separator surrounded by digit placeholders (0 or #). Two adjacent thousand separators or a thousand separator immediately to the left of the decimal separator

(whether or not a decimal is specified) means "scale the number by dividing it by 1000, rounding as needed." For example, you can use the format string "##0,," to represent 100 million as “100”. Numbers smaller than 1 million are displayed as “0”. Two adjacent thousand separators in any position other than immediately to the left of the decimal separator are treated simply as specifying the use of a thousand separator. The actual character used as the thousand separator in the formatted output depends on the Number Format recognized by your system.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 259

mmm mmmm q y yy yyyy h hh n nn s ss t t t t t

FmtStr Statement

Date/Time Expression Specifiers

Character Description

(:)

(/)

Time separator. In some locals, other characters may be used. The time separator separates hours, minutes, and seconds when time values are formatted. The actual character used as the time separator in the formatted output depends on the Windows settings.

Date separator. In some locals, other characters may be used. The date separator separates day, month, and year when date values are formatted. The actual character used as the date separator in the formatted output depends on the Windows settings. c d dd ddd dddd ddddd dddddd

Display the date in “ddddd” and time in” ttttt”, in this order. If the date serial number does not have a fraction, it only displays the date. If the timing information does not have the integer, it only displays the timing information.

Display the date with the day in the lead without “0”. (1 to 31)

Display the date with the day in the lead with “0”. (01 to 31)

Displays the abbreviation of the day of the week. (Sun to Sat)

Displays the unabbreviated day of the week. (Sunday to Saturday)

Displays the day, month, and year in the format of the short data display settings of the

Windows. Default setting of the short data display format is m/d/yy.

Displays the serial values of the date as day, month, and year in the long data display setting of the Windows. Default setting of the long data display is mmmm dd, yyyy.

Displays the day of the week with a number. (1: Sunday ~ 7: Saturday) w ww m mm

Displays the number of weeks in a year with a number (1 to 54).

Display the month with the day in the lead without “0”. (1 to 12)

Even if this character is placed right after “h” or “hh”, this does not display “minute”. To display “minute”, use “n” or “nn”.

Display the month with the day in the lead with “0”.(01 to 12)

Even if this character is placed right after “h” or “hh”, this does not display “minute”. To display “minute”, use “n” or “nn”.

Displays the abbreviated month name (Jan to Dec)

Displays the unabbreviated month name (January to December) .

Displays the second without “0” at the beginning.(0 to 59)

Displays the second with “0” at the beginning. (00 to 59)

Displays the time (hour, minute, second) with the time separator of Windows setting. If the “initial zero” option is used, the time before 10:00am/pm are displayed with “0” at the beginning. Default time format of the Windows is h:nn:ss.

AM/PM

Displays the number of quarters in a year (1 to 4)

Displays the day of a year. (1 to 366)

Displays the year in 2 digits.(00 to 99)

Displays the year in 4 digits. (100 to 9999)

Displays the time in 24-hour clock without “0” at the beginning.(0 to 23)

Displays the time in 24-hour clock with “0” at the beginning.(00 to 23)

Displays the minute without “0” at the beginning. (0 to 59)

Displays the minute with “0” at the beginning.(00 to 59) am/pm

A/P a/p

Displays the time in 12-hour clock and displays morning and afternoon with AM/PM

(uppercase).

Displays the time in 12-hour clock and displays morning and afternoon with am/pm

(lowercase).

Displays the time in 12-hour clock and displays morning and afternoon with A/P

(uppercase).

Displays the time in 12-hour clock and displays morning and afternoon with a/p

(lowercase).

260 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FmtStr Statement

AMPM Displays the time in 12-hour clock. For the morning, displays AM with a string and for the afternoon, displays the PM with a string each with the Windows format setting. Both uppercases and lowercases can be used for AM/PM if the specified string matches the

Windows setting. Default Windows setting is AM/PM.

Note

Mixture of numeric format specifiers and time/date specifiers

An error occurs if both numeric format specifier and time/date specifier are specified.

See Also

Left$, Right$, Str$

FmtStr Statement Example

Function SaveData

String d$, f$, t$

' Make file name in the format

'

month, day, hour, minute

d$ = Date$

t$ = Time$

d$ = d$ + " " + t$

FmtStr

d$, "mmddhhnn", f$

f$ = f$ + ".dat"

WOpen f$ as #30

Print #30, "data"

Close #30

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 261

FmtStr$ Function

FmtStr$ Function

Format a numeric expression.

Syntax

FmtStr$

(e

xpFormat, strFormat

)

Parameters

e

xpFormat strFormat

Numeric expression or date/time expression to be formatted.

Specify date/time expression in “yyyy/mm/dd”.

Format specification string.

Return Values

A string containing the formatted expression.

Description

Use FmtStr$ to format a numeric expression into a string.

Numeric Format Specifiers

Character Description

None

(0)

Display the number with no formatting.

Digit placeholder. Display a digit or a zero. If the expression has a digit in the position where “0” appears in the format string, display it; otherwise, display a zero in that position. If the number has fewer digits than there are “0” (on either side of the decimal) in the format expression, display leading or trailing “0”. If the number has more digits to the right of the decimal separator than there are “0” to the right of the decimal separator in the format expression, round the number to as many decimal places as there are “0”. If the number has more digits to the left of the decimal separator than there are “0” to the left of the decimal separator in the format expression, display the extra digits without modification.

(#) Digit placeholder. Display a digit or nothing. If the expression has a digit in the position where “#” appears in the format string, display it; otherwise, display nothing in that position.

This symbol works like the 0 digit placeholder, except that leading and trailing “0” aren't displayed if the number has the same or fewer digits than there are “#” characters on either side of the decimal separator in the format expression.

(.) Decimal placeholder. In some locales, a comma is used as the decimal separator. The decimal placeholder determines how many digits are displayed to the left and right of the decimal separator. If the format expression contains only number signs to the left of this symbol, numbers smaller than 1 begin with a decimal separator. To display a leading zero displayed with fractional numbers, use “0” as the first digit placeholder to the left of the decimal separator. The actual character used as a decimal placeholder in the formatted output depends on the Number Format recognized by your system.

(,) Thousand separator. In some locales, a period is used as a thousand separator. The thousand separator separates thousands from hundreds within a number that has four or more places to the left of the decimal separator. Standard use of the thousand separator is specified if the format contains a thousand separator surrounded by digit placeholders (0 or #). Two adjacent thousand separators or a thousand separator immediately to the left of the decimal separator

(whether or not a decimal is specified) means "scale the number by dividing it by 1000, rounding as needed." For example, you can use the format string "##0,," to represent 100 million as “100”. Numbers smaller than 1 million are displayed as “0”. Two adjacent thousand separators in any position other than immediately to the left of the decimal separator are treated simply as specifying the use of a thousand separator. The actual character used as the thousand separator in the formatted output depends on the Number Format recognized by your system.

262 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FmtStr$ Function mmm mmmm q y yy yyyy h hh n nn s ss t t t t t w ww m c

Date/Time Expression Specifiers

Character

(:)

Description

Time separator. In some locals, other characters may be used. The time separator separates hours, minutes, and seconds when time values are formatted. The actual character used as the time separator in the formatted output depends on the Windows

(/) settings.

Date separator. In some locals, other characters may be used. The date separator separates day, month, and year when date values are formatted. The actual character used as the date separator in the formatted output depends on the Windows settings. d dd ddd dddd ddddd dddddd

Display the date in “ddddd” and time in” ttttt”, in this order. If the date serial number does not have a fraction, it only displays the date. If the timing information does not have the integer, it only displays the timing information.

Display the date with the day in the lead without “0”. (1 to 31)

Display the date with the day in the lead with “0”. (01 to 31)

Displays the abbreviation of the day of the week. (Sun to Sat)

Displays the unabbreviated day of the week. (Sunday to Saturday)

Displays the day, month, and year in the format of the short data display settings of the

Windows. Default setting of the short data display format is m/d/yy.

Displays the serial values of the date as day, month, and year in the long data display setting of the Windows. Default setting of the long data display is mmmm dd, yyyy.

Displays the day of the week with a number. (1: Sunday ~ 7: Saturday) mm

Displays the number of weeks in a year with a number (1 to 54).

Display the month with the day in the lead without “0”. (1 to 12)

Even if this character is placed right after “h” or “hh”, this does not display “minute”. To display “minute”, use “n” or “nn”.

Display the month with the day in the lead with “0”.(01 to 12)

Even if this character is placed right after “h” or “hh”, this does not display “minute”. To display “minute”, use “n” or “nn”.

Displays the abbreviated month name (Jan to Dec)

Displays the unabbreviated month name (January to December) .

Displays the second without “0” at the beginning.(0 to 59)

Displays the second with “0” at the beginning. (00 to 59)

Displays the time (hour, minute, second) with the time separator of Windows setting. If the “initial zero” option is used, the time before 10:00am/pm are displayed with “0” at the beginning. Default time format of the Windows is h:nn:ss.

AM/PM

Displays the number of quarters in a year (1 to 4)

Displays the day of a year. (1 to 366)

Displays the year in 2 digits.(00 to 99)

Displays the year in 4 digits. (100 to 9999)

Displays the time in 24-hour clock without “0” at the beginning.(0 to 23)

Displays the time in 24-hour clock with “0” at the beginning.(00 to 23)

Displays the minute without “0” at the beginning. (0 to 59)

Displays the minute with “0” at the beginning.(00 to 59) am/pm

A/P a/p

Displays the time in 12-hour clock and displays morning and afternoon with AM/PM

(uppercase).

Displays the time in 12-hour clock and displays morning and afternoon with am/pm

(lowercase).

Displays the time in 12-hour clock and displays morning and afternoon with A/P

(uppercase).

Displays the time in 12-hour clock and displays morning and afternoon with a/p

(lowercase).

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 263

FmtStr$ Function

AMPM Displays the time in 12-hour clock. For the morning, displays AM with a string and for the afternoon, displays the PM with a string each with the Windows format setting. Both uppercases and lowercases can be used for AM/PM if the specified string matches the

Windows setting. Default Windows setting is AM/PM.

Note

Mixture of numeric format specifiers and time/date specifiers

An error occurs if both numeric format specifier and time/date specifier are specified.

See Also

Left$, Right$, Str$

FmtStr$ Function Example

Function SendDateCode

String d$, f$

f$ =

FmtStr$

(10, "000.00")

OpenCom #1

Print #1, f$

CloseCom #1

Fend

264 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FolderExists Function

FolderExists Function

Checks if a folder exists.

Syntax

FolderExists

(

pathName

)

Parameters

pathName

A string expression containing the path of the folder to check. The drive can also be included. See ChDisk for the details.

Note

- This function is executable only with the PC disk.

Return Values

True if the folder exists, False if not.

See Also

FileExists, MkDir

FolderExists Function Example

If Not

FolderExists

(" c

:\TEST") Then

MkDir " c

:\TEST"

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 265

For...Next Statement

For...Next Statement

The For...Next instructions are used together to create a loop where instructions located between For and Next are executed multiple times as specified by the user.

Syntax

For

var

=

initValue

To

finalValue

[Step

increment

]

statements

Next

[

var

]

Parameters

var

The counting variable used with the For...Next loop. This variable is normally defined as an integer but may also be defined as a Real variable.

initValue finalValue increment

The initial value for the counter

var

.

The final value of the counter

var

. Once this value is met, the For...Next loop is complete and execution continues starting with the statement following the Next instruction.

An optional parameter which defines the counting increment for each time the Next statement is executed within the For...Next loop. This variable may be positive or negative. However, if the value is negative, the initial value of the variable must be larger than the final value of the variable. If the increment value is left out the system automatically increments by “1”.

statements

Any valid SPEL + statements can be inserted inside the For...Next loop.

Description

For...Next executes a set of statements within a loop a specified number of times. The beginning of the loop is the For statement. The end of the loop is the Next statement. A variable is used to count the number of times the statements inside the loop are executed.

The first numeric expression (

initValue )

is the initial value of the counter. This value may be positive or negative as long as the

finalValue

variable and Step increment correspond correctly.

The second numeric expression (

finalValue

) is the final value of the counter. This is the value which once reached causes the For...Next loop to terminate and control of the program is passed on to the next instruction following the Next instruction.

Program statements after the For statement are executed until a Next instruction is reached. The counter variable (

var

) is then incremented by the Step value defined by the

increment

parameter. If the Step option is not used, the counter is incremented by “1 (one)”.

The counter variable (

var

) is then compared with the final value. If the counter is less than or equal to the final value, the statements following the For instruction are executed again. If the counter variable is greater than the final value, execution branches outside of the For...Next loop and continues with the instruction immediately following the Next instruction.

266 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

For...Next Statement

Notes

Negative Step Values:

If the value of the Step increment (

increment

) is negative, the counter variable (

var

) is decremented

(decreased) each time through the loop and the initial value must be greater than the final value for the loop to work.

Variable Following Next is Not Required:

The variable name following the Next instruction may be omitted. However, for programs that contain nested For...Next loops, it is recommended to include the variable name following the Next instruction to aid in quickly identifying loops.

When a variable exits the loop, the value is not a final value.

Function forsample

Integer i

For i = 0 To 3

Next

Print i '

Displays 4

Fend

When you exit the loop by GoTo without using Exit For

Error 2020 will occur when you repeatedly execute the program which exits the loop by GoTo command, not Exit For command. Be sure to use Exit For command to exit the loop.

See Also

Do...Loop

For...Next Statement Example

Function fornext

Integer counter

For

counter = 1 to 10

Go Pctr

Next

counter

For

counter = 10 to 1 Step -1

Go Pctr

Next

counter

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 267

Force_Calibrate Statement

Force_Calibrate Statement

Sets zero offsets for all axes for the current force sensor.

Syntax

Force_Calibrate

Parameters

On

|

Off

Torque Control can be either On or Off.

Description

You should call Force_Calibrate for each sensor when your application starts. This will account for the weight of the components mounted on the sensor.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_Sensor

Force_Calibrate Statement Example

Force_Calibrate

268 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Force_ClearTrigger

Clears all trigger conditions for the current force sensor.

Syntax

Force_ClearTrigger

Description

Use Force_ClearTrigger to clear all conditions for the current force sensor’s trigger.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_Sensor, Force_SetTrigger

Force_ClearTrigger Statement Example

Force_ClearTrigger

Force_ClearTrigger

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 269

Force_GetForces Statement

Force_GetForces Statement

Returns the forces and torques for all force sensor axes in an array.

Syntax

Force_GetForces

array()

Parameters

array()

Real array with upper bound of 6.

Return Values

The array elements are filled in as follows:

Index

1

2

3

4

5

6

Axis

X Force

Y Force

Z Force

X Torque

Y Torque

Z Torque

Description

Use Force_GetForces to read all force and torque values at once.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_GetForce Function

Force_GetForces Statement Example

Real fValues(6)

Force_GetForces

fValues()

Constant

FORCE_XFORCE

FORCE_YFORCE

FORCE_ZFORCE

FORCE_XTORQUE

FORCE_YTORQUE

FORCE_ZTORQUE

270 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Force_GetForce Function

Force_GetForce Function

Returns the force for a specified axis.

Syntax

Force_GetForce

(

axis)

Parameters

axis

Return Values

Returns an real value.

Integer expression representing the axis.

Axis

X Force

Y Force

Z Force

X Torque

Y Torque

Z Torque

Constant

FORCE_XFORCE

FORCE_YFORCE

FORCE_ZFORCE

FORCE_XTORQUE

FORCE_YTORQUE

FORCE_ZTORQUE

Value

1

2

3

4

5

6

Description

Use Force_GetForce to read the current force setting for one axis. The units are determined by the type of force sensor.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_GetForces

Force_GetForce Function Example

Print

Force_GetForce

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 271

Force_Sensor Statement

Force_Sensor Statement

Sets the current force sensor for the current task.

Syntax

Force_Sensor

sensorNumber

Parameters

sensorNumber

Integer expression representing the sensor number.

Description

When using multiple force sensors on the same system, you must set the current force sensor before using other force sensing commands.

If your system has only one sensor, then you don't need to use Force_Sensor because the default sensor number is 1.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_Sensor Function

Force_Sensor Statement Example

Force_Sensor

1

272 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Force_Sensor Function

Force_Sensor Function

Returns the current force sensor for the current task.

Syntax

Force_Sensor

Description

Force_Sensor returns the current sensor number for the current task. When a task starts, the sensor number is automatically set to 1.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_Sensor

Force_Sensor Function Example

var =

Force_Sensor

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 273

Force_SetTrigger Statement

Force_SetTrigger Statement

Sets the force trigger for the Till command.

Syntax

Force_SetTrigger

axis, Threshold, CompareType

Parameters

axis

Integer expression containing the desired force sensor axis.

Threshold

CompareType

Axis

X Force

Y Force

Z Force

Constant

FORCE_XFORCE

FORCE_YFORCE

FORCE_ZFORCE

Value

1

2

3

X Torque

Y Torque

FORCE_XTORQUE

FORCE_YTORQUE

4

5

Z Torque FORCE_ZTORQUE 6

Real expression containing the desired threshold in units for the sensor being used.

Comparison

Less than or equal

Constant

FORCE_LESS

Value

0

Greater than or equal FORCE_GREATER 1

Description

To stop motion with a force sensor, you must set the trigger for the sensor, then use Till Force in your motion statement.

You can set the trigger with multiple axes. Call Force_SetTrigger for each axis. To disable an axis, set the threshold at 0.

Note

This command will only work if the Force Sensing option is active.

See Also

Force_Calibrate

Force_SetTrigger Statement Example

'

Set trigger to stop motion when force is less than

1 on Z axis.

Force_SetTrigger

3, -1, 0

SpeedS 3

AccelS 5000

Move Place Till Force

274 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

FreeFile Function

Returns / reserves a file number that is currently not being used.

Syntax

FreeFile

Return Values

Integer between 30 and 63.

See Also

AOpen, BOpen, ROpen, UOpen, WOpen, Close

FreeFile Function Example

Integer fileNum, i, j fileNum =

FreeFile

WOpen "TEST.DAT" As #fileNum

For i = 0 To 100

Print #fileNum, i

Next i

Close #fileNum fileNum =

FreeFile

ROpen "TEST.DAT" As #fileNum

For i = 0 to 100

Input #fileNum, j

Print "data = ", j

Next i

Close #fileNum

FreeFile Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 275

Function...Fend Statement

Function...Fend Statement

A function is a group of program statements which includes a Function statement as the first statement and an Fend statement as the last statement.

Syntax

Function

funcName

[(

argList

)] [

As

type(function)

] statements

Fend

Parameters

funcName

The name which is given to the specific group of statements bound between the

Function and Fend instructions. The function name must contain alphanumeric characters and may be up to 64 characters in length. Underscores are also allowed.

argList

Optional. List of variables representing arguments that are passed to the Function procedure when it is called. Multiple variables are separated by commas.

The arglist argument has the following syntax:

[ {

ByRef | ByVal

} ]

varName

[( )]

As

type(argument)

ByRef

Optional. Specify ByRef when you refer to the variable to be seen by the calling function. In this case, the argument change in a function can be reflected to the variable of the calling side.

ByVal

varName

[( )]

Optional. Specify ByVal when you do not want any changes in the value of the variable to be seen by the calling function.

This is the default.

Required. Name of the variable representing the argument; follows standard variable naming conventions. If you use an array variable as argument, you should specify ByRef and add empty parentheses “()” representing the array after the variable name.

As

type (argument)

Required. You must declare the type of argument.

As

type (function)

Use this parameter if you want to obtain return values. You must declare the type of return values.

Return Values

Value whose data type is specified with the

As

clause at the end of the function declaration (

As

type(function)

).

Description

The Function statement indicates the beginning of a group of SPEL + statements. To indicate where a function ends we use the Fend statement. All statements located between the Function and Fend statements are considered part of the function.

The Function...Fend combination of statements could be thought of as a container where all the statements located between the Function and Fend statements belong to that function. Multiple functions may exist in one program file.

If you want to use the return value, assign the value to the variable name which has the same name as the function and then terminate the function.

See Also

Call, Fend, Halt, Quit, Return, Xqt

276 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Function...Fend Statement

Function...Fend Statement Example

<Example 1>

The following example shows 3 functions which are within a single file. The functions called task2 and task3 are executed as background tasks while the main task called main executes in the foreground.

Function

main

Xqt 2, task2 ' Execute task2 in background

Xqt 3, task3 ' Execute task3 in background

' ....more statements here

Fend

Function

task2

Do

On 1

On 2

Off 1

Off 2

Loop

Fend

Function

task3

Do

On 10

Wait 1

Off 10

Loop

Fend

<Example 2>

In the following example, the pressure control sequence for peripherals is supplied as an argument and the result sent to the external device is displayed as a return value.

Function

main

Integer iResult

Real Sequence1(200)

.

.

iResult = PressureControl(ByRef Sequence1()) ' Argument is array

.

Print "Result:", iResult

.

Fend

Function

PressureControl(ByRef Array1() As Real) As Integer

.

(

Control pressure for peripherals according to Array1

)

.

PressureControl = 3 ' Return value

.

.

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 277

GetCurrentUser$ Function

GetCurrentUser$ Function

Returns the current EPSON RC+ user.

Syntax

GetCurrentUser$

Return Values

String containing the current user logID.

Note

This command will only work if the Security option is active.

See Also

LogIn Statement

GetCurrentUser$ Function Example

String currUser$ currUser$ =

GetCurrentUser$

278 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

GetRobotInsideBox Function

GetRobotInsideBox Function

Returns a robot which is in the approach check area.

Syntax

GetRobotInsideBox(

AreaNum

)

Parameters

AreaNum

Integer value (1 to 15) representing the approach check area you want to return the status for.

Return Values

Return the robot that is in the approach check area specified with

AreaNum

in bit.

Bit 0 : Robot 1 ……… Bit 15 : Robot 16

If the robot doesn’t configure the approach check area, bit is always 0.

For example, Robot 1, Robot 3 are in the approach check area, bit 0, bit 2 will be On and 5 will be returned.

See Also

Box, InsideBox

GetRobotInsideBox Function Example

The following program uses the GetRobotInsideBox function.

Wait for the status that no robots are in the approach check area.

Function WaitNoBox

Wait

GetRobotInsideBox

(1) = 0

Wait for the status that Robot 2 is only one in the approach check area.

Function WaitInBoxRobot2

Wait

GetRobotInsideBox

(1) = &H2

The following program uses the GetRobotInsideBox function in the parallel processing of the motion command. When a robot is in the specific approach check area while it is running, it turns ON the I/O. One robot is connected to the controller in this case.

Function Main

Motor On

Power High

Speed 30; Accel 30, 30

Go P1 !D0; Wait

GetRobotInsideBox

(1) = 1; On 1!

Fend

Note

D0 must be described.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 279

GetRobotInsidePlane Function

GetRobotInsidePlane Function

Returns a robot which is in the approach check plane.

Syntax

GetRobotInsidePlane (

PlaneNum

)

Parameters

PlaneNum

Integer value (1 to 15) representing the approach check plane you want to return the status for.

Return Values

Returns the number of the robot that is in the approach check plane specified with

PlaneNum

in bit.

Bit 0 : Robot 1 ……… Bit 15 : Robot 16

If the robot doesn’t configure the approach check plane, it always returns bit 0.

For example, Robot 1, Robot 3 are in the approach check plane, bit 0, bit 2 will be On and 5 will be returned.

See Also

InsidePlane, Plane

GetRobotInsidePlane Function Example

The following program uses the GetRobotInsidePlane function.

Wait for the status that no robots are in the approach check plane.

Function WaitNoPlane

Wait

GetRobotInsidePlane

(1) = 0

Wait for the status Robot 2 is only one in the approach check plane.

Function WaitInPlaneRobot2

Wait

GetRobotInsidePlane

(1) = &H2

The following program uses the GetRobotInsidePlane function in the parallel processing of the motion command. When a robot is in the specific approach check plane while it is running, it turns ON the I/O. One robot is connected to the controller in this case.

Function Main

Motor On

Power High

Speed 30; Accel 30, 30

Go P1 !D0; Wait

GetRobotInsidePlane

(1) = 1; On 1!

Fend

Note

D0 must be described.

280 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Global Statement

Global Statement

Declares variables with the global scope. Global variables can be accessed from anywhere.

Syntax

Global

[

Preserve

]

dataType varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

] , ...]

Parameters

Preserve

dataType varName subscripts

If Preserve is specified, then the variable retains its values. The values are cleared by project changes. If Preserve is omitted, the variable doesn’t retain its values.

Data type including Boolean, Byte, Double, Int32, Integer, Long, Real, Short, String,

UByte, UInt32, or UShort.

Variable name. Names may be up to 32 characters in length.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 to the upper bound value.

The total available number of array elements for global variables is 10000 for strings and 100000 for all other types.

The total available number of array elements for global preserve variables is 400 for strings and 4000 for all other types.

To calculate the total elements used in an array, use the following formula.

(If a dimension is not used, substitute 0 for the ubound value.) total elements = (ubound1 + 1) * (ubound2 + 1) * (ubound3 + 1)

Description

Global variables are variables which can be used in more than 1 file within the same project. They are cleared whenever a function is started from the Run window or Operator window unless they are declared with the Preserve option.

When declared in Preserve option, the variable retains the value at turning off the controller.

Global Preserve variables can be used with the RC+ Connectivity option.

It is recommended that global variable names begin with a "g_" prefix to make it easy to recognize globals in a program. For example:

Global Long g_PartsCount

See Also

Boolean, Byte, Double, Int32, Int64, Integer, Long, Real, Short, String, UByte, UInt32, UInt64,

UShort

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 281

Global Statement

Global Statement Example

The following example shows 2 separate program files. The first program file defines some global variables and initializes them. The second file then also uses these global variables.

FILE1 (MAIN.PRG)

Global

Integer g_Status

Global

Real g_MaxValue

Function Main

g_Status = 10

g_MaxValue = 1.1

.

.

Fend

FILE2 (TEST.PRG)

Function Test

Print "status1 = , g_Status

Print "MaxValue = , g_MaxValue

.

.

Fend

282 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Go Statement

Go Statement

Moves the arm using point to point motion from the current position to the specified point or X, Y, Z, U, V,

W position. The Go instruction can move any combination of 1-6 joints at the same time.

Syntax

Go

destination [

CP

] [LJM [

orientationFlag

]] [PerformMode

modeNumber

]

[searchExpr] [!...!] [

SYNC

]

Parameters

destination

CP

LJM

The target destination of the motion using a point expression.

Optional. Specifies continuous path motion.

Optional. Convert the target destination using LJM function.

orientationFlag

Optional. Specifies a parameter that selects an orientation flag for LJM function.

PerformMode

Optional. Specify the robot performance mode.

modeNumber

Specify the operation mode assigned to

PerformMode

with an integer value (1 - 3) or with the following constant. If

PerformMode

is specified, this parameter cannot be omitted.

Constant Value Description

searchExpr

!...!

Mode_Standard

Mode_High_Speed

1

2

Sets the Standard mode

Sets the High-speed mode

Mode_Low_Oscillation 3

Optional. A Till or Find expression.

Till

|

Find

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Sets the Low-oscillation mode

Optional. Parallel Processing statements can be added to execute I/O and other commands during motion.

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Go simultaneously moves all joints of the robot arm using point to point motion. The destination for the

Go instruction can be defined in a variety of ways:

- Using a specific point to move to. For example: Go P1.

- Using an explicit coordinate position to move to. For example: Go XY(50, 400, 0, 0).

- Using a point with a coordinate offset. For example: Go P1 +X(50).

- Using a point but with a different coordinate value. For example: Go P1 :X(50).

The path is not predictable because the each joint interpolates between the current point and the target point.

Be careful of the interference with peripherals.

The Speed instruction determines the arm speed for motion initiated by the Go instruction. The Accel instruction defines the acceleration.

With CP parameter, the arm can accelerate for the next motion command while the arm starts decelerating to a stop. In this case, the arm is not positioned at the target point.

With LJM parameter, the arm moves to the point into where the target point is converted using LJM function, with the current point as reference point.

Go LJM (P1, Here, 1) can be Go P1 LJM 1.

At this point, the original point data P1 does not change.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 283

Go Statement

LJM parameter is available for the 6-axis (including N series) and RS series robots.

When using

orientationFlag

with the default value, it can be omitted.

Go P1 LJM

Deceleration motion and acceleration motion of different modes can be combined when

PerformMode

is set while the path motion is enabled. Some combinations are not available depending on operation modes.

For details, refer to

PerformMode Statement.

Notes

Difference between Go and Move

The Move instruction and the Go instruction each cause the robot arm to move. However, the primary difference between the 2 instructions is that the Go instruction causes point to point motion whereas the

Move instruction causes the arm to move in a straight line. The Go instruction is used when the user is primarily concerned with the orientation of the arm when it arrives on point. The Move instruction is used when it is important to control the path of the robot arm while it is moving.

Difference between Go and Jump

The Jump instruction and the

Go

instruction each cause the robot arm to move in a point to point type fashion. However, the JUMP instruction has 1 additional feature. Jump causes the robot end effector to first move up to the LimZ value, then in a horizontal direction until it is above the target point, and then finally down to the target point. This allows Jump to be used to guarantee object avoidance and more importantly to improve cycle times for pick and place motions.

Proper Speed and Acceleration Instructions with Go

The Speed and Accel instructions are used to specify the speed and acceleration of the manipulator during motion caused by the Go instruction. Pay close attention to the fact that the Speed and Accel instructions apply to point to point type motion (like that for the Go instruction) while linear and circular interpolation motion uses the SpeedS and AccelS instructions.

Using Go with the Optional Till Modifier

The optional Till modifier allows the user to specify a condition to cause the robot to decelerate to a stop at an intermediate position prior to completing the motion caused by the Go instruction. If the Till condition is not satisfied, the robot travels to the target position. The Go with Till modifier can be used in 2 ways as described below:

(1) Go with Till Modifier

Checks if the current Till condition becomes satisfied. If satisfied, this command completes by decelerating and stopping the robot at an intermediate position prior to completing the motion caused by the Go instruction.

(2) Go with Till Modifier, Sw(Input bit number) Modifier, and Input Condition

This version of the Go with Till modifier allows the user to specify the Till condition on the same line with the Go instruction rather than using the current definition previously defined for Till.

The condition specified is simply a check against one of the inputs. This is accomplished through using the Sw instruction. The user can check if the input is On or Off and cause the arm to stop based on the condition specified. This feature works almost like an interrupt where the motion is interrupted (stopped) once the Input condition is met. If the input condition is never met during the robot motion then the arm successfully arrives on the point specified by

destination.

Using Go with the Optional Find Modifier

The optional Find modifier allows the user to specify a condition to cause the robot to record a position during the motion caused by the Go instruction. The Go with Find modifier can be used in 2 ways as described below:

(1) Go with Find Modifier:

Checks if the current Find condition becomes satisfied. If satisfied, the current position is stored in the special point FindPos.

(2) Go with Find Modifier, Sw(Input bit number) Modifier, and Input Condition:

This version of the Go with Find modifier allows the user to specify the Find condition on the same line with the Go instruction rather than using the current definition previously defined for

Find. The condition specified is simply a check against one of the inputs. This is accomplished through using the Sw instruction. The user can check if the input is On or Off and cause the

284 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Go Statement current position to be stored in the special point FindPos.

Go Instruction Always Decelerates to a Stop

The Go instruction always causes the arm to decelerate to a stop prior to reaching the final destination of the move.

Potential Error

Attempt to Move Outside of Robots Work Envelope

When using explicit coordinates with the Go instruction, you must make sure that the coordinates defined are within the robots valid work envelope. Any attempt to move the robot outside of the valid work envelope will result in an error.

See Also

!...! Parallel Processing, Accel, Find, Jump, Move, Pass, P#= (Point Assignment), PerformMode,

Pulse, Speed, Sw, Till

Go Example

The example shown below shows a simple point to point move between points P0 and P10. Later in the program the arm moves in a straight line toward point P2 until input #2 turns on. If input #2 turns On during the Go, then the arm decelerates to a stop prior to arriving on point P2 and the next program instruction is executed.

Function sample

Integer i

Home

Go

P0

Go

P1

For i = 1 to 10

Go

P(i)

Next i

Go

P2 Till Sw(2) = On

If Sw(2) = On Then

Print "Input #2 came on during the move and"

Print "the robot stopped prior to arriving on"

Print "point P2."

Else

Print "The move to P2 completed successfully."

Print "Input #2 never came on during the move."

EndIf

Fend

Some syntax examples from the command window are shown below:

>Go Here +X(50) ' Move only in the X direction 50 mm from current position

>Go P1 ' Simple example to move to point P1

>Go P1 :U(30) ' Move to P1 but use +30 as the position for the U joint to move to

>Go P1 /L ' Move to P1 but make sure the arm ends up in lefty position

>Go XY(50, 450, 0, 30) '

Move to position X=50, Y=450, Z=0, U=30

<Another Coding Example>

Till Sw(1) = Off And Sw(2) = On ' Specifies Till conditions for inputs 1 & 2

Go P1 Till '

Stop if current Till condition defined on previous line is met

Go P2 Till Sw(2) = On ' Stop if Input Bit 2 is On

Go P3 Till ' Stop if current Till condition defined on previous line is met

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 285

GoSub...Return

GoSub...Return

GoSub transfers program control to a subroutine. Once the subroutine is complete, program control returns back to the line following the GoSub instruction which initiated the subroutine.

Syntax

GoSub

{

label

}

{

label

:

}

statements

Return

Parameters

label

When the user specifies a label, the program execution will jump to the line on which this label resides. The label can be up to 32 characters in length. However, the first character must be an alphabet character (not numeric).

Description

The GoSub instruction causes program control to branch to the user specified statement label. The program then executes the statement on that line and continues execution through subsequent line numbers until a Return instruction is encountered. The Return instruction then causes program control to transfer back to the line which immediately follows the line which initiated the GoSub in the first place. (i.e. the

GoSub instruction causes the execution of a subroutine and then execution returns to the statement following the GoSub instruction.) Be sure to always end each subroutine with Return. Doing so directs program execution to return to the line following the GoSub instruction.

Potential Errors

Branching to Non-Existent Statement

If the GoSub instruction attempts to branch control to a non-existent label then an Error 3108 will be issued.

Return Found Without GoSub

A Return instruction is used to "return" from a subroutine back to the original program which issued the

GoSub instruction. If a Return instruction is encountered without a GoSub having first been issued then an

Error 2383 will occur. A standalone Return instruction has no meaning because the system doesn't know where to Return to.

See Also

GoTo, OnErr, Return

286 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

GoSub...Return

GoSub Statement Example

The following example shows a simple function which uses a GoSub instruction to branch to a label and execute some I/O instructions then return.

Function main

Integer var1, var2

GoSub

checkio '

GoSub using Label

On 1

On 2

Exit Function checkio: '

Subroutine starts here

var1 = In(0)

var2 = In(1)

If var1 = 1 And var2 = 1 Then

On 1

Else

Off 1

EndIf

Return '

Subroutine ends here

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 287

GoTo Statement

GoTo Statement

The GoTo instruction causes program control to branch unconditionally to a designated statement label.

Syntax

GoTo

{

label

}

Parameters

label

Program execution will jump to the line on which the label resides. The label can be up to 32 characters. However, the first character must be an alphabetic character (not numeric).

Description

The GoTo instruction causes program control to branch to the user specified label. The program then executes the statement on that line and continues execution from that line on. GoTo is most commonly used for jumping to an exit label because of an error.

Note

Using Too Many GoTo's

Please be careful with the GoTo instruction since using too many GoTo's in a program can make the program difficult to understand. The general rule is to try to use as few GoTo instructions as possible.

Some GoTo's are almost always necessary. However, jumping all over the source code through using too many GoTo statements is an easy way to cause problems.

See Also

GoSub, OnErr

GoTo Statement Example

The following example shows a simple function which uses a GoTo instruction to branch to a line label.

Function main

If Sw(1) = Off Then

GoTo

mainAbort

EndIf

Print "Input 1 was On, continuing cycle"

.

.

Exit Function mainAbort:

Print "Input 1 was OFF, cycle aborted!"

Fend

288 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Halt Statement

Halt Statement

Temporarily suspends execution of a specified task.

Syntax

Halt

taskIdentifier

Parameters

taskIdentifier

Task name or integer expression representing the task number.

A task name is the function name used in an Xqt statement or a function started from the Run window or Operator window. If an integer expression is used, the range is from 1 to 16 for normal tasks and from 257 to 261 for trap tasks.

Description

Halt temporarily suspends the task being executed as specified by the task name or number.

To continue the task where it was left off, use Resume. To stop execution of the task completely, use Quit.

To display the task status, click the Task Manager Icon on the EPSON RC+ Toolbar to run the Task manager.

Halt also stops the task when the specified task is NoPause task, NoEmgAbort task (special task using

NoPause or NoEmgAbort at Xqt), trap tasks, or the background tasks.

However, stopping these tasks needs enough consideration. Normally, Halt is not recommended for the special task.

See Also

Quit, Resume, Xqt

Halt Statement Example

The example below shows a function named “flicker” that is started by Xqt, then is temporarily stopped by

Halt and continued again by Resume.

Function main

Xqt flicker '

Execute flicker function

Do

Wait 3 ' Execute task flicker for 3 seconds

Halt

flicker

Wait 3 ' Halt task flicker for 3 seconds

Resume flicker

Loop

Fend

Function flicker

Do

On 1

Wait 0.2

Off 1

Wait 0.2

Loop

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 289

Hand Statement

Hand Statement

Sets the hand orientation of a point.

Syntax

(1)

Hand

point

[,

Lefty | Righty

]

(2)

Hand

Parameters

point

P

number

or

P

(expr)

or point label.

Lefty | Righty

Hand orientation.

Return Values

When both parameters are omitted, the hand orientation is displayed for the current robot position.

If

Lefty | Righty

is omitted, the hand orientation for the specified point is displayed.

See Also

Elbow, Hand Function, J4Flag, J6Flag, Wrist, J1Flag, J2Flag

Hand Statement Example

Hand

P0, Lefty

Hand

pick, Righty

Hand

P(myPoint), myHand

P1 = -364.474, 120.952, 469.384, 72.414, 1.125, -79.991

Hand

P1, Righty

Go P1

Hand

P1, Lefty

Go P1

290 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Hand Function

Hand Function

Returns the hand orientation of a point.

Syntax

Hand

[

(

point

)

]

Parameters

point

Optional. Point expression. If position is returned.

point

is omitted, then the hand orientation of the current robot

Return Values

1 Righty (/R)

2 Lefty (/L)

See Also

Elbow, Wrist, J4Flag, J6Flag, J1Flag, J2Flag

Hand Function Example

Print

Hand

(pick)

Print

Hand

(P1)

Print

Hand

Print

Hand

(P1 + P2)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 291

HealthCalcPeriod

HealthCalcPeriod

Set and display a period calculating “remaining months” of parts consumption commands information.

Syntax

(1) HealthCalcPeriod Period

(2) HealthCalcPeriod

Parameters

Period

Description

Specify a period to calculate in integer (1~7). (Unit: day) Default value is “7”.

Return Values

Display the current setting value of HealthCalcPeriod if omitting the parameter.

Remaining months of parts consumption commands information is automatically calculated based on the past operating condition. HealthCalcPeriod command sets and displays an operating period for this calculation.

If setting a period longer, remaining months which suppresses the influence of variations is calculated.

However, take a time to display “remaining time” correctly after changing the motion or speed.

Setting value of HealthCalcPeriod is applied to all robot, joint, and part controlled by executed controller.

Note

Setting Period

Period which is set in HealthCalcPeriod command is running period of the controller.

Be careful that is not the same as actual time.

Calculation of “remaining months” and “consumption rate” when clearing.

Calculate remaining months every day in spite of the setting value of HealthCalcPeriod until exceeds the setting period for the first time after clearing the “Parts consumption commands information” of EPSON

RC+, “remaining months” and “consumption rate” of HealthCtrlReset or HealthRBReset

See Also

HealthCalcPeriod Function, HealthCtrlInfo, HealthRBInfo, HealthCtrlReset, HealthRBReset

HealthCalcPeriod on Functional Example

> HealthCalcPeriod 3

> HealthCalcPeriod

3

292 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthCalcPeriod Function

HealthCalcPeriod Function

Returns “remaining months” calculating period of the parts consumption commands information which is currently set.

Syntax

HealthCalcPeriod

Return Values

Returns calculating period in integer. (Unit: day)

See Also

HealthCalcPeriod

HealthCalcPeriod on Functional Example

Example to display the calculating period.

Print "period is", HealthCalcPeriod

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 293

HealthCtrlAlarmOn Function

HealthCtrlAlarmOn Function

Returns the status of the parts consumption alarm for the specified Controller parts.

Syntax

HealthCtrlAlarmOn(

partType

)

Parameters

partType

Integer expression (1) or the following constant representing the parts you want to obtain the alarm status.

Constant

HEALTH_CONTROLLER_TYPE_BATTERY

Value Mode

1 Specifies the batteries.

Return Values

True if the parts consumption alarm is occurring for the specified parts, otherwise False.

The parts consumption alarm occurs when the parts consumption rate obtained by HealthRateCtrlInfo exceeds 100%.

See Also

HealthCtrlInfo, HealthRateCtrlInfo

HealthCtrlAlarmOn Function Example

The example below determines if the parts consumption alarm is occurring for the Controller batteries.

Function PrintAlarm

If

HealthCtrlAlarmOn

(HEALTH_CONTROLLER_TYPE_BATTERY) = True Then

Print "Controller Battery NG"

Else

Print "Controller Battery OK"

EndIf

Fend

294 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthCtrlInfo Statement

HealthCtrlInfo Statement

Displays the remaining months before the recommended replacement time for the specified Controller parts.

Syntax

HealthCtrlInfo

partType

Parameters

partType

Integer expression (1) or the following constant representing the parts you want to obtain the remaining months before the recommended replacement time.

Constant Value Mode

HEALTH_CONTROLLER_TYPE_BATTERY 1 Specifies the batteries.

Description

Displays the remaining months before the recommended replacement time for the specified Controller parts.

The remaining months are calculated based on the parts consumption rate from the past usage and the amount of change in the consumption rate obtained every operation of a period which is set in

HealthCalcPeriod of the Controller.

Notes

Since the remaining months are calculated based on the amount of change in the consumption rate obtained every operation of a period which is set in HealthCalcPeriod of the Controller, they cannot be calculated properly in the following cases:

- If the command is executed when the operating time is less than every operation of a period which is set in HealthCalcPeriod

- If the command is executed after the long-term operation stop period of the robot.

- If the command is executed after the parts consumption alarm is reset due to the parts replacement.

- If the time and date on the Controller is changed.

In above cases, execute the command after operating the Controller more than twice of setting period in

HealthCalcPeriod to display the accurate value.

See Also

HealthCtrlAlarmOn, HealthRateCtrlInfo

HealthCtrlInfo Statement Example

The example below displays the remaining months before the recommended replacement time for the

Controller batteries.

>

HealthCtrlInfo

HEALTH_CONTROLLER_TYPE_BATTERY

BATTERY 240.000

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 295

HealthCtrlInfo Function

HealthCtrlInfo Function

Returns the remaining months before the recommended replacement time for the specified Controller parts.

Syntax

HealthCtrlInfo

(

partType

)

Parameters

partType

Integer expression (1) or the following constant representing the parts you want to obtain the remaining months before the recommended replacement time.

Constant Value Mode

HEALTH_CONTROLLER_TYPE_BATTERY 1 Specifies the batteries.

Return Values

Real number representing the remaining months before the recommended replacement time. (Unit: month)

Description

The remaining months are calculated based on the parts consumption rate from the past usage and the amount of change in the consumption rate obtained every operation of a period which is set in

HealthCalcPeriod of the Controller.

Notes

Since the remaining months are calculated based on the amount of change in the consumption rate obtained every operation of a period which is set in HealthCalcPeriod of the Controller, they cannot be calculated properly in the following cases:

- If the command is executed when the operating time is less than every operation of a period which is set in HealthCalcPeriod.

- If the command is executed after the long-term operation stop period of the robot.

- If the command is executed after the parts consumption alarm is reset due to the parts replacement.

- If the time and date on the Controller is changed.

In above cases, execute the command after operating the Controller more than twice of setting period in

HealthCalcPeriod to display the accurate value.

See Also

HealthCtrlAlarmOn, HealthRateCtrlInfo

HealthCtrlInfo Function Example

The example below outputs the alarm when the recommended replacement time is in less than one month.

Function AlarmCheck

Real month

month =

HealthCtrlInfo

(HEALTH_CONTROLLER_TYPE_BATTERY)

If month < 1 Then

Print "Alarm ON"

EndIf

Fend

296 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthCtrlRateOffset Statement

HealthCtrlRateOffset Statement

Sets the offset for the consumption rate of the specified parts.

Syntax

HealthCtrlRateOffset

partType

, o

ffset

Parameters

partType

Integer expression (1) or the following constant representing the controller related parts.

Constant Value Mode

HEALTH_CONTROLLER_TYPE_BATTERY 1 Specifies the batteries.

offset

Description

Integer expression that specifies the offset value added to the consumption rate. (Unit: %)

Sets the offset for the consumption rate of the specified parts.

See Also

HealthRBAlarmOn, HealthRateRBInfo, HealthRBInfo

HealthCtrlRateOffset Statement Example

The following is the example to add 10% to the parts consumption rate of the Controller batteries.

>

HealthRBRateOffset

HEALTH_CONTROLLER_TYPE_BATTERY,10

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 297

HealthCtrlReset Statement

HealthCtrlReset Statement

Clears the remaining months before the recommended replacement time and the consumption rate for the specified parts.

Syntax

HealthCtrlReset

partType

Parameters

partType

Integer expression (1) or the following constant representing the controller related parts.

Constant Value Mode

HEALTH_CONTROLLER_TYPE_BATTERY 1 Specifies the batteries.

Description

Clears the remaining months before the recommended replacement time and the consumption rate for the specified parts.

The warnings are also canceled.

See Also

HealthCtrlAlarmOn, HealthRateCtrlInfo, HealthCtrlInfo

HealthCtrlReset Statement Example

>

HealthCtrlReset

HEALTH_CONTROLLER_TYPE_BATTERY

>

298 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthCtrlWarningEnable

HealthCtrlWarningEnable

Enable or disable the parts consumption alarm notification of specified part related to the Controller.

Syntax

HealthCtrlWarningEnable

partType

[, On/Off]

Parameters

partType

Integer expression or the following constant representing the controller.

Constant

HEALTH_CONTROLLER_TYPE_BATTERY

Value Mode

1 Specifies the batteries.

On/Off On: Enable the parts consumption alarm notification.

Return Values

Off: Disable the parts consumption alarm notification

If On/Off parameters are omitted, the current On/Off settings are displayed.

Description

When the parts consumption alarm of the specified part occurs, set whether to notify the parts consumption alarm.

Notes

If the parts consumption alarm of the specified part is disabled, the parts consumption alarm will not be notified when the recommended replacement time is passed. Be careful to set when using this command.

See Also

HealthCtrlAlarmOn

HealthCtrlWarningEnable Example

Example to disable the parts consumption alarm of batteries of the controller.

>

HealthCtrlWarningEnable

HEALTH_CONTROLLER_TYPE_BATTERY, Off

Example to display the parts consumption alarm settings of batteries of the controller.

>

HealthCtrlWarningEnable

HEALTH_CONTROLLER_TYPE_BATTERY

BATTERY Off

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 299

HealthCtrlWarningEnable Function

HealthCtrlWarningEnable Function

Returns the setting status of the parts consumption alarm notification of specified part related to the

Controller.

Syntax

HealthCtrlWarningEnable(

partType

)

Parameters

partType

Integer expression or the following constant representing the controller.

Constant

HEALTH_CONTROLLER_TYPE_BATTERY

Value Mode

1 Specifies the batteries.

Return Values

Returns the setting values of the parts consumption alarm in integer.

1: On

0: Off

See Also

HealthCtrlAlarmOn

HealthCtrlWarningEnable Function Example

Example to display the parts consumption alarm of batteries of the controller.

Print HealthCtrlWarningEnable(HEALTH_CONTROLLER_TYPE_BATTERY )

300 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRateCtrlInfo Function

HealthRateCtrlInfo Function

Returns the consumption rate of the specified Controller parts.

Syntax

HealthRateCtrlInfo

(

partType

)

Parameters

partType

Integer expression (1) or the following constant representing the parts you want to obtain the remaining months before the recommended replacement time.

Constant Value Mode

HEALTH_CONTROLLER_TYPE_BATTERY 1 Specifies the batteries.

Return Values

Real number representing the current parts consumption rate, when regarding the recommended replacement time as 100%. (Unit: %)

Description

This command calculates the parts consumption rate based on the actual operating condition.

Notes

The recommended replacement time is the recommended time to replace the parts calculated based on statistics.

Replacement may be required before the consumption rate reaches 100%.

In addition, the parts will not become immediately unusable when the consumption rate reaches 100%.

However, it is recommended to replace the parts soon as the possibility of breakage increases after the consumption rate reaches 100%.

See Also

HealthCtrlAlarmOn, HealthCtrlInfo,

HealthRateCtrlInfo Function Example

The example below outputs the alarm when the consumption rate for the Controller batteries reaches 90%.

Function AlarmCheck

Real HealthRate

HealthRate =

HealthRateCtrlInfo

(HEALTH_CONTROLLER_TYPE_BATTERY)

If HealthRate > 90 Then

Print "Alarm ON"

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 301

HealthRateRBInfo Function

HealthRateRBInfo Function

Returns the consumption rate for the specified robot parts.

Syntax

HealthRateRBInfo

(

robotNumber

,

partType

,

jointNumber

)

Parameters

robotNumber

Integer expression (1-16) representing the robot number you want to obtain the parts consumption rate.

partType

Integer expression (1-6) or the following constants representing the parts you want to obtain the consumption rate.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value Mode

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease.

4 Specifies the motors.

5

Specifies the reduction gear units.

6

Specifies the ball screw spline.

jointNumber

Integer expression (1-9) representing the joint you want to obtain the parts consumption rate.

This command is unavailable for the additional axes.

Return Values

Real number representing the current parts consumption rate, when regarding the recommended replacement time as 100%. (Unit: %)

Returns “-1” when the robot does not have the specified parts.

Description

This command calculates the parts consumption rate based on the actual operating condition.

Notes

The recommended replacement time is the recommended time to replace the parts calculated based on statistics.

Replacement may be required before the consumption rate reaches 100%.

In addition, the parts will not become immediately unusable when the consumption rate reaches 100%.

However, it is recommended to replace the parts soon as the possibility of breakage increases after the consumption rate reaches 100%.

See Also

HealthRBAlarmOn, HealthRBInfo

302 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRateRBInfo Function

HealthRateRBInfo Function Example

The example below outputs the alarm when the consumption rate of the Joint #3 reduction gear unit on the robot 1 reaches 90%.

Function AlarmCheck

Real HealthRate

HealthRate =

HealthRateRBInfo

(1,HEALTH_ROBOT_TYPE_GEAR,3)

If HealthRate > 90 Then

Print "Alarm ON"

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 303

HealthRBAlarmOn Function

HealthRBAlarmOn Function

Returns the status of the parts consumption alarm for the specified robot parts.

Syntax

HealthRBAlarmOn

(

robotNumber

,

partType

,

jointNumber

)

Parameters

robotNumber

Integer expression (1-16) representing the robot number you want to obtain the alarm status.

partType

Integer expression (1-6) or the following constants representing the parts you want to obtain the alarm status.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value Mode

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease.

4 Specifies the motors.

5

Specifies the reduction gear units.

6

Specifies the ball screw spline.

jointNumber

Integer expression (1-9) representing the joint you want to obtain the alarm status. When the batteries are selected

for partType

, the same value will be returned when any joint is specified because the batteries are common to all joints. This command is unavailable for the additional axes.

Return Values

True if the parts consumption alarm is occurring for the specified parts, otherwise False.

The parts consumption alarm occurs when the parts consumption rate obtained by HealthRateRBInfo exceeds 100%.

Returns “-1” when the robot does not have the specified parts.

See Also

HealthRBInfo, HealthRateRBInfo

HealthRBAlarmOn Function Example

The example below determines if the parts consumption alarm is occurring for the grease on the Joint #3 of the robot 1.

Function PrintAlarm4

If

HealthRBAlarmOn

(1, HEALTH_ROBOT_TYPE_GREASE, 3) = True Then

Print "Robot1 Joint3 Grease NG"

Else

Print "Robot1 Joint3 Grease OK"

EndIf

Fend

304 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBAnalysis Statement

HealthRBAnalysis Statement

Simulates and displays the usable months for the specified parts in a particular robot operation cycle.

Syntax

HealthRBAnalysis

robotNumber

,

partType

[,

jointNumber

]

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

partType

Integer expression or the following constants representing the robot parts.

Constant

HEALTH_ROBOT_TYPE_ALL

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value

0

2

3

4

5

6

Mode

Specifies all parts.

Specifies the timing belts.

Specifies the grease.

Specifies the motors.

Specifies the reduction gear units.

Specifies the ball screw spline.

jointNumber

Integer expression (1-6) representing the joint. If the joint number is not specified, returns values for all the joints. This command is unavailable for the additional axes.

Description

Simulates and displays the usable months for the specified parts in a particular robot operation cycle. This command calculates and displays how many months the parts can be used if they are new and used for 24 hours a day. The past usage is not considered.

Returns “-1” when the specified parts are not installed on the specified joint.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode (including the virtual controller).

See Also

HealthRBStart, HealthRBStop

HealthRBAnalysis Statement Example

The example below displays the usable months for all parts of all joints on SCARA robot.

>

HealthRBAnalysis

1, HEALTH_ROBOT_TYPE_ALL

BELT -1.000, -1.000, 38.689, 95.226

GREASE -1.000, -1.000, 21.130, -1.000

MOTOR 240.000, 240.000, 240.000, 240.000

GEAR 240.000, 224.357, -1.000, -1.000

BALL_SCREW_SPLINE -1.000, -1.000, 240.000, -1.000

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 305

HealthRBAnalysis Statement

The example below displays the usable months for the reduction gear units of all joints on SCARA robot.

>

HealthRBAnalysis

1, HEALTH_ROBOT_TYPE_GEAR

GEAR 240.000, 224.357, -1.000, -1.000

>

The example below displays the usable months for the Joint #2 motor on 6-axis robot.

>

HealthRBAnalysis

1, HEALTH_ROBOT_TYPE_MOTOR, 2

MOTOR 224.357

>

306 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBAnalysis Function

HealthRBAnalysis Function

Returns the usable months for the specified parts in a particular robot operation cycle.

Syntax

HealthRBAnalysis

(

robotNumber

,

partType

,

jointNumber

)

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

partType

Integer expression (2-6) or the following constants representing the robot parts.

Constant

HEALTH_ROBOT_TYPE_BELT

Value Mode

Specifies the timing

2 belts.

3 Specifies the grease. HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

4 Specifies the motors.

5

Specifies the

6 reduction gear units.

Specifies the ball screw spline.

jointNumber

Integer expression (1-6) representing the joint. This command is unavailable for the additional axes.

Return Values

Real number representing the usable months.

Returns “-1” when the specified parts are not installed on the specified joint.

Description

Simulates the usable months for the specified parts in a particular robot operation cycle. This command calculates how many months the parts can be used if they are new and used for 24 hours a day. The past usage is not considered.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode.

See Also

HealthRBStart, HealthRBStop

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 307

HealthRBAnalysis Function

HealthRBAnalysis Function Example

Function RobotPartAnalysis

Real month

Robot 1

HealthRBStart 1

Motor On

Go P0

Go P1

Motor Off

HealthRBStop 1

month =

HealthRBAnalysis

(1, HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE, 3)

Print "Ball Screw Spline analysis =", Str$(month)

Fend

308 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBDistance Statement

HealthRBDistance Statement

Displays the driving (rotation) amount of the motor of the specified joint.

Syntax

HealthRBDistance

[

robotNumber

]

[

,

jointNumber

]

Parameters

robotNumber

Optional. Integer expression (1-16) representing the robot number.

If omitted, the current robot number will be used.

jointNumber

Integer expression (1-6) representing the joint. If the joint number is not specified, returns values for all the joints. This command is unavailable for the additional axes.

Description

Calculates and displays the driving (rotation) amount of the motor of the specified joint in robot operation from HealthRBStart to HealthRBStop. The past usage is not considered.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode.

See Also

HealthRBStart, HealthRBStop

HealthRBDistance Statement Example

The example below displays the driving amount of the Joint #1 of SCARA robot.

>

HealthRBDistance

1, 1

1.000

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 309

HealthRBDistance Function

HealthRBDistance Function

Returns the driving (rotation) amount of the motor of the specified joint.

Syntax

HealthRBDistance

([

robotNumber

,]

jointNumber

)

Parameters

robotNumber

Optional. Integer expression (1-16) representing the robot number.

If omitted, the current robot number will be used.

jointNumber

Integer expression (1-6) representing the joint. This command is unavailable for the additional axes.

Return Values

Real number representing the driving amount.

Description

Returns the driving (rotation) amount of the motor of the specified joint in robot operation from

HealthRBStart to HealthRBStop. The past usage is not considered.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode.

See Also

HealthRBStart, HealthRBStop

HealthRBDistance Function Example

Function RobotPartAnalysis

Real healthDistance

Robot 1

HealthRBStart 1

Motor On

Go P0

Go P1

Motor Off

HealthRBStop 1

healthDistance =

HealthRBDistance

(1,1)

Print "Distance =", Str$(healthDistance)

Fend

310 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBInfo Statement

HealthRBInfo Statement

Displays the remaining months before the recommended replacement time for the specified robot parts.

Syntax

HealthRBInfo

robotNumber

,

partType

[,

jointNumber

]

Parameters

robotNumber

Integer expression (1-16) representing the robot number you want to obtain the remaining months before the recommended replacement time.

partType

Integer expression (0-6) or the following constants representing the parts you want to obtain the remaining months before the recommended replacement time.

Constant

HEALTH_ROBOT_TYPE_ALL

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

Value Mode

0 Specifies all parts.

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease. HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

4 Specifies the motors.

5

Specifies the reduction

6 gear units.

Specifies the ball screw spline.

jointNumber

Integer expression (1-9) representing the joint you want to obtain the remaining months before the recommended replacement time. When the batteries are selected for

partType

, the same value will be returned when any joint is specified because the batteries are common to all joints. If the joint number is not specified, returns values for all the joints.

This command is unavailable for the additional axes.

Description

Displays the remaining months before the recommended replacement time for the specified robot parts.

The remaining months are calculated based on the parts consumption rate from the past usage and the amount of change in the consumption rate obtained every operation of a period which is set in

HealthCalcPeriod of the Controller.

Returns “-1” when the robot joint does not have the specified parts.

Notes

Since the remaining months are calculated based on the amount of change in the consumption rate obtained every operation of a period which is set in HealthCalcPeriod of the Controller, they cannot be calculated properly in the following cases:

- If this command is executed when the operating time is less than every operation of a period which is set in HealthCalcPeriod.

- If this command is executed after the long-term operation stop period of the robot.

- If this command is executed after the parts consumption alarm is reset after the parts replacement.

- If the time and date on the Controller is changed.

In above cases, execute the command after operating the Controller more than twice of setting period in HealthCalcPeriod to display the accurate value.

See Also

HealthRBAlarmOn, HealthRateRBInfo

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 311

HealthRBInfo Statement

HealthRBInfo Statement Example

The example below displays the remaining months for all parts of all joints on the robot 1.

>

HealthRBInfo

1, HEALTH_ROBOT_TYPE_ALL

BATTERY 240.000

BELT -1.000, -1.000, 38.689, 95.226

GREASE -1.000, -1.000, 21.130, -1.000

MOTOR 240.000, 240.000, 240.000, 240.000

GEAR 240.000, 224.357, -1.000, -1.000

BALL_SCREW_SPLINE -1.000, -1.000, 240.000, -1.000

>

The example below displays the remaining months for the reduction gear units of all joints on the robot 1.

>

HealthRBInfo

1, HEALTH_ROBOT_TYPE_GEAR

GEAR 240.000, 224.357, -1.000, -1.000

>

The example below displays the remaining months for the Joint #2 motor of the robot 1.

>

HealthRBInfo

1, HEALTH_ROBOT_TYPE_MOTOR, 2

MOTOR 224.357

>

312 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBInfo Function

HealthRBInfo Function

Returns the remaining months before the recommended replacement time for the specified robot parts.

Syntax

HealthRBInfo

(

robotNumber

,

partType

,

jointNumber

)

Parameters

robotNumber

Integer expression (1-16) representing the robot number you want to obtain the remaining months before the recommended replacement time.

partType

Integer expression (1-6) or the following constants representing the parts you want to obtain the remaining months before the recommended replacement time.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

Value

1

Mode

Specifies the batteries.

Specifies the timing

2 belts.

3 Specifies the grease. HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

4 Specifies the motors.

5

Specifies the

6 reduction gear units.

Specifies the ball screw spline.

jointNumber

Integer expression (1-9) representing the joint you want to obtain the remaining months before the recommended replacement time. When the batteries are selected for

partType

, the same value will be returned when any joint is specified because the batteries are common to all joints. This command is unavailable for the additional axes.

Return Values

Real number representing the remaining months before the recommended replacement time. (Unit: month)

Returns “-1” when the robot does not have the specified parts.

Description

The remaining months are calculated based on the parts consumption rate from the past usage and the amount of change in the consumption rate obtained every operation of a period which is set in HealthCalcPeriod of the Controller.

Notes

Since the remaining months are calculated based on the amount of change in the consumption rate obtained every operation of a period which is set in HealthCalcPeriod of the Controller, they cannot be calculated properly in the following cases:

- If this command is executed when the operating time is less than every operation of a period which is set in HealthCalcPeriod.

- If this command is executed after the long-term operation stop period of the robot.

- If this command is executed after the parts consumption alarm is reset after the parts replacement.

- If the time and date on the Controller is changed.

In above cases, execute the command after operating the Controller more than twice of setting period in HealthCalcPeriod to display the accurate value.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 313

HealthRBInfo Function

See Also

HealthRBAlarmOn, HealthRateRBInfo

HealthRBInfo Function Example

The example below outputs the alarm when the recommended replacement time for the Joint #3 ball screw spline on the robot 1 is in less than one month.

Function AlarmCheck

Real month

month =

HealthRBInfo

(1, HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE, 3)

If month < 1 Then

Print "Alarm ON"

EndIf

Fend

314 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBRateOffset Statement

HealthRBRateOffset Statement

Sets the offset for the consumption rate of the specified parts.

Syntax

HealthRBRateOffset

robotNumber

,

partType

,

jointNumber

, o

ffset

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

partType

Integer expression (1-6) or the following constants representing the robot part.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value Mode

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease.

4 Specifies the motors.

5

Specifies the reduction gear units.

6

Specifies the ball screw spline.

jointNumber

Integer expression (1-6) representing the joint. When the batteries are selected for partType, the offset will be set when any joint is specified because the batteries are common to all joints. This command is unavailable for the additional axes.

offset

Integer expression that specifies the offset value added to the consumption rate. (Unit: %)

Description

Sets the offset for the consumption rate of the specified parts and joints.

See Also

HealthRBAlarmOn, HealthRateRBInfo, HealthRBInfo

HealthRBRateOffset Example

The example below adds 10% to the consumption rate of the Joint #1 reduction gear unit on the robot 1.

>

HealthRBRateOffset

1,HEALTH_ROBOT_TYPE_GEAR,1,10

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 315

HealthRBReset Statement

HealthRBReset Statement

Clears the remaining months before the recommended replacement time and the consumption rate for the specified parts.

Syntax

HealthRBReset

robotNumber

,

partType

,

jointNumber

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

partType

Integer expression (1-6) or the following constants representing the robot parts.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value Mode

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease.

4 Specifies the motors.

5

Specifies the reduction gear units.

6

Specifies the ball screw spline.

jointNumber

Integer expression (1-6) representing the joint you want to obtain the remaining months before the recommended replacement time. When the batteries are selected for

partType

, the remaining months will be cleared when any joint is specified because the batteries are common to all joints. This command is unavailable for the additional axes.

Description

Clears the remaining months before the recommended replacement time and the consumption rate for the specified parts and joints.

The warnings are also canceled.

See Also

HealthRBAlarmOn, HealthRateRBInfo, HealthRBInfo

HealthRBReset Statement Example

>

HealthRBReset

1,HEALTH_ROBOT_TYPE_GEAR,1

>

316 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBSpeed Statement

HealthRBSpeed Statement

Displays the average speed of the specified joint.

Syntax

HealthRBSpeed

[

robotNumber

] [,

jointNumber

]

Parameters

robotNumber

Optional. Integer expression (1-16) representing the robot number.

If omitted, the current robot number will be used.

jointNumber

Integer expression (1-6) representing the joint. If the joint number is not specified, returns values for all the joints. This command is unavailable for the additional axes.

Description

Returns the average of the absolute values for speed of the specified joint in robot operation from

HealthRBStart to HealthRBStop. The result is a real number from 0 to 1.

The maximum average speed is "1".

The value is "0" when the average value is 0.001 or less.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode.

See Also

HealthRBStart, HealthRBStop, AveSpeed

HealthRBSpeed Statement Example

The example below displays the speed of the Joint #1 of SCARA robot.

>

HealthRBSpeed

1, 1

0.100

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 317

HealthRBSpeed Function

HealthRBSpeed Function

Returns the average of the absolute values for speed of the specified joint.

Syntax

HealthRBSpeed

([

robotNumber

,]

jointNumber

)

Parameters

robotNumber

Optional. Integer expression (1-16) representing the robot number.

If omitted, the current robot number will be used.

jointNumber

Integer expression (1-6) representing the joint. This command is unavailable for the additional axes.

Return Values

The result is a real number from 0 to 1.

Description

Returns the average of the absolute values for speed of the specified joint in robot operation from

HealthRBStart to HealthRBStop. The result is a real number from 0 to 1. The maximum average speed is

"1".

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode (including the virtual controller).

See Also

HealthRBStart, HealthRBStop, AveSpeed

HealthRBSpeed Function Example

Function RobotPartAnalysis

Real healthSpeed

Robot 1

HealthRBStart 1

Motor On

Go P0

Go P1

Motor Off

HealthRBStop 1

healthSpeed =

HealthRBSpeed

(1,1)

Print "AveSpeed =", Str$(healthSpeed)

Fend

318 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBStart Statement

HealthRBStart Statement

Starts calculation of the usable months and elements for the parts in a particular robot operation cycle.

Syntax

HealthRBStart

robotNumber

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

Description

Starts calculation of the usable months and elements (torque, speed, and driving amount) for the parts on the specified robot in a particular robot operation cycle.

If this command is executed again when the calculation is already started, the previous calculation result will be initialized.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode (including the virtual controller).

See Also

HealthRBAnalysis, HealthRBStop, HealthRBTRQ, HealthRBSpeed, HealthRBDistance

HealthRBStart Statement Example

Function RobotPartAnalysis

Real month

Robot 1

HealthRBStar

t

1

Motor On

Go P0

Go P1

Motor Off

HealthRBStop 1

month = HealthRBAnalysis(1, HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE, 3)

Print "Ball Screw Spline analysis =", Str$(month)

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 319

HealthRBStop Statement

HealthRBStop Statement

Syntax

HealthRBStop

robotNumber

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

Description

Stops calculation for the usable months and elements (torque, speed, and driving amount) of the parts on the specified robot in a particular robot operation cycle.

Stops calculation of the usable months and elements for the parts in a particular robot operation cycle.

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode (including the virtual controller).

- Calculation automatically ends when one hour passes since calculation starts.

- If the command is executed after the automatic termination, an error will occur.

- If the command is executed without executing the HealthRBStart command, an error will occur.

- If the command is executed again without executing the HealthRBStart command after the previous

HealthRBStop command, an error will occur.

See Also

HealthRBAnalysis, HealthRBStart, HealthRBTRQ, HealthRBSpeed, HealthRBDistance

HealthRBStop Statement Example

Function RobotPartAnalysis

Real month

Robot 1

HealthRBStart 1

Motor On

Go P0

Go P1

Motor Off

HealthRBStop 1

month = HealthRBAnalysis(1, HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE, 3)

Print "Ball Screw Spline analysis =", Str$(month)

Fend

320 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBTRQ Statement

HealthRBTRQ Statement

Displays the torque value which affects the life of the parts on the specified joint.

Syntax

HealthRBTRQ

[

robotNumber

] [,

jointNumber

]

Parameters

robotNumber

Optional. Integer expression (1-16) representing the robot number.

If omitted, the current robot number will be used.

jointNumber

Integer expression (1-6) representing the joint. If the joint number is not specified, returns values for all the joints. This command is unavailable for the additional axes.

Description

Displays the torque value which affects the life of the parts on the specified joint in robot operation from

HealthRBStart to HealthRBStop. The result is a real number from 0 to 1. The maximum torque value is

"1".

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode (including the virtual controller).

See Also

HealthRBStart, HealthRBStop, ATRQ

HealthRBTRQ Statement Example

The example below displays the torque value which affects the life of the parts on the Joint #1 of SCARA robot.

>

HealthRBTRQ

1, 1

0.020

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 321

HealthRBTRQ Function

HealthRBTRQ Function

Returns the torque value which affects the life of the parts on the specified joint.

Syntax

HealthRBTRQ

([

robotNumber

,]

jointNumber

)

Parameters

robotNumber

Optional. Integer expression (1-16) representing the robot number.

If omitted, the current robot number will be used.

jointNumber

Integer expression (1-6) representing the joint. This command is unavailable for the additional axes.

Return Values

The result is a real number from 0 to 1.

Description

Returns the torque value which affects the life of the parts on the specified joint in robot operation from

HealthRBStart to HealthRBStop. The result is a real value from 0 to 1. The maximum torque value is "1".

Notes

- This command does not function in Auto mode.

- This command does not function in dry run mode (including the virtual controller).

See Also

HealthRBStart, HealthRBStop, ATRQ

HealthRBTRQ Function Example

Function RobotPartAnalysis

Real healthTRQ

Robot 1

HealthRBStart 1

Motor On

Go P0

Go P1

Motor Off

HealthRBStop 1

healthTRQ =

HealthRBTRQ

(1,1)

Print "Torque =", Str$(healthTRQ)

Fend

322 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBWarningEnable

HealthRBWarningEnable

Enable or disable the parts consumption alarm notification of specified part related to the robot.

Syntax

HealthRBWarningEnable

robotNumber, partType

[, On/Off]

Parameters

robotNumber

Integer expression (1-16) representing the robot number.

partType

Integer expression (1-6) or the following constants representing the robot parts.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value Mode

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease.

4 Specifies the motors.

5

Specifies the reduction gear units.

6

Specifies the ball screw spline.

On/Off On: Enable the parts consumption alarm notification.

Return Values

Off: Disable the parts consumption alarm notification

If On/Off parameters are omitted, the current On/Off settings are displayed.

Description

When the parts consumption alarm of the specified part occurs, set whether to notify the parts consumption alarm.

Notes

If the parts consumption alarm of the specified part is disabled, the parts consumption alarm will not be notified when the recommended replacement time is passed. Be careful to set when using this command.

See Also

HealthRBAlarmOn

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 323

HealthRBWarningEnable

HealthRBWarningEnable Example

Example to disable the parts consumption alarm of the grease part of SCARA robot 1.

>

HealthRBWarningEnable

1, HEALTH_ROBOT_TYPE_GREASE, Off

Example to display the parts consumption alarm settings of the grease part of SCARA robot 1.

>

HealthRBWarningEnable

1, HEALTH_ROBOT_TYPE_GREASE

GREASE Off

>

324 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HealthRBWarningEnable Function

HealthRBWarningEnable Function

Returns the setting status of the parts consumption alarm notification of specified part related to the robot.

Syntax

HealthRBWarningEnable(

robotNumber

,

partType

)

Parameters

robotNumber

Integer expression (1-16) representing the robot number you want to obtain the remaining months before the recommended replacement time.

partType

Integer expression (1-6) or the following constants representing the parts you want to obtain the remaining months before the recommended replacement time.

Constant

HEALTH_ROBOT_TYPE_BATTERY

HEALTH_ROBOT_TYPE_BELT

HEALTH_ROBOT_TYPE_GREASE

HEALTH_ROBOT_TYPE_MOTOR

HEALTH_ROBOT_TYPE_GEAR

HEALTH_ROBOT_TYPE_BALL_SCREW_SPLINE

Value Mode

1 Specifies the batteries.

2

Specifies the timing belts.

3 Specifies the grease.

4 Specifies the motors.

5

Specifies the reduction gear units.

6

Specifies the ball screw spline.

Return Values

Returns the setting values of the parts consumption alarm in integer.

1: On

0: Off

See Also

HealthRBAlarmOn

HealthRBWarningEnable Function Example

Example to display the parts consumption alarm settings of the grease part of SCARA robot 1.

Print HealthRBWarningEnable(1, HEALTH_ROBOT_TYPE_GREASE )

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 325

Here Statement

Here Statement

Teach a robot point at the current position.

Syntax

Here

point

Parameters

point

P

number

or

P

(

expr

) or point label.

Notes

The Here statement and Parallel Processing

You cannot use both of the Here statement and parallel processing in one motion command like this:

Go Here :Z(0) ! D10; MemOn 1 !

Be sure to change the program like this:

P999 = Here

Go P999 Here :Z(0) ! D10; MemOn 1 !

The Here statement and Multitask

If the Here statement is executed in a multitask function executed by Xqt while the robot is moved by

Move, Go, etc., in the main task, the task will be stopped due to an error.

Current robot position can be retrieved by CurPos .

Example

Function Xqt_PrintHere

Do

Print CurPOS

Wait 0.1

Loop

Fend

Function main

Xqt 10, Xqt_PrintHere

Go P0

Fend

See Also

Here Function, CurPos

Here Statement Example

Here

P1

Here

pick

326 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Here Function

Returns current robot position as a point.

Syntax

Here

Return Values

A point representing the current robot position.

Description

Use Here to retrieve the current position of the current manipulator.

See Also

Here Statement

Here Function Example

P1 =

Here

Here Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 327

Hex$ Function

Hex$ Function

Returns a string representing a specified number in hexadecimal format.

Syntax

Hex$

(number)

Parameters

number

Integer expression.

Return Values

Returns a string containing the ASCII representation of the number in hexadecimal format.

Description

Hex$ returns a string representing the specified number in hexadecimal format. Each character is from 0 to

9 or A to F. Hex$ is especially useful for examining the results of the Stat function.

See Also

Str$, Stat, Val

Hex$ Function Example

> print

hex

$(stat(0))

A00000

> print

hex

$(255)

FF

328 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Hofs Statement

Hofs Statement

Displays or sets the offset pulses between the encoder origin and the home sensor.

Syntax

(1)

Hofs

j1Pulses, j2Pulses, j3Pulses, j4Pulses [, j5pulses, j6pulses] [, j7pulses] [, j8pulses,

(2)

Hofs

j9pulses]

Parameters

j1Pulses j2Pulses j3Pulses j4Pulses j5Pulses

Integer expression representing joint 1 offset pulses.

Integer expression representing joint 2 offset pulses.

Integer expression representing joint 3 offset pulses.

Integer expression representing joint 4 offset pulses.

j6Pulses

For 6 axis robots (including N series).

Integer expression representing joint 5 offset pulses.

For 6 axis robots (including N series).

Integer expression representing joint 6 offset pulses.

For 7 axis robots. Integer expression representing joint 7 offset pulses.

j7Pulses j8Pulses j9Pulses

For additional S axis. Integer expression representing joint 8 (additional S axis) offset pulses.

For additional T axis. Integer expression representing joint 9 (additional T axis) offset pulses.

Return Values

Displays current Hofs values when used without parameters.

Description

Hofs displays or sets the home position offset pulses. Hofs specifies the offset from the encoder 0 point (Z phase) to the mechanical 0 point.)

Although the robot motion control is based on the zero point of the encoder mounted on each joint motor, the encoder zero point may not necessarily match the robot mechanical zero point. The Hofs offset pulse correction pulse is used to carry out a software correction to the mechanical 0 point based on the encoder 0 point.

Notes

Hofs Values SHOULD NOT be Changed unless Absolutely Necessary

The Hofs values are correctly specified prior to delivery. There is a danger that unnecessarily changing the

Hofs value may result in position errors and unpredictable motion. Therefore, it is strongly recommended that Hofs values not be changed unless absolutely necessary.

To Automatically Calculate Hofs Values

To have Hofs values automatically calculated, move the arm to the desired calibration position, and execute

Calib. The controller then automatically calculates Hofs values based on the CalPls pulse values and calibration position pulse values.

Saving and Restoring Hofs

Hofs can be saved and restored using the Save and Load commands in the [System Configuration] dialog-

[Robot]-[Calibration] from the System Configuration menu.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 329

Hofs Statement

See Also

Calib, CalPls, Home, Hordr, MCal, SysConfig

Hofs Statement Example

These are simple examples on the monitor window that first sets the joint 1 home offset value to be -545, the joint 2 home offset value to be 514, and the joint 3 and the joint 4 Home offset values to be both 0. It then displays the current home offset values.

>

hofs

-545, 514, 0, 0

>

hofs

-545, 514, 0, 0

>

330 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Hofs Function

Hofs Function

Returns the offset pulses used for software zero point correction.

Syntax

Hofs

(

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number to retrieve the Hofs value for.

The additional S axis is 8 and T axis is 9.

Return Values

The offset pulse value (integer value, in pulses).

See Also

Calib, CalPls, Home, Hordr, MCal, SysConfig

Hofs Function Example

This example uses the Hofs function in a program:

Function DisplayHofs

Integer i

Print "Hofs settings:"

For i = 1 To 4

Print "Joint ", i, " = ",

Hofs

(i)

Next i

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 331

Home Statement

Home Statement

Moves the robot arm to the user defined home position.

Syntax

Home

Description

Executes low speed Point to Point motion to the Home (standby) position specified by HomeSet, in the homing order defined by Hordr.

Normally, for SCARA robots (including RS series), the Z joint (J3) returns first to the HomeSet position, then the J1, J2 and J4 joints simultaneously return to their respective HomeSet coordinate positions. The

Hordr instruction can change this order of the axes returning to their home positions.

Note

Home Status Output:

When the robot is in its Home position, the controller's system Home output is turned ON.

Potential Error

Attempting to Home without HomeSet Values Defined

Attempting to Home the robot without setting the HomeSet values will result in an Error 2228 being issued.

See Also

HomeClr, HomeDef, HomeSet, Hordr

Home Statement Example

The Home instruction can be used in a program such as this:

Function InitRobot

Reset

If Motor = Off Then

Motor On

EndIf

Home

Fend

Or it can be issued from the Command window like this:

>

home

>

332 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HomeClr Function

HomeClr Function

Clears the home position definition.

Syntax

HomeClr

Description

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

HomeDef, HomeSet

HomeClr Function Example

This example uses the HomeClr function in a program:

Function ClearHome

If HomeDef = True Then

HomeClr

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 333

HomeDef Function

HomeDef Function

Returns whether home position has been defined or not.

Syntax

HomeDef

Return Values

True if home position has been defined, otherwise False.

See Also

HomeClr, HomeSet

HomeDef Function Example

This example uses the HomeDef function in a program:

Function DisplayHomeSet

Integer i

If

HomeDef

= False Then

Print "Home is not defined"

Else

Print "Home values:"

For i = 1 To 4

Print "J", i, " = ", HomeSet(i)

Next i

EndIf

Fend

334 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HomeSet Statement

HomeSet Statement

Specifies and displays the Home position.

Syntax

(1)

HomeSet

j1Pulses

,

j2Pulses

,

j3Pulses

,

j4Pulses

[,

j5Pulses

,

j6Pulses

] [,

j7Pulses

] [,

j8Pulses

,

j9Pulses

]

(2)

HomeSet

Parameters

j1Pulses j2Pulses j3Pulses j4Pulses

The home position encoder pulse value for joint 1.

The home position encoder pulse value for joint 2.

The home position encoder pulse value for joint 3.

The home position encoder pulse value for joint 4.

j5Pulses j6Pulses

Optional for 6-axis robots (including N series).

The home position encoder pulse value for joint 5.

Optional for 6-axis robots (including N series).

The home position encoder pulse value for joint 6.

Optional for Joint type 7-axis robots. The home position encoder pulse value for joint 7.

j7Pulses j8Pulses j9Pulses

Optional for additional S axis.

The home position encoder pulse value for joint 8 (additional S axis).

Optional for additional T axis.

The home position encoder pulse value for joint 9 (additional T axis).

Return Values

Displays the pulse values defined for the current Home position when parameters are omitted.

Description

Allows the user to define a new home (standby) position by specifying the encoder pulse values for each of the robot joints.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Potential Errors

Attempting to Home without HomeSet Values Defined:

Attempting to Home the robot without setting the HomeSet values will result in an Error 2228 being issued.

Attempting to Display HomeSet Values without HomeSet Values Defined:

Attempting to display home position pulse values without HomeSet values defined causes an Error 2228.

See Also

Home, HomeClr, HomeDef, Hordr, Pls

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 335

HomeSet Statement

HomeSet Statement Example

The following examples are done from the monitor window:

>

homeset

0,0,0,0 ' Set Home position at 0,0,0,0

>

homeset

0 0

0 0

> home ' Robot homes to 0,0,0,0 position

Using the Pls function, specify the current position of the arm as the Home position.

>

homeset

Pls(1), Pls(2), Pls(3), Pls(4)

336 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

HomeSet Function

HomeSet Function

Returns pulse values of the home position for the specified joint.

Syntax

HomeSet

(

jointNumber)

Parameters

jointNumber

Integer expression representing the joint number to retrieve the HomeSet value for.

The additional S axis is 8 and T axis is 9.

Return Values

Returns pulse value of joint home position. When

jointNumber

is “0”, returns “1” when HomeSet has been set or “0” if not.

See Also

HomeSet Statement

HomeSet Function Example

This example uses the HomeSet function in a program:

Function DisplayHomeSet

Integer i

If HomeSet(0) = 0 Then

Print "HomeSet is not defined"

Else

Print "HomeSet values:"

For i = 1 To 4

Print "J", i, " = ",

HomeSet

(i)

Next i

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 337

Hordr Statement

Hordr Statement

Specifies or displays the order of the axes returning to their Home positions.

Syntax

(1)

Hordr

step1, step2, step3, step4

[,

step5

] [

, step6

] [

, step7

] [

, step8

] [

, step9

]

(2)

Hordr

Parameters

step1 step2

Bit pattern that defines which joints should home during the 1st step of the homing process.

Bit pattern that defines which joints should home during the 2nd step of the homing process.

Bit pattern that defines which joints should home during the 3rd step of the homing process.

step3 step4 step5 step6 step7 step8 step9

Bit pattern that defines which joints should home during the 4th step of the homing process.

Bit pattern that defines which joints should home during the 5th step of the homing process.

Bit pattern that defines which joints should home during the 6th step of the homing process.

Bit pattern that defines which joints should home during the 7th step of the homing process.

Bit pattern that defines which joints should home during the 8th step of the homing process.

Bit pattern that defines which joints should home during the 9th step of the homing process.

Return Values

Displays current Home Order settings when parameters are omitted.

Description

Hordr specifies joint motion order for the Home command. (i.e. Defines which joint will home 1st, which joint will home 2nd, 3rd, etc.)

The purpose of the Hordr instruction is to allow the user to change the homing order. The homing order is broken into 4, 6, or 9 separate steps, depending on robot type. The user then uses Hordr to define the specific joints which will move to the Home position during each step. It is important to realize that more than one joint can be defined to move to the Home position during a single step. This means that all joints can potentially be homed at the same time. For SCARA robots (including RS series, 4 axis robots), it is recommended that the Z joint normally be defined to move to the Home position first (in Step 1) and then allow the other joints to follow in subsequent steps.

The Hordr instruction expects that a bit pattern be defined for each of the steps. Each joint is assigned a specific bit. When the bit is set to “1” for a specific step, then the corresponding joint will home. When the bit is cleared to “0”, then the corresponding axis will not home during that step. The joint bit patterns are assigned as follows:

Joint:

Bit

Number:

Binary

Code:

1 bit 0

2 bit 1

3 bit 2

4 bit 3

&B0001 &B0010 &B0100 &B1000

5 bit 4

&B100

00

6 bit 5

&B100

000

7 bit 6

&B100

0000

8 bit 7

&B100

00000

9 bit 8

&B100

000000

338 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Hordr Statement

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

Home, HomeSet

Hordr Statement Example

Following are some command window examples for SCARA robots (including RS series, 4 axis robots):

This example defines the home order as J3 in the first step, J1 in second step, J2 in third step, and J4 in the fourth step. The order is specified with binary values.

>

hordr

&B0100, &B0001, &B0010, &B1000

This example defines the home order as J3 in the first step, then J1, J2 and J4 joints simultaneously in the second step. The order is specified with decimal values.

>

hordr

4, 11, 0, 0

This example displays the current home order in decimal numbers.

>

hordr

4, 11, 0, 0

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 339

Hordr Function

Hordr Function

Returns Hordr value for a specified step.

Syntax

Hordr

(

stepNumber

)

Parameters

stepNumber

Integer expression representing which Hordr step to retrieve.

Return Values

Integer containing the Hordr value for the specified step.

See Also

Home, HomeSet

Hordr Function Example

Integer a a =

Hordr

(1)

340 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Hour Statement

Hour Statement

Displays the accumulated controller operating time.

Syntax

Hour

Description

Displays the amount of time the controller has been turned on and running SPEL. (Accumulated Operating

Time) Time is always displayed in units of hours.

See Also

Time

Hour Statement Example

The following example is done from the Command window:

>

hour

2560

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 341

Hour Function

Hour Function

Returns the accumulated controller operating time.

Syntax

Hour

Return Values

Returns accumulated operating time of the controller (real number, in hours).

See Also

Time

Hour Function Example

Print "Number of controller operating hours: ",

Hour

342 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

If…Then…Else…EndIf Statement

If…Then…Else…EndIf Statement

Executes instructions based on a specified condition.

Syntax

(1)

If

condition

Then

stmtT1

.

.

[ElseIf

condition

Then]

stmtT1

.

.

[Else]

stmtF1

.

.

EndIf

(2)

If

condition

Then

stmtT1

[;

stmtT2

...] [Else

stmtF1

[;

stmtF2

...]]

Parameters

condition

Any valid test condition which returns a True (any number besides “0”) or False result

(returned as a “0”). (See sample conditions below)

stmtT1 stmtF1

Executed when the condition is True. (Multiple statements may be put here in a blocked

If...Then...Else style.)

Executed when the condition is False. (Multiple statements may be put here in a blocked

If...Then...Else style.)

Description

(1) If...Then...Else executes stmtT1, etc. when the conditional statement is True. If the condition is False then stmtF1, etc. are executed. The Else portion of the If...Then...Else instruction is optional. If you omit the Else statement and the conditional statement is False, the statement following the EndIf statement will be executed. For blocked If...Then...Else statements the EndIf statement is required to close the block regardless of whether an Else is used or not.

(2) If...Then...Else can also be used in a non blocked fashion. This allows all statements for the

If...Then...Else to be put on the same line. Please note that when using If...Then...Else in a non blocked fashion, the EndIf statement is not required. If the If condition specified in this line is satisfied (True), the statements between the Then and Else are executed. If the condition is not satisfied (False), the statements following Else are executed. The Else section of the If...Then...Else is not required. If there is no Else keyword then control passes on to the next statement in the program if the If condition is

False.

The logical output of the conditional statement is any number excluding “1” when it is True, and “0” when it is false.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 343

If…Then…Else…EndIf Statement

Notes

Sample Conditions:

a = b a < b a >= b a <> b a > b a <= b

:a is equal to b

:b is larger than a

:a is greater than or equal to b

:a is not equal to b

:b is smaller than a

:a is less than or equal to b

Logical operations And, Or and Xor may also be used.

True in the Conditions:

Constant True is

1 and the type is Boolean, so you need to be careful when using it in a comparing condition with other type variable.

Function main

Integer i

i = 3

If i = True Then

Print "i=TRUE"

EndIf

Fend

When you execute the program above, “i=TRUE” is displayed.

The judgement of condition including the Boolean type is done with “0” or “non-0”.

If the value of “i” is not “0”, it is considered that the condition is established and “i=TRUE” is displayed.

See Also

Else, Select...Case, Do...Loop

If/Then/Else Statement Example

<Single Line If...Then...Else>

The following example shows a simple function which checks an input to determine whether to turn a specific output on or off. This task could be a background I/O task which runs continuously.

Function main

Do

If

Sw(0) = 1

Then

On 1

Else

Off 1

Loop

Fend

344 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

If…Then…Else…EndIf Statement

<Blocked If...Then...Else>

The following example shows a simple function which checks a few inputs and prints the status of these inputs

If

Sw(0) = 1

Then

Print "Input0 ON"

Else

Print "Input0 OFF"

'

If

Sw(1) = 1

Then

If

Sw(2) = 1

Then

Print "Input1 On and Input2 ON"

Else

Print "Input1 On and Input2 OFF"

EndIf

Else

If

Sw(2) = 1

Then

Print "Input1 Off and Input2 ON"

Else

Print "Input1 Off and Input2 OFF"

EndIf

EndIf

<Other Syntax Examples>

If

x = 10 And y = 3

Then

GoTo 50

If

test <= 10

Then

Print "Test Failed"

If

Sw(0) = 1 Or Sw(1) = 1

Then

Print "Everything OK"

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 345

ImportPoints Statement

ImportPoints Statement

Imports a point file into the current project for the specified robot.

Syntax

ImportPoints

sourcePath, filename

[

, robotNumber

]

Parameters

sourcePath

String expression containing the specific path and file to import into the current project. The extension can be “.pts” or “.pnt” (EPSON RC+ 3.x and 4.x format).

See ChDisk for the details.

fileName robotNumber

String expression containing the specific file to be imported to in the current project for the current robot. The extension must be “.pts”.

You cannot specify a file path and fileName doesn’t have any effect from ChDisk.

See ChDisk for the details.

Optional. Integer expression that specifies which robot the point file should be associated with. If robotNumber = 0, then the point file is imported as a common point file. If robotNumber is omitted, the current robot number is used.

Description

ImportPoints copies a point file into the current project and adds it to the project files for the specified robot. The point file is then compiled and is ready for loading using the LoadPoints command. If the file already exists for the current robot, it will be overwritten and recompiled.

The point data is stored in the Compact Flash inside of the controller. Therefore, ImportPoints starts writing into the Compact Flash. Frequent writing into the Compact Flash will shorten the Compact Flash lifetime. We recommend using ImportPoints only for saving the point data.

Potential Errors

File Does Not Exist

If

sourcePath

does not exist, an error will occur.

A Path Cannot be Specified

If

fileName

contains a path, an error will occur.

Point file for another robot.

If

fileName

is a point file for another robot, an error will occur.

See Also

LoadPoints, Robot, SavePoints

ImportPoints Statement Example

Function main

Robot 1

ImportPoints

"c:\mypoints\model1.pts", "robot1.pts"

LoadPoints "robot1.pts"

Fend

346 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

In Function

In Function

Returns the status of the specified Byte port. Each port contains 8 input channels.

Syntax

In

(byte

portNumber

)

Parameters

byteportNumber

Integer number representing one eight bit port (one byte).

Return Values

Returns an integer value between 0 and 255. The return value is 8 bits, with each bit corresponding to 1 input channel.

Description

In provides the ability to look at the value of 8 input channels at the same time. The In instruction can be used to store the 8 I/O channels status into a variable or it can be used with the Wait instruction to Wait until a specific condition which involves more than 1 I/O channel is met.

Since 8 channels are checked at a time, the return values range from 0 to 255. Please review the chart below to see how the integer return values correspond to individual input channels.

Input Channel Result (Using Byte port #0)

Return Values 7 6 5 4 3 2 1 0

1

5

15

255

Off Off Off Off Off Off Off On

Off Off Off Off Off On Off On

Off Off Off Off On On On On

On On On On On On On On

Input Channel Result (Using Byte port #2)

Return Values 23 22 21 20 19 18 17 16

3

7

32

255

Off Off Off Off Off Off On On

Off Off Off Off Off On On On

Off Off On Off Off Off Off Off

On On On On On On On On

See Also

InBCD, MemIn, MemOff, MemOn, MemSw, Off, On, OpBCD, Oport, Out, Sw, Wait

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 347

In Function

In Function Example

For the example below let’s assume that input channels 20, 21, 22, and 23 are all connected to sensory devices such that the application should not start until each of these devices are returning an On signal indicating everything is OK to start. The program example gets the 8 input channels status of byte port 2 and makes sure that channels 20, 21, 22, and 23 are each On before proceeding. If they are not On (i.e. returning a value of 1) an error message is given to the operator and the task is stopped.

In the program, the variable “var1” is compared against the number 239 because in order for inputs 20, 21,

22, and 23 to all be On, then the result of In(2) will be 240 or larger. (We don’t care about Inputs 16, 17,

18, and 19 in this case so any values between 240-255 will allow the program to proceed.)

Function main

Integer var1

var1 =

In

(2) '

Get 8 input channels status of byte port 2

If var1 > 239 Then

Go P1

Go P2

'Execute other motion statements here

'.

'.

Else

Print "Error in initialization!"

Print "Sensory Inputs not ready for cycle start"

Print "Please check inputs 20,21,22, and 23 for"

Print "proper state for cycle start and then"

Print "start program again"

EndIf

Fend

We cannot set inputs from the command window but we can check them. For the examples shown below, we will assume that the Input channels 1, 5, and 15 are On. All other inputs are Off.

> print

In

(0)

34

> print

In

(1)

128

> print

In

(2)

0

348 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

InBCD Function

InBCD Function

Returns the input status of 8 inputs using BCD format. (Binary Coded Decimal)

Syntax

InBCD(

portNumber

)

Parameters

portNumber

Integer number representing one eight bit port (one byte).

Return Values

Returns as a Binary Coded Decimal (0-9), the input status of the input port (0 to 99).

Description

InBCD simultaneously reads 8 input lines using the BCD format. The

portNumber

parameter for the

InBCD instruction defines which group of 8 inputs to read where

portNumber

= 0 means inputs 0 to 7,

portNumber

= 1 means inputs 8 to 15, etc.

The resulting value of the 8 inputs is returned in BCD format. The return value may have 1 or 2 digits between 0 and 99. The 1st digit (or 10's digit) corresponds to the upper 4 outputs of the group of 8 outputs selected by

portNumber

. The 2nd digit (or 1’s digit) corresponds to the lower 4 outputs of the group of 8 outputs selected by

portNumber

.

Since valid entries in BCD format range from 0 to 9 for each digit, every I/O combination cannot be met.

The able below shows some of the possible I/O combinations and their associated return values assuming that

portNumber

is 0.

Input Settings (Input number)

Return Values 7

09

10

11

99

01

02

03

08

6 5 4 3 2 1 0

Off Off Off Off Off Off Off On

Off Off Off Off Off Off On Off

Off Off Off Off Off Off On On

Off Off Off Off On Off Off Off

Off Off Off Off On Off Off On

Off Off Off On Off Off Off Off

Off Off Off On Off Off Off On

On Off Off On On Off Off On

Notice that the Binary Coded Decimal format only allows decimal values to be specified. This means that through using Binary Coded Decimal format it is impossible to retrieve a valid value if all inputs for a specific port are turned on at the same time when using the InBCD instruction. The largest value possible to be returned by InBCD is 99. In the table above it is easy to see that when 99 is the return value for

InBCD, all inputs are not on. In the case of a return value of 99, inputs 0, 3, 4, and 7 are On and all the others are Off.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 349

InBCD Function

Note

Difference between InBCD and In

The InBCD and In instructions are very similar in the SPEL

+

language. However, there is one major difference between the two. This difference is shown below:

- The InBCD instruction uses the Binary Coded Decimal format for specifying the return value format for the 8 inputs. Since Binary Coded Decimal format precludes the values of &HA, &HB, &HC,

&HD, &HE or &HF from being used, all combinations for the 8 inputs cannot be satisfied.

- The In instruction works very similarly to the InBCD instruction except that In allows the return value for all 8 inputs to be used. (i.e. 0 to 255 vs. 0 to 99 for InBCD) This allows all possible combinations for the 8 bit input groups to be read.

See Also

In, MemOff, MemOn, MemOut, MemSw, Off, On, OpBCD, Oport, Out, Sw, Wait

InBCD Function Example

Some simple examples from the Command window are as follows:

Assume that inputs 0, 4, 10, 16, 17, and 18 are all On (The rest of the inputs are Off).

> Print

InBCD

(0)

11

> Print

InBCD

(1)

04

> Print

InBCD

(2)

07

>

350 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Inertia Statement

Inertia Statement

Specifies load inertia and eccentricity for current robot.

Syntax

Inertia

[

loadInertia

] [,

eccentricity

]

Inertia

Parameters

loadInertia eccentricity

Optional. Real expression that specifies total moment of inertia in kgm2 around the center of the end effector joint, including end effector and part.

Optional. Real expression that specifies eccentricity in mm around the center of the end effector joint, including end effector and part.

Return Values

When parameters are omitted, the current Inertia parameters are displayed.

Description

Use the Inertia statement to specify the total moment of inertia for the load on the end effector joint. This allows the system to more accurately compensate acceleration, deceleration, and servo gains for end effector joint. You can also specify the distance from the center of end effector joint to the center of gravity of the end effector and part using the

eccentricity

parameter.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

Inertia Function

Inertia Statement Example

Inertia

0.02, 1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 351

Inertia Function

Inertia Function

Returns inertia parameter value.

Syntax

Inertia(

paramNumber

)

Parameters

paramNumber

Integer expression which can have the following values:

0: Causes function to return “1” if robot supports inertia parameters or “0” if not.

1: Causes function to return load inertia in kgm 2 .

2: Causes function to return eccentricity in mm.

Return Values

Real value of the specified setting.

See Also

Inertia Statement

Inertia Function Example

Real loadInertia, eccentricity loadInertia =

Inertia

(1) eccentricity =

Inertia

(2)

352 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

InPos Function

Returns the position status of the specified robot.

Syntax

InPos

Return Values

True if position has been completed successfully, otherwise False.

See Also

CurPos, FindPos, WaitPos

InPos Function Example

Function main

P0 = XY(0, -100, 0, 0)

P1 = XY(0, 100, 0, 0)

Xqt MonitorPosition

Do

Jump P0

Wait .5

Jump P1

Wait .5

Loop

Fend

Function MonitorPosition

Boolean oldInPos, pos

Do

Pos =

InPos

If pos <> oldInPos Then

Print "InPos = ", pos

EndIf

oldInPos = pos

Loop

Fend

InPos Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 353

Input Statement

Input Statement

Receives input data from the display device and stored in a variable(s).

Syntax

Input

varName

[

, varName, varName,...

]

Parameters

varName

Variable name. Multiple variables can be used with the Input command as long as they are separated by commas.

Description

Input receives data from the display device and assigns the data to the variable(s) used with the Input instruction.

When executing the Input instruction, a “?” prompt appears at the display device. After inputting data press the return key (Enter) on the keyboard.

Notes

Rules for Numeric Input

When inputting numeric values and non-numeric data is found in the input other than the delimiter

(comma), the Input instruction discards the non-numeric data and all data following that non-numeric data.

Rules for String Input

When inputting strings, numeric and alpha characters are permitted as data.

Other Rules for the Input Instruction

- When more than one variable is specified in the instruction, the numeric data input intended for each variable has to be separated by a comma (",") character.

- Numeric variable names and string variable names are allowed. However, the input data type must match the variable type.

Potential Error

Number of variables and input data differ

For multiple variables, the number of input data must match the number of Input variable names. When the number of the variables specified in the instruction is different from the number of numeric data received from the keyboard, an Error 2505 will occur.

See Also

Input #, Line Input, Line Input #, Print, String

354 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Input Statement Example

This is a simple program example using Input statement.

Function InputNumbers

Integer A, B, C

Print "Please enter 1 number"

Input

A

Print "Please enter 2 numbers separated by a comma"

Input

B, C

Print "A = ", A

Print "B = ", B, "C = ", C

Fend

A sample session of the above program running is shown below:

(Use the Run menu or F5 key to start the program)

Please enter 1 number

?-10000

Please enter 2 numbers separated by a comma

?25.1, -99

-10000

25.1 -99

B = 25.1 C = -99

>

Input Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 355

Input # Statement

Input # Statement

Allows string or numeric data to be received from a file, communications port, or database and stored in one or more variables.

Syntax

Input

#

portNumber, varName

[

, varName, varName,...

]

Parameters

#portNumber

The ID number that specifies a file, communication port, database, or device. The

File number can be specified in ROpen, WOpen, and AOpen statements.

Communication port number can be specified in OpenCom (RS-232C) and OpenNet

(TCP/IP) statements.

The database number can be specified in OpenDB statement.

Device ID is:

21 RC+

24 TP (TP1 only)

20 TP3

varName

Variable name to receive the data.

Description

The Input # instruction receives numeric or string data from the device specified by

handle

, and assigns the data to the variable(s).

Notes

Rules for Numeric Input

When inputting numeric values and non-numeric data is found in the input other than the delimiter

(comma), the Input instruction discards the non-numeric data and all data following that non-numeric data.

Rules for String Input

When inputting strings, numeric and alpha characters are permitted as data.

Maximum data length

This command can handle up to 256 bytes.

However, the target is the database, it can handle up to 4096 bytes.

If the target is the communication port (TCP/IP), it can handle up to 1024 bytes.

Other Rules for the Input Instruction

- When more than one variable is specified in the instruction, the numeric data input intended for each variable has to be separated by a comma (",") character or blank (“ ”).

- When more than one string variable or both of numeric variable and string variable is specified, the numeric data has to be separated by a comma (“,”) character or blank (“ “).

- The input data type must match the variable type.

The following programs are examples to exchange the string variable and numeric variable between the controllers using a communication port.

Sending end (Either pattern is OK.)

Print #PortNum, "$Status,", InData, OutData

Print #PortNum, "$Status", ",",InData, OutData

Receiving end

Input

#PortNum, Response$, InData, OutData

356 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Input # Statement

Potential Error

Number of variables and input data differ

When the number of the variables specified in the instruction is different from the number of numeric data received from the device, an Error 2505 will occur.

See Also

Input, Line Input, Line Input #, Print #

Input # Statement Example

This function shows some simple Input # statement examples.

Function GetData

Integer A

String B$

OpenCom #1

Print #1, "Send"

Input #

1, A ' Get a numeric value from Port#1

Input #

1, B$ '

Get a string from Port#1

CloseCom #1

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 357

InputBox Statement

InputBox Statement

Displays a prompt in a dialog box, waits for the operator to input text or choose a button, and returns the contents of the box.

Syntax

InputBox

prompt, title, default, data$

Parameters

prompt title

String expression displayed as a message in the dialog box.

String expression displayed in the title bar of the dialog box.

default

String expression displayed in the text box as the default response. If no default is desired, use an empty string (“”).

data$

A string variable which will contain what the operator entered. If the operator clicks

Cancel, this string will be “@”.

Description

InputBox displays the dialog and waits for the operator to click OK or Cancel.

data

is a string that contains what the operator typed in.

See Also

MsgBox

InputBox Statement Example

This function shows an InputBox example.

Function GetPartName$ As String

String prompt$, title$, data$

prompt$ = "Enter " + Chr$(34) + "part name" + Chr$(34) + ":"

title$ = "Sample Application"

InputBox prompt$, title$, "", data$

If data$ <> "@" Then

GetPartName$ = data$

EndIf

Fend

The following picture shows the example output from the InputBox example code shown above.

358 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

InReal Function

InReal Function

Returns the input data of 2 words (32 bits) as the floating-point data (IEEE754 compliant) of 32 bits.

Syntax

InReal

(

WordPortNumber

)

Parameters

WordPortNumber

Integer expression representing the I/O Input Word.

Return Values

Returns the input port status in Real type number.

Description

From the input word port specified by the word port number, retrieve the 2 input word values as IEEE754

Real type value. Input word label can be used for the word port number parameter.

InReal Function cannot be used for the Wait command, or the condition of Till, Find, Sense.

See Also

In, InW, InBCD, Out, OutW, OpBCD, OutReal

InW Function Example

Real realVal realVal =

InReal

(32)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 359

InsideBox Function

InsideBox Function

Returns the check status of the approach check area.

Syntax

InsideBox

(

AreaNum [, robotNumber | All]

)

Parameters

AreaNum

Integer expression from 1 to 15 representing which approach check area to return status for.

robotNumber

Integer value that contains the robot number you want to search.

If omitted, the current robot will be specified.

If you specify All, True is returned if one robot is in the check area.

Return Values

True if the robot end effector approaches the specified approach check area, otherwise False.

See Also

Box, BoxClr, BoxDef, GetRobotInsideBox, InsidePlane

Note

You can use the Wait statement with InsideBox to wait for the result of the InsideBox function in EPSON

RC+ 5.0. However, you cannot use it in EPSON RC+ 6.0 and 7.0.

In this case, use the GetRobotInsideBox function instead of the InsideBox function.

Correspondence table

RC+ version

Robot

Controller

Wait

Till, Find,

Sense, Trap

Other commands

(such as Print)/ branch decision processing

Use of

GetRobotInsideBox

Function

RC+ 7.0

RC+ 7.0

RC700

RC90

Not available Not available

Not available Not available

Available

Available

All available

All available

RC+ 6.0 RC620 Not available Not available Available All available

RC+ 5.0 RC90 Available

Not available: Unavailable combination

Not available Available Not available

Available: Available combination

All available: Available for Wait, Till, Find, Sense, Trap, Print, and branch decision processing.

InsideBox Function Example

The following program checks Robot 1 is in the check area (Box 3) or not.

Function PrintInsideBox

If

InsideBox

(3,1) = True Then

Print “Inside Box3”

Else

Print “Outside Box3”

EndIf

Fend

360 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

InsidePlane Function

InsidePlane Function

Returns the check status of the approach check plane.

Syntax

InsidePlane

(

PlaneNum

[

, robotNumber | All

])

Parameters

PlaneNum

Integer expression from 1 to 15 representing which approach check plane to return status for.

robotNumber

Integer value that contains the robot number you want to search.

If omitted, the current robot will be specified.

If you specify All, True is returned if one robot is in the check area.

Return Values

True if the robot end effector approaches the specified approach check plane, otherwise False.

See Also

InsideBox, GetRobotInsidePlane, Plane, PlaneClr, PlaneDef

Note

You can use the Wait statement with InsidePlane to wait for the result of the InsidePlane function in

EPSON RC+ 5.0. However, you cannot use it in EPSON RC+ 6.0 and 7.0.

In this case, use the GetRobotInsidePlane function instead of the InsidePlane function.

Correspondence table

RC+ version

Robot

Controller

Wait

Till, Find,

Sense, Trap

Other commands

(such as Print)/ branch decision processing

Use of

GetRobotInsidePlane

Function

RC+ 7.0

RC+ 7.0

RC700

RC90

Not available Not available

Not available Not available

Available

Available

All available

All available

RC+ 6.0 RC620 Not available Not available Available All available

RC+ 5.0 RC90 Available

Not available: Unavailable combination

Not available Available Not available

Available: Available combination

All available: Available for Wait, Till, Find, Sense, Trap, Print, and branch decision processing.

InsidePlane Function Example

This is an example to check Robot 1 is in the check plane (Plane 3).

Function PrintInsidePlane

If InsidePlane(3,1) = True Then

Print “Inside Plane3”

Else

EndIf

Print “Outside Plane3”

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 361

InStr Function

InStr Function

Returns position of one string within another.

Syntax

InStr

(

string, searchString

)

Parameters

string searchString

String expression to be searched.

String expression to be searched for within

string

.

Return Values

Returns the position of the search string if the location is found, otherwise -1.

See Also

Mid$

Instr Function Example

Integer pos pos =

InStr

("abc", "b")

362 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Int Function

Int Function

Converts a Real number to Integer. Returns the largest integer that is less than or equal to the specified value.

Syntax

Int

(number)

Parameters

number

A real number expression.

Return Values

Returns an Integer value of the real number used in

number

.

Description

Int(

number

) takes the value of

number

and returns the largest integer that is less than or equal to

number

.

Note

For Values Less than 1 (Negative Numbers)

If the parameter

number

has a value of less than 1 then the return value have a larger absolute value than

number

. (For example, if number = -1.35 then -2 will be returned.)

See Also

Abs, Atan, Atan2, Cos, Mod, Not, Sgn, Sin, Sqr, Str$, Tan, Val

Int Function Example

Some simple examples from the Command window are as follows:

> Print

Int

(5.1)

5

> Print

Int

(0.2)

0

> Print

Int

(-5.1)

-6

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 363

Int32 Statement

Int32 Statement

Declares variables of Int32 type. (4 byte integer type variable).

Syntax

Int32

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]...]

Parameters

varName subscripts

Variable name which the user wants to declare.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Int32 is used to declare variables as type integer. Integer variables can contain values from -2147483648 to

2147483647. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

See Also

Boolean, Byte, Double, Global, Int64, Integer, Long, Real, Short, String, UByte, UInt32, UInt64,

UShort

Int32 Statement Example

The following example shows a simple program that declares some variables using Int32.

Function int32test

Int32

A(10) ' Single dimension array of Int32

Int32

B(10, 10) ' Two dimension array of Int32

Int32

C(5, 5, 5) '

Three dimension array of Int32

Int32

var1, arrayvar(10)

Integer i

Print "Please enter an Integer Number"

Input var1

Print "The Integer variable var1 = ", var1

For i = 1 To 5

Print "Please enter an Integer Number"

Input arrayvar(i)

Print "Value Entered was ", arrayvar(i)

Next i

Fend

364 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Int64 Statement

Int64 Statement

Declares variables of Int64 type. (8 byte integer type variable).

Syntax

Int64

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]...]

Parameters

varName

Variable name which the user wants to declare.

subscripts

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Int64 is used to declare variables as type integer. Integer variables can contain values from

-9223372036854775808 to 9223372036854775807. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

See Also

Boolean, Byte, Double, Global, Int32, Integer, Long, Real, Short, String, UByte, UInt32, UShort

UInt64

Int64 Statement Example

The following example shows a simple program that declares some variables using Int64.

Function int64test

Int64

A(10) ' Single dimension array of Int64

Int64

B(10, 10) ' Two dimension array of Int64

Int64

C(5, 5, 5) '

Three dimension array of Int64

Int64

var1, arrayvar(10)

Integer i

Print "Please enter an Integer Number"

Input var1

Print "The Integer variable var1 = ", var1

For i = 1 To 5

Print "Please enter an Integer Number"

Input arrayvar(i)

Print "Value Entered was ", arrayvar(i)

Next i

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 365

Integer Statement

Integer Statement

Declares variables of Integer type. (2 byte integer type variable).

Syntax

Integer

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]...]

Parameters

varName

Variable name which the user wants to declare as type integer.

subscripts

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Integer is used to declare variables as type integer. Variables of type integer can contain whole numbers with values from -32768 to 32767. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

See Also

Boolean, Byte, Double, Global, Int32, Int64, Long, Real, Short, String, UByte, UInt32, UInt64,

UShort

Integer Statement Example

The following example shows a simple program that declares some variables using Integer.

Function inttest

Integer

A(10) ' Single dimension array of integer

Integer

B(10, 10) ' Two dimension array of integer

Integer

C(5, 5, 5) '

Three dimension array of integer

Integer

var1, arrayvar(10)

Integer

i

Print "Please enter an Integer Number"

Input var1

Print "The Integer variable var1 = ", var1

For i = 1 To 5

Print "Please enter an Integer Number"

Input arrayvar(i)

Print "Value Entered was ", arrayvar(i)

Next i

Fend

366 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

InW Function

Returns the status of the specified input word port. Each word port contains 16 input bits.

Syntax

InW

(

WordPortNum

)

Parameters

WordPortNum

Integer expression representing the I/O Input Word.

Return Values

Returns the current status of inputs (long integers from 0 to 65535).

Note

Rule of word port which contains the input bit of Real Time I/O

Word ports =1, 3, 17, 19 return the state of the input port with an integer from 0 to 255.

The input bit of the Real Time I/O is not reflected.

See Also

In, Out, OutW

InW Function Example

Long word0 word0 =

InW

(0)

InW Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 367

IODef Function

IODef Function

Returns whether the specified input or output bit, byte, word, or I/O label are defined.

Syntax

IODef

(

IOType, IOWidth, portNumber

)

IODef

(

IOlabel

)

Parameters

IOType

Integer expression representing the type of I/O.

0 - Input

1 - Output

2 - Memory

IOWidth

Integer expression representing the width of the port: 1(bit), 8 (byte), or 16 (word).

portNumber

Integer expression representing the bit, byte, or word port number to return the label for.

IOlabel

String expression that specifies the standard I/O or memory I/O label.

Return Values

True if the specified input or output bit, byte, word or the I/O label are defined, otherwise False.

See Also

IOLabel$, IONumber

IODef Function Example

Integer i

For i = 0 To 15

If

IODef

( 0, 1, i) = TRUE Then

Print “Port “ , i, “ is defined”

Else

Print “Port “ , i, “ is undefined”

EndIf

Next i

368 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

IOLabel$ Function

IOLabel$ Function

Returns the I/O label for a specified input or output bit, byte, or word.

Syntax

IOLabel$

(

IOType, IOWidth, portNumber

)

Parameters

IOType

Integer expression representing the type of I/O.

0 - Input

1 - Output

2 - Memory

IOWidth

Integer expression representing the width of the port: 1(bit), 8 (byte), or 16 (word).

portNumber

Integer expression representing the bit, byte, or word port number to return the label for.

Return Values

String containing the label.

See Also

PLabel$, IONumber, IODef

IOLabel$ Function Example

Integer i

For i = 0 To 15

Print "Input ", i, ": ",

IOLabel$

(0, 1, i)

Next i

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 369

IONumber Function

IONumber Function

Returns the I/O number of the specified I/O label.

Syntax

IONumber

(

IOlabel

)

Parameters

IOlabel

String expression that specifies the standard I/O or memory I/O label.

Return Values

Returns the I/O port number (bit, byte, word) of the specified I/O label. If there is no such I/O label, an error will be generated.

See Also

IOLabel$, IODef

IONumber Function Example

Integer IObit

IObit =

IONumber

("myIO")

IObit =

IONumber

("Station" + Str$(station) + "InCycle")

370 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

J1Angle Statement

J1Angle Statement

Sets the J1Angle attribute of a point.

Syntax

(1)

J1Angle

point

[,

Step

]

(2)

J1Angle

Parameters

point

Step

P

number

or

P

(

expr

) or point label.

Optional. Real value that specifies the set value.

Result

The J1Angle attribute can be used for the RS and N robot series.

If

Step

is omitted, the J1Angle value for the specified point will be displayed.

If both parameters are omitted, the J1Angle value of the current robot position will be displayed.

RS series: Specify the angle of the Joint #1 when both X and Y coordinate values of a point are “0”

(singularity). For other robot series points, J1Angle has no meaning.

N series: Specify the angle of the Joint #1 when the axis centers of “Joint #1, #4, and #6”, “Joint #1 and #6”, or “Joint #1 and #4” are on the straight line. For other robot series points (not singularity), J1Angle has no meaning.

See Also

Hand, J1Angle Function, J1Flag, J2Flag, J4Angle, J4Angle Function

J1Angle Statement Example

J1Angle

P0, 10.0

J1Angle

P(mypoint), 0.0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 371

J1Angle Function

J1Angle Function

Returns the J1Angle attribute of a point.

Syntax

J1Angle

[(

point

)]

Parameters

point

Point expression

Optional. If omitted, returns the J1Angle setting of the current robot position.

Return Values

The J1Angle attribute can be used for the RS and N robot series.

Returns the angle of Joint 1 when both X and Y coordinate values of a point are “0” (singularity) in a real value. The J1Angle attribute can be used for the RS series.

RS series: Returns an integer value representing the angle of the Joint #1 when both X and Y coordinate values of a point are “0” (singularity).

N series: Returns an integer value representing the angle of the Joint #1 when the axis centers of

“Joint #1, #4, and #6”, “Joint #1 and #6”, or “Joint #1 and #4” are on the straight line.

See Also

Hand, J1Angle, J1Flag, J2Flag, J4Angle, J4Angle Function

J1Angle Function Example

Print

J1Angle

(pick)

Print

J1Angle

(P1)

Print

J1Angle

372 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

J1Flag Statement

J1Flag Statement

Specifies the J1Flag attribute of a point.

Syntax

(1)

J1Flag

point

[,

value

]

(2)

J1Flag

Parameters

point value

P

number

or

P

(

expr

) or point label.

Optional.

Integer expression.

For RS series Manipulator:

0 (/J1F0) J1 range is -90 to +270 degrees

1 (/J1F1) J1 range is from -270 to -90 or +270 to +450 degrees

For C8, C12 series Manipulator:

0 (/J1F0) J1 range is 0 to -180 or 0 to +180 degrees

1 (/J1F1) J1 range is -180 to -240 or +180 to -240 degrees

Return Values

The J1Flag attribute specifies the range of values for joint 1 for one point. If

value

is omitted, the J1Flag value for the specified point is displayed. When both parameters are omitted, the J1Flag value is displayed for the current robot position.

See Also

Hand, J1Flag Function, J2Flag

J1Flag Statement Example

J1Flag

P0, 1

J1Flag

P(mypoint), 0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 373

J1Flag Function

J1Flag Function

Returns the J1Flag attribute of a point.

Syntax

J1Flag

[

(

point

)

]

Parameters

point

Optional. Point expression. If position is returned.

point

is omitted, then the J1Flag setting of the current robot

Return Values

0 /J1F0

1 /J1F1

See Also

Hand, J1Flag Statement, J2Flag

J1Flag Function Example

Print

J1Flag

(pick)

Print

J1Flag

(P1)

Print

J1Flag

Print

J1Flag

(Pallet(1, 1))

374 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

J2Flag Statement

J2Flag Statement

Sets the J2Flag attribute of a point.

Syntax

(1)

J2Flag

point

[,

value

]

(2)

J2Flag

Parameters

point value

P

number

or

P

(

expr

) or point label.

Optional.

Integer expression.

0 (/J2F0) J2 range is -180 to +180 degrees

1 (/J2F1) J2 range is from -360 to -180 or +180 to +360 degrees

Return Values

The J2Flag attribute specifies the range of values for joint 2 for one point. If

value

is omitted, the J2Flag value for the specified point is displayed. When both parameters are omitted, the J2Flag value is displayed for the current robot position.

See Also

Hand, J1Flag, J2Flag Function

J2Flag Statement Example

J2Flag

P0, 1

J2Flag

P(mypoint), 0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 375

J2Flag Function

J2Flag Function

Returns the J2Flag attribute of a point.

Syntax

J2Flag

[

(

point

)

]

Parameters

point

Optional. Point expression. If position is returned.

point

is omitted, then the J2Flag setting of the current robot

Return Values

0 /J2F0

1 /J2F1

See Also

Hand, J1Flag, J2Flag Statement

J2Flag Function Example

Print

J2Flag

(pick)

Print

J2Flag

(P1)

Print

J2Flag

Print

J2Flag

(P1 + P2)

376 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

J4Angle Statement

J4Angle Statement

Sets the J4Angle attribute of a point.

Syntax

(1) J4Angle

point

[,

value

]

(2) J4Angle

Parameters

point value

P

number

or

P

(

expr

) or point label.

Optional.

Integer expression.

Result

The J4Angle attribute is used only for N robot series.

It specifies the angle of the Joint #4 when the axis centers of the Joint #4 and #6 are on the straight line.

If the point is not singularity, J4Angle has no meaning.

If

value

is omitted, the J4Angle value for the specified point is displayed. When both parameters are omitted, the J4Angle value is displayed for the current robot position.

See Also

Hand, J1Angle, J1Angle Function, J4Angle Function

Note

When both J4Flag and J4Angle are used, J4Angle is prioritized as follows:

J4Angle P0,0

J4Flag P0,1

J4Angle Example

J4Angle

P0, 10.0

J4Angle

P(mypoint), 0.0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 377

J4Angle Function

J4Angle Function

Returns the J4Angle attribute of a point.

Syntax

J4Angle [(

point

)]

Parameters

point

Optional. Point expression. If robot position is returned.

point

is omitted, then the J4Angle setting of the current

Return Values

Returns an integer value representing the angle of the Joint #4 when the axis centers of the Joint #4 and #6 are on the straight line.

The J4Angle attribute is used only for N robot series.

See Also

Hand, J1Angle, J1Angle Function, J4Angle

J4Angle Function Example

Print

J4Angle

(pick)

Print

J4Angle

(P1)

Print

J4Angle

378 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

J4Flag Statement

J4Flag Statement

Sets the J4Flag attribute of a point.

Syntax

(1)

J4Flag

point

[,

value

]

(2)

J4Flag

Parameters

point value

P

number

or

P

(

expr

) or point label.

Optional.

Integer expression.

0 (/J4F0) J4 range is -180 to +180 degrees

1 (/J4F1) J4 range is from -360 to -180 or +180 to +360 degrees

Return Values

The J4Flag attribute specifies the range of values for joint 4 for one point. If

value

is omitted, the J4Flag value for the specified point is displayed. When both parameters are omitted, the J4Flag value is displayed for the current robot position.

See Also

Elbow, Hand, J4Flag Function, J6Flag, Wrist

J4Flag Statement Example

J4Flag

P0, 1

J4Flag

P(mypoint), 0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 379

J4Flag Function

J4Flag Function

Returns the J4Flag attribute of a point.

Syntax

J4Flag

[

(

point

)

]

Parameters

point

Return Values

0 /J4F0

1 /J4F1

Optional. Point expression. If

point

is omitted, then the J4Flag setting of the current robot position is returned.

See Also

Elbow, Hand, Wrist, J4Flag Statement, J6Flag

J4Flag Function Example

Print

J4Flag

(pick)

Print

J4Flag

(P1)

Print

J4Flag

Print

J4Flag

(Pallet(1, 1))

380 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

J6Flag Statement

J6Flag Statement

Sets the J6Flag attribute of a point.

Syntax

(1)

J6Flag

point

[,

value

]

(2)

J6Flag

Parameters

point value

P

number

or

P

(

expr

) or point label.

Integer expression. Range is 0 - 127 (/J6F0 to /J6F127). J6 range for the specified point is as follows:

( -180 * (

value

+1) < J6 <= 180 *

value

) and ( 180 *

value

< J6 <= 180 * (

value

+1) )

Return Values

The J6Flag attribute specifies the range of values for joint 6 for one point. If

value

is omitted, the J6Flag value for the specified point is displayed. When both parameters are omitted, the J6Flag value is displayed for the current robot position.

See Also

Elbow, Hand, J4Flag, J6Flag Function, Wrist

Note

Range of J6Flag differs depending on manipulator models

C4 : 0 - 127 (/J6F0 to /J6F127)

C8, C12 : 0 - 81 (/J6F0 to /J6F81)

N2

N6

: 0 - 40 (/J6F0 to /J6F40)

: 0 - 61 (/J6F0 to /J6F61)

J6Flag Statement Example

J6Flag

P0, 1

J6Flag

P(mypoint), 0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 381

J6Flag Function

J6Flag Function

Returns the J6Flag attribute of a point.

Syntax

J6Flag

[

(

point

)

]

Parameters

point

Optional. Point expression. If position is returned.

point

is omitted, then the J6Flag setting of the current robot

Return Values

0 to 127 /J6F0 to /J6F127

See Also

Elbow, Hand, Wrist, J4Flag, J6Flag

J6Flag Function Example

Print

J6Flag

(pick)

Print

J6Flag

(P1)

Print

J6Flag

Print

J6Flag

(P1 + P2)

382 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

JA Function

JA Function

Returns a robot point specified in joint angles.

Syntax

JA (

j1

,

j2

,

j3

,

j4

[,

j5

,

j6

] [,

j7

] [,

j8

,

j9

]

)

Parameters

j1 – j9

Real expressions representing joint angles.

For linear joints, specifies in units of mm. j5 and j6 are for the 6-axis robot (including N series) and Joint type 6-axis robot. j7 is for the Joint type 7-axis robot. j8 and j9 are for the additional ST axis.

Note

If the angle exceeding the motion range is specified, an out of range error occurs.

Return Values

A robot point whose location is determined by the specified joint angles.

Description

Use JA to specify a robot point using joint angles.

When the points returned from JA function specify a singularity of the robot, the joint angles of the robot do not always agree with the joint angles supplied to the JA function as arguments during the execution of a motion command for the points. To operate the robot using the joint angles specified for the JA function, avoid a singularity of the robot.

For example:

> go ja(0,0,0,90,0,-90)

> where

WORLD: X: 0.000 mm Y: 655.000 mm Z: 675.000 mm U: 0.000 deg

V: -90.000 deg W: -90.000 deg

JOINT: 1: 0.000 deg 2: 0.000 deg 3: 0.000 deg 4: 0.000 deg

5: 0.000 deg 6: 0.000 deg

PULSE: 1: 0 pls 2: 0 pls 3: 0 pls 4: 0 pls

5: 0 pls 6: 0 pls

> go ja(0,0,0,90,0.001,-90)

> where

WORLD: X: -0.004 mm Y: 655.000 mm Z: 675.000 mm U: 0.000 deg

V: -90.000 deg W: -89.999 deg

JOINT: 1: 0.000 deg 2: 0.000 deg 3: 0.000 deg 4: 90.000 deg

5: 0.001 deg 6: -90.000 deg

PULSE: 1: 0 pls 2: 0 pls 3: 0 pls 4: 2621440 pls

5: 29 pls 6: -1638400 pls

See Also

AglToPls, XY

JA Function Example

P10 =

JA

(60, 30, -50, 45)

Go

JA

(135, 90, -50, 90)

P3 = JA(0, 0, 0, 0, 0, 0)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 383

Joint Statement

Joint Statement

Displays the current position for the robot in joint coordinates.

Syntax

Joint

See Also

Pulse, Where

Joint Statement Example

>

joint

JOINT: 1: -6.905 deg 2: 23.437 deg 3: -1.999 mm 4: -16.529 deg

>

384 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

JRange Statement

JRange Statement

Defines the permissible working range of the specified joint in pulses.

Syntax

JRange

jointNumber, lowerLimit, upperLmit

Parameters

jointNumber

Integer expression from 1 to 9 representing the joint for which JRange will be specified.

The additional S axis is 8 and T axis is 9.

lowerLmit

Long integer expression representing the encoder pulse count position for the lower limit range of the specified joint.

upperLmit

Long Integer expression representing the encoder pulse count position for the upper limit range of the specified joint.

Description

Defines the permissible working range for the specified joint with upper and lower limits in encoder pulse counts. JRange is similar to the Range command. However, the Range command requires that all joint range limits be set while the JRange command can be used to set each joint working limits individually thus reducing the number of parameters required. To confirm the defined working range, use the Range command.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Notes

Lower Limits Must Not Exceed Upper Limits:

The Lower limit defined in the JRange command must not exceed the Upper limit. A lower limit in excess of the Upper limit will cause an error, making it impossible to execute a motion command.

Factors Which can Change JRange:

Once JRange values are set they remain in place until the user modifies the values either by the Range or

JRange commands. Turning controller power off will not change the JRange joint limit values.

Maximum and Minimum Working Ranges:

Refer to the specifications in the Robot manual for maximum working ranges for each robot model since these vary from model to model.

See Also

Range, JRange Function

JRange Statement Example

The following examples are done from the Command window:

' Define the 2nd joint range >

JRange

2, -6000, 7000

>

JRange

1, 0, 7000 ' Define the 1st joint range

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 385

JRange Function

JRange Function

Returns the permissible working range of the specified joint in pulses.

Syntax

JRange

(

jointNumber, paramNumber

)

Parameters

jointNumber

Specifies reference joint number (integer from 1 to 9) by an expression or numeric value.

paramNumber

The additional S axis is 8 and T axis is 9.

Integer expression containing one of two values:

1: Specifies lower limit value.

2: Specifies upper limit value.

Return Values

Range configuration (integer value, pulses) of the specified joint.

See Also

Range, JRange Statement

JRange Function Example

Long i, oldRanges(3, 1)

For i = 0 To 3

oldRanges(i, 0) =

JRange

(i + 1, 1)

oldRanges(i, 1) =

JRange

(i + 1, 2)

Next i

386 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

JS Function

JS Function

Jump Sense detects whether the arm stopped prior to completing a Jump, Jump3, JumpTLZ , or Jump3CP instruction which used a Sense input or if the arm completed the move.

Syntax

JS

Return Values

Returns a True or a False.

True : When the arm was stopped prior to reaching its target destination because a Sense Input condition was met JS returns a True.

False : When the arm completes the normal move and reaches the target destination as defined in the Jump instruction JS returns a False.

Description

JS is used in conjunction with the Jump and Sense instructions. The purpose of the JS instruction is to provide a status result as to whether an input condition (as defined by the Sense instruction) is met during motion caused by the Jump instruction or not. When the input condition is met, JS returns a True. When the input condition is not met and the arm reaches the target position, JS returns a False.

JS is simply a status check instruction and does not cause motion or specify which Input to check during motion. The Jump instruction is used to initiate motion and the Sense instruction is used to specify which

Input (if any) to check during Jump initiated motion.

Note

JS Works only with the Most Recent Jump, Jump3, JumpTLZ, Jump3CP Instruction:

JS can only be used to check the most recent Jump instruction's input check (which is initiated by the Sense instruction.) Once a 2nd Jump instruction is initiated, the JS instruction can only return the status for the

2nd Jump instruction. The JS status for the first Jump is gone forever. So be sure to always do any JS status check for Jump instructions immediately following the Jump instruction to be checked.

See Also

JT, Jump, Jump3, Jump3CP, JumpTLZ, Sense

JS Function Example

Function SearchSensor As Boolean

Sense Sw(5) = On

Jump P0

Jump P1 Sense

If

JS

= TRUE Then

Print "Sensor was found"

SearchSensor = TRUE

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 387

JT Function

JT Function

Returns the status of the most recent Jump, Jump3, JumpTLZ, or Jump3CP instruction for the current robot.

Syntax

JT

Return Values

JT returns a long with the following bits set or clear:

Bit 0

Bit 1

Bit 2

Set to 1 when rising motion has started or rising distance is 0.

Set to 1 when horizontal motion has started or horizontal distance is 0.

Set to 1 when descent motion has started or descent distance is 0.

Bit 16 Set to 1 when rising motion has completed or rising distance is 0.

Bit 17 Set to 1 when horizontal motion has completed or horizontal distance is 0.

Bit 18 Set to 1 when descent motion has completed or descent distance is 0.

Description

Use JT to determine the status of the most recent Jump command that was stopped before completion by

Sense, Till, abort, etc.

See Also

JS, Jump, Jump3, Jump3CP, JumpTLZ, Sense, Till

JT Function Example

Function SearchTill As Boolean

Till Sw(5) = On

Jump P0

Jump P1 Till

If

JT

And 4 Then

Print "Motion stopped during descent"

SearchTill = TRUE

EndIf

Fend

388 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

JTran Statement

JTran Statement

Perform a relative move of one joint.

Syntax

JTran

jointNumber, distance

Parameters

jointNumber

Integer expression representing which joint to move.

The additional S axis is 8 and T axis is 9.

distance

Real expression representing the distance to move in degrees for rotational joints or millimeters for linear joints.

Description

Use JTran to move one joint a specified distance from the current position.

See Also

Go, Jump, Move, Ptran

JTran Statement Example

JTran

1, 20

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 389

Jump Statement

Jump Statement

Moves the arm from the current position to the specified destination point using point to point motion by first moving in a vertical direction up, then horizontally and then finally vertically downward to arrive on the final destination point.

Syntax

Jump

destination

[,

C

archNumber

] [,

LimZ

[zLimit]

] [, CP] [, PerformMode

modeNumber

]

[,

searchExpr

] [,

!...!

] [,

SYNC

]

Parameters

destination

The target destination of the motion using a point expression.

archNumber

Optional. The arch number (

archNumber

) specifies which Arch Table entry to use for the Arch type motion caused by the Jump instruction.

archNumber

must always be proceeded by the letter C. (Valid entries are from C0 to C7.)

zLimit

Optional. This is a Z limit value which represents the maximum position the Z joint will travel to during the Jump motion. This can be thought of as the Z Height Ceiling for the

Jump instruction. Any valid Z joint Coordinate value is acceptable.

PerformMode Optional. Specify the robot performance mode.

modeNumber

Specify the operation mode assigned to

PerformMode

with an integer value (1 to 3) or with the following constant. If

PerformMode

is specified, this parameter cannot be omitted.

Constant Value Description

Mode_Standard

Mode_High_Speed

Mode_Low_Oscillation

1

2

3

Sets the Standard mode

Sets the High-speed mode

Sets the Low-oscillation mode

CP

searchExpr

!...!

Optional. Specifies continuous path motion.

Optional. A Sense, Till or Find expression.

Sense

|

Till

|

Find

Sense Sw

(

expr

) = {

On

|

Off

}

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Optional. Parallel Processing statements can be added to the Jump instruction to cause

I/O and other commands to execute during motion.

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Jump moves the arm from the current position to

destination

using what is called Arch Motion. Jump can be thought of as 3 motions in 1. For example, when the Arch table entry defined by

archNumber

is 7, the following 3 motions will occur.

1) The move begins with only Z-joint motion until it reaches the Z joint height calculated by the Arch number used for the Jump command.

2) Next the arm moves horizontally (while still moving upward in Z) towards the target point position until the upper Z Limit (defined by LimZ ) is reached. Then the arm begins to move downward in the Z direction (while continuing X, Y and U joint motion) until the final X, and Y and U joint positions are reached.

3) The Jump instruction is then completed by moving the arm down with only Z-joint motion until the target Z-joint position is reached.

390 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Jump Statement

The coordinates of

destination

(the target position for the move) must be taught previously before executing the Jump instruction. The coordinates cannot be specified in the Jump instruction itself.

Acceleration and deceleration for the Jump is controlled by the Accel instruction. Speed for the move is controlled by the Speed instruction.

T he Jump instruction cannot be executed for the vertical 6-axis robots (including N series). Use the Jump3 instruction.

CP Details

The CP parameter causes acceleration of the next motion command to start when the deceleration starts for the current motion command. In this case the robot will not stop at the destination coordinate and will continue to move to the next point.

archNumber

Details

The Arch for the Jump instruction can be modified based on the

archNumber

value optionally specified with the Jump instruction. This allows the user to define how much Z to move before beginning the X, Y, and U joint motion. (This allows the user to move the arm up and out of the way of parts, feeders and other objects before beginning horizontal motion.) Valid

archNumber

entries for the Jump instruction are between C0 and C7. The Arch table entries for C0 to C6 are user definable with the Arch instruction.

However, C7 is a special Arch entry which always defines what is called Gate Motion. Gate Motion means that the robot first moves Z all the way to the coordinate defined by LimZ before beginning any X, Y, or U joint motion. Once the LimZ Z limit is reached, X, Y and U joint motion begins. After the X, Y, and U joints each reaches its final destination position, then the Z joint can begin moving downward towards the final Z joint coordinate position as defined by

destination

(the target point). Gate Motion looks as follows:

LIMZ

Origin Pt.

Destination Pt.

Pend

LimZ Details

LimZ

zLimit

specifies the upper Z coordinate value for the horizontal movement plane in the current local coordinate system. The specified arch settings can cause the X, Y, and U joints to begin movement before reaching LimZ, but LimZ is always the maximum Z height for the move. When the LimZ optional parameter is omitted, the previous value specified by the LimZ instruction is used for the horizontal movement plane definition.

It is important to note that the LimZ

zLimit

height limit specification is the Z value for the local robot coordinate system. It is not the Z value for Arm or Tool. Therefore take the necessary precautions when using tools or hands with different operating heights.

Sense Details

The Sense optional parameter allows the user to check for an input condition or memory I/O condition before beginning the final Z motion downward. If satisfied, this command completes with the robot stopped above the target position where only Z motion is required to reach the target position. It is important to note that the robot arm does not stop immediately upon sensing the Sense input modifier.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 391

Jump Statement

The JS or Stat commands can then be used to verify whether the Sense condition was satisfied and the robot stopped prior to its target position or that the Sense condition was not satisfied and the robot continued until stopping at its target position.

Till Details

The optional Till qualifier allows the user to specify a condition to cause the robot to decelerate to a stop prior to completing the Jump. The condition specified is simply a check against one of the I/O inputs or one of the memory I/O. This is accomplished through using either the Sw or MemSw function. The user can check if the input is On or Off and cause the arm to decelerate and stop based on the condition specified.

The Stat function can be used to verify whether the Till condition has been satisfied and this command has been completed, or the Till condition has not been satisfied and the robot stopped at the target position.

Deceleration motion and acceleration motion of different modes can be combined when

PerformMode

is set while the path motion is enabled. Some combinations are not available depending on operation modes.

For details, refer to

PerformMode Statement.

Notes

Jump cannot be executed for 6-axis robots (including N series)

Use Jump3 or Jump3CP for 6-axis robots.

Omitting

archNumber

Parameters

If the archNumber optional parameter is omitted, the default Arch entry for use with the Jump instruction is

C7. This will cause Gate Motion, as described above.

Difference between Jump and Jump3, Jump3CP

The Jump3 and Jump3CP instructions can be used for 6-axis robots (including N series). On the other hand the Jump instruction cannot be used for 6-axis robots. For SCARA robots (including RS series), using the

Jump instruction shortens the joint motion time for depart and approach motion. The depart and approach motions in Jump3 can be executed along the Z axis and in other directions.

Difference between Jump and Go

The Go instruction is similar to Jump in that they both cause Point to Point type motion, however there are many differences. The most important difference is that the Go instruction simply causes Point to Point motion where all joints start and stop at the same time (they are synchronized). Jump is different since it causes vertical Z movement at the beginning and end of the move. Jump is ideal for pick and place type applications.

Decelerating to a Stop With the Jump Instruction

The Jump instruction always causes the arm to decelerate to a stop prior to reaching the destination point.

Proper Speed and Acceleration Instructions with Jump:

The Speed and Accel instructions are used to specify the speed and acceleration of the robot during Jump motion. Pay close attention to the fact that Speed and Accel apply to point to point type motion (Go, Jump,

Etc.). while linear and circular interpolated motion instructions such as Move or Arc use the SpeedS and

AccelS instructions. For the Jump instruction, it is possible to separately specify speeds and accelerations for Z joint upward motion, horizontal travel including U joint rotation, and Z joint downward motion.

392 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Jump Statement

Pass function of Jump

When the CP parameter is specified for Jump with 0 downward motion, the Jump horizontal travel does not decelerate to a stop but goes on smoothly to the next PTP motion.

When the CP parameter is specified for a PTP motion command right before a Jump with 0 upward motion, the PTP motion does not decelerate to a stop but connects smoothly with the Jump horizontal travel.

This is useful when you want to replace the horizontal travel of Jump (a PTP motion) with several PTP motions.

(Example)

Go P1

Jump P2 :Z(-50) C0 LimZ -50 CP

Go P3 :Z(0) CP

P3

Jump P4 C0 LimZ 0

P2

P4

P1

Caution for Arch motion

Jump motion trajectory is comprised of vertical motion and horizontal motion. It is not a continuous path trajectory. The actual Jump trajectory of arch motion is not determined by Arch parameters alone. It also depends on motion and speed.

Always use care when optimizing Jump trajectory in your applications. Execute Jump with the desired motion and speed to verify the actual trajectory.

When speed is lower, the trajectory will be lower. If Jump is executed with high speed to verify an arch motion trajectory, the end effector may crash into an obstacle with lower speed.

In a Jump trajectory, the depart distance increases and the approach distance decreases when the motion speed is set high. When the fall distance of the trajectory is shorter than the expected, lower the speed and/or the deceleration, or change the fall distance to be larger.

Even if Jump commands with the same distance and speed are executed, the trajectory is affected by motion of the robot arms. As a general example, for a SCARA robot the vertical upward distance increases and the vertical downward distance decreases when the movement of the first arm is large. When the vertical fall distance decreases and the trajectory is shorter than the expected, lower the speed and/or the deceleration, or change the fall distance to be larger.

Potential Errors

LimZ Value Not High Enough

When the current arm position of the Z joint is higher than the value set for LimZ and a Jump instruction is attempted, an Error 4005 will occur.

See Also

Accel, Arc, Arch, Go, JS, JT, LimZ, P#= (Point Assignment), PerformMode, Pulse, Sense, Speed,

Stat, Till

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 393

Jump Statement

Jump Statement Example

The example shown below shows a simple point to point move between points P0 and P1 and then moves back to P0 using the Jump instruction. Later in the program the arm moves using the Jump instruction. If input #4 never goes high then the arm starts the approach motion and moves to P1. If input #4 goes high then the arm does not execute the approach motion.

Function jumptest

Home

Go P0

Go P1

Sense Sw(4) = On

Jump

P0 LimZ -10

Jump

P1 LimZ -10 Sense ' Check input #4

If Js(0) = 1 Then

Print "Input #4 came on during the move and"

Print "the robot stopped prior to arriving on"

Print "point P1."

Else

Print "The move to P1 completed successfully."

Print "Input #4 never came on during the move."

EndIf

Fend

>

Jump

P10+X50 C0 LimZ-20 Sense !D50;On 0;D80;On 1!

394 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Jump3, Jump3CP Statements

Jump3, Jump3CP Statements

3D gate motion.

Jump3 is a combination of two CP motions and one PTP motion.

Jump3CP is a combination of three CP motions.

Syntax

(1)

Jump3

depart, approach, destination

[,

C

archNumber

] [,

CP

] [, LJM [,

orientationFlag

]] [,

searchExpr

] [,

!...!

] [,

SYNC

]

(2)

Jump3CP

depart, approach, destination

[,

ROT

] [,

C

archNumber

] [,

CP

] [, LJM [,

orientationFlag

]] [,

searchExpr

] [,

!...!

] [,

SYNC

]

Parameters

depart

The departure point above the current position using a point expression.

approach

The approach point above the destination position a point expression.

destination

The target destination of the motion using a point expression.

ROT

Optional. :Decides the speed/acceleration/deceleration in favor of tool rotation.

archNumber

Optional. The arch number (

archNumber

) specifies which Arch Table entry to use for the Arch type motion caused by the Jump instruction.

archNumber

must always be proceeded by the letter C. (Valid entries are C0 to C7.)

CP

LJM

Optional. Specifies continuous path motion.

Optional. Convert the target destination using LJM function.

orientationFlag

Optional. Specifies a parameter that selects an orientation flag for LJM function.

searchExpr

!...!

Optional. A Sense, Till or Find expression.

Sense

|

Till

|

Find

Sense Sw

(

expr

) = {

On

|

Off

}

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Optional. Parallel Processing statements can be added to the Jump instruction to cause

I/O and other commands to execute during motion.

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Moves the arm from the current position to the destination point with 3D gate motion. 3D gate motion consists of depart motion, span motion, and approach motion. The depart motion form the current position to the depart point is always CP motion. The span motion from the depart point to the start approach point is PTP motion in Jump3, and the CP motion in Jump3CP.

The approach motion from the starting approach point to the target point is always CP motion.

Span motion

PTP/CP

Approach point

Depart point

Approach motion

CP

Depart motion

CP

Destination point

Current position

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 395

Jump3, Jump3CP Statements

Arch motion is achieved by specifying the arch number. The arch motion for Jump3, Jump3CP is as shown in the figure below. For arch motion to occur, the Depart distance must be greater than the arch upward distance and the Approach distance must be greater than the arch downward distance.

Start approach point

Depart point

Approach distance

ARCH downward

Depart distance

ARCH Upward

Jump3CP uses the SpeedS speed value and AccelS acceleration and deceleration values. Refer to

Using

Jump3CP with CP

below on the relation between the speed/acceleration and the acceleration/deceleration.

If, however, the ROT modifier parameter is used, Jump3CP uses the SpeedR speed value and AccelR acceleration and deceleration values. In this case SpeedS speed value and AccelS acceleration and deceleration value have no effect.

Usually, when the move distance is 0 and only the tool orientation is changed, an error will occur.

However, by using the ROT parameter and giving priority to the acceleration and the deceleration of the tool rotation, it is possible to move without an error. When there is not an orientational change with the

ROT modifier parameter and movement distance is not 0, an error will occur.

Also, when the tool rotation is large as compared to move distance, and when the rotation speed exceeds the specified speed of the manipulator, an error will occur. In this case, please reduce the speed or append the ROT modifier parameter to give priority to the rotational speed/acceleration/deceleration.

Notes

LimZ does not affect Jump3 and Jump3CP

LimZ has no effect on Jump3 or Jump3CP since the span motion is not necessarily perpendicular to the Z axis of the coordinate system.

Jump3 span motion is PTP (point to point)

It is difficult to predict Jump3 span motion trajectory. Therefore, be careful that the robot doesn't collide with peripheral equipment and that robot arms don’t collide with the robot.

Using Jump3, Jump3CP with CP

The CP parameter causes the arm to move to

destination

without decelerating or stopping at the point defined by

destination

. This is done to allow the user to string a series of motion instructions together to cause the arm to move along a continuous path while maintaining a specified speed throughout all the motion. The Jump3 and Jump3CP instructions without CP always cause the arm to decelerate to a stop prior to reaching the point

destination

.

Pass function of Jump3

When the CP parameter is specified for Jump3 with 0 approach motion, the Jump3 span motion does not decelerate to a stop but goes on smoothly to the next PTP motion.

When the CP parameter is specified for a PTP motion command right before Jump3 with 0 depart motion, the PTP motion does not decelerate to a stop but connects smoothly with the Jump3 span motion.

This is useful when you want to replace the span motion of Jump3 (a PTP motion) with several PTP motions.

396 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Jump3, Jump3CP Statements

Pass function of Jump3CP

When the CP parameter is specified for Jump3CP with 0 approach motion, the Jump3CP span motion does not decelerate to a stop but goes on smoothly to the next CP motion.

When the CP parameter is specified for a CP motion command right before Jump3CP with 0 depart motion, the CP motion does not decelerate to a stop but connects smoothly with the Jump3CP span motion.

This is useful when you want to replace the span motion of Jump3CP (a CP motion) with several CP motions.

(Example 1)

Jump3 P1,P2,P2 CP

Go P3,P4 CP

Jump3 P4,P5,P5+tlz(50)

P1

P2

P3

P4

P5

(Example 2)

Jump3CP P1,P2,P2 CP

Move P3,P4 CP

Jump3CP P4,P5,P5+tlz(50)

Start End

Using Jump3, Jump3CP with LJM

With LJM parameter, the program using LJM function can be more simple.

For example, the following four-line program

P11 = LJM(P1, Here, 2)

P12 = LJM(P2, P11, 2)

P13 = LJM(P3, P12, 2)

Jump3 P11, P12, P13 can be… the one-line program.

Jump3 P1, P2, P3 LJM 2

LJM parameter is available for 6-axis (including N series) and RS series robots.

Jump3CP span motion is straight line (CP) motion and it cannot switch the wrist orientation along the way.

Therefore, do not use the

orientationFlag

(LJM 1) of LJM function which is able to switch the wrist orientation.

Caution for Arch motion

Jump3 Motion trajectory changes depending on motion and speed

Jump3 motion trajectory is comprised of depart, span, and approach motions. It is not a continuous path trajectory. The actual Jump3 trajectory of arch motion is not determined by Arch parameters alone. It also depends on motion and speed.

Always use care when optimizing Jump3 trajectory in your applications. Execute Jump3 with the desired motion and speed to verify the actual trajectory.

When speed is lower, the trajectory will be lower. If Jump3 is executed with high speed to verify an arch motion trajectory, the end effector may crash into an obstacle with lower speed.

In a Jump3 trajectory, the depart distance increases and the approach distance decreases when the motion speed is set high. When the approach distance of the trajectory is shorter than the expected, lower the speed and/or the deceleration, or change the approach distance to be larger.

Even if Jump commands with the same distance and speed are executed, the trajectory is affected by motion of the robot arms.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 397

Jump3, Jump3CP Statements

Potential acceleration errors

When the majority of depart (approach) motion uses the same joint as the span motion

An acceleration error may occur during an arch motion execution by the Jump3 and Jump3CP commands.

This error is issued frequently when the majority of the motion during depart or approach uses the same joint as the span motion. To avoid this error, reduce the acceleration/deceleration speed of the span motion using Accel command for Jump3 or using AccelS command for Jump3CP. Depending on the motion and orientation of the robot, it may also help to reduce the acceleration and deceleration of the depart motion

(approach motion) using the AccelS command.

See Also

Accel, Arc, Arch, Go, JS, JT, Point Expression, Pulse, Sense, Speed, Stat, Till

Jump3 Statement Example

' 6 axis robot (including N series) motion which works like Jump of SCARA robot

Jump3 Here :Z(100), P3 :Z(100), P3

' Depart and approach use Z tool coordinates

Jump3 Here -TLZ(100), P3 -TLZ(100), P3

' Depart uses base Z and approach uses tool Z

Jump3 Here +Z(100), P3 -TLZ(100), P3

Example for the depart motion from P1 in Tool 1 and the approach motion to P3 in Tool 2

Arch 0,20,20

Tool 1

Go P1

P2 = P1 -TLZ(100)

Tool 2

Jump3

P2, P3-TLZ(100), P3 C0

398 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

JumpTLZ Statement

JumpTLZ Statement

3D gate motion.

JumpTLZ is a combination of two CP motions and one PTP motion.

Syntax

JumpTLZ

destination, TLZ movement

[

,

C

archNumber

] [,

CP

] [, LJM [,

orientationFlag

]] [,

searchExpr

] [,

!...!

] [,

SYNC

]

Parameters

destination

The target destination of the motion using a point expression.

TLZ movement

The amount of movement in Z direction in Tool coordinate system. The is unit is [mm].

The Tool coordinate system for the currently used Tool number is used.

archNumber

Optional. The arch number (

archNumber

) specifies which Arch Table entry to use for the Arch type motion caused by the JumpTLZ instruction.

archNumber

must always be proceeded by the letter C. (Valid entries are C0 to C7.)

CP

LJM

Optional. Specifies continuous path motion.

Optional. Convert the target destination using LJM function.

orientationFlag

Optional. Specifies a parameter that selects an orientation flag for LJM function.

searchExpr

Optional. A Sense, Till or Find expression.

!...!

Sense

|

Till

|

Find

Sense Sw

(

expr

) = {

On

|

Off

}

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Optional. Parallel Processing statements can be added to the Jump3 and Jump3CP instruction to cause I/O and other commands to execute during motion.

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 399

JumpTLZ Statement

Description

Moves the arm from the current position to the destination point with 3D gate motion. 3D gate motion consists of depart motion, span motion, and approach motion. The depart motion form the current position to the depart point is always CP motion. The span motion from the depart point to the start approach point is PTP motion.

The depart point is a point moved from the current position with

TLZ amount

in the Z direction.

The robot posture at the depart point is same as the current position. (Posture may change if the robot passes the singularity or singularity neighborhood.)

The approach point is a point moved from the depart point in X and Y direction of the Tool coordinate system with move amount to approach to the destination point. The U, V, and W coordinates and the robot posture at the depart point and are the same as the current position. (Posture may change if the robot passes the singularity or singularity neighborhood)

Span motion

PTP

Approach point

Depart point

Approach motion

CP

Depart motion

CP

Destination point

Current position

Arch motion is achieved by specifying the arch number. For arch motion to occur, the Depart distance must be greater than the arch upward distance and the Approach distance must be greater than the arch downward distance.

Start approach point

Depart point

Approach distance

ARCH downward

Depart distance

ARCH Upward

Notes

LimZ does not affect JumpTLZ

LimZ has no effect on JumpTLZ since the span motion is not necessarily perpendicular to the Z axis of the coordinate system.

JumpTLZ span motion is PTP (point to point)

It is difficult to predict JumpTLZ span motion trajectory. Therefore, be careful that the robot doesn't collide with peripheral equipment and that robot arms don’t collide with the robot.

Difference between JumpTLZ and Jump3

JumpTLZ and Jump3 are different in the following points.

JumpTLZ:

The depart point must be in the Z direction from the current position.

The approach point must be in the Z direction from the destination point. Also, the approach distance cannot be specified.

400 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

JumpTLZ Statement

Different Tool coordinate systems cannot be selected for the depart, approach, and destination points.

(It is not possible to execute the depart motion in Tool1, and execute the approach motion in Tool2.)

Jump3:

The depart point can be anywhere.

The approach point can be anywhere.

Different Tool coordinate systems can be selected for the depart, approach, and destination points.

(It is possible to execute the depart motion in Tool1, and execute the approach motion in Tool2.)

Applicable manipulators

JumpTLZ is only available for N series.

Caution for Arch motion

JumpTLZ motion trajectory is comprised of depart, span, and approach motions. It is not a continuous path trajectory. The actual JumpTLZ trajectory of arch motion is not determined by Arch parameters alone. It also depends on motion and speed.

Always use care when optimizing JumpTLZ trajectory in your applications. Execute JumpTLZ with the desired motion and speed to verify the actual trajectory.

When speed is lower, the trajectory will be lower. If JumpTLZ is executed with high speed to verify an arch motion trajectory, the end effector may crash into an obstacle with lower speed.

In a JumpTLZ trajectory, the depart distance increases and the approach distance decreases when the motion speed is set high. When the approach distance of the trajectory is shorter than the expected, lower the speed and/or the deceleration, or change the approach distance to be larger.

Even if JumpTLZ commands with the same distance and speed are executed, the trajectory is affected by motion of the robot arms.

Potential acceleration errors

When the majority of depart (approach) motion uses the same joint as the span motion

An acceleration error may occur during an arch motion execution by the JumpTLZ command. This error is issued frequently when the majority of the motion during depart or approach uses the same joint as the span motion. To avoid this error, reduce the acceleration/deceleration speed of the span motion using Accel command for JumpTLZ. Depending on the motion and orientation of the robot, it may also help to reduce the acceleration and deceleration of the depart motion (approach motion) using the AccelS command.

See Also

Accel, Arc, Arch, Go, JS, JT, Point Expression, Pulse, Sense, Speed, Stat, Till

JumpTLZ Example

Move 100 mm upward from the current point in Z direction of the Tool coordinate system. Then, move to the target point (P0):

JumpTLZ P0, -100

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 401

LatchEnable Statement

LatchEnable Statement

Enables / Disables the latch function for the robot position by the R-I/O input.

Syntax

LatchEnable

{ On | Off }

Parameters

On | Off

On : Enables the latch function of the robot position.

Off : Disables the latch function of the robot position.

Result

When the parameter is omitted, displays that the current latch function is ON or OFF.

Description

Enables / Disables the latch function for the robot position using the trigger input signals connected to the

R-I/O. It latches the robot position with the first trigger input after you enable the latch function.

To repeatedly latch the robot position, execute LatchEnable Off and then execute LatchEnable On again.

To use the command repeatedly, it needs at least 60 ms interval for the each command processing time but you do not need to consider the command executing time.

Note

Before enabling the latch function, set the trigger input port and trigger signal logic using SetLatch.

See Also

LatchPos Function, LatchState Function, SetLatch

LatchEnable Statement Example

Function main

SetLatch 24, SETLATCH_TRIGGERMODE_LEADINGEDGE

LatchEnable

On ' Enables the latch function

Go P1

Wait LatchState = True '

Waits a trigger

Print LatchPos

LatchEnable

Off

'

'

Displays the latched position

Disables the latch function

Fend

402 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LatchState Function

LatchState Function

Returns the latch state of robot position using the R-I/O.

Syntax

LatchState

Return Values

Returns True when the robot position has been latched, False when the latch is not finished.

When confirmed the latch completion, acquires the latched position information by LatchPos Function.

See Also

LatchEnable, LatchPos Function, SetLatch, Wait

LatchState Function Example

Function main

SetLatch 24, SETLATCH_TRIGGERMODE_LEADINGEDGE

LatchEnable On '

Enables the latch function

Go P1

Wait

LatchState

= True '

Wait a trigger

Print LatchPos

LatchEnable Off

'

'

Display the latched position

Disable the latch function

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 403

LatchPos Function

LatchPos Function

Returns the robot position latched using the R-I/O input signal.

Syntax

LatchPos

([WithToolArm | WithoutToolArm])

Parameters

Optional. If omitted, WithToolArm is used.

Constant

WithToolArm

WithoutToolArm

Value

0

1

WithToolArm Constant value of 0.

Returns the position according to the Tool and Arm settings at function call.

WithoutToolArm Constant value of 0.1

Returns the position of Tool 0 and Arm 0, regardless of the Tool and Arm settings.

Return Values

Returns the robot position latched by the R-I/O input signal in point data.

Executing this function needs approx. 15 msec for processing.

When WithToolArm is specified, returns the position according to the Tool and Arm settings at function call.

When WithoutToolArm is specified, returns the position of Tool 0 and Arm 0, regardless of the Tool and

Arm settings.

See Also

LatchEnable, LatchState Function, SetLatch

LatchPos Function Example

Function main

SetLatch 24, SETLATCH_TRIGGERMODE_LEADINGEDGE

LatchEnable On ' Enables the latch function

Fend

Go P1

Wait LatchState = True ' Wait a trigger

Print

LatchPos

LatchEnable Off

'

'

Display the latched position

Disable the latch function

To assign the return value of LatchPos to the point data:

P2 =

LatchPos

404 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LCase$ Function

Returns a string that has been converted to lowercase.

Syntax

LCase$

(

string

)

Parameters

string

A valid string expression.

Return Values

The converted lower case string.

See Also

LTrim$, Trim$, RTrim$, UCase$

LCase$ Function Example

str$ = "Data" str$ =

LCase$

(str$) '

str$ = "data"

LCase$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 405

Left$ Function

Left$ Function

Returns a substring from the left side of a string expression.

Syntax

Left$

(string, count)

Parameters

string count

String expression from which the leftmost characters are copied.

The number of characters to copy from

string

starting with the leftmost character.

Return Values

Returns a string of the leftmost

number

characters from the character string specified by the user.

Description

Left$ returns the leftmost

number

characters of a string specified by the user. Left$ can return up to as many characters as are in the character string.

See Also

Asc, Chr$, InStr, Len, Mid$, Right$, Space$, Str$, Val

Left$ Function Example

The example shown below shows a program which takes a part data string as its input and parses out the part number, part name, and part count.

Function ParsePartData(DataIn$ As String, ByRef PartNum$ As String,

ByRef PartName$ As String, ByRef PartCount As Integer)

Integer pos

String temp$

pos = Instr(DataIn$, ",")

PartNum$ =

Left$

(DataIn$, pos - 1)

DataIn$ = Right$(datain$, Len(DataIn$) - pos)

pos = Instr(DataIn$, ",")

PartName$ =

Left$

(DataIn$, pos - 1)

PartCount = Val(Right$(datain$, Len(DataIn$) - pos))

Fend

Some other example results from the Left$ instruction from the Command window.

> Print

Left$

("ABCDEFG", 2)

AB

> Print

Left$

("ABC", 3)

ABC

406 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Len Function

Len Function

Returns the number of characters in a character string.

Syntax

Len

(string)

Parameters

string

String expression.

Return Values

Returns an integer number representing the number of characters in the

string

which was given as an argument to the Len instruction.

Description

Len returns an integer number representing the number of characters in a string specified by the user. Len will return values between 0 and 255 (since a string can contain between 0 and 255 characters).

See Also

Asc, Chr$, InStr, Left$, Mid$, Right$, Space$, Str$, Val

Len Function Example

The example shown below shows a program which takes a part data string as its input and parses out the part number, part name, and part count.

Function ParsePartData(DataIn$ As String, ByRef PartNum$ As String,

ByRef PartName$ As String, ByRef PartCount As Integer)

Integer pos

String temp$

pos = Instr(DataIn$, ",")

PartNum$ = Left$(DataIn$, pos - 1)

DataIn$ = Right$(datain$,

Len

(DataIn$) - pos)

pos = Instr(DataIn$, ",")

PartName$ = Left$(DataIn$, pos - 1)

PartCount = Val(Right$(datain$,

Len

(DataIn$) - pos))

Fend

Some other example results from the Len instruction from the command window.

> ?

len

("ABCDEFG")

7

> ?

len

("ABC")

3

> ?

len

("")

0

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 407

LimitTorque Statement

LimitTorque Statement

Sets / returns the upper limit torque value in High power mode.

Syntax

(1)

LimitTorque

AllMax

(2)

LimitTorque

j1Max, j2Max, j3Max, j4Max

(3)

LimitTorque

j1Max, j2Max, j3Max, j4Max, j5Max, j6Max

(4)

LimitTorque

Parameters

AllMax

Specify the upper limit torque value for all axes in high power mode by an integer number representing the percentage of the maximum momentary torque of each axis

j #n Max

Specify the upper limit torque value for axis #n in high power mode by an integer number representing the percentage of the maximum momentary torque of axis #n

Result

Returns the current LimitTorque value when the parameters are omitted.

Description

Sets the upper limit value of torque in high power mode. Normally, the maximum torque is set and there is no need to change this setting value. This statement is useful to restrict the torque not to exceed which is necessary for the specific motion in order to reduce damage to the manipulator and equipment caused by collision with peripherals.

The upper limit value is a peak torque in specific motion measured by PTRQ with allowance considering the variation added (approximately 10%).

The torque lower than the upper limit value in Low power mode cannot be set for this command. The minimum values vary for models and joints. Obtain the setting value and confirm the actual upper limit value after setting the value.

In any of the following cases, LimitTorque becomes the default value.

Controller startup

Motor On

SFree, SLock, or Brake is executed

Reset or Reset Error is executed

Task end by STOP switch or Quit All

Note

Too low LimitTorque setting

LimitTorque restricts the torque for the specific motion with the set torque restriction value as the upper limit value, regardless of the size of torque necessary for the motion to be executed with the set acceleration/deceleration. Therefore, if the motion requires larger torque than the set upper limit value, the robot may not move properly and cause vibrational motion, noise, or position deviation error and overrun.

Make sure to measure PTRQ before using the torque restriction function. If the above problems occur, set the upper limit value larger and adjust the value so that the manipulator can operate properly.

408 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimitTorque Statement

See Also

LimitTorque Function, Power, PTrq, RealTorque

LimitTorque Statement Example

Following is the example which operates the manipulator with the maximum torque of the Joint #1 at 80%.

Function main

Motor On

Power high

Speed 100; Accel 100,100

LimitTorque

80,100,100,100 '

Restricts the maximum torque of Joint #1 to 80%

Jump P1 ' Executes the Jump motion

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 409

LimitTorque Function

LimitTorque Function

Returns the setting value of LimitTorque command.

Syntax

LimitTorque

(jointNumber)

Parameters

jointNumber

Integer expression ranging from 1 to 9.

Additional S axis is 8, and T axis is 9.

Return Values

Returns an integer number representing the setting value of LimitTorque command.

See Also

LimitTorque

LimitTorque Function Example

Print

LimitTorque(1)

' Displays the LimitTorque value of the Joint #1.

410 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimitTorqueLP Statement

LimitTorqueLP Statement

Sets / returns the upper limit torque value in Low power mode.

Syntax

(1)

LimitTorqueLP

AllMax

(2)

LimitTorqueLP

j1Max, j2Max, j3Max, j4Max

(3)

LimitTorqueLP

j1Max, j2Max, j3Max, j4Max, j5Max, j6Max

(4)

LimitTorqueLP

Parameters

AllMax

Specify the upper limit torque value for all axes in low power mode by an integer number representing the percentage of the maximum momentary torque of each axis

j #n Max

Specify the upper limit torque value for axis #n in low power mode by an integer number representing the percentage of the maximum momentary torque of axis #n

Result

Returns the current LimitTorqueLP value when the parameters are omitted.

Displays the default value when the values are not changed by this command.

Description

Sets the upper limit value of torque in low power mode. Normally, the maximum torque is set and there is no need to change this setting value (the values vary depending on the robot models and axes. Approx. 15-

60%). This command is useful to restrict the torque not to exceed which is necessary for the normal motion in order to reduce damage to the manipulator and equipment caused by collision with peripherals.

The upper limit value is a peak torque in the motion measured by PTRQ with allowance considering the variation added (40% is recommended). To apply the same value to a different robot, add a further 10-20% allowance.

The PTRQ value considers the default maximum torque in low power mode as 1.0. For example, when the default value before change is 27% and the value measured by PTRQ is 0.43, the upper limit value is as follows: 27% × 0.43 × 1.4 = 16.25. Then, round up the value and set 17.

The value lower than 5% or larger than the default value cannot be set for this command. If these values are set, the setting values lower than 5 will be rounded up to 5, and the values exceeding the default value will be rounded down to the default. For instance, when “LimitTorqueLP 100”, the values are returned to the default for all joints because the default value is always less than 100.

Obtain the setting value and confirm the actual upper limit value after setting the value.

The LimitTorqueLP setting value is effective until the Controller is restarted.

Note

Too low LimitTorqueLP setting

LimitTorqueLP restricts the torque for the specific motion with the set torque restriction value as the upper limit value, regardless of the size of torque necessary for the motion to be executed with the set acceleration/deceleration. Therefore, if the motion requires larger torque than the set upper limit value, the robot may not move properly and cause position deviation error. Make sure to measure PTRQ before using the torque restriction function. If the above problem occurs, set the upper limit value larger and adjust the value so that the manipulator can operate properly.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 411

LimitTorqueLP Statement

See Also

LimitTorqueLP Function, PTRQ

LimitTorqueLP Example

Following is the example which operates the manipulator with the maximum torque of the Joint #1 at 10%.

Function main

Motor On

Power low

LimitTorqueLP 10,27,31,42 ' Restricts the maximum torque of the Joint #1 to 10%

Go P1

Fend

' Set the default value for other axes

'

Executes the Go motion

412 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimitTorqueLP Function

LimitTorqueLP Function

Returns the setting value of LimitTorqueLP command.

Syntax

LimitTorqueLP

(jointNumber)

Parameters

jointNumber

Integer expression ranging from 1 to 9.

Additional S axis is 8, and T axis is 9.

Return Values

Returns an integer number representing the setting value of LimitTorqueLP command.

See Also

LimitTorqueLP

Len Function Example

Print

LimitTorqueLP(1)

' Displays the LimitTorqueLP value of the Joint #1.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 413

LimitTorqueStop Statement

LimitTorqueStop Statement

Enables or disables the function to stop the robot when the upper limit torque is reached in High power mode.

Syntax

(1) LimitTorqueStop

status

(2) LimitTorqueStop

status

,

jointNumber

(3) LimitTorqueStop

Parameters

status jointNumber

On: Enables the function to stop the robot at the upper limit torque

Off: Disables the function to stop the robot at the upper limit torque

The joint number from 1 to 6.

(For SCARA robots, joint numbers are from 1 to 4)

Result

Returns the current LimitTorqueStop status if the parameter is omitted.

Description

LimitTorqueStop enables the function to stop the robot at the upper limit torque value in High power mode.

The robot immediately stops when it reaches the upper limit torque (default is 100%). Using this command together with the torque restriction function of LimitTorque provides the effect to reduce damage on the robot and peripherals at a collision in High power mode.

This function can be enabled or disabled for each joint or all joints. The default is “all joints off”.

The setting returns to the default at the Controller startup. In other cases, the setting does not change unless otherwise configured by this command explicitly.

When the upper limit torque is reached, Error 5040 “Motor torque output failure in high power state.” will be output and the robot will stop.

See Also

LimitTorque, LimitTorque Function

LimitTorqueStop Example

Following is the example which restricts the maximum torque of the Joint #1 at 30% and stops the robot immediately.

Function main

Motor On

Power high

Speed 20

Accel 20,20

LimitTorque 30,100,100,100 '

Restricts the maximum torque of the Joint #1 to 30%

LimitTorqueStop

On, 1

Go P1

'

'

Joint #1 immediately stops at the maximum torque

Executes the Go motion

Fend

414 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimitTorqueStop Function

LimitTorqueStop Function

Returns the setting value of LimitTorqueStop command.

Syntax

LimitTorqueStop

(jointNumber)

Parameters

jointNumber

Integer expression ranging from 1 to 6.

Return Values

Returns an integer number representing the setting value of LimitTorqueStop command.

0 = Off

1 = On

See Also

LimitTorqueStop

LimitTorqueStop Function Example

Print

LimitTorqueStop(1)

' Displays the LimitTorqueStop value of the Joint #1.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 415

LimitTorqueStopLP Statement

LimitTorqueStopLP Statement

Enables or disables the function to stop the robot when the upper limit torque is reached in Low power mode.

Syntax

(1) LimitTorqueStopLP

status

(2) LimitTorqueStopLP

status

,

jointNumber

(3) LimitTorqueStopLP

Parameters

status jointNumber

On: Enables the function to stop the robot at the upper limit torque

Off: Disables the function to stop the robot at the upper limit torque

The joint number from 1 to 6.

(For SCARA robots, joint numbers are from 1 to 4)

Result

Returns the current LimitTorqueStopLP status if the parameter is omitted.

Description

LimitTorqueStopLP enables the function to stop the robot at the upper limit torque value in Low power mode. The robot immediately stops when it reaches the upper limit torque. Using this command together with the torque restriction function of LimitTorqueLP provides the effect to reduce damage on the robot and peripherals at a collision in Low power mode.

This function can be enabled or disabled for each joint or all joints. The default is “all joints off”.

The setting returns to the default at the Controller startup. In other cases, the setting does not change unless otherwise configured by this command explicitly.

When the upper limit torque is reached, Error 5041 “Motor torque output failure in low power state.” will be output and the robot will stop.

See Also

LimitTorqueLP, LimitTorqueLP Function

LimitTorqueStopLP Example

Following is the example which restricts the maximum torque of the Joint #3 at 15% and stops the robot immediately.

Function main

Motor On

Power low

LimitTorqueLP 20,27,15,42 ' Restricts the maximum torque of the Joint #3 to 15%

LimitTorqueStop

LP On, 3

Go P1

Fend

' Set the default value for other axes

'

Joint #3 immediately stops at the maximum torque

' Executes the Go motion

416 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimitTorqueStopLP Function

LimitTorqueStopLP Function

Returns the setting value of LimitTorqueStopLP command.

Syntax

LimitTorqueStopLP

(jointNumber)

Parameters

jointNumber

Integer expression ranging from 1 to 6.

Return Values

Returns an integer number representing the setting value of LimitTorqueStopLP command.

0 = Off

1 = On

See Also

LimitTorqueStopLP

LimitTorqueStopLP Function Example

Print

LimitTorqueStopLP(3)

' Displays the LimitTorqueStopLP value of the Joint #3.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 417

LimZ Statement

LimZ Statement

Determines the default value of the Z joint height for Jump commands.

Syntax

(1)

LimZ

zLimit

(2)

LimZ

Parameters

zLimit

A coordinate value within the movable range of the Z joint.

Return Values

Displays the current LimZ value when parameter is omitted.

Description

LimZ determines the maximum Z joint height which the arm move to when using the Jump instruction, wherein the robot arm raises on the Z joint, moves in the X-Y plane, then lowers on the Z joint. LimZ is simply a default Z joint value used to define the Z joint ceiling position for use during motion caused by the

Jump instruction. When a specific LimZ value is not specified in the Jump instruction, the last LimZ setting is used for the Jump instruction.

Notes

Resetting LimZ to 0

Restarting the controller, or executing the SFree, SLock, Motor On commands will initialize LimZ to 0.

LimZ Value is Not Valid for Arm, Tool, or Local Coordinates:

LimZ Z joint height limit specification is the Z joint value for the robot coordinate system. It is not the Z joint value for Arm, Tool, or Local coordinates. Therefore take the necessary precautions when using tools or end effectors with different operating heights.

LimZ does not affect Jump3 and Jump3CP

LimZ has no effect on Jump3 or Jump3CP since the span motion is not necessarily perpendicular to the Z axis of the coordinate system.

See Also

Jump

LimZ Statement Example

The example below shows the use of LimZ in Jump operations.

Function main

LimZ

-10 '

Set the default LimZ value

Jump P1 ' Move up to Z=-10 position for Jump

Jump P2

LimZ

-20 ' Move up to Z=-20 position for Jump

Jump P3 ' Move up to Z=-10 position for Jump

Fend

418 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimZ Function

Returns the current LimZ setting.

Syntax

LimZ

Return Values

Real number containing the current LimZ setting.

See Also

LimZ Statement

LimZ Function Example

Real savLimz savLimz =

LimZ

LimZ -25

Go pick

LimZ savLimZ

LimZ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 419

LimZMargin Statement

LimZMargin Statement

Sets and returns the setting value for error detection when operation starts at higher than the LimZ value.

Syntax

(1)

LimZMargin

LimZmargin

(2)

LimZMargin

Parameters

LimZmargin

a margin value for LimZ error detection

Return Values

If the parameter is omitted, current LimZMargin value will be returned.

Description

When Jump command is executed, Joint #3 lifts up to the position set by LimZ. However, if the start position of the joint is above the LimZ position, an error will occur. LimZMargin sets a margin value for the error detection. Default is 0.02 mm.

Note

Resetting LimZ to default

Restarting the controller, or executing the SFree, SLock, Motor On commands will initialize LimZ to the default value.

See Also

LimZMargin Function, LimZ

LimZ Statement Example

Following is a usage example of LimZMargin in Jump operation.

Function main

LimZ -10 ' sets LimZ default value

LimZMargin

0.03 ' sets 0.03 mm for a margin of LimZ error detection

Jump P1 ' horizontal movement with -10 at Jump execution

Jump P2 LimZ -20 ' horizontal movement with -20 at Jump execution

Jump P3 ' horizontal movement with -10 at Jump execution

Fend

420 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LimZMargin Function

Returns the current LimZMargin setting.

Syntax

LimZMargin

Return Values

Real number containing the current LimZMargin setting.

See Also

LimZMargin Statement, LimZ Statement

LimZ Function Example

Real savLimzMargin savLimzZMargin =

LimZMargin

LimZMargin 0.03

Jump pick

LimZ savLimZMargin

LimZMargin Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 421

Line Input Statement

Line Input Statement

Reads input data of one line and assigns the data to a string variable.

Syntax

Line Input

stringVar$

Parameters

stringVar$

A string variable name. (the string variable must end with the $ character.)

Description

Line Input reads input data of one line from the display device and assigns the data to the string variable used in the Line Input instruction. When the Line Input instruction is ready to receive data from the user, it causes a “?” prompt to be displayed on the display device. The input data line after the prompt is then received as the value for the string variable. After inputting the line of data press the [ENTER] key.

See Also

Input, Input #, Line Input#, ParseStr

Line Input Statement Example

The example below shows the use of Line Input.

Function Main

String A$

Line Input

A$ ' Read one line input data into A$

Print A$

Fend

Run the program above using the F5 key or Run menu from EPSON RC+ main screen. A resulting run session may be as follows:

?A, B, C

A, B, C

422 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Line Input # Statement

Line Input # Statement

Reads data of one line from a file, communication port, database, or the device.

Syntax

Line Input

#portNumber, stringVar$

Parameters

portNumber

ID number representing a file, communications port, database, or device.

File number can be specified in ROpen, WOpen, and AOpen statements.

Communications port number can be specified in OpenCom (RS232) and OpenNet

(TCP/IP) statements.

Database number can be specified in OpenDB statement.

stringVar$

Device ID integers are as follows.

21 RC+

23 OP

24 TP (TP1 only)

20 TP3

A string variable. (string variables must end with a $ character.)

Description

Line Input # reads string data of one line from the device specified with the portNumber parameter, and assigns the data to the string variable

stringVar$.

See Also

Input, Input #, Line Input

Line Input # Statement Example

This example receives the string data from the communication port number 1, and assigns the data to the string variable A$.

Function lintest

String a$

Print #1, "Please input string to be sent to robot"

Line Input

#1, a$

Print "Value entered = ", a$

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 423

LJM Function

LJM Function

Returns the point data with the orientation flags converted to enable least joint motion when moving to a specified point based on the reference point.

Syntax

LJM

(

Point

[,

refPoint

[,

orientationFlag

] ])

Parameters

Point refPoint

Specifies point data.

Specifies the reference point data. When this is omitted, the reference point is the current position (Here).

orientationFlag

6-axis robot 1: Converts the wrist orientation (Wrist Flag), J4Flag, J6Flag or J1Flag so that

Joint #4 will be the shortest movement. This is the default setting when

orientationFlag”

is omitted.

2: Converts the J4Flag or J6Flag.

3: Converts the wrist orientation (Wrist Flag), J4Flag, J6Flag or J1Flag so that

Joint #5 will be the shortest movement.

4: Converts the wrist orientation (Wrist Flag), J4Flag, J6Flag or J1Flag so that

Joint #6 will be the shortest movement.

“orientation

Flag”

1

2

3

4

Hand orientation

Elbow orientation

Wrist orientation J1Flag J4Flag J6Flag

Priority order of axis with the shortest movement

-

-

-

-

-

-

-

-

-

J4

-

J5

J6

Note: Orientation of “ ” is the same as the orientation specified by “

refPoint

”.

RS series

N2 series

1: Converts the hand orientation (Hand Flag), J1Flag or J2Flag. This is the default setting when “

orientationFlag”

is omitted.

2: Converts the hand orientation (Hand Flag), J1Flag or J2Flag. Prevents the U axis from moving out of motion range at “

orientationFlag

” convert.

1: Converts to the posture with minimum joint movement in priority order of

Joint #1 and Joint #5. The target postures are hand orientation (Hand Flag), elbow orientation (Elbow Flag), wrist orientation (Wrist Flag), J4Flag, and

J6Flag. The elbow orientation (Elbow Flag) is always above elbow orientation. This is the default setting when “

orientationFlag”

is omitted.

2: Converts to the posture with minimum joint movement in priority order of

Joint #1 and Joint #4. The target postures are hand orientation (Hand Flag), elbow orientation (Elbow Flag), wrist orientation (Wrist Flag), J4Flag, and

J6Flag. The elbow orientation (Elbow Flag) is always above elbow orientation.

3: Converts the wrist orientation (Wrist Flag), J4Flag, and J6Flag so that Joint #4 will be the shortest movement.

4: Converts the J4Flag and J6Flag.

424 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LJM Function

“orientation

Flag”

3

4

1

2

“orientation

Flag”

1

2

3

4

5

6

7

8

N6 series

Hand orientation

-

-

-

-

5: Change the hand orientation specified by “

refPoint

” to different hand orientation (Hand Flag). Converts the wrist orientation (Wrist Flag), J4Flag,

J6Flag or J1Flag so that Joint #5 will be the shortest movement. The target postures are hand orientation (Hand Flag), elbow orientation (Elbow Flag), wrist orientation (Wrist Flag), J4Flag, and J6Flag. The elbow orientation

(Elbow Flag) is always above elbow orientation.

6: Change the hand orientation specified by “

refPoint

” to different hand orientation (Hand Flag). Converts the wrist orientation (Wrist Flag), J4Flag,

J6Flag or J1Flag so that Joint #4 will be the shortest movement. The target postures are hand orientation (Hand Flag), elbow orientation (Elbow Flag), wrist orientation (Wrist Flag), J4Flag, and J6Flag. The elbow orientation

(Elbow Flag) is always above elbow orientation.

7: Change the elbow orientation to the below elbow orientation (Elbow Flag). To be the shortest movement, converts the wrist orientation (Wrist Flag), J4Flag, and J6Flag in priority order of Joint #1 and Joint #5. The target postures are hand orientation (Hand Flag), elbow orientation (Elbow Flag), wrist orientation (Wrist Flag), J4Flag, and J6Flag.

8: Change the elbow orientation to the below elbow orientation (Elbow Flag). To be the shortest movement, converts the wrist orientation (Wrist Flag), J4Flag, and J6Flag in priority order of Joint #1 and Joint #4. The target postures are

Hand hand orientation (Hand Flag), elbow orientation (Elbow Flag), wrist orientation (Wrist Flag), J4Flag, and J6Flag. orientation

Wrist orientation J4Flag

J6Flag

Priority order of axis with the shortest

*2

*2

-

-

Elbow orientation

*1

*1

-

-

*1

*1

*3

*3

-

 movement

J1>J5

J1>J4

J4

-

J4

J5

J1>J5

J1>J4

Note: Orientation of “ ” is the same as the orientation specified by “

refPoint

”.

*1: Above elbow orientation

*2: Hand orientation is different from the orientation specified by “

refPoint

”.

*3: Below elbow orientation

1: Converts the wrist orientation (Wrist Flag), J4Flag, and J6Flag so that Joint #4 will be the shortest movement. This is the default setting when

orientationFlag”

is omitted.

2: Converts the J4Flag and J6Flag.

3: Converts the wrist orientation (Wrist Flag), J4Flag, J6Flag or J1Flag so that

Joint #5 will be the shortest movement.

4: Converts the wrist orientation (Wrist Flag), J4Flag, J6Flag or J1Flag so that

Joint #6 will be the shortest movement.

Elbow orientation

Wrist orientation J1Flag J4Flag J6Flag

-

-

-

-

-

J4

-

J5

J6

Note: Orientation of “ ” is the same as the orientation specified by “

refPoint

”.

Priority order of axis with the shortest movement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 425

LJM Function

Description

When the 6-axis or N series robot moves to a point calculated by such as pallet or relative offsets, the wrist part may rotate to an unintended direction. The point calculation above does not depend on robot models and results in motion without converting the required point flag.

LJM function can be used to convert the point flag to prevent the unintended wrist rotation.

For the N series robots, it is also possible to reduce the cycle time and omit teaching of the avoidance point, which is necessary for the 6-axis robots, by changing the Hand Flag and Elbow Flag.

When the RS series robot moves to a point calculated by such as pallet or relative offsets, Arm #1 may rotate to an unintended direction. LJM function can be used to convert the point flag to prevent the unintended rotation of Arm #1.

In addition, the U axis of an RS series robot may go out of motion range when the orientation flag is converted, which will cause an error.

To prevent this error, the LJM function adjusts the U axis target angle so that it is inside the motion range.

This is available when “2” is selected for

orientationFlag

.

Returns the specified point for all robots except the 6-axis, N series, and RS series robot.

Note

The reference point omission and Parallel Processing

You cannot use both of the parallel point omission and parallel processing in one motion command like this:

Go LJM(P10) ! D10; MemOn 1 !

Be sure to change the program like this:

P999 = Here

Go LJM(P10,P999) ! D10; MemOn 1 !

orientationFlag

for N2 series

-

orientationFlag

1, 2:

To shorten the cycle time, select

orientationFlag

1 or 2.

Since the posture has minimum Joint #1 movement, the cycle time can be shortest in most motion.

To reduce the Joint #5 movement, select

orientationFlag

1.

To reduce the Joint #4 movement, select

orientationFlag

2.

-

orientationFlag

3, 4:

Use these flags if you do not want to change the reference orientation, hand orientation, and elbow orientation.

Use these flages if you want to use them in a same manner as the flags for verticxal 6-axis robots.

orientationFlag

3 is same as

orientationFlag

1 of the vertical 6-axis robots.

orientationFlag

4 is same as

orientationFlag

2 of the vertical 6-axis robots.

-

orientationFlag

5, 6:

If the hand collides with peripheral walls during the operation, select

orientationFlag

5 or 6.

Since the hand passes the neigbhorhood of the robot’s origin point, the robot can move with less possibility to collide with the obstacles.

To reduce the Joint #5 movement, select

orientationFlag

5.

To reduce the Joint #4 movement, select

orientationFlag

6.

-

orientationFlag

7, 8:

To have a below elbow orientation, select

orientationFlag

7 or 8.

Depending on motion, the robot passes the neighborhood of the origin like

orientationFlag

5 and

orientationFlag

6. Therefore, the robot can move with less possibility to collide with the obstacles, if these are located around the robot.

To reduce the Joint #5 movement, select

orientationFlag

7.

To reduce the Joint #4 movement, select

orientationFlag

8.

localNumber

Local numbers of the points returned by LJM danction are the same as that of “Point Expression”.

426 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

See Also

Pallet

LJM Function Example

Integer i, j

Pallet 1, P1, P2, P3, 10, 10

P11 = P12 -TLZ(50)

P10 =

LJM

(P10)

P12 =

LJM

(P12, P11)

'

'

Depart point

Target point

Start approach point

LJM Function

Go P0

Do

Specify points

P10 = Here -TLZ(50)

P11 = P12 -TLZ(50)

'

'

Depart point

Target point

Start approach point

'

Point check

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 427

LoadPoints Statement

LoadPoints Statement

Loads a point file into the point memory area for the current robot.

Syntax

LoadPoints

fileName

[, Merge]

Parameters

fileName

String expression containing the specific file to load into the current robot's point memory area. The extension must be .PTS. The file must exist in the current project for the current robot.

You cannot specify a file path and fileName doesn’t have any effect from ChDisk.

See ChDisk for the details.

Merge

Optional. If supplied, then the current points are not cleared before loading the new points. Points in the file are added to the current points. If a point exists in the file, it will overwrite the point in memory.

Description

LoadPoints loads point files from disk into the main memory area of the controller for the current robot.

Use Merge to combine point files. For example, you could have one main point file that includes common points for locals, parking, etc. in the range from 0 to 100. Then use Merge to load other point files for each part being run without clearing the common points. The range could be from 101 to 999.

Potential Errors

A Path Cannot be Specified

If

fileName

contains a path, an error will occur. Only a file name in the current project can be specified.

File Does Not Exist

If

fileName

does not exist, an error will occur.

Point file not for the current robot

If

fileName

is not a point file for the current robot, the following error will be issued: Point file not found for current robot. To correct this, add the Point file to the robot in the Project editor, or execute SavePoints or ImportPoints.

See Also

ImportPoints, Robot, SavePoints

LoadPoints Statement Example

Function main

' Load common points for the current robot

LoadPoints

"R1Common.pts"

'

Merge points for part model 1

LoadPoints

"R1Model1.pts",

Merge

Robot 2

'

Load point file for the robot 2

LoadPoints

"R2Model1.pts"

Fend

428 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Local Statement

Local Statement

Defines and displays local coordinate systems.

Syntax

(1)

Local

localNumber,

(

pLocal1 : pBase1 )

,

( pLocal2 : pBase2 )

[

,

{

L

|

R

} ] [,

BaseU

]

(2)

Local

localNumber, pCoordinateData

(3)

Local

localNumber, pOrigin,

[

pXaxis

]

,

[

pYaxis

], [ {

X

|

Y

} ]

(4)

Local

localNumber

Parameters

localNumber

The local coordinate system number. A total of 15 local coordinate systems (of the integer value from 1 to 15) may be defined.

pLocal1, pLocal2

Point variables with point data in the local coordinate system.

pBase1, pBase2

Point variables with point data in the base coordinate system.

L

|

R

BaseU

Optional. Align local origin to left (first) or right (second) base points.

Optional. When supplied, U axis coordinates are in the base coordinate system.

When omitted, U axis coordinates are in the local coordinate system.

pCoordinateData

Point data representing the coordinate data of the origin and direction.

pOrigin

Integer expression representing the origin point using robot coordinate system.

pXaxis

Optional. Integer expression representing a point along the X axis using robot coordinate system if X alignment is specified.

pYaxis

X

|

Y

Optional. Integer expression representing a point along the Y axis using robot coordinate system if Y alignment is specified.

If X alignment is specified, then pXaxis lies on the X axis of the local. The Y axis and Z axis are calculated to be orthogonal to X in the plane that is created by the 3 local points. If Y alignment is specified, then pYaxis lies on the Y axis of the local.

The X axis and Z axis are calculated to be orthogonal to Y in the plane that is created by the 3 local points.

Description

(1) Local defines a local coordinate system by specifying 2 points,

pLocal1

and

pLocal2

, contained in it that coincide with two points,

pBase1

and

pBase2

, contained in the base coordinate system.

Example:

Local 1, (P1:P11), (P2:P12)

P1 and P2 are local coordinate system points. P11 and P12 are base coordinate system points.

If the distance between the two specified points in the local coordinate system is not equal to that between the two specified points in the base coordinate system, the XY plane of the local coordinate system is defined in the position where the midpoint between the two specified points in the local coordinate system coincides with that between the two specified points in the base coordinate system.

Similarly, the Z axis of the local coordinate system is defined in the position where the midpoints coincide with each other.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 429

Local Statement

(2) Defines a local coordinate system by specifying the origin and axis rotation angles with respect to the base coordinate system.

Example:

Local 1, XY(x, y, z, u)

Local 1, XY(x, y, z, u, v, w)

Local 1, P1

(3) Defines a 3D local coordinate system by specifying the origin point, x axis point, and y axis point.

Only the X, Y, and Z coordinates of each point are used. The U, V, and W coordinates are ignored.

When the X alignment parameter is used, then

pXaxis

is on the X axis of the local and only the Z coordinate of

pYaxis

is used. When the Y alignment parameter is used, then

pYaxis

is on the Y axis of the local and only the Z coordinate of

pXaxis

is used.

Example:

Local 1, P1, P2, P3

Local 1, P1, P2, P3, X

Local 1, P1, P2, P3, Y

(4) Displays the specified local settings.

Using L and R parameters

While Local basically uses midpoints for positioning the axes of your local coordinate system as described above, you can optionally specify left or right local by using the L and R parameters.

Left Local

Left local defines a local coordinate system by specifying point

pLocal1

corresponding to point

pBase1

in the base coordinate system (Z axis direction is included.)

Right Local

Right local defines a local coordinate system by specifying point

pLocal2

corresponding to point

pBase2

in the base coordinate system. (Z axis direction is included.)

Using the BaseU parameter

If the BaseU parameter is omitted, then the U axis of the local coordinate system is automatically corrected in accordance with the X and Y coordinate values of the specified 4 points. Therefore, the 2 points in the base coordinate system may initially have any U coordinate values.

It may be desired to correct the U axis of the local coordinate system based on the U coordinate values of the two points in the base coordinate system, rather than having it automatically corrected (e.g. correct the rotation axis through teaching). To do so, supply the BaseU parameter.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

ArmSet, Base, ECPSet, LocalClr, TLSet, Where

430 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Local Statement Examples

Here are some examples from the command window:

Left aligned local:

> p1 = 0, 0, 0, 0/1

> p2 = 100, 0, 0, 0/1

> p11 = 150, 150, 0, 0

> p12 = 300, 150, 0, 0

>

local

1, (P1:P11), (P2:P12), L

> p21 = 50, 0, 0, 0/1

> go p21

Local defined with only the origin point:

>

local

1, 100, 200, -20, 0

Local defined with only the origin point rotated 45 degrees about the X axis:

>

local

2, 50, 200, 0, 0, 45, 0

3D Local with p2 aligned with the X axis of the local:

>

local

3, p1, p2, p3, x

3D Local with p3 aligned with the Y axis of the local:

>

local

4, p1, p2, p3, y

Local Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 431

Local Function

Local Function

Returns the specified local coordinate system data as a point.

Syntax

Local

(

localNumber

)

Parameters

localNumber

local coordinate system number (integer from 1 to 15) using an expression or numeric value.

Return Values

Specified local coordinate system data as point data.

See Also

Local Statement

Local Function Example

P1 =

Local

(1)

432 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LocalClr Statement

LocalClr Statement

Clears (undefines) a local coordinate system.

Syntax

LocalClr

localNumber

Parameters

localNumber

Integer expression representing which of 15 locals (integer from 1 to 15) to clear

(undefine).

Description

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

Arm, ArmSet, ECPSet, Local, Tool, TLClr, TLSet

LocalClr Statement Example

LocalClr

1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 433

LocalDef Function

LocalDef Function

Returns local definition status.

Syntax

LocalDef

(

localCoordinateNumber

)

Parameters

localCoordinateNumber

Integer expression representing which local coordinate to return status for.

Return Values

True if the specified local has been defined, otherwise False.

See Also

Arm, ArmClr, ArmSet, ECPSet, Local, LocalClr, Tool, TLClr, TLSet

LocalDef Function Example

Function DisplayLocalDef(localNum As Integer)

If

LocalDef

(localNum) = False Then

Print "Local ", localNum, "is not defined"

Else

Print "Local 1: ",

Print Local(localNum)

EndIf

Fend

434 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Lof Function

Lof Function

Checks whether the specified RS-232 or TCP/IP port has any lines of data in its buffer.

Syntax

Lof

(

fileNumber

As Integer )

Parameters

fileNumber

A number specified with OpenCom (RS-232C) or OpenNet (TCP/IP) statement.

Return Values

The number of lines of data in the buffer. If there is no data in the buffer, Lof returns “0”.

Description

Lof checks whether or not the specified port has received data lines. The data received is stored in the buffer irrespective of the Input# instruction.

You can wait for the return value of Lof function by executing Wait.

Note

When using PC COM port (1001 to 1008), you cannot use Lof function with Wait command.

See Also

ChkCom, ChkNet, Input#, Wait

Lof Function Example

This Command window example prints out the number of lines of data received through the communication port number 1.

>print

lof

(1)

5

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 435

LogIn Statement

LogIn Statement

Log into EPSON RC+ 6.0 as another user.

Syntax

LogIn

logID, password

Parameters

logID password

String expression that contains user login id.

String expression that contains user password.

Description

You can utilize EPSON RC+ security in your application. For example, you can display a menu that allows different users to log into the system. Each type of user can have its own security rights. For more details on security, see the EPSON RC+ User's Guide.

When you are running programs in the development environment, the user before programs are started will be restored after programs stop running.

When running the Operator Window in Auto Mode, the application is logged in as a guest user, unless

Auto LogIn is enabled, in which case the application is logged in as the current Windows user if such user has been configured in the EPSON RC+ system.

Note

This command will only work if the Security option is active.

See Also

GetCurrentUser$ Function

LogIn Statement Example

Integer errCode errCode =

LogIn

("operator", "oprpass")

436 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Long Statement

Long Statement

Declares variables of type long integer. (4 byte whole number).

Syntax

Long

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]

...

]

Parameters

varName subscripts

Variable name which the user wants to declare as type Long.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Long is used to declare variables as type Long. Variables of type Long can contain whole numbers with values between -2,147,483,648 to 2,147,483,647. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

See Also

Boolean, Byte, Double, Global, Int32, Int64, Integer, Real, Short, String, UByte, UInt32, UInt64,

UShort

Long Statement Example

The following example shows a simple program which declares some variables as Longs using Long.

Function longtest

Long

A(10) ' Single dimension array of long

Long

B(10, 10) ' Two dimension array of long

Long

C(5, 5, 5) '

Three dimension array of long

Long

var1, arrayVar(10)

Long

i

Print "Please enter a Long Number"

Input var1

Print "The Integer variable var1 = ", var1

For i = 1 To 5

Print "Please enter a Long Number"

Input arrayVar(i)

Print "Value Entered was ", arrayVar(i)

Next I

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 437

LSet$ Function

LSet$ Function

Returns the specified string with trailing spaces appended up to the specified length.

Syntax

LSet$

(

string, length

)

Parameters

string length

String expression.

Integer expression for the total length of the string returned.

Return Values

Specified string with trailing spaces appended.

See Also

RSet$, Space$

LSet$ Function Example

temp$ = "123" temp$ =

LSet$

(temp$, 10) ' temp$ = "123 "

438 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LShift Function

LShift Function

Shifts numeric data to the left by a user specified number of bits.

Syntax

LShift

(number, shiftBits)

Parameters

number shiftBits

Integer expression to be shifted.

The number of bits (integer from 0 to 31) to shift

number

to the left.

Return Values

Returns a numeric result which is equal to the value of

number

after shifting left

shiftBits

number of bits.

Description

LShift shifts the specified numeric data (

number

) to the left (toward a higher order digit) by the specified number of bits (

shiftBits

). The low order bits shifted are replaced by 0.

The simplest explanation for LShift is that it simply returns the result of

number

* 2

shiftBits

.

Note

Numeric Data Type:

The numeric data

number

may be any valid numeric data type. LShift works with data types: Byte, Double,

Int32, Integer, Long, Real, Short, UByte, UInt32, and UShort.

See Also

And, LShift64, Not, Or, RShift, RShift64, Xor

LShift Function Example

Function lshiftst

Integer i

Integer num, snum

num = 1

For i = 1 to 10

Print "i =", i

snum =

LShift

(num, i)

Print "The shifted num is ", snum

Next i

Fend

Some other example results from the LShift instruction from the command window.

> Print

LShift

(2,2)

8

> Print

LShift

(5,1)

10

> Print

LShift

(3,2)

12

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 439

LShift64 Function

LShift64 Function

Shifts numeric data to the left by a user specified number of bits.

Syntax

LShift64

(number, shiftBits)

Parameters

number shiftBits

Integer expression to be shifted.

The number of bits (integer from 0 to 63) to shift

number

to the left.

Return Values

Returns a numeric result which is equal to the value of

number

after shifting left

shiftBits

number of bits.

Description

LShift64 shifts the specified numeric data (

number

) to the left (toward a higher order digit) by the specified number of bits (

shiftBits

). The low order bits shifted are replaced by 0.

The simplest explanation for LShift64 is that it simply returns the result of

number

* 2

shiftBits

.

Note

Numeric Data Type:

The numeric data

number

may be any valid numeric data type. LShift64 works with data types: Int64 and

UInt64.

See Also

And, LShift, Not, Or, RShift, RShift64, Xor

LShift64 Function Example

Int64 i

Int64 num, snum

num = 1

For i = 1 to 10

Print "i =", i

snum =

LShift64

(num, i)

Print "The shifted num is ", snum

Next i

Fend

Some other example results from the LShift64 instruction from the command window.

> Print

LShift64

(2,2)

> Print

LShift64

(5,1)

> Print

LShift64

(3,2)

>

440 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

LTrim$ Function

Returns a string equal to specified string without leading spaces.

Syntax

LTrim$

(

string

)

Parameters

string

String expression.

Return Values

Specified string with leading spaces removed.

See Also

RTrim$, Trim$

LTrim$ Function Example

str$ = " data " str$ =

LTrim$

(str$) ' str$ = "data "

LTrim$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 441

Mask Operator

Mask Operator

Bitwise mask for Wait statement condition expression.

Syntax

Wait

expr1

Mask

exrp2

Parameters

expr1 expr2

Any valid expression input condition for Wait.

Any valid expression which returns a numeric result.

Description

The Mask operator is a bitwise And for Wait statement input condition expressions.

See Also

Wait

Mask Operator Example

' Wait for the lower 3 bits of input port 0 to equal 1

Wait In(0)

Mask

7 = 1

442 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MCal Statement

MCal Statement

Executes machine calibration for robots with incremental encoders.

Syntax

MCal

Description

It is necessary to calibrate robots which have incremental encoders. This calibration must be executed after turning on the main power. If you attempt motion command execution, or any command which requires the current position data without first executing machine calibration, an error will occur.

Machine calibration is executed according to the moving joint order which is specified with the MCordr command. The default value of MCordr at the time of shipment differs from model to model, so please refer to the proper manipulator manual for details.

Potential Errors

Attempt to Execution a Motion command without Executing Mcal First

If you attempt motion command execution, or any command which requires the current position data ( e.g.

Plist* instruction ) without first executing machine calibration, an error will occur.

Absolute encoder robots

Absolute encoder robots do not need MCAL.

Robot Installation Note

Z Joint Space Required for Homing

When the Z joint homes it first moves up and then moves down and settles into the home position. This means it is very important to properly install the robot so that enough space is provided for the arm to home the Z joint. It is recommended that a space of 6 mm be provided above the upper limit. (Do not install tooling or fixtures within a 6 mm space above the robot so enough room is left for proper Z joint homing.)

See Also

Hofs, Home, Hordr, Mcorg, MCordr

Mcal Statement Example

The following example is done from the monitor window:

> Motor On

>

Mcal

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 443

MCalComplete Function

MCalComplete Function

Returns status of MCal.

Syntax

MCalComplete

Return Values

True if MCal has been completed, otherwise False.

See Also

MCal

MCalComplete Function Example

If Not

MCalComplete

Then

MCal

EndIf

444 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MCordr Statement

MCordr Statement

Specifies and displays the moving joint order for machine calibration Mcal.

Required only for robots with incremental encoders.

Syntax

(1)

MCordr

Step1, Step2, Step3, Step4 [, Step5] [, Step6] [, Step7] [, Step8] [, Step9]

(2)

MCordr

Parameters

Step1

Step2

Bit pattern that tells which axes should be calibrated during the 1st step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 1st step. (see below for bit pattern definitions)

Bit pattern that tells which axes should be calibrated during the 2nd step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 2nd step. (see below for bit pattern definitions)

Step3

Step4

Bit pattern that tells which axes should be calibrated during the 3rd step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 3rd step. (see below for bit pattern definitions)

Bit pattern that tells which axes should be calibrated during the 4th step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 4th step. (see below for bit pattern definitions)

Step5

Step6

Step7

Step8

Bit pattern that tells which axes should be calibrated during the 5th step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 5th step. (see below for bit pattern definitions)

Bit pattern that tells which axes should be calibrated during the 6th step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 6th step. (see below for bit pattern definitions)

Bit pattern that tells which axes should be calibrated during the 7th step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 7th step. (see below for bit pattern definitions)

Bit pattern that tells which axes should be calibrated during the 8th step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 8th step. (see below for bit pattern definitions)

Step9

Bit pattern that tells which axes should be calibrated during the 9th step of the Mcal process.

Any number of axes between 0 to all 4 axes may calibrate during the 9th step. (see below for bit pattern definitions)

Return Values

Displays current Machine Calibration Order when parameters are omitted.

Description

After the system is powered on, Mcal instruction must be issued prior to any robot arm operation. When the

Mcal instruction is issued each of the 4 axes of the robot will move to their respective calibration positions.

Specifies joint motion order for the Mcal command. (i.e. Defines which joint will home 1st, which joint will Mcal 2nd, 3rd, etc.)

The purpose of the MCordr instruction is to allow the user to change the homing order. The homing order is broken into 9 separate steps. The user then uses MCordr to define the specific axes which will move to the calibration position (done with the Mcal command) during each step. It is important to realize that more than 1 joint can be defined to move to the calibration position during a single step. This means that all four axes can potentially be calibrated at the same time. However, it is recommended that the Z joint normally

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 445

MCordr Statement be defined to move to the calibration position first (in Step 1) and then allow the other Axes to follow in subsequent steps. (See notes below)

The MCordr instruction expects that a bit pattern be defined for each of the 9 steps. Since there are 4 axes, each joint is assigned a specific bit. When the bit is high (1) (for a specific step), then the corresponding joint will calibrate. When the bit is low (0), then the corresponding joint will not calibrate during that step.

The joint bit patterns are assigned as follows:

Joint:

Bit Number:

Binary Code: &B000001 &B000010 &B000100 &B001000

Joint:

Bit Number:

1 bit 0

5 bit 4

2 bit 1

6 bit 5

3 bit 2

7 bit 6

4 bit 3

8 bit 7

9 bit 8

Binary Code: &B010000 &B100000 &B1000000 &B10000000 &B100000000

Notes

Difference Between MCordr and Hordr

While at first glance the Hordr and MCordr commands may appear very similar there is one major difference which is important to understand. MCordr is used to define the Robot Calibration joint order

(used with Mcal ) while Hordr is used to define the Homing joint order (used with the Home command).

Default MCal Order (Factory Setting)

The default joint calibration order from the factory is that joint 3 will home in Step 1. Then joints 1, 2, and

4 joints will all home at the same time in step 2. (Steps 3 and 4 are not used in the default configuration.)

The default MCordr values are as follows:

MCordr &B0100, &B1011, 0, 0

Z Joint should normally be calibrated first

The reason for moving the Z joint first (and by itself) is to allow the tooling to be moved above the work surface before beginning any horizontal movement. This will help prevent the tooling from hitting something in the work envelope during the homing process.

MCordr values are maintained

The MCordr Table values are permanently saved and are not changed until either the user changes them or the robot is redefined.

See Also

Mcal

MCordr Statement Example

Following are some monitor window examples:

This example defines the calibration order as J3 in the first step, J1 in second step, J2 in third step, and J4 in the fourth step. The order is specified with binary values.

>

mcordr

&B0100, &B0001, &B0010, &B1000

This example defines the calibration order as J3 in the first step, then J1, J2 and J4 joints simultaneously in the second step. The order is specified with decimal values.

>

mcordr

4, 11, 0, 0

This example displays the current calibration order in decimal numbers.

>

mcordr

4, 11, 0, 0

>

446 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MCordr Function

MCordr Function

Returns an MCordr parameter setting.

Syntax

MCordr

(

paramNumber

)

Parameters

paramNumber

Specifies reference setting numbers (integers from 1 to 9) by an expression or numeric value.

Return Values

Returns binary values (integers) representing the joint of the specified setting number to execute machine calibration.

Description

Returns the joint motion order to execute machine calibration by Mcal.

See Also

Mcal

MCordr Function Example

This example uses the MCordr function in a program:

Integer a a =

MCordr

(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 447

MemIn Function

MemIn Function

Returns the status of the specified memory I/O port. Each port contains 8 memory bits.

Syntax

MemIn(

portNumber

)

Parameters

portNumber

Integer expression representing memory I/O bytes.

Return Values

Returns an integer value between 0 and 255. The return value is 8 bits, with each bit corresponding to 1 memory I/O bit.

Description

MemIn provides the ability to look at the value of 8 memory I/O bits at the same time. The MemIn instruction can be used to store the 8 memory I/O bit status into a variable or it can be used with the Wait instruction to Wait until a specific condition which involves more than 1 memory I/O bit is met.

Since 8 bits are retrieved at a time, the return value ranges from 0 and 255. Please review the chart below to see how the integer return values correspond to individual memory I/O bits.

Memory I/O Bit Result (Using Port #0)

Return Values

1

5

15

255

7 6 5 4 3 2 1 0

Off Off Off Off Off Off Off On

Off Off Off Off Off On Off On

Off Off Off Off On On On On

On On On On On On On On

Memory I/O Bit Result (Using Port #31)

Return Values 255 254 253 252 251 250 249 248

3

7

32

255

Off

Off

Off

On

Off

Off

Off

On

Off

Off

On

On

Off

Off

Off

On

Off

Off

Off

On

Off

On

Off

On

On

On

Off

On

On

On

Off

On

Note

Difference Between MemIn and MemSw

The MemSw instruction allows the user to read the value of 1 memory I/O bit. The return value from

MemSw is either a 1 or a 0 which indicates that the memory I/O bit is either On or Off. MemSw can check each of the memory I/O bits individually. The MemIn instruction is very similar to the MemSw instruction in that it also is used to check the status of the memory I/O bits. However there is 1 distinct difference.

The MemIn instruction checks 8 memory I/O bits at a time vs. the single bit checking functionality of the

MemSw instruction. MemIn returns a value between 0 and 255 which tells the user which of the 8 I/O bits are On and which are Off.

See Also

In, InBCD, Off, MemOff, On, MemOn, OpBCD, Oport, Out, MemOut, Sw, MemSw, Wait

448 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MemIn Function

MemIn Function Example

The program example below gets the current value of the first 8 memory I/O bits and then makes sure that all 8 I/O are currently set to “0” before proceeding. If they are not “0” an error message is given to the operator and the task is stopped.

Function main

Integer var1

var1 =

MemIn

(0) '

Get the 1st 8 memory I/O bit value

If var1 = 0 Then

Go P1

Go P2

Else

Print "Error in initialization!"

Print "First 8 memory I/O bits were not all set to 0"

EndIf

Fend

Other simple examples from the Command window are as follows:

> memout 0, 1

> print

MemIn

(0)

1

> memon 1

> print

MemIn

(0)

3

> memout 31,3

> print

MemIn

(31)

3

> memoff 249

> print

MemIn

(31)

1

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 449

MemInW Function

MemInW Function

Returns the status of the specified memory I/O word port. Each word port contains 16 memory I/O bits.

Syntax

MemInW

(

WordPortNum

)

Parameters

WordPortNum

Integer expression representing the I/O word port.

Return Values

Returns the current status of the memory I/O (long integers from 0 to 65535).

See Also

MemIn, MemOut, MemOutW

MemInW Function Example

Long word0 word0 =

MemInW

(0)

450 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MemOff Statement

MemOff Statement

Turns Off the specified bit of the memory I/O.

Syntax

MemOff

{

bitNumber

|

memIOLabel

}

Parameters

bitNumber

Integer expression representing memory I/O bits.

memIOLabel

Memory I/O label.

Description

MemOff turns Off the specified bit of memory I/O. The 256 memory I/O bits are typically excellent choices for use as status bits for uses such as On/Off, True/False, Done/Not Done, etc. The MemOn instruction turns the memory bit On, the MemOff instruction turns it Off, and the MemSw instruction is used to check the current state of the specified memory bit. The Wait instruction can also be used with the memory I/O bit to cause the system to wait until a specified memory I/O status is set.

Note

Memory outputs off

All memory I/O bits are turned off when the controller are restarted. They are not turned off by Emergency stop, safeguard open, program end, Reset command, or EPSON RC+ restart.

See Also

In, MemIn, InBCD, Off, On, MemOn, OpBCD, Oport, Out, MemOut, Sw, MemSw, Wait

MemOff Statement Example

The example shown below shows 2 tasks each with the ability to initiate motion instructions. However, a locking mechanism is used between the 2 tasks to ensure that each task gains control of the robot motion instructions only after the other task is finished using them. This allows 2 tasks to each execute motion statements as required and in an orderly predictable fashion. MemSw is used in combination with the Wait instruction to wait until the memory I/O #1 is the proper value before it is safe to move again. MemOn and

MemOff are used to turn on and turn off the memory I/O for proper synchronization.

Function main

Integer I

MemOff

1

Xqt 2, task2

For i = 1 to 100

Wait MemSw(1) = Off

Go P(i)

MemOn 1

Next I

Fend

Function task2

Integer I

For i = 101 to 200

Wait MemSw(1) = On

Go P(i)

MemOff

1

Next I

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 451

MemOff Statement

Other simple examples from the command window are as follows:

> MemOn 1 ' Switch memory I/O bit #1 on

> Print MemSw(1)

1

> MemOff 1 ' Switch memory I/O bit #1 off

> Print MemSw(1)

0

452 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MemOn Statement

MemOn Statement

Turns On the specified bit of the memory I/O.

Syntax

MemOn

{

bitNumber

|

memIOLabel

}

Parameters

bitNumber

Integer expression representing memory I/O bits.

memIOLabel

Memory I/O label.

Description

MemOn turns on the specified bit of the robot memory I/O. The 256 memory I/O bits are typically used as task communication status bits. The MemOn instruction turns the memory bit On, the MemOff instruction turns it Off, and the MemSw instruction is used to check the current state of the specified memory bit. The

Wait instruction can also be used with the memory bit to cause the system to wait until a specified status is set.

Note

Memory outputs off

All memory I/O bits are turned off when the controller are restarted. They are not turned off by Emergency stop, safeguard open, program end, Reset command, or EPSON RC+ restart.

See Also

In, MemIn, InBCD, Off, MemOff, On, OpBCD, Oport, Out, MemOut, Sw, MemSw, Wait

MemOn Statement Example

The example shown below shows 2 tasks each with the ability to initiate motion instructions. However, a locking mechanism is used between the 2 tasks to ensure that each task gains control of the robot motion instructions only after the other task is finished using them. This allows 2 tasks to each execute motion statements as required and in an orderly predictable fashion. MemSw is used in combination with the Wait instruction to wait until the memory I/O #1 is the proper value before it is safe to move again. MemOn and

MemOff are used to turn on and turn off the memory I/O for proper synchronization.

Function main

Integer I

MemOff 1

Xqt 2, task2

For i = 1 to 100

Wait MemSw(1) = Off

Go P(i)

MemOn

1

Next I

Fend

Function task2

Integer I

For i = 101 to 200

Wait MemSw(1) = On

Go P(i)

MemOff 1

Next I

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 453

MemOn Statement

Other simple examples from the command window are as follows:

> memon 1

> print memsw(1)

1

> memoff 1

> print memsw(1)

0

454 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MemOut Statement

MemOut Statement

Simultaneously sets 8 memory I/O bits.

Syntax

MemOut

portNumber, outData

Parameters

portNumber

Integer expression representing memory I/O bit port number. The

portNumber

selection corresponds to the following:

Portnum

0

1

.

Outputs

0-7

8-15

.

outData

Integer expression between 0 and 255 representing the output pattern for the output group selected by

portNumber

. If represented in hexadecimal form the range is from &H0 to &HFF.

The lower digit represents the least significant digits (or the 1st 4 outputs) and the upper digit represents the most significant digits (or the 2nd 4 outputs).

Description

MemOut simultaneously sets 8 memory I/O bits using the combination of the

portNumber

and

outData

values specified by the user to determine which outputs will be set. The

portNumber

parameter specifies which group of 8 outputs to use where

portNumber

= 0 means outputs 0 to 7,

portNumber

= 1 means outputs 8 to 15, etc.

Once a

portNumber

is selected, a specific output pattern must be defined. This is done using the

outData

parameter. The

outData

parameter may have a value between 0 and 255 and may be represented in hexadecimal or integer format. (i.e. &H0 to &HFF or 0 to 255)

The table below shows some of the possible I/O combinations and their associated

outData

values assuming that

portNumber

is “0”, and “1” accordingly.

Output Settings When

portNumber

=0 (Output number)

OutData Value 7 6 5 4 3 2 1 0

Off Off Off Off Off Off Off On 01

02

03

08

09

10

11

99

255

Off Off Off Off Off Off On Off

Off Off Off Off Off Off On On

Off Off Off Off On Off Off Off

Off Off Off Off On Off Off On

Off Off Off On Off Off Off Off

Off Off Off On Off Off Off On

Off On On Off Off Off On On

On On On On On On On On

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 455

MemOut Statement

Output Settings When

portNumber

=1 (Output number)

OutData Value 15 14 13 12 11 10

01

02

03

08

09

10

11

99

255

9 8

Off Off Off Off Off Off Off On

Off Off Off Off Off Off On Off

Off Off Off Off Off Off On On

Off Off Off Off On Off Off Off

Off Off Off Off On Off Off On

Off Off Off On Off Off Off Off

Off Off Off On Off Off Off On

Off On On Off Off Off On On

On On On On On On On On

See Also

In, MemIn, InBCD, MemOff, MemOn, MemSw, Off, On, OpBCD, Oport, Out, Sw, Wait

MemOut Statement Example

The example below shows main task starting a background task called “iotask”. The “iotask” is a simple task to toggle memory I/O bits from 0 to 3 On and Off. The MemOut instruction makes this possible using only 1 command rather than turning each memory I/O bit on and off individually.

Function main

Xqt 2, iotask

Go P1

.

.

Fend

Function iotask

Do

MemOut

0, &H

Wait 1

MemOut

0, &H0

Wait 1

Loop

Fend

Other simple examples from the command window are as follows:

> MemOut 1,6 '

Turns on memory I/O bits 9 & 10

> MemOut 2,1 ' Turns on memory I/O bit 8

> MemOut 3,91 ' Turns on memory I/O bits 24, 25, 27, 28, and 30

456 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MemOutW Statement

MemOutW Statement

Simultaneously sets 16 memory I/O bits.

Syntax

MemOutW

wordPortNum, outputData

Parameters

wordPortNum outputData

Integer expression representing memory I/O words.

Specifies output data (integers from 0 to 65535) using an expression or numeric value.

Description

Changes the current status of memory I/O port group specified by the word port number to the specified output data.

See Also

MemIn, MemInW, MemOut

MemOutW Statement Example

MemOutW

0, 25

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 457

MemSw Function

MemSw Function

Returns the status of the specified memory I/O bit.

Syntax

MemSw(

bitNumber

)

Parameters

bitNumber

Integer expression representing the memory I/O bit number.

Return Values

Returns “1” when the specified bit is On and “0” when the specified bit is Off.

Description

MemSw returns the status of one memory I/O bit. Valid entries for MemSw range from bit 0 to bit 511.

MemOn turns the specified bit on and MemOff turns the specified bit Off.

See Also

In, MemIn, InBCD, MemOff, MemOn, MemOut, Off, On, OpBCD, Oport, Out, Sw, Wait

MemSw Function Example

The example shown below shows 2 tasks each with the ability to initiate motion instructions. However, a locking mechanism is used between the 2 tasks to ensure that each task gains control of the robot motion instructions only after the other task is finished using them. This allows 2 tasks to each execute motion statements as required and in an orderly predictable fashion. MemSw is used in combination with the Wait instruction to wait until the memory I/O bit 1 is the proper value before it is safe to move again.

Function main

Integer I

MemOff 1

Xqt 2, task2

For i = 1 to 100

Wait

MemSw

(1) = Off

Go P(i)

MemOn 1

Next I

Fend

Function task2

Integer I

For i = 101 to 200

Wait

MemSw

(1) = On

Go P(i)

MemOff 1

Next I

Fend

Other simple examples from the Command window are as follows:

> memon 1

> print memsw(1)

1

> memoff 1

> print memsw(1)

0

458 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MHour Function

MHour Function

Returns the accumulated MOTOR ON time of the robot motors.

Syntax

MHour

([

robotNumber

])

Parameters

robotNumber

Specify the robot number to check the MOTOR ON time by an integer value.

If omitted, currently selected robot will be used.

Return Values

Returns the accumulated MOTOR ON time of the motors by an integer value.

See Also

Time, Hour

MHour Function Example

Robot 2

Print

MHour

Print

MHour(1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 459

Mid$ Function

Mid$ Function

Returns a substring of a string starting from a specified position.

Syntax

Mid$

(string, position

[

, count

])

Parameters

string position count

Source string expression.

The starting position in the character string for copying

count

characters.

Optional. The number of characters to copy from

string

starting with the character defined by

position

. If omitted, then all characters from

position

to the end of the string are returned.

Return Values

Returns a substring of characters from

string

.

Description

Mid$ returns a substring of as many as

count

characters starting with the

position

character in

string

.

See Also

Asc, Chr$, InStr, Left$, Len, Right$, Space$, Str$, Val

Mid$ Function Example

The example shown below shows a program that extracts the middle 2 characters from the string

“ABCDEFGHIJ” and the remainder of the string starting at position 5.

Function midtest

String basestr$, m1$, m2$

basestr$ = "ABCDEFGHIJ"

m1$ =

Mid$

(basestr$, (Len(basestr$) / 2), 2)

Print "The middle 2 characters are: ", m1$

m2$ =

Mid$

(basestr$, 5)

Print "The string starting at 5 is: ", m2$

Fend

460 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MkDir Statement

MkDir Statement

Creates a subdirectory on a controller disk drive.

Syntax

MkDir

dirName

Parameters

dirName

String expression that defines the path and name of the directory to create.

See ChDisk for the details.

Description

Creates a subdirectory in the specified path. If omitted, a subdirectory is created in the current directory.

Note

- This statement is executable only with PC disk.

See Also

ChDir, ChDrive, RenDir, RmDir

MkDir Statement Example

The following examples are done from the command window:

>

MkDir

\Data

>

MkDir

\Data\PTS

>

MkDir

\TEST1 \TEST2

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 461

Mod Operator

Mod Operator

Returns the remainder obtained by dividing a numeric expression by another numeric expression.

Syntax

number

Mod

divisor

Parameters

number divisor

The number being divided (the dividend).

The number which

number

is divided by.

Return Values

Returns the remainder after dividing

number

by

divisor

.

Description

Mod is used to get the remainder after dividing 2 numbers. The remainder is a whole number. One clever use of the Mod instruction is to determine if a number is odd or even. The method in which the Mod instruction works is as follows:

number

is divided by

divisor

. The remainder left over after this division is then the return value for the Mod instruction.

See Also

Abs, Atan, Atan2, Cos, Int, Not, Sgn, Sin, Sqr, Str$, Tan, Val

Mod Operator Example

The example shown below determines if a number (var1) is even or odd. When the number is even the result of the Mod instruction will return “0”. When the number is odd, the result of the Mod instruction will return “1”.

Function modtest

....Integer var1, result

....Print "Enter an integer number:"

....Input var1

....result = var1

Mod

2

....Print "Result = ", result

....If result = 0 Then

........Print "The number is EVEN"

....Else

........Print "The number is ODD"

....EndIf

Fend

Some other example results from the Mod instruction from the Command window.

> Print 36

Mod

6

> 0

> Print 25

Mod

10

> 5

>

462 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Motor Statement

Motor Statement

Turns motor power for all axes on or off for the current robot.

Syntax

Motor ON | OFF

Parameters

ON | OFF

The keyword ON is used to turn the Motor Power on. The keyword OFF is used to turn

Motor Power Off.

Description

The Motor On command is used to turn Motor Power On and release the brakes for all axes. Motor Off is used to turn Motor Power Off and set the brakes.

In order to move the robot, motor power must be turned on.

After an emergency stop, or after an error has occurred that requires resetting with the Reset command, execute Reset, and then execute Motor On.

Motor On sets the robot control parameter as below:

Speed, SpeedR, SpeedS Default values

Default values

Default values

0

Accel, AccelR, AccelS

QPDecelR, QPDecelS

LimZ

CP

SoftCP

Fine

Power Low

PTPBoost

TCLim, TCSpeed

PgLSpeed

Off

Off

Default values

Low

Default values

Default values

Default values

See Also

Brake, Power, Reset, SFree, SLock

Motor Statement Example

The following examples are done from the command window:

> Motor On

> Motor Off

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 463

Motor Function

Motor Function

Returns status of motor power for the specified robot.

Syntax

Motor

[(

robotNumber

)]

Parameters

robotNumber

Specify the robot number to check the status by an integer value.

If omitted, currently selected robot will be used.

Return Values

0 = Motors off, 1 = Motors on.

See Also

Motor

Motor Function Example

If

Motor

= Off Then

Motor On

EndIf

464 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Move Statement

Move Statement

Moves the arm from the current position to the specified point using linear interpolation (i.e. moving in a straight line) at a constant tool center point velocity).

Syntax

Move

destination

[

ROT

] [

ECP

] [

CP

] [

searchExpr

] [

!...!

] [

SYNC

]

Parameters

destination

The target destination of the motion using a point expression.

ROT

ECP

CP

searchExpr

Optional. Decides the speed/acceleration/deceleration in favor of tool rotation.

Optional. External control point motion. This parameter is valid when the

ECP option is enabled.

Optional. Specifies continuous path motion.

!...!

Optional. A Till or Find expression.

Till

|

Find

Till Sw

(

expr

) = {

On

|

Off

}

Find Sw

(

expr

) = {

On

|

Off

}

Optional. Parallel Processing statements can be added to execute I/O and other commands during motion.

SYNC

Reserves a motion command. The robot will not move until SyncRobots is executed.

Description

Move moves the arm from the current position to

destination

in a straight line. Move coordinates all axes to start and stop at the same time. The coordinates of

destination

must be taught previously before executing the Move instruction. Acceleration and deceleration for the Move is controlled by the AccelS instruction. Speed for the move is controlled by the SpeedS instruction. If the SpeedS speed value exceeds the allowable speed for any joint, power to all four joint motors will be turned off, and the robot will stop.

Move uses the SpeedS speed value and AccelS acceleration and deceleration values. Refer to

Using Move with CP

below on the relation between the speed/acceleration and the acceleration/deceleration. If, however, the ROT modifier parameter is used, Move uses the SpeedR speed value and AccelR acceleration and deceleration values. In this case SpeedS speed value and AccelS acceleration and deceleration value have no effect.

Usually, when the move distance is “0” and only the tool orientation is changed, an error will occur.

However, by using the ROT parameter and giving priority to the acceleration and the deceleration of the tool rotation, it is possible to move without an error. When there is not an orientational change with the

ROT modifier parameter and movement distance is not “0”, an error will occur.

Also, when the tool rotation is large as compared to move distance, and when the rotation speed exceeds the specified speed of the manipulator, an error will occur. In this case, please reduce the speed or append the ROT modifier parameter to give priority to the rotational speed / acceleration / deceleration.

When ECP is used, the trajectory of the external control point coresponding to the ECP number specified by ECP instruction moves straight with respect to the tool coordinate system. In this case, the trajectory of tool center point does not follow a straight line.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 465

Move Statement

TCP

Work

ECP

The optional Till qualifier allows the user to specify a condition to cause the robot to decelerate to a stop prior to completing the Move. The condition specified is simply a check against one of the inputs. This is accomplished through using the Sw instruction. The user can check if the input is On or Off and cause the arm to stop based on the condition specified. This feature works almost like an interrupt where the Move is interrupted (stopped) once the Input condition is met. If the input condition is never met during the Move then the arm successfully arrives on the point specified by

destination.

For more information about the Till qualifier see the Till command.

Notes

Move Cannot

Move cannot execute range verification of the trajectory prior to starting the move itself. Therefore, even for target positions that are within an allowable range, it is possible for the system to find a prohibited position along the way to a target point. In this case, the arm may abruptly stop which may cause shock and a servo out condition of the arm. To prevent this, be sure to perform range verifications at low speed prior to using Move at high speeds. In summary, even though the target position is within the range of the arm, there are some Moves which will not work because the arm cannot physically make it to some of the intermediate positions required during the Move.

Using Move with CP

The CP parameter causes the arm to move to

destination

without decelerating or stopping at the point defined by

destination

. This is done to allow the user to string a series of motion instructions together to cause the arm to move along a continuous path while maintaining a specific speed throughout all the motion. The Move instruction without CP always causes the arm to decelerate to a stop prior to reaching the point

destination.

Proper Speed and Acceleration Instructions with Move

The SpeedS and AccelS instructions are used to specify the speed and acceleration of the manipulator during Move motion. Pay close attention to the fact that SpeedS and AccelS apply to linear and circular interpolated motion while point to point motion uses the Speed and Accel instructions.

Potential Errors

Attempt to Change Only Tool Orientation

Changing only tool orientation during the move is impossible. If this is attempted, an error will occur. In this case, use the ROT parameter.

Joint Overspeed Errors

When the motion requested results in the speed of one of the axes to exceed its maximum allowable speed an overspeed error occurs. In the case of a motor overspeed error, the robot arm is brought to a stop and servo power is turned off.

466 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Move Statement

Attempt to Pass the Original Point (RS series)

It is impossible to operate the arm of RS series to pass near an original point. If attempted this, an overspeed error will occur. For the operation near an original point, take the following actions.

Lower the speed of SpeedS

Find a different path to prevent an original point

Use PTP motion such as Go command instead of Move command.

See Also

AccelS, Arc, CP, Go, Jump, Jump3, Jump3CP, SpeedS, Sw, Till

Move Statement Example

The example shown below shows a simple point to point move between points P0 and P1 and then moves back to P0 in a straight line. Later in the program the arm moves in a straight line toward point P2 until input #2 turns on. If input #2 turns On during the Move, then the arm decelerates to a stop prior to arriving on point P2 and the next program instruction is executed .

Function movetest

Home

Go P0

Go P1

Move

P0

Move

P2 Till Sw(2) = On

If Sw(2) = On Then

Print "Input #2 came on during the move and"

Print "the robot stopped prior to arriving on"

Print "point P2."

Else

Print "The move to P2 completed successfully."

Print "Input #2 never came on during the move."

EndIf

Fend

This example uses Move with CP. The diagram below shows arc motion which originated at the point

P100 and then moves in a straight line through P101, at which time the arm begins to form an arc. The arc is then continued through P102 and on to P103. Next the arm moves in a straight line to P104 where it finally decelerates to a stop. Note that the arm doesn't decelerate between each point until its final destination of P104. The following function would generate such a motion.

P102

P103

P104

P101

P100

Function CornerArc

Go P100

Move

P101 CP '

Do not stop at P101

Arc P102, P103 CP ' Do not stop at P103

Move

P104 '

Decelerate to stop at P104

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 467

MsgBox Statement

MsgBox Statement

Displays a message in a dialog box and waits for the operator to choose a button.

Syntax

MsgBox

message$

[

, type

] [,

title$

] [,

answer

]

Parameters

message$

The message that will be displayed.

type

Optional. A numeric expression that is the sum of values specifying the number and type of buttons to display, the icon style to use, the identity of the default button. EPSON RC+ 7.0 includes predefined constants that can be used for this parameter. The following table shows the values that can be used.

Symbolic constant Value Meaning

MB_OK

MB_OKCANCEL

MB_ABORTRETRYIGNORE 2

MB_YESNOCANCEL 3

0

1

MB_YESNO

MB_RETRYCANCEL

MB_ICONSTOP

MB_ICONQUESTION

MB_ICONEXCLAMATION

MB_DEFBUTTON1

MB_DEFBUTTON2

4

5

16

32

64

0

256

Display OK button only.

Display OK and cancel buttons.

Display Abort, Retry, and Ignore buttons.

Display Yes, No, and Cancel buttons.

Display Yes and No buttons.

Display Retry and Cancel buttons.

Stop sign.

Question mark.

Exclamation mark.

First button is default.

Second button is default.

title$

Optional. String expression that is displayed in the title bar of the message box.

answer

Optional. An integer variable that receives a value indicating the action taken by the operator.

EPSON RC+ 6.0 includes predefined constants that can be used for this parameter. The table below shows the values returned in

answer

.

Symbolic constant Value Meaning

IDOK

IDCANCEL

IDABORT

IDRETRY

3

4

1

2

OK button selected.

Cancel button selected.

Abort button selected.

Retry button selected.

IDYES

IDNO

6

7

Yes button selected.

No button selected.

Description

MsgBox automatically formats the message. If you want blank lines, use CRLF in the message. See the example.

See Also

InputBox

468 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

MsgBox Statement

MsgBox Statement Example

This example displays a message box that asks the operator if he/she wants to continue or not. The message box will display two buttons: Yes and No. A question mark icon will also be displayed. After

MsgBox returns (after the operator clicks a button), then the answer is examined. If it's no, then all tasks are stopped with the Quit command.

Function msgtest

String msg$, title$

Integer mFlags, answer

msg$ = Chr$(34) + "Operation complete" + Chr$(34) + CRLF

msg$ = msg$ + "Ready to continue?"

title$ = "Sample Application"

mFlags = MB_YESNO + MB_ICONQUESTION

MsgBox

msg$, mFlags, title$, answer

If answer = IDNO then

Quit All

EndIf

Fend

A picture of the message box that this code will create is shown below.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 469

MyTask Function

MyTask Function

Returns the task number of the current program.

Syntax

MyTask

Return Values

The task number of the current task. Valid entries are as below:

Normal task 1 to 32

Background tasks 65 to 80

Trap tasks 257 to 267

Description

MyTask returns the task number of the current program with a numeral. The MyTask instruction is inserted inside a specific program and when that program runs the MyTask function will return the task number that the program is running in.

See Also

Xqt

MyTask Function Example

The following program switches On and Off the I/O ports from 1 to 8.

Function main

Xqt 2, task '

Execute task 2.

Xqt 3, task ' Execute task 3.

Xqt 4, task ' Execute task 4.

Xqt 5, task ' Execute task 5.

Xqt 6, task ' Execute task 6.

Xqt 7, task '

Execute task 7.

Xqt 8, task ' Execute task 8.

Call task

Fend

Function task

Do

On

MyTask

' Switch On I/O port which has the same number as

' current task number

Off

MyTask

'

Switch Off I/O port which has the same number as

' current task number

Loop

Fend

470 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Next Statement

Next Statement

The For/Next instructions are used together to create a loop where instructions located between the For and

Next instructions are executed multiple times as specified by the user.

Syntax

For

var1

=

initval

To

finalval

[Step

Increment

]

statements

Next

var1

Parameters

var1 initval finalval

The counting variable used with the For/Next loop. This variable is normally defined as an integer but may also be defined as a Real variable.

The initial value for the counter

var1

.

The final value of the counter var1. Once this value is met, the For/Next loop is complete and execution continues starting with the statement following the Next instruction.

Increment

An optional parameter which defines the counting increment for each time the Next statement is executed within the For/Next loop. This variable may be positive or negative. However, if the value is negative, the initial value of the variable must be larger than the final value of the variable. If the increment value is left out the system automatically increments by 1.

statements

Return Values

None

Any valid SPEL + statements can be inserted inside the For/Next loop.

Description

For/Next executes a set of statements within a loop a specified number of times. The beginning of the loop is the For statement. The end of the loop is the Next statement. A variable is used to count the number of times the statements inside the loop are executed.

The first numeric expression (

initval)

is the initial value of the counter. This value may be positive or negative as long as the

finalval

variable and Step increment correspond correctly.

The second numeric expression (

finalval

) is the final value of the counter. This is the value which once reached causes the For/Next loop to terminate and control of the program is passed on to the next instruction following the Next instruction.

Program statements after the For statement are executed until a Next instruction is reached. The counter variable (

var1

) is then incremented by the Step value defined by the

increment

parameter. If the Step option is not used, the counter is incremented by one.

The counter variable (

var1

) is then compared with the final value (

finalval

). If the counter is less than or equal to the final value (

finalval

), the statements following the For instruction are executed again. If the counter variable is greater than the final value (

finalval

), execution branches outside of the For/Next loop and continues with the instruction immediately following the Next instruction.

Nesting of For/Next statements is supported up to 10 levels deep. This means that a For/Next Loop can be put inside of another For/Next loop and so on and so on until there are 10 "nests" of For/Next loops.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 471

Next Statement

Note

Negative Step Values

If the value of the Step increment (

increment

) is negative, the counter variable (var1) is decremented

(decreased) each time through the loop and the initial value (

initval

) must be greater than the final value

(

finalval

) for the loop to work.

See Also

For

Next Statement Example

Function fornext

Integer ctr

For ctr = 1 to 10

Go Pctr

Next ctr

'

For ctr = 10 to 1 Step -1

Go Pctr

Next ctr

Fend

472 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Not Operator

Not Operator

Performs the bitwise complement on the value of the operand.

Syntax

Not

o

perand

Parameters

operand

Integer expression.

Return Values

1’s complement of the value of the operand.

Description

The Not function performs the bitwise complement on the value of the operand. Each bit of the result is the complement of the corresponding bit in the operand, effectively changing 0 bits to 1, and 1 bits to 0.

See Also

Abs, And, Atan, Atan2, Cos, Int, LShift, Mod, Or, RShift, Sgn, Sin, Sqr, Str$, Tan, Val, Xor

Not Operator Example

This is a simple Command window example on the usage of the Not instruction.

>print

not

(1)

-2

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 473

Off Statement

Off Statement

Turns Off the specified output and after a specified time can turn it back on.

Syntax

Off

{

bitNumber

|

outputLabel

}, [

time

], [

parallel

] [,

Forced

]

Parameters

bitNumber

Integer expression representing which Output to turn Off.

outputLabel

Output label.

time

Optional. Specifies a time interval in seconds for the output to remain Off. After the time interval expires, the Output is turned back on. The minimum time interval is 0.01 seconds and maximum time interval is 10 seconds.

parallel

Optional. When a timer is set, the parallel parameter may be used to specify when the next command executes:

0 - immediately after the output is turned off

1 - after the specified time interval elapses. (default value)

Forced

Optional. Usually omitted.

Description

Off turns off (sets to 0) the specified output.

If the

time

interval parameter is specified, the output bit specified by

bitNumber

is switched off, and then switched back on after the

time

interval elapses. If prior to executing Off, the Output bit was already off, then it is switched On after the time interval elapses.

The

parallel

parameter settings are applicable when the time interval is specified as follows:

1: Switches the output off, switches it back on after specified interval elapses, then executes the next command. (This is also the default value for the parallel parameter. If this parameter is omitted, this is the same as setting the parameter to “1”.)

0: Switches the output off, and simultaneously executes the next command.

Notes

Output bits Configured as Remote Control output

If an output bit which was set up as a system output is specified, an error will occur. Remote control output bits are turned on or off automatically according to system status.

Outputs and When an Emergency Stop Occurs:

EPSON RC+ has a feature which causes all outputs to go off when an E-Stop occurs. If you want to keep the settings even in case of the emergency stop, this feature can be reconfigured from the [Outputs Off during emergency stop] checkbox in the [Setup]-[System Configuration]-[Controller]-[Preferences].

Forced Flag

This flag is used to turn Off the I/O output at Emergency Stop and Safety Door Open from NoPause task or

NoEmgAbort task (special task using NoPause or NoEmgAbort at Xqt).

Be sure that the I/O outputs change by Emergency Stop and Safety Door Open when designing the system.

474 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Off Statement

See Also

In, InBCD, MemOn, MemOff, MemOut, MemSw, OpBCD, Oport, Out, Wait

Off Statement Example

The example shown below shows main task start a background task called “iotask”. The “iotask” is a simple task to turn discrete output bits 1 and 2 on and then off, Wait 10 seconds and then do it again.

Function main

Xqt 2, iotask

Go P1

.

.

.

Fend

Function iotask

Do

On 1

On 2

Off 1

Off 2

Wait 10

Loop

Fend

Other simple examples from the Command window are as follows:

> on 1

> off 1, 10 ' Turn Output 1 off, wait 10 seconds, turn on again

> on 2

> off 2

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 475

OLAccel Statement

OLAccel Statement

Sets up the automatic adjustment of acceleration/deceleration that is adjusted according to the overload rating.

Syntax

OLAccel {On | Off}

Parameters

On | Off On: Enables the automatic adjustment of acceleration/deceleration that is adjusted according to the overload rating.

Off: Disables the automatic adjustment of acceleration/deceleration that is adjusted according to the overload rating.

Description

OLAccel can be used to enable the automatic adjustment function of acceleration and deceleration that is adjusted according to the robot loading rate (OLRate). When OLAccel is On, the acceleration and deceleration are automatically adjusted in accordance with the robot loading rate at PTP motion commands.

This is done to prevent the over load error by reducing the acceleration/deceleration automatically when the loading rate is exceeding a certain value at PTP motion. Heretofore, when users were executing motion with heavy duty that may cause over load error, users had to stop the robot by the program or adjust the speed and acceleration to prevent the error. OLAccel statement lessens these measures. However, this statement do not prevent over load error at all types of cycles. When the cycle has very heavy duty and load, the over load error may occur. In this case, users need to stop the robot or adjust the speed and acceleration. In some operation environment, the motor temperature may rise by operating the robot without over load error and result in over heat error.

This statement is unnecessary at proper load operation.

Use OLRate in the test cycle to check whether the over load error may occur or not.

The OLAccel value initializes to the default values (low acceleration) when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

Note

If OLAccel On is executed to a robot that does not support the automatic adjustment function of acceleration and deceleration, an error occurs.

See Also

OLAccel Function, OLRate

476 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OLAccel Statement Example

>

olaccel on

>

olaccel

OLACCEL is ON

Function main

Motor On

Power High

Speed 100

Accel 100, 100

OLAccel On

Xqt 2, MonitorOLRate

Do

Jump P0

Jump P1

Loop

Fend

Function MonitorOLRate

Do

'

Displays OLRate

OLRate

Wait 1

Loop

Fend

OLAccel Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 477

OLAccel Function

OLAccel Function

Returns the automatic adjustment setting.

Syntax

OLAccel

Return Values

Off = Automatic adjustment of acceleration/deceleration that is adjusted according to the overload rating is disabled.

On = Automatic adjustment of acceleration/deceleration that is adjusted according to the overload rating is enabled.

See Also

OLAccel, OLRate

OLAccel Function Example

If

OLAccel

= Off Then

Print “OLAccel is off”

EndIf

478 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OLRate Statement

OLRate Statement

Display overload rating for one or all joints for the current robot.

Syntax

OLRate

[

jointNumber

]

Parameters

jointNumber

Integer expression from 1 to 9.

The additional S axis is 8 and T axis is 9.

Description

OLRate can be used to check whether a cycle is causing stress on the servo system. Factors such as temperature and current can cause servo errors during applications with high duty cycles. OLRate can help to check if the robot system is close to having a servo error.

During a cycle, run another task to command OLRate. If OLRate exceeds 1.0 for any joint, then a servo error will occur.

Servo errors are more likely to occur with heavy payloads. By using OLRate during a test cycle, you can help insure that the speed and acceleration settings will not cause a servo error during production cycling.

To get valid readings, you must execute OLRate while the robot is moving.

See Also

OLRate Function

OLRate Statement Example

>

olrate

0.10000 0.20000

0.30000 0.40000

0.50000 0.60000

Function main

Power High

Speed 50

Accel 50, 50

Xqt 2, MonitorOLRate

Do

Jump P0

Jump P1

Loop

Fend

Function MonitorOLRate

Do

OLRate

'

Display OLRate

Wait 1

Loop

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 479

OLRate Function

OLRate Function

Returns overload rating for one joint for the current robot.

Syntax

OLRate(

jointNumber

)

Parameters

jointNumber

Integer expression from 1 to 9.

The additional S axis is 8 and T axis is 9.

Return Values

Returns the OLRate for the specified joint. Values are between 0.0 and 2.0.

Description

OLRate can be used to check whether a cycle is causing stress on the servo system. Factors such as temperature and current can cause servo errors during applications with high duty cycles. OLRate can help to check if the robot system is close to having a servo error.

During a cycle, run another task to command OLRate. If OLRate exceeds 1.0 for any joint, then a servo error will occur.

Servo errors are more likely to occur with heavy payloads. By using OLRate during a test cycle, you can help insure that the speed and acceleration settings will not cause a servo error during production cycling.

To get valid readings, you must execute OLRate while the robot is moving.

See Also

OLRate

OLRate Function Example

Function main

Power High

Speed 50

Accel 50, 50

Xqt 2, MonitorOLRate

Do

Jump P0

Jump P1

Loop

Fend

Function MonitorOLRate

Integer i

Real olRates(4)

Do

For i = 1 to 4

olRates(i) =

OLRate

(i)

If olRate(i) > .5 Then

Print "Warning: OLRate(", i, ") is over .5"

EndIf

Next i

Loop

Fend

480 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

On Statement

On Statement

Turns on the specified output and after a specified time can turn it back off

.

Syntax

On

{

bitNumber

|

outputLabel

}, [

time

], [

parallel

] [,

Forced

]

Parameters

bitNumber

Integer expression representing which Output to turn On.

outputLabel

Output label.

time parallel

Optional. Specifies a time interval in seconds for the output to remain On. After the time interval expires, the Output is turned back off. (Minimum time interval is 0.01 seconds)

Optional. When a timer is set, the parallel parameter may be used to specify when the next command executes:

0 - immediately after the output is turned on

1 - after the specified time interval elapses. (default value)

Forced

Optional. Usually omitted.

Description

On turns On (sets to 1) the specified output.

If the

time

interval parameter is specified, the output bit specified by

outnum

is switched On, and then switched back Off after the

time

interval elapses.

The

parallel

parameter settings are applicable when the time interval is specified as follows:

1: Switches the output On, switches it back Off after specified interval elapses, then executes the next command. (This is also the default value for the parallel parameter. If this parameter is omitted, this is the same as setting the parameter to “1”.)

0: Switches the output On, and simultaneously executes the next command.

Notes

Output bits Configured as remote

If an output bit which was set up as remote is specified, an error will occur. Remote output bits are turned

ON or OFF automatically according to system status. For more information regarding remote, refer to

EPSON RC+ User’s Guide

. The individual bits for the remote connector can be set as remote or I/O from

[Setup]-[System Configuration]-[Controller]-[Remote Control] panel.

Outputs and When an Emergency Stop Occurs

The Controller has a feature which causes all outputs to go off when an E-Stop occurs. If you want to keep the settings even in case of the emergency stop, this feature can be reconfigured from the [Outputs Off during emergency stop] checkbox in [Setup]-[System Configuration]-[Controller]-[Preferences].

Forced Flag

This flag is used to turn On the I/O output at Emergency Stop and Safety Door Open from NoPause task,

NoEmgAbort task (special task using NoPause or NoEmgAbort at Xqt), or background tasks.

Be sure that the I/O outputs change by Emergency Stop and Safety Door Open when designing the system.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 481

On Statement

See Also

In, InBCD, MemOff, MemOn, Off, OpBCD, Oport, Out, Wait

On Statement Example

The example shown below shows main task start a background task called “iotask”. The “iotask” is a simple task to turn discrete output bits 1 and 2 on and then off, Wait 10 seconds and then do it again.

Function main

Xqt iotask

Go P1

.

.

.

Fend

Function iotask

Do

On 1

On 2

Off 1

Off 2

Wait 10

Loop

Fend

Other simple examples from the command window are as follows:

> on 1

> off 1, 10 ' Turn Output 1 off, wait 10 seconds, turn on again

> on 2

> off 2

482 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OnErr Statement

OnErr Statement

Sets up interrupt branching to cause control to transfer to an error handing subroutine when an error occurs.

Allows users to perform error handling.

Syntax

OnErr GoTo

{

label

|

0

}

Parameters

label

Statement label to jump to when an error occurs.

0

Parameters used to clear OnErr setting.

Description

OnErr enables user error handling. When an error occurs without OnErr being used, the task is terminated and the error is displayed. However, when OnErr is used it allows the user to "catch" the error and go to an error handler to automatically recover from the error. Upon receiving an error, OnErr branches control to the designated label specified in the EResume instruction. In this way the task is not terminated and the user is given the capability to automatically handle the error. This makes work cells run much smoother since potential problems are always handled and recovered from in the same fashion.

When the OnErr command is specified with the “0” parameter, the current OnErr setting is cleared. (i.e.

After executing OnErr 0, if an error occurs program execution will stop)

See Also

Err, EResume

OnErr Statement Example

The following example shows a simple utility program which checks whether points P0-P399 exist. If the point does not exist, then a message is printed on the screen to let the user know this point does not exist.

The program uses the CX instruction to test each point for whether or not it has been defined. When a point is not defined control is transferred to the error handler and a message is printed on the screen to tell the user which point was undefined.

OnErr GoTo

errHandler

' Check if using undefined point

If errNum = 7007 Then

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 483

OpBCD Statement

OpBCD Statement

Simultaneously sets 8 output lines using BCD format. (Binary Coded Decimal)

Syntax

OpBCD

portNumber

,

outData

[,

Forced

]

Parameters

portNumber

Integer expression representing I/O output bytes. Where the

portNumber

selection corresponds to the following outputs:

outData

Forced

PortNumber

0

1

2

Outputs

0-7

8-15

16-23

3

...

24-31

...

Integer expression between 0 and 99 representing the output pattern for the output group selected by

portNumber

. The 2nd digit (called the 1's digit) represents the lower 4 outputs in the selected group and the 1st digit (called the 10's digit) represents the upper 4 outputs in the selected group.

Optional. Usually omitted.

Description

OpBCD simultaneously sets 8 output lines using the BCD format. The standard and expansion user outputs are broken into groups of 8. The

portNumber

parameter for the OpBCD instruction defines which group of 8 outputs to use where

portNumber

= 0 means outputs 0 to 7,

portNumber

= 1 means outputs 8 to

15, etc.

Once a port number is selected (i.e. a group of 8 outputs has be selected), a specific output pattern must be defined. This is done in Binary Coded Decimal format using the

outdata

parameter. The outdata parameter may have 1 or 2 digits. (Valid entries range from 0 to 99.) The 1st digit (or 10's digit) corresponds to the upper 4 outputs of the group of 8 outputs selected by

portNumber

. The 2nd digit (or 1's digit) corresponds to the lower 4 outputs of the group of 8 outputs selected by

portNumber

.

Since valid entries in BCD format range from 0 to 9 for each digit, every I/O combination cannot be met.

The table below shows some of the possible I/O combinations and their associated

outnum

values assuming that

portNumber

is 0.

Output Settings (Output number)

Outnum Value

01

02

03

08

09

10

11

99

7 6 5 4 3 2 1 0

Off Off Off Off Off Off Off On

Off Off Off Off Off Off On Off

Off Off Off Off Off Off On On

Off Off Off Off On Off Off Off

Off Off Off Off On Off Off On

Off Off Off On Off Off Off Off

Off Off Off On Off Off Off On

On Off Off On On Off Off On

Note that the Binary Coded Decimal format only allows decimal values to be specified. This means that through using Binary Coded Decimal format it is impossible to turn on all outputs with the OpBCD instruction. Please note that the maximum value for either digit for outnum is “9”. This means that the largest value possible to use with OpBCD is “99”. In the table above it is easy to see that “99” does not turn all Outputs on. Instead it turns outputs 0, 3, 4, and 7 On and all the others off.

484 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OpBCD Statement

Notes

Difference between OpBCD and Out

The OpBCD and Out instructions are very similar in the SPEL

+

language. However, there is one major difference between the two. This difference is shown below:

- The OpBCD instruction uses the Binary Coded Decimal format for specifying an 8 bit value to use for turning the outputs on or off. Since Binary Coded Decimal format precludes the values of &HA, &HB,

&HC, &HD, &HE or &HF from being used, all combinations for setting the 8 output group cannot be satisfied.

- The Out instruction works very similarly to the OpBCD instruction except that Out allows the range for the 8 bit value to use for turning outputs on or off to be between 0 and 255 (0 to 99 for OpBCD). This allows all possible combinations for the 8 bit output groups to be initiated according to the users specifications.

Output bits Configured as Remote:

If an output bit which was set up as remote is specified to be turned on by OpBCD, an error will occur.

Remote output bits are turned On or Off automatically according to system status. For more information regarding remote, refer to

EPSON RC+ User’s Guide

. The individual bits for the remote connector can be set as remote or I/O from [Setup]-[System Configuration]-[Controller]-[Remote Control] panel.

Outputs and When an Emergency Stop Occurs:

The Controller has a feature which causes all outputs to go off when an E-Stop occurs. This feature is set or disabled from the [Outputs Off during emergency stop] checkbox in the [Setup]-[System Configuration]-

[Controller]-[Preferences].

Forced Flag

This flag is used to turn On the I/O output at Emergency Stop and Safety Door Open from NoPause task,

NoEmgAbort task (special task using NoPause or NoEmgAbort at Xqt), or background tasks.

Be sure that the I/O outputs change by Emergency Stop and Safety Door Open when designing the system.

See Also

In, InBCD, MemOff, MemOn, MemSw, Off, On, Oport, Out, Sw, Wait

OpBCD Function Example

The example shown below shows main task start a background task called “iotask”. The “iotask” is a simple task to flip flop between turning outputs 1 & 2 on and then outputs 0 and 3 on. When 1 & 2 are turned on, then 0 & 3 are also turned off and vice versa.

Function main

Xqt 2, iotask

Go P1

.

.

Fend

Function iotask

Do

OpBCD

0, 6

OpBCD

0, 9

Wait 10

Loop

Fend

Other simple examples from the command window are as follows:

>

OpBCD

1,6 ' Turns on Outputs 1 and 2

>

OpBCD

2,1 ' Turns on Output 8

>

OpBCD

3, 91 ' Turns on Output 24, 28, and 31

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 485

OpenDB Statement

OpenDB Statement

Opens a database or Excel workbook.

Syntax

OpenDB

#fileNumber

, {

SQL | Accel | Eccel

} [,

DBserverName

As String ],

{

DBname

As String |

filename

As String }

Parameters

fileNumber

SQL | Accel | Eccel

DBserverName

Integer number from 501 to 508

Selects a database type you want to open from [SQL], [Access], and [Excel].

DBname

|

filename

If you select [SQL], the SQL server name is specified.

If omitted, LOCAL server is specified. The SQL server on the network cannot be specified.

If you select [Access] or [Excel], the SQL server name is not specified.

If you select [SQL] as a database, a database name on the SQL server is specified.

If you select [Access], Access file name is specified.

If omitted the path of Access file name, it searches in the current folder.

See ChDisk for the details.

If you select [Excel], Excel file name is specified.

You can specify Excel 2007 book or Excel 97-2003 book file as Excel file.

If you omitted Excel file name, it searches in the current folder.

See ChDisk for the details.

Description

Opens the specified database using the specified file number.

The specified database must exist on the disk of PC with installed RC+. Otherwise, it causes an error. The specified file number can be used to identify the database while it is open, but cannot be used to refer to the different database until you close the database with the CloseDB command. The file number is used with the database operation commands (SelectDB, Print#, Input#, CloseDB).

Access and Excel files of Microsoft office 2010 64-bit cannot be used.

Note

- Connection of PC with installed RC+ is required.

See Also

SelectDB, CloseDB, UpdateDB, DeleteDB, Input #, Print #

OpenDB Statement Example

Using the SQL database

The following example uses the SQL server 2000 sample database, Northwind and loads the data from a table.

Integer count, i, eid

String Lastname$, Firstname$, Title$

OpenDB

#501, SQL, "(LOCAL)", "Northwind" count = SelectDB(#501, "Employees")

For i = 0 To count - 1

Input #501, eid, Lastname$, Firstname$, Title$

Print eid, ",", Lastname$, ",", Firstname$, ",", Title$

Next

CloseDB #501

486 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OpenDB Statement

Using Access database

The following example uses Microsoft Access 2007 sample database “Students” and loads the data from a table.

Integer count, i, eid

String Lastname$, Firstname$, dummy$

OpenDB #502, Access, "c:\MyDataBase\Students.accdb" count = SelectDB(#502, "Students")

For i = 0 To count - 1

Input #502, eid, dummy$, Lastname$, Firstname$

Print eid, ",", Lastname$, ",", Firstname$

Next

CloseDB #502

Using Excel workbook

The following example uses Microsoft Excel workbook “StudentsList“ and loads the data from a sheet.

Integer count, i, eid

String Lastname$, Firstname$

OpenDB

#503, Excel, "c:\MyDataBase\Students.xls" count = SelectDB(#503, "[Students$]")

For i = 0 To count - 1

Input #503, eid, Lastname$, Firstname$

Print eid, ",", Lastname$, ",", Firstname$

Next

CloseDB #503

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 487

OpenCom Statement

OpenCom Statement

Open an RS-232 communication port.

Syntax

OpenCom

#

portNumber

Parameters

portNumber

Integer expression for RS-232C port number to open.

The range of port number is:

Real Part

Windows Part

1 to 8

1001 to 1008

Description

You need to connect the specified RS-232C port to the controller.

To use the SPEL + real part ports, option board must be installed to the Controller.

To use Windows part ports, RC+ setting must be done. For details, refer to the description about RC-232C in the

EPSON RC+ User’s Guide 5.12 [Setup] Menu

.

See Also

ChkCom, CloseCom, SetCom

OpenCom Statement Example

Integer PortNo

PortNo = 1001

OpenCom

#PortNo

Print #PortNo, "Data from COM1"

CloseCom #PortNo

488 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OpenCom Function

Acquires the task number that executes OpenCom.

Syntax

OpenCom

(

portNumber

)

Parameters

portNumber

Integer expression for RS-232C port number.

The range of port number is:

Real Part

Windows Part

1 to 8

1001 to 1008

Description

Acquires the task number that executes OpenCom.

See Also

ChkCom, CloseCom, OpenCom, SetCom

OpenCom Function Example

Print

OpenCom

(PortNo)

OpenCom Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 489

OpenNet Statement

OpenNet Statement

Open a TCP/IP network port.

Syntax

OpenNet

#

portNumber

As

{

Client

|

Server

}

Parameters

portNumber

Integer expression for TCP/IP port number to open. Range is from 201 to 216.

Description

OpenNet opens a TCP/IP port for communication with another computer on the network.

One system should open as Server and the other as Client. It does not matter which one executes first.

See Also

ChkNet, CloseNet, SetNet

OpenNet Statement Example

For this example, two controllers have their TCP/IP settings configured as follows:

Controller #1:

Port: #201

Host Name: 192.168.0.2

TCP/IP Port: 1000

Function tcpip

OpenNet

#201 As Server

WaitNet #201

Print #201, "Data from host 1"

Fend

Controller #2:

Port: #201

Host Name: 192.168.0.1

TCP/IP Port: 1000

Function tcpip

String data$

OpenNet

#201 As Client

WaitNet #201

Input #201, data$

Print "received '", data$, "' from host 1"

Fend

490 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OpenNet Function

OpenNet Function

Acquires the task number that executes OpenNet.

Syntax

OpenNet

(

portNumber

)

Parameters

portNumber

Integer expression for TCP/IP port number. Range is from 201 to 216.

Description

Acquires the task number that executes OpenNet.

See Also

ChkNet, CloseNet, OpenNet, SetNet

OpenNet Function Example

Print

OpenNet

(PortNo)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 491

Oport Function

Oport Function

Returns the state of the specified output.

Syntax

Oport(

outnum

)

Parameters

outnum

Integer expression representing I/O output bits.

Return Values

Returns the specified output bit status as either 0 or 1.

0: Off status

1: On status

Description

Oport provides a status check for the outputs. It functions much in the same way as the Sw instruction does for inputs. Oport is most commonly used to check the status of one of the outputs which could be connected to a feeder, conveyor, gripper solenoid, or a host of other devices which works via discrete I/O.

Obviously the output checked with the Oport instruction has 2 states (1 or 0). These indicate whether the specified output is On or Off.

Note

Difference between Oport and Sw

It is very important for the user to understand the difference between the Oport and Sw instructions. Both instructions are used to get the status of I/O. However, the type of I/O is different between the two. The

Sw instruction works inputs. The Oport instruction works with the standard and expansion hardware outputs. These hardware ports are discrete outputs which interact with devices external to the controller.

See Also

In, InBCD, MemIn, MemOn, MemOff, MemOut, MemSw, Off, On, OpBCD, Out, Sw, Wait

492 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Oport Function

OPort Function Example

The example shown below turns on output 5, then checks to make sure it is on before continuing.

Function main

TMOut 10

OnErr errchk

Integer errnum

On 5 ' Turn on output 5

Wait

Oport

(5)

Call mkpart1

Exit Function errchk:

errnum = Err(0)

If errnum = 94 Then

Print "TIME Out Error Occurred during period"

Print "waiting for Oport to come on. Check"

Print "Output #5 for proper operation. Then"

Print "restart this program."

Else

Print "ERROR number ", errnum, "Occurred"

Print "Program stopped due to errors!"

EndIf

Exit Function

Fend

Other simple examples are as follows from the command window:

> On 1

> Print

Oport

(1)

1

> Off 1

> Print

Oport

(1)

0

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 493

Or Operator

Or Operator

Performs a bitwise or logical OR operation on two operands.

Syntax

expr1

Or

expr2

Parameters

expr1, exrp2

Integer or Boolean expressions.

Return Values

Bitwise OR value of the operands if the expressions are integers. Logical OR if the expressions are

Boolean.

Description

For integer expressions, the Or operator performs the bitwise OR operation on the values of the operands.

Each bit of the result is 1 if one or both of the corresponding bits of the two operands is 1. For Boolean expressions, the result is True if either of the expressions evaluates to True.

See Also

And, LShift, Mod, Not, RShift, Xor

Or Operator Example

Here is an example of a bitwise OR.

>print 1

or

2

3

Here is an example of a logical OR.

If a = 1

Or

b = 2 Then c = 3

EndIf

494 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Out Statement

Out Statement

Simultaneously sets 8 output bits.

Syntax

Out

portNumber, outData

[,

Forced

]

Parameters

portNumber

Integer expression representing I/O output bytes. The portnum selection corresponds to the following outputs:

Portnum

0

1

...

Outputs

0-7

8-15

...

outData

Integer number between 0 and 255 representing the output pattern for the output group selected by

portNumber

. If represented in hexadecimal form the range is from &H0 to &HFF.

The lower digit represents the least significant digits (or the 1st 4 outputs) and the upper digit represents the most significant digits (or the 2nd 4 outputs).

Forced

Optional. Usually omitted.

Description

Out simultaneously sets 8 output lines using the combination of the

portNumber

and

outdata

values specified by the user to determine which outputs will be set. The

portNumber

parameter defines which group of 8 outputs to use where

portNumber

= 0 means outputs 0 to 7,

portNumber

= 1 means outputs 8 to

15, etc.

Once a portnum is selected (i.e. a group of 8 outputs has be selected), a specific output pattern must be defined. This is done using the

outData

parameter. The

outData

parameter may have a value between 0 to

255 and may be represented in Hexadecimal or Integer format. (i.e. &H0 to &HFF or 0 to 255)

The table below shows some of the possible I/O combinations and their associated

outData

values assuming that

portNumber

is “0”, and “1” accordingly.

Output Settings When

portNumber

=0 (Output number)

OutData Value 7 6 5 4 3 2 1 0

Off Off Off Off Off Off Off On 01

02

03

08

09

10

11

99

255

Off Off Off Off Off Off On Off

Off Off Off Off Off Off On On

Off Off Off Off On Off Off Off

Off Off Off Off On Off Off On

Off Off Off On Off Off Off Off

Off Off Off On Off Off Off On

Off On On Off Off Off On On

On On On On On On On On

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 495

Out Statement

Output Settings When

portNumber

=1 (Output number)

OutData Value 15 14 13 12 11 10 9 8

Off Off Off Off Off Off Off On

Off Off Off Off Off Off On Off

Off Off Off Off Off Off On On

Off Off Off Off On Off Off Off

Off Off Off Off On Off Off On

Off Off Off On Off Off Off Off

Off Off Off On Off Off Off On

Off On On Off Off Off On On

On On On On On On On On

01

02

03

08

09

10

11

99

255

Notes

Difference between OpBCD and Out

The Out and OpBCD instructions are very similar in the SPEL

+

language. However, there is one major difference between the two. This difference is shown below:

- The OpBCD instruction uses the Binary Coded Decimal format for specifying 8 bit value to use for turning the outputs on or off. Since Binary Coded Decimal format precludes the values of &HA, &HB,

&HC, &HD, &HE or &HF from being used, all combinations for setting the 8 output group cannot be satisfied.

- The Out instruction works very similarly to the OpBCD instruction except that Out allows the range for the 8 bit value to use for turning outputs on or off to be between 0 and 255 (0 to 99 for OpBCD). This allows all possible combinations for the 8 bit output groups to be initiated according to the users specifications.

Forced Flag

This flag is used to turn On the I/O output at Emergency Stop and Safety Door Open from NoPause task,

NoEmgAbort task (special task using NoPause or NoEmgAbort at Xqt), or background tasks.

Be sure that the I/O outputs change by Emergency Stop and Safety Door Open when designing the system.

See Also

In, InBCD, MemOff, MemOn, MemOut, MemSw, Off, On, Oport, Sw, Wait

Out Statement Example

The example shown below shows main task start a background task called “iotask”. The “iotask” is a simple task to flip flop between turning output bits 0 to 3 On and then Off. The Out instruction makes this possible using only 1 command rather than turning each output On and Off individually.

Function main

Xqt iotask

Do

Go P1

Go P2

Loop

Fend

Function iotask

Do

Out

0, &H0F

Out

0, &H00

Wait 10

Loop

Fend

496 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Other simple examples from the command window are as follows:

>

Out

1,6 '

Turns on Outputs 9 & 10

>

Out

2,1 ' Turns on Output 8

>

Out

3,91 ' Turns on Outputs 24, 25, 27, 28, and 30

Out Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 497

Out Function

Out Function

Returns the status of one byte of outputs.

Syntax

Out(

portNumber

)

Parameters

portNumber

Integer expression representing I/O output bytes. Where the corresponds to the following outputs:

portNumber

selection

Portnum

0

1

...

Outputs

0-7

8-15

...

Return Values

The output status 8 bit value for the specified port.

See Also

Out Statement

Out Function Example

Print

Out

(0)

498 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OutReal Statement

OutReal Statement

The output data of real value is the floating-point data (IEEE754 compliant) of 32 bits.

Set the status of output port 2 word (32 bits).

Syntax

OutReal

WordPortNumber

,

OutputData

[,

Forced

]

Parameters

WordPortNumber

Integer expression representing I/O output words.

OutputData

Forced

Specifies the integer expression representing the output data (Real type value).

Optional. Normally omitted.

Description

Outputs the specified IEEE754 Real value to the output word port specified by word port number and the following output word port.

Output word label can be used for the word port number parameter.

Note

Forced Flag

This flag is used to turn On the I/O output at Emergency Stop and Safety Door Open from NoPause task or

NoEmgAbort task (special task initiated by specifying NoPause or NoEmgAbort at Xqt).

Carefully design the system because the I/O output changes by Emergency Stop and Safety Door Open.

See Also

In, InW, InBCD, InReal, Out, OutW, OpBCD, OutReal Function

OutReal Statement Example

OutReal

32, 2.543

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 499

OutReal Function

OutReal Function

Retrieve the output port status as the 32 bits floating-point data (IEEE754 compliant).

Syntax

OutReal

(

WordPortNumber

)

Parameters

WordPortNumber

Integer expression representing I/O output words.

Return Values

Returns the specified output port status in 32 bits floating-point data (IEEE754 compliant).

See Also

In, InW, InBCD, InReal, Out, OutW, OpBCD, OutReal

OutReal Function Example

Real rdata01 rdata01 =

OutReal

(0)

500 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

OutW Statement

OutW Statement

Simultaneously sets 16 output bits.

Syntax

OutW

wordPortNum, outputData

[,

Forced

]

Parameters

wordPortNum outputData

Forced

Integer expression representing I/O output words.

Specifies output data (integers from 0 to 65535) using an expression or numeric value.

Optional. Usually omitted.

Description

Changes the current status of user I/O output port group specified by the word port number to the specified output data.

Note

Forced Flag

This flag is used to turn On the I/O output at Emergency Stop and Safety Door Open from NoPause task,

NoEmgAbort task (special task using NoPause or NoEmgAbort at Xqt), or background tasks.

Be sure that the I/O outputs change by Emergency Stop and Safety Door Open when designing the system.

See Also

In, InW, Out

OutW Statement Example

OutW

0, 25

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 501

OutW Function

OutW Function

Returns the status of one word (2 bytes) of outputs.

Syntax

OutW(

wordPortNum

)

Parameters

wordPortNum

Integer expression representing I/O output words.

Return Values

The output status 16 bit value for the specified port.

See Also

OutW Statement

OutW Function Example

OutW

0, &H1010

502 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

P# (1. Point Definition)

P# (1. Point Definition)

Defines a robot point by assigning it to a point expression.

Syntax

point

=

pointExpr pointLabel

=

pointExpr

Parameters

point

Expression including numeric number or ( ) (parenthesis)

P

number

P

(expr)

Point label

pointLabel pointExpr

One of the following point data

P point number, Point label, Here, Pallet, Point data function

(Here function, XY function, JA function, Pulse function, etc..)

For details of

pointExpr,

refer to

P# (2. Point Expression)

Description

Define a robot point by setting it equal to another point or point expression.

See Also

Local, Pallet, PDef, PDel, Plist

Point Definition Example

The following examples are done from the command window:

Assign coordinates to P1:

> P1 = 300,200,-50,100

Specify left arm posture:

> P2 = -400,200,-80,100/L

Add 20 to X coordinate of P2 and define resulting point as P3:

> P3 = P2 +X(20)

> plist 3

P3=-380,200,-80,100/L

Subtract 50 from Y coordinate of P2, substitute -30 for Z coordinate, and define the resulting point P4 as right arm posture:

>P4=P2 -Y(50) :Z(-30) /R

> plist 4

P4 = XY(-450,200,-30,100)/R

Add 90 to U coordinate of Pallet(3, 5), and define resulting point as P6:

> P5 = Here

> P6 = pallet(3,5) +U(90)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 503

P# (2. Point Expression)

P# (2. Point Expression)

Specifies a robot point for assignment and motion commands.

Syntax

point

[ {

+ | -

}

point

] [

local

] [

hand

] [

elbow

] [

wrist

] [

j4flag

] [

j6flag

] [

j1flag

] [

j2flag

] [

relativeOffsets

]

[

absoluteCoords

]

Parameters

point local

The base point specification. This can be one of the following:

P

number

P

(

expr

)

pointLabel

Pallet

(

palletNumber

,

palletIndex

)

Here

XY

(

X

,

Y

,

Z

,

U,

[

V

], [

W

])

JA

(

J1, J2, J3, J4,

[

J5

], [

J6

])

Pulse

(

J1, J2, J3, J4,

[

J5

], [

J6

])

Optional. Local number from 1 to 15 preceded by a forward slash (

/0

to

/15

) or at sign

(

@0

to

@15

). The forward slash means that the coordinates will be in the local. The at sign means that the coordinates will be translated into local coordinates.

hand

Optional for SCARA robot (including RS series) and 6-axis robots (including N series).

Specify /

L

or /

R

for lefty or righty hand orientation.

elbow wrist j4flag j6flag j1flag j2flag j1angle j4angle

Optional for 6-axis robots (including N series).

Specify /

A

or /

B

for above or below orientation.

Optional for 6-axis robots (including N series).

Specify /

F

or /

NF

for flip or no flip orientation.

Optional for 6-axis robots (including N series).

Specify /

J4F0

or

/J4F1

.

Optional for 6-axis robots (including N series).

Specify /

J6F0

- /

J6F127

.

Optional for RS series and 6-axis robots (excluding N series). Specify /

Optional for RS series. Specify /

Optional for RS and N series. Specify /

Optional for N series. Specify /

J2F0

J4A

- /

J2F127

J1A

.

(real value).

(real value).

relativeOffsets

Optional. One or more relative coordinate adjustments.

{

+

|

-

} {

X

|

Y

|

Z

|

U

|

V

|

W

|

RZ

|

RY

|

RX

|

R

|

S

|

T

|

ST

}

(

expr

)

The TL offsets are relative offsets in the current tool coordinate system.

{

+

|

-

} {

TLX

|

TLY

|

TLZ

|

TLU | TLV | TLW

}

(

expr

)

absoluteCoords

Optional. One or more absolute coordinates.

:

{

X

|

Y

|

Z

|

U | V | W | R | S | T | ST

}

(

expr

)

Description

Point expressions are used in point assignment statements and motion commands.

Go P1 + P2

P1 = P2 + XY(100, 100, 0, 0)

J1F0

or

/J1F1

.

504 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

P# (2. Point Expression)

Using relative offsets

You can offset one or more coordinates relative to the base point. For example, the following statement moves the robot 20 mm in the positive X axis from the current position:

Go Here +X(20)

If you execute the same statement again, the robot will move an additional 20 mm along the X axis, because this is a relative move.

To make a relative rotation around the coordinate axis of the 6-axis robots (including N series), execute the statement as follows. The following statement rotates the tool 20 degrees in the X-axis positive direction based on the current tool orientation.

Go Here +RX(20)

You can also use relative tool offsets:

Go Here +TLX(20) -TLY(5.5)

When the 6-axis robot (including N series) moves to a point calculated by such as pallet or relative offsets, the wrist part may rotate to an unintended direction. The point calculation above does not depend on robot models and results in motion without converting the required point flag.

LJM function prevents the unintended wrist rotation.

Go LJM(Here +X(20))

Using absolute coordinates

You can change one or more coordinates of the base point by using absolute coordinates. For example, the following statement moves the robot to the 20 mm position on the X axis:

Go Here :X(20)

If you execute the same statement again, the robot will not move because it is already in the absolute position for X from the previous move.

Relative offsets and absolute coordinates make is easy to temporarily modify a point. For example, this code moves quickly above the pick point by 10 mm using a relative offset for Z or 10 mm, then moves slowly to the pick point.

Speed fast

Jump pick +Z(10)

Speed slow

Go pick

This code moves straight up from the current position by specifying an absolute value of 0 for the Z joint:

LimZ 0

Jump Here :Z(0)

Using Locals

You can specify a local number using a forward slash or at sign. Each has a separate function.

Use the forward slash to mark the coordinates in a local. For example, adding a /1 in the following statement says that P1 will be at location 0,0,0,0 in local 1.

P1 = XY(0, 0, 0, 0) /1

Use the at sign to translate the coordinates into local coordinates.

For example, here is how to set the current position to P1:

P1 = Here @1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 505

P# (2. Point Expression)

See Also

Go, LJM, Local, Pallet, Pdel, Plist, Hand, Elbow, Wrist, J4Flag, J6Flag, J1Flag, J2Flag

Point Expression Example

Here are some examples of using point expressions in assignments statements and motion commands:

P1 = XY(300,200,-50,100)

P2 = P1 /R

P3 = pick /1

P4 = P5 + P6

P(i) = XY(100, 200, CZ(P100), 0)

Go P1 -X(20) :Z(-20) /R

Go Pallet(1, 1) -Y(25.5)

Move pick /R

Jump Here :Z(0)

Go Here :Z(-25.5)

Go JA(25, 0, -20, 180) pick = XY(100, 100, -50, 0)

P1 = XY(300,200,-50,100, -90, 0)

P2 = P1 /F /B

P2 = P1 +TLV(25)

506 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PAgl Function

PAgl Function

Returns a joint value from a specified point.

Syntax

PAgl

(

point

,

jointNumber)

Parameters

point jointNumber

Point expression.

Specifies the joint number (integer from 1 to 9) using an expression or numeric value.

The additional S axis is 8 and T axis is 9.

Return Values

Returns the calculated joint position (real value, deg for rotary joint, mm for prismatic joint).

See Also

Agl, CX, CY, CZ, CU, CV, CW, CR, CS, CT, PPls

PAgl Function Example

Real joint1 joint1 =

PAgl

(P10, 1)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 507

Pallet Statement

Pallet Statement

Defines and displays pallets.

Syntax

(1)

Pallet

[

Outside

,] [

palletNumber, P1, P2, P3

[,

P4

],

columns, rows

]

(2)

Pallet

[

Outside

,]

palletNumber

,

coordinateData

1,

coordinateData

2,

coordinateData

3

[,

coordinateData

4 ],

columns

1,

rows

2

(3)

Pallet

Parameters

Outside

Optional. Allow row and column indexes outside of the range of the specified rows and columns.

palletNumber

P1, P2, P3

P4

Pallet number represented by an integer number from 0 to 15.

Point variables which define standard 3 point pallet position.

columns rows

Optional. Point variable which is used with P1, P2 and P3 to define 4 point pallet.

Integer expression representing the number of points on the P1(

coordinateData

1)-to-P2(

coordinateData 2

) side of the pallet. Range is from 1 to 32767.

Integer expression representing the number of points on the P1(

coordinateData

1)-to-P3(

coordinateData

3) side of the pallet. Range is from 1 to 32767.

coordinateData1, 2, 3

Point data which is used for pallet definition (standard 3-point definition)

coordinateData 4

Optional. Point data which is used with coordinateData 1 to 3 for 4-point pallet definition.

Return Values

(3) Displays all defined pallets when parameters are omitted.

Description

Defines a pallet by teaching the robot, as a minimum, points P1 (

coordinateData

1), P2 (

coordinateData

2) and P3 (

coordinateData

3) and by specifying the number of points from P1 (

coordinateData

1)to P2

(

coordinateData 2

) and from P1 (

coordinateData

1) to P3 (

coordinateData

3).

If the pallet is a well ordered rectangular shape, only 3 of the 4 corner points need to be specified. However, in most situations it is better to use 4 corner points for defining a pallet.

To define a pallet, first teach the robot either 3 or 4 corner points, then define the pallet as follows:

A pallet defined with 4 points: P1, P2, P3 and P4 is shown below. There are 3 positions from P1-P2 and 4 positions from P1-P3. This makes a pallet which has 12 positions total. To define this pallet the syntax is as follows:

Pallet 1, P1, P2, P3, P4, 3, 4

P3 P4

2

10 11 12

7 8 9

4 5 6

1 2 3

P1 P2

508 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Pallet Statement

-2,10

Sample

1,6 4,6

1,5

1,4

1,3

1,2

1,1

2,5

2,4

2,3

2,2

2,1

3,5

3,4

3,3

3,2

3,1

4,5

4,4

4,3

4,2

4,1

-1,4 1,4 2,4 3,4 4,4 6,4

1,3 2,3 3,3 4,3

1,2 2,2 3,2 4,2

-1,1 1,1 2,1 3,1 4,1 6,1

1,-1 4,-1

Points that represent divisions of a pallet are automatically assigned division numbers, which, in this example, begin at P1. These division numbers are also required by the Pallet Function.

When Outside is specified, row and column indexes outside of the range of rows and columns can be specified.

For example:

Pallet Outside 1, P1, P2, P3, 4, 5

Jump Pallet(1, -2, 10)

Notes

The Maximum Pallet Size

The total number of points defined by a specific pallet must be less than 32,767.

Incorrect Pallet Shape Definitions

Be aware that incorrect order of points or incorrect number of divisions between points will result in an incorrect pallet shape definition.

Pallet Plane Definition

The pallet plane is defined by the Z axis coordinate values of the 3 corner points of the pallet. Therefore, a vertical pallet could also be defined.

Pallet Definition for a Single Row Pallet

A single row pallet can be defined with a 3 point Pallet statement or command. Simply teach a point at each end and define as follows: Specify 1 as the number of divisions between the same point.

> Pallet 2, P20, P21, P20, 5, 1 ' Defines a 5

×

1 pallet

UVW Coordinate Values

When the UVW coordinate values of the 3 (or 4) points specified with the Pallet statement vary, the UVW coordinate values of the point 1 and the coordinate system data 1 are used.

The UVW coordinate values of the point numbers from 2 to 4 and the coordinate system numbers from 2 to

4 are ignored.

Additional Axes Coordinate Values

When the coordinate values of the 3 (or 4) points specified with the Pallet statement include the additional

ST axis coordinate values, Pallet includes these additional coordinates in the position calculations. In the case where the additional axis is used as the running axis, the motion of the running axis is considered and calculated with the Pallet definition. You need to define a pallet larger than the robot motion range considering the position of the running axis. Even if you define additional axes that are not affected by the pallet definition, be careful of the positions of additional axes when defining the pallet.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 509

Pallet Statement

See Also

Pallet Function

Pallet Statement Example

The following instruction from the command window sets the pallet defined by P1, P2 and P3 points, and divides the pallet plane into 15 equally distributed pallet point positions, with the pallet point number 1, the pallet point number 2 and the pallet point number 3 sitting along the P1-to-P2 side.

>

pallet

1, P1, P2, P3, 3, 5

> jump

pallet

(1, 2) ' Jump to position on pallet

The resulting Pallet is shown below:

P3

13 14 15

10 11 12

7 8 9

4 5 6

1 2 3

P1 P2

510 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Pallet Function

Pallet Function

Specifies a position in a previously defined pallet.

Syntax

(1)

Pallet (

palletNumber

,

palletPosition

)

(2)

Pallet (

palletNumber

,

column, row

)

Parameters

palletNumber

PalletPosition column row

Pallet number represented by integer expression from 0 to 15.

The pallet position represented by an integer from 1 to 32767.

The pallet column represented by an integer expression from

The pallet row represented by an integer expression from −

− 32768 to 32767.

32768 to 32767.

Description

Pallet returns a position in a pallet which was previously defined by the Pallet statement. Use this function with motion commands such as Go and Jump to cause the arm to move to the specified pallet position.

The pallet position number can be defined arithmetically or simply by using an integer.

Notes

Pallet Motion of 6-axis Robot (including N series)

When the 6-axis robot (including N series) moves to a point calculated by such as pallet or relative offsets, the wrist part may rotate to an unintended direction. The point calculation above does not depend on robot models and results in motion without converting the required point flag.

LJM function prevents the unintended wrist rotation.

Pallet Motion of RS series

In the same way as the 6-axis, when the RS series robot moves to a point calculated by such as pallet or relative offsets, Arm #1 may rotate to an unintended direction. LJM function can be used to convert the point flag to prevent the unintended rotation of Arm #1.

In addition, the U axis of RS series may go out of the motion range when the orientation flag is converted, and it causes an error.

To prevent this error, LJM function adjusts the U axis target angle to inside the motion range. It is available when the orientation flag “2” is selected.

UVW Coordinate Values

When the UVW coordinate values of the 3 (or 4) points specified with the Pallet statement vary, the UVW coordinate values of the point 1 and the coordinate system data 1 are used.

The UVW coordinate values of the point numbers from 2 to 4 and the coordinate system numbers from 2 to

4 are ignored.

Additional Axes Coordinate Values

When the coordinate values of the 3 (or 4) points specified with the Pallet statement include the additional

ST axis coordinate values, Pallet includes these additional coordinates in the position calculations. In the case where the additional axis is used as the running axis, the motion of the running axis is considered and calculated with the Pallet definition. You need to define a pallet larger than the robot motion range considering the position of the running axis. Even if you define additional axes that are not affected by the pallet definition, be careful of the positions of additional axes when defining the pallet.

See Also

LJM, Pallet

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 511

Pallet Function

Pallet Function Example

The following program transfers parts from pallet 1 to pallet 2.

Function main

Integer index

Pallet 1, P1, P2, P3, 3, 5 ' Define pallet 1

Pallet 2, P12, P13, P11, 5, 3 ' Define pallet 2

For index = 1 To 15

Jump

Pallet

(1, index) ' Move to point index on pallet 1

On 1 'Hold the work piece

Wait 0.5

Jump

Pallet

(2, index) '

Move to point index on pallet 2

Off 1 'Release the work piece

Wait 0.5

Next I

Fend

Pallet 1, P1, P2, P3, 10, 10

P10 = P11

(1, i, j)

'

'

Depart point

Target point

Start approach point

512 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Pallet Function

Go P0

P10 = Here -TLZ(50) ' Depart point

Target point

P11 = P12 -TLZ(50) ' Start approach point

'

Point check

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 513

PalletClr Statement

PalletClr Statement

Clears a defined pallet.

Syntax

PalletClr

palletNumber

Parameters

palletNumber

Pallet number represented by integer expression from 0 to 15.

See Also

Pallet

PalletClr Example

PalletClr

1

514 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

ParseStr Statement / Function

ParseStr Statement / Function

Parses a string and return array of tokens.

Syntax

ParseStr

inputString$, tokens$(), delimiters$ numTokens

=

ParseStr(

inputString$, tokens$(), delimiters$

)

Parameters

inputString$ tokens$()

String expression to be parsed.

Output array of strings containing the tokens.

The array declared by ByRef cannot be specified.

String expression containing one or more token delimiters.

delimiters$

Return Values

When used as a function, the number of tokens parsed is returned.

See Also

Redim, String

ParseStr Statement Example

String toks$(0)

Integer i

ParseStr

"1 2 3 4", toks$(), " "

For i = 0 To UBound(toks)

Print "token ", i, " = ", toks$(i)

Next i

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 515

Pass Statement

Pass Statement

Executes simultaneous four joint Point to Point motion, passing near but not through the specified points.

Syntax

Pass

point

[, {

On | Off | MemOn | MemOff

}

bitNumber

[

, point ...

]] [LJM [

orientationFlag

]]

Parameters

point bitNumber

P

number

or

P

(

expr

) or point label.

When the point data is continued and in the ascending order or the descending order, specify two point numbers binding with colon as P(1:5).

The I/O output bit or memory I/O bit to turn on or off. Integer number between 0 -

511 or output label.

LJM orientationFlag

Optional. Convert the depart point, approach point, and target destination using LJM function.

Optional. Specifies a parameter that selects an orientation flag for LJM function.

Description

Pass moves the robot arm near but not through the specified point series.

To specify a point series, use points (P0,P1, ...) with commas between points.

To turn output bits on or off while executing motion, insert an On or Off command delimited with commas between points. The On or Off is executed before the robot reaches the point immediately preceding the On or Off.

If Pass is immediately followed by another Pass, control passes to the following Pass without the robot stopping at the preceding Pass final specified point.

If Pass is immediately followed by a motion command other than another Pass, the robot stops at the preceding Pass final specified point, but Fine positioning will not be executed.

If Pass is immediately followed by a command, statement, or function other than a motion command, the immediately following command, statement or function will be executed prior to the robot reaching the final point of the preceding Pass.

If Fine positioning at the target position is desired, follow the Pass with a Go, specifying the target position as shown in the following example:

Pass P5; Go P5; On 1; Move P10

The larger the acceleration / deceleration values, the nearer the arm moves toward the specified point. The

Pass instruction can be used such that the robot arm avoids obstacles.

516 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Pass Statement

With LJM parameter, the program using LJM function can be more simple.

For example, the following four-line program

P11 = LJM(P1, Here, 1)

P12 = LJM(P2, P11, 1)

P13 = LJM(P3, P12, 1)

Pass P11, P12, P13 can be… one-line program.

Pass P1, P2, P3 LJM 1

LJM parameter is available for 6-axis (including N series) and RS series robots.

When using

orientationFlag

with the default value, it can be omitted.

Pass P1, P2, P3 LJM

See Also

Accel, Go, Jump, Speed

Pass Statement Example

The example shows the robot arm manipulation by Pass instruction:

Function main

Jump P1

Pass

P2 '

Move the arm toward P2, and perform the next instruction before reaching P2.

On 2

Pass

P3

Pass

P4

Off 0

Pass

P5

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 517

Pause Statement

Pause Statement

Temporarily stops program execution all tasks for which pause is enabled.

Syntax

Pause

Description

When the Pause is executed, program execution for all tasks with pause enabled (tasks that do not use

NoPause or NoEmgAbort in Xqt command) is suspended. Also, if any task is executing a motion statement, it will be paused even if pause is not enabled for that task.

However, Pause cannot stop the background tasks.

Note

QP and its Effect on Pause

The QP instruction is used to cause the arm to stop immediately upon Pause or to complete the current move and then Pause the program. See the QP instruction help for more information.

Pause Statement Example

The example below shows the use of the Pause instruction to temporarily stop execution. The task executes program statements until the line containing the Pause command. At that point the task is paused.

The user can then click the Run Window Continue Button to resume execution.

Function main

Xqt monitor

Go P1

On 1

Jump P2

Off 1

Pause

' Suspend program execution

Go P40

Jump P50

Fend

518 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PauseOn Function

PauseOn Function

Returns the pause status.

Syntax

PauseOn

Return Values

True if the status is pause, otherwise False.

Description

PuseOn function is used only for NoPause, NoEmgAbort task (special task using NoPause or NoEmgAbort at Xqt), and background tasks.

See Also

ErrorOn, EstopOn, SafetyOn, Wait, Xqt

PauseOn Function Example

The following example shows a program that monitors the controller pause and switches the I/O On/Off when pause occurs. However, when the status changes to pause by Safety Door open, the I/O does not turn

On/Off.

Function main

Xqt PauseMonitor, NoPause

:

:

Fend

Function PauseMonitor

Boolean IsPause

IsPause = False

EndIf

IsPause = True

EndIf

On 12

Else

Loop

EndIf

EndIf

IsPause = False

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 519

PDef Function

PDef Function

Returns the definition status of a specified point.

Syntax

PDef

(

point

)

Parameters

point

An integer value or

P

number

or

P

(

expr

) or point label.

Cautions for compatibility

No variables can be specified for

point

parameter

To use variables, write

PDef(P(varName))

.

Return Values

True if the point is defined, otherwise False.

See Also

Here Statement, Pdel

PDef Function Example

If Not

PDef

(1) Then

Here P1

EndIf

Integer i

For i = 0 to 10

If PDef (P(i)) Then

Print “P(“;i;”) is defined”

EndIf

Next

520 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PDel Statement

PDel Statement

Deletes specified position data.

Syntax

PDel

firstPointNum

[

, lastPointNum

]

Parameters

firstPointNum lastPointNum

The first point number in a sequence of points to delete.

firstPointNum

must be an integer.

The last point number in a sequence of points to delete.

lastPointNum

must be an integer.

Description

Deletes specified position data from the controller's point memory for the current robot. Deletes all position data from

firstPointNum

up to and including

lastPointNum

. To prevent Error 2 from occurring,

firstPointNum

must be less than

lastPointNum

.

PDel Statement Example

> p1=10,300,-10,0/L

> p2=0,300,-40,0

> p10=-50,350,0,0

>

pdel

1,2 ' Delete points 1 and 2

> plist

P10 = -50.000, 350.000, 0.000, 0.000 /R /0

>

pdel

50 ' Delete point 50

>

pdel

100,200 '

Delete from point 100 to point 200

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 521

PDescription Statement

PDescription Statement

Define a comment of specified point data.

Syntax

PDescription point data, Newcomment

Parameters

Point data

An integer value or

P

number

or

P

(

expr

) or point label.

No variables can be specified for

point data

parameter .

To use variables, write

PDescription Statement (P(varName

)),

“new comment” .

New comment

String expression representing comment of specified point.

Description

PDescription save a description in specified point data of controller memory.

Description saved in memory of the controller is delated from memory when creating or executing a program. Execute the “SavePoints” to save in point file if necessary.

See Also

PDef Function, PDescription$ Function, PLabel, PLabel$ Function

PDescription Statement Example

PDescription

1, "Comment"

522 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PDescription$ Function

Returns description of point that defined to the specified point number.

Syntax

PDescription$(

pointData

)

Parameters

pointData

An integer value or

P

number

or

P

(

expr

) or point label.

No variables can be specified for

point data

parameter .

To use variables, write

PDescription$(P(varName))

.

Return Values

Returns descriptions of specified number as a string.

See Also

PDef Function, PDescription, PLabel, PLabel$ Function

PDescription$ Function Example

Print

PDescription$

(1)

Print

PDescription$

(P(i))

PDescription$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 523

PeakSpeedClear Statement

PeakSpeedClear Statement

Clears and initializes the peak speed for one or more joints.

Syntax

PeakSpeedClear [

j1

[,

j2

[,

j3

[,

j4

[,

j5

[,

j6

[,

j7

[,

j8

[,

j9

]]]]]]]]]

Parameters

j1 – j9

Integer expression representing the joint number. If no parameters are supplied, then the peak speed values are cleared for all joints.

The additional S axis is 8 and T axis is 9. If non-existent joint number is supplied, an error occurs.

Description

PeakSpeedClear clears the peak speed values for the specified joints.

You must execute PeakSpeedClear before executing PeakSpeed.

This command does not support the PG additional axes.

See Also

AvgSpeed, PeakSpeed

PeakSpeedClear Statement Example

<Example 1>

The following is the example to display the speed values of specified joints after clearing the peak speed values of all joints.

>

PeakSpeedClear

> Go P1

> PeakSpeed 1

-0.273

> PeakSpeed

-0.273 -0.164

-0.080 0.258

-0.005 0.401

0.000 0.000

0.000

>

<Example 2>

The following is the example to display the peak speed values of specified joints after clearing the peak speed values of J1, J4, and J5 for the vertical multi-axis robots.

>

PeakSpeedClear

4, 1, 5

> Go P1

> PeakSpeed 1

-0.273

> PeakSpeed 4

0.258

524 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PeakSpeed Statement

PeakSpeed Statement

Displays the peak speed values for the specified joint.

Syntax

PeakSpeed [

jointNumber

]

Parameters

jointNumber

Optional. Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Displays current peak speed values for all joints.

Description

PeakSpeed statement displays the value of the maximum absolute speed for the joint with a sign. The peak speed is a real number from -1 to 1 with 1 being the maximum speed.

Execute PeakSpeedClear first, and then execute PeakSpeed to display the peak speed value for the joint.

When using the virtual controller or conducting dry-run, the average of the absolute speed values is calculated from the commanded speed instead of the actual speed.

This command does not support the PG additional axes.

See Also

AvgSpeed, PeakSpeedClear, PeakSpeed Function

PeakSpeed Statement Example

>

PeakSpeedClear

>

Go P1

> PeakSpeed

1

-0.273

>

PeakSpeed

-0.273 0.163

-0.080 0.258

-0.005 -0.401

0.000 0.000

0.000

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 525

PeakSpeed Function

PeakSpeed Function

Returns the peak speed for the specified joint.

Syntax

PeakSpeed (

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Real value from -1 to 1.

Description

PeakSpeed function returns the value of the maximum absolute speed for the joint with a sign. The peak speed is a real number from -1 to 1 with 1 being the maximum speed.

Execute PeakSpeedClear statement first, and then execute PeakSpeed statement to display the peak speed value for the joint.

When using the virtual controller or conducting dry-run, the average of the absolute speed values is calculated from the commanded speed instead of the actual speed.

This command does not support the PG additional axes.

See Also

AvgSpeed, PeakSpeedClear, PeakSpeed

PeakSpeed Function Example

This example uses the PeakSpeed function in a program:

Function DisplayPeakSpeed

Integer i

PeakSpeedClear

Go P1

Print "Peak Speeds:"

For i = 1 To 6

Print "Joint ", i, " = ",

PeakSpeed

(i)

Next i

Fend

526 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PerformMode Statement

PerformMode Statement

Sets the mode of the robot.

Syntax

(1)

PerformMode

[

modeNumber

] [,

robotNumber

]

(2)

PerformMode

Parameters

modeNumber

Specify the operation mode with an integer value (1 to 3) or with the following constant.

This parameter is optional only when the statement is executed from the command window.

Constant Value Description

MODE_STANDARD

MODE_HIGH_SPEED

1

2

Sets the Standard mode

Sets the High-speed mode

MODE_LOW_OSCILLATION 3

robotNumber

Specify the robot number by an integer value.

Sets the Low-oscillation mode

If omitted, currently selected robot will be used.

Result

When specified by the syntax (1), the mode will be set by the mode number that is specified.

When specified by the syntax (2), the mode number of the currently selected robot will be displayed.

Description

PerformMode is a function to change the preference of manipulator performance (mode) according to the intended use. This function supports following three modes.

Standard

The cycle time, the duty, and the oscillation at the motion stop are balanced.

This mode is available for any kind of application.

High-speed

This mode is specialized to reduce the operating time of a task.

Although this mode aggravates the duty and oscillation at the motion stop compared to the standard mode, it can reduce operation time.

Recommended application: Transportation

Low-oscillation

This mode is specialized to reduce the oscillation at the motion stop.

Although this mode increases the operating time compared to the standard mode, it can reduce the oscillation at the motion stop.

Recommended application: Transportation and assembly of precision components

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 527

PerformMode Statement

Performance comparison

Mode

Standard

High-speed

Low-oscillation

Operating time (*1)

Normal

Improved

Decreased

Comparison item

Oscillation

Normal

Decreased

Improved

Duty

Normal

Decreased

Improved

(*1) Traveling time of the manipulator moving from the current position to the target point.

Note

Target motion commands: PTP motion commands (Go, BGo, TGo, Jump, JTran)

* Following performance of the CP motion are not affected by Precede statement.

Trajectory accuracy

Upper limit values of AccelS, AccelR, SpeedS, SpeedR

Frequency of the acceleration setting error and the speed setting error

Conditions that automatically initialize the mode (to the Standard mode)

The table below shows the conditions which automatically initializes the mode.

Controller power ON

Controller reboot

Motor ON

Change of the Mode

Changes to the standard mode

Changes to the standard mode

Changes to the standard mode

Switched the Power (Low ↔ High) Mode does not change

Build / Rebuild

Reset

Mode does not change

Changes to the standard mode

See Also

Bo, Go, Jump, JTran, PerformMode Function, TGo

PerformMode Statement Example

PerformMode

MODE_STANDARD

Go P1

PerformMode

2

Go P2

528 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PerformMode Function

Returns the status of the robot operation mode.

Syntax

PerformMode

(

[robotNumber]

)

Parameters

robotNumber

Specify the robot number to check the status by an integer value.

If omitted, currently selected robot will be used.

Return Values

Returns the integer value representing the currently set operation mode.

1 = Standard mode

2 = High-speed mode

3 = Low-oscillation mode

See Also

PerformMode

PerformMode Function Example

Print PerformMode(1)

PerformMode Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 529

PG_FastStop Statement

PG_FastStop Statement

Stop the PG axes immediately.

Syntax

PG_FastStop

Description

The PG_FastStop stops the current PG robot immediately with no deceleration.

To stop normally, use the PG_SlowStop statement.

See Also

PG_Scan, PG_SlowStop

PG_FastStop Statement Example

The following program moves the PG axis for 10 seconds and stops it.

Function main

Motor On

PG_Scan 0

Wait 10

PG_FastStop

' Immediately stops the continuous motion

Fend

530 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PG_LSpeed Statement

PG_LSpeed Statement

Sets the pulse speed of the time when the PG axis starts accelerating and fishishes decelerating.

Syntax

PG_LSpeed

accelSpeed

As Integer [,

decelSpeed

As Integer ],

Parameters

speed

Integer expression that contains the pulse speed (1 to 32767 pulse/second)

decalSpeed

Integer expression that contains the pulse speed (1 to 32767 pulse/second)

Description

PG_LSpeed specifies the pulse speed when the PG axis starts accelerating and finishes decelerating. It is useful when setting the initial/ending speed of a stepping motor to higher within the range of max starting frequency to offer the best performance of motor, or setting the speed to lower to prevent the stepping motor from stepping out. The default is 300 pulse/second and do not change to use.

Speed

Start of acceleration

Finish of deceleration

Time

If omitted the finishing speed of deceleration, the speed set value is used.

The PG_LSpeed value initializes to the default values when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

See Also

PG_LSpeed function

PG_LSpeed Statement Example

You can use the PG_LSpeed in the command window or in the program. The following examples show the both cases.

Function pglspeedtst

Motor On

Power High

Speed 30;Accel 30,30

PG_LSpeed

1000

Go P0

Fend

To set the PG_LSpeed value from the command window.

>

PG_LSpeed

1000,1100

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 531

PG_LSpeed Function

PG_LSpeed Function

Returns the pulse speed at the time when the current PG axis starts accelerating and finishes decelerating.

Syntax

PG_LSpeed

[ (

paramNumber

) ]

Parameters

paramNumber

One of the numbers below that specifies the number of set value.

If omitted, 1 is used.

1: Pulse speed at acceleration starts

2: Pulse speed at deceleration finishes

Return Values

Integer value from 1 to 32767 in units of pulse/second.

See Also

PG_LSpeed

PG_LSpeed Function Example

Integer savPGLSpeed savPGLSpeed =

PG_LSpeed

(1)

532 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PG_Scan Statement

PG_Scan Statement

Starts the continuous spinning motion of the PG robot axes.

Syntax

PG_Scan

direction

As Integer

Parameters

direction

Spinning direction

0: + (CW) direction

1:

(CCW) direction

Description

The PG_Scan starts the continuous spinning motion of the current PG robot.

To execute the continuous spinning motion, you need to enable the PG parameter continuous spinning by the robot configuration.

When the program execution task is completed, the continuous spinning stops.

See Also

PG_FastStop

PG_Scan Statement Example

The following example spins the PG axis for 10 seconds and stops it suddenly.

Function main

Motor On

Power High

Speed 10; Accel 10,10

PG_Scan

0

Wait 10

PG_SlowStop

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 533

PG_SlowStop Statement

PG_SlowStop Statement

Stops slowly the PG axis spinning continuously.

Syntax

PG_SlowStop

Description

PG_SlowStop decelerates the continuous spinning motion of the current PG robot and bring it to a stop.

See Also

PG_Scan, PG_FastStop

PG_SlowStop Statement Example

The following example spins the PG axis for 10 seconds and stop it suddenly.

Function main

Motor On

PG_Scan 0

Wait 10

PG_SlowStop

' Stops suddenly the continuous spinning motion

Fend

534 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PLabel Statement

PLabel Statement

Defines a label for a specified point.

Syntax

PLabel

pointNumber, newLabel

Parameters

pointNumber

An integer expression representing a point number.

newLabel

A string expression representing the label to use for the specified point.

See Also

PDef Function, PDescription, PDescription$ Function, PLabel$ Function, PNumber Function

PLabel Statement Example

PLabel

1, "pick"

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 535

PLabel$ Function

PLabel$ Function

Returns the point label associated with a point number.

Syntax

PLabel$(

point

)

Parameters

point

An integer value or

P

number

or

P

(

expr

) or point label.

Cautions for compatibility

No variables can be specified for

point

parameter

To use variables, write

PLabel$(P(varName))

.

See Also

PDef Function, PDescription, PDescription$ Function,PLabel, PNumber Function

PLabel$ Function Example

Print

PLabel$

(1)

Print

PLabel$

(P(i))

536 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Plane Statement

Plane Statement

Specifies and displays the approach check plane.

Syntax

(1)

Plane

PlaneNum

[,

robotNumber

],

pCoordinateData

(2)

Plane

PlaneNum

[,

robotNumber

],

pOrigin

,

pXaxis, pYaxis

(3)

Plane

PlaneNum

[,

robotNumber

]

(4)

Plane

Parameters

PlaneNum robotNumber

Integer value representing the plane number from 1 to 15.

Integer values representing the robot number

If omitted, the current robot is used.

pCoordinateData

Point data representing the coordinate data of the approach check plane.

pOrigin

Integer expression representing the origin point using the robot coordinate system.

pXaxis pYaxis

Integer expression representing a point along the Y axis using the robot coordinate system if Y alignment is specified.

Return Values

When using syntax (3), the setting of the specified plane is displayed.

When using syntax (4), the settings of all plane numbers for the current robot are displayed.

Description

Integer expression representing a point along the X axis using the robot coordinate system if X alignment is specified.

Plane is used to set the approach check plane. The approach check plane is for checking whether the robot end effector is in one of the two areas divided by the specified approach check plane. The position of the end effector is calculated by the current tool. The approach check plane is set using the XY plane of the base coordinate system. The approach check plane detects the end effector when it approaches the area on the + Z side of the approach check plane.

When the approach check plane is used, the system detects approaches in any motor power status during the controller is ON.

The details of each syntax are as follows.

(1) Specifies a coordinate system to create the approach check plane using the point data representing the translation and rotation based on the base coordinate system, and sets the approach check plane.

Example:

Plane 1, XY(x, y, z, u, v, w)

Plane 1, P1

(2) Defines the approach check plane (XP coordinate) by specifying the origin point, point along the X axis, and point along the Y axis. Uses the X, Y, Z coordinates and ignores U, V, W coordinates.

Calculates the Z axis in righty and sets the approach checking direction.

Example:

Plane 1, P1, P2, P3

(3) Displays the setting of the specified approach check plane.

(4) Displays all the approach check plane.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 537

Plane Statement

You can use the GetRobotInsidePlane function and the InsidePlane function to get the result of the approach check plane. The GetRobotInsidePlane function can be used as the condition for a Wait command. You can provide the detection result to the I/O by setting the remote output setting.

To use one plane with more than one robot, you need to define planes from each robot coordinate system.

Coordinate system of approach check plane

Robot 1

Robot 2

Approach check plane

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

Notes

Tool Selection

The approach check is executed for the current tool. When you change the tool, the approach check may display the tool approach from inside to outside of the plane or the other way although the robot is not operating.

Additional axis

For the robot which has the additional ST axes (including the running axis), the approach check plane to set doesn’t depend on the position of an additional axis, but is based on the robot base coordinate system.

See Also

Box, GetRobotInsidePlane, InsidePlane, PlaneClr, PlaneDef

Tip

Set Plane statement from Robot Manager

EPSON RC+ has a point and click dialog box for defining the approach check plane. The simplest method to set the Plane values is by using the Plane page on the Robot Manager.

Plane Statement Example

These are examples to set the approach check plane using Plane statement.

Check direction is the lower side of the horizontal plane that is

20 mm in Z axis direction in the robot coordinate system:

>

plane

1, xy(100, 200, -20, 90, 0, 180)

Approach check plane is the XY coordinate created by moving 50 mm in X axis and 200 mm in Y axis, rotating 45 degrees around Y axis:

>

plane

2, xy(50, 200, 0, 0, 45, 0)

Set the approach check plane using the tool coordinate system of the robot. (6-axis robot)

>

plane

3, here

538 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Plane Function

Returns the specified approach check plane.

Syntax

Plane(

PlaneNum

[,

robotNumber

])

Parameters

PlaneNum

Integer expression representing the plane number from 1 to 15.

robotNumber

Integer values representing the robot number

If omitted, the current robot is used.

Return Values

Returns coordinate data for specified approach check plane.

See Also

GetRobotInsidePlane, InsidePlane, Plane, PlaneClr, PlaneDef

Plane Function Example

P1 =

Plane

(1)

Plane Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 539

PlaneClr Statement

PlaneClr Statement

Clears (undefines) a Plane definition.

Syntax

PlaneClr

PlaneNum

[

, robotNumber

]

Parameters

PlaneNum

Integer expression representing the plane number from 1 to 15.

robotNumber

Integer value representing the robot number

If omitted, the current robot is used.

Description

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

See Also

GetRobotInsidePlane, InsidePlane, Plane, PlaneDef

PlaneClr Statement Example

PlaneClr

1

540 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PlaneDef Function

PlaneDef Function

Returns the setting of the approach check plane.

Syntax

PlaneDef

(

PlaneNum

[

, robotNumber

])

Parameters

PlaneNum robotNumber

Integer expression representing the plane number from 1 to 15.

Integer value representing the robot number

If omitted, the current robot is used.

Return Values

True if approach detection plane is defined for the specified plane number, otherwise False.

See Also

GetRobotInsidePlane, Box, InsidePlane, Plane, PlaneClr

PlaneDef Function Example

Function DisplayPlaneDef(planeNum As Integer)

If

PlaneDef

(planeNum) = False Then

Print "Plane ", planeNum, "is not defined"

Else

Print "Plane 1: ",

Print Plane(PlaneNum)

EndIf

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 541

PList Statement

PList Statement

Displays point data in memory for the current robot.

Syntax

(1)

PList

(2)

PList

pointNumber

(3)

PList

startPoint

,

(4)

PList

startPoint

,

endpoint

Parameters

pointNumber startPoint endPoint

The number range is 0 to 999.

The start point number. The number range is 0 to 999.

The end point index. The number range is 0 to 999.

Return Values

Point data.

Description

Plist displays point data in memory for the current robot.

When there is no point data within the specified range of points, no data will be displayed.

When a start point number is specified larger than the end point number, then an error occurs.

(1) PList

Displays the coordinate data for all points.

(2) PList

pointNumber

Displays the coordinate data for the specified point.

(3) PList

startPoint

,

Displays the coordinate data for all points starting with

startPoint

.

(4) PList

startPoint

,

endPoint

Displays the coordinate data for all points starting with

startPoint

and ending with

endPoint

.

PList Statement Example

Display type depends on the robot type and existence of additional axes.

The following examples are for a Scara robot without additional axes.

Displays the specified point data:

>

plist

1

P1 = XY( 200.000, 0.000, -20.000, 0.000 ) /R /0

>

Displays the point data within the range of 10 and 20. In this example, only three points are found in this range.

>

plist

10, 20

P10 = XY( 290.000, 0.000, -20.000, 0.000 ) /R /0

P12 = XY( 300.000, 0.000, 0.000, 0.000 ) /R /0

P20 = XY( 285.000, 10.000, -30.000, 45.000 ) /R /0

>

Displays the point data starting with point number 10.

542 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PList Statement

>

plist

10,

P10 = XY( 290.000, 0.000, -20.000, 0.000 ) /R /0

P12 = XY( 300.000, 0.000, 0.000, 0.000 ) /R /0

P20 = XY( 285.000, 10.000, -30.000, 45.000 ) /R /0

P30 = XY( 310.000, 20.000, -50.000, 90.000 ) /R /0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 543

PLocal Statement

PLocal Statement

Sets the local attribute for a point.

Syntax

PLocal(

point

) =

localNumber

Parameters

point localNumber

An integer value or

P

number

or

P

(

expr

) or point label.

Cautions for compatibility

No variables can be specified for

point

parameter

To use variables, write

PLocal(P(varName))

.

A n integer expression representing the new local number. Range is 0 to 15.

See Also

PLocal Function

PLocal Statement Example

PLocal

(pick) = 1

544 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PLocal Function

Returns the local number for a specified point.

Syntax

PLocal(

point

)

Parameters

point

An integer value or

P

number

or

P

(

expr

) or point label.

Cautions for compatibility

No variables can be specified for

point

parameter

To use variables, write

PLocal(P(varName))

.

Return Values

Local number for specified point.

See Also

PLocal

PLocal Function Example

Integer localNum localNum =

PLocal

(pick)

PLocal Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 545

Pls Function

Pls Function

Returns the current encoder pulse count for each joint at the current position.

Syntax

Pls

(jointNumber)

Parameters

jointNumber

The specific joint for which to get the current encoder pulse count.

The additional S axis is 8 and T axis is 9.

Return Values

Returns a number value representing the current encoder pulse count for the joint specified by

jointNumber

.

Description

Pls is used to read the current encoder position (or Pulse Count) of each joint. These values can be saved and then used later with the Pulse command.

See Also

CX, CY, CZ, CU, CV, CW, Pulse

Pls Function Example

Shown below is a simple example to get the pulse values for each joint and print them.

Function plstest

Real t1, t2, z, u

t1 =

pls

(1)

t2 =

pls

(2)

z =

pls

(3)

u =

pls

(4)

Print "T1 joint current Pulse Value: ", t1

Print "T2 joint current Pulse Value: ", t2

Print "Z joint current Pulse Value: ", z

Print "U joint current Pulse Value: ", u

Fend

546 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PNumber Function

PNumber Function

Returns the point number associated with a point label.

Syntax

PNumber(

pointLabel

)

Parameters

pointLabel

A point label used in the current point file or string expression containing a point label.

See Also

PDef Function, PLabel$ Function

PNumber Function Example

Integer pNum

String pointName$ pNum =

PNumber

(pick) pNum =

PNumber

("pick") pointName$ = "place" pNum =

PNumber

(pointName$)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 547

PosFound Function

PosFound Function

Returns status of Find operation.

Syntax

PosFound

Return Values

True if position was found during move, False if not.

See Also

Find

PosFound Function Example

Find Sw(5) = ON

Go P10 Find

If

PosFound

Then

Go FindPos

Else

Print "Error: Cannot find the sensor signal."

EndIf

548 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Power Statement

Power Statement

Switches Power Mode to high or low and displays the current status.

Syntax

(1)

Power

{

High | Low

} [, Forced]

(2)

Power

Parameters

High | Low The setting can be High or Low. The default is Low.

Forced Optional. This parameter is usually omitted.

Return Values

Displays the current Power status when parameter is omitted.

Description

Switches Power Mode to High or Low. It also displays the current mode status.

Low When Power is set to Low, Low Power Mode is On. This means that the robot will run slow (below

250 mm/sec) and the servo stiffness is set light so as to remove servo power if the robot bumps into an object.

High - When Power is set to High, Low Power Mode is Off. This means that the robot can run at full speed with the full servo stiffness.

The following operations will switch to low power mode. In this case, speed and acceleration settings will be limited to the default value. The default value is described in the each manipulator specification table.

See also the

EPSON RC+ Users Guide: 2. Sefety

.

Conditions to cause Power Low:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

Settings limited to the default value

Speed

Accel

SpeedS

AccelS

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 549

Power Statement

Notes

Low Power Mode (Power Low) and Its Effect on Max Speed:

In low power mode, motor power is limited, and effective motion speed setting is lower than the default value. If, when in Low Power mode, a higher speed is specified from the Command window (directly) or in a program, the speed is set to the default value. If a higher speed motion is required, set Power High.

High Power Mode (Power High) and Its Effect on Max Speed:

In high power mode, higher speeds than the default value can be set.

Forced Flag

The power mode can be changed during robot operation (including the pause state).

If the mode is switched to high power mode while the robot is moving in low power mode, the subsequent motion will be changed to high speed with the specified speed.

If the mode is switched to low power mode while the robot is moving in high power mode, the overspeed error or low power torque error may occur.

Stop the robot and specify the Forced flag to switch to low power mode.

See Also

Accel, AccelS, Speed, SpeedS

Power Statement Example

The following examples are executed from the command window:

> Speed 50 ' Specifies high speed in Low Power mode

> Accel 100, 100 '

Specifies high accel

> Jump P1 ' Moves in low speed and low accel

> Speed ' Displays current speed values

Low Power Mode

50

50 50

> Accel ' Displays current accel values

Low Power Mode

100 100

100 100

100 100

>

Power

High '

Sets high power mode

> Jump P2 '

Moves robot at high speed

550 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Power Function

Returns status of power.

Syntax

Power

[(

robotNumber

)]

Parameters

robotNumber

Specify the robot number to check the status by an integer value.

If omitted, currently selected robot will be used.

Return Values

0 = Power Low, 1 = Power High.

See Also

Power Statement

Power Function Example

If

Power

= 0 Then

Print "Low Power Mode"

EndIf

Power Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 551

PPls Function

PPls Function

Return the pulse position of a specified joint value from a specified point.

Syntax

PPls

(

point

,

jointNumber)

Parameters

point jointNumber

Point expression.

Expression or numeric value specifying the joint number (integer from 1 to 9)

The additional S axis is 8 and T axis is 9.

Return Values

Returns the calculated joint position (long value, in pulses).

See Also

Agl, CX, CY, CZ, CU, CV, CW, Pagl

PPls Function Example

Long pulses1 pulses1 =

PPls

(P10, 1)

552 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Print Statement

Print Statement

Outputs data to the current display window, including the Run window, Operator window, Command window, and Macro window.

Syntax

Print

expression

[

,expression...

] [ , ]

Print

Parameters

expression

, (comma)

Optional. A number or string expression.

Optional. If a comma is provided at the end of the statement, then a CRLF will not be added.

Return Values

Variable data or the specified character string.

Description

Print displays variable data or the character string on the display device.

An end of line CRLF (carriage return and line feed) is automatically appended to each output unless a comma is used at the end of the statement.

Note

Make Sure Print is used with Wait or a motion within a loop

Tight loops (loops with no Wait or no motion) are generally not good, especially with Print.

The controller may freeze up in the worst case.

Be sure to use Print with Wait command or a motion command within a loop.

Bad example

Do

Print

"1234"

Loop

Good example

Do

Print

"1234"

Wait 0.1

Loop

See Also

Print #

Print Statement Example

The following example extracts the U Axis coordinate value from a Point P100 and puts the coordinate value in the variable

uvar

. The value is then printed to the current display window.

Function test

Real uvar

uvar = CU(P100)

Print "The U Axis Coordinate of " + Chr$(34) + "P100" + Chr$(34) +

" is ", uvar

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 553

Print # Statement

Print # Statement

Outputs data to the specified file, communications port, database, or device.

Syntax

Print #

portNumber, expression

[

,expression...

] [ , ]

Parameters

portNumber

ID number representing a file, communications port, database, or device.

File number can be specified in ROpen, WOpen, and AOpen statements.

Communications port number can be specified in OpenCom (RS232) and OpenNet

(TCP/IP) statements.

Database number can be specified in OpenDB statement.

Device ID integers are as follows.

21 RC+

24 TP (TP1 only)

20 TP3

expression

, (comma)

A numeric or string expression.

Optional. If a comma is provided at the end of the statement, then a CRLF will not be added.

Description

Print # outputs variable data, numerical values, or character strings to the communication port or the device specified by

portNumber

.

Notes

Maximum data length

This command can handle up to 256 bytes.

However, if the target is a database, it can handle up to 4096 bytes.

If the target is the communications port (TCP/IP), it can handle up to 1024 bytes.

Exchange variable data with other controller

- When more than one string variable or both of numeric variable and string variable is specified, a comma

(“,”) character has to be added expressly to the string data.

Sending end (Either pattern is OK.)

Print #PortNum, "$Status,", InData, OutData

Print #PortNum, "$Status", ",",InData, OutData

Receiving end

Input #PortNum, Response$, InData, OutData

File write buffering

File writing is buffered. The buffered data can be written with Flush statement. Also, when closing a file with Close statement, the buffered data can be written.

See Also

Input#, Print

554 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Print # Statement

Print # Statement Example

The following are some simple Print # examples:

Function printex

String temp$

Print #

1, "5" ' send the character "5" to serial port 1 temp$ = "hello"

Print #

1, temp$

Print #

2, temp$

Print #

1 " Next message for " + Chr$(34) + "port 1" + Chr$(34)

Print #

2 " Next message for " + Chr$(34) + "port 2" + Chr$(34)

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 555

PTCLR Statement

PTCLR Statement

Clears and initializes the peak torque for one or more joints.

Syntax

PTCLR

[

j1

[,

j2

[,

j3

[,

j4

[,

j5

[,

j6

[,

j7

[,

j8

[,

j9

]]]]]]]]]

Parameters

j1 – j9

Integer expression representing the joint number. If no parameters are supplied, then the peak torque values are cleared for all joints.

The additional S axis is 8 and T axis is 9. If non-existent joint number is supplied, an error occurs.

Description

PTCLR clears the peak torque values for the specified joints.

You must execute PTCLR before executing PTRQ.

See Also

ATRQ, PTRQ

PTCLR Statement Example

<Example 1>

The following is the example to display the torque values of specified joints after clearing the peak torque values of all joints.

> ptclr

>

go p1

> p

trq 1

0.227

> ptrq

0.227 0.118

0.249 0.083

0.000 0.000

>

<Example 2>

The following is the example to display the torque values of specified joints after clearing the peak torque values of J1, J4, and J5 for the vertical multi-axis robots.

>

ptclr

4, 1, 5

> go p1

> ptrq 1

0.227

> ptrq 4

0.083

556 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PTPBoost Statement

PTPBoost Statement

Specifies or displays the acceleration, deceleration and speed algorithmic boost parameter for small distance PTP (point to point) motion.

Syntax

(1)

PTPBoost

boost

[,

departBoost

] [,

approBoost

]

(2)

PTPBoost

Parameters

boost

Integer expression from 0 to 100.

departBoost

Optional. Jump depart boost value. Integer expression from 0 to 100.

approBoost

Optional. Jump approach boost value. Integer expression from 0 to 100.

Return Values

When parameters are omitted, the current PTPBoost settings are displayed.

Description

PTPBoost sets the acceleration, deceleration and speed for small distance PTP motion. It is effective only when the motion distance is small. The PTPBoostOK function can be used to confirm whether or not a specific motion distance to the destination is small enough to be affected by PTPBoost or not.

PTPBoost does not need modification under normal circumstances. Use PTPBoost only when you need to shorten the cycle time even if vibration becomes larger, or conversely when you need to reduce vibration even if cycle time becomes longer.

When the PTPBoost value is large, cycle time becomes shorter, but the positioning vibration increases.

When PTPBoost is small, the positioning vibration becomes smaller, but cycle time becomes longer.

Specifying inappropriate PTPBoost causes errors or can damage the manipulator. This may degrade the robot, or sometimes cause the manipulator life to shorten.

The PTPBoost value initializes to its default value when any one of the following is performed:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

See Also

PTPBoost Function, PTPBoostOK

PTPBoost Statement Example

PTPBoost

50, 30, 30

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 557

PTPBoost Function

PTPBoost Function

Returns the specified PTPBoost value.

Syntax

PTPBoost(

paramNumber

)

Parameters

paramNumber

Integer expression which can have the following values:

1: boost value

2: jump depart boost value

3: jump approach boost value

Return Values

Integer value from 0 to 100.

See Also

PTPBoost Statement, PTPBoostOK

PTPBoost Function Example

Print

PTPBoost

(1)

558 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PTPBoostOK Function

PTPBoostOK Function

Returns whether or not the PTP (Point to Point) motion from a current position to a target position is a small travel distance.

Syntax

PTPBoostOK(

targetPos

)

Parameters

targetPos

Point expression for the target position.

Return Values

True if is it possible to move to the target position from the current position using PTP motion, otherwise

False.

Description

Use PTPBoostOK to the distance from the current position to the target position is small enough for

PTPBoost to be effective.

See Also

PTPBoost

PTPBoostOK Function Example

If

PTPBoostOK

(P1) Then

PTPBoost 50

EndIf

Go P1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 559

PTPTime Function

PTPTime Function

Returns the estimated time for a point to point motion command without executing it.

Syntax

(1)

PTPTime

(

destination, destArm, destTool

)

(2)

PTPTime

(

start, startArm, startTool, destination, destArm, destTool

)

Parameters

start

Point expression for the starting position.

destination

Point expression for the destination position.

destArm

Integer expression for the destination arm number.

destTool

Integer expression for the destination tool number.

startArm

Integer expression for the starting point arm number.

startTool

Integer expression for the starting point tool number.

Return Values

Real value in seconds.

Description

Use PTPTime to calculate the time it would take for a point to point motion command (Go). Use syntax 1 to calculate time from the current position to the destination. Use syntax 2 to calculate time from a start point to a destination point.

The actual motion operation is not performed when this function is executed. The current position, arm, and tool settings do not change.

If the position is one that cannot be arrived at or if the arm or tool settings are incorrect, 0 is returned.

If a robot includes an additional axis and it is the servo axis, the function will consider the motion time of the additional axis.

If the additional axis is a PG axis, the motion time of the robot will be returned.

See Also

ATRQ, Go, PTRQ

PTPTime Function Example

Real secs secs =

PTPTime

(P1, 0, 0, P2, 0, 1)

Print "Time to go from P1 to P2 is:", secs

Go P1 secs =

PTPTime

(P2, 0, 1)

Print "Time to go from P1 to P2 is:", secs

560 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PTran Statement

Perform a relative move of one joint in pulses.

Syntax

PTran

joint, pulses

Parameters

joint pulses

Integer expression representing which joint to move.

The additional S axis is 8 and T axis is 9.

Integer expression representing the number of pulses to move.

Description

Use PTran to move one joint a specified number of pulses from the current position.

See Also

Go, JTran, Jump, Move

PTran Statement Example

PTran

1, 2000

PTran Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 561

PTRQ Statement

PTRQ Statement

Displays the peak torque for the specified joint.

Syntax

PTRQ

[

jointNumber

]

Parameters

jointNumber

Optional. Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Displays current peak torque values for all joints.

Description

Use PTRQ to display the peak torque value for one or all joints since the PTCLR statement was executed.

Peak torque is a real number from 0 to 1.

See Also

ATRQ, PTCLR, PTRQ Function

PTRQ Statement Example

>

ptclr

>

go p1

> ptrq

1

0.227

>

ptrq

0.227 0.118

0.249 0.083

0.000 0.000

>

562 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

PTRQ Function

Returns the peak torque for the specified joint.

Syntax

PTRQ

(

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number.

The additional S axis is 8 and T axis is 9.

Return Values

Real value from 0 to 1.

See Also

ATRQ, PTCLR, PTRQ Statement

PTRQ Function Example

This example uses the PTRQ function in a program:

Function DisplayPeakTorque

Integer i

Print "Peak torques:"

For i = 1 To 4

Print "Joint ", i, " = ",

PTRQ

(i)

Next i

Fend

PTRQ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 563

Pulse Statement

Pulse Statement

Moves the robot arm using point to point motion to the point specified by the pulse values for each joint.

Syntax

(1)

Pulse

J1, J2, J3, J4 ,

[

J5, J6

]

,

[

J7

]

,

[

J8, J9

]

(2)

Pulse

Parameters

J1 ~ J4

J5, J6

The pulse value for each of the first four joints. The pulse value has to be within the range defined by the Range instruction and should be an integer or long expression.

Optional. For 6-axis robots (including N series) and Joint type 6-axis robots.

J7

Optional. For Joint type 7-axis robots.

J

8,

J9

Optional. For the additional axis.

Return Values

When parameters are omitted, the pulse values for the current robot position are displayed.

Description

Pulse uses the joint pulse value from the zero pulse position to represent the robot arm position, rather than the orthogonal coordinate system. The Pulse instruction moves the robot arm using Point to Point motion.

The Range instruction sets the upper and lower limits used in the Pulse instruction.

Note

Make Sure Path is Obstacle Free Before Using Pulse

Unlike Jump, Pulse moves all axes simultaneously, including Z joint raising and lowering in traveling to the target position. Therefore, when using Pulse, take extreme care so that the hand can move through an obstacle free path.

Potential Error

Pulse value exceeds limit:

If the pulse value specified in Pulse instruction exceeds the limit set by the Range instruction, an error will occur.

See Also

Go, Accel, Range, Speed, Pls, Pulse Function

Pulse Statement Example

Following are examples on the Command window:

This example moves the robot arm to the position which is defined by each joint pulse.

>

pulse

16000, 10000, -100, 10

This example displays the pulse numbers of 1st to 4th axes of the current robot arm position.

>

pulse

PULSE: 1: 27306 pls 2: 11378 pls 3: -3072 pls 4: 1297 pls

>

564 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Pulse Function

Pulse Function

Returns a robot point whose coordinates are specified in pulses for each joint.

Syntax

Pulse

(

J1, J2, J3, J4

[

, J5 , J6

]

[, J7

]

[, J8 , J9

] )

Parameters

J1 ~ J4

The pulse value for joints 1 to 4. The pulse value must be within the range defined by the Range instruction and should be an integer or long expression.

J5, J6

J7

J8, J9

Optional. For 6-axis robots (including N series) and Joint type 6-axis robots.

Optional. For Joint type 7-axis robots.

Optional. For the additional axis.

Return Values

A robot point using the specified pulse values.

See Also

Go, JA, Jump, Move, Pulse Statement, XY

Pulse Function Example

Jump

Pulse

(1000, 2000, 0, 0)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 565

QP Statement

QP Statement

Switches Quick Pause Mode On or Off and displays the current mode status.

Syntax

(1)

QP

{

On

|

Off

}

(2)

QP

Parameters

On

|

Off

Quick Pause can be either On or Off.

Return Values

Displays the current QP mode setting when parameter is omitted.

Description

If during motion command execution either the Pause switch is pressed, or a pause signal is input to the controller, quick pause mode determines whether the robot will stop immediately, or will Pause after having executed the motion command.

Immediately decelerating and stopping is referred to as a “Quick Pause”.

With the On parameter specified, QP turns the Quick Pause mode On.

With the Off parameter specified, QP turns the Quick Pause mode Off.

QP displays the current setting of whether the robot arm is to respond to the Pause input by stopping immediately or after the current arm operation is completed. QP is simply a status instruction used to display whether Quick Pause mode is on or off.

Notes

Quick pause mode defaults to on after power is turned on:

The Quick Pause mode set by the QP instruction remains in effect after the Reset instruction. However, when the PC power or Drive Unit power is turned off and then back on, Quick Pause mode defaults to On.

QP and the Safe Guard Input:

Even if QP mode is set to Off, if the Safe Guard Input becomes open the robot will pause immediately.

See Also

Pause

QP Statement Example

This Command window example displays the current setting of whether the robot arm is to stop immediately on the Pause input. (i.e. is QP mode set On or Off)

>

qp

QP ON

>

qp

on '

Sets QP to Quick Pause Mode

>

566 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

QPDecelR Statement

QPDecelR Statement

Sets the deceleration speed of quick pause for the change of tool orientation during the CP motion.

Syntax

(1)

QPDecelR

QPDecelR

(2)

QPDecelR

Parameters

QPDecelR

Real value representing the deceleration speed of quick pause during the CP motion (deg/sec

2

).

Result

If omitted the parameter, the current QPDecelR set value will be displayed.

Description

QPDecelR statement is enabled when the ROT parameter is used in the Move, Arc, Arc3, BMove, TMove, and Jump3CP statements.

While quick pause is executed in these statements, a joint acceleration error may occur. This is because the deceleration speed of quick pause that is automatically set in a normal quick pause is over the joint allowable deceleration speed. Specifically, the error is likely to occur when the AccelR value in the CP motion is too high or jogging the robot near a singularity. In these cases, use the QPDecelR and set a lower quick pause deceleration speed. But if the setting is too low, the distance for quick pause will increase.

Therefore, set the possible value. Normally, you don’t need to set QPDecelR.

You cannot use values lower than the deceleration speed of orientation change in the CP motion set with

QPDecelR and AccelR. If you do, a parameter out of range error occurs.

Also, after you set QPDecelR, if a higher value than the set QP deceleration speed is set with the AccelR, the QPDecelR will automatically set the QP deceleration speed same as the deceleration speed set with the

AccelR.

The QPDecelR Statement value initializes to the default max deceleration speed when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

See Also

QPDecelR Function, QPDecelS, AccelR

QPDecelR Statement Example

The following program sets the QPDecelR of the Move statement.

Function QPDecelTest

AccelR 3000

QPDecelR

4000

SpeedR 100

Move P1 ROT

.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 567

QPDecelR Function

QPDecelR Function

Returns the set deceleration speed of quick pause for the change of tool orientation during the CP motion.

Syntax

QPDecelR

Return Values

Real value that contains the set deceleration speed of quick pause for the tool orientation change in the CP motion (deg/s 2 ).

See Also

QPDecelR, QPDecelS Function

QPDecelR Function Example

Real savQPDecelR savQPDecelR =

QPDecelR

568 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

QPDecelS Statement

QPDecelS Statement

Sets the deceleration speed of quick pause in the CP motion.

Syntax

(1)

QPDecelS

QPDecelS

[,

departDecel

,

approDecel

]

(2)

QPDecelS

Parameters

QPDecelS

Real value that specifies the deceleration speed of quick pause in the CP motion.

(mm/sec

2

)

departDecel approDecel

Real value that specifies the deceleration speed of quick pause in the Jump3 depart motion (mm/sec 2 )

Real value that specifies the deceleration speed of quick pause in the Jump3 approach motion (mm/sec 2 )

Return Values

If omitted the parameter, the current QPDecelS set value is displayed.

Description

While quick pause is executed in the CP motion, a joint acceleration error may occur. This is because the deceleration speed of quick pause that is automatically set in a normal quick pause is over the joint allowable deceleration speed. Specifically, the error is likely to occur when the AccelS value in the CP motion is too high or jogging the robot near a singularity. In these cases, use the QPDecelS and set a lower quick pause deceleration speed. But if the setting is too low, the distance for quick pause will increase.

Therefore, set the possible value. Normally, you don’t need to set QPDecelS.

You cannot use values lower than the deceleration speed of the CP motion set with AccelS. If you do, a parameter out of range error occurs.

Also, after you set QPDecelS, if a higher value than the set QP deceleration speed is set with the AccelS, the QPDecelS will automatically set the QP deceleration speed same as the deceleration speed set with the

AccelS.

The QPDecelS Statement value initializes to the default max deceleration speed when any one of the following conditions occurs:

Controller Startup

Motor On

SFree, SLock, Brake

Reset, Reset Error

Stop button or QuitAll stops tasks

See Also

QPDecelS Function, QPDecelR, AccelS

QPDecelS Statement Example

The following program sets the QPDecelS of the Move statement.

Function QPDecelTest

AccelS 3000

QPDecelS

4000

SpeedS 100

Move P1

.

.

.

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 569

QPDecelS Function

QPDecelS Function

Returns the set deceleration speed of quick pause during the CP motion.

Syntax

QPDecelS

(

paramNumber

)

Parameters

paramNumber

Integer expression specifying the one of the following values.

1: Quick pause deceleration speed during the CP motion

2: Quick pause deceleration speed in depart motion during the Jump3 and Jump3CP

3: Quick pause deceleration speed in approach motion during the Jump3 and Jump3CP

Return Values

Real value representing the quick pause deceleration speed (mm/s

2

).

See Also

QPDecelS, QPDecelR Function

QPDecelS Function Example

Real savQPDecelS savQPDecelS =

QPDecelS

(1)

570 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Quit Statement

Quit Statement

Terminates execution of a specified task or all tasks.

Syntax

Quit

{

taskIdentifier

|

All

}

Parameters

taskIdentifier

Task name or integer expression representing the task number.

Task name is a function name used in an Xqt statement or a function started from the

Run window or Operator window.

Task number range is:

Normal tasks :

Background task : 65 to 80

Trap tasks :

1 to 32

257 to 267

All

Specifies this parameter if all tasks except the background task should be terminated.

Description

Quit stops the tasks that are currently being executed, or that have been temporarily suspended with Halt.

Quit also stops the task when the specified task is NoPause task, NoEmgAbort task (special task using

NoPause or NoEmgAbort at Xqt), or the background tasks.

Quit All stops all tasks including the tasks above other than the background tasks.

Quit All sets the robot control parameter as below:

Robot Control parameter

Current robot Speed, SpeedR, SpeedS

Current robot QPDecelR , QPDecelS

Current robot LimZ parameter

Current robot CP parameter

Current robot SoftCP parameter

Current robot Fine

Current robot Power Low

Current robot PTPBoost

Current robot TCLim, TCSpeed

Current robot PgLSpeed

(Initialized to default values)

(Initialized to default values)

(Initialized to 0)

(Initialized to Off)

(Initialized to Off)

(Initialized to default values)

(Low Power Mode set to On)

(Initialized to default values)

(Initialized to default values)

(Initialized to default values)

See Also

Exit, Halt, Resume, Xqt

Quit Statement Example

This example shows two tasks that are terminated after 10 seconds.

Function main

Xqt winc1 ' Start winc1 function

Xqt winc2 ' Start winc2 function

Wait 10

Quit

winc1 '

Terminate task winc1

Quit

winc2 ' Terminate task winc2

Fend

Function winc1

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 571

Quit Statement

Do

On 1; Wait 0.2

Off 1; Wait 0.2

Loop

Fend

Function winc2

Do

On 2; Wait 0.5

Off 2; Wait 0.5

Loop

Fend

572 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RadToDeg Function

Converts radians to degrees.

Syntax

RadToDeg(

radians

)

Parameters

radians

Real expression representing the radians to convert to degrees.

Return Values

A double value containing the number of degrees.

See Also

ATan, ATan2, DegToRad Function

RadToDeg Function Example

s = Cos(

RadToDeg

(x))

RadToDeg Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 573

Randomize Statement

Randomize Statement

Initializes the random-number generator.

Syntax

(1)

Randomize

seedValue

(2)

Randomize

Parameters

seedValue

Specify a real value (0 or more) to be basis to retrieve a random number.

See Also

Rnd Function

Randomize Statement Example

Function main

Real r

Randomize

Integer randNum

randNum = Int(Rnd(10)) + 1

Print "Random number is:", randNum

Fend

574 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Range Statement

Range Statement

Specifies and displays the motion limits for each of the servo joints.

Syntax

(1)

Range

j1Min, j1Max, j2Min, j2Max, j3Min, j3Max, j4Min, j4Max

[, j5Min

,

j5Max, j6Min, j6Max]

[, j7Min, j7Max]

(2)

Range

[, j8Min, j8Max, j9Min, j9Max]

Parameters

j1Min j1Max j2Min j2Max j3Min j3Max j4Min j4Max j5Min

The lower limit for joint 1 specified in pulses.

The upper limit for joint 1 specified in pulses.

The lower limit for joint 2 specified in pulses.

The upper limit for joint 2 specified in pulses.

The lower limit for joint 3 specified in pulses.

The upper limit for joint 3 specified in pulses.

The lower limit for joint 4 specified in pulses.

The upper limit for joint 4 specified in pulses.

j5Max j6Min j6Max

Optional for 6-Axis robots (including N series) and Joint type 6-axis robots.

The lower limit for joint 5 specified in pulses.

Optional for 6-Axis robots (including N series) and Joint type 6-axis robots.

The upper limit for joint 5 specified in pulses.

Optional for 6-Axis robots (including N series) and Joint type 6-axis robots.

The lower limit for joint 6 specified in pulses.

Optional for 6-Axis robots (including N series) and Joint type 6-axis robots.

The upper limit for joint 6 specified in pulses.

j7Min j7Max

Optional for Joint type 7-axis robots. The lower limit for joint 7 specified in pulses.

Optional for Joint type 7-axis robots. The upper limit for joint 7 specified in pulses.

j8Min j8Max j9Min j9Max

Optional for the additional S axis. The lower limit for joint 8 specified in pulses.

Optional for the additional S axis. The upper limit for joint 8 specified in pulses.

Optional for the additional T axis. The lower limit for joint 9 specified in pulses.

Optional for the additional T axis. The upper limit for joint 9 specified in pulses.

Return Values

Displays the current Range values when Range is entered without parameters

Description

Range specifies the lower and upper limits of each motor joint in pulse counts. These joint limits are specified in pulse units. This allows the user to define a maximum and minimum joint motion range for each of the individual joints. XY coordinate limits can also be set using the XYLim instruction.

The initial Range values are different for each robot. The values specified by this instruction remain in effect even after the power is switched off.

When parameters are omitted, the current Range values are displayed.

Robot parameter data is stored in compact flash in controller. Therefore, writing to command flash occurs when executing this command. Frequent writing to compact flash affect to lifetime of compact flash. We recommend to use this command minimally.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 575

Range Statement

Potential Errors

Attempt to Move Out of Acceptable Range

If the robot arm attempts to move through one of the joint limits error will occur.

Axis Does Not Move

If the lower limit pulse is equal to or greater than the upper limit pulse, the joint does not move.

Note

Range of the lower/upper limits of Joint #6 in pulse differs depending on manipulator model

C4 :

419430399 to 419430399

C8, C12, N2, N6 :

26847955 to 26847955

See Also

JRange, SysConfig, XYLim

Range Statement Example

This simple example from the command window displays the current range configurations and then changes them.

>

range

-18205, 182045, -82489, 82489, -36864, 0, -46695, 46695

>

>

range

0, 32000, 0, 32224, -10000, 0, -40000, 40000

>

576 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Read Statement

Read Statement

Reads characters from a file or communications port.

Syntax

Read

#

portNumber

,

stringVar

$,

count

Parameters

portNumber stringVar$ count

ID number representing a file or communications port to read from.

File number can be specified in ROpen, WOpen, and AOpen statements.

Communication port number can be specified in OpenCom (RS-232C) or OpenNet

(TCP/IP) statements.

Name of a string variable that will receive the character string.

Maximum number of bytes to read.

See Also

ChkCom, ChkNet, OpenCom, OpenNet, Write

Read Statement Example

Integer numOfChars

String data$ numOfChars = ChkCom(1)

If numOfChars > 0 Then

Read

#1, data$, numOfChars

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 577

ReadBin Statement

ReadBin Statement

Reads binary data from a file or communications port.

Syntax

ReadBin

#

portNumber

,

var

ReadBin

#

portNumber, array(), count

Parameters

portNumber

ID number representing a file or communications port to read from.

File number can be specified in BOpen statement.

Communication port number can be specified in OpenCom (RS-232C) or OpenNet

(TCP/IP) statements.

var array() count

Name of a byte, integer, or long variable that will receive the data.

Name of a byte, integer, or long array variable that will receive the data. Specify a one dimension array variable.

Specify the number of bytes to read.

The specified count has to be less than or equal to the number of array elements and also smaller than 256 bytes.

If the communication port (TCP/IP) is the subject, the count has to be less than or equal to the number of array and also smaller than 1024 bytes.

See Also

Write, WriteBin

ReadBin Statement Example

Integer data

Integer dataArray(10) numOfChars = ChkCom(1)

If numOfChars > 0 Then

ReadBin

#1, data

EndIf

NumOfChars = ChkCom(1)

If numOfChars > 10 Then

ReadBin

#1, dataArray(), 10

EndIf

578 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Real Statement

Real Statement

Declares variables of type Real (4 byte real number).

Syntax

Real

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]

...

]

Parameters

varName subscripts

Variable name which the user wants to declare as type Real.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Real is used to declare variables as type Real. Local variables should be declared at the top of a function.

Global and module variables must be declared outside functions.

Number of valid digits are six digits for Real type.

See Also

Boolean, Byte, Double, Global, Int32, Int64, Integer, Long, Short, String, UByte, UInt32, UInt64,

UShort

Real Statement Example

The following example shows a simple program which declares some variables using Real.

Function realtest

Real

var1

Real

A(10) '

Single dimension array of real

Real

B(10, 10) ' Two dimension array of real

Real

C(5, 5, 5) '

Three dimension array of real

Real

arrayVar(10)

Integer i

Print "Please enter a Real Number:"

Input var1

Print "The Real variable var1 = ", var1

For i = 1 To 5

Print "Please enter a Real Number:"

Input arrayVar(i)

Print "Value Entered was ", arrayVar(i)

Next i

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 579

RealAccel Function

RealAccel Function

Returns the Accel value adjusted by OLAccel.

Syntax

RealAccel

(

paramNumber

)

Parameters

paramNumber

Integer expression which can have the following values:

1: acceleration specification value

2: deceleration specification value

3: depart acceleration specification value for Jump

4: depart deceleration specification value for Jump

5: approach acceleration specification value for Jump

6: approach deceleration specification value for Jump

Return Values

Integer 1% or more

Usage

By using RealAccel, the maximum acceleration speed with which the robot can operate continuously can be acquired.

Steps are as follows:

(1) Operate the robot with the OLAccel command On.

(2) Execute the OLRate command and check if the overload ratio rises.

(3) If the overload ratio rises, auto adjustment begins when the overload ratio exceeds 0.5.

(4) After a certain period of time has passed, execute the OLRate command and check that the overload ratio does not rise.

(5) After checking that the overload ratio does not rises, execute the RealAccel function.

(6) The value returned by the RealAccel function is the maximum acceleration speed that the robot can operate continuously in the step (1).

* If the RealAccel function is executed while the overload ratio is rising, maximum acceleration speed of continuous motion cannot be acquired.

* If the overheat error occurs, maximum acceleration speed of continuous motion cannot be acquired by the above procedure.

See Also

Accel, OLAccel, OLRate

RealAccel Function Example

Following is the example of the RealAccel function used in the program.

Integer RealAccel1, RealDecel1

Accel 100, 100

OLAccel on

' Acquire the current acceleration speed.

RealAccel1

= RealAccel (1)

RealDecel1 = RealAccel (2)

Display the current acceleration speed

Print

RealAccel1

Display the current deceleration speed

Print RealDecel1

580 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RealPls Function

RealPls Function

Returns the pulse value of the specified joint.

Syntax

RealPls

(jointNumber)

Parameters

jointNumber

The specific joint for which to get the current pulse count.

The additional S axis is 8 and T axis is 9.

Return Values

Returns an integer value representing the current encoder pulse count for the joint specified by

jointNumber

.

Description

RealPls is used to read the current encoder position (or Pulse Count) of each joint. These values can be saved and then used later with the Pulse command.

See Also

CX, CY, CZ, CU, CV, CW, Pulse

RealPls Function Example

Function DisplayPulses

Long joint1Pulses

joint1Pulses =

RealPls

(1)

Print "Joint 1 Current Pulse Value: ", joint1Pulses

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 581

RealPos Function

RealPos Function

Returns the current position of the specified robot.

Syntax

RealPos

Return Values

A robot point representing the current position of the specified robot.

Description

RealPos is used to read the current position of the robot.

See Also

CurPos, CX, CY, CZ, CU, CV, CW, RealPls

RealPos Function Example

Function ShowRealPos

Print

RealPos

Fend

P1 = RealPos

582 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RealTorque Function

RealTorque Function

Returns the current torque instruction value of the specified joint.

Syntax

RealTorque

(

jointNumber

)

Parameters

jointNumber

Specifies the joint number to acquire the torque instruction value using an expression or numeric value.

The additional S axis is 8 and T axis is 9.

Return Values

Returns the real value (-1 to 1) representing the proportion in the maximum torque on current power mode.

The positive value means the positive direction of the joint angle and the negative value means the negative direction.

See also

TC, TCSpeed, TCLim

RealTorque Function Example

Print "Current Z axis torque instruction value (SCARA):",

RealTorque

(3)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 583

Recover Statement

Recover Statement

Executes safeguard position recovery and returns status.

This is for the experienced user and you need to understand the command specification before use.

Syntax

(1)

Recover

robotNumber

|

All

(2)

Recover

robotNumber

|

All

,

WithMove

|

WithoutMove

Parameters

robotNumber

Robot number that you want to execute recovery for.

If omitted, all robots are executed recovery.

All

WithMove

All robots execute recovery

If omitted, same as

All

.

A constant whose value is 0.

Turns motor on and executes safeguard position recovery.

If omitted, same as

WithMove

.

WithoutMove

A constant whose value is 1.

Turns the robot motor on. Not usually used.

Realizes the special recovery with AbortMotion.

Return Values

Boolean value. True if recover was completed, False if not.

Description

To execute Recover statement from a program, you need to set the [Enable advanced task commands] checkbox in the [Setup] menu-[System Configuration]-[Controller]-[Preferences] page of the EPSON RC+.

Recover can be used after the safeguard is closed to turn on the robot motors and move the robot back to the position it was in when the safeguard was open with low power PTP motion. After Recover has completed successfully, you can execute the Cont method to continue the cycle.

When more than one robot is used in the controller and

All

is specified, all robots are recovered.

See Also

AbortMotion, Cont, Recover Function, RecoverPos

584 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Recover Statement

Recover Statement Example

CAUTION

■ When executing the Recover command from a program, you must understand the command specification and confirm that the system has the proper conditions for this command. Improper use such as continuous execution of a command within a loop may deteriorate the system safety.

Function main

Xqt 2, monitor, NoPause

Do

Jump P1

Jump P2

Loop

Fend

Function monitor

Do

If Sw(SGOpenSwitch) = On then

Wait Sw(SGOpenSwitch) = Off and Sw(RecoverSwitch) = On

Recover All

EndIf

Loop

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 585

Recover Function

Recover Function

Executes safeguard position recovery and returns status.

This is for the experienced user and you need to understand the command specification before use.

Syntax

(1)

Recover

(2)

Recover

(

robotNumber

|

All

)

(3)

Recover

(

robotNumber

|

All

,

WithMove

|

WithoutMove

)

Parameters

robotNumber

All

Robot number that you want to execute recovery for.

If omitted, all robots are executed recovery.

All robots execute recovery

If omitted, same as

All

.

WithMove

WithoutMove

A constant whose value is 0.

Turns motor on and executes safeguard position recovery.

If omitted, same as

WithMove

.

A constant whose value is 1.

Turns the robot motor on. Not usually used.

Realizes the special recovery with AbortMotion.

Return Values

Boolean value. True if recover was completed, False if not.

Description

To execute Recover statement from a program, you need to select the [Enable advanced task commands] checkbox in the EPSON RC+ [Setup]-[System Configuration]-[Controller]-[Preferences].

Recover can be used after the safeguard is closed to turn on the robot motors and move the robot back to the position it was in when the safeguard was open with low power PTP motion. After Recover has completed successfully, you can execute the Cont method to continue the cycle.

When more than one robot is used in the controller and

All

is specified, all robots are recovered.

CAUTION

■ When executing the Recover command from a program, you must understand the command specification and confirm that the system has the proper conditions for this command. Improper use such as continuous execution of a command within a loop may deteriorate the system safety.

See Also

AbortMotion, Cont, Recover Statement, RecoverPos

586 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Recover Function

Recover Function Example

Boolean sts

Integer answer sts =

Recover

If sts = True Then

MsgBox "Ready to continue", MB_ICONQUESTION + MB_YESNO,

"MyProject", answer

If answer = IDYES Then

Cont

EndIf

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 587

RecoverPos Function

RecoverPos Function

Returns the position where a robot was in when safeguard was open.

This is for the experienced and you need to understand the command specification before use.

Syntax

RecoverPos

( [

robotNumber

] )

Parameters

robotNumber

Integer value that specifies a robot number

If omitted, the current robot number is used.

Return Values

Returns the position the specified robot was in when the safeguard was open.

In the case where the safeguard was not open or the robot has completed the recovery, the coordinates of the returned point data are 0.

Description

This function returns the robot recovery position when using the Cont or Recover commands.

See Also

AbortMotion, Cont, Recover, Recover Function, RealPos

RecoverPos Function Example

If the straight distance of recovery is less than 10 mm, it executes recovery. If more than 10 mm, it finishes the program.

If Dist(

RecoverPos

, RealPos) < 10 Then

Recover All

Else

Quit All

EndIf

588 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Redim Statement

Redim Statement

Redimension an array at run-time.

Syntax

Redim

[

Preserve

]

arrayName

(

subscripts

)

Parameters

Preserve

arrayName

Optional. Specifies to preserve the previous contents of the array. If omitted, the array will be cleared.

Name of the array variable; follows standard variable naming conventions. The array must have already been declared.

subscripts

Optional. New dimensions of an array variable may be declared. You must supply the same number of dimensions as when the variable was declared. The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

Global variable and module variable

Others than

String

2,000

4,000

100,000

String

200

400

10,000

Description

Use Redim to change an array’s dimensions at run time. Use Preserve to retain previous values.

The array variable declared by Byref cannot use Redim.

Frequent Redim will decrease the speed of program execution. Especially, we recommend using the minimum of Redim for the global preserve variables.

See Also

UBound

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 589

Redim Statement

Redim Statement Example

Integer i, numParts, a(0)

Print "Enter number of parts "

Input numParts

Redim

a(numParts)

For i=0 to UBound(a)

a(i) = i

Next

' Redimension the array with 20 more elements

Redim Preserve

a(numParts + 20)

' The first element values are retained

For i = 0 to UBound(a)

Print a(i)

Next

590 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Rename Statement

Rename Statement

Renames a file.

Syntax

Rename

oldFileName

,

newFileName

Parameters

oldFileName newFileName

String expression containing the path and name of the file to rename.

See ChDisk for the details.

The new name to be given to the file specified by

oldFileName

.

See ChDisk for the details.

Description

Changes name of specified file

oldFileName

to

newFileName

.

If path is omitted, Rename searches for

oldFileName

in the current directory.

Rename is only enabled when

oldFileName

and

newFileName

are specified in the same drive.

A file may not be renamed to a filename that already exists in the same path.

Wildcard characters are not allowed in either

oldFileName

or

newFileName

.

See Also

Copy

Rename Statement Example

Example from the command window:

> Rename A.PRG B.PRG

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 591

RenDir Statement

RenDir Statement

Rename a directory.

Syntax

Rendir

oldDirName

As String,

newDirName

As String

Parameters

oldDirName

A string expression specifying the path and name of the directory to rename.

newDirName

A string expression specifying the path and new name to be given to the directory specified by

oldDir

.

See ChDisk for the details of path.

Description

The same path used for

oldDirName

must be included for

newDirName

.

If both paths of the parameters above are omitted and directory name is only specified, the current directory is specified.

Wildcard characters are not allowed in either

oldDirName

or

newDirName

.

Note

- This statement is executable only with the PC disk.

See Also

MkDir

RenDir Statement Example

RenDir

"c:\mydata", "c:\mydata1"

592 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Reset Statement

Reset Statement

Resets the controller into an initialized state.

Syntax

(1)

Reset

(2)

Reset Error

Description

Reset resets the items shown below.

Reset Error finishes all non-background tasks and resets the error status and robot control parameters.

To execute the Reset Error statement from programs you need to set the [Enable advanced task commands] preference in the [Setup]-[System Configuration]-[Controller]-[Preference] page of the EPSON RC+.

Emergency Stop Status (reset by Reset only)

Error status

Output Bits (reset by Reset only)

All Output Bits output set to Off except the I/O for Remote.

User can set Option Switch to turn this feature off.

Robot Control parameter

Current robot Speed, SpeedR, SpeedS

Current robot QPDecelR , QPDecelS

Current robot LimZ parameter

Current robot CP parameter

Current robot SoftCP parameter

Current robot Fine

Current robot Power Low

Current robot PTPBoost

Current robot TCLim, TCSpeed

Current robot PgLSpeed

(Initialized to default values)

(Initialized to default values)

(Initialized to 0)

(Initialized to Off)

(Initialized to Off)

(Initialized to default values)

(Low Power Mode set to On)

(Initialized to default values)

(Initialized to default values)

(Initialized to default values)

For servo related errors, Emergency Stop status, and any other conditions requiring a Reset, no command other than Reset will be accepted. In this case first execute Reset, then execute other processing as necessary.

For example, after an emergency stop, first verify safe operating conditions, execute Reset, and then execute Motor On.

Critical error state will not be canceled by Reset.

When critical error occurs, turn Off the controller and solve the cause of the error.

The Reset Statement cannot be executed from a background task or tasks started with the Trap Emergency or Trap Error. Emergency Stop status cannot be reset from programs.

Note

Reset Outputs Preference

([Setup]-[System Configuration]-[Controller]-[Preferences]) If the [Reset command turns off outputs] checkbox is selected, all outputs will be turned OFF when the Reset command is issued.

This is important to remember when wiring the system such that turning the outputs off should not cause tooling to drop or similar situations.

See Also

Accel, AccelS, Fine, LimZ, Motor, Off, On, PTPBoost, SFree, SLock, Speed, SpeedS

Reset Statement Example

Example from the command window.

>

reset

>

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 593

ResetElapsedTime Statement

ResetElapsedTime Statement

Resets the takt time measurement timer used in ElapsedTime Function.

Syntax

ResetElapsedTime

Description

Resets and starts the takt time measurement timer.

See Also

ElapsedTime Function

ResetElapsedTime Statement Example

ResetElapsedTime

' Resets the takt time measurement timer

For i = 1 To 10 ' Executes 10 times

GoSub Cycle

Next

Print ElapsedTime / 10 ' Measures a takt time and displays it

594 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Restart Statement

Restart Statement

Restarts the current main program group.

This command is for the experienced user and you should understand the command specification before use.

Syntax

Restart

Description

Restart stops all tasks and re-executes the last main program group that was running. Background tasks continue to run.

All Trap settings are reset and even if Restart stops tasks, it doesn’t execute Trap Abort.

Restart resets the Pause status.

If you execute Restart during error status, reset the error first using a method such as the Reset Error statement.

Restart cannot be used during Emergency Stop status as it causes an error. Emergency Stop status cannot be reset from programs.

CAUTION

■ When executing the Restart command from a program, you must understand the command specification and confirm that the system has the proper conditions for this command. Improper use such as continuous execution of a command within a loop may deteriorate the system safety.

See Also

Quit, Reset, Trap, Xqt

Restart Statement Example

Function main

Trap Error Xqt eTrap

Motor On

Call PickPlac

Fend

Function eTrap

Wait Sw(ERresetSwitch)

Reset Error

Wait Sw(RestartSwitch)

Restart

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 595

Resume Statement

Resume Statement

Continues a task which was suspended by the Halt instruction.

Syntax

Resume

{

taskIdentifier |

All

}

Parameters

taskIdentifier

Task name or integer expression representing the task number.

Task name is a function name used in an Xqt statement or a function started from the

Run window or Operator window.

Task number range is:

Normal tasks :

Background task : 65 to 80

Trap tasks :

1 to 32

257 to 267

All

Specifies that all tasks should be resumed.

Description

Resume continues the execution of the tasks suspended by the Halt instruction.

See Also

Halt, Quit, Xqt

Resume Statement Example

This shows the use of Resume instruction after the Halt instruction.

Function main

Xqt 2, flicker ' Execute flicker as task 2

Do

Wait 3 ' Allow flicker to execute for 3 seconds

Halt flicker '

Halt the flicker task

Wait 3

Resume

flicker ' Resume the flicker task

Loop

Fend

Function flicker

Do

On 1

Wait 0.2

Off 1

Wait 0.2

Loop

Fend

596 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Return Statement

Return Statement

The Return statement is used with the GoSub statement. GoSub transfers program control to a subroutine.

Once the subroutine is complete, Return causes program execution to continue at the line following the

GoSub instruction which initiated the subroutine.

Syntax

Return

Description

The Return statement is used with the GoSub statement. The primary purpose of the Return statement is to return program control back to the instruction following the GoSub instruction which initiated the subroutine in the first place.

The GoSub instruction causes program control to branch to the user specified statement line number or label. The program then executes the statement on that line and continues execution through subsequent line numbers until a Return instruction is encountered. The Return instruction then causes program control to transfer back to the line which immediately follows the line which initiated the GoSub in the first place.

(i.e. the GoSub instruction causes the execution of a subroutine and then execution Returns to the statement following the GoSub instruction.)

Potential Error

Return Found Without GoSub

A Return instruction is used to "return" from a subroutine back to the original program which issued the

GoSub instruction. If a Return instruction is encountered without a GoSub having first been issued then an error will occur. A standalone Return instruction has no meaning because the system doesn't know where to Return to.

See Also

OnErr, GoSub

,

GoTo

Return Statement Example

The following example shows a simple function which uses a GoSub instruction to branch to a label called checkio and check the first 16 user inputs. Then the subroutine returns back to the main program.

Function main

Integer var1, var2

GoSub checkio

On 1

On 2

Exit Function checkio: ' Subroutine starts here

var1 = In(0)

var2 = In(1)

If var1 <> 0 Or var2 <> 0 Then

Print "Message to Operator here"

EndIf finished:

Return

'

Subroutine ends here and returns to line 40

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 597

Right$ Function

Right$ Function

Returns a substring of the rightmost characters of a string.

Syntax

Right$

(string, count)

Parameters

string count

String variable or character string of up to 255 characters from which the rightmost characters are copied.

The number of characters to copy from

string

starting with the rightmost character.

Return Values

Returns a string of the rightmost

count

characters from the character string specified by the user.

Description

Right$ returns the rightmost

count

characters of a string specified by the user. Right$ can return up to as many characters as are in the character string.

See Also

Asc, Chr$, InStr, Left$, Len, Mid$, Space$, Str$, Val

Right$ Function Example

The example shown below shows a program which takes a part data string as its input and splits out the part number, part name, and part count.

Function SplitPartData(DataIn$ As String, ByRef PartNum$ As String,

ByRef PartName$ As String, ByRef PartCount As Integer)

PartNum$ = Left$(DataIn$, 10)

DataIn$ =

Right$

(datain$, Len(DataIn$) - pos)

pos = Instr(DataIn$, ",")

PartName$ = Mid$(DataIn$, 11, 10)

PartCount = Val(

Right$

(dataIn$, 5))

Fend

Some other example results from the Right$ instruction from the Command window.

> Print

Right$

("ABCDEFG", 2)

FG

> Print

Right$

("ABC", 3)

ABC

598 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RmDir Statement

RmDir Statement

Removes an empty subdirectory from a controller disk drive.

Syntax

Rmdir

dirName

Parameters

dirName

String expression for the path and name of the directory to remove.

If the directory name is specified without a path, then the subdirectory in the current directory is specified.

See ChDisk for the details of path.

Description

Removes the specified subdirectory. Prior to executing Rmdir all of the subdirectory's files must be deleted.

The current directory or parent directory cannot be removed.

When executed from the Command window, quotes may be omitted.

Note

- This statement is executable only with the PC disk.

Rmdir Statement Example

Example from the command window:

>

RmDir

\mydata

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 599

Rnd Function

Rnd Function

Returns a random number.

Syntax

Rnd

(

maxValue

)

Parameters

maxValue

Real expression that represents the maximum return value.

Return Values

Random real number from 0 to

range

.

Description

Use Rnd to generate random number values.

See Also

Int, Randomize

Rnd Function Example

Here's a Rnd example that generates a random number between 1 and 10.

Function main

Real r

Integer randNum

Randomize

randNum = Int(

Rnd

(9)) + 1

Print "Random number is:", randNum

Fend

600 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Robot Statement

Robot Statement

Selects the current robot.

Syntax

Robot

number

Parameters

number

Number of the desired robot. The value ranges from 1 to the number of installed robots.

Description

Robot allows the user to select the default robot for subsequent motion instructions.

On a system with one robot, the Robot statement does not need to be used.

See Also

Accel, AccelS, Arm, ArmSet, Go, Hofs, Home, HOrdr, Local, Move, Pulse, Robot Function,

Speed, SpeedS

Robot Statement Example

Function main

Integer I

For I = 1 to 100

Robot

1

Go P(i)

Robot

2

Go P(i)

Next I

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 601

Robot Function

Robot Function

Returns the current robot number.

Syntax

Robot

Return Values

Integer containing the current robot number.

See Also

Robot Statement

Robot Function Example

Print "The current robot is: ",

Robot

602 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RobotInfo Function

RobotInfo Function

Returns status information for the robot.

Syntax

RobotInfo

(

index

)

Parameters

index

Integer expression that represents the index of the information to retrieve.

Return Values

The specified information is returned as an integer.

Description

The information for each bit of the returned value is shown in the table below:

Index

0

11

12

13

14

7

8

9

10

3

4

5

6

Bit

0

1

2

Value

&H1

&H2

&H4

Description

Undefined

Resettable error has occurred

&H8

Non-resettable error has occurred

Motors are on

&H10 Current power is high

1

2

3

4

5

6

7

4

5

2

3

0

1

15

16-31

0

1

2

3-31

0

1-31

8

9-31

N/A

0

1

&H1

&H2

&H4

&H1

&H1

&H2

&H20 Undefined

&H40 Undefined

&H80 Undefined

&H100 Robot is halted

&H200 Robot not halted (executing motion or in quick pause)

&H400 Robot stopped by pause or safeguard

Undefined

Undefined

Undefined

&H4000 TILL condition was satisfied by preceding motion command

&H8000 SENSE condition was satisfied by preceding motion command

Undefined

Robot is tracking (Conveyor tracking)

&H4

&H8 Joint 4 servo is engaged

&H10 Joint 5 servo is engaged

&H20 Joint 6 servo is engaged

&H40 Joint 7 servo is engaged

&H80 S axis servo is engaged

&H100 T axis servo is engaged

0 - 32

− 1

&H1

&H2

Robot is waiting for recovery motion (WaitRecover status)

Robot is being recovered

Undefined

Robot is at home position

Undefined

Joint 1 servo is engaged

Joint 2 servo is engaged

Joint 3 servo is engaged

Undefined

Number of tasks executing robot commands

0 = command executing from command window or macro

− 1 = no task is using the manipulator

Joint 1 brake is on

Joint 2 brake is on

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 603

RobotInfo Function

Index Bit

2

3

4

7

8

5

6

9-31

See Also

CtrlInfo, RobotInfo$, TaskInfo

Value

&H4

&H8

Joint 3 brake is on

Joint 4 brake is on

&H10 Joint 5 brake is on

&H20 Joint 6 brake is on

&H40 Joint 7 brake is on

&H80 S axis brake is on

&H100 T axis brake is on

Undefined

RobotInfo Function Example

If (

RobotInfo

(3) And &H1) = &H1 Then

Print "Joint 1 is locked"

Else

Print "Joint 1 is free"

EndIf

Description

604 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RobotInfo$ Function

RobotInfo$ Function

Returns text information for the robot.

Syntax

RobotInfo$

(

index

)

Parameters

index

Integer expression that represents the index of the information to retrieve.

Return Values

A string containing the specified information.

Description

Index

0

1

2

3

4

Description

Robot name

Model name

Default point file name

Undefined

Serial number of robot

See Also

CtrlInfo, RobotInfo, TaskInfo

RobotInfo$ Function Example

Print "Robot Name: ",

RobotInfo$

(0)

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 605

RobotModel$ Function

RobotModel$ Function

Returns the robot model name.

Syntax

RobotModel$

Return Values

A string containing the model name. This is the name that is shown on the rear panel of the robot.

See Also

RobotType

RobotModel$ Function Example

Print "The robot model is ",

RobotModel

$

606 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RobotName$ Function

Returns the robot name.

Syntax

RobotName$

Return Values

A string containing the robot name.

See Also

RobotInfo, RobotModel$

RobotName$ Function Example

Print "The robot name is ",

RobotName

$

RobotName$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 607

RobotSerial$ Function

RobotSerial$ Function

Returns the robot serial number.

Syntax

RobotSerial$

Return Values

A string containing the robot serial number.

See Also

RobotInfo, RobotName$, RobotModel$

RobotSerial$ Function Example

Print "The robot serial number is ",

RobotSerial

$

608 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RobotType Function

Returns the robot type.

Syntax

RobotType

Return Values

1: Joint

2: Cartesian

3: SCARA

5: 6-AXIS

6: RS series

7: N series

See Also

RobotModel$

RobotType Function Example

If

RobotType

= 3 Then

Print "Robot type is SCARA"

EndIf

RobotType Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 609

ROpen Statement

ROpen Statement

Opens a file for reading.

Syntax

ROpen

fileName

As

#fileNumber

.

.

Close

#fileNumber

Parameters

fileName fileNumber

A string expression containing the file name to read from including the path.

If only file name is specified, a file in the current directory is specified.

See ChDisk for the details.

Integer expression from 30 to 63

Description

Opens the specified

fileName

for reading and identifies it by the specified

fileNumber

. This statement is used to open and read data from the specified file.

Notes

PC disk only

A network path is available.

The

fileNumber

identifies the file as long as the file is open and until it is closed the same file number cannot be used to the other files.

The fileNumber is used for the file operation commands (Input#, Read, Seek, Eof, Close)

Close statement closes the file and releases the file number.

It is recommended that you use the FreeFile function to obtain the file number so that more than one task are not using the same number.

See Also

Close, Input #, AOpen, BOpen, UOpen, WOpen, FreeFile

ROpen Statement Example

Integer fileNum, i, j fileNum = FreeFile

WOpen "TEST.DAT" As #fileNum

For i = 0 To 100

Print #fileNum, i

Next i

Close #fileNum fileNum = FreeFile

ROpen

"TEST.DAT" As #fileNum

For i = 0 to 100

Input #fileNum, j

Print "data = ", j

Next i

Close #fileNum

610 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RSet$ Function

Returns the specified string with leading spaces added up to the specified length.

Syntax

RSet$

(

string, length

)

Parameters

string length

String expression.

Integer expression for the total length of the string returned.

Return Values

Specified string with leading spaces appended.

See Also

LSet$, Space$

RSet$ Function Example

temp$ = "123" temp$ =

RSet$

(temp$, 10) ' temp$ = " 123"

RSet$ Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 611

RShift Function

RShift Function

Shifts numeric data to the right by a user specified number of bits.

Syntax

RShift

(number, shiftBits)

Parameters

number

Numeric expression to be shifted.

shiftBits

The number of bits (integer from 0 to 31) to shift

number

to the right.

Return Values

Returns a numeric result which is equal to the value of

number

after shifting right

shiftbits

number of bits.

Description

RShift shifts the specified numeric data (

number

) to the right (toward a lower order digit) by the specified number of bits (

shiftBits

). The high order bits shifted are replaced by 0.

The simplest explanation for RShift is that it simply returns the result of

number

/ 2

shiftBits

divided by 2

shiftBit

times.)

. (

Number

is

Note

Numeric Data Type:

The numeric data (

number

) may be any valid numeric data type. RShift works with data types: Byte,

Double, Int32, Integer, Long, Real, Short, UByte, UInt32, and UShort.

See Also

And, LShift, LShift64, Not, Or, RShift64, Xor

RShift Function Example

The example shown below shows a program which shows all the possible RShift values for an Integer data type starting with the integer set to “0”.

Function rshiftst

Integer num, snum, i

num = 32767

For i = 1 to 16

Print "i =", i

snum =

RShift

(num, 1)

Print "RShift(32767, ", i, ") = ", snum

Next i

Fend

Some other example results from the RShift instruction from the command window.

> Print

RShift

(10,1)

5

> Print

RShift

(8,3)

1

> Print

RShift

(16,2)

4

612 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RShift64 Function

RShift64 Function

Shifts numeric data to the right by a user specified number of bits.

Syntax

RShift64

(number, shiftBits)

Parameters

number

Numeric expression to be shifted.

shiftBits

Return Values

The number of bits (integer from 0 to 63) to shift

number

to the right.

Returns a numeric result which is equal to the value of

number

after shifting right

shiftbits

number of bits.

Description

RShift64 shifts the specified numeric data (

number

) to the right (toward a lower order digit) by the specified number of bits (

shiftBits

). The high order bits shifted are replaced by 0.

The simplest explanation for RShift64 is that it simply returns the result of

number

/ 2

shiftBits

divided by 2

shiftBit

times.)

. (

Number

is

Note

Numeric Data Type:

The numeric data (

number

) may be any valid numeric data type. RShift64 works with Int64 and UInt64 data types.

See Also

And, LShift, LShift64, Not, Or, RShift, Xor

RShift64 Function Example

The example shown below shows a program which shows all the possible RShift64 values for an Integer data type starting with the integer set to “0”.

Function rshif64tst

UInt64 num, snum, i

num = 18446744073709551615

For i = 1 to 63

Print "i =", i

snum =

RShift64

(num, i)

Print "RShift64(18446744073709551615, ", i, ") = ", snum

Next i

Fend

Some other example results from the RShift64 instruction from the command window.

> Print

RShift64

(10,1)

5

> Print

RShift64

(8,3)

1

> Print

RShift64

(16,2)

4

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 613

RTrim$ Function

RTrim$ Function

Returns a string equal to specified string without trailing spaces.

Syntax

RTrim$

(

string

)

Parameters

string

String expression.

Return Values

Specified string with trailing spaces removed.

See Also

LTrim$, Trim$

RTrim$ Function Example

str$ = " data " str$ =

RTrim$

(str$) ' str$ = "..data"

614 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

RunDialog Statement

RunDialog Statement

Runs an EPSON RC+ dialog from a SPEL + program.

Syntax

(1)

RunDialog

dialogID

(2)

RunDialog

DLG_ROBOTMNG [,

robotAllowed

]

Parameters

dialogID

Integer expression containing a valid dialog ID. These values are predefined constants as shown below.

DLG_ROBOTMNG 100

DLG_IOMON 102

DLG_VGUIDE 110

Run the Robot Manager dialog

Run I/O Monitor

Run Vision Guide dialog

robotAllowed

This parameter is only available when DLG_ROBOTMNG is specified as

dialog ID

.

Specifies a robot that is available in the Robot Manager in bit value.

Example

Robot 1

Robot 2

Robot 1 and 2

Set value bit15 bit14 ...

&H0001 Off Off

&H0002 Off Off

&H0003 Off Off bit2 bit1 bit0

Off Off On

Off

Off

On

On

Off

On

:

Robot 16 &H1000 On Off Off Off Off

Description

Use RunDialog to run EPSON RC+ dialogs from a SPEL

+

task. The task will be suspended until the operator closes the dialog.

When running dialogs that execute robot commands, you should ensure that no other tasks will be controlling the robot while the dialog is displayed, otherwise errors could occur.

See Also

InputBox, MsgBox

RunDialog Statement Example

If Motor = Off Then

RunDialog

DLG_ROBOTMNG

If Motor = Off Then

Print "Motors are off, aborting program"

Quit All

EndIf

EndIf

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 615

SafetyOn Function

SafetyOn Function

Return the Safety Door open status.

Syntax

SafetyOn

Return Values

True if the Safety Door is Open, otherwise False.

Description

SafetyOn function is used only for NoPause task, NoEmgAbort task (special task using NoPause or

NoEmgAbort at Xqt), and background tasks.

See Also

ErrorOn, EstopOn, PauseOn, Wait, Xqt

SafetyOn Function Example

The following example shows a program that monitors the Safety Door open and switches the I/O On/Off when Safety Door open occurs.

Note

Forced Flag

This program example uses Forced flag for On/Off command.

Be sure that the I/O outputs change during error, or at Emergency Stop or Safety Door Open when designing the system.

Function main

Xqt SafetyOnOffMonitor, NoPause

:

:

Fend

Function SafetyOnOffMonitor

Do

Loop

Fend

Wait

SafetyOn

= On

Print "Saftey Open"

Off 10, Forced

On 12, Forced

Wait

SafetyOn

= Off

Print "Saftey Close"

On 10, Forced

Off 12, Forced

616 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SavePoints Statement

SavePoints Statement

Saves point data in main memory to a disk file for the current robot.

Syntax

SavePoints

filename

Parameters

fileName

String expression containing the file into which points will be stored. The extension must be “.pts”.

You cannot specify a file path and fileName doesn’t have any effect from ChDisk.

See ChDisk for the details.

Description

SavePoints saves points for the current robot to the specified file in the current project directory. A “.pts” extension must always be specified.

The SavePoints command will also add the point file to the project for the current robot if it did not already exist.

The point data is stored in the Compact Flash inside of the controller. Therefore, SavePoints starts writing into the Compact Flash. Frequent writing into the Compact Flash will shorten the Compact Flash lifetime.

We recommend using SavePoints only for saving the point data.

Potential Errors

Out of Disk Space

If there is no space remaining an error will occur.

Point file for another robot.

If

fileName

is a point file for another robot, an error will occur.

A Path Cannot be Specified

If

fileName

contains a path, an error will occur. Only a file name in the current project can be specified.

Bad File name

If a file name is entered which has spaces in the name, or other bad file name characteristics an error will occur.

See Also

ImportPoints, LoadPoints

SavePoints Statement Example

ClearPoints

For i = 1 To 10

P(i) = XY(i, 100, 0, 0)

Next i

SavePoints

"TEST.PTS"

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 617

Seek Statement

Seek Statement

Changes position of file pointer for a specified file.

Syntax

Seek

#

fileNumber

,

pointer

Parameters

fileNumber pointer

Integer expression from 30 to 63

Integer expression for the desired position to seek, starting from 0 to the length of the file.

See Also

BOpen, Read, ROpen, UOpen, Write, WOpen

Seek Statement Example

Integer fileNum

String data$ fileNumber = FreeFile

UOpen "TEST.DAT" As #fileNum

Seek

#fileNum, 20

Read #fileNum, data$, 2

Close #fileNum

618 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Select...Send Statement

Select...Send Statement

Executes one of several groups of statements, depending on the value of an expression.

Syntax

Select

selectExpr

Case

caseExpr

statements

[Case

caseExpr

statements

]

[Default

statements

]

Send

Parameters

selectExpr caseExpr statements

Any numeric or string expression.

Any numeric or string expression that evaluates to the same type as

selectExpr

.

One or more valid SPEL + statements or multi-statements.

Description

If any one

caseExpr

is equivalent to

selectExpr

, then the statements after the Case statement are executed.

After execution, program control transfers to the statement following the Send statement.

If no

caseExpr

is equivalent to

selectExpr

, the Default statements are executed and program control transfers to the statement following the Send statement.

If no

caseExpr

is equivalent to

selectExpr

and Default is omitted, nothing is executed and program control transfers to the statement immediately following the Send statement.

selectExpr

may include constants, variables, and logical operators that use And, Or and Xor.

caseExpr

also may include constants, variables, and logical operators that use And, Or and Xor. In this case, the calculation result of

caseExpr

is compared to that of

selectExpr

and do not specify the variable in

caseExpr

because the motion becomes complicated.

See Also

If...Then...Else

Select…Send Statement Example

Shown below is a simple example for Select...Send:

Function Main

Integer I

For i = 0 To 10

Select

I

Case 0

Off 1;On 2;Jump P1

Case 3

On 1;Off 2

Jump P2;Move P3;On 3

Case 7

On 4

Default

On 7

Send

Next

Fend

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 619

SelectDB Statement

SelectDB Statement

Searches the data in the table in an opened database.

Syntax

SelectDB (

#fileNumber

,

TableName

,

SelectCondition

,

SortMethod

)

Parameters

#fileNumber

Integer value from 501 to 508 representing the database number specified with the

OpenDB statement

TableName

Table name you want to search in

If the database type specified with

#fileNumber

is an Excel workbook, specify an

Excel worksheet or named table

When specifying an Excel sheet, add $ to end of the worksheet name and enclose the name with [ ].

When specifying an area with a name in an Excel worksheet, enclose the name with

[ ].

SelectCondition

Conditions of the search.

AND, OR are available to specify the multiple conditions.

If omitted, the all data in the table is searched.

SortMethod

Order to show searched data

Specify Sort key and Sort order (ascending order [ASC] / descending order [DESC]).

If the Sort order is omitted, the ascending Sort key order is specified.

If the

SortMethod

is omitted, the order is decided by the opened database.

Return Values

Returns total numbers of lines.

Description

Sorts the data which meets the

SelectCondition

in the specified table of the opened database based on the

Sort conditions.

You should execute SelectDB before reading / writing data with the Input# and Print# statements.

If the opened database is an Excel workbook, write a row name to use for the search in the first line of the worksheet and area defined with the name.

For Excel 2007 workbook, the worksheet name must be specified. You cannot access to area defined with the name.

Note

- Connection of PC with installing RC+ is required .

See Also

OpenDB,CloseDB, UpdateDB,DeleteDB, Input #, Print #

620 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SelectDB Statement

SelectDB Example

The following example uses the SQL server 2000 sample database, Northwind.

The Employees table is searched with the condition TitleOfCourtesy = Ms. with EmployeeID in descending order.

Integer count, i, eid

String Lastname$, Firstname$, Title$

OpenDB #501, SQL, "(LOCAL)", "Northwind"

count =

SelectDB

(#501, "Employees", "TitleOfCourtesy = 'Ms.'",

"EmployeeID DESC")

For i = 0 To count - 1

Input #501, eid, Lastname$, Firstname$, Title$

Print eid, ",", Lastname$, ",", Firstname$, ",", Title$

Next

CloseDB #501

Using Access database

The following example uses Microsoft Access 2007 sample database “Students” and loads the data whose

ID is more than 10 from the table “Students” in the ID descending order.

Integer count, i, eid

String Lastname$, Firstname$, dummy$

OpenDB #502, Access, "c:\MyDataBase\Students.accdb"

count = SelectDB(#502, "Students", "ID > 10'", "ID")

For i = 0 To count - 1

Input #502, eid, dummy$, Lastname$, Firstname$

Print eid, ",", Lastname$, ",", Firstname$

Next

CloseDB #502

Using Excel workbook

The following example uses Microsoft Excel workbook “Students“ and loads the data in worksheet

“Student” whose Age is under 25 with the ID in ascending order.

Integer count, i, eid

String Lastname$, Firstname$

OpenDB #503, Excel, "c:\MyDataBase\Students.xls"

count =

SelectDB

(#503, "[Students$]", "Age < 25", "ID ASC")

For i = 0 To count - 1

Input #503, eid, Lastname$, Firstname$

Print eid, ",", Lastname$, ",", Firstname$

Next

CloseDB #503

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 621

Sense Statement

Sense Statement

Specifies and displays input condition that, if satisfied, completes the Jump in progress by stopping the robot above the target position.

Syntax

Sense

[

condition

]

Parameters

condition

Input status specified as a trigger

[

Event

] comparative operator ( =, <>, >=, >, <, <=) [

Integer expression

]

The following functions and variables can be used in the

Event

:

Functions : Sw, In, InW, Oport, Out, OutW, MemSw, MemIn, MemInW, Ctr

GetRobotInsideBox, GetRobotInsidePlane, AIO_In, AIO_InW,

AIO_Out, AIO_OutW

Variables : Byte, Int32, Integer, Long, Short, UByte, UInt32, UShort global

preserve variable, Global variable, module variable

In addition, using the following operators you can specify multiple event conditions.

Operator :

Example :

And, Or, Xor

Sense Sw(5) = On

Sense Sw(5) = On And Sw(6) = Off

Description

Sense is used to stop approach motion during a Jump, Jump3, and Jump3CP instructions. The Sense condition must include at least one of the functions above.

When variables are included in the Sense condition, their values are computed when setting the Sense condition. No use of variable is recommended. Otherwise, the condition may be an unintended condition.

Multiple Sense statements are permitted. The most recent Sense condition remains current until superseded with another Sense statement.

Jump, Jump3, Jump3CP with Sense Modifier

Checks if the current Sense condition is satisfied. If satisfied, the Jump instruction completes with the robot stopped above the target position. (i.e. When the Sense Condition is True, the robot arm remains just above the target position without executing approach motion. When the Sense condition is False, the robot arm completes the full Jump instruction motion through to the target position.

When parameters are omitted, the current Sense definition is displayed.

622 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Sense Statement

Notes

Sense Setting at Main Power On

At power on, the initial Sense condition is:

Sense Sw(0) = On 'Robot does not execute downward motion when Input bit 0 is on.

Use of JS and Stat to Verify Sense

Use JS or Stat to verify if the Sense condition has been satisfied after executing a motion command using

Sense modifier.

To use a variables in the event condition expression

- Available variables are Integer type (Byte, Int32, Integer, Long, Short, UByte, UInt32, UShort)

- Array variables are not available

- Local variables are not available

- If a variable value cannot satisfy the event condition for more than 0.01 second, the system cannot retrieve the change in variables.

- Up to 64 can wait for variables in one system (including the ones used in the event condition expressions such as Wait). If it is over 64, an error occurs during the project build.

- If you try to transfer a variable waiting for variables as a reference with Byref, an error occurs.

- When a variable is included in the right side member of the event condition expression, the value is calculated when the motion command start. We recommend not using variables in an integer expression to avoid making unintended conditions.

See Also

In, JS, Jump, Jump3, Jump3CP, MemIn, MemSw, Stat, Sw

Sense Example

This is a simple example on the usage of the Sense instruction.

Function test

.

.

TrySense:

Sense

Sw(1) = Off '

Specifies the arm stops above the target when

' the input bit 1 is Off.

Jump P1 C2

Sense

If JS = True Then

GoSub ERRPRC ' If the arm remains stationary

GoTo TrySense ' above the point specified,

' then execute ERRPRC and go to TrySense.

EndIf

On 1; Wait 0.2; Off 1

.

.

Fend

<Other Syntax Examples>

>

Sense

Sw(1)=1 And MemSw(1)=1

>

Sense

Sw(0) Or (Sw(1) And MemSw(1))

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 623

SetCom Statement

SetCom Statement

Sets or displays parameters for RS-232C port.

Syntax

SetCom

#

portNumber

[

, baud

] [,

dataBits

] [,

stopBits

] [,

parity

] [

, terminator

] [

, HWFlow

]

[

, SWFlow

] [

, timeOut

]

Parameters

portNumber

Integer value representing a RS-232C port number

Real Part 1 to 8

Windows Part 1001 to 1008

baud

Optional. Specifies the baud rate. Valid values are:

110 2400 19200

300

600

4800 38400

9600 56000

1200 14400 115200

(Default: 9600)

When using the Windows Part port , some data may drop in the baud rate of 19200 or more.

dataBits stopBits parity terminator

Optional. Specifies the number of data bits per character. Valid values are 7 and 8.

Optional. Specifies the number of stop bits per character. Valid values are 1 and 2.

Optional. Specifies the parity. Valid values are O (Odd), E (Even), and N (None).

Optional. Specifies the line termination characters. Valid values are CR, LF, CRLF.

HWFlow

SWFlow timeOut

Optional. Specifies hardware control. Valid values are RTS and NONE.

Optional. Specifies software control. Valid values are XON and NONE.

Optional. Specifies the maximum time for transmit or receive in seconds. If this value is 0, then there is no time out.

Description

When all the parameter is omitted, displays a communication port setting.

If the several ports are used in the communication at one time with more than 19200 baud rate, error 2929 or 2922 may occur. In this case, select the lower baud rate or avoid using several ports at one time.

When using the Windows Part port, some data may drop in the baud rate of 19200 or more.

If any data drops, select the lower baud rate or use the Real Part port.

Parameters are stored to the Compact Flash inside the Controller. When you execute SetCom, the data is written to the Compact Flash. If a data is written to the Compact Flash frequently, it may shorten the

Compact Flash life. Using SetCom only when changing the parameter is recommended.

See Also

OpenCom, CloseCom, SetNet

SetCom Statement Example

SetCom

#1, 9600, 8, 1, N, CRLF, NONE, NONE, 0

SetCom

#2, 4800

624 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SetLatch Statement

SetLatch Statement

Sets the latch function of the robot position using the R-I/O input.

Syntax

SetLatch {

#portNumber

,

triggerMode

}

Parameters

#portNumber

Port number of the R-I/O input port to connect the trigger input signal.

The table below shows the port numbers you can specify.

Specify the port number of the unit that the object robot is connected.

Control Unit

Drive Unit 1

Drive Unit 2

INPUT

OUTPUT

INPUT

OUTPUT

INPUT

OUTPUT

Point

2 points

-

2 points

-

2 points

-

Port Number

24, 25

-

56, 57

-

280, 281

-

The following constants are defines as the port number.

Constant Port Number

SETLATCH_PORT_CU_0

SETLATCH_PORT_CU_1

24

25

SETLATCH_PORT_DU1_0

SETLATCH_PORT_DU1_1

SETLATCH_PORT_DU2_0

SETLATCH_PORT_DU2_1

56

57

280

281

triggerMode

The trigger input signal logic to connect with the R-I/O. The logic can be specified with the following constants.

Constant Value Explanation

SETLATCH_TRIGGERMODE_TRAILINGEDGE 0 Negative logic

SETLATCH_TRIGGERMODE_LEADINGEDGE 1 Positive logic

With the negative logic, it latches the robot position at the switch edge from the input signal High to Low.

With the positive logic, it latches the robot position at the switch edge from the input signal from Low to High.

Description

Sets the condition of the robot position latch using the R-I/O input signals. One robot cannot wait the trigger signals of several ports simultaneously.

Executing SetLatch needs approx. 40 msec for processing.

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 625

SetLatch Statement

Note

If you specify a port number of the unit unrelated to the selected robot, the error “I/O input/output bit number is out of available range” occurs.

See Also

LatchEnable, LatchState Function, LatchPos Function

SetLatch Statement Example

Function main

SetLatch

24, SETLATCH_TRIGGERMODE_LEADINGEDGE '

Positive logic

LatchEnable On ' Enable the latch function

Go P1

Wait LatchState = True

Print LatchPos

LatchEnable Off

Fend

' Wait a trigger

'

Display the latched position

' Disable the latch function

626 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SetIn Statement

For Virtual IO, sets specified input port (8 bits) to the specified value.

Syntax

SetIn

portNumber

,

value

Parameters

portNumber value

Integer expression representing the input port number.

Integer expression between 0 and 255 to set the specified port to.

Description

SetIn provides the ability to set up to 8 bits of virtual inputs at once.

See Also

SetSW, SetInW

SetIn Statement Example

>

setin

0, 1 ' Sets the first bit of port 0 to On.

SetIn Statement

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 627

SetInW Statement

SetInW Statement

For Virtual IO, sets specified input word (16 bits) to the specified value.

Syntax

SetInW

portNumber

,

value

Parameters

portNumber value

Integer expression representing the input port number.

Number between 0 and 65535 to set the specified word to.

Note

Rule of word port which contains the input bit of Real Time I/O

The input bit of the Real Time I/O cannot be reflected.

Specify the setting value of the word ports which contain the input bit of Real Time I/O =1, 3, 17, 19 by an integer from 0 to 255.

The value larger than 255 will result in an error.

Description

SetInW provides the ability to set up to 16 bits of virtual inputs at once.

See Also

SetSw, SetIn

SetInW Statement Example

>

setinw

0, 1 ' Sets the first bit of word 0 to On.

628 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SetNet Statement

SetNet Statement

Sets parameters for a TCP/IP port.

Syntax

SetNet

#portNumber, hostAddress, TCP_IP_PortNum, terminator, SWFlow, timeout, protocol

Parameters

portNumber

Specifies which TCP/IP port to set parameters for. Valid values are 201 to 216.

hostAddress

Specifies the host IP address.

TCP_IP_PortNum

Specifies the TCP/IP port number for this node.

terminator

Specifies the line termination characters. Valid values are CR, LF, CRLF.

SWFlow

Specifies software control. Valid value is NONE.

timeOut protocol

Specifies the maximum time for transmit or receive in seconds. If this value is “0”, then there is no time out.

Specifies the protocol (TCP/UDP) of communication.

Description

Parameters are stored to the Compact Flash inside the Controller. When you execute SetNet, the data is written to the Compact Flash. If a data is written to the Compact Flash frequently, it may shorten the

Compact Flash life. Using SetNet only when changing the parameter is recommended.

See Also

OpenNet, CloseNet, SetCom

SetNet Statement Example

SetNet

#201, "192.168.0.1", 2001, CRLF, NONE, 0

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 629

SetSw Statement

SetSw Statement

For Virtual IO, sets specified input bit to the specified value.

Syntax

SetSw

bitNumber

,

value

Parameters

bitNumber

Integer expression representing the input bit number.

value

Integer expression with a value of 0 (Off) or 1 (On).

Description

SetSw provides the ability to turn on or off one input bit.

See Also

SetIn, SetInW

SetSw Statement Example

>

setsw

2, on ' Sets the 2nd input bit to On.

630 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SFree Statement

SFree Statement

Removes servo power from the specified servo axis.

Syntax

SFree

jointNumber

[

, jointNumber,...

]

Parameters

jointNumber

An integer expression representing a servo joint number (1 to 9).

The additional S axis is 8 and T axis is 9.

Description

SFree removes servo power from the specified servo joints. This instruction is used for the direct teaching or the part installation by partially de-energizing a specific joint. To re-engage a joint execute the SLock instruction or Motor On.

SFree initializes the robot control parameter.

See Motor On for the details.

Note

SFree Sets Some System Items back to Their Initial State:

SFree, for safety purposes, initializes parameters concerning the robot arm speed (Speed and SpeedS ), acceleration (Accel and AccelS ) and the LimZ parameter.

Notes

SFree and its Use with the Z Joint and U Joint for SCARA robots (including RS series)

The Z joint has electromagnetic brakes so setting SFree for the Z joint does not immediately allow the Z joint to be moved. To move the Z joint by hand requires the brake to be released continuously by pressing the brake release switch on the top of the robot arm.

Some model has electronic brake on the U joint. When the robot has the U joint electronic brake, setting

SFree for the U joint does not immediately allow the U joint to be moved. To move the U joint by hand requires the brake to be released continuously by pressing the brake release switch on the top of the robot arm.

SFree is Not Valid with 6-Axis robots (including N series)

All joints of the 6-axis robots (including N series) have an electromagnetic brake. The brake can be released using the Brake command with the motor off. In the Motor off state, SFree is not valid. If you execute SFree with the Motor On, an electromagnetic brake will be ON. You cannot move any joint by hand using SFree.

Executing motion commands while joints are in SFree state

Attempting to execute a motion command while in the SFree condition will cause an error in the

Controller’s default state. However, to allow motion while 1 or more of the joints are in the SFree state, select the [Allow motion with one or more joints free] checkbox from [Setup]-[System Configuration]-

[Controller]-[Preferences].

Do not use SFree during Conveyor Tracking

Error 5057 or 5058 might occur if SFree is used during conveyor tracking. Use SFree after terminating conveyor tracking such as Cnv_AbortTrack.

See Also

Brake, LimZ, Motor, SFree Function, SLock

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 631

SFree Statement

SFree Statement Example

This is a simple example on the usage of the SFree command. To operate the robot in this exemple, the

[Allow motion with one or more joints free] checkbox must be selected from [Setup]-[System

Configuration]-[Controller]-[Preferences].

Function GoPick

Speed pickSpeed

SFree

1, 2 ' Release the excitation of J1 and J2,

' and control the Z and U joints for part installation.

Go pick

SLock

1, 2 '

Restore the excitation of J1 and J2.

Fend

632 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

SFree Function

Returns SFree status for a specified joint.

Syntax

SFree

(

jointNumber

)

Parameters

jointNumber

Integer expression representing the joint number to check.

The additional S axis is 8 and T axis is 9.

Return Values

True if the joint is free, False if not.

See Also

SFree Statement

SetFree Statement Example

If

SFree

(1) Then

Print "Joint 1 is free"

EndIf

SFree Function

EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8 633

Sgn Function

Sgn Function

Determines the sign of the operand.

Syntax

Sgn

(

Operand

)

Parameters

Operand

A numeric expression.

Return Values

1: If the operand is a positive value.

0: If the operand is a 0

-1: If the operand is a negative value.

Description

The Sgn function determines the sign of the numeric value of the operand.

See Also

Abs, And, Atan, Atan2, Cos, Int, Mod, Or, Not, Sin, Sqr, Str$, Tan, Val, Xor

Sgn Function Example

This is a simple command window example on the usage of the Sgn function.

>print

sgn

(123)

1

>print

sgn

(-123)

-1

>

634 EPSON RC+ 7.0 (Ver.7.4) SPEL+ Language Reference Rev.8

Short Statement

Short Statement

Declares variables of Short type. (2 byte integer variable).

Syntax

Short

varName

[

(

subscripts

)

] [,

varName

[

(

subscripts

)

]...]

Parameters

varName subscripts

Variable name which the user wants to declare.

Optional. Dimensions of an array variable; up to 3 dimensions may be declared.

The subscripts syntax is as follows

(ubound1, [ubound2], [ubound3]) ubound1, ubound2, ubound3 each specify the maximum upper bound for the associated dimension.

The elements in each dimension of an array are numbered from 0 and the available number of array elements is the upper bound value + 1.

When specifying the upper bound value, make sure the number of total elements is within the range shown below:

Local variable

Global Preserve variable

2,000

4,000

Global variable and module variable 100,000

Description

Short is used to declare variables as type integer. Integer variables can contain values from -32768 to

32767. Local variables should be declared at the top of a function. Global and module variables must be declared outside of functions.

See Also

Boolean, Byte, Double, Global, Int32, Int64, Integer, Long, Real, String, UByte, UInt32, UInt64,

UShort

Short Statement Example

The following example shows a simple program that declares some variables using Short.

Function shorttest

Short

A(10) ' Single dimension array of Short

Short

B(10, 10) ' Two dimension array of Short

Short

C(5, 5, 5) '

Three dimension array of Short

Sh