You are on page 1of 288

ActiveRobot User Guide

UMI-R3-220

Rev. 001 001a

Revision History Original Issue

Date 00-05

CROS v2.8, v3.0 properties added; very minor changes to ARConfig description 02-03

Copyright 2002 CRS Robotics Corporation ActiveRobot, RAPL-3, RAPL-II, and RAPL are trademarks of CRS Robotics Corporation and may be used to describe only CRS Robotics products. All brand names and product names used in this guide are trademarks, registered trademarks, or trade names of their respective holders. The information in this document is subject to change without notice. CRS Robotics Corporation makes no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. CRS Robotics Corporation assumes no responsibility for any errors that may appear in this document. CRS Robotics Corporation makes no commitment to update nor to keep current the information contained in this document. CRS Robotics Corporation software products shall remain the property of CRS Robotics Corporation. Additional copies of this guide, or other CRS Robotics literature, may be obtained from the Sales Department or from your distributor.

ii

About This Guide

This user guide describes the ActiveRobot robot application development software from CRS Robotics Corporation. This preface contains the following topics: Who Uses This Guide on page iv, which describes the type of user who benefits from ActiveRobot and what that the user needs to know to use ActiveRobot How to Use This Guide on page iv, which provides an overview of the contents of this user guide For More Information on page v, which provides a brief description of other information resources on CRS products and services

ActiveRobot User Guide: Preface

iii

Preface:

Who Uses This Guide


This guide is intended primarily for developers of applications for CRS Robotics A255, T265, A465, T475, F3, F3t, CataLyst-3, CataLyst-5, and CataLyst-T robot systems. This guide assumes you are familiar with the following subjects: Robot application development (though not necessarily with CRS Robotics systems) Microsoft Windows NT/2000 ActiveX application development, using such tools as Microsoft Visual Basic, Microsoft Visual C++, or Microsoft Access 97/2000 Microsoft Windows NT/2000

How to Use This Guide


Throughout this manual warnings are marked by a "!" symbol in the left margin. Failure to comply with these warnings can result in system errors, memory loss, or damage to the robot and its surroundings. This manual is task-based and uses navigational aids to help you quickly find the topics and information you need. It is not intended as a self-teaching guide. For training, see Training on page v. Before attempting to follow instructions or examples in a section, read the entire section first. This guide consists of the following chapters: Introducing ActiveRobot, which provides an overview of ActiveRobots features and benefits, its components, and how it works. Using ActiveRobot, which describes how to use the ActiveRobot components to create robot applications. It also describes how to get more information about ActiveRobot object classes and ActiveRobot applications, from both this guide and other sources. CRSRobot, which provides detailed reference information about the methods and properties of the CRSRobot object class. CRSV3File, which provides detailed reference information about the methods and properties of the CRSV3File object class. CRSLocation, which provides detailed reference information about the methods and properties of the CRSLocation object class. CRSPath, which provides detailed reference information about the methods and properties of the CRSPath object class. CRSRemote, which provides detailed reference information about the methods and properties of the CRSRemote object class.

iv

ActiveRobot User Guide: Preface

Preface:

For More Information


For information about the robot system hardware, refer to the user guides provided with your system. You can obtain copies of these user guides or other CRS Robotics literature from the CRS Technical Services Group.

Training
We offer training courses in ActiveRobot and other CRS Robotics products at our facility in Burlington, Ontario Canada, or on-site at your facility. For additional information, contact the Technical Services Group.

Contacts
Surface Mail/Shipping CRS Robotics Corporation 5344 John Lucas Drive Burlington, Ontario L7L 6A6 Canada Telephone 1-905-332-2000 (voice) 1-800-365-7587 (voice: toll free in Canada and United States) 1-905-332-1114 (facsimile) E-Mail Sales: sales@crsrobotics.com Customer Support: support@crsrobotics.com Training: training@crsrobotics.com General: info@crsrobotics.com World Wide Web www.crsrobotics.com

ActiveRobot User Guide: Preface

Preface:

vi

ActiveRobot User Guide: Preface

Preface: Contents

Contents
Chapter 1 Introducing ActiveRobot . . . . . . . . . . . . . . . . . . . . . . . 1-1 What ActiveRobot Does . . . . . . ActiveRobot Features . . . . . ActiveRobot Benefits . . . . . . How ActiveRobot Works . . . . . Accessing ActiveRobot DLLs System Communications in ActiveRobot Applications ActiveRobot Components . . . . Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 . 1-2 . 1-3 . 1-3 . 1-3

. . . . . . . . . . . . . . . . . 1-4 . . . . . . . . . . . . . . . . . . 1-5

Installing ActiveRobot . . . . . . . . . . . . . . . . . . . . . . . . 2-1 System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 Connecting the PC to the C500C . . . . . . . . . . . . . . . . . 2-2 Installing CROS 2.8 or 3.1 . . . . . . . . . . . . . . . . . . . . . 2-3 Updating Previous Versions of CROS . . . . . . . . . . . 2-3 Backing up Controller Files . . . . . . . . . . . . . . . . . . 2-3 Installing the New Version of CROS on the PC . . . . 2-3 Downloading the New Version of CROS . . . . . . . . . . 2-4 Rebuilding the File System on the Controller . . . . . 2-6 Making the PC the Default Controller User Interface 2-6 Restoring Controller Files . . . . . . . . . . . . . . . . . . . . 2-6 Installing the ActiveRobot Software . . . . . . . . . . . . . . . 2-7 Configuring and Testing ActiveRobot . . . . . . . . . . . . . . 2-8

Chapter 3

Using ActiveRobot . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 Safety Considerations . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 Creating a New ActiveRobot Application . . . . . . . . . . . 3-2 Creating ActiveRobot Applications In Visual Basic 6.0 . . . . . . . . . . . . . . . . . . . . . . . . 3-2 Creating ActiveRobot Applications In Visual C++ 6.0 . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Creating ActiveRobot Applications In Access 2000 . 3-4 Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-4 Reference Documentation Conventions . . . . . . . . . . . . 3-5 How Visual C++ Users Can Use the Reference Documentation . . . . . . . . . . . . . . . . . 3-5 Developing ActiveRobot Applications . . . . . . . . . . . . . . 3-6 The Development Process . . . . . . . . . . . . . . . . . . . . 3-6 Using V3 Files in ActiveRobot Applications . . . . . . . 3-6 Creating and Using ActiveRobot Objects . . . . . . . . . 3-7 Using ActiveRobot Objects In Visual Basic . . . . 3-7 Using ActiveRobot Objects In Visual C++ . . . . . 3-8 Using CRSRobot . . . . . . . . . . . . . . . . . . . . . . . 3-8 Using CRSV3File . . . . . . . . . . . . . . . . . . . . . . . 3-9 Using CRSLocation . . . . . . . . . . . . . . . . . . . . 3-10 Using CRSPath . . . . . . . . . . . . . . . . . . . . . . . 3-11 Using CRSRemote . . . . . . . . . . . . . . . . . . . . . 3-11

ActiveRobot User Guide: Preface

vii

Preface: Contents

Co-ordinating ActiveRobot Event Handlers . . . . . . 3-13 Monitoring the Robot System . . . . . . . . . . . . . . . . 3-13 Managing Point of Control . . . . . . . . . . . . . . . . . . 3-14 Processing Abort Commands . . . . . . . . . . . . . . . . 3-14 Example Applications . . . . . . . . . . . . . . . . . . . . . . . . 3-14 V3Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 PendantVB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 SimplePNP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 StatusQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 PathControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-15 TeachPendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 AbortMove . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-16 Using ActiveRobot Configuration . . . . . . . . . . . . . . . . 3-17 Starting ActiveRobot Configuration . . . . . . . . . . . . 3-17 Configuring a Robot System . . . . . . . . . . . . . . . . . 3-18 Testing a Robot System . . . . . . . . . . . . . . . . . . . . 3-19 Performing Utility Robot Motion Operations . . . . . 3-20 Performing Utility Controller Operations . . . . . . . . 3-21 Exiting from ActiveRobot Configuration . . . . . . . . 3-22 Using ActiveRobot Terminal . . . . . . . . . . . . . . . . . . . 3-22 Starting ActiveRobot Terminal . . . . . . . . . . . . . . . 3-22 Selecting the Robot System to Communicate With 3-23 Using the ActiveRobot Terminal Scroll Buffer . . . . 3-23 Viewing the Scroll Buffer . . . . . . . . . . . . . . . . 3-23 Copying the Scroll Buffer . . . . . . . . . . . . . . . . 3-23 Clearing the Scroll Buffer . . . . . . . . . . . . . . . . 3-24 Exiting from ActiveRobot Terminal . . . . . . . . . . . . 3-24 Using ActiveRobot Explorer . . . . . . . . . . . . . . . . . . . . 3-24 Starting ActiveRobot Explorer . . . . . . . . . . . . . . . . 3-24 Selecting the Robot System to Communicate With 3-25 Copying Files With ActiveRobot Explorer . . . . . . . . 3-25 Exiting from ActiveRobot Explorer . . . . . . . . . . . . 3-26 Chapter 4 CRSRobot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 CRSRobot Methods . . . . . . Diagnostics . . . . . . . . . FServoStatus . . . . . Force Control . . . . . . . . ForceCalibrate . . . . ForceDataGet . . . . ForceSensorOffset . Gripper . . . . . . . . . . . . . GripperCalibrate . . GripperClose . . . . . GripperFinish . . . . GripperOpen . . . . . GripperStop . . . . . . Homing and Calibration Calibrate . . . . . . . . CalibrateZeroCross Home . . . . . . . . . . . HomeInPlace . . . . . HomeZeroCross . . . . . . . . . . . . . . . . . . . . . . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . . 4-2 . . . . 4-3 . . . . 4-4 . . . . 4-5 . . . . 4-6 . . . . 4-7 . . . . 4-8 . . . . 4-9 . . . 4-10 . . . 4-11 . . . 4-12 . . . 4-13 . . . 4-14 . . . 4-15 . . . 4-16 . . . 4-17 . . . 4-18 . . . 4-19 . . . 4-20

viii

ActiveRobot User Guide: Preface

Preface: Contents

Zero . . . . . . . . . . . . . . . . . . . Operator Input . . . . . . . . . . . . . . WaitForButton . . . . . . . . . . . Motion . . . . . . . . . . . . . . . . . . . . Align . . . . . . . . . . . . . . . . . . Approach . . . . . . . . . . . . . . . ApproachStraight . . . . . . . . . CalReady . . . . . . . . . . . . . . . ClearAbort . . . . . . . . . . . . . . CTPath . . . . . . . . . . . . . . . . CTPathGo . . . . . . . . . . . . . . Depart . . . . . . . . . . . . . . . . . DepartStraight . . . . . . . . . . . Finish . . . . . . . . . . . . . . . . . JogTool . . . . . . . . . . . . . . . . JogToolStraight . . . . . . . . . . JogWorld . . . . . . . . . . . . . . . JogWorldStraight . . . . . . . . . Joint . . . . . . . . . . . . . . . . . . Limp . . . . . . . . . . . . . . . . . . LockAxes . . . . . . . . . . . . . . . Motor . . . . . . . . . . . . . . . . . . Move . . . . . . . . . . . . . . . . . . MoveStraight . . . . . . . . . . . . NoLimp . . . . . . . . . . . . . . . . Ready . . . . . . . . . . . . . . . . . Abort . . . . . . . . . . . . . . . . . . Stop . . . . . . . . . . . . . . . . . . . UnlockAxes . . . . . . . . . . . . . Point of Control . . . . . . . . . . . . . ControlGet . . . . . . . . . . . . . . ControlGive . . . . . . . . . . . . . ControlRelease . . . . . . . . . . . Robot Configuration . . . . . . . . . . ConfigSave . . . . . . . . . . . . . . Robot Status . . . . . . . . . . . . . . . AxisStatus . . . . . . . . . . . . . . CommunicationCheck . . . . . ClearError . . . . . . . . . . . . . . Utility . . . . . . . . . . . . . . . . . . . . . MotorToJoint . . . . . . . . . . . . ShiftTool . . . . . . . . . . . . . . . ShiftWorld . . . . . . . . . . . . . . WorldToJoint . . . . . . . . . . . . CRSRobot Properties . . . . . . . . . . . . Axis Configuration . . . . . . . . . . . AxisAcceleration . . . . . . . . . AxisDGain . . . . . . . . . . . . . . AxisIGain . . . . . . . . . . . . . . . AxisLinkLength . . . . . . . . . . AxisMaximumJerk . . . . . . . . AxisMaximumJointVelocity . AxisNegativeLimit . . . . . . . . AxisPGain . . . . . . . . . . . . . .

.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

. . . 4-21 . . . 4-22 . . . 4-23 . . . 4-24 . . . 4-26 . . . 4-27 . . . 4-28 . . . 4-29 . . . 4-30 . . . 4-31 . . . 4-32 . . . 4-33 . . . 4-34 . . . 4-35 . . . 4-36 . . . 4-37 . . . 4-38 . . . 4-39 . . . 4-40 . . . 4-41 . . . 4-42 . . . 4-43 . . . 4-44 . . . 4-45 . . . 4-46 . . . 4-47 . . . 4-48 . . . 4-49 . . . 4-50 . . . 4-51 . . . 4-52 . . . 4-53 . . . 4-54 . . . 4-55 . . . 4-56 . . . 4-57 . . . 4-58 . . . 4-59 . . . 4-60 . . . 4-61 . . . 4-62 . . . 4-63 . . . 4-64 . . . 4-65 . . . 4-66 . . . 4-67 . . . 4-68 . . . 4-69 . . . 4-70 . . . 4-71 . . . 4-72 . . . 4-73 . . . 4-74 . . . 4-75

ActiveRobot User Guide: Preface

ix

Preface: Contents

AxisPosition . . . . . . . . . . AxisPositiveLimit . . . . . . AxisPulsesPerMotorTurn AxisTurnsPerUnit . . . . . Diagnostics . . . . . . . . . . . . . ServoErrorParam . . . . . . Force Control . . . . . . . . . . . . ForceEnable . . . . . . . . . ForceFrame . . . . . . . . . . ForceParam . . . . . . . . . . ForcePassword . . . . . . . . ForceTrackingEnable . . . Gripper . . . . . . . . . . . . . . . . . GripperDistance . . . . . . GripperFinished . . . . . . . GripperType . . . . . . . . . . Input/Output . . . . . . . . . . . . AnalogInput . . . . . . . . . . FNetworkInputs . . . . . . . FNetworkInput . . . . . . . FNetworkOutput . . . . . . FNetworkOutputs . . . . . Input . . . . . . . . . . . . . . . Inputs . . . . . . . . . . . . . . Output . . . . . . . . . . . . . Outputs . . . . . . . . . . . . . PanelButton . . . . . . . . . PanelButtons . . . . . . . . . PanelLight . . . . . . . . . . . Robot Configuration . . . . . . . BaseOffset . . . . . . . . . . . LinearAcceleration . . . . . LinearJerk . . . . . . . . . . . LinearSpeed . . . . . . . . . . RotationalAcceleration . . RotationalSpeed . . . . . . . Speed . . . . . . . . . . . . . . Stance . . . . . . . . . . . . . . ToolTransform . . . . . . . . TotalAxes . . . . . . . . . . . . TrackEnable . . . . . . . . . Units . . . . . . . . . . . . . . . Robot Information . . . . . . . . HomingSwitchOffset . . . MachineAxes . . . . . . . . . ProductType . . . . . . . . . RobotType . . . . . . . . . . . ServerProtocol . . . . . . . . ServerVersion . . . . . . . . TransformAxes . . . . . . . VersionString . . . . . . . . . Robot Mode Control . . . . . . . AllowArmPower . . . . . . . BlendMotion . . . . . . . . .

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ....

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

. . . 4-76 . . . 4-77 . . . 4-78 . . . 4-79 . . . 4-80 . . . 4-81 . . . 4-82 . . . 4-83 . . . 4-84 . . . 4-85 . . . 4-88 . . . 4-89 . . . 4-90 . . . 4-91 . . . 4-92 . . . 4-93 . . . 4-94 . . . 4-95 . . . 4-96 . . . 4-97 . . . 4-98 . . . 4-99 . . 4-100 . . 4-101 . . 4-102 . . 4-103 . . 4-104 . . 4-105 . . 4-106 . . 4-107 . . 4-108 . . 4-109 . . 4-110 . . 4-111 . . 4-112 . . 4-113 . . 4-114 . . 4-115 . . 4-116 . . 4-117 . . 4-118 . . 4-119 . . 4-120 . . 4-121 . . 4-122 . . 4-123 . . 4-124 . . 4-125 . . 4-126 . . 4-127 . . 4-128 . . 4-129 . . 4-130 . . 4-131

ActiveRobot User Guide: Preface

Preface: Contents

TrapezoidalProfileEnable TriggerEnable . . . . . . . . Blended Motion Control . . . . LinearBlendRadius . . . . MaxAgeInQueue . . . . . . PointDeletion . . . . . . . . . RotationalBlendRadius . Robot Selection . . . . . . . . . . . RobotInUse . . . . . . . . . . Robot Status . . . . . . . . . . . . AsynchError . . . . . . . . . BoardTemperature . . . . . Finished . . . . . . . . . . . . Homed . . . . . . . . . . . . . . IsAborted . . . . . . . . . . . . IsPowered . . . . . . . . . . . MotorLocation . . . . . . . . Odometer . . . . . . . . . . . . ProcessID . . . . . . . . . . . WorldLocation . . . . . . . . Utility . . . . . . . . . . . . . . . . . . JointToMotor . . . . . . . . . JointToWorld . . . . . . . . . MotorToWorld . . . . . . . . WorldToMotor . . . . . . . . Chapter 5 CRSV3File

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . .

. 4-132 . 4-133 . 4-134 . 4-135 . 4-136 . 4-137 . 4-138 . 4-139 . 4-140 . 4-141 . 4-142 . 4-144 . 4-145 . 4-146 . 4-147 . 4-148 . 4-149 . 4-150 . 4-151 . 4-152 . 4-153 . 4-154 . 4-155 . 4-156 . 4-157

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 .... .... .... .... .... .... .... .... .... .... .... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... .... .... .... .... .... .... .... .... .... .... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . . . . 5-2 . . . . 5-3 . . . . 5-4 . . . . 5-5 . . . . 5-6 . . . . 5-7 . . . . 5-8 . . . . 5-9 . . . 5-10 . . . 5-11 . . . 5-12

CRSV3File Methods . . Open . . . . . . . . . . . Close . . . . . . . . . . . VariableInfo . . . . . . Create . . . . . . . . . . Delete . . . . . . . . . . . Rewind . . . . . . . . . . GetNextName . . . . . CRSV3File Properties . Location . . . . . . . . . Value . . . . . . . . . . . Chapter 6

CRSLocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 CRSLocation Properties IsMotor . . . . . . . . . . IsWorld . . . . . . . . . . x .............. y............... z............... zrot . . . . . . . . . . . . yrot . . . . . . . . . . . . xrot . . . . . . . . . . . . world . . . . . . . . . . . motor . . . . . . . . . . . Value . . . . . . . . . . . .... .... .... .... .... .... .... .... .... .... .... .... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... .... .... .... .... .... .... .... .... .... .... .... . . . . . . . . . . 6-2 . . . . . . . . . . 6-3 . . . . . . . . . . 6-4 . . . . . . . . . . 6-5 . . . . . . . . . . 6-6 . . . . . . . . . . 6-7 . . . . . . . . . . 6-8 . . . . . . . . . . 6-9 . . . . . . . . . 6-10 . . . . . . . . . 6-11 . . . . . . . . . 6-12 . . . . . . . . . 6-13

ActiveRobot User Guide: Preface

xi

Preface: Contents

IsValid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-14 IsMetric . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-15 Chapter 7 CRSPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-1 CRSPath Methods . Add . . . . . . . . . Remove . . . . . . CRSPath Properties Count . . . . . . . . Item . . . . . . . . . Trigger . . . . . . . Chapter 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ... ... ... ... ... ... . 7-2 . 7-3 . 7-4 . 7-5 . 7-6 . 7-7 . 7-8

CRSRemote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 CRSRemote Methods . . . . . . . . . . . . AbortFileTransfer . . . . . . . . . . . . CROSVersion . . . . . . . . . . . . . . . Delete . . . . . . . . . . . . . . . . . . . . . DirNext . . . . . . . . . . . . . . . . . . . . DirRead . . . . . . . . . . . . . . . . . . . DirRewind . . . . . . . . . . . . . . . . . FileSpace . . . . . . . . . . . . . . . . . . GetFile . . . . . . . . . . . . . . . . . . . . MkDir . . . . . . . . . . . . . . . . . . . . . Ping . . . . . . . . . . . . . . . . . . . . . . PutFile . . . . . . . . . . . . . . . . . . . . RmDir . . . . . . . . . . . . . . . . . . . . Run . . . . . . . . . . . . . . . . . . . . . . SendSignal . . . . . . . . . . . . . . . . . Shutdown . . . . . . . . . . . . . . . . . . WaitForExitCode . . . . . . . . . . . . CRSRemote Properties . . . . . . . . . . ControllerDate . . . . . . . . . . . . . . DirFileAttributes . . . . . . . . . . . . . DirFileDate . . . . . . . . . . . . . . . . . DirFileIdent . . . . . . . . . . . . . . . . DirFileLinks . . . . . . . . . . . . . . . . DirFileMajor . . . . . . . . . . . . . . . . DirFileMinor . . . . . . . . . . . . . . . . DirFileName . . . . . . . . . . . . . . . . DirFileSize . . . . . . . . . . . . . . . . . DirFileType . . . . . . . . . . . . . . . . . PercentComplete . . . . . . . . . . . . ProcessExists . . . . . . . . . . . . . . . RobotInUse . . . . . . . . . . . . . . . . . .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... . . . . . . . . . . 8-2 . . . . . . . . . . 8-3 . . . . . . . . . . 8-4 . . . . . . . . . . 8-5 . . . . . . . . . . 8-6 . . . . . . . . . . 8-7 . . . . . . . . . . 8-8 . . . . . . . . . . 8-9 . . . . . . . . . 8-10 . . . . . . . . . 8-11 . . . . . . . . . 8-12 . . . . . . . . . 8-13 . . . . . . . . . 8-14 . . . . . . . . . 8-15 . . . . . . . . . 8-17 . . . . . . . . . 8-18 . . . . . . . . . 8-19 . . . . . . . . . 8-20 . . . . . . . . . 8-21 . . . . . . . . . 8-22 . . . . . . . . . 8-23 . . . . . . . . . 8-24 . . . . . . . . . 8-25 . . . . . . . . . 8-26 . . . . . . . . . 8-27 . . . . . . . . . 8-28 . . . . . . . . . 8-29 . . . . . . . . . 8-30 . . . . . . . . . 8-31 . . . . . . . . . 8-32 . . . . . . . . . 8-33

xii

ActiveRobot User Guide: Preface

CHAPTER 1

Introducing ActiveRobot

This chapter provides an overview of ActiveRobot: its role in robot application development, its features and benefits, how it works, and its components. It includes information on the following topics: What ActiveRobot Does on page 1-2, which provides an overview of what ActiveRobot does, and its features and benefits How ActiveRobot Works on page 1-3, which describes how ActiveRobot functions ActiveRobot Components on page 1-5, which provides an overview of the application development objects that comprise ActiveRobot

ActiveRobot User Guide: Introducing ActiveRobot

1-1

Introducing ActiveRobot: What ActiveRobot Does

What ActiveRobot Does


ActiveRobot enables Microsoft Windows NT4/2000 ActiveX applications to fully access and control up to eight CRS Robotics robot systems from one host computer. (Each robot system consists of one A255, A465 or F3 articulated arm, one C500C controller, and up to two additional axes, one of which could be a track.)

CRS

F3

F3only.cdr

RS232 Serial

RS232 Serial

CRS

A255

A255only.cd

RS232 Serial

CRS

A465

Figure 1-1:

Multiple ActiveRobot applications can access multiple robot systems from a single host computer.

ActiveRobot Features
ActiveRobot has the following features: Programming interfaces compliant with the Microsoft Component Object Model (COM) Compatibility with a wide range of ActiveX development tools, such as Microsoft Visual Basic 6 and Visual C++ 6, and ActiveX-compatible applications such as Microsoft Access 97/2000 and National Instruments LabVIEW. Access to and control of all C500C operating system features, motion control capabilities, and input/output capabilities Context-sensitive online help

1-2

ActiveRobot User Guide: Introducing ActiveRobot

Introducing ActiveRobot: How ActiveRobot Works

Detailed example applications in both Visual C++ and Visual Basic

ActiveRobot Benefits
ActiveRobots features provide the following benefits: Faster, easier, less expensive development and debugging of robot applications Friendlier, more consistent operator interfaces More familiar development environment Integration with other Windows tools, including process monitoring and development tools

How ActiveRobot Works


When you set up ActiveRobot on your development, or host, computer, the installation program adds the following shared Windows dynamic link libraries (DLL): ActiveRobot.dll, which provides an interface to the features of the robot system HCLInterface.dll, which ActiveRobot.dll uses to get reliable communication with the controller

Accessing ActiveRobot DLLs


To access the ActiveRobot DLLs, you simply make a reference to them within your preferred Windows development tool. For example, in Visual Basic, you would take the following steps:
1

Create a new project (standard.exe).

ActiveRobot User Guide: Introducing ActiveRobot

1-3

Introducing ActiveRobot: How ActiveRobot Works

Select the References menu item in the Project menu. Visual Basic opens the References dialog box.

3.

Select the CRS ActiveRobot 1.1 Type Library and click OK.

System Communications in ActiveRobot Applications


Figure 1-2 shows how an ActiveRobot application interacts with the robot systems C500C controller.
Windows NT/2000
V3 File

C500C Controller
V3 File

CRSV3File Object CRSRemote Object User Object

File Transfer Daemon

Interface to CROS

GPIO
CRSRobot Object

User Object

HCLServer

HCL

Robot Server

Motion Control Engine

To arm To arm

ActiveRobot Application
Figure 1-2: This somewhat simplified illustration shows how ActiveRobot components on the host computer communicate with processes on the C500C controller.

1-4

ActiveRobot User Guide: Introducing ActiveRobot

Introducing ActiveRobot: ActiveRobot Components

ActiveRobot client applications create instances of ActiveRobot components, and use their methods and properties to send commands to the C500C controller and to obtain information from the controller. These components are, in turn, clients of the HCLServer communications server process on the host computer, which routes commands received from the ActiveRobot components to the controller and routes information received from the controller to the destination ActiveRobot component. There is one HCLServer process for each ActiveRobot-configured serial port on the host computer. On the C500C controller, a server process called HCL routes commands received from host computer to one of the following destinations: The controllers robot server process, which handles motion control and motion-linked I/O commands A controller console process, which provides access to operating system functions A file transfer daemon process, which sends or receives requested files

HCLServer and HCL together guarantee the independence and integrity of all communications between individual instances of ActiveRobot components and the controller. This enables one host computer to run multiple ActiveRobot applications, permitting, for example, a Visual Basic application to control the motion of one or more robot systems, while a Microsoft Access application gathers statistics about those robot systems operations.

ActiveRobot Components
ActiveRobot consists of the following components: Interfaces to the following object classes: CRSRobot, which enables you to create objects that can access the robot systems configuration, motion and I/O. CRSV3File, which enables you to create objects that contain robot system locations and variables. CRSLocation, which enables you to create objects that provide access to robot system locations. CRSPath, which are collection objects that encapsulate a sequence of CRSLocation objects. CRSRemote, which enables you to create objects that provide access to the C500Cs operating system and file transfer capabilities.

Development utilities: ActiveRobot Terminal, or ARTerminal, a Windows terminal emulator that enables you to access the C500C operating system directly from your keyboard ActiveRobot Explorer, or ARExplorer, a Windows file transfer utility that enables you to copy files from the host computer to the C500C, and vice versa, using a Windows Explorer-like user interface

ActiveRobot User Guide: Introducing ActiveRobot

1-5

Introducing ActiveRobot: ActiveRobot Components

ActiveRobot Configuration, a Windows application that enables you to configure and test various aspects of the system, including communications between the host computer and each robot system, and the performance of each robot system.

ActiveRobot also includes online help and several example applications created in Visual C++ and Visual Basic. For details on these components, refer to Chapter 3, Using ActiveRobot.

1-6

ActiveRobot User Guide: Introducing ActiveRobot

Installing ActiveRobot

This chapter describes how to install ActiveRobot. It covers the following topics: System Requirements on page 2-2 Connecting the PC to the C500C on page 2-2 Installing CROS 2.8 or 3.1 on page 2-3 Installing the ActiveRobot Software on page 2-7 Configuring and Testing ActiveRobot on page 2-8

ActiveRobot User Guide: Installing ActiveRobot

21

Installing ActiveRobot: System Requirements

System Requirements
ActiveRobot requires the following hardware and software: A personal computer (PC) configured with the following hardware and software: Microsoft Windows NT 4 or Windows 2000 Intel Pentium microprocessor, running at 100 MHz or higher 64 MB RAM or higher 10 MB hard disk storage for ActiveRobot software, plus storage space for applications CD-ROM drive 800 x 600 pixel or higher resolution video display A Microsoft Common Object Model-compliant application development tool, such as Visual Basic or Visual C++

A CRS A255, T265, A465, T475, F3, F3t, CataLyst-3, CataLyst-5, or CataLyst-T robot A CRS C500C controller configured with CROS 2.8 or 3.1
Note:

CROS 2.8 does not support the blended motion control properties provided by ActiveRobot v1.4 The installation program for ActiveRobot v1.4 detects whether the required version of CROS is installed. For more information about upgrading CROS, see Installing CROS 2.8 or 3.1 on page 2-3.

Note:

A serial cable with which to connect the PC and the C500C controller

Connecting the PC to the C500C


To enable the PC to communicate with the C500C, you must connect the two devices with a serial cable between a serial port on the PC and the Console port on the C500C.
Note:

The computer must be connected via a straight-through RS-232 serial cable with a female DB-9 connector at the controller end.

To connect the PC to the C500C controller


1

With the PC powered off, connect your serial cable to a serial port on the PC. With the controller shut down and powered off, connect the other end of the serial cable to the Console port on the front of the controller. Power up the controller and the PC.

22

ActiveRobot User Guide: Installing ActiveRobot

Installing ActiveRobot: Installing CROS 2.8 or 3.1

Installing CROS 2.8 or 3.1


ActiveRobot v1.4 requires either CROS 2.8 or 3.1 installed on the controller. C500C controllers for the CataLyst-5 with serial numbers of RC50138061 or higher, and for the F3 with serial numbers of RCF0139150 or higher, have CROS 3.1 installed at the factory. Updating Previous Versions of CROS Backing up Controller Files Installing the New Version of CROS on the PC Downloading the New Version of CROS Rebuilding the File System on the Controller Making the PC the Default Controller User Interface Restoring Controller Files

Updating Previous Versions of CROS


If you have a CRS A255/T265 or A465/T475 robot and a C500C controller, you can update it to CROS 2.8.
Note:

CROS 2.8 does not support the following ActiveRobot motion control properties: AxisMaximumJerk, LinearJerk, LinearBlendRadius, MaxAgeInQueue, PointDeletion, and RotationalBlendRadius.

If you have an F3/F3t, CataLyst-3, CataLyst-5, or CataLyst-T controller, you can update it to CROS 3.1. To determine what version of CROS you have installed on your controller, enter the command crosver at the CROS system shell prompt. To order the updates, contact CRS Customer Support, as described in the section For More Information in the Preface.

Backing up Controller Files


When you download a new version of CROS, all files on the controller are erased. Before upgrading from a previous version of CROS, make sure all files in the /app and /conf directories on the controller are backed up to a safe location. Attach a PC to the controller and use Robcomm3 or ActiveRobot Explorer to copy these files to the PC.

Installing the New Version of CROS on the PC


Before you can download a new version of CROS, you must install it on the PC.

To install CROS 2.8 or 3.2 on the PC 1 If you have a previous version of CROS installed on the PC, use the Add/Remove Programs applet in the Windows Control Panel to uninstall it.

ActiveRobot User Guide: Installing ActiveRobot

23

Installing ActiveRobot: Installing CROS 2.8 or 3.1

Insert the CROS CD in the CD/DVD drive in the PC. If the install program does not autorun, run the autorun.exe program in the CDs root directory. Windows opens the installation utility:

Click Read Release Notes to review in your browser the most recent information about this release of CROS. Click the desired version of CROS from the menu on the right. The CROS installation program will run and prompt you for the following choices: To accept or refuse the end-user licence To accept or change the installation directory To select a typical, compact, or custom installation

Once you have accepted the end-user licence and responded to the other prompts, the installation completes.

Downloading the New Version of CROS


You download the new version of CROS from the PC using the Firmware Download Utility.

24

ActiveRobot User Guide: Installing ActiveRobot

Installing ActiveRobot: Installing CROS 2.8 or 3.1

To download CROS 2.8 or 3.1 onto the controller


1

On the PC, start the CROS-500C Firmware Download Utility. The download utility is located in the CRS Robotics folder under Program Files on your Windows Start Menu. The download utility opens the following dialog box:

Note:

If you dont see the download utility on your Start Menu, you can click Find and select Files or Folders to search for download.exe. Double-click the file to start the download utility.

Verify that the settings are correct for your robot system. Setting
CommPort Baud Rate Path of Flash File Path of MCE File Path of Remote

Required Value
The number of the PC COM port that is connected to the robot system. The baud rate of the controller Console port. The factory default setting for the Console port on a C500C is 57600 bps. The name and location of the file flash.img on the PC. You can press the ... button to search for the file yourself. The name and location of the file on the PC. You can press the ... button to search for the file yourself. The name and location of the file remote.exe on the PC. You can press the ... button to search for the file yourself.

When the settings are correct, click Download in the Firmware Download window. The download utility then prompts you to restart the controller in Diagnostic mode.
3

Restart the controller in Diagnostic mode:


a b c

Shut down the controller by entering the command shutdown now. Switch off controller power. While holding down the F1, F2, and Pause/Continue buttons, switch on controller power. The controller boots into Diagnostic Mode. Verify that the message Diagnostic Mode is displayed on the controller LCD screen.

4.

On the PC, click OK to start the download.

ActiveRobot User Guide: Installing ActiveRobot

25

Installing ActiveRobot: Installing CROS 2.8 or 3.1

Rebuilding the File System on the Controller


You must completely rebuild the file system once you have downloaded the new version of CROS.

To rebuild the file system


1 2 3

Switch off controller power. While holding down the F2 and Home buttons, switch on controller power. The controller LCD displays the message Loading new MFS from Flash while the file system is being rebuilt. When the process is complete, the controller continues with its normal bootup sequence.

Making the PC the Default Controller User Interface


When you install a new version of the CROS on the controller, it sets the teach pendant as the default user interface. If one is attached, you will have to manually command it to release point of control to the controller. If there is no teach pendant attached, the controller will give point of control to the Console port (and, hence, the PC attached to it), but there will be a short delay while the controller determines that a teach pendant is not attached. In both cases, you will benefit by altering CROS to prevent it automatically assigning point of control to the teach pendant during startup.

To assign point of control to the Console port at controller startup


1 2

Power up the controller and let it complete its startup. If a teach pendant is attached to the controller, press the ESC key on the pendant, followed by the F1 key. The pendant will release point of control. In the Robcomm3 terminal window or ActiveRobot Terminal, enter the command auto -d at the system shell prompt. This command disables the automatic execution of the pendant program on controller startup.

Restoring Controller Files


Once you have downloaded CROS and rebuilt the file system, you can restore your application and configuration files.

To restore your files to the controller


1

Using Robcomm3 or ActiveRobot Explorer, copy your backup copies of the files from the /app and /conf directories back onto the controller. Shut down and reboot the controller. Re-compile and test all application files on the controller.

2 3

26

ActiveRobot User Guide: Installing ActiveRobot

Installing ActiveRobot: Installing the ActiveRobot Software

Installing the ActiveRobot Software


Once you have connected the PC to the Console port of the C500C controller and established communications, you can install the ActiveRobot software. To install the ActiveRobot software 1 Re-boot your PC to ensure that no ActiveRobot software or applications are running.
2

If you have a previous version of ActiveRobot installed on the PC, use the Add/Remove Programs applet in the Windows Control Panel to uninstall it. Insert the ActiveRobot installation CD in the PCs CD/DVD drive. After a few seconds, Windows will launch the ActiveRobot installation utility:

Note:

If the installation program does not autorun, run the autorun.exe program, which is in the root directory of the installation CD.

Click Read Release Notes to review in your browser the most recent information about this release of ActiveRobot. If you do not have Adobe Acrobat Reader 4 or later installed on the PC, click Acrobat Reader 5 to launch the Acrobat Reader installation program. (You need Acrobat to view and print the Portable Document Format version of the ActiveRobot User Guide.) Click ActiveRobot to install the ActiveRobot software. The ActiveRobot installation program will run and prompt you for the following choices: To accept or refuse the end-user licence To accept or change the installation directory To select a typical, compact, or custom installation

ActiveRobot User Guide: Installing ActiveRobot

27

Installing ActiveRobot: Configuring and Testing ActiveRobot

Once you have accepted the end-user licence and responded to the other prompts, the installation completes.

Configuring and Testing ActiveRobot


Before using ActiveRobot, you must configure and test it. You may also need to update the version of CROS and the HCL communication program on the controller. For details see the following procedures: To configure ActiveRobot on page 2-8 To test the ActiveRobot configuration on page 2-9 To update the version of HCL on the controller on page 2-10

To configure ActiveRobot
1

Select ActiveRobot Configuration in the Windows Start Menu or in the CRS ActiveRobot directory. When it starts, ActiveRobot Configuration opens to the General tab:

Select the Configure tab to display the configuration dialog box.

28

ActiveRobot User Guide: Installing ActiveRobot

Installing ActiveRobot: Configuring and Testing ActiveRobot

Select the robot system you wish to configure, using the Robot to Configure selection box. If you have only one controller connected to the PC, select 0. Select the PC serial port to use to communicate with the selected robot system in the Comm Port text box. Select the serial communications rate to use in the Speed selection box (units are bits/sec). This must match the speed set on the controller, which by default is 57600 bps. Select the serial communications parity to use in the Parity selection box. This must match the parity set on the controller, which by default is none. Select the number of serial communication stop bits to use in the Stop Bits selection box. This must match the number of stop bits set on the controller, which by default is one. Select the check box labeled This is the default robot to make this robot system the default robot system. There must be one and only one robot system designated as the default robot system. If you do not want this robot system to be the default one, clear the check box.

If you want to reset the serial communications settings to their defaults, select Reset Settings. Click Save to store this robot system configuration.

10

To test the ActiveRobot configuration 1 Click the Test tab to display the Test dialog box.
2 3

Select the ID of the robot system in the Robot to Test selection box. Select Test to test the robot system. ActiveRobot Configuration will run through a series of tests, indicating the status of each one as it goes.

Note:

All tests must pass before you can use ActiveRobot. If the PC cannot communicate with the controller, the Remote HCL Speed test will fail. If it does, check that you have correctly connected the PC to the controller and set the correct communication settings.

ActiveRobot User Guide: Installing ActiveRobot

29

Installing ActiveRobot: Configuring and Testing ActiveRobot

If the test is successful, take the following steps:


a b

Click the Controller tab Select the number of the controller in the Controller to use selection box. Click Synchronize to set the controllers date and time to that of the PC.

During the test, ActiveRobot Configuration checks the versions of CROS and the HCL communication program on the controller. If they are not correct, it will prompt you to update each one. To update the version of CROS, see Installing CROS 2.8 or 3.1 on page 2-3. To update the version of HCL on the controller 1 Run the program ARPatch.exe in the directory CROS3.1Patch on your ActiveRobot installation CD. Windows opens the ARPatch dialog box:

For each controller attached to the PC, take the following steps:
a

Select the controller to update from the Robot number selection box. If you have only one controller connected to the PC, select 0. Click Update to start the update process. When prompted to apply the patch, click Yes. ARPatch applies the patch and asks if you want to shut down the controller. Click Yes to shutdown the controller. When the controller shuts down, ARPatch prompts you to power off the controller. Power off the controller. Wait a few seconds and then power on the controller.

b c

e f 3

When you have finished updating each controller, click Exit to close the ARPatch program. Before using ActiveRobot, test the ActiveRobot configuration again, as described in To test the ActiveRobot configuration on page 2-9.

210

ActiveRobot User Guide: Installing ActiveRobot

Using ActiveRobot

This chapter describes how to use ActiveRobot components to develop robot applications. It consists of the following topics: Safety Considerations on page 3-2, which describes safety concerns unique to ActiveRobot Creating a New ActiveRobot Application on page 3-2, which describes how to access the ActiveRobot components in Visual Basic 6 and other tools Getting Help on page 3-4, which describes how to access online and printed information about ActiveRobot methods and properties Reference Documentation Conventions on page 3-5, which describes how to interpret the method and property syntax information Developing ActiveRobot Applications on page 3-6, which provides an overview of the process of creating an ActiveRobot application Example Applications on page 3-14, which provides an overview of the example applications included with ActiveRobot Using ActiveRobot Configuration on page 3-17, which describes how to use the ActiveRobot Configuration tool Using ActiveRobot Terminal on page 3-22, which describes how to use the ActiveRobot Terminal tool Using ActiveRobot Explorer on page 3-24, which describes how to use the ActiveRobot Explorer tool

ActiveRobot User Guide: Using ActiveRobot

3-1

Using ActiveRobot: Safety Considerations

Safety Considerations
In addition to considering those safety and performance issues that apply to the robot system, you must consider the safety and performance issues that apply specifically to ActiveRobot. ActiveRobot enables you to control a robot system remotely, which can raise some safety concerns if the host computer is some distance away from the robot system. In such circumstances, it is possible that the operator of the host computer might not be aware of what is happening at the robot system. If a host computer is running an ActiveRobot application that can control the motion of the robot arm, heed the following guidelines: Place the host computer close to the robot system to ensure that the host computers operator is aware at all times of whats happening with the robot system. Install an E-stop next to the host computer.

You must also be aware that, unlike the C500C controller, the host computer does not run a real-time operating system, and cannot offer the same guarantees on robot application timing and performance. Avoid running nonActiveRobot applications that are computationally intensive at the same time as an ActiveRobot application.

Creating a New ActiveRobot Application


To create an new ActiveRobot application, you simply create a new project within your preferred Windows development tool and make a reference to the ActiveRobot DLLs. (To learn how to create instances of ActiveRobot components, see Creating and Using ActiveRobot Objects.) Compatible Windows development tools include Microsoft Visual Basic 5.0 or later, Visual C++ 5.0 or later, Office 97 or later applications, and other applications that support Microsoft Visual Basic for Applications (VBA).
Note:

Visual Basic 5.0, Visual C++ 5.0 and Office 97 applications do not support ActiveRobot Help. However, you can still open ActiveRobot Help from either its shortcut in the Windows Start menu or in the CRS Robotics directory.

Creating ActiveRobot Applications In Visual Basic 6.0 Creating ActiveRobot Applications In Visual C++ 6.0 Creating ActiveRobot Applications In Access 2000

Creating ActiveRobot Applications In Visual Basic 6.0


To create a new ActiveRobot application in Visual Basic, take the following steps:
1

Start Visual Basic and create a new project.

3-2

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Creating a New ActiveRobot Application

Select the References menu item in the Project menu. Visual Basic opens the References dialog box.

3.

Select the CRS ActiveRobot 1.1 Type Library and click OK.

Creating ActiveRobot Applications In Visual C++ 6.0


To create a new ActiveRobot application in Visual C++, take the following steps:
1 2

Start Visual C++ and create a new project. In the header (.h) files for classes that access ActiveRobot components, before the class declarations, import the ActiveRobot type library and specify its namespace. For example, if you have installed ActiveRobot to the default location on the C drive, add the following statements:
#import "C:\Program Files\CRS Robotics\ActiveRobot\ActiveRobot.dll" using namespace ACTIVEROBOTLib;

In the implementation (.cpp) files for classes that access ActiveRobot components, make sure you initialize the COM library before creating any ActiveRobot objects, as follows:
if FAILED(CoInitialize (NULL)) { AfxMessageBox("CoInitialize() failed."); exit(1);

You must initialize the COM library every time you create a new thread.

ActiveRobot User Guide: Using ActiveRobot

3-3

Using ActiveRobot: Getting Help

Creating ActiveRobot Applications In Access 2000


To create a new ActiveRobot application in Microsoft Access 2000, take the following steps:
1 2

Start Access and create a new database. Select the Modules tab and select New. Access opens a Visual Basic for Applications programming window. Select the References menu item in the Project menu. Visual Basic opens the References dialog box.

4.

Select the CRS ActiveRobot 1.1 Type Library and click OK.

Getting Help
In Visual Basic 6 and higher, and in applications that support Visual Basic for Applications, you can get context-sensitive online help from the following sources: ToolTip help will appear every time you select an ActiveRobot object method or property, providing number and types of arguments. If you press F1 while your cursor is in an ActiveRobot method or property, ActiveRobot Help will open to the page describing that method or property.

ActiveRobot Help provides search capabilities, hypertext links, and an index to help you find the information you need quickly. The ActiveRobot User Guide, an Adobe Acrobat Portable Document Format (PDF) file installed in your CRS Robotics directory, contains the same information as the ActiveRobot Help and offers the following additional capabilities:

3-4

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Reference Documentation Conventions

It is easier to print from. It permits more powerful searching. It provides more powerful viewing options.

Reference Documentation Conventions


The Reference chapters, which describe the ActiveRobot objects methods and properties for Visual Basic users, employ the following documentation conventions: The name of each method or property is followed by a description of its purpose. The Syntax section shows you how to use the method or property in your Visual Basic code, using the following conventions: Parts in italics are values. These values can be hard-coded or variables, as appropriate. Parts in bold must be entered exactly as shown. Parts surrounded by square brackets are optional.

For example, in the following syntax description for setting and getting the Output property of a CRSRobot object,
RobotObject.Output(point[,queueBypass]) = outputNState outputNState = RobotObject.Output(point[,queueBypass])

the parts outputNState, RobotObject, point and queueBypass are all values or variables, while Output is the name of the property (which must appear exactly as shown). The square brackets indicate that queueBypass is an optional part.
Note:

All =, (, ), . and , characters must appear in code in the positions shown, but, for the sake of clarity, do not appear in the syntax description in bold.

The syntax description is followed by a table listing the purpose, type and possible values of each part. The Remarks section, if present, describes any noteworthy aspects of the method or property, such as restrictions on its use for particular models of arm, or additional details about using it. The See Also section, if present, lists related methods and/or properties.

How Visual C++ Users Can Use the Reference Documentation


Visual C++ users can also use the reference information if they keep in mind the following guidelines: All the Visual Basic data types described also apply to Visual C++, with the exception of the following types:

ActiveRobot User Guide: Using ActiveRobot

3-5

Using ActiveRobot: Developing ActiveRobot Applications

Strings, which in Visual C++ must be declared as objects of type BSTR. Booleans, which in Visual C++ must be declared as objects of type VARIANT_BOOL.

The types of the values assigned to or from ActiveRobot properties in Visual Basic are the same as the values returned by these properties in Visual C++.

Developing ActiveRobot Applications


The following sections describe how to develop ActiveRobot applications. The Development Process Using V3 Files in ActiveRobot Applications Creating and Using ActiveRobot Objects Co-ordinating ActiveRobot Event Handlers Monitoring the Robot System Managing Point of Control Processing Abort Commands

The Development Process


ActiveRobot application development usually consists of the following tasks: Teaching locations and variables Creating instances of the ActiveRobot objects, including at least one CRSV3File object and one CRSRobot object Creating the applications user interface Creating the applications process logic Debugging the application Deploying the application

Using V3 Files in ActiveRobot Applications


ActiveRobot robot applications typically use a v3 file on the host computer. The v3 file contains teachable location data and application variables required to run the application. ActiveRobot CRSV3File objects provide an interface to this file. When developing new robot applications, you typically teach initial locations and variables on the controller, and then copy the v3 file to the host computer. You then use a CRSV3File object to access and modify the v3 file. To learn more about creating and editing the v3 file on the controller, refer to the manual Application Shell (ASH), which came with your robot system. For details on accessing and using the v3 file on the host computer, refer to Chapter 5, CRSV3File.

3-6

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Developing ActiveRobot Applications

To learn how to transfer v3 files between the host computer and the controller, see Using ActiveRobot Explorer on page 3-24.

Creating and Using ActiveRobot Objects


The ActiveRobot interface includes five object classes: CRSRobot, which is the applications main interface to the robot system. CRSV3File, which is the applications interface to the v3 file CRSLocation, which the application can use to create and modify robot locations CRSPath, a collection object that stores the CRSLocation objects that define a path CRSRemote, which the application can use to access the controllers operating system

The following sections describe how to create CRSRobot objects in Visual Basic and Visual C++, and provide an overview of each of these object classes. Using ActiveRobot Objects In Visual Basic Using ActiveRobot Objects In Visual C++ Using CRSRobot Using CRSV3File Using CRSLocation Using CRSPath Using CRSRemote

Using ActiveRobot Objects In Visual Basic


To create an instance of an ActiveRobot object, you can use the Visual Basic keywords Dim and New. For example, to create an instance of the CRSRobot object called RobotObject, you create the following line of code:
Dim RobotObject as New CRSRobot

Thereafter, to access a RobotObject method or property, you would simply add a period to the name of the instance of the object and specify the method or property name and any required arguments. For example, to invoke the RobotObjects Ready method, which puts the arm into the ready position, you create the following line of code:
RobotObject.Ready

To get the current value of the RobotObjects GripperType property, you create the following line of code:
griptype = RobotObject.GripperType

To set the current value of the RobotObjects GripperType property, you create the following line of code:
RobotObject.GripperType = griptype

ActiveRobot User Guide: Using ActiveRobot

3-7

Using ActiveRobot: Developing ActiveRobot Applications

To assign one object to another, you must use the Set command. For example, to assign a new tool transform (which is a CRSLocation object) to a CRSRobot object, you would enter the following line of code:
Set RobotObject.ToolTransform = transform

Note that, in Visual Basic, assigning one object to another does not copy the values of all of the source objects properties to those of the destination object. Instead, Visual Basic destroys the destination object and simply creates a reference with the same name as the destination object to the source object.

Using ActiveRobot Objects In Visual C++


To create instances of ActiveRobot objects in Visual C++, you first declare the name of each instance and then invoke the object constructor. For example, to create one instance of each class of ActiveRobot object, you write the following lines of code:
ICRSRobotPtr Robot; declare a CRSRobot object // ICRSRemotePtr Controller; declare a CRSRemote object // ICRSV3FilePtr TestV3; declare a CRSV3File object // ICRSLocationPtr locA; declare a CRSLocation object //

ICRSPathPtr Path1; declare a CRSPath object //


Robot = ICRSRobotPtr(__uuidof(CRSRobot)); // construct a CRSRobot object Controller = ICRSRemotePtr(__uuidof(CRSRemote)); // construct a CRSRemote object TestV3 = ICRSV3FilePtr(__uuidof(CRSV3File)); // construct a CRSV3File object locA = ICRSLocationPtr(__uuidof(CRSLocation)); // construct a CRSLocation object

Path1 = ICRSPathPtr (__uuidof(CRSPath)); // construct a CRSRobot object

(The __uuidof keyword is a non-ANSI feature of Microsoft Visual C++. It retrieves the globally unique identifier of the object class.) Do not use the new or delete keywords with ActiveRobot objects. Doing so can produce memory leaks.

Using CRSRobot
If your application must control the robot system, it must include at least one instance of a CRSRobot object. This object sends commands to and reflects the current state and configuration of a single robot system. Your application can contain multiple instances of CRSRobot objects, but only one CRSRobot object can have point of control in a robot system at a time. The following tables list the categories of methods and properties provided by the CRSRobot object class. Table 3-1: Category Diagnostics Force Control Gripper Homing and Calibration Operator Input Motion CRSRobot method categories Description Retrieves diagnostic information about the robot system Controls the ATI Force Sensor option Controls the gripper Robot system homing and calibration Gets input from a controller panel button Motion control: move, wait, and so on

3-8

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Developing ActiveRobot Applications

Category Point of Control

Description Sets the process that controls the arm

Robot Configuration Configures aspects of the robot system Robot Status Utility Table 3-2: Category Axis Configuration Diagnostics Force Control Gripper Input/Output Robot Configuration Robot Information Robot Mode Control Robot Selection Retrieves robot system status information Miscellaneous functions CRSRobot property categories. Description Get and set the configuration of the robot systems axes Get diagnostic information about the robot system Controls the CRS Robotics Force Sensor Gripper characteristics Get or set states of GPIO, controller panel buttons Get or set configuration characteristics Get fixed information about the robot system Get or set robot system modes Get or set which physical robot system you are controlling

Blended Motion Control Get or set blended motion parameters Robot Status Utility Get robot system status Miscellaneous properties

For details about creating and using CRSRobot objects, see Chapter 4, CRSRobot.

Using CRSV3File
If your application must control the robot system (rather than simply monitor it), it will usually include one instance of a CRSV3File object. The following tables list the methods and properties provided by the CRSV3File object class. Table 3-3: Method Open Close VariableInfo CRSV3File methods Purpose Opens, creates, or resets the length of the specified v3 file Closes the specified v3 file Extracts information about the specified location or variable

ActiveRobot User Guide: Using ActiveRobot

3-9

Using ActiveRobot: Developing ActiveRobot Applications

Method Create Delete Rewind GetNextName

Purpose Creates a new location or variable Deletes the specified location or variable Moves the location/variable access pointer to the beginning of the v3 file Retrieves the name of the location or variable at the current pointer position in the v3 file

Table 3-4: Property Location Value

CRSV3File properties Purpose Gets or sets a location or variable in the v3 file Gets or sets the value of the specified variable in the v3 file

For details about creating and using CRSV3File objects, see Chapter 5, CRSV3File.

Using CRSLocation
The CRSV3File object contains CRSLocation objects, which encapsulate robot system locations. You can use the CRSLocation objects properties to get the coordinate data of these locations and copy them to your own instances of CRSLocation objects.
Note:

The robot system can only move to valid locations (those within its workspace) and only the robot system can determine the validity of a location. While you can create an undefined location in the host computers v3 file from within an ActiveRobot application, you cannot set the locations coordinate data and then command the robot system to move there without generating an error condition.

The following table lists the properties of the CRSLocation object class. Table 3-5: Property IsMotor IsWorld x y z zrot yrot xrot CRSLocation properties Purpose Gets whether this location uses motor coordinates Gets whether this locations uses world coordinates Gets or sets the x coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location

3-10

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Developing ActiveRobot Applications

Property world motor Value IsValid IsMetric

Purpose Gets or sets the world coordinate of the specified world axis Gets or sets the position of the specified motor Gets or sets the coordinate data of this location Gets whether the location is valid Gets whether the locations coordinate data is in metric units

For details on using CRSLocation properties, see Chapter 6, CRSLocation.

Using CRSPath
CRSPath objects encapsulate robot system paths, which consist of a series of locations and the triggers associated with each one. You can use the CRSPath objects methods and properties to, among other things, add or remove locations from the path, and set the trigger associated with a location. The following tables list the methods and properties provided by the CRSPath object class. Table 3-6: Method Add Remove CRSPath methods Purpose Adds the specified location/trigger member to the CRSPath collection Deletes the specified location/trigger member from the CRSPath collection CRSPath properties Purpose Gets the number of location/trigger members in the CRSPath collection Gets or sets the location component of the specified member of the CRSPath collection Gets or sets the trigger component of the specified member of the CRSPath collection

Table 3-7: Property Count Item Trigger

For details on using CRSPath objects, see Chapter Chapter 7, CRSPath.

Using CRSRemote
The CRSRemote object class provides an interface to the controllers operating system, file transfer daemon and file system. The following tables list the methods and properties provided by the CRSRemote object class.

ActiveRobot User Guide: Using ActiveRobot

3-11

Using ActiveRobot: Developing ActiveRobot Applications

Table 3-8: Method

CRSRemote methods Purpose Cancels the current GetFile or PutFile operation Retrieves the major version, minor version and build numbers of the version of CROS running on the robot controller Deletes the specified file Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory Retrieves information about filesystem space for the filesystem containing the specified object Copies the specified file on the remote controller to the specified file on the host computer Creates the specified directory on the remote controller Pings the remote controller to test communications integrity Copies the specified local file to the specified destination file on the remote controller Deletes an empty directory on the remote controller Launches a program on the remote controller using the specified CROS command line Sends the specified CROS signal to the specified process on the remote controller Waits for the specified CROS process to complete and retrieves its exit code

AbortFileTransfer CROSVersion

Delete DirNext DirRead DirRewind FileSpace GetFile MkDir Ping PutFile RmDir Run SendSignal WaitForExitCode

Table 3-9: Property

CRSRemote Properties Purpose Gets or sets the controllers date and time Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry

ControllerDate DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor

3-12

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Developing ActiveRobot Applications

Property DirFileMinor DirFileName DirFileSize DirFileType PercentComplete ProcessExists RobotInUse

Purpose Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry Gets the progress of the current GetFile or PutFile file transfer Gets whether the specified CROS process exists Gets or sets the current controller

For details on using the CRSRemote object, see Chapter 8, CRSRemote.

Co-ordinating ActiveRobot Event Handlers


Some ActiveRobot methods can take a considerable amount of time to complete execution. The Finish method, for example, may take several seconds while it waits for robot motion to finish. To prevent a Visual Basic application from appearing to freeze during this wait period, the CRSRobot object continues to respond to events while it waits for ActiveRobot methods to complete. This can introduce a problem: if an event handler invokes a property or method of a CRSRobot object that is still waiting to complete a previouslyinvoked method, an error will occur, and the event handler will be unable to successfully complete. To avoid this problem, you must prevent the user or application from generating events that invoke any of a CRSRobot objects point of control methods while that CRSRobot object is still processing one of these methods. In the user interface, for example, you must disable all user interface elements that invoke methods of this type as soon as one has been selected by the user, and only re-enable them once the CRSRobot object has completely processed the selected command.

Monitoring the Robot System


You can use additional instances of CRSRobot objects to monitor a robot system while the primary CRSRobot object is controlling the system. This enables you, for example, to update status indicators for non-motion-related I/O in your user interface while the the arm is moving. For example, to poll a controller input while the arm is moving, you can create another instance of a CRSRobot object, and periodically get its Input property for the desired input.
Note:

If you poll the robot system at a frequency greater than about ten times per second, you may start to affect its performance.

ActiveRobot User Guide: Using ActiveRobot

3-13

Using ActiveRobot: Example Applications

Managing Point of Control


The robot system permits only one controller process or CRSRobot object to control the system at a time. This can affect your development process: if, for example, you are running a C500C application shell (ash) in an ActiveRobot Terminal window while you are coding the application, you must exit from the shell before you can run the application. This also affects your applications. If, for example, you wish to enable the operator to use the teach pendant, you must explicitly release point of control from your application before the operator can use the pendant. (The robot system will give back point of control to the your application automatically once the operator has released control from the pendant.) The CRSRobot object provides three methods for managing point of control: ControlGet, ControlGive and ControlRelease. For details, see Chapter 4, CRSRobot.

Processing Abort Commands


As described in the section Co-ordinating ActiveRobot Event Handlers, you cant process abort commands in ActiveRobot applications simply by invoking your primary CRSRobot objects Abort method while it is processing another method. Instead, you must invoke the Abort method from another CRSRobot object. To implement an effective abort command, you must take the following steps:
1 2

Create a secondary CRSRobot object. Ensure its RobotInUse property has the same value as the primary CRSRobot objects RobotInUse property. Invoke the secondary CRSRobot objects Abort method when the user selects the abort command. If the primary CRSRobot object subsequently tries to issue a command that requires that it have point of control, an abort in progress exception will occur.

To resume robot arm motion control, invoke the primary CRSRobot objects ClearAbort method.

Example Applications
ActiveRobot includes simple example Visual C++ and Visual Basic applications in the Examples directory of your ActiveRobot directory. The following sections briefly describe the purpose of each example and how to open it for viewing in Visual Basic or Visual C++. For more detailed notes about each example, open the file Notes.htm, in the Notes sub-directory of each example application. V3Example PendantVB

3-14

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Example Applications

SimplePNP StatusQuery PathControl TeachPendant AbortMove

V3Example
The V3ExampleVB directory contains the Visual Basic source files for an application that enables the user to create a sample v3 file and examine its or another v3 files data. To open the V3ExampleVB project, open the file V3Example.vbp.

PendantVB
The PendantVB directory contains the Visual Basic source files for an application that enables the user to test and refine a simple pick-and-place operation. A single pick-and-place can be performed on command; if the locations or other relevant parameters require changing, the teach pendant may be called remotely and new locations taught to the robot. To open the PendantVB project, open the file PendantVB.vbp.

SimplePNP
The PickAndPlaceMFC directory contains the Visual C++ source files for an application that performs a simple pick-and-place operation using locations from a pre-existing V3 file. To open the SimplePNP project, open the file SimplePNP.dsw.

StatusQuery
The StatusQueryMFC directory contains the Visual C++ source files for an application that runs a simple pick-and-place routine using variable data from a v3 file. StatusQuery also displays the robot arms power and finished status, the controller board's temperature, and the end-effector's world position. To open the StatusQuery project, open the file StatusQuery.dsw.

PathControl
The PathMFC directory contains the Visual C++ source files for an application that enables the user to manipulate robot path motions. It loads a series of locations from an existing V3 file and adds them to a path, which is sent to the robot system. The user can remove single locations from the path or command the robot to follow the path. To open the PathControl project, open the file PathControl.dsw.

ActiveRobot User Guide: Using ActiveRobot

3-15

Using ActiveRobot: Example Applications

TeachPendant
The PendantMFC directory contains the Visual C++ source files for an application that enables the user to test and refine a simple pick-and-place operation. A single pick-and-place can be performed on command; if the locations or other relevant parameters require changing, the teach pendant may be called remotely and new locations taught to the robot. To open the TeachPendant project, open the file TeachPendant.dsw.

AbortMove
The AbortMoveMFC directory contains the Visual C++ source files for an application that performs a very simple up-and-down traversal with the robot. The user has the option to set an observer robot object to ensure that the vertical traversal does not greatly exceed a preset distance. When the endeffector's Z co-ordinate exceeds this distance, the observer sends an Abort signal. The robot object with point-of-control recognizes the Abort signal and asks the user for confirmation to clear it. To open the AbortMove project, open the file AbortMove.dsw.

3-16

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Using ActiveRobot Configuration

Using ActiveRobot Configuration


ActiveRobot Configuration enables you to configure and test numerous aspects of the robot system and the communications between it and the host computer. The following sections describe how to start ActiveRobot Configuration and how to use its four tabs. Starting ActiveRobot Configuration Configuring a Robot System Testing a Robot System Performing Utility Robot Motion Operations Performing Utility Controller Operations Exiting from ActiveRobot Configuration

Starting ActiveRobot Configuration


To start ActiveRobot Configuration, select ActiveRobot Configuration in the Windows Start Menu or in the CRS ActiveRobot directory. When it starts, ActiveRobot Configuration opens to the General tab:

Figure 3-1:

The General tab in ActiveRobot Configuration displays information about the current version of the ActiveRobot DLL and the currently configured robot systems.

ActiveRobot User Guide: Using ActiveRobot

3-17

Using ActiveRobot: Using ActiveRobot Configuration

The General tab in ActiveRobot Configuration (see Figure 2-3) displays the current version of the ActiveRobot DLL, and the total number of configured robot systems and their ID numbers. It also provides an Exit command to close the program.

Configuring a Robot System


The Configure tab enables you to create and edit a communications configuration for each robot system attached to the host computer.

Figure 3-2:

The Configure tab in ActiveRobot Configuration enables you to create and edit a communications configuration for each robot system attached to the host computer.

To configure a robot systems communications


1 2

Select the Configure tab. Select the robot system you wish to configure, using the Robot to Configure selection box. Specify the serial port to use to communicate with the selected robot system in the Comm Port text box.
Note:

ActiveRobot Configuration requires you to specify a different serial port for each robot system; it will not let you select another tab until you do so.

Specify the serial communications rate to use in the Speed selection box (units are bits/sec). (This must match the speed set on the controller.)

3-18

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Using ActiveRobot Configuration

Specify the serial communications parity to use in the Parity selection box. (This must match the parity set on the controller.) Specify the number of serial communication stop bits to use in the Stop Bits selection box. (This must match the parity set on the controller.) Select the check box labeled This is the default robot to make this robot system the default robot system. There must be one and only one robot system designated as the default robot sytsem. If you do not want this robot system to be the default one, clear the check box.

If you want to reset the serial communications settings to their defaults, select Reset Settings. Select Save to store this robot system configuration.

To delete a robot system configuration, select Delete robot configuration.

Testing a Robot System


You test the communications of the entire host computer/robot system configuration using the Test tab.

Figure 3-3:

The Test tab of ActiveRobot Configuration enables you to test the communications of the host computer/robot system configuration.

To test a robot system


1

Select the Test tab.

ActiveRobot User Guide: Using ActiveRobot

3-19

Using ActiveRobot: Using ActiveRobot Configuration

Select the ID of the robot system to test in the Robot to Test selection box. Select Test to test the robot system.

ActiveRobot Configuration will run through a series of tests, indicating the status of each one as it goes.

Performing Utility Robot Motion Operations


ActiveRobot Configuration provides a Utility tab that enables you to perform several useful robot motion operations from the host computer, including homing the arm, setting joint speeds, and moving individual axes.

Figure 3-4:

The Utility tab of ActiveRobot Configuration enables you to perform several useful robot system operations from the host computer.

To perform utility robot sytem operations


1 2

Select the Utility tab. Select the ID of the robot system to control in the Robot to use selection box. Perform one or more of the following steps, as desired: Specify robot system speed using the arrows in the Speed setting box. Specify joint move size in degrees in the Joint Move Size text box. Specify track move size in millimetres in the Track Move Size text box.

3-20

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Using ActiveRobot Configuration

Select Home to home an A255/T265/CataLyst-3/CataLyst5/CataLyst-T robot arm based on its position in a homing bracket. Select Home in place to home an A255/T265/CataLyst-3/CataLyst5/CataLyst-T robot arm based on its position when the controller was shutdown. Select Ready to move the arm to the ready position. Select CalReady to the move the arm to the calibration position. Select - while pressing the CTRL key to move the desired axis in a negative direction. Select + while pressing the CTRL key to move the desired axis in a positive direction.

Performing Utility Controller Operations


ActiveRobot Configuration provides a Controller tab that enables you to synchronize the real-time clocks of the robot system and the host computer, and to perform a shutdown of the controller.

Figure 3-5:

The Controller tab of ActiveRobot Configuration

To synchronize the date and time 1 Select the Controller tab.


2

Select the ID of the robot system to synchronize with in the Controller to use selection box. Select Synchronize.

ActiveRobot User Guide: Using ActiveRobot

3-21

Using ActiveRobot: Using ActiveRobot Terminal

To shutdown the controller 1 Select the Controller tab.


2

Select the ID of the robot system to shut down in the Controller to use selection box. Select Shutdown Controller.

Exiting from ActiveRobot Configuration


To exit from ActiveRobot Configuration, select Exit in any tab or click the close button in the upper right hand corner of the window.

Using ActiveRobot Terminal


ActiveRobot Terminal provides a simple terminal interface to the controller. ActiveRobot Terminal uses the non-packetized communications facilities of HCLServer, passing all characters through as is without error checking or error correction. This can, under heavy processing loads or in high noise environments, result in some spurious characters appearing at either the host or controller, but it does not compromise the data exchanged by ActiveRobot applications using HCLServers packetized communications. Starting ActiveRobot Terminal Selecting the Robot System to Communicate With Using the ActiveRobot Terminal Scroll Buffer Exiting from ActiveRobot Terminal

Starting ActiveRobot Terminal


To start ActiveRobot Terminal, select ActiveRobot Terminal in the Windows Start Menu or in the CRS ActiveRobot directory. When it starts, ActiveRobot Terminal first determines what robot systems are available for communication and then attempts to establish a connection with the default system. If it succeeds, it opens a terminal window:

3-22

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Using ActiveRobot Terminal

Figure 3-6:

The ActiveRobot Terminal window maintains a scroll buffer that enables you to view the output of recent controller commands.

To obtain a controller prompt, press the ENTER key on the host computer.

Selecting the Robot System to Communicate With


If you wish to communicate with a robot system other than the default, select the desired system in the Robot menu.
Note:

You can also select the robot system when you launch ActiveRobot Terminal from a shortcut, by passing the systems ID as the one (and only) argument on the shortcuts command line, or target. For example, to specify that, when it starts, ActiveRobot Terminal establish communications with robot system 2s controller, you enter the following (if the ActiveRobot Terminal executable is stored in C:\Program Files\CRS Robotics\ActiveRobot):
C:\Program Files\CRS Robotics\ActiveRobot\arterminal.exe 2

Using the ActiveRobot Terminal Scroll Buffer


ActiveRobot Terminal stores window output in a 200-line scroll buffer. You can copy text from this buffer, but you cannot paste text from the Windows clipboard into the ActiveRobot Terminal window.

Viewing the Scroll Buffer


Use the scroll buttons on the right side of the window to view the current page of the scroll buffer.

Copying the Scroll Buffer


To copy a portion of the current page of the scroll buffer, take the following steps:
1

Using the mouse or the cursor keys, select the desired portion of text.

ActiveRobot User Guide: Using ActiveRobot

3-23

Using ActiveRobot: Using ActiveRobot Explorer

Press the right mouse button to show the context menu, and select Copy to copy the selected text into the Windows clipboard.
Note:

Pressing CTRL-C does not copy the selected text.

To copy the entire contents of the scroll buffer, select Copy Scroll Buffer in the File menu.

Clearing the Scroll Buffer


To clear the scroll buffer, select Clear Scroll Buffer in the File menu.

Exiting from ActiveRobot Terminal


To exit from ActiveRobot Terminal, select Exit in the File menu or click the close button in the upper right hand corner of the window.

Using ActiveRobot Explorer


ActiveRobot Explorer provides a Windows Explorer-like interface to the controllers file system. You can navigate, view directories, view file attributes, and create, copy, and delete files and directories just as you would using Windows Explorer on the host computer. Since ActiveRobot Explorer works in a very similar fashion to Windows Explorer, we will not provide an in-depth discussion here of its functions. (For details on Windows Explorer, select Help Topics in the Windows Explorer Help menu.) We will, however, discuss those functions that differ from Windows Explorer: Copying files between the controller and the host Selecting the robot system to explore

The following sections consist of these topics: Starting ActiveRobot Explorer Selecting the Robot System to Communicate With Copying Files With ActiveRobot Explorer Exiting from ActiveRobot Explorer

Starting ActiveRobot Explorer


To start ActiveRobot Explorer, select ActiveRobot Explorer in the Windows Start Menu or in the CRS ActiveRobot directory. When it starts, ActiveRobot Explorer first determines what robot systems are available for communication and then attempts to establish a connection with

3-24

ActiveRobot User Guide: Using ActiveRobot

Using ActiveRobot: Using ActiveRobot Explorer

the default system. If it succeeds, it opens a tree-view window into the controllers root directory:

Figure 3-7:

The ActiveRobot Explorer window displays the C500Cs directory structure in the left pane and the contents of the selected directory in the right pane.

Selecting the Robot System to Communicate With


If you wish to communicate with a robot system other than the default, select the desired system in the Robot menu.
Note:

You can also select the robot system when you launch ActiveRobot Explorer from a shortcut, by passing the systems ID as the one (and only) argument on the shortcuts command line, or target. For example, to specify that, when it starts, ActiveRobot Explorer establish communications with robot system 2s controller, you enter the following (if the ActiveRobot Explorer executable is stored in C:\Program Files\CRS Robotics\ActiveRobot):
C:\Program Files\CRS Robotics\ActiveRobot\arexplorer.exe 2

Copying Files With ActiveRobot Explorer


You can use drag-and-drop to copy files from the controller to the host computer, and vice-versa.

To copy files from the controller to the host 1 Open Windows Explorer and use it to display the destination directory on the host computer.

ActiveRobot User Guide: Using ActiveRobot

3-25

Using ActiveRobot: Using ActiveRobot Explorer

In ActiveRobot Explorer, select the file(s) on the controller you want to copy to the host computer. Holding the left mouse button down, drag the selected files to the destination directory in Windows Explorer. Watch the copy progress in the ActiveRobot Explorer status bar at the bottom of the window. It will increase in value as the copy operation procedes. When the status bar shows that the copy operation has completed (i.e. the copy progress field is blank), release the left mouse button. If you release the left mouse button before the ActiveRobot Explorers status bar indicates that a file copy operation has completed, the file will not be copied. You can copy controller files to the host computers desktop simply by dragging them there; you dont have to go through Windows Explorer in this case.

Note:

Note:

To copy files from the host to the controller Open ActiveRobot Explorer and use it to display the destination directory on the controller. In Windows Explorer, select the file(s) on the host computer you want to copy to the controller. Holding the left mouse button down, drag the selected files to the destination directory in ActiveRobot Explorer. You can copy files from the host computers desktop simply by dragging them to the destination directory in ActiveRobot Explorer; you dont have to open Windows Explorer in this case.

Note:

Exiting from ActiveRobot Explorer


To exit from ActiveRobot Explorer, select Exit in the File menu or click the close button in the upper right hand corner of the window.

3-26

ActiveRobot User Guide: Using ActiveRobot

CRSRobot

The CRSRobot object class enables you to control, configure and monitor the robot system. This chapter covers the following topics: CRSRobot Methods on page 4-2, which provides detailed descriptions of all CRSRobot methods CRSRobot Properties on page 4-66, which provides detailed descriptionsn of all CRSRobot properties The name RobotObject has been used in the following method and property descriptions as a placeholder for the name of the CRSRobot object you create to access them.

Note:

ActiveRobot User Guide: CRSRobot

4-1

CRSRobot: CRSRobot Methods

CRSRobot Methods
The CRSRobot methods fall into the following categories: Category Diagnostics Force Control Gripper Homing and Calibration Operator Input Motion Point of Control Description Retrieves diagnostic information about the robot system Controls the CRS Robotics Force Sensor Controls the gripper Robot system homing and calibration Gets input from a controller panel button Motion control: move, wait, and so on Sets the CRSRobot object that controls the arm

Robot Configuration Configures aspects of the robot system Robot Status Utility Retrieves robot system status information Miscellaneous functions

4-2

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Diagnostics
You diagnose the robot system with the following method:
Method FServoStatus Purpose Retrieves the status of the servo network on an F3 robot system

ActiveRobot User Guide: CRSRobot

4-3

CRSRobot: CRSRobot Methods

FServoStatus
The FServoStatus method retrieves the status of the servo network on an F3 robot system. Syntax RobotObject.FServoStatus netstat, a1, a2, a3, a4, a5, a6, a7, a8 This method has the following parts: Part netstat a1 a2 a3 a4 a5 a6 a7 a8 Remarks You must supply all the arguments to the method, even if the robot system has less than eight axes. Description An output long value indicating the status of the servo network. An output long value indicating the status of axis one An output long value indicating the status of axis two An output long value indicating the status of axis three An output long value indicating the status of axis four An output long value indicating the status of axis five An output long value indicating the status of axis six An output long value indicating the status of axis seven An output long value indicating the status of axis eight

4-4

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Force Control
You control the CRS Robotics Force Sensor with the following methods:
Method ForceCalibrate ForceDataGet ForceSensorOffset Purpose Calibrates the force sensor along the specified world axis Retrieves the forces and torques detected by the force sensor Offsets the the force sensor from the tool flange by the specified transformation

ActiveRobot User Guide: CRSRobot

4-5

CRSRobot: CRSRobot Methods

ForceCalibrate
The ForceCalibrate method calibrates the force sensor along the specified world axis. Syntax RobotObject.ForceCalibrate WorldAxis This method has the following part: Part WorldAxis Description An enumeration value specifying the axis along or around which to move the tool center point (TCP): waX: along X axis waY: along Y axis waZ: along Z axis waXRot: around X axis waYRot: around Y axis waZRot: around Z axis

Remarks The end effector must be installed when performing the calibration commands. Three separate calibrations must be performed with the sensor flange x-axis aligned to real world +X, -Z, and +Y axes, in that order. For complete details, refer to the Force Sensor User Guide.

4-6

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

ForceDataGet
The ForceDataGet method retrieves the forces and torques detected by the force sensor. Syntax RobotObject.ForceDataGet Fx, Fy, Fz, Tx, Ty, Tz This method has the following parts: Part Fx Fy Fz Tx Ty Tz Description An output float value indicating in ounces the force detected along the x world axis An output float value indicating in ounces the force detected along the y world axis An output float value indicating in ounces the force detected along the z world axis An output float value indicating in ounce-inches the torque detected along the x world axis An output float value indicating in ounce-inches the torque detected along the y world axis An output float value indicating in ounce-inches the torque detected along the z world axis

Remarks For more information about the force sensor, refer to the Force Sensor User Guide.

ActiveRobot User Guide: CRSRobot

4-7

CRSRobot: CRSRobot Methods

ForceSensorOffset
The ForceSensorOffset method offsets the the force sensor from the tool flange by the specified transformation. Syntax RobotObject.ForceSensorOffset X, Y, Z, Yaw, Pitch, Roll, DecoupleFlag This method has the following parts: Part X Y Z Yaw Pitch Roll DecoupleFlag Description A float value specifying the distance in configured linear units along the x world axis A float value specifying the distance in configured linear units along the y world axis A float value specifying the distance in configured linear units along the z world axis A float value specifying in degrees the amount of yaw A float value specifying in degrees the amount of pitch A float value specifying in degrees the amount of roll A boolean value specifying the force sensors decouple status, as follows: True: decoupled False: not decoupled

Remarks For more information about the force sensor, refer to the Force Sensor User Guide.

4-8

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Gripper
You operate the gripper with the following methods: Method GripperCalibrate GripperClose GripperFinish GripperOpen GripperStop Purpose Calibrates the gripper fingers by setting travel distance Closes the gripper fingers Waits until the gripper fingers have stopped moving Opens the gripper fingers Stops gripper finger motion

ActiveRobot User Guide: CRSRobot

4-9

CRSRobot: CRSRobot Methods

GripperCalibrate
The GripperCalibrate method calibrates the servo gripper by setting the specified minimum and maximum finger distances. Syntax RobotObject.GripperCalibrate MinDistance, MaxDistance This method has the following parts: Part MinDistance MaxDistance Description A float value specifying in the configured linear units the minimum distance between the fingers A float value specifying in configured linear units the maximum distance between the fingers

Remarks The gripper fingers will move during the calibration process. Refer to the Servo Gripper User Guide for details.

4-10

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

GripperClose
The GripperClose method closes the gripper fingers. If the robot system is configured with a servo gripper, the method accepts an optional argument specifying the force for the gripper to use. Syntax RobotObject.GripperClose [force] This method has the following part: Part force Description An optional float value ranging from zero to 100, specifying the percentage of force to apply when using a servo gripper

Remarks If no value for force is specified, the gripper will apply the same force it used on the previous invocation of GripperClose or GripperOpen. Gripper fingers can surround an object and grasp it on the outside or be inserted into a hole and grasp an object by exerting force on the insides of the hole. If the former, you use GripperClose to grasp the object and GripperOpen to release it; if the latter, you use GripperOpen to grasp the object and GripperClose to release it.
Note:

Gripping a servo grippers fingers at a force above 75 per cent for more than a few seconds may shorten the life of the servo-gripper. To reduce the risk of overloading the gripper, reduce the force you apply after initially making contact with the object. The servo-gripper mechanics will keep a firm grip on the object.

See Also Method GripperOpen GripperStop GripperFinish Purpose Opens the gripper fingers Stops gripper finger motion Waits for the gripper fingers to finish moving

Property GripperFinished GripperType GripperDistance

Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic, or none Gets and sets the distance between the fingers of the servo gripper

ActiveRobot User Guide: CRSRobot

4-11

CRSRobot: CRSRobot Methods

GripperFinish
The GripperFinish method waits until the gripper fingers have stopped moving. You use this method to ensure that the gripper fingers have completed all motion before you move the arm or to synchronize gripper finger movement with input/output operations. Syntax RobotObject.GripperFinish This method has no arguments. See Also Method GripperClose GripperOpen GripperStop GripperCalibrate Purpose Closes the gripper fingers Opens the gripper fingers Stops gripper finger motion Calibrates the gripper fingers by setting travel distance

Property GripperFinished GripperType GripperDistance

Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic, or none Gets and sets the distance between the fingers of the servo gripper

4-12

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

GripperOpen
The GripperOpen method opens the gripper fingers. If the robot system is configured with a servo gripper, the method accepts an optional argument specifying the force for the gripper to use. Syntax RobotObject.GripperOpen [force] This method has the following part: Part force Description An optional float value ranging from zero to 100, specifying the percentage of force to apply when using a servo gripper

Remarks If no value for force is specified, the gripper will apply the same force it used on the previous invocation of GripperClose or GripperOpen. Gripper fingers can surround an object and grasp it on the outside, or be inserted into a hole and grasp the object by exerting force on the insides of the hole. If the former, you use GripperClose to grasp the object and GripperOpen to release it; if the latter, you use GripperOpen to grasp the object and GripperClose to release it.
Note:

Gripping with the servo gripper at a force above 75 per cent for more than a few seconds may shorten the life of the servo-gripper. To reduce the risk of overloading the gripper, reduce the force you apply after initially making contact with the object. The servo-gripper mechanics will keep a firm grip on the object.

See Also Method GripperClose GripperStop GripperFinish Purpose Closes the gripper fingers Stops gripper finger motion Waits for the gripper fingers to finish moving

Property GripperFinished GripperType GripperDistance

Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic, or none Gets and sets the distance between the fingers of the servo gripper

ActiveRobot User Guide: CRSRobot

4-13

CRSRobot: CRSRobot Methods

GripperStop
The GripperStop method stops all gripper finger motion. Syntax RobotObject.GripperStop This method has no arguments. See Also Method GripperClose GripperOpen GripperFinish GripperCalibrate Purpose Closes the gripper fingers Opens the gripper fingers Waits for the gripper fingers to finish moving Calibrates the gripper fingers by setting travel distance

Property GripperFinished GripperType GripperDistance

Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic, or none Gets and sets the distance between the fingers of the servo gripper

4-14

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Homing and Calibration


You home and calibrate the robot system with the following methods: Method Calibrate CalibrateZeroCross Home HomeInPlace Purpose Calibrates the specified axis Calibrates the specified axis at the next zero pulse of the axiss encoder Homes the specified axis or axes of an A255 or CataLyst arm Homes the specified axis or axes of an A255 or CataLyst arm based on the arms position at shutdown Homes the specified axis by seeking the zero cross position Sets all the current motor position registers to zero

HomeZeroCross Zero

ActiveRobot User Guide: CRSRobot

4-15

CRSRobot: CRSRobot Methods

Calibrate
The Calibrate method finds the proximity sensor, backs up to the last zero cross, and calibrates the specified axis. It writes the calibration data to the file /conf/robot.cal on the controller. If you do not specify an axis, the Calibrate method calibrates all axes. Syntax RobotObject.Calibrate [axis] This method has the following part: Part axis Description An optional enumeration value specifying the axis or axes to calibrate, as follows: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

Remarks You should normally only need to use this method after a service intervention, since the arm is calibrated at the factory before shipment. Invoking this method will overwrite the robot systems calibration file. See Also Method CalReady CalibrateZeroCross Home HomeInPlace Zero Purpose Moves the arm into the calibration position Calibrates the specified axis at the next zero pulse of the axiss encoder Homes the specified axis or axes Homes the specified axis or axes of an A255 arm based on the arms position at shutdown Sets all the current motor position registers to zero

Property Homed

Purpose Gets the homed status of the arm

4-16

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

CalibrateZeroCross
The CalibrateZeroCross method calibrates the specified axis at the next zero pulse of the axiss encoder. Syntax RobotObject.CalibrateZeroCross axis, offset This method has the following parts: Part axis offset Description An input long value specifying the axis to calibrate An output long value indicating the offset in number of encoder pulses

Remarks You should normally only need to use this method after a service intervention, since arm axes and any additional axes (such as that of a track) are calibrated at the factory before shipment. This method is only used with additional axes that dont have homing switches. See Also Method CalReady Calibrate Home HomeInPlace HomeZeroCross Zero Purpose Moves the arm into the calibration position Calibrates the specified axis Moves the arm into the ready position Homes the specified axis or axes of an A255 arm based on the arms position at shutdown Homes the specified axis by seeking the zero cross position Sets all the current motor position registers to zero

Property Homed

Purpose Gets the homed status of the arm

ActiveRobot User Guide: CRSRobot

4-17

CRSRobot: CRSRobot Methods

Home
The Home method homes the specified axis or axes of A255 or CataLyst arms. If you do not specify any axes, the Home method homes all of them in numerical order, starting with axis one. Syntax RobotObject.Home [axes] This method has the following parts: Part axes Description An optional enumeration value specifying the axes to limp: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

Remarks The Home method assumes the robot system has been properly calibrated. See Also Method CalReady Calibrate Ready HomeInPlace HomeZeroCross Purpose Moves the arm into the calibration position Calibrates the specified axis Moves the arm into the ready position Homes the specified axis or axes of an A255 arm based on the arms position at shutdown Homes the specified axis by seeking the zero cross position

Property Homed

Purpose Gets the homed status of the arm

4-18

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

HomeInPlace
The HomeInPlace method homes the specified axis or axes of an A255 or CataLyst arm, based on its position at shutdown rather than its position in a homing bracket. If you do not specify any axes, the HomeInPlace method homes all of them in numerical order, starting with axis one. Syntax RobotObject.Home [axes] This method has the following parts: Part axes Description An optional enumeration value specifying the axes to limp: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

Remarks The HomeInPlace method assumes that the A255 arm has not moved since it was shut down. It seeks the zero cross position on each axis in turn. If the zero cross positions are within one per cent of a rotation of the expected position, the arm position is set accordingly and the robot system is considered homed. (The arms position at shutdown is stored in a file in the /conf directory on the controller.) The HomeInPlace method assumes the robot system has been properly calibrated. See Also Method CalReady Calibrate Ready HomeZeroCross Home Purpose Moves the arm into the calibration position Calibrates the specified axis Moves the arm into the ready position Homes the specified axis by seeking the zero cross position Homes the specified axis or axes

Property Homed

Purpose Gets the homed status of the arm

ActiveRobot User Guide: CRSRobot

4-19

CRSRobot: CRSRobot Methods

HomeZeroCross
The HomeZeroCross method homes the specified axis by seeking the zero cross position. Syntax RobotObject.HomeZeroCross axis, offset This method has the following parts: Part axis offset Description An input long value specifying the axis to calibrate An output long value indicating the offset in number of encoder pulses

Remarks You only use this method to home non-arm axes that do not have a homing proximity switch, such as a capper/decapper. See Also Method CalReady Ready Home HomeInPlace Purpose Moves the arm into the calibration position Moves the arm into the ready position Homes the specified axis or axes Homes the specified axis or axes of an A255 arm based on the arms position at shutdown

Property Homed

Purpose Gets the homed status of the arm

4-20

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Zero
The Zero method sets all the current motor position registers to zero. Syntax RobotObject.Zero This method has no arguments. Remarks Arbitrary and inappropriate use of this method can result in collisions, and damage to the robot system and adjacent equipment! You only use this method when calibrating the robot. See Also Method CalReady Calibrate Purpose Moves the arm into the calibration position Calibrates the specified axis

Property MotorLocation WorldLocation

Purpose Gets the current arm location as a motor location Gets the current arm location as a world location

ActiveRobot User Guide: CRSRobot

4-21

CRSRobot: CRSRobot Methods

Operator Input
ICRSRobot provides the following method for obtaining operator input to the controller: Method WaitForButton Purpose Waits until the operator presses the specified panel button or until the specified timeout occurs

4-22

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

WaitForButton
The WaitForButton method waits until the operator presses the specified panel button or until the specified timeout occurs. If the timeout occurs, WaitForButton raises an exception. Syntax RobotObject.WaitForButton button, timeout This method has the following parts: Part button Description An enumeration value specifying the panel button to be pressed: cbF1: F1 button cbF2: F2 button cbPauseCont: Pause/Continue button cbHome: Home button An integer value specifying the timeout period in milliseconds

timeout

See Also Property PanelButton PanelButtons PanelLight Purpose Gets the state of the specified panel button Gets the states of all panel buttons Gets or sets the state of the specified panel light

ActiveRobot User Guide: CRSRobot

4-23

CRSRobot: CRSRobot Methods

Motion
You control arm motion with the following CRSRobot methods: Method Align Approach Purpose Aligns the approach/depart tool axis parallel to the specified world axis Moves the TCP along its approach/depart axis to the specified distance from the specified location using joint-interpolated motion Moves the TCP along its approach/depart axis to the specified distance from the specified location using straight line motion Moves the arm to the calibrate position Clears a previously-invoked Abort method Creates and stores a continuous path through an array of locations with triggers for GPIO Runs a path previously created and stored with the CTPath method Moves the TCP along the approach/depart tool axis to the specified distance from the current location using joint-interpolated motion Moves the TCP along the approach/depart tool axis to the specified distance from the current location using straight line motion Waits for the arm to finish moving In the tool frame of reference, moves the TCP the specified distance along or around the specified axis using joint-interpolated motion In the tool frame of reference, moves the TCP the specified distance along or around the specified axis using straight-line motion In the world frame of reference, moves the TCP the specified distance along or around the specified axis using joint-interpolated motion in the world frame of reference, moves the TCP the specified distance along or around the specified axis using straight-line motion Moves the specified joint by the specified number of units Disengages the servo control of the specified motor Locks the specified axes Rotates the specified motor by the specified number of encoder pulses

ApproachStraight

CalReady ClearAbort CTPath CTPathGo Depart

DepartStraight

Finish JogTool

JogToolStraight

JogWorld

JogWorldStraight

Joint Limp LockAxes Motor

4-24

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Method Move MoveStraight NoLimp Ready Abort Stop UnlockAxes

Purpose Moves the TCP to the specified location using jointinterpolated motion Moves the TCP to the specified location using straight-line motion Engages servo control of the specified set of axes Moves the robot to the ready position Halts robot motion and signals the controlling process Halts robot motion, does not signal controlling process Unlocks the specified axes

ActiveRobot User Guide: CRSRobot

4-25

CRSRobot: CRSRobot Methods

Align
The Align method aligns the approach/depart tool axis parallel to the specified world axis, using joint-interpolated motion. Syntax RobotObject.Align axis This method has the following part: Part axis Description An enumeration value, as follows: aaNear: aligns to the nearest axis aaX: aligns to the X axis aaY: aligns to the Y axis aaZ: aligns to the Z axis

Remarks When no tool transform has been set (the tool coordinate system is at its default, identical to the mechanical interface coordinate system), the approach/depart tool axis is the axis arising off of, and perpendicular to, the tool flange (mechanical interface). The F3 tool coordinate system and the A465/A255 tool coordinate system have different approach/depart tool axes: The F3s approach/depart tool axis is the Z axis of the F3 tool coordinate system. The axes of the tool coordinate system are parallel to the corresponding axes of the world coordinate system when the arm is in the CalReady position (straight up). The the approach/depart tool axis of the A465 or A255 is the X axis of the A465/A255 tool coordinate system. The axes of the tool coordinate system are parallel to the corresponding axes of the world coordinate system when the arm is in the Ready position.

If you have set a tool transform, the Align method aligns the transformed approach/depart tool axis parallel to the specified axis of the world coordinate system. See Also Method ToolTransform Purpose Gets or sets the tool frame of reference transformation

4-26

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Approach
The Approach method moves the tool center point (TCP) along the approach/depart axis to the specified distance from the specified location, using joint-interpolated motion. You use Approach to move the arm, usually quickly, to a position near a location before moving the tool, usually slowly, to the location. Syntax RobotObject.Approach location, distance This method has the following parts: Part location distance Description A CRSLocation object specifying the target location to approach A float value specifying the distance from the target location

See Also Method ApproachStraight Depart Purpose Like Approach, but in straight-line motion Moves the TCP along the approach/depart tool axis to the specified distance from the current location using joint-interpolated motion Like Depart, but using straight-line motion

DepartStraight

ActiveRobot User Guide: CRSRobot

4-27

CRSRobot: CRSRobot Methods

ApproachStraight
The ApproachStraight method moves the TCP along the approach/depart axis to the specified distance from the specified location using straight line motion. Syntax RobotObject.ApproachStraight location, distance This method has the following parts: Part location distance Description A CRSLocation object specifying the target location to approach A float value specifying the distance from the target location

Remarks You must set the BlendMotion property to True before using this method. See Also Method Approach Depart Purpose Like ApproachStraight, but using joint-interpolated motion Opposite of Approach, moves TCP the specified distance from the current location using jointinterpolated motion Like DepartStraight, but using straight-line motion

DepartStraight

4-28

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

CalReady
The CalReady method moves the arm to the calibrate position. For an F3 or A465, CalReady moves the arm straight up. For an A255, CalReady moves the arm horizontally outward. Syntax RobotObject.CalReady This method has no arguments. Remarks You would normally never need to use this method, since the arm is calibrated at the factory before shipment. See Also Method Calibrate CalibrateZeroCross Zero Description Calibrates the specified axis or axes Calibrates the specified axis at the next zero pulse of the axiss encoder Sets all the current motor position registers to zero

ActiveRobot User Guide: CRSRobot

4-29

CRSRobot: CRSRobot Methods

ClearAbort
The ClearAbort method clears a previously-invoked Abort method, setting this CRSRobot objects IsAborted property to False and enabling the controlling process to issue motion commands again. Syntax RobotObject.ClearAbort This method has no arguments. Remarks When any CRSRobot object has invoked the Abort method, any method that requires point of control will fail until the ClearAbort method has been invoked. See Also Method Abort Stop Description Halts robot motion and sets this CRSRobot objects IsAborted property to True Halts robot motion, but does not set this CRSRobot objects IsAborted property

Property IsAborted

Purpose Gets whether this CRSRobot object has received an abort signal from the robot system

4-30

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

CTPath
The CTPath method creates and initializes a CRSPath object, which defines a continuous path through an array of locations with triggers for GPIO (general purpose input/output). To run the path, you must invoke the CTPathGo method. Syntax RobotObject.CTPath PathNumber, Path, Start, Finish[, Speed] This method has the following parts: Part PathNumber Path Start Finish Speed Description A long value from 1 to 8 specifying the MCE path register in which to store this path The CRSPath object containing the location and trigger values to use A long value specifying the path start location A long value specifying the path finish location An optional long value specifying the percentage of full speed through the path

Remarks If you do not specify a value for the Speed argument, CTPath will use the current speed. See Also Method CTPathGo Purpose Runs the path stored in the CRSPath object

ActiveRobot User Guide: CRSRobot

4-31

CRSRobot: CRSRobot Methods

CTPathGo
The CTPathGo method runs the specified path previously created and stored with the CTPath method. Syntax RobotObject.CTPathGo PathNumber This method has the following part: Part PathNumber Description A long value specifying the MCE path register of the path to run

See Also Method CTPath Purpose Creates and initializes a CRSPath object

4-32

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Depart
The Depart method moves the TCP the specified distance from the current location along the approach/depart axis using joint-interpolated motion. You invoke this method to move the tool, usually slowly, away from a location a short distance, before moving the arm, usually quickly, to a location a larger distance away. Syntax RobotObject.Depart distance This method has the following part: Part distance Description A float value specifying the distance from the tool centre-points current position to the depart position

Remarks It is possible to supply a negative value for distance, which will cause the the arm to move forward along the approach/depart axis. See Also Method DepartStraight Approach ApproachStraight Purpose Like Depart, but in straight line motion Opposite of Depart, moves to approach position Opposite of DepartStraight, moves to approach position in straight line motion

ActiveRobot User Guide: CRSRobot

4-33

CRSRobot: CRSRobot Methods

DepartStraight
The DepartStraight method moves the TCP the specified distance from the current location along the approach/depart axis using straight-line motion. Syntax RobotObject.DepartStraight distance This method has the following part: Part distance Description A float value specifying the distance from the tool centre-points current position to the depart position

Remarks It is possible to supply a negative value for distance, which will cause the the arm to move forward along the approach/depart axis. You must set the BlendMotion property to True before using this method. See Also Method Depart Approach ApproachStraight Purpose Like DepartStraight, but not in straight line motion Opposite of Depart, moves to approach position Opposite of DepartStraight, moves to approach position in straight line motion

4-34

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Finish
The Finish method waits until the arm has finished moving. Syntax RobotObject.Finish [Tolerance] This method has the following part: Part Tolerance Description An optional enumeration value specifying the distance the arm can move before the next method is executed: ftLoose: 100 motor pulses (default value) ftTight: five motor pulses

Remarks You often use the Finish method to finish the movement of the arm to a location before closing the gripper at the location, instead of having the gripper start to close while the arm is still moving. You also use Finish to synchronize methods, such as input/output, with robot motion. See Also Method GripperFinish Purpose Waits for the gripper to finish moving

Property Finished GripperFinished

Purpose Indicates if the robot has finished moving Indicates if the gripper has finished moving

ActiveRobot User Guide: CRSRobot

4-35

CRSRobot: CRSRobot Methods

JogTool
The JogTool method moves the TCP along or around the specified axis in the tool coordinate system by the specified amount, using joint-interpolated motion. Syntax RobotObject.JogTool axis, distance This method has the following parts: Part axis Description An enumeration value specifying the axis in the tool coordinate system along which to move the TCP: taX: X axis taY: Y axis taZ: Z axis taYaw: Normal axis taPitch: Orientation axis taRoll: Approach/Depart axis A float value specifying the extent of motion along the axis: in configured linear units, for taX, taY, or taZ in degrees, for taYaw, taPitch, or taRoll

distance

Remarks All joints involved in a joint-interpolated motion start and stop at the same time. The speed of the joint that has to move the farthest is governed by the speed setting, and other joints rotate slower according to joint interpolation. The resulting TCP path is not straight. See Also Method JogToolStraight JogWorld JogWorldStraight Joint Motor Purpose Like JogTool, but in straight line motion Like JogTool, but in the world frame of reference Like JogWorld, but in straight line motion Rotates or moves a specified joint by a specified amount Rotates a specified motor by a specified number of encoder pulses

4-36

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

JogToolStraight
The JogToolStraight method moves the TCP along or around the specified axis in the tool coordinate system by the specified amount using straight-line motion. Syntax RobotObject.JogToolStraight axis, distance This method has the following parts: Part axis Description An enumeration value specifying the axis in the tool coordinate system along which to move the TCP: taX: X axis taY: Y axis taZ: Z axis taYaw: Normal axis taPitch: Orientation axis taRoll: Approach/Depart axis A float value specifying the extent of motion along the axis: in configured linear units, for taX, taY, or taZ in degrees, for taYaw, taPitch, or taRoll

distance

Remarks For motion along an axis (taX, taY, and taZ), the TCP travels in a straight line along the axis. For rotation around an axis (taYaw, taPitch, and taRoll), the TCP stays in its current position, while the tool rotates around the axis. You must set the BlendMotion property to True before using this method. See Also Method JogTool JogWorldStraight JogWorld Joint Motor Description Like JogToolStraight, but in joint-interpolated motion Like JogToolStraight, but in the world frame of reference Like JogWorldStraight, but in joint-interpolated motion Rotates or moves a specified joint by a specified amount Rotates a specified motor by a specified number of encoder pulses

ActiveRobot User Guide: CRSRobot

4-37

CRSRobot: CRSRobot Methods

JogWorld
The JogWorld method moves the TCP along or around the specified axis in the world coordinate system by the specified amount using joint-interpolated motion. Syntax RobotObject.JogWorld axis, distance This method has the following parts: Part axis Description An enumeration value specifying the axis in the world coordinate system along or around which to move the TCP: waX: along X axis waY: along Y axis waZ: along Z axis waXRot: around X axis waYRot: around Y axis waZRot: around Z axis A float value specifying the distance of motion along or around the axis: in configured linear units, for waX, waY, or waZ in degrees, for waXRot, waYRot, or waZRot

distance

Remarks All joints involved in a joint-interpolated motion start and stop at the same time. The speed of the joint that has to move the farthest is governed by the speed setting, and other joints rotate slower according to joint interpolation. The resulting TCP path is not straight. See Also Method JogWorldStraight JogTool JogToolStraight Joint Motor Purpose Like JogWorld, but in straight line motion Like JogWorld, but in the tool frame of reference Like JogTool, but in straight line motion Rotates or moves a specified joint by a specified amount Rotates a specified motor by a specified number of encoder pulses

4-38

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

JogWorldStraight
The JogWorldStraight method moves the TCP along or around the specified axis in the world coordinate system by the specified amount using straight line motion. Syntax RobotObject.JogWorldStraight axis, distance This method has the following parts: Part axis Description An enumeration value specifying the axis in the world coordinate system along or around which to move the TCP: waX: along X axis waY: along Y axis waZ: along Z axis waXRot: around X axis waYRot: around Y axis waZRot: around Z axis A float value specifying the distance of motion along or around the axis: in configured linear units, for waX, waY, or waZ in degrees, for waXRot, waYRot, or waZRot

distance

Remarks For motion along an axis (waX, waY, and waZ), the TCP moves in a straight line along the axis for the specified distance. Similarly for rotation around an axis (waXRot, waYRot, and waZRot), the TCP remains in place, while the tool itself rotates around the axis. You must set the BlendMotion property to True before using this method. See Also Method JogWorld JogToolStraight JogTool Joint Motor Purpose Like JogWorldStraight, but in joint-interpolated motion Like JogWorldStraight, but in the tool frame of reference Like JogToolStraight, but in joint-interpolated motion Rotates or moves a specified joint by a specified amount Rotates a specified motor by a specified number of encoder pulses

ActiveRobot User Guide: CRSRobot

4-39

CRSRobot: CRSRobot Methods

Joint
The Joint method moves the specified joint by the specified number of units. Syntax RobotObject.Joint axis, distance This method has the following parts: Part axis distance Description An long value specifying the joint to move A float value specifying the extent of motion around or along the joint: in degrees, for rotational joints (such as those on the arm) in configured linear units, for linear joints (such as the track axis)

See Also Method JogTool JogToolStraight JogWorld JogWorldStraight Motor Purpose In the tool frame of reference, moves the TCP in jointinterpolated motion Like JogTool, but in straight line motion Like JogTool, but in the world frame of reference Like JogWorld, but in straight line motion Rotates a specified motor by a specified number of encoder pulses

4-40

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Limp
The Limp method disengages the servo control of the motors at the specified axes. If no axes are specified, Limp disengages the servo control of all motors. You invoke the NoLimp method to re-engage servo-control. Syntax RobotObject.Limp [axes] This method has the following parts: Part axes Description An optional enumeration value specifying the axes to limp: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

Remarks Limping joints two and three can cause the arm to fall over if it is not vertical, resulting in possible damage to the arm and adjacent equipment. See Also Method NoLimp Purpose Re-engages servo-control of the motors at the specified axes

ActiveRobot User Guide: CRSRobot

4-41

CRSRobot: CRSRobot Methods

LockAxes
The LockAxes method locks the specified axes. If no axes are specified, LockAxes locks all axes. Use the UnlockAxes method to unlock locked axes. Syntax RobotObject.LockAxes [axes] This method has the following part: Part axes Description An optional enumeration value specifying the axes to lock: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

See Also Method UnlockAxes Purpose Unlocks the specified locked axes

4-42

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Motor
The Motor method rotates the specified motor by the specified number of encoder pulses. Syntax RobotObject.Motor axis, pulses[, condition] This method has the following parts: Part axis distance condition Description A long value specifying the motor to rotate A long value specifying the number of encoder pulses by which to rotate the motor An optional enumeration value specifying a stop condition: msmNone: no specific condition msmHomingSwitchOn: stop when homing switch goes ON msmHomingSwitchOff: stop when homing switch goes OFF

Remarks When you specify a condition for the Motor method, the system will stop rotating the motor when the homing switch transitions to (or is in) the specified state, or after the specified number of pulses have been counted, whichever is first. You typically use the condition argument during homing or calibration operations. See Also Method JogTool JogToolStraight JogWorld JogWorldStraight Joint Description In the tool frame of reference, moves the TCP in jointinterpolated motion Like JogTool, but in straight line motion Like JogTool, but in the world frame of reference Like JogWorld, but in straight line motion Rotates or moves a specified joint by a specified amount

ActiveRobot User Guide: CRSRobot

4-43

CRSRobot: CRSRobot Methods

Move
The Move method moves the TCP to the specified location using jointinterpolated motion. Syntax RobotObject.Move location This method has the following part: Part location Description A CRSLocation object specifying the location to move to

Remarks All joints involved in a joint-interpolated motion start and stop at the same time. The speed of the joint that has to move the farthest is governed by the speed setting, and other joints rotate slower according to joint interpolation. The resulting TCP path is not straight. The location can be either a world location or a motor location. See Also Method MoveStraight Depart Purpose Like Move, but in straight-line motion Moves the TCP along the approach/depart tool axis to the specified distance from the current location using joint-interpolated motion Like Depart, but using straight-line motion Waits for the arm to finish moving

DepartStraight Finish

4-44

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

MoveStraight
The MoveStraight method moves the TCP to the specified world location using straight-line motion. Syntax RobotObject.MoveStraight location This method has the following part: Part location Description A CRSLocation object specifying the world location to move to

Remarks This method ensures that both arm motion position and orientation are linearly interpolated. This makes it possible to keep the payload in its current orientation during the entire move: for example, it enables you to prevent a container from spilling its contents during the move. You must set the BlendMotion property to True before using this method. See Also Method Move Depart Purpose Like MoveStraight, but using joint-interpolated motion Moves the TCP along the approach/depart tool axis to the specified distance from the current location using joint-interpolated motion Like Depart, but using straight-line motion Waits for the arm to finish moving

DepartStraight Finish

ActiveRobot User Guide: CRSRobot

4-45

CRSRobot: CRSRobot Methods

NoLimp
After the Limp method has been invoked, the NoLimp method re-engages the servo control of the motors at the specified axes. If no axes are specified, NoLimp re-engages the servo control of all motors. Syntax RobotObject.NoLimp [axes] This method has the following part: Part axes Description An optional enumeration value specifying the axes to unlimp: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

See Also Method Limp Purpose Disengages servo-control of the motors at the specified axes

4-46

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Ready
The Ready method moves the arm to the ready position. Syntax RobotObject.Ready This method has no arguments. See Also Method Home Purpose Homes the arm or specified axes

ActiveRobot User Guide: CRSRobot

4-47

CRSRobot: CRSRobot Methods

Abort
The Abort method stops current motion and discards the contents of the robot controllers motion queue. It also sets the IsAborted property of each CRSRobot object to True and prevents the controlling CRSRobot object from adding another motion command to the queue until a ClearAbort command is issued. Syntax RobotObject.Abort This method has no arguments. See Also Method Stop ClearAbort Purpose Halts the current motion Clears a previously-invoked Abort method

Property IsAborted

Purpose Gets whether this CRSRobot object has received an abort signal from the robot system

4-48

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Stop
The Stop method immediately halts robot motion and flushes the robot controllers motion queue. The Stop method can only be used by the CRSRobot object that has point of control. Syntax RobotObject.Stop This method has no arguments. Remarks The Stop method should not be used as a safety stop, since the controlling CRSRobot object can still issue motion commands. The Stop method can be used by the controlling CRSRobot object to, for example, stop a slow Move command when an input has been detected. See Also Method Abort ClearAbort Purpose Halts the current motion and flushes the controllers motion queue Clears a previously-invoked Abort method

ActiveRobot User Guide: CRSRobot

4-49

CRSRobot: CRSRobot Methods

UnlockAxes
After the LockAxes method has been invoked, the UnLockAxes method unlocks the specified locked axes. If no axes are specified, UnLockAxes unlocks all axes. Syntax RobotObject.UnlockAxes [axes] This method has the following part: Part axes Description An optional enumeration value specifying the axes to unlock: alAxis1: Axis one alAxis2: Axis two alAxis3: Axis three alAxis4: Axis four alAxis5: Axis five alAxis6: Axis six alAxis7: Axis seven alAxis8: Axis eight alAllAxes: All axes

See Also Method LockAxes Purpose Locks the specified axes

4-50

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Point of Control
The point of control methods change which CRSRobot object currently controls the arm. They include the following methods: Method ControlGet ControlGive ControlRelease Purpose Assigns point of control to this CRSRobot object Assigns point of control to the specified CRSRobot object Gives up point of control from this CRSRobot object

ActiveRobot User Guide: CRSRobot

4-51

CRSRobot: CRSRobot Methods

ControlGet
The ControlGet method assigns point of control to this CRSRobot object. Syntax RobotObject.ControlGet This method has no arguments. Remarks The ControlGet method will fail if another CRSRobot object currently has point of control. Note that all methods and properties that attempt to change the state of the robot system implicitly execute a ContrlGet and thus will fail if another CRSRobot object has point of control. See Also Method ControlRelease Purpose Gives up point of control from this CRSRobot object

4-52

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

ControlGive
The ControlGive method explicitly assigns point of control to the specified CRSRobot object. Syntax RobotObject.ControlGive RobotPID This method has the following parts: Part RobotPID Description A long value specifying the ID of the CRSRobot object to assign point of control to

See Also Method ControlRelease Purpose Gives up point of control from this CRSRobot object

Property ProcessID

Purpose Gets the ID of this CRSRobot object

ActiveRobot User Guide: CRSRobot

4-53

CRSRobot: CRSRobot Methods

ControlRelease
The ControlRelease method gives up point of control from this CRSRobot object. Syntax RobotObject.ControlRelease This method has no arguments. See Also Method ControlGet Purpose Assigns point of control to this CRSRobot object

4-54

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Robot Configuration
You save the system configuration data with the following method: Method ConfigSave Purpose Saves the system configuration data in robot.cfg

ActiveRobot User Guide: CRSRobot

4-55

CRSRobot: CRSRobot Methods

ConfigSave
The ConfigSave method overwrites the /conf/robot.cfg file on the controller with the current robot configuration data. Syntax RobotObject.ConfigSave This method has no arguments. Remarks The ConfigSave method saves the following information: whether or not the robot has a track the number of axes on the controller the tool transform the base offset the positive and negative track travel limits the gripper type the robot units (metric or English) the force sensor enable password

Changing these parameters in your application does not change the /conf/robot.cfg file. Using ConfigSave to write the changes to the /conf/robot.cfg file makes the changes permanent between controller reboots. See Also Property ToolTransform GripperType AxisNegativeLimit AxisPositiveLimit ForcePassword BaseOffset TotalAxes TrackEnable Units Purpose Gets or sets the tool transform Gets or sets the gripper type: servo, pneumatic, or none Gets or sets the negative travel limit for the specified axis Gets or sets the positive travel limit of the specified axis Sets the specified force control enable password Gets or sets the robot systems base offset Gets or sets the total number of axes on the robot system Gets or sets the enabled status of the track Gets or sets the configured linear units for linear axes

4-56

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Robot Status
You check the operational integrity of the system with the following methods: Method AxisStatus CommunicationCheck ClearError Purpose Retrieves the status of each of the axes in the robot system Raises an exception on the host computer if robot system communications fail Clears persistent error bits in the controller DSP

ActiveRobot User Guide: CRSRobot

4-57

CRSRobot: CRSRobot Methods

AxisStatus
The AxisStatus method retrieves the status of each of the axes in the robot system. Syntax RobotObject.AxisStatus axis1, axis2, axis3, axis4, axis5, axis6, axis7, axis8 This method has the following parts: Part axis1 axis2 axis3 axis4 axis5 axis6 axis7 axis8 Remarks You must supply all arguments for this method, even if there are fewer than eight axes in the robot system. The status data of each axis is stored in the following bit positions: Bit Position 0 1-15 Status Data Homing switch: 1 = On; 0 = Off Reserved Description An output long value consisting of status bits An output long value consisting of status bits An output long value consisting of status bits An output long value consisting of status bits An output long value consisting of status bits An output long value consisting of status bits An output long value consisting of status bits An output long value consisting of status bits

4-58

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

CommunicationCheck
The CommunicationCheck method raises an exception if communications to the robot are not working. Syntax RobotObject.CommunicationCheck This method has no arguments. See Also Property Homed Finished Purpose Gets whether the arm is homed Gets whether the arm has finished moving

ActiveRobot User Guide: CRSRobot

4-59

CRSRobot: CRSRobot Methods

ClearError
The ClearError method clears persistent error bits in the controller DSP, including runaways, collisions, overspeeds, and encoder faults, so that you can re-engage arm power. Syntax RobotObject.ClearError This method has no arguments. Remarks ClearError is typically used with the AsynchError property.

4-60

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

Utility
The Utility category includes the following methods: Property MotorToJoint ShiftTool ShiftWorld WorldToJoint Purpose Converts a motor location to a set of joint positions Shifts the specified location in the tool frame of reference by the specified amount Shifts the specified location in the world frame of reference by the specified amount Converts a world location to a set of joint positions

ActiveRobot User Guide: CRSRobot

4-61

CRSRobot: CRSRobot Methods

MotorToJoint
The MotorToJoint method converts a motor location to a set of joint positions. Syntax RobotObject.MotorToJoint jLocation, j1, j2, j3, j4, j5, j6, j7, j8 This method has the following parts: Part jLocation j1 j2 j3 j4 j5 j6 j7 j8 Description An input CRSLocation object specifying the motor location to convert An output float value specifying in degrees the position of joint one An output float value specifying in degrees the position of joint two An output float value specifying in degrees the position of joint three An output float value specifying in degrees the position of joint four An output float value specifying in degrees the position of joint five An output float value specifying in degrees the position of joint six An output float value specifying in degrees the position of joint seven An output float value specifying in degrees the position of joint eight

Remarks You must supply all arguments for this method, even if there are fewer than eight joints in the robot system. You cannot convert a world location with this method: use WorldToJoint instead. See Also Method WorldToJoint Purpose Converts a world location to a set of joint positions

Property JointToMotor MotorToWorld

Purpose Gets a motor location from a set of joint positions Gets a world location from a motor location

4-62

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

ShiftTool
The ShiftTool method shifts the coordinates of the specified location in the tool frame of reference by the specified amounts. Syntax RobotObject.ShiftTool location, x, y, z, yaw, pitch, roll This method has the following parts: Part location x Description A CRSLocation object specifying the location to shift A float value specifying the amount in configured linear units by which to shift the x coordinate of the location A float value specifying the amount in configured linear units by which to shift the y coordinate of the location A float value specifying the amount in configured linear units by which to shift the z coordinate of the location A float value specifying the amount in degrees by which to shift the yaw axis A float value specifying the amount in degrees by which to shift the pitch axis A float value specifying the amount in degrees by which to shift the roll acis

yaw pitch roll

Remarks You cannot shift a motor location with this method. See Also Method ShiftWorld Purpose Shifts the coordinates of the specified location in the world frame of reference by the specified amounts

Property ToolTransform

Purpose Gets or sets the tool transform

ActiveRobot User Guide: CRSRobot

4-63

CRSRobot: CRSRobot Methods

ShiftWorld
The ShiftWorld method shifts the coordinates of the specified location in the world frame of reference by the specified amounts. Syntax RobotObject.ShiftWorld location, x, y, z, zrot, yrot, xrot This method has the following parts: Part location x Description A CRSLocation object specifying the location to shift A float value specifying the amount in configured linear units by which to shift the x coordinate of the location A float value specifying the amount in configured linear units by which to shift the y coordinate of the location A float value specifying the amount in configured linear units by which to shift the z coordinate of the location A float value specifying the amount in degrees by which to shift the zrot coordinate of the location A float value specifying the amount in degrees by which to shift the yrot coordinate of the location A float value specifying the amount in degrees by which to shift the xrot coordinate of the location

zrot yrot xrot

Remarks You cannot shift a motor location with this method. See Also Method ShiftTool Purpose Shifts the coordinates of the specified location in the tool frame of reference by the specified amounts

Property ToolTransform

Purpose Gets or sets the tool transform

4-64

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Methods

WorldToJoint
The WorldToJoint method converts a world location to a set of joint positions. Syntax RobotObject.WorldToJoint wLocation, j1, j2, j3, j4, j5, j6, j7, j8 This method has the following parts: Part wLocation j1 j2 j3 j4 j5 j6 j7 j8 Description An input CRSLocation object specifying the world location to convert An output float value specifying in degrees the position of joint one An output float value specifying in degrees the position of joint two An output float value specifying in degrees the position of joint three An output float value specifying in degrees the position of joint four An output float value specifying in degrees the position of joint five An output float value specifying in degrees the position of joint six An output float value specifying in degrees the position of joint seven An output float value specifying in degrees the position of joint eight

Remarks You must supply all arguments for this method, even if there are fewer than eight joints in the robot system. You cannot convert a motor location with this method: use MotorToJoint instead. See Also Method MotorToJoint Purpose Converts a motor location to a set of joint positions

Property JointToMotor MotorToWorld

Purpose Gets a motor location from a set of joint positions Gets a world location froma motor location

ActiveRobot User Guide: CRSRobot

4-65

CRSRobot: CRSRobot Properties

CRSRobot Properties
The properties accessible in the CRSRobot object class fall into the following categories: Category Axis Configuration Diagnostics Force Control Gripper Input/Output Robot Configuration Robot Information Robot Mode Control Blended Motion Control Robot Selection Robot Status Utility Description Get and set the configuration of the robot systems axes Get or set robot system diagnostic information Controls the CRS Robotics Force Sensor Gripper characteristics Get or set states of GPIO, controller panel buttons Get or set configuration characteristics Get fixed information about the robot system Getting or setting robot system modes Get or set blended motion parameters Gets or sets the robot system currently being communicated with Getting robot system status Miscellaneous

4-66

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Axis Configuration
You get and set the configuration of the arms axes using the following properties: Property AxisAcceleration AxisDGain AxisIGain AxisLinkLength AxisMaximumJerk Purpose Gets or sets the acceleration for the specified axis Gets or sets the derivative gain (Kd) term for the specified axis Gets or sets the integral gain (Ki) term for the specified axis Gets or sets the link length for the specified axis Gets or sets the allowable jerk for the specified axis

AxisMaximumJointVelocity Gets or sets the maximum joint velocity for the specified axis AxisNegativeLimit AxisPGain AxisPosition AxisPositiveLimit AxisPulsesPerMotorTurn AxisTurnsPerUnit Gets or sets the negative travel limit for the specified axis Gets or sets the proportional gain (Kp) term for the specified axis Gets or sets the current position of the specified axis Gets or sets the positive travel limit of the specified axis Gets or sets the number of encoder pulses per motor turn for the specified axis Gets or sets the number of motor turns per current unit for the specified axis

ActiveRobot User Guide: CRSRobot

4-67

CRSRobot: CRSRobot Properties

AxisAcceleration
The AxisAcceleration property gets or sets the acceleration for the specified axis. Syntax RobotObject.AxisAcceleration(axis) = acceleration acceleration = RobotObject.AxisAcceleration(axis) This property has the following parts: Part axis acceleration Description A long value specifying the axis A float value specifying or indicating the acceleration, in the following units: Remarks Increasing axis acceleration beyond the factory-set values can accelerate wear of the arm mechanism and void the warranty. You would not set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels. See Also Property Purpose degrees/sec squared, for rotational axes configured linear units/sec , for linear axes
2 2

AxisMaximumJointVelocity Gets or sets the maximum joint velocity for the specified axis

4-68

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AxisDGain
The AxisDGain property gets or sets the derivative gain (Kd) term for the specified axis. Syntax RobotObject.AxisDGain(axis) = dGain dGain = RobotObject.AxisDGain(axis) This property has the following parts: Part axis dGain Description A long value specifying the axis A float value specifying or indicating the derivative gain

Remarks Incorrectly adjusting the servogains of the robot system axes can cause accelerated wear of the mechanism and unstable motion. Damage to the robot arm and adjacent equipment can result. You would not set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels. See Also Property AxisIGain AxisPGain Purpose Gets or sets the integral gain (Ki) term for the specified axis Gets or sets the proportional gain (Ki) term for the specified axis

ActiveRobot User Guide: CRSRobot

4-69

CRSRobot: CRSRobot Properties

AxisIGain
The AxisIGain property gets or sets the integral gain (Ki) term for the specified axis. Syntax RobotObject.AxisDGain(axis) = iGain iGain = RobotObject.AxisDGain(axis) This property has the following parts: Part axis iGain Remarks Incorrectly adjusting the servogains of the robot system axes can cause accelerated wear of the mechanism and unstable motion. Damage to the robot arm and adjacent equipment can result. You would not set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels. See Also Property AxisDGain AxisPGain Purpose Gets or sets the derivative gain (Kd) term for the specified axis Gets or sets the proportional gain (Ki) term for the specified axis Description A long value specifying the axis A float value specifying or indicating the integral gain

4-70

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AxisLinkLength
The AxisLinkLength property gets or sets the link length of the specified axis. Syntax RobotObject.AxisLinkLength(axis) = linkLength linkLength = RobotObject.AxisLinkLength(axis) This property has the following part: Part axis linkLength Description A long value specifying the axis A float value specifying or indicating in the configured linear units the link length of linear axes

Remarks You cannot set this property for arm axes. You might need to set this property for additional linear axes, such as tracks or shuttles. It is also useful when a force sensor is attached to the tool flange, to allow the robot system to take the extra length of the sensor into account without needing a different tool transform.

ActiveRobot User Guide: CRSRobot

4-71

CRSRobot: CRSRobot Properties

AxisMaximumJerk
The AxisMaximumJerk property gets or sets the maximum jerk the motion engine can apply to the specified axis. Syntax RobotObject.AxisMaximumJerk(axis) = jointJerk jointJerk = RobotObject.AxisMaximumJerk(axis) This property has the following part: Part axis jointJerk Description A long value specifying the axis A float value specifying or indicating the maximum joint jerk, in the following units: Remarks Increasing maximum jerk beyond the factory-set values can accelerate wear of the arm mechanism and void the warranty. You would not likely need to set this property for arm axes, since they are initially set at the factory. You might need to set this property for additional axes, such as shuttles or carousels.
Note:

degrees per sec , for rotational axes configured linear units per sec , for linear axes
3

This property is only valid when CROS 3.1 or higher is installed on the controller.

4-72

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AxisMaximumJointVelocity
The AxisMaximumJointVelocity property gets or sets the maximum joint velocity for joint-interpolated moves. Syntax RobotObject.AxisMaximumJointVelocity(axis) = jointVelocity jointVelocity = RobotObject.AxisMaximumJointVelocity(axis) This property has the following part: Part axis jointVelocity Description A long value specifying the axis A float value specifying or indicating the maximum joint velocity, in the following units: degrees per sec, for rotational axes configured linear units per sec, for linear axes

Remarks Increasing maximum joint velocity beyond the factory-set values can accelerate wear of the arm mechanism and void the warranty. You would not likely need to set this property for arm axes, since they are initially set at the factory. You might need to set this property for additional axes, such as shuttles or carousels.

ActiveRobot User Guide: CRSRobot

4-73

CRSRobot: CRSRobot Properties

AxisNegativeLimit
The AxisNegativeLimit property gets or sets the negative travel limit for the specified axis. Syntax RobotObject.AxisNegativeLimit(axis) = nTravelLimit nTravelLimit = RobotObject.AxisNegativeLimit(axis) This property has the following parts: Part axis nTravelLimit Description A long value specifying the axis A float value specifying or indicating the negative travel limit, in the following units: degrees, for rotational axes configured linear units, for linear axes

Remarks You cannot set this property for arm axes. You might need to set this property for additional axes, such as shuttles or carousels.

4-74

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AxisPGain
The AxisPGain property gets or sets the proportional gain (Kp) term for the specified axis. Syntax RobotObject.AxisDGain(axis) = pGain pGain = RobotObject.AxisDGain(axis) This property has the following parts: Part axis pGain Description A long value specifying the axis A float value specifying or indicating the proportional gain

Remarks Incorrectly adjusting the servogains of the robot system axes can cause accelerated wear of the mechanism and unstable motion. Damage to the robot arm and adjacent equipment can result. You cannot set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels. See Also Property AxisIGain AxisDGain Purpose Gets or sets the integral gain (Ki) term for the specified axis Gets or sets the derivative gain (Kd) term for the specified axis

ActiveRobot User Guide: CRSRobot

4-75

CRSRobot: CRSRobot Properties

AxisPosition
The AxisPosition property gets or sets the current position of the specified axis, in motor pulses. Syntax RobotObject.AxisPosition(axis,positionType) = axisPosition axisPosition = RobotObject.AxisPosition(axis,positionType) This property has the following part: Part axis positionType Description A long value specifying the axis An optional enumeration value specifying the robot systems position type, as follows: ptActual: the actual position ptCommanded: the position the robot system was commanded to take ptEndpoint: the end position ptHold: the hold position ptError: indicates an error A long value specifying or indicating in motor pulses the position of the axis

axisPosition

Remarks Arbitrarily resetting the position of root axes and then moving the robot can result in damage to the robot system and adjacent equipment. Do not supply a value for the positionType argument when setting the property. You cannot set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels.

4-76

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AxisPositiveLimit
The AxisPositiveLimit property gets or sets the positive travel limit of the specified axis. Syntax RobotObject.AxisPositiveLimit(axis) = pTravelLimit pTravelLimit = RobotObject.AxisPositiveLimit(axis) This property has the following part: Part axis pTravelLimit Description A long value specifying the axis A float value specifying or indicating the negative travel limit in the configured linear units

Remarks You cannot set this property for arm axes. You might need to set this property for additional axes, such as shuttles or carousels.

ActiveRobot User Guide: CRSRobot

4-77

CRSRobot: CRSRobot Properties

AxisPulsesPerMotorTurn
The AxisPulsesPerMotorTurn property gets or sets the number of encoder pulses per motor turn for the specified axis. Syntax RobotObject.AxisNegativeLimit(axis) = pulsesPerMotor pulsesPerMotor = RobotObject.AxisNegativeLimit(axis) This property has the following part: Part axis pulsesPerMotor Description A long value specifying the axis A long value specifying or indicating the number of encoder pulses per motor

Remarks You cannot set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels.

4-78

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AxisTurnsPerUnit
The AxisTurnsPerUnit property gets or sets the number of motor turns per current unit for the specified axis. Syntax RobotObject.AxisNegativeLimit(axis) = turnsPerUnit turnsPerUnit = RobotObject.AxisNegativeLimit(axis) This property has the following part: Part axis turnsPerUnit Description A long value specifying the axis A float value specifying or indicating the number of motor turns per current unit

Remarks For rotational axes, the units are always degrees. For linear axes, the units are either inches or millimetres, as defined with the controllers /diag/setup program. You cannot set this property for arm axes, since they are fixed. You might need to set this property for additional axes, such as shuttles or carousels.

ActiveRobot User Guide: CRSRobot

4-79

CRSRobot: CRSRobot Properties

Diagnostics
You perform robot system diagnostics with the following method: Property ServoErrorParam Purpose Gets or sets the F3 servo error parameters for the specified axis

4-80

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ServoErrorParam
The ServoErrorParam property gets or sets the F3 servo error parameters for the specified axis. Syntax RobotObject.ServoErrorParam(axis,parameter) = servoErrParams servoErrParams = RobotObject.ServoErrorParam(axis,parameter) This property has the following parts: Part axis parameter servoErrParams Description A long value specifying the axis A long value specifying the parameter A long value specifying or indicating the servo error parameters

Remarks Setting these parameters incorrectly can result in hazardous conditions that can result in damage to the robot system and to adjacent equipment and personnel.

ActiveRobot User Guide: CRSRobot

4-81

CRSRobot: CRSRobot Properties

Force Control
You get and set control information for the CRS Robotics Force Sensor using the following properties: Property ForceEnable ForceFrame ForceParam ForcePassword ForceTrackingEnable Purpose Sets the operational status of the force sensor system Sets the force sensors coordinate system to the specified frame of reference Gets or sets the specified force control parameter Sets the specified force control enable password Sets whether force-based tracking is enabled

4-82

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ForceEnable
The ForceEnable property sets the operational status of the force sensor system. When you set this property to True, the controller intializes all force sensor parameters to their default values and sets its coordinate system to the sensor frame of reference. Syntax RobotObject.ForceEnable = forceEnableState This property has the following part: Part forceEnableState Description A boolean value specifying the status of the force sensor: True: Force sensor enabled False: Force sensor disabled

Remarks Refer to the Force Sensor User Guide for details.

ActiveRobot User Guide: CRSRobot

4-83

CRSRobot: CRSRobot Properties

ForceFrame
The ForceFrame property sets the force sensors coordinate system to the specified frame of reference. Syntax RobotObject.ForceFrame = frameForce This property has the following part: Part frameForce Description An enumeration value specifying the frame of reference: ffSensor: sensors frame of reference ffWorld: world frame of reference ffTool: tool frame of reference

Remarks When you set the ForceFrame property to ffSensor, both forces and torques are resolved in the sensor frame of reference. When you set the ForceFrame propety to ffWorld, only forces are resolved in the world frame of reference. Torques cannot be meaningfully represented in the world frame of reference and are resolved in the tool frame of reference instead. When you set the ForceFrame property to ffTool, forces and torques are resolved about the tool tip. When using this frame of reference, it is particularly important that you set the tool transform and the link length offset correctly. You set the tool transform with the ToolTransform property, and the link length offset with the AxisLinkLength property. Refer to the Force Sensor User Guide for details about these values.

4-84

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ForceParam
The ForceParam property gets or sets the specified force control parameter. Syntax RobotObject.ForceParam(parameter) = forceParameter forceParameter = RobotObject.ForceParam(parameter) This property has the following part: Part forceParameter parameter Description A long value specifying or indicating the value of the force control parameter An enumeration value specifying which force control parameter to get or set, as follows: fpResolvedFx: sensed force resolved in the x direction (get only) fpResolvedFy: sensed force resolved in the y direction (get only) fpResolvedFz: sensed force resolved in the z direction (get only) fpResolvedTx: sensed torque resolved in the x direction (get only) fpRelsolvedTy: sensed torque resolved in the y direction (get only) fpResolvedTz: sensed torque resolved in the z direction (get only) fpResolvedFr: resultant sensed force (get only) fpResolvedTr: resultant sensed torque (get only) fpTrackingOffsetX: positional tracking offset in the x direction (get only) fpTrackingOffsetY: positional tracking offset in the y direction (get only) fpTrackingOffsetZ: positional tracking offset in the z direction (get only) fpTrackingOffsetYaw: positional tracking offset for yaw (get only) fpTrackingOffsetPitch: positional tracking offset in pitch (get only) fpTrackingOffsetRoll: positional tracking offset for roll (get only) fpMaxSensedFx: maximum sensed force resolved in the x direction (get only) fpMaxSensedFy: maximum sensed force resolved in the y direction (get only) fpMaxSensedFz: maximum sensed force resolved in the z direction (get only) fpMaxSensedTx: maximum sensed torque resolved in the x direction (get only) fpMaxSensedTy: maximum sensed torque resolved in the y direction (get only)

ActiveRobot User Guide: CRSRobot

4-85

CRSRobot: CRSRobot Properties

Part

Description fpMaxSensedTz: maximum sensed torque resolved in the z direction (get only) fpMaxSensedFr: maximum resultant sensed force (get only) fpMaxSensedTr: maximum resultant sensed torque (get only) fpPGainFx: proportional gain for sensed force resolved in the x direction fpPGainFy: proportional gain for sensed force resolved in the y direction fpPGainFz: proportional gain for sensed force resolved in the z direction fpPGainTx: proportional gain for sensed torque resolved in the x direction fpPGainTy: proportional gain for sensed torque resolved in the y direction fpPGainTz: proportional gain for sensed torque resolved in the z axis fpDGainFx: differential gain for sensed force resolved in the x direction fpDGainFy: differential gain for sensed force resolved in the y direction fpDGainFz: differential gain for sensed force resolved in the z direction fpDGainTx: differential gain for sensed torque resolved in the x direction fpDGainTy: differential gain for sensed torque resolved in the y direction fpDGainTz: differential gain for sensed torque resolved in the z direction fpThresholdFx: threshold for sensed force resolved in the x direction fpThresholdFy: threshold for sensed force resolved in the x direction fpThresholdFz: threshold for sensed force resolved in the x direction fpThresholdTx: threshold for sensed torque resolved in the x direction fpThresholdTy: threshold for sensed torque resolved in the y direction fpThresholdTz: threshold for sensed torque resolved in the z direction fpSetpointFx: setpoint for sensed force resolved in the x direction fpSetpointFy: setpoint for sensed force resolved in the y direction fpSetpointFz: setpoint for sensed force resolved in the z direction fpSetpointTx: setpoint for sensed torque resolved in the x direction fpSetpointTy: setpoint for sensed torque resolved in the y direction fpSetpointTz: setpoint for sensed torque resolved in the z direction

4-86

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Part

Description fpSensorDataScalingFx: units conversion factor for sensed force resolved in the x direction fpSensorDataScalingFy: units conversion factor for sensed force resolved in the y direction fpSensorDataScalingFz: units conversion factor for sensed force resolved in the z direction fpSensorDataScalingTx: units conversion factor for sensed torque resolved in the x direction fpSensorDataScalingTy: units conversion factor for sensed torque resolved in the y direction fpSensorDataScalingTz: units conversion factor for sensed torque resolved in the z direction fpLimitClampX: limit clamp for positional tracking offset in the x direction fpLimitClampY: limit clamp for positional tracking offset in the y direction fpLimitClampZ: limit clamp for positional tracking offset in the z direction fpLimitClampYaw: limit clamp for positional tracking offset of yaw fpLimitClampPitch: limit clamp for positional tracking offset of pitch fpLimitClampRoll: limit clamp for positional tracking offset of roll

Remarks Although the parameters fpMaxSensedFx, fpMaxSensedFy, fpMaxSensedFz, fpMaxSensedTx, fpMaxSensedTy, fpMaxSensedTz, fpMaxSensedFr, and fpMaxSensedTr are listed as get only, you can set them to zero to reset the maxima. Refer to the Force Sensor User Guide for details about these parameters.

ActiveRobot User Guide: CRSRobot

4-87

CRSRobot: CRSRobot Properties

ForcePassword
The ForcePassword property sets the specified force control enable password. Syntax RobotObject.ForcePassword = password This property has the following part: Part password Remarks CRS supplies the correct force password for your robot system. If your system was puchased with a force sensor, then this value is already set. Description A long value specifying the password

4-88

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ForceTrackingEnable
The ForceTrackingEnable property sets whether force-based tracking is enabled. Syntax RobotObject.ForceTrackingEnable = trackingEnabledStatus This property has the following part: Part trackingEnabledStatus Description A boolean value specifying the enabled status, as follows: True: force-based tracking enabled False: force-based tracking disabled

Remarks Refer to the Force Sensor User Guide for details about using the force sensor.

ActiveRobot User Guide: CRSRobot

4-89

CRSRobot: CRSRobot Properties

Gripper
You read and/or write the robot systems gripper characteristics with the following properties: Property GripperDistance GripperFinished GripperType Purpose Gets or sets the servo gripper open distance Gets whether the servo gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic or none

4-90

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

GripperDistance
The GripperDistance property gets or sets the servo gripper finger opening distance. Syntax RobotObject.GripperDistance = distance distance = RobotObject.GripperDistance This property has the following part: Part distance Description A float value specifying in configured linear units the gripper fingers opening distance, ranging from zero (fingers closed) to the maximum distance the fingers can open

Remarks Do not use this property to grasp objects use GripperClose and GripperOpen instead. You normally use this property to position the gripper fingers prior to grasping an object. Refer to the Servo Gripper User Guide for details. See Also Method GripperClose GripperStop GripperFinish GripperCalibrate Purpose Closes the gripper fingers Stops all gripper finger motion Waits for the gripper fingers to finish moving Calibrates the servo gripper by setting finger travel distance

Property GripperFinished GripperType

Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic, or none

ActiveRobot User Guide: CRSRobot

4-91

CRSRobot: CRSRobot Properties

GripperFinished
The GripperFinished property gets whether the gripper fingers have finished moving. Syntax gripperfinishedState = RobotObject.GripperFinished This property has the following part: Part Description

gripperfinishedState A boolean value specifying the motion status of the gripper fingers: True: Gripper finger motion finished False: Gripper fingers still moving See Also Method GripperClose GripperStop GripperFinish GripperCalibrate Purpose Closes the gripper fingers Stops all gripper finger motion Waits for the gripper fingers to finish moving Calibrates the servo gripper by setting finger travel distance

Property GripperDistance GripperType

Purpose Gets or sets the gripper finger opening distance Gets or sets the gripper type: servo, pneumatic, or none

4-92

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

GripperType
The GripperType property gets or sets the gripper type: servo, pneumatic, or none. Syntax RobotObject.GripperType = toolType toolType = RobotObject.GripperType This property has the following part: Part toolType Description An enumeration value specifying the type of gripper attached to the arm: gtServo: servo gtAir: pneumatic gtNone: none

Remarks You set this property to gtAir for any pneumatic end effector, not just the ones available from CRS Robotics. You set this property to gtServo only when using the CRS Robotics servo gripper. For other types of end effectors, set this property to gtNone. See Also Method GripperClose GripperStop GripperFinish GripperCalibrate Purpose Closes the gripper fingers Stops all gripper finger motion Waits for the gripper fingers to finish moving Calibrates the gripper by setting finger travel distance

Property GripperFinished GripperDistance

Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper fingers opening distance

ActiveRobot User Guide: CRSRobot

4-93

CRSRobot: CRSRobot Properties

Input/Output
You perform robot system input and output using the following properties: Property AnalogInput FNetworkInputs FNetworkInput FNetworkOutput FNetworkOutputs Input Inputs Output Outputs PanelButton PanelButtons PanelLight Purpose Gets a sample from the specified analog input Gets the state of the specified FNetwork input channels Gets the state of the specified FNetwork input channel Sets or gets the state of the specified FNetwork output channel Gets or sets the states of the specified FNetwork output channels Gets the state of the specified GPIO input Gets the states of all the GPIO inputs Gets or sets the state of the specified GPIO output Gets or sets the states of all the GPIO outputs Gets the state of the specified panel button Gets the states of all the panel buttons Gets or sets the state of the specified panel button light

4-94

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

AnalogInput
The AnalogInput property gets a sample from the specified analog input. Syntax analogSample = RobotObject.AnalogInput(inputChannel) This property has the following parts: Part inputChannel Description An enumeration value specifying the analog input channel, as follows: anaUser1: user analog input 1 A float value indicating the value of the sample

analogSample Remarks

You can use the analog input on the back of the robot controller to obtain 8bit samples of voltages between zero and +5 V. See Also Property Input Inputs Output Outputs Purpose Gets the state of the specified GPIO input Gets the states of all the GPIO inputs Gets or sets the state of the specified GPIO output Gets or sets the states of all the GPIO outputs

ActiveRobot User Guide: CRSRobot

4-95

CRSRobot: CRSRobot Properties

FNetworkInputs
The FNetworkInputs property gets the state of the specified FNetwork input channels. Syntax fnetworkInputStates = RobotObject.FNetworkInputs(inputsMask) This property has the following parts: Part inputsMask fnetworkInputStates Description A long value specifying a mask that selects the input channels A long value indicating the states of the selected input channels

Remarks The FNetwork interconnects devices on the arm and the controller. It is typically used to communicate with the end-of-arm input/output interface. Setting a bit in the inputsMask argument selects the input channel corresponding to the bits position in the mask. To select input channel one, for example, you set bit one; to select input channel 32, you set bit 32. You evaluate the value you get from the FNetworkInputs property in a similar way: if a bit in the value is set (1), it means that the input channel corresponding to the bits position is ON; if a bit is clear (0), it means that the input channel corresponding to the bits position is OFF. The end-of-arm I/O connector has pins 4, 5, 6 and 7 reserved for user input. These correspond to input channels 1, 2, 3 and 4 respectively. See Also Property FNetworkInput FNetworkOutput FNetworkOutputs Purpose Gets the state of the specified FNetwork input channel Sets or gets the state of the specified FNetwork output channel Gets or sets the states of the specified FNetwork output channels

4-96

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

FNetworkInput
The FNetworkInput state gets the state of the specified FNetwork input channel. Syntax fnetworkInputState = RobotObject.FNetworkInput(fnInput) This property has the following parts: Part fnInput fnetworkInputState Description A long value specifying the input channel A boolean value indicating the state of the input channel

Remarks The FNetwork interconnects devices in the arm and the controller. It is typically used to communicate with the end-of-arm input/output interface. The end-of-arm I/O connector has pins 4, 5, 6 and 7 reserved for user input. These correspond to input channels 1, 2, 3 and 4 respectively. See Also Property FNetworkInputs FNetworkOutput FNetworkOutputs Purpose Gets the state of the specified FNetwork input channels Sets or gets the state of the specified FNetwork output channel Gets or sets the states of the specified FNetwork output channels

ActiveRobot User Guide: CRSRobot

4-97

CRSRobot: CRSRobot Properties

FNetworkOutput
The FNetworkOutput property sets or gets the state of the specified FNetwork output channel. Syntax fnetworkOutputState = RobotObject.FNetworkOutput(fnOutput) This property has the following parts: Part fnOutput Description A long value specifying the output channel

fnetworkOutputState A boolean value indicating or specifying the state of the output channel Remarks The FNetwork interconnects devices on the arm and the controller. It is typically used to communicate with the end-of-arm input/output interface. The end-of-arm I/O connector has pins 8, 9, 10 and 11 reserved for user output. These correspond to output channels 1, 2, 3 and 4 respectively.
Note:

You cannot use output channels 1 and 2 if you have a pneumatic gripper attached to the arm.

See Also Property FNetworkInputs FNetworkInput FNetworkOutputs Purpose Gets the state of the specified FNetwork input channels Gets the state of the specified FNetwork input channel Gets or sets the states of the specified FNetwork output channels

4-98

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

FNetworkOutputs
The FNetworkOutputs property gets or sets the states of the specified FNetwork output channels. Syntax fnetworkOutputStates = RobotObject.FNetworkOutputs(outputsMask) This property has the following parts: Part outputsMask Description A long value specifying a mask that selects the output channels

fnetworkoutputStates A long value indicating the states of the selected output channels Remarks The FNetwork interconnects devices on the arm and the controller. It is typically used to communicate with the end-of-arm input/output interface. Setting a bit in the outputsMask argument selects the output channel corresponding to the bits position in the mask. To select output channel one, for example, you set bit one; to select output channel 32, you set bit 32. You evaluate the value you get from the FNetworkOutputs property in a similar way: if a bit in the value is set (1), it means that the output channel corresponding to the bits position is ON; if a bit is clear (0), it means that the output channel corresponding to the bits position is OFF. The end-of-arm I/O connector has pins 8, 9, 10 and 11 reserved for user output. These correspond to output channels 1, 2, 3 and 4 respectively.
Note:

You cannot use output channels 1 and 2 if you have a pneumatic gripper attached to the arm.

See Also Property FNetworkInputs FNetworkInput FNetworkOutputs Purpose Gets the state of the specified FNetwork input channels Gets the state of the specified FNetwork input channel Gets or sets the states of the specified FNetwork output channels

ActiveRobot User Guide: CRSRobot

4-99

CRSRobot: CRSRobot Properties

Input
The Input property gets the state of the specified general purpose input/output (GPIO) input. Syntax inputNState = RobotObject.Input(point) This property has the following parts: Part point inputNState Description A long value specifying the input to get the state of A boolean value indicating the state of the input: True: input ON False: input OFF

Remarks Refer to the GPIO pinout diagram in your robot system user guide to determine which value to specify for point. See Also Property AnalogInput Inputs Output Outputs Purpose Gets a sample from the specified analog input Gets the states of all GPIO inputs Sets the state of the specified GPIO output Sets the states of all the GPIO outputs

4-100

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Inputs
The Inputs property gets the states of all GPIO inputs at once. Syntax inputStates = RobotObject.Inputs This property has the following part: Part inputStates Remarks The lower 16 bits of the value returned by the Inputs property each correspond to one of the 16 GPIO inputs: the least signficant bit indicates the th state of input one, the 16 most significant bit indicates the state of input 16. A value of one for each bit means the input is ON; a value of zero means the input is OFF. Refer to the GPIO pinout diagram in your robot system user guide to determine which input corresponds to which pin on the GPIO connector. See Also Property AnalogInput Input Output Outputs Purpose Gets a sample from the specified analog input Gets the state of the specified GPIO input Gets or sets the state of the specified GPIO output Gets or sets the states of all the GPIO outputs Description A long value indicating the states of all the inputs

ActiveRobot User Guide: CRSRobot

4-101

CRSRobot: CRSRobot Properties

Output
The Output property gets or sets the specified GPIO output, optionally bypassing the online motion queue. Syntax RobotObject.Output(point[,queueBypass]) = outputNState outputNState = RobotObject.Output(point[,queueBypass]) This property has the following parts: Part point queueBypass Description A long value specifying the output to get or set the state of An optional boolean value specifying whether the property get/set should bypass the online motion queue: True: bypass queue False: place in queue (default) A boolean value indicating or specifying the state of the output: True: output ON False: output OFF

outputNState

Remarks You set the Output property when you want to turn a GPIO output ON or OFF. You get the Output property when you want to know the current state of a GPIO output. The optional queueBypass value controls synchronization of the get/set of the Output property to arm motion: by default, it is synchronized.
Note:

This CRSRobot object must have point of control to use queued outputs; outputs that bypass the queue do not require point of control to use.

Refer to the GPIO pinout diagram in your robot system user guide to determine which output corresponds to which pin on the GPIO connector. See Also Property AnalogInput Input Inputs Outputs Purpose Gets a sample from the specified analog input Gets the state of the specified GPIO input Gets the states of all the GPIO inputs Gets or sets the states of all the GPIO outputs

4-102

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Outputs
The Output property gets or sets the states of all the GPIO outputs at once, optionally bypassing the online motion queue. Syntax RobotObject.Outputs([queueBypass]) = outputStates outputStates = RobotObject.Outputs([queueBypass]) This property has the following part: Part outputStates Description A long value indicating or specifying the states of all the outputs

Remarks The lower 16 bits of the value in outputStates each correspond to one of the 16 th GPIO inputs: the least signficant bit indicates the state of input one, the 16 most significant bit indicates the state of input 16. A value of one for each bit means the output is ON; a value of zero means the output is OFF.
Note:

This CRSRobot object must have point of control to use queued outputs; outputs that bypass the queue do not require point of control to use.

Refer to the GPIO pinout diagram in your robot system user guide to determine which output corresponds to which pin on the GPIO connector. See Also Property AnalogInput Input Inputs Output Purpose Gets a sample from the specified analog input Gets the state of the specified GPIO input Gets the states of all the GPIO inputs Gets or sets the state of the specified GPIO output

ActiveRobot User Guide: CRSRobot

4-103

CRSRobot: CRSRobot Properties

PanelButton
The PanelButton property gets the state of the specified panel button. Syntax buttonNState = RobotObject.PanelButton(button) This property has the following parts: Part button Description An enumeration value specifying the panel button to get the state of: cbF1: Function 1 button cbF2: Function 2 button cbPauseCont: Pause/Continue button cbHome: Home button A boolean value indicating the state of the panel button: True: button ON False: button OFF

buttonNState

Remarks The controller latches a button press so that PanelButton can read it after it has been pressed. However, each time you use the PanelButton property, it clears the latches after reading them. If you want your program to wait for a specific button press, you should clear any previous latches with this property first. See Also Property PanelButtons PanelLight Purpose Gets the states of all panel buttons Gets or sets the state of the specified panel button light

4-104

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

PanelButtons
The PanelButtons property gets the states of all of the panel buttons at once, enabling you to detect if more than one button is being pressed simultaneously. Syntax buttonStates = RobotObject.PanelButtons This property has the following part: Part buttonStates Description A long value indicating the states of the panel buttons. Use the following enumeration values as masks to determine the state of each button: cbF1: Function 1 button cbF2: Function 2 button cbPauseCont: Pause/Continue button cbHome: Home button

Remarks The controller latches button presses so that PanelButtons can read them after they have been pressed. However, each time you use the PanelButtons property, it clears the latches after reading them. If you want your program to wait for specific button presses, you should clear any previous latches with this property first. See Also Property PanelButton PanelLight Purpose Gets the state of the specified panel buttons Gets or sets the state of the specified panel button light

ActiveRobot User Guide: CRSRobot

4-105

CRSRobot: CRSRobot Properties

PanelLight
The PanelLight property gets or sets the state of the specified panel button light. Syntax RobotObject.PanelLight(buttonlight) = buttonlightNState buttonlightNState = RobotObject.PanelLight(buttonlight) This property has the following parts: Part buttonlight Description An enumeration value specifying the panel button light: cbF1: F1 button light cbF2: F2 button light cbPauseCont: Pause/Continue button light cbHome: Home button light (get only) A boolean value indicating the state of the panel button light: True: button light ON False: button light OFF

buttonlightNState

Remarks You can only get the Home button light; you cannot set it. See Also Property PanelButtons PanelLight Purpose Gets the states of all panel buttons Gets or sets the state of the specified panel button light

4-106

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Robot Configuration
You get or set robot system configuration with the following properties: Property BaseOffset LinearAcceleration LinearJerk LinearSpeed RotationalAcceleration Purpose Gets or sets the robot systems base offset Gets or sets the linear acceleration for straight-line moves performed using motion blending Gets or sets the allowable rate of change of acceleration (jerk) Gets or sets the linear speed for straight-line moves performed using motion blending Gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending Gets or sets the maximum rotational speed for straight-line moves performed using motion blending Gets or sets the speed of the arm Gets or sets the arm stance Gets or sets the tool frame of reference transformation Gets or sets the total number of axes on the robot system Gets or sets the enabled status of the track Gets or sets the configured units for linear axes

RotationalSpeed

Speed Stance ToolTransform TotalAxes TrackEnable Units

ActiveRobot User Guide: CRSRobot

4-107

CRSRobot: CRSRobot Properties

BaseOffset
The BaseOffset property gets or sets the base offset, a world CRSLocation object that translates the default origin and orientation of the robot systems world coordinate system. Syntax Set RobotObject.BaseOffset = bOffset Set bOffset = RobotObject.BaseOffset This property has the following part: Part bOffset Description A CRSLocation object indicating or specifying the offset

See Also Property ShiftWorld ToolTransform Purpose Shifts the specified location in the world frame of reference by the specified amount Gets or sets the tool frame of reference transformation

4-108

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

LinearAcceleration
The LinearAcceleration property gets or sets the linear acceleration for straight-line moves performed using motion blending. Syntax RobotObject.LinearAcceleration = lAcceleration lAcceleration = RobotObject.LinearAcceleration This property has the following part: Part lAcceleration Description A float value indicating or specifying the acceleration in the configured linear units per sec See Also Property LinearSpeed LinearJerk Purpose Gets or sets the linear speed for straight-line moves performed using motion blending Gets or sets the allowable rate of change of acceleration for arm straight-line motion and the motion of attached linear axes Gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending Gets or sets the maximum rotational speed for straight-line moves performed using motion blending
2

RotationalAcceleration

RotationalSpeed

ActiveRobot User Guide: CRSRobot

4-109

CRSRobot: CRSRobot Properties

LinearJerk
The LinearJerk property gets or sets the allowable rate of change of acceleration (jerk) for arm straight-line motion and the motion of attached linear axes (such as the track). It does not affect joint-interpolated motion. Syntax RobotObject.LinearJerk = lJerk lJerk = RobotObject.LinearJerk This property has the following part: Part lJerk Description A float value indicating or specifying the jerk in the configured linear units per sec See Also Property LinearSpeed RotationalAcceleration Purpose Gets or sets the linear speed for straight-line moves performed using motion blending Gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending Gets or sets the maximum rotational speed for straight-line moves performed using motion blending
3

RotationalSpeed

Note:

This property is only valid when CROS 3.1 or higher is installed on the controller.

4-110

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

LinearSpeed
The LinearSpeed property gets or sets the linear speed for straight-line moves performed using motion blending. Syntax RobotObject.LinearSpeed = lSpeed lSpeed = RobotObject.LinearSpeed This property has the following part: Part lSpeed Description A float value indicating or specifying the speed in the configured linear units per sec

See Also Property LinearAcceleration RotationalAcceleration Purpose Gets or sets the linear acceleration for straight-line moves performed using motion blending Gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending Gets or sets the allowable rate of change of acceleration for arm straight-line motion and the motion of attached linear axes Gets or sets the maximum rotational speed for straight-line moves performed using motion blending

LinearJerk

RotationalSpeed

ActiveRobot User Guide: CRSRobot

4-111

CRSRobot: CRSRobot Properties

RotationalAcceleration
The RotationalAcceleration property gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending. Syntax RobotObject.RotationalAcceleration = rAcceleration rAcceleration = RobotObject.RotationalAcceleration This property has the following part: Part rAcceleration Description A float value indicating or specifying the acceleration in degrees per sec See Also Property LinearAcceleration LinearSpeed LinearJerk Purpose Gets or sets the linear acceleration for straight-line moves performed using motion blending Gets or sets the linear speed for straight-line moves performed using motion blending Gets or sets the allowable rate of change of acceleration for arm straight-line motion and the motion of attached linear axes Gets or sets the maximum rotational speed for straight-line moves performed using motion blending
2

RotationalSpeed

4-112

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

RotationalSpeed
The RotationalSpeed property gets or sets the maximum rotational speed for straight-line moves performed using motion blending. Syntax RobotObject.RotationalSpeed = rSpeed rSpeed = RobotObject.RotationalSpeed This property has the following part: Part rSpeed Description A float value indicating or specifying the speed in degrees per sec

See Also Property LinearAcceleration LinearSpeed LinearJerk Purpose Gets or sets the linear acceleration for straight-line moves performed using motion blending Gets or sets the linear speed for straight-line moves performed using motion blending Gets or sets the allowable rate of change of acceleration for arm straight-line motion and the motion of attached linear axes Gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending

RotationalAcceleration

ActiveRobot User Guide: CRSRobot

4-113

CRSRobot: CRSRobot Properties

Speed
The Speed property gets or sets the speed of the arm. Syntax RobotObject.Speed = armSpeed armSpeed = RobotObject.Speed This property has the following part: Part armSpeed Description A long value specifying or indicating the percentage of full arm speed, i.e. between 1 and 100

4-114

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Stance
The Stance property gets or sets the robot stance. Syntax RobotObject.Stance = armStance armStance = RobotObject.Stance[(physical)] This property has the following parts: Part armStance Description A three-character string value specifying or indicating the arm stance, as follows: first character (reach): f (front), b (back), or x (free) second character (elbow): u (up), d (down), or x (free) third character (wrist): f (flip), n (no-flip), or x (free) An optional boolean value specifying the arm stance: True: requested stance (default) False: physical stance

physical

Remarks Note that you can only set the requested stance.

ActiveRobot User Guide: CRSRobot

4-115

CRSRobot: CRSRobot Properties

ToolTransform
The ToolTransform property gets or sets the tool frame of reference transformation. Syntax Set RobotObject.ToolTransform = transform Set transform = RobotObject.ToolTransform This property has the following part: Part transform Description A CRSLocation object indicating or specifying the transformation

Remarks The x, y, and z properties of the transform object indicate or specify the coordinates of the tool origin translation. The zrot, yrot, and xrot properties of the transform object indicate or specify the coordinates of the tool axes rotations. See Also Method BaseOffset Purpose Gets or sets the arms base offset

4-116

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

TotalAxes
The TotalAxes property gets or sets the total number of axes on the robot system. Syntax RobotObject.TotalAxes = tAxes tAxes = RobotObject.TotalAxes This property has the following part: Part tAxes Description A long value specifying or indicating the number of axes in the robot system

Remarks You typically use this property only when adding an extra axis. See Also Property MachineAxes TransformAxes Purpose Gets the number of axes in the robot arm only Gets the number of robot arm and track axes

ActiveRobot User Guide: CRSRobot

4-117

CRSRobot: CRSRobot Properties

TrackEnable
The TrackEnable property sets or gets the enabled status of the track. Syntax RobotObject.TrackEnable = trackEnableStatus trackEnableStatus = RobotObject.TrackEnable This property has the following parts: Part trackEnableStatus Description An enumeration value specifying or indicating the enabled status of the track, as follows: tfNoTrack: track not present tfHaveTrack: track present and enabled

4-118

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Units
The Units property gets or sets the robot system units for linear distances: either millimetres or inches. Syntax RobotObject.Units = unitsType unitsType = RobotObject.Units This property has the following part: Part unitsType Description An enumeration value indicating or specifying the unit type: utMetric: millimetres (default for F3 arm) utEnglish: inches (default for all other arms)

Remarks You cannot use a CRSLocation object with world coordinate properties specified in millimetres when you have set the Units property to inches, and vice versa.

ActiveRobot User Guide: CRSRobot

4-119

CRSRobot: CRSRobot Properties

Robot Information
You get general robot system information from the following properties: Property HomingSwitchOffset MachineAxes ProductType RobotType ServerProtocol ServerVersion TransformAxes VersionString Purpose Gets the offset of the homing switch from the calibration position of the specified axis Gets the number of axes in the robot arm only Gets the robot arms product type code Gets the robot type code Gets the server protocol version Gets the server version Gets the number of robot arm and track axes A string value indicating the version of the motion control engine software

4-120

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

HomingSwitchOffset
The HomingSwitchOffset property gets the offset of the homing switch from the calibration position of the specified axis. Syntax hsOffset = RobotObject.HomingSwitchOffset This property has the following part: Part hsOffset See Also Method Calibrate CalibrateZeroCross Home HomeZeroCross Zero Purpose Calibrates the specified axis Calibrates the specified axis at the next zero pulse of the axiss encoder Homes the specified axis or axes Homes the specified axis by seeking the zero cross position Sets all the current motor position registers to zero Description A long value indicating in encoder pulses the offset

ActiveRobot User Guide: CRSRobot

4-121

CRSRobot: CRSRobot Properties

MachineAxes
The MachineAxes property gets the number of axes in the robot arm only. Syntax armAxes = RobotObject.MachineAxes This property has the following part: Part armAxes See Also Property TotalAxes TransformAxes Purpose Gets or sets the total number of axes on the robot system Gets the number of robot arm and track axes Description A long value indicating the number of axes

4-122

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ProductType
The ProductType gets the robot arms product type code. Syntax pType = RobotObject.ProductType This property has the following part: Part pType Description An enumeration value indicating the product type, as follows: proM4Series: A465 or T475 proFSeries: F3 or F3t proM1ASeries: A255, T265, CataLyst-3, CataLyst-5, or CataLyst-T

See Also Property RobotType Purpose Gets the robot type code

ActiveRobot User Guide: CRSRobot

4-123

CRSRobot: CRSRobot Properties

RobotType
The RobotType property gets the robot type code. Syntax rType = RobotObject.RobotType This property has the following part: Part rType Description An enumeration value indicating the robot type, as follows: robM4: A465 or T475 robF3: F3 or F3t robM1A: A255 or T265 robCAT3: CataLyst-3 robCAT4: CataLyst-4 robCAT5: CataLyst-5 or CataLyst-T

See Also Property ProductType Purpose Gets the robot arms product type code

4-124

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ServerProtocol
The ServerProtocol property gets the server protocol version. Syntax sProtocol = RobotObject.ServerProtocol This property has the following part: Part sProtocol Remarks The upper 16 bits of the return value is the major version code; the lower 16 bits is the minor version code. See Also Property ServerVersion Purpose Gets the server version Description A long value indicating the server protocol version

ActiveRobot User Guide: CRSRobot

4-125

CRSRobot: CRSRobot Properties

ServerVersion
The ServerVersion property gets the server version. Syntax sVersion = RobotObject.ServerVersion This property has the following part: Part sVersion Remarks The upper 16 bits of the return value is the major version code; the lower 16 bits is the minor version code. See Also Property ServerProtocol Purpose Gets the server protocol version Description A long value indicating the server version

4-126

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

TransformAxes
The TransformAxes property gets the number of robot arm and track axes. Syntax tAxes = RobotObject.TransformAxes This property has the following part: Part tAxes Remarks If the robot system has no track, then the value of the TransformAxes property is equal to that of the MachineAxes property; if there is a track, the value of the TransformAxes property is one higher than the MachineAxes property. See Also Property MachineAxes TransformAxes Purpose Gets the number of axes in the robot arm only Gets the number of robot arm and track axes Description A long value indicating the number of axes

ActiveRobot User Guide: CRSRobot

4-127

CRSRobot: CRSRobot Properties

VersionString
The VersionString property gets the motion control engine software version string. Syntax mceVersion = RobotObject.VersionString This property has the following part: Part mceVersion Description A string value indicating the version of the motion control engine software

4-128

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Robot Mode Control


You get or set robot system operational modes using the following properties: Property AllowArmPower BlendMotion Purpose Sets the enabled status of the arm power switch Gets or sets the motion blending mode

TrapezoidalProfileEnable Sets the enabled status of trapezoidal motion profiles TriggerEnable Sets whether triggers are enabled or disabled

ActiveRobot User Guide: CRSRobot

4-129

CRSRobot: CRSRobot Properties

AllowArmPower
The AllowArmPower property sets the enabled status of the arm power switch. Syntax RobotObject.AllowArmPower = armpowerstatus This property has the following parts: Part armpowerstatus Description A boolean value specifying the enabled status of the arm power switch: True: enabled False: disabled (no power to arm)

Remarks When you set the AllowArmPower property to False, you cut arm power. When you set it to True, you enable the operator to use the switch to control arm power.

4-130

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

BlendMotion
The BlendMotion property gets or sets the motion blending mode. Syntax RobotObject.BlendMotion = motionBlendmode motionBlendmode = RobotObject.BlendMotion This property has the following part: Part motionBlendmode Description A boolean value indicating or specifying the motion blend mode: True: motion blending enabled False: motion blending disabled

Remarks In BlendMotion mode (known as online mode in RAPL-3), the motion engine enqueues as many as eight motions. The BlendMotion property must be set to True before using any straight-line motion methods, such as MoveStraight or JogWorldStraight. See Also Property LinearAcceleration LinearSpeed LinearJerk Purpose Gets or sets the linear acceleration for straight-line moves performed using motion blending Gets or sets the linear speed for straight-line moves performed using motion blending Gets or sets the allowable rate of change of acceleration for arm straight-line motion and the motion of attached linear axes Gets or sets the maximum rotational acceleration for straight-line moves performed using motion blending Gets or sets the maximum rotational speed for straight-line moves performed using motion blending

RotationalAcceleration

RotationalSpeed

ActiveRobot User Guide: CRSRobot

4-131

CRSRobot: CRSRobot Properties

TrapezoidalProfileEnable
The TrapezoidalProfileEnable property sets the enabled status of trapezoidal motion profiles. Syntax RobotObject.TrapezoidalProfileEnable = trapProfileStatus This property has the following part: Part trapProfileStatus Description A boolean value specifying the enabled status of trapezoidal motion profiles, as follows: True: enabled False: disabled

Remarks Trapezoidal motion profiles permit the arm to move more quickly, but at a cost of reduced positional accuracy. You typically enable them when performing motions with long trajectories, such as track motions.

4-132

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

TriggerEnable
The TriggerEnable property sets whether triggers are enabled or disabled. Syntax RobotObject.Units = triggersStatus This property has the following part: Part triggersStatus Description A boolean value specifying the triggers status: True: enabled False: disabled

Remarks You typically use the TriggerEnable property to disable triggers while finetuning a continous path application and enabling them once the fine-tuning is complete. See Also Method CTPath CTPathGo Purpose Creates and initializes a CRSPath object Runs the specified path

ActiveRobot User Guide: CRSRobot

4-133

CRSRobot: CRSRobot Properties

Blended Motion Control


If you have CROS v3.1 or higher installed on the controller, you can control blended motion using the following properties: Property LinearBlendRadius MaxAgeInQueue Purpose Gets or sets the radius for blending segments of straight-line motion Gets or sets the maximum time the first motion command waits in the motion queue before the motion engine starts planning how to blend it Gets or sets whether the motion engine is permitted to delete locations when moving the arm in blended motion among a series of locations Gets or sets the radius for blending between arcs of joint-interpolated motion

PointDeletion

RotationalBlendRadius

Note:

These properties are valid only for CROS 3.1 and higher, and when blended motion is enabled (see the property BlendMotion on page 4131).

4-134

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

LinearBlendRadius
The LinearBlendRadius property gets or sets the radius for blending segments of straight-line motion. Syntax RobotObject.LinearBlendRadius = lBlendRadius lBlendRadius = RobotObject.LinearBlendRadius This property has the following parts: Part lBlendradius Description A float value specifying the radius in the configured linear units (default is 2 in. (50.8 mm))

Remarks When moving from one location to a second location in blended motion mode, the path the robots tool center point (TCP) follows will remain straight until it lies within the specified radius of the second location. As the TCP moves to a third location, the path will become straight again by the specified distance from the second location.
Note:

This property is only valid when CROS 3.1 or higher is installed on the controller.

See Also Property MaxAgeInQueue Purpose Gets or sets the maximum time the first motion command waits in the motion queue before the motion engine starts planning how to blend it Gets or sets whether the motion engine is permitted to delete locations when moving the arm in blended motion among a series of locations Gets or sets the radius for blending between arcs of joint-interpolated motion

PointDeletion

RotationalBlendRadius

ActiveRobot User Guide: CRSRobot

4-135

CRSRobot: CRSRobot Properties

MaxAgeInQueue
The MaxAgeInQueue property gets or sets the maximum time the first motion command waits in the motion queue before the motion engine starts planning how to blend it with the other motion commands in the queue. Syntax RobotObject.MaxAgeInQueue = maxQtime maxQtime = RobotObject.MaxAgeInQueue This property has the following part: Part maxQtime Description A long value indicating or specifying the maximum time in msec (default is 50 msec)

Remarks For the motion engine to plan efficient blended motions, several motion commands must be in the motion queue. The motion engine only begins planning motions when it receives a Finish command or when it detects that the first motion command has been in the motion queue longer than the period defined in the MaxAgeInQueue property. Increasing this period may give smoother, better blended motions. Setting it to 1 msec will result in very choppy stop-to-stop motions. Applications that require extensive use of blended motion (such as dispensing applications or those requiring smooth handling of delicate payloads) may benefit by significantly increasing the default value of 50 msec for this property.
Note:

This property is only valid when CROS 3.1 or higher is installed on the controller.

See Also Property LinearBlendRadius PointDeletion Purpose Gets or sets the radius for blending segments of straight-line motion Gets or sets whether the motion engine is permitted to delete locations when moving the arm in blended motion among a series of locations Gets or sets the radius for blending between arcs of joint-interpolated motion

RotationalBlendRadius

4-136

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

PointDeletion
The PointDeletion property gets or sets whether the motion engine is permitted to skip some locations when moving the arm in blended motion among a series of locations. Syntax pDeletion = RobotObject.PointDeletion RobotObject.PointDeletion = pDeletion This property has the following part: Part pDeletion Description A boolean value specifying or indicating the status of point deletion: True: permitted False: not permitted (default)

Remarks Some adjacent locations in a blended motion path might be so close together as to fall within each others blend radius. Forcing the motion engine to include all of these adjacent locations in the path it plans might result in the robot slowing down as it moves through these locations. Setting the PointDeletion property to True permits the motion engine to skip a location that lies within an adjacent locations blend radius, speeding the motion of the robot along the path.
Note:

This property is only valid when CROS 3.1 or higher is installed on the controller.

See Also Property LinearBlendRadius MaxAgeInQueue Purpose Gets or sets the radius for blending segments of straight-line motion Gets or sets the maximum time the first motion command waits in the motion queue before the motion engine starts planning how to blend it Gets or sets the radius for blending between arcs of joint-interpolated motion

RotationalBlendRadius

ActiveRobot User Guide: CRSRobot

4-137

CRSRobot: CRSRobot Properties

RotationalBlendRadius
The RotationalBlendRadius property gets or sets the radius for blending between arcs of joint-interpolated motion. Syntax RobotObject.RotationalBlendRadius = rBlendRadius rBlendRadius = RobotObject.RotationalBlendRadius This property has the following parts: Part rBlendradius Description A float value specifying the radius in degrees (default is 20 degrees)

Remarks When moving from one location to a second location using joint-interpolated motion, the motion engine will rotate each joint of the arm to within the specified radius of the second locations joint positions before blending the joint rotations to move to a third location.
Note:

This property is only valid when CROS 3.1 or higher is installed on the controller.

See Also Property LinearBlendRadius MaxAgeInQueue Purpose Gets or sets the radius for blending segments of straight-line motion Gets or sets the maximum time the first motion command waits in the motion queue before the motion engine starts planning how to blend it Gets or sets whether the motion engine is permitted to delete locations when moving the arm in blended motion among a series of locations

PointDeletion

4-138

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Robot Selection
You set which physical robot system you are controlling with the following property: Property RobotInUse Purpose Gets or sets the robot system currently being communicated with

ActiveRobot User Guide: CRSRobot

4-139

CRSRobot: CRSRobot Properties

RobotInUse
The RobotInUse property gets or sets the robot system currently being communicated with. Syntax RobotObject.RobotInUse = currentRobot currentRobot = RobotObject.RobotInUse This property has the following part: Part currentRobot Description A long value indicating or specifying the ID of the robot system (a value from 0 to 7)

Remarks The value of the RobotInUse property corresponds to the IDs defined in the ActiveRobot Configuration program. If you do not set RobotInUse, it will have a value of the ID of the default robot system.

4-140

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Robot Status
You get or set the current status of the robot system with the following methods: Property AsynchError BoardTemperature Finished Homed IsPowered MotorLocation Odometer ProcessID WorldLocation Purpose Gets the latest asynchronous error code from the controller Gets the temperature of the robot controllers main board Gets whether the arm has finished moving Gets whether the robot system is homed Gets whether the arm is powered Gets the current arm location as a motor location Gets the total number of seconds that robot arm power has been on Gets the ID associated with this CRSRobot object Gets the current arm location as a world location

ActiveRobot User Guide: CRSRobot

4-141

CRSRobot: CRSRobot Properties

AsynchError
The AsynchError property gets the latest asynchronous error code from the controller. Syntax asychErr = RobotObject.AsynchError This property has the following part: Part asynchErr Description An enumeration value indicating the error code, as follows: ecNoError ecGeneric ecNoSuchFile ecNoSuchProcess ecInterrupted ecIOError ecNoDevice ecTooBig ecNotExecutable ecBadFileDescriptor ecNoChildren ecPermissionDenied ecOutOfMemory ecAccessDenied ecBusy ecFileExists ecOpNotSupportedByDevice ecNotADirectory ecIsADirectory ecInvalidArgument ecTooManyFilesS ecTooManyFilesP ecIOCTLNotSupported ecFileBusy

4-142

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Part

Description ecDeviceFull ecIllegalOnFifoOrSocket ecOutOfRange ecTemporarilyUnavailable ecTimedOut ecNotASocket ecNoServer ecNoClient ecDeviceIsBeingReset ecDirectoryNotEmpty ecOperationNotSupported ecIllegalSLMove ecIllegalOperand ecForceLockedOut ecJointLimitExceeded ecOutOfReach ecAxisIsLimp ecNotHomed ecPathError ecPowerOff ecGripTypeNotSet ecIllegalGripType ecAxisIsLocked ecMotionError ecAbortInProgress ecAxisOverspeed ecAxisRunaway ecCollision

Remarks If there is no current asynchronous error, then this property gets a value of ecNoError. Asynchronous errors occur when events related to robot motion occur between motion commands. For example, arm power going off (because an Estop was pressed) and collisions will gie rise to asynchronous errors. After an asynchronous error has been dealt with, the controlling CRSRobot object should invoke the ClearError method before proceeding. See Also Method ClearError Purpose Clears persistent error bits in the controller DSP

ActiveRobot User Guide: CRSRobot

4-143

CRSRobot: CRSRobot Properties

BoardTemperature
The BoardTemperature property gets the temperature of the robot controllers main board. Syntax temperature = RobotObject.BoardTemperature This property has the following part: Part temperature Description A float value indicating the temperature in degrees Celsius

4-144

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Finished
The Finished property gets whether the arm has finished moving. Syntax armFinishedState = RobotObject.Finished[(finishTolerance)] This property has the following parts: Part finishTolerance Description An optional enumeration value specifying the distance the arm can move before it can be considered to have finished moving: ftLoose: 100 motor pulses (default value) ftTight: five motor pulses A boolean value indicating the arm motion status: True: finished moving False: still moving

armFinishedState

See Also Method Finish GripperFinish Purpose Waits for the arm to finish moving Waits for the gripper to finish moving

Property GripperFinished

Purpose Gets whether the gripper has finished moving

ActiveRobot User Guide: CRSRobot

4-145

CRSRobot: CRSRobot Properties

Homed
The Homed property gets whether the robot is homed. Syntax armHomedState = RobotObject.Homed This property has the following part: Part armHomedState Description A boolean value indicating the arm motion status: True: homed False: not homed

See Also Method Home HomeInPlace HomeZeroCross Ready Purpose Homes the arm Homes the specified axis or axes of an A255 arm based on the arms position at shutdown Moves the arm to the ready position Moves the arm to the ready position

Property

Purpose

HomingSwitchOffset Homes the arm

4-146

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

IsAborted
The IsAborted property gets whether this CRSRobot object has received an abort signal from the robot system. Syntax abortState = RobotObject.IsAborted This property has the following part: Part abortState Description A boolean value indicating the abort status: True: aborted False: not aborted

Remarks The robot system signals an abort when the following conditions occur: The E-Stop button is hit, and arm power shuts off. A path error occurs. Another CRSRobot object invokes the Abort method.

The robot system does not send an abort signal when the Stop method has been invoked. See Also Method ClearAbort Abort Purpose Clears a previously-invoked Abort method Halts robot motion and signals the controlling process

ActiveRobot User Guide: CRSRobot

4-147

CRSRobot: CRSRobot Properties

IsPowered
The IsPowered property gets whether the arm has power and is ready to respond to motion commands. Syntax armPowerState = RobotObject.IsPowered This property has the following part: Part armPowerState Description A boolean value indicating the arm power status: True: powered False: not powered

See Also Property AllowArmPower Purpose Sets the enabled status of the arm power switch

4-148

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

MotorLocation
The MotorLocation property gets the current arm location as a motor location. Syntax Set location = RobotObject.MotorLocation[(positionType)] This property has the following parts: Part positionType Description An optional enumeration value specifying the arm position to get: ptActual: the actual arm position ptCommanded: the commanded arm position ptEndpoint: the arm endpoint position A CRSLocation object indicating the arm location

location See Also Property WorldLocation

Purpose Gets the current arm location as a world location

ActiveRobot User Guide: CRSRobot

4-149

CRSRobot: CRSRobot Properties

Odometer
The Odometer property gets the total number of seconds that robot arm power has been on. Syntax armPowerElapsed = RobotObject.Odometer This property has the following part: Part armPowerElapsed Description A long value indicating the number of seconds

4-150

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

ProcessID
The ProcessID property gets the ID associated with this CRSRobot object. Syntax pid = RobotObject.ProcessID This property has the following part: Part pid See Also Method ControlGive Purpose Assigns point of control to the specified process Description A long value indicating the process ID

ActiveRobot User Guide: CRSRobot

4-151

CRSRobot: CRSRobot Properties

WorldLocation
The WorldLocation property gets the current arm location as a world location. Syntax Set location = RobotObject.WorldLocation[(positionType)] This property has the following parts: Part positionType Description An optional enumeration value specifying the arm position to get: ptActual: the actual arm position ptCommanded: the commanded arm position ptEndpoint: the arm endpoint position A CRSLocation object indicating the arm location

location See Also Property MotorLocation

Purpose Gets the current arm location as a world location

4-152

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

Utility
You convert between different location types with the following properties: Property JointToMotor JointToWorld MotorToWorld WorldToMotor Purpose Gets a motor location from a set of joint positions Gets a world location from a set of joint positions Gets a world location from a motor location Gets a motor location from a world location

ActiveRobot User Guide: CRSRobot

4-153

CRSRobot: CRSRobot Properties

JointToMotor
The JointToMotor property gets a motor location from a set of joint positions. Syntax Set plocation = RobotObject.JointToMotor(j1,j2,j3,j4,j5,j6,j7,j8) This property has the following parts: Part j1 j2 j3 j4 j5 j6 j7 j8 plocation See Also Property JointToWorld Purpose Gets a world location from a set of joint positions Description A float value specifying the position in degrees of joint one A float value specifying the position in degrees of joint two A float value specifying the position in degrees of joint three A float value specifying the position in degrees of joint four A float value specifying the position in degrees of joint five A float value specifying the position in degrees of joint six A float value specifying the position in degrees of joint seven A float value specifying the position in degrees of joint eight A CRSLocation object indicating a motor location

4-154

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

JointToWorld
The JointToWorld property gets a world location from a set of joint positions. Syntax Set clocation = RobotObject.JointToWorld(j1,j2,j3,j4,j5,j6,j7,j8) This property has the following parts: Part j1 j2 j3 j4 j5 j6 j7 j8 clocation See Also Property JointToMotor Purpose Gets a motor location from a set of joint positions Description A float value specifying the position in degrees of joint one A float value specifying the position in degrees of joint two A float value specifying the position in degrees of joint three A float value specifying the position in degrees of joint four A float value specifying the position in degrees of joint five A float value specifying the position in degrees of joint six A float value specifying the position in degrees of joint seven A float value specifying the position in degrees of joint eight A CRSLocation object indicating a world location

ActiveRobot User Guide: CRSRobot

4-155

CRSRobot: CRSRobot Properties

MotorToWorld
The MotorToWorld property gets aworld world location from a motor location. Syntax Set worldLocation = RobotObject.MotorToWorld(motorLocation) This property has the following parts: Part motorLocation worldLocation See Also Property WorldToMotor Purpose Gets a motor location from a world location Description A CRSLocation object specifying a motor location A CRSLocation object indicating a world location

4-156

ActiveRobot User Guide: CRSRobot

CRSRobot: CRSRobot Properties

WorldToMotor
The WorldToMotor property gets a motor location from a world location. Syntax Set motorLocation = RobotObject.WorldToMotor(worldLocation) This property has the following parts: Part motorLocation worldLocation Remarks World locations do not necessarily map uniquely into motor locations; there is more than one robot configuration for many TCP locations. The conversion done by the WorldToMotor property is guided by the current requested stance. See Also Property MotorToWorld Stance Purpose Gets a world location from a motor location Gets or sets the robot stance Description A CRSLocation object specifying a motor location A CRSLocation object indicating a world location

ActiveRobot User Guide: CRSRobot

4-157

CRSRobot: CRSRobot Properties

4-158

ActiveRobot User Guide: CRSRobot

CRSV3File

The CRSV3File object class provide access to v3 files, files in which you can store and retrieve robot locations and other teachable variables. Typically, your application takes the following steps:
1

Soon after it starts, it creates an instance of a CRSV3File object and invokes its Open method to open the v3 file containing the robot application locations and teachable variables. It uses the Location and Value properties to retrieve the locations and variables from the v3 file. It invokes the Close method to close the v3 file.

If the application is not aware in advance of the variable names and types stored in the v3 file, it can invoke the GetNextName and VariableInfo methods to determine them.
Note:

The name V3fileObject has been used in the following method and property descriptions as a placeholder for the name of the CRSV3File object you create to access them.

This chapter covers the following topics: CRSV3File Methods on page 5-2, which describes in detail CRSV3File methods CRSV3File Properties on page 5-10, which describes in detail CRSV3File methods

ActiveRobot User Guide: CRSV3File

51

CRSV3File: CRSV3File Methods

CRSV3File Methods
You manage v3 files using the following methods: Method Open Close VariableInfo Create Delete Rewind GetNextName Purpose Opens, creates, or resets the length of the specified v3 file Closes the specified v3 file Extracts information about the specified location or variable Creates a new location or variable Deletes the specified location or variable Moves the location/variable access pointer to the beginning of the v3 file Retrieves the name of the location or variable at the current pointer position in the v3 file

52

ActiveRobot User Guide: CRSV3File

CRSV3File: CRSV3File Methods

Open
The Open method opens, creates, or resets the length of the specified v3 file. Syntax V3fileObject.Open v3filename[, flags] This method has the following parts: Part v3filename flags Description An input string value specifying the path and full name of the v3 file to open An optional enumeration value consisting of one of the following options: v3fOpen: Open an existing v3 file v3fCreate: Create a new v3 file v3fTruncate: Reset the length of the v3 file to zero v3fReadOnly: Opens a v3 file for reading only

Remarks You cannot use the v3fCreate or v3fTruncate flags with the v3fReadOnly flag. See Also Property Close Purpose Closes the specified v3 file

ActiveRobot User Guide: CRSV3File

53

CRSV3File: CRSV3File Methods

Close
The Close method closes the currently-open v3 file. Syntax V3fileObject.Close This method has no arguments. See Also Property Open Purpose Opens, creates, or resets the length of the specified v3 file

54

ActiveRobot User Guide: CRSV3File

CRSV3File: CRSV3File Methods

VariableInfo
The VariableInfo method extracts information about the specified location or variable from the CRSV3File object. Syntax V3fileObject.VariableInfo locvarName, dataType, dim1, dim2, flags This method has the following parts: Part locvarName dataType Description An input string value specifying the name of the location or variable to extract An output enumeration value indicating the data type of the location or variable: v3tLong: long variable v3tFloat: float variable v3tString: string variable v3tMotorLocation: a motor location (ploc) v3tWorldLocation: a world location (cloc) An output long value specifying the size of the first dimension of a location or variable array An output long value specifying the size of the second dimension of a location or variable array An output enumeration value consisting of the following flag: v3vTaught: location or variable initialized (taught)

dim1 dim2 flags

Remarks The flag value is actually a bit vector; at present only the v3vTaught bit is significant. See Also Property Create Delete Purpose Creates the specified location or variable Deletes the specified location or variable

ActiveRobot User Guide: CRSV3File

55

CRSV3File: CRSV3File Methods

Create
The Create method creates a new location or variable. Syntax V3fileObject.Create locvarName, dataType[, dim1, dim2] This method has the following parts: Part locvarName dataType Description An input string value specifying the name of the location or variable to create An enumeration value indicating the data type of the location or variable: v3tLong: long variable v3tFloat: float variable v3tString: string variable v3tMotorLocation: a motor location (ploc) v3tWorldLocation: a world location (cloc) An optional long value specifying the size of the first dimension of a location or variable array An optional long value specifying the size of the second dimension of a location or variable array

dim1 dim2

See Also Property VariableInfo Delete Purpose Obtains information about the specified location or variable Deletes the specified location or variable

56

ActiveRobot User Guide: CRSV3File

CRSV3File: CRSV3File Methods

Delete
The Delete method deletes the specified location or variable. Syntax V3fileObject.Delete locvarName This method has the following part: Part locvarName Description An input string value specifying the name of the location or variable to delete

See Also Property VariableInfo Create Purpose Obtains information about the specified location or variable Creates the specified location or variable

ActiveRobot User Guide: CRSV3File

57

CRSV3File: CRSV3File Methods

Rewind
The Rewind method moves the location/variable access pointer to the beginning of the v3 file. You use the GetNextName method to retrieve the name of the location or variable at the current pointer position. Syntax V3fileObject.Rewind This method has no arguments. See Also Property GetNextName Purpose Gets the name of the next location or variable in the v3 file

58

ActiveRobot User Guide: CRSV3File

CRSV3File: CRSV3File Methods

GetNextName
The GetNextName method retrieves the name of the location or variable at the current pointer position in the v3 file. You use the Rewind method to move the pointer to the beginning of the file. Syntax V3fileObject.GetNextName locvarName This method has the following part: Part locvarName Description An output string value indicating the name of the next location or variable

See Also Property Rewind Purpose Moves the pointer to the start of the v3 file

ActiveRobot User Guide: CRSV3File

59

CRSV3File: CRSV3File Properties

CRSV3File Properties
You access locations or variables in the v3 file using the following properties: Property Location Value Purpose Gets or sets a location or variable in the v3 file Gets or sets the value of the specified variable in the v3 file

510

ActiveRobot User Guide: CRSV3File

CRSV3File: CRSV3File Properties

Location
The Location property gets or sets a location or variable in the v3 file. Syntax Set V3fileObject.Location(locvarName[,dim1,dim2]) = locationObject Set locationObject = V3fileObject.Location(locvarName[,dim1,dim2]) This method has the following parts: Part locationObject locvarName dim1 dim2 Description A CRSLocation object specifying or indicating the location A string value specifying the name of the location or variable An optional long value specifying the index into the first dimension of the location or variable array An optional long value specifying the index into the second dimension of the location or variable array

See Also Property VariableInfo Create Delete Purpose Obtains information about the specified location or variable Creates the specified location or variable Deletes the specified location or variable

ActiveRobot User Guide: CRSV3File

511

CRSV3File: CRSV3File Properties

Value
The Value method gets or sets the value of the specified variable in the v3 file. Syntax V3fileObject.Value(locvarName) = varvalue varvalue = V3fileObject.Value (locvarName) This property has the following parts: Part locvarName varvalue Description A string value specifying the name of the location or variable A variant value indicating or specifying the value of the location or variable

Remarks If the variable is an array, then varvalue is an array of the appropriate type of values.

512

ActiveRobot User Guide: CRSV3File

CRSLocation

The properties of the CRSLocation object define world and precisian locations in the robot workspace. Using the CRSLocation Properties on page 6-2, you can access the individual elements of the location, find out what type it is, and modify it.
Note:

The name LocationObject has been used in the following method and property descriptions as a placeholder for the name of the CRSLocation object you create to access them.

ActiveRobot User Guide: CRSLocation

61

CRSLocation: CRSLocation Properties

CRSLocation Properties
You get or set a CRSLocation objects attributes using the following properties: Property IsMotor IsWorld x y z zrot yrot xrot world motor Value IsValid IsMetric Purpose Gets whether this location uses motor coordinates Gets whether this locations uses world coordinates Gets or sets the x coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location Gets or sets the world coordinate of the specified world axis Gets or sets the position of the specified motor Gets or sets the coordinate data of this location Gets whether the location is valid Gets whether the locations coordinate data is in metric units

62

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

IsMotor
The IsMotor property gets whether this location uses motor coordinates. Syntax locationType = LocationObject.IsMotor This property has the following part: Part locationType Description A boolean value indicating the type of location: True: motor False: not motor

See Also Property IsWorld Purpose Gets whether this location uses world coordinates

ActiveRobot User Guide: CRSLocation

63

CRSLocation: CRSLocation Properties

IsWorld
The IsWorld property gets whether this location uses world coordinates. Syntax locationType = LocationObject.IsWorld This property has the following part: Part locationType Description A boolean value indicating the type of location: True: world False: not world

See Also Property IsMotor Purpose Gets whether this location uses motor coordinates

64

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

x
The x property gets or sets the x coordinate in a world location. Syntax LocationObject.x = locationX locationX = LocationObject.x This property has the following part: Part locationX Description A float value indicating or specifying the x coordinate in configured linear units

See Also Property y z zrot yrot xrot world Purpose Gets or sets the y coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location Gets or sets the world coordinate of the specified world axis

ActiveRobot User Guide: CRSLocation

65

CRSLocation: CRSLocation Properties

y
The y property gets or sets the y coordinate in a world location. Syntax LocationObject.y = locationY locationY = LocationObject.y This property has the following part: Part locationY Description A float value indicating or specifying the y coordinate in configured linear units

See Also Property x z zrot yrot xrot world Purpose Gets or sets the x coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location Gets or sets the world coordinate of the specified world axis

66

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

z
The z property gets or sets the z coordinate in a world location. Syntax LocationObject.z = locationZ locationZ = LocationObject.z This property has the following part: Part locationZ Description A float value indicating or specifying the z coordinate in configured linear units

See Also Property x y zrot yrot xrot world Purpose Gets or sets the x coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location Gets or sets the world coordinate of the specified world axis

ActiveRobot User Guide: CRSLocation

67

CRSLocation: CRSLocation Properties

zrot
The zrot property gets or sets the zrot coordinate in a world location. Syntax LocationObject.zrot = locationZrot locationZrot = LocationObject.zrot This property has the following part: Part locationZrot Description A float value indicating or specifying the zrot coordinate in configured linear units

See Also Property x y z yrot xrot world Purpose Gets or sets the x coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location Gets or sets the world coordinate of the specified world axis

68

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

yrot
The yrot property gets or sets the yrot coordinate in a world location. Syntax LocationObject.xrot = locationYrot locationYrot = LocationObject.yrot This property has the following part: Part locationYrot Description A float value indicating or specifying the yrot coordinate in configured linear units

See Also Property x z y zrot xrot world Purpose Gets or sets the x coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the xrot coordinate of this world location Gets or sets the world coordinate of the specified world axis

ActiveRobot User Guide: CRSLocation

69

CRSLocation: CRSLocation Properties

xrot
The xrot property gets or sets the xrot coordinate in a world location. Syntax LocationObject.xrot = locationXrot locationXrot = LocationObject.xrot This property has the following part: Part locationXrot Description A float value indicating or specifying the xrot coordinate in configured linear units

See Also Property x y z zrot yrot world Purpose Gets or sets the x coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the world coordinate of the specified world axis

610

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

world
The world property gets or sets the world coordinate for the specified world axis. Syntax LocationObject.world(axis) = cartesianCoordinate cartesianCoordinate = LocationObject.world(axis) This property has the following part: Part axis Description A long value from one to eight specifying the world axis on which the coordinate lies

cartesianCoordinate A float value indicating or specifying the coordinate in configured linear units See Also Property x y z zrot yrot xrot Purpose Gets or sets the x coordinate of this world location Gets or sets the y coordinate of this world location Gets or sets the z coordinate of this world location Gets or sets the zrot coordinate of this world location Gets or sets the yrot coordinate of this world location Gets or sets the xrot coordinate of this world location

ActiveRobot User Guide: CRSLocation

611

CRSLocation: CRSLocation Properties

motor
The motor property gets or sets the position for the specified motor. Syntax LocationObject.motor(axis) = motorNpulses motorNpulses = LocationObject.motor(axis) This property has the following part: Part axis motorNpulses Description A long value from one to eight specifying the motor for which to get or set the position A long value indicating or specifying the motor position in pulses

612

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

Value
The Value property gets or sets this locations coordinate data. Syntax LocationObject.Value = coordinates coordinates = LocationObject.Value This property has the following part: Part coordinates Description A string value indicating or specifying the coordinate data

Remarks This property exists primarily to enable you to copy the coordinate data from one CRSLocation object to another. Visual Basic does not permit you to simply assign the value of one entire object to another; you can only assign the value of one fundamental data type to another. For example, the line
set locA = locB

where locA and locB are CRSLocation objects, does not assign the value of all locBs properties to locAs properties. Instead, it destroys the object referred to by locA and simply sets locA to refer to the locB object. To assign the coordinate data of the locB object to the locA object, therefore, you must write the following line of code:
locA.Value = locB.Value Note:

The string stored in the Value property is in binary form; do not attempt to treat it as conventional ASCII string text.

ActiveRobot User Guide: CRSLocation

613

CRSLocation: CRSLocation Properties

IsValid
The IsValid property gets whether the location is valid. The robot system can only move to valid locations. Syntax validStatus = LocationObject.IsValid This property has the following part: Part validStatus Description A boolean value indicating whether the location is valid: True: location valid False: location not valid

Remarks Valid locations are those that have been taught or that have been derived from a taught location.

614

ActiveRobot User Guide: CRSLocation

CRSLocation: CRSLocation Properties

IsMetric
The IsMetric property gets whether the locations coordinates use metric units. Syntax unitsType = LocationObject.IsMetric This property has the following part: Part unitsType Description A boolean value indicating whether the location uses metric units, as follows: True: metric units used False: English units used

ActiveRobot User Guide: CRSLocation

615

CRSLocation: CRSLocation Properties

616

ActiveRobot User Guide: CRSLocation

CRSPath

CRSPath objects are collection objects containing pairs of CRSLocation objects and their associated trigger values. CRSPath objects are passed as arguments to the CRSRobot CTPath method.
Note:

The name PathObject has been used in the following method and property descriptions as a placeholder for the name of the CRSPath object you create to access them.

This chapter covers the following topics: CRSPath Methods on page 7-2, which describes in detail the CRSPath methods CRSPath Properties on page 7-5, which describes in detail the CRSPath properties

ActiveRobot User Guide: CRSPath

71

CRSPath: CRSPath Methods

CRSPath Methods
You manage the collection of locations and triggers that make up a path using the following methods: Method Add Remove Purpose Adds the specified location/trigger member to the CRSPath collection Deletes the specified location/trigger member from the CRSPath collection

72

ActiveRobot User Guide: CRSPath

CRSPath: CRSPath Methods

Add
The Add method adds the specified location/trigger member to the CRSPath collection. Syntax PathObject.Add location[, trigger, before, after] This method has the following parts: Part location trigger before after Description A CRSLocation object specifying the location to add An optional long value specifying the trigger associated with this location An optional long value specifying the index of the location before which to add this location An optional long value specifying the index of the location after which to add this location

See Also Method Remove Purpose Deletes the specified location/trigger member from the CRSPath collection

ActiveRobot User Guide: CRSPath

73

CRSPath: CRSPath Methods

Remove
The Remove method deletes the specified location/trigger member from the CRSPath collection. Syntax PathObject.Remove locationIndex This method has the following parts: Part locationIndex Description A long value specifying the index of the location/trigger member to remove

See Also Method Add Purpose Adds the specified location/trigger member to the CRSPath collection

74

ActiveRobot User Guide: CRSPath

CRSPath: CRSPath Properties

CRSPath Properties
You access the values of the locations and triggers in the CTPath object using the following properties: Property Count Item Trigger Purpose Gets the number of location/trigger members in the CRSPath collection Gets or sets the location component of the specified member of the CRSPath collection Gets or sets the trigger component of the specified member of the CRSPath collection

ActiveRobot User Guide: CRSPath

75

CRSPath: CRSPath Properties

Count
The Count method gets the number of location/trigger members in the CRSPath collection. Syntax pathMembers = PathObject.Count This property has the following part: Part pathMembers Description A long value indicating the number of location/trigger members

76

ActiveRobot User Guide: CRSPath

CRSPath: CRSPath Properties

Item
The Item method gets or sets the location component of the specified member of the CRSPath collection. Syntax Set PathObject.Item(pathMember) = locationObjectN Set locationObjectN = PathObject.Item(pathMember) This property has the following part: Part pathMember locationObjectN Description A long value specifying the index of the CRSPath collection member A CRSLocation object indicating or specifying the location associated with the CRSPath member

See Also Property Trigger Purpose Gets or sets the trigger component of the specified member of the CRSPath collection

ActiveRobot User Guide: CRSPath

77

CRSPath: CRSPath Properties

Trigger
The Trigger method gets or sets the trigger component of the specified member of the CRSPath collection. Syntax PathObject.Trigger(pathMember) = triggerN triggerN = PathObject.Trigger(pathMember) This property has the following part: Part pathMember triggerN See Also Property Item Purpose Gets or sets the location component of the specified member of the CRSPath collection Description A long value specifying the index of the CRSPath collection member A long value indicating or specifying the trigger

78

ActiveRobot User Guide: CRSPath

CRSRemote

The CRSRemote object class includes methods and properties that enable you to access a controllers operating system.
Note:

The name RemoteObject has been used in the following method and property descriptions as a placeholder for the name of the CRSRemote object you create to access them.

This chapter covers the following topics: CRSRemote Methods on page 8-2, which describes in detail the CRSRemote methods CRSRemote Properties on page 8-20, which describes in detail the CRSRemote properties

ActiveRobot User Guide: CRSRemote

81

CRSRemote: CRSRemote Methods

CRSRemote Methods
You interact with the controllers operating system using the following methods: Method AbortFileTransfer CROSVersion Purpose Cancels the current GetFile or PutFile operation Retrieves the major version, minor version and build numbers of the version of CROS running on the robot controller Deletes the specified file on the controller Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory Retrieves information about filesystem space for the filesystem containing the specified object Copies the specified file on the remote controller to the specified file on the host computer Creates the specified directory on the remote controller Pings the remote controller to test communications integrity Copies the specified local file to the specified destination file on the remote controller Deletes an empty directory on the remote controller Launches a program on the remote controller using the specified CROS command line Sends the specified CROS signal to the specified process on the remote controller Initiates a controlled shutdown of the controller Waits for the specified CROS process to complete and retrieves its exit code

Delete DirNext DirRead DirRewind FileSpace GetFile MkDir Ping PutFile RmDir Run SendSignal Shutdown WaitForExitCode

82

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

AbortFileTransfer
The AbortFileTransfer method cancels the current GetFile or PutFile operation. Syntax RemoteObject.AbortFileTransfer This method has no arguments. See Also Method GetFile PutFile Purpose Copies the specified file on the remote controller to the specified file on the host computer Copies the specified local file to the specified destination file on the remote controller

Property PercentComplete

Purpose Gets the progress of the current GetFile or PutFile file transfer

ActiveRobot User Guide: CRSRemote

83

CRSRemote: CRSRemote Methods

CROSVersion
This method retrieves the major version, minor version and build numbers of the version of CROS running on the robot controller. Syntax RemoteObject.CROSVersion Major, Minor, Build This method has the following parts: Part Major Minor Build Description An output long value indicating the major version number An output long value indicating the minor version number An output long value indicating the build version number

84

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

Delete
The Delete method erases the specified file on a remote controller. Syntax RemoteObject.Delete RemoteFile This method has the following parts: Part RemoteFile Description A string value specifying the full path and name of the file to delete

ActiveRobot User Guide: CRSRemote

85

CRSRemote: CRSRemote Methods

DirNext
The DirNext method selects the next entry in the current DirRead directory. Syntax RemoteObject.DirNext This method has no arguments. Remarks When the last entry has been reached, the DirFileName property will contain a null string. See Also Method DirRead DirRewind Purpose Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

Property DirFileName

Purpose Gets the name of the current DirRead entry

86

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

DirRead
The DirRead method retrieves a listing of the contents of the specified controller directory. Syntax RemoteObject.DirRead RemoteDir This method has the following part: Part RemoteDir Description A string value specifying the full path and name of the directory

Remarks Once you have retrieved the directory listing with DirRead, you can get the names and other information about the individual entries in the listing using the DirFileName, DirFileSize, DirFileType, DirFileAttributes, DirFileDate, DirFileIdent, and DirFileLinks properties. You use the DirNext and DirRewind methods to step through the entries. See Also Method DirNext DirRewind Purpose Selects the next entry in the current DirRead directory Selects the first entry in the current DirRead directory

Property DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType

Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry

ActiveRobot User Guide: CRSRemote

87

CRSRemote: CRSRemote Methods

DirRewind
The DirRewind method selects the first entry in the current DirRead directory. Syntax RemoteObject.DirRewind This method has no arguments. See Also Method DirRead DirNext Purpose Retrieves a listing of the contents of the specified controller directory Selects the next entry in the current DirRead directory

88

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

FileSpace
The FileSpace method retrieves information about filesystem space for the filesystem containing the specified object. Syntax RemoteObject.FileSpace Objname, FSType, BlockSize, BlocksFree, BlocksTotal, InodesFree, InodesTotal This method has the following parts: Part Objname FSType Description A string value specifying the name of the object An output enumerated value indicating the type of the filesystem space, as follows: fstMFS: non-volatile memory filesystem fstCFS: CROSnt filesystem fstRFS: remote filesystem fstHFS: host filesystem An output long value indicating the block size of the filesystem An output long value indicating the number of free blocks in the filesystem An output long value indicating the total number of blocks in the filesystem An output long value indicating the number of free inodes in the filesystem An output long value indicating the total number of inodes in the filesystem

BlockSize BlocksFree BlocksTotal InodesFree InodesTotal

ActiveRobot User Guide: CRSRemote

89

CRSRemote: CRSRemote Methods

GetFile
The GetFile method copies the specified file on the remote controller to the specified file on the host computer. Syntax RemoteObject.GetFile LocalDstFile, RemoteSrcFile, Options This method has the following parts: Part LocalDstFile RemoteSrcFile Options Description A string value specifying the path and name of the destination file on the host computer A string value specifying the path and name of the source file on the remote controller An enumerated value specifying the file copy options, as follows: ftoOverWrite: enable overwriting of the destination file ftoNoOverWrite: disable overwriting of the destination file

Remarks If you do not specify a path for the LocalDstFile value, the Getfile method defaults to the applications working directory. See Also Method AbortFileTransfer PutFile Purpose Cancels the current GetFile or PutFile operation Copies the specified local file to the specified destination file on the remote controller

Property PercentComplete

Purpose Gets the progress of the current GetFile or PutFile file transfer

810

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

MkDir
The MkDir method creates the specified directory on the remote controller. Syntax RemoteObject.MkDir RemoteDirName This method has the following part: Part RemoteDirName Description A string value specifying the full path and name of the new directory

See Also Method RmDir Purpose Deletes an empty directory on the remote controller

ActiveRobot User Guide: CRSRemote

811

CRSRemote: CRSRemote Methods

Ping
The Ping method pings the remote controller to test communications integrity. Syntax RemoteObject.Ping This method has no arguments.

812

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

PutFile
The PutFile method copies the specified local file to the specified destination file on the remote controller. Syntax RemoteObject.GetFile LocalSrcFile, RemoteDstFile, Options This method has the following parts: Part LocalSrcFile RemoteDstFile Options Description A string value specifying the path and name of the source file on the host computer A string value specifying the path and name of the destination file on the remote controller An enumerated value specifying the file copy options, as follows: ftoOverWrite: enable overwriting of the destination file ftoNoOverWrite: disable overwriting of the destination file

Remarks If you do not specify a path for the LocalSrcFile value, the PutFile method defaults to the applications working directory. See Also Method AbortFileTransfer GetFile Purpose Cancels the current GetFile or PutFile operation Copies the specified file on the remote controller to the specified file on the host computer

Property PercentComplete

Purpose Gets the progress of the current GetFile or PutFile file transfer

ActiveRobot User Guide: CRSRemote

813

CRSRemote: CRSRemote Methods

RmDir
The RmDir method deletes an empty directory on the remote controller. Syntax RemoteObject.RmDir RemoteDirName This method has the following part: Part RemoteDirName Description A string value specifying the full path and name of the directory to delete

See Also Method MkDir Purpose Creates the specified directory on the remote controller

814

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

Run
The Run method launches a program on the remote controller using the specified CROS command line. Syntax RemoteObject.Run RemoteCmdLine, Options, CROSPid[, StdinFile, StdoutFile, StderrFile] This method has the following parts: Part RemoteCmdLine Options Description An input string value specifying the CROS command line required to launch the program An input enumerated value specifying the standard output and standard error options, as follows: roStdoutAppend: open the file specified in StdoutFile as create/append roStdoutTruncate: open the file specified in StdoutFile as create/truncate roStderrAppend: open the file specified in StderrFile as create/append roStderrTruncate: open the file specified in StderrFile as create/truncate An output long value indicating the CROS process ID of the launched program An optional input string value specifying the name of the file for standard input to the launched program An optional input string value specifying the name of the file for standard output from the launched program An optional input string value specifying the name of the file for standard error output from the launched program

CROSPid StdinFile StdoutFile

StderrFile

Remarks You can specify any file as the standard input/output/error file for the created process, allowing output to be redirected for later retrieval. You can use the WaitForExitCode method to wait for the process to complete. See Also Method SendSignal WaitForExitCode Purpose Sends the specified CROS signal to the specified process on the remote controller Waits for the specified CROS process to complete and retrieves its exit code

ActiveRobot User Guide: CRSRemote

815

CRSRemote: CRSRemote Methods

Property ProcessExists

Purpose Gets whether the specified CROS process exists

816

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

SendSignal
The SendSignal method sends the specified CROS signal to the specified process on the remote controller. Syntax RemoteObject.SetSignal CROSPid, Signal This method has the following parts: Part CROSPid Signal Description A long value specifying the ID of the process to signal An enumerated value specifying the name of the source file on the remote controller: csSIGKILL : kill the process csSIGINT: interrupt the process

Remarks You should only specify a value of csSIGKILL for Signal as a last resort, to stop an errant process. If you want to abort programs, you should specify csSIGINT. See Also Method Run WaitForExitCode Purpose Launches a program on the remote controller using the specified CROS command line Waits for the specified CROS process to complete and retrieves its exit code

Property ProcessExists

Purpose Gets whether the specified CROS process exists

ActiveRobot User Guide: CRSRemote

817

CRSRemote: CRSRemote Methods

Shutdown
The Shutdown method initiates a controlled shutdown of the controller. Syntax RemoteObject.Shutdown This method has no arguments. Remarks Once the controller has shut down, you must release all CRSRemote and CRSRobot objects. Any attempt to use either will cause a communication error.

818

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Methods

WaitForExitCode
The WaitForExitCode method waits for the specified CROS process to complete and retrieves its exit code. Syntax RemoteObject.WaitForExitCode CROSPid, ExitPid, ExitCode, Timeout This method has the following parts: Part CROSPid ExitPid ExitCode Timeout Description An input long value specifying the ID of the CROS process to complete An output long value indicating the ID of the process that completed An output long value indicating the exit code of the completed process An input long value specifying the period in milliseconds to wait before a timeout occurs

Remarks If you set the CROSPid value to -1, the WaitForExitCode method will wait for any child process to complete. See Also Method Run SendSignal GripperCalibrate Purpose Launches a program on the remote controller using the specified CROS command line Sends the specified CROS signal to the specified process on the remote controller Calibrates the gripper by setting travel distance

Property ProcessExists

Purpose Gets whether the specified CROS process exists

ActiveRobot User Guide: CRSRemote

819

CRSRemote: CRSRemote Properties

CRSRemote Properties
You get and/or set controller characteristics using the following properties: Property ControllerDate DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType PercentComplete ProcessExists RobotInUse Purpose Gets or sets the controllers real-time clock Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry Gets the progress of the current GetFile or PutFile file transfer Gets whether the specified CROS process exists Gets or sets the current controller

820

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

ControllerDate
The ControllerDate property gets or sets the controllers real-time clock. Syntax RemoteObject.ControllerDate = CtrlrDate CtrlrDate = RemoteObject.ControllerDate This property has the following part: Part CtrlrDate Description A date value specifying or indicating the current date and time

ActiveRobot User Guide: CRSRemote

821

CRSRemote: CRSRemote Properties

DirFileAttributes
The DirFileAttributes property gets the attributes of the current DirRead entry. Syntax DFAttribs = RemoteObject.DirFileAttributes This property has the following part: Part DFAttribs Description One or more of the following enumeration values indicating the attributes of the current entry: faPFlash: primary flash memory file faSys: system file faRead: reading is allowed faWrite: writing is allowed faExecute: execution is allowed

Remarks The DFAttribs part is a bit vector. See Also Property DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType Purpose Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

822

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

DirFileDate
The DirFileDate property gets the modification date and time of the current DirRead entry. Syntax DFDate = RemoteObject.DirFileDate This property has the following part: Part DFDate See Also Property DirFileAttributes DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType Purpose Gets the attributes of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry Description A date value indicating the date and time of the entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

ActiveRobot User Guide: CRSRemote

823

CRSRemote: CRSRemote Properties

DirFileIdent
The DirFileIdent property gets the unique identifier, or inode number, of the current DirRead entry. Syntax DFIdent = RemoteObject.DirFileIdent This property has the following part: Part DFIdent See Also Property DirFileAttributes DirFileDate DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry Description A long value indicating the inode number of the entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

824

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

DirFileLinks
The DirFileLinks property gets the number of links for the current DirRead entry. Syntax DFLinks = RemoteObject.DirFileLinks This property has the following part: Part DFLinks Description A long value indicating the number of links for the entry

See Also Property DirFileAttributes DirFileDate DirFileIdent DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

ActiveRobot User Guide: CRSRemote

825

CRSRemote: CRSRemote Properties

DirFileMajor
The DirFileMajor property gets the major device number for the current DirRead entry. It is only useful for dntDevice nodes. Syntax DFMajor = RemoteObject.DirFileMajor This property has the following part: Part DFMajor Description A long value indicating the major device number of the entry

See Also Property DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMinor DirFileName DirFileSize DirFileType Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

826

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

DirFileMinor
The DirFileMinor property gets the minor device number for the current DirRead entry. It is only useful for dntDevice nodes. Syntax DFMinor = RemoteObject.DirFileMinor This property has the following part: Part DFMinor Description A long value indicating the minor device number of the entry

See Also Property DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileName DirFileSize DirFileType Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

ActiveRobot User Guide: CRSRemote

827

CRSRemote: CRSRemote Properties

DirFileName
The DirFileName property gets the name of the current DirRead entry. Syntax DFName = RemoteObject.DirFileName This property has the following part: Part DFName Remarks This property gets a null string when the end of the list is reached. Use the DirRewind method to select the first entry in the current DirRead directory. See Also Property DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize DirFileType Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry Gets the type of the current DirRead entry Description A string value indicating the name of the entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

828

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

DirFileSize
The DirFileSize property gets the size in bytes of the current DirRead entry. Syntax DFSize = RemoteObject.DirFileSize This property has the following part: Part DFSize See Also Property DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileType Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the type of the current DirRead entry Description A long value indicating the size in bytes of the entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

ActiveRobot User Guide: CRSRemote

829

CRSRemote: CRSRemote Properties

DirFileType
The DirFileType property gets the type of the current DirRead entry. Syntax DFType = RemoteObject.DirFileType This property has the following part: Part DFType Description An enumerated value indicating the type of the entry: dntFile: regular file dntDirectory: folder or directory dntDevice: I/O device dntSocket: interprocess communication socket dntFifo: named fifo

See Also Property DirFileAttributes DirFileDate DirFileIdent DirFileLinks DirFileMajor DirFileMinor DirFileName DirFileSize Purpose Gets the attributes of the current DirRead entry Gets the modification date and time of the current DirRead entry Gets the unique identifier, or inode number, of the current DirRead entry Gets the number of links for the current DirRead entry Gets the major device number for the current DirRead entry Gets the minor device number for the current DirRead entry Gets the name of the current DirRead entry Gets the size in bytes of the current DirRead entry

Method DirNext DirRead DirRewind

Purpose Selects the next entry in the current DirRead directory Retrieves a listing of the contents of the specified controller directory Selects the first entry in the current DirRead directory

830

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

PercentComplete
The PercentComplete property gets the progress of the current GetFile or PutFile file transfer. Syntax CopyProgress = RemoteObject.PercentComplete This property has the following part: Part CopyProgress Description A long value indicating the percentage of completion of the current file transfer

Remarks The PercentComplete property is automatically set to zero when the file transfer operation completes. You normally cannot use more than one method or property of CRSRemote at a time. You are permitted, however, to have a file transfer in progress and use a timer to check the current value of the PercentComplete property. See Also Method AbortFileTransfer GetFile PutFile Purpose Cancels the current GetFile or PutFile operation Copies the specified file on the remote controller to the specified file on the host computer Copies the specified local file to the specified destination file on the remote controller

ActiveRobot User Guide: CRSRemote

831

CRSRemote: CRSRemote Properties

ProcessExists
The ProcessExists property gets whether the specified CROS process exists. Syntax CROSPExists = RemoteObject.ProcessExists(CROSPid) This property has the following parts: Part CROSPid CROSPExists Description An input long value specifying the ID of the CROS process to check A boolean value indicating whether the specified process exists: True: process exists False: process does not exist

Remarks You obtain the value of CROSPid from the Run method. See Also Method Run SendSignal WaitForExitCode Purpose Launches a program on the remote controller using the specified CROS command line Sends the specified CROS signal to the specified process on the remote controller Waits for the specified CROS process to complete and retrieves its exit code

832

ActiveRobot User Guide: CRSRemote

CRSRemote: CRSRemote Properties

RobotInUse
The RobotInUse property gets or sets the current controller. Syntax RemoteObject.RobotInUse = CurrentCtrlr CurrentCtrlr = RemoteObject.RobotInUse This property has the following part: Part CurrentCtrlr Description A long value specifying or indicating the ID of the current controller

ActiveRobot User Guide: CRSRemote

833

CRSRemote: CRSRemote Properties

834

ActiveRobot User Guide: CRSRemote

Index: A

A
Abort commands Abort method 3-14 ClearAbort method 3-14 Processing 3-14 RobotInUse method 3-14 AbortMove 3-16 Access 2000 Creating an ActiveRobot project 3-4 ActiveRobot Accessing ActiveRobot DLLs 1-3 ActiveRobot Help 3-4 Application development process 3-6 Compatible development tools 3-2 Components 1-5 Configuring 2-8 Co-ordinating event handlers 3-13 Creating ActiveRobot applications 1-3, Development utilities 1-5 Dynamic link libraries 1-3 Example applications 3-14 Features 1-2 HCLServer 1-5 Help Context-sensitivity 3-2 How ActiveRobot Works 1-3 Installing 2-1 Monitoring the robot system 3-13 Object classes 1-5 Objects Creating and using 3-7 In Visual Basic 3-7 In Visual C++ 3-8 Overview 1-1 Purpose 1-2 References 1-3 Safety considerations 3-2 System communications 1-4 System requirements 2-2 Testing 2-8 User interface 3-13 ActiveRobot Configuration Configure tab 3-18 Controller tab 3-21 Exiting from 3-22 General tab 3-18 Overview 3-17 Starting 3-17 Test tab 3-19 Testing communications 3-19 Using 3-17 Utility tab 3-20

3-2

ActiveRobot User Guide: Index

I-1

Index: B

ActiveRobot Explorer Copying files 3-25 Exiting 3-26 Launching from a shortcut 3-25 Overview 3-24 Selecting the robot system to communicate with 3-25 Starting 3-24 Using 3-24 ActiveRobot Help 3-4 Documentation Conventions 3-5 ActiveRobot Terminal Exiting 3-24 Launching from a shortcut 3-23 Overview 3-22 Point of control 3-14 Scroll buffer 3-23 Selecting a robot system to communicate with 3-23 Starting 3-22 Using 3-22 ActiveRobot.dll 1-3 Application development process 3-6

B
Backing up controller files 2-3

C
COM 1-2 Configuration 3-18 Configuring ActiveRobot 2-8 Configuring a robot system 3-18 Connecting the PC to the C500C 2-2 Controller Backing up files 2-3 Diagnostic mode 2-5 File system, rebuilding 2-6 Front panel pushbutton sequences Restoring files 2-6 Creating ActiveRobot applications 3-2 CROS 2.8 2-2, 2-3 CROS 3.1 2-3 CRSLocation Overview 3-10 Properties 3-10 Using 3-10 CRSPath Methods 3-11 Overview 3-11

2-5

I-2

ActiveRobot User Guide: Index

Index: D

Properties 3-11 Using 3-11 CRSRemote Methods 3-12 Overview 3-11 Properties 3-12 Using 3-11 CRSRobot Errors 3-13 Method categories 3-8 Overview 3-8 Property categories 3-9 Using 3-8 CRSV3File Methods 3-9 Overview 3-9 Properties 3-10 Using 3-9

D
Development tools 3-2 Diagnostic mode 2-5 Documentation Conventions Remarks 3-5 See Also heading 3-5 Syntax 3-5 Visual C++ 3-5 Dynamic link libraries 1-3 Accessing 1-3

3-5

E
Errors CRSRobot 3-13 Event Handlers 3-13 Event handlers Co-ordinating 3-13 Errors 3-13 Examples 3-14 AbortMove 3-16 Notes 3-14 PathControl 3-15 PendantVB 3-15 SimplePNP 3-15 StatusQuery 3-15 TeachPendant 3-16 V3Example 3-15

ActiveRobot User Guide: Index

I-3

Index: H

H
HCL 1-5 HCLInterface.dll 1-3 HCLServer 1-5 Help ActiveRobot User Guide 3-4 Documentation Conventions Examples 3-14 For Visual Basic users 3-4 For Visual C++ users 3-5 Getting 3-4 Online 3-2, 3-4

3-5

I
Installing ActiveRobot 2-1 ActiveRobot software CROS 2.8 or 3.1 2-3

2-7

M
Monitoring the robot system 3-13

O
Object classes

3-7

P
PathControl 3-15 PendantVB 3-15 Point of control Managing 3-14 Methods 3-14 Teach pendant 3-14

R
Rebuilding the controller file system Remarks 3-5 Restoring controller files 2-6 Robot System Testing communications 3-19

2-6

I-4

ActiveRobot User Guide: Index

Index: S

Robot system 3-18 Definition 1-2 Monitoring with ActiveRobot Point of control 3-14

3-13

S
Safety considerations 3-2 See Also heading 3-5 Serial cable 2-2 SimplePNP 3-15 StatusQuery 3-15 Syntax 3-5 System requirements 2-2

T
Teach pendant Point of control 3-14 TeachPendant 3-16 Testing ActiveRobot 2-8 Communications with a robot system 3-19 ToolTip help 3-4 Triggers 3-11

U
Updating HCL 2-8, 2-10 Previous versions of CROS User interface 3-13

2-3, 2-8

V
V3 Files Definition 3-6 Using 3-6 V3Example 3-15 Visual Basic Creating an ActiveRobot project 3-2 Documentation Conventions 3-5 Example ActiveRobot applications 3-14 Help 3-4 Using ActiveRobot objects 3-7 Visual C++ Creating an ActiveRobot project 3-3

ActiveRobot User Guide: Index

I-5

Index: V

Documentation Conventions 3-5 Example ActiveRobot applications Using ActiveRobot Objects 3-8

3-14

I-6

ActiveRobot User Guide: Index

You might also like