Professional Documents
Culture Documents
UMI-R3-220
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
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
iii
Preface:
iv
Preface:
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
Preface:
vi
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
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
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
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
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
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
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
1-1
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 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
1-3
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.
C500C Controller
V3 File
Interface to CROS
GPIO
CRSRobot Object
User Object
HCLServer
HCL
Robot Server
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 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
1-5
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
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
21
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
The computer must be connected via a straight-through RS-232 serial cable with a female DB-9 connector at the controller end.
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
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.
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.
23
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.
24
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
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.
25
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.
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.
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
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
27
Once you have accepted the end-user licence and responded to the other prompts, the installation completes.
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:
28
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.
29
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
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
3-1
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.
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
3-2
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.
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.
3-3
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
It is easier to print from. It permits more powerful searching. It provides more powerful viewing options.
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.
3-5
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++.
3-6
To learn how to transfer v3 files between the host computer and the controller, see Using ActiveRobot Explorer on page 3-24.
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
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
3-7
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.
(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
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
3-9
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
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
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
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
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.
3-11
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
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
3-12
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
If you poll the robot system at a frequency greater than about ten times per second, you may start to affect its performance.
3-13
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
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.
3-15
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
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.
3-17
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.
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.
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
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.
Figure 3-3:
The Test tab of ActiveRobot Configuration enables you to test the communications of the host computer/robot system configuration.
3-19
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.
Figure 3-4:
The Utility tab of ActiveRobot Configuration enables you to perform several useful robot system operations from the host computer.
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
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.
Figure 3-5:
Select the ID of the robot system to synchronize with in the Controller to use selection box. Select Synchronize.
3-21
Select the ID of the robot system to shut down in the Controller to use selection box. Select Shutdown Controller.
3-22
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.
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 mouse or the cursor keys, select the desired portion of text.
3-23
Press the right mouse button to show the context menu, and select Copy to copy the selected text into the Windows clipboard.
Note:
To copy the entire contents of the scroll buffer, select Copy Scroll Buffer in the File menu.
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
3-24
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.
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
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.
3-25
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:
3-26
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:
4-1
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
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
4-3
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
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
4-5
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
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.
4-7
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
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
4-9
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
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
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-11
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
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
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
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-13
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
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
HomeZeroCross Zero
4-15
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
4-16
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
4-17
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
4-18
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
4-19
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
4-20
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
Purpose Gets the current arm location as a motor location Gets the current arm location as a world location
4-21
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
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
4-23
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
DepartStraight
Finish JogTool
JogToolStraight
JogWorld
JogWorldStraight
4-24
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
4-25
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
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
4-27
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
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
4-29
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
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
4-31
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
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
4-33
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
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
Purpose Indicates if the robot has finished moving Indicates if the gripper has finished moving
4-35
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
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
4-37
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
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
4-39
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
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
4-41
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
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
4-43
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
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
4-45
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
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
4-47
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
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
4-49
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
4-50
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
4-51
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
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
4-53
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
Robot Configuration
You save the system configuration data with the following method: Method ConfigSave Purpose Saves the system configuration data in robot.cfg
4-55
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
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
4-57
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
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
4-59
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
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
4-61
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
Purpose Gets a motor location from a set of joint positions Gets a world location from a motor location
4-62
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
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
4-63
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
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
4-64
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
Purpose Gets a motor location from a set of joint positions Gets a world location froma motor location
4-65
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
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
4-67
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
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
4-69
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
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.
4-71
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
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.
4-73
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
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
4-75
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
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.
4-77
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
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.
4-79
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
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.
4-81
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
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
4-83
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
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)
4-85
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
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.
4-87
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
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.
4-89
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
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
Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper type: servo, pneumatic, or none
4-91
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
Purpose Gets or sets the gripper finger opening distance Gets or sets the gripper type: servo, pneumatic, or none
4-92
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
Purpose Gets whether the gripper fingers have finished moving Gets or sets the gripper fingers opening distance
4-93
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
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
4-95
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
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
4-97
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
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
4-99
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
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
4-101
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
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
4-103
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
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
4-105
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
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
4-107
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
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
4-109
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
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
4-111
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
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
4-113
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
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.
4-115
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
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
4-117
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
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.
4-119
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
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
4-121
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
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
4-123
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
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
4-125
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
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
4-127
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
TrapezoidalProfileEnable Sets the enabled status of trapezoidal motion profiles TriggerEnable Sets whether triggers are enabled or disabled
4-129
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
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
4-131
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
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
4-133
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
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
4-135
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
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
4-137
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
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
4-139
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
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
4-141
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
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
4-143
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
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
4-145
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
4-146
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
4-147
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
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
4-149
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
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
4-151
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
4-152
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
4-153
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
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
4-155
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
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
4-157
4-158
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
51
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
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
53
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
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)
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
55
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
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
57
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
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
59
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
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
511
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
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.
61
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
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
63
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
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
65
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
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
67
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
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
69
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
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
611
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
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.
613
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
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
615
616
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
71
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
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
73
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
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
75
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
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
77
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
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
81
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
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
83
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
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
85
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
86
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
87
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
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
89
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
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
811
Ping
The Ping method pings the remote controller to test communications integrity. Syntax RemoteObject.Ping This method has no arguments.
812
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
813
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
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
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
815
Property ProcessExists
816
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
817
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
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
819
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
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
821
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
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
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
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
823
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
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
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
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
825
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
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
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
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
827
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
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
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
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
829
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
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
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
831
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
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
833
834
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
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
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
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
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
I-5
Index: V
Documentation Conventions 3-5 Example ActiveRobot applications Using ActiveRobot Objects 3-8
3-14
I-6