Professional Documents
Culture Documents
Active Robot Training Manual
Active Robot Training Manual
Table of Contents
TASK: #1 UNDERSTANDING ROBOT SYSTEM COMPONENTS 7
7 7 8 9 10 12 12 13 14 15 16 17
LESSON 1.1 Hardware Components Concept of a Robot System Identifying the Different CRS Arms The C500C Controller Optional Components LESSON 1.2 Software Components What is ActiveRobot Demonstration: A Simple ActiveRobot Application The ActiveRobot Setup Utility ActiveRobot Terminal The ActiveRobot Explorer Software Products that Support ActiveX Controls
TASK: #2
18
18 18 18 19 19 21 21 22 23 24 24
LESSON 2.1 Operating the Emergency Stop Safety Features of the CRS Robot System What is an Emergency Stop? Locating Emergency Stop Buttons How the E-Stop Works LESSON 2.2 Preventing Operator Injury Purpose of the Live-man Switch Exercise: Enabling the Live-man Switch Understanding Point of Control Proper Training Performing a Risk Analysis
TASK: #3
25
25 25 27 34 34 35 36
LESSON 3.1 Using the Teach Pendant Activating the Teach Pendant Moving in Different Coordinate Systems LESSON 3.2 Using the Application Shell Starting the Application Shell Moving the Robot from Ash Exiting the Application Shell
TASK: #4
UNDERSTANDING LOCATIONS
37
37 37 37 40 41 41 42 43
LESSON 4.1 Understanding ActiveRobot Locations Homing the robot Understanding ActiveRobot Locations How to Create Location Variables in the V3 File LESSON 4.2 Measuring the tool offset How the Tool Transform affects locations The Default Tool Centre Point How to create a tool transform
TASK: #5
TEACHING LOCATIONS
45
45 45 46 47 47 48 49 51 51 Error! Bookmark not defined. 53 54 55
LESSON 5.1 Using the Teach Pendant Teaching World Locations through the Teach Pendant Teaching Motor Locations through the Teach Pendant LESSON 5.2 Using Ash Teaching World Locations from Ash Teaching Motor Locations from Ash Location Arrays LESSON 5.3 Understanding Motion Types Joint Interpolated Motion Moving the Robot in Ash Straight Line Motion Blended Motion Moving the Robot in a Straight Line
TASK: #6
56
56 56 56 57 58 58 59 59 59 60 60 61 61 61 62 63 63 64 64
LESSON 6.1 Understanding The CRSRobot Object What is the CRSRobot Object? When to use an instance of the CRSRobot. What Happens When A Robot Command Is Issued? How To Poll The Status Of The Robot Periodically Considerations To Be Aware Of While Polling. LESSON 6.2 Understanding The CRSV3File Object What is the CRSV3File Object? Opening the CRSV3File Using the Contents of the V3 File Closing the CRSV3File LESSON 6.3 Understanding The CRSLocation Object What is the CRSLocation Object How to Use a CRSLocation Understanding Abort Methods LESSON 6.4 Robot and Location Object Properties Aspects of the Robot Configuration Details To Be Aware Of When Changing The Configuration How to Find List of ActiveRobot Methods and Properties
TASK: #7
PROGRAMMING
65
65 65 66 66 67 67 67 68 69 69 70 72 72 74
LESSON 7.1 Preparing the Working Directory Creating a Directory in Explorer Transferring the V3 File from the Controller to the Host computer Understanding the Active Directory LESSON 7.2 Starting Visual Basic Opening a Visual Basic Standard Project Referencing the Active Robot Library Saving the Application LESSON 7.3 Building a Form Adding Controls to the Form Setting the Properties of the Form and Controls LESSON 7.4 Writing Code Declaring Variables Setting up Form_Load Event
Writing the Main Robot Application Adding Timed Polling of Robot Status Deselecting Controls during Robot Operations Aborting Robot Motion Shutdown of the Controller
75 78 79 80 81
TASK: #8
DEBUGGING CODE
82
82 82 83 85 85 87 88 92 92 93
LESSON 8.1 Understanding Error Codes Common Causes of Errors Identifying the Error Codes and What they Mean LESSON 8.2 Setting up Error Handling Trapping Errors in Visual Basic Impact of the Errors Recovering from Errors LESSON 8.3 Handling Point of Control Issues Subsequent Runs GPIO Can Cause Point of Control Problems Too
TASK: #9
OPTIMIZING SYSTEM
94
94 94 95 95 96 96
LESSON 9.1 Improving Robot Speed Move Size VS. Speed When to use Blended Motion and When not to Adjusting Locations to Improve Cycle Time LESSON9.2 Optimizing Code Optimizing the use of BlendedMotion
97
97 97 98 98 99 99 100 101 101 102 103 103 103 103 104 104 105 105 108 108 108 109 109 109
LESSON 10.5 Deploying the Application Determine Necessary Components Documentation Training
APPENDIX A
The CRS Risk Analysis Guidelines
112
112
APPENDIX B
Robot Related Safety Standards
113
113
APPENDIX C
Purchasing Standards
114
114
Content:
Concept of a Robot System Identifying the Different CRS Arms The C500C Controller Optional Components: The Teach Pendant and GPIO Block
computer system
controller
Figure 1
A255 waist shoulder elbow (joint 1) (joint 2) (joint 3) --wrist pitch tool roll (joint 4) (joint 5) waist shoulder elbow wrist yaw wrist pitch tool roll
A465 (joint 1) (joint 2) (joint 3) (joint 4) (joint 5) (joint 6) waist shoulder elbow wrist yaw wrist pitch tool roll
Figure 2
Robot axes
Each axis passes through the joint and is the center of rotation of that joint. There are as many axes as joints. If your system includes a track, the track is an additional axis.
Other CRS robot system designations T265 is the designation for an A255 system with support for a CRS track T475 is the designation for an A465 system with support for a CRS track F3t is the designation for an F3 system with support for a CRS track
expansion amplifier *
EXPANSION AMPLIFIER
Figure 3
Optional Components
The Teach Pendant
The teach pendant is hand held robot control terminal with a keypad, LCD display, E-Stop button, and cable. The teach pendant is used to move the robot arm, teach locations, and edit variables.
Figure 4
Because of the E-Stop on the teach pendant, you must insert a teach pendant dummy plug into the teach pendant port whenever the pendant is disconnected from the controller.
Example:
On some CRS lab systems, a green beacon means that the system is suspended and it is safe to approach, a yellow beacon means that the robot is in motion and it is unsafe to approach, and a red beacon indicates that an error has occurred (for example, a misplaced container) and an operator needs to intervene. The beacon lamps are connected through the GPIO port and controlled via a program on the controller. To make it easier to connect devices to the 16 digital inputs and 16 digital outputs, you can purchase a GPIO terminal block as an option for your robot system. The GPIO block kit includes a ribbon cable with a 50 pin connector. The connector attaches to the GPIO port on the back panel of the controller.
10
Adding inputs and outputs can help with the timing of the entire work-cell. You may not want the robot system to start if the door is open. In this case, you may put a check for a door latch sensor before any robot motion can take place. You may also want to use an output to start different devices in the work-cell when the robot is ready for them. For example, you may want to restart a conveyor once the robot has removed the part so the next one can move into place. You may also want to indicate the robot motion by flashing an orange light when the robot is in motion, and turn a green light on when it is safe to enter the work-cell.
insert ribbon cable here
clip clip
Figure 5
Pinout schematics for the GPIO port and wiring instructions are in your robot system user guide.
11
Content:
What is ActiveRobot Demonstration: A Simple ActiveRobot Application The ActiveRobot Setup Utility ActiveRobot Terminal The ActiveRobot Explorer Software Products that Support ActiveX Controls
What is ActiveRobot
ActiveRobot is an ActiveX component that enables Microsoft Windows applications to fully access and control up to 8 CRS Robotics robot systems from one host computer.
A robot system consists of an articulated CRS arm, a C500C controller, and up to two additional axes, one of which could be a track
ActiveRobot includes two versions of the help file (PDF, and HTML formats), several examples in Visual basic and Visual C++, release notes, and the following utilities: ActiveRobot Terminal ActiveRobot Configuration ActiveRobot Explorer
When you set up ActiveRobot on your development, or host, computer, the installation program adds the following shared Windows dynamic link libraries (DLL): ActiveRobot.dll, which provides an interface to the features of the robot system. This dynamically linked library (DLL) contains all the robot- and controller-specific methods and properties required to create an ActiveRobot application HCLInterface.dll, which ActiveRobot.dll uses to get reliable communication with the controller. This DLL controls how commands for the robot system are sent to the controller .
12
13
Figure 6
The ActiveRobot Setup Utility The General tab displays the current version of the ActiveRobot .dll and the number of robots you have configured. The Configure tab lets you create and edit a communications configuration for each robot system attached to the host computer. The Test tab lets you test communications between the host computer and the configured robot system. The Utility tab lets you perform several useful robot motion operations from the host computer, including homing the arm, setting joint speeds, and moving individual axes. The Controller tab lets you synchronize the real-time clocks on the robot system and the host computer, and can also be used to shut down the controller.
14
ActiveRobot Terminal
ActiveRobot Terminal provides a simple command-line terminal interface to the controller. Through ActiveRobot Terminal, you can access the controllers operating system and command the robot from the host PC without having to create an application.
ActiveRobot Terminal provides a command-line interface only. It is not a programming editor or a macro generator. Commands are sent directly to the robot system and are not available for replay later.
To use ActiveRobot Terminal, select ActiveRobot Terminal from the Windows Start Menu or the CRS ActiveRobot directory. When it starts, ActiveRobot Terminal first determines what robot systems are available for communication and then attempts to establish a connection with the default system. If it succeeds, it opens a terminal window.
The ActiveRobot Terminal window maintains a 200-line scroll buffer that enables you to view the output of recent controller commands. You can copy text from this buffer, but you cannot paste text into it.
Figure 7
15
To use ActiveRobot Explorer, select ActiveRobot Explorer in the Windows Start Menu or in the CRS ActiveRobot directory. When it starts, ActiveRobot Explorer determines which robot systems are available for communication and then attempts to establish a connection with the default system. If it succeeds, it opens a tree-view window into the controller's root directory:
Figure 8
You can use drag-and-drop to copy files from the controller to the host computer, and vice-versa. Holding the left mouse button down, drag the selected files to the destination directory in ActiveRobot Explorer.
You can copy files from the host computer's desktop simply by dragging them to the destination directory in ActiveRobot Explorer; you don't have to open Windows Explorer in this case.
16
In this course, you will learn how to develop applications using Visual Basic.
17
Content:
Safety Features of the CRS Robot System What is an Emergency Stop? Locating Emergency Stop Buttons How the E-Stop Works
18
Figure 9
19
1 If necessary, move the arm away from the impending collision. 2 Release the triggered E-stop button by twisting it until it pops out of the
latched position. the workcell.
3 Make sure that it is safe to engage arm power. Remove any obstacles from 4 Press the Arm Power button to re-apply arm power. 5 If you cannot apply arm power, check the circuit breakers or fuses to make
sure you havent tripped a breaker.
If you have an F3 arm, you may occasionally encounter an error condition following an E-Stop. To clear this error, enter the ash command clrerror. If the error persists, shutdown and reboot the controller.
20
Content:
Purpose of the Live-man Switch Exercise: Enabling the Live-man Switch Understanding Point of Control Proper Training Performing a Risk Analysis
These may seem a little severe for the relatively small size of CRS robots, but we must follow the same safety requirements as companies that make much heavier industrial robots.
21
live-man switch
disabled position
Figure 10
Only a small amount of pressure is required to go past the second click. Be gentle!
Exercise:
1 Hold the teach pendant to your ear. 2 Slowly depress the live-man switch. 3 Listen for the first click. This is the enabled position. 4 Slowly depress the live-man switch further. 5 Listen for the second click. 6 If you did not hear both clicks, repeat the exercise.
We will be using the teach pendant to manipulate the robot in Task: #3 Moving the Robot. At that point you will be able to try moving the robot with the live-man switch enabled.
22
Example:
If someone is commanding the robot from the ActiveRobot Terminal, they would need to type in pendant to pass control to the Teach Pendant.
Example:
If the controller has been running an application, and point of control was not released from the program, the controller would require the operator to press the Pause/Continue button on the front of the controller. Since the controller is normally stored in close vicinity to the robot, this forces the operator to look in the workcell to ensure that no one is in danger from the robot.
If you are using ActiveRobot Terminal, you will likely be using ash to move the robot and teach locations. Ash is a process, which requires point of control. If you do not exit from ash before trying to run your application, your program will not run and you will receive an error stating the resource is busy. If you get this error, simply go into ActiveRobot Terminal and ensure that ash is no longer running.
23
Proper Training
It is important to remember that all robots are potentially dangerous objects. Only individuals who are familiar with operating robots should be allowed in the robot workcell while the robot is powered. In many cases people think it is safe to approach the robot because it is not moving, but this is not always the case. The robot could be idle and waiting for an input. When it receives the input it will start its routine and anyone standing in the way will be in danger. This is why its important for any personnel working in the vicinity of the robot to be properly trained in robot safety. Any person responsible for programming or moving the robot must be fully trained in the operation of the robot system and robot safety issues.
24
Content:
Activating the Teach Pendant Choosing an Application Moving in Different Coordinate Systems: The Joint Coordinate System The World Coordinate System The Tool Coordinate System The Cylindrical Coordinate System
Exercise:
For the purposes of this lesson, were assuming that the teach pendant is not active, the controller is turned on, and the robot is homed.
1 Open the ActiveRobot Terminal 2 Press the Enter key on the keyboard to establish a prompt 3 At the prompt, type pendant to activate the pendant. Once the pendant is
active, you will no longer be able to type in the terminal window.
Main Menu
app motn
Choosing an Application
In order to teach locations and move the robot you need to select (or create) an application. This application corresponds to a directory on the controller where your programs and variables will be stored.
25
Exercise:
2 Use the keypad on the teach pendant to type in FIRST. This will be the name
for our application.
3 Select F1 [sel] to select first. 4 Confirm the new app by selecting F2 [yes] 5 Select F1 [edit] to enter the application 6 Select F3 [motn] to access the motion menu. The teach pendant screen
should now look like this:
ON JOINT
mode
Now were ready to move the robot and teach locations through the teach pendant.
26
Although a location can be defined using any of these coordinate systems, some are more appropriate than others. The coordinate system you use should depend on the task you are trying to accomplish.
joint 1
Figure 11 The joint coordinate system
27
Figure 12
Axes 7 and 8 (or 6, 7, and 8 for an A255) correspond to additional axes like tracks or carousels that can be connected to the controller. Additional axes are available as optional components for some systems.
Two motion types are available: Velocity motion moves the arm at a constant speed for as long as you hold down the axis key. Jog motion moves only a few degrees each time the axis key is pressed. If you release the axis key before the jog is complete, the robot stops without completing the move.
Exercise:
For the purposes of this lesson, were assuming that the teach pendant is in velocity joint mode. This is the default setting when you first enter the Motion menu.
1 Using the SPEED UP and SPEED DOWN keys on the teach pendant keypad, set the
speed to 10 or 20%
2 While holding the live-man switch in the middle (enabled) position, press an
axis + or - key. The selected joint should move.
28
Exercise:
1 On the teach pendant keypad, select F3 [motn] 2 Use the SPEED UP or SPEED DOWN keys to adjust the jog size. Notice that the jog
size is in degrees now.
3 While holding the live-man switch in the middle (enabled) position, press an
axis + or - key. The selected joint should move.
+Z
-X
+Y
-Y
-Z
+X
Figure 13
In the world coordinate system, the Z axis is vertical with positive Z pointing up. The X and Y axes are horizontal, with positive X forward away from the front of the arm and positive Y to the side as shown. The relationship of X, Y, and Z follows the righthand rule of thumb.
29
Of course, if your arm is mounted inverted, the axes in the world coordinate system will be inverted too. The world coordinate system axis directions are always defined relative to the base of the arm.
Origin Figure 14
No matter what coordinate system you use for positioning the arm and teaching locations, those locations are always stored on the controller in the world coordinate system. However, for teaching locations, moving in world mode can be awkward.
If you are using an A255 robot, you will notice that it cannot do zrot and it also has trouble with sideways moves (i.e. Y moves when its facing forward, X moves when its turned 90 from ready). This is because the A255 only has 5 degrees of freedom.
30
Exercise:
5 Press F4 [mode] until the pendant screen displays VEL WORLD. You are now in
velocity world mode. speed to 10 or 20%.
6 Using the SPEED UP and SPEED DOWN keys on the teach pendant keypad, set the 7 While holding the live-man switch in the middle (enabled) position, press an
axis + or - key. The arm should move.
F3
Figure 15
A255, A465
The tool coordinate system
The tool coordinate system for the F3 is defined differently from the tool coordinate system for the A255 and the A465.
Because tool mode motions are executed at the end of the arm, tool mode is especially useful when teaching locations.
You can alter the tool center point (TCP), and the orientation of the tool axes relative to the tool flange by defining a tool transform. This will be discussed in a later lesson.
31
Exercise:
1 Press F4 [mode] until the pendant screen displays JOG TOOL. You are now in
jog tool mode.
Figure 16
Exercise:
1 Press F3 [motn] until the motion type on the pendant screen is set to VEL. 2 Press F4 [mode] until the pendant screen displays VEL CYL. You are now in
velocity cylindrical mode.
32
3 Using the SPEED UP and SPEED DOWN keys on the teach pendant keypad, set the
speed to 10 or 20%.
4 While holding the live-man switch in the middle (enabled) position, press an
axis + or - key. The arm should move.
Ill assume that you now remember about setting the speed and enabling the live-man switch. From now on, you still have to do these steps but Ill leave them out of the explanation.
33
Content:
Starting the Application Shell Moving the Robot from Ash Exiting the Application Shell
To start the application shell, you simply type ash followed by the name of your application at the $ prompt. The application shell starts and opens the v3 file of the same name as the application. The v3 file is simply the file in which your locations are stored. The v3 file will also store variables of other data types, but is most commonly used for locations.
Example:
For example, to create (or load) an application called first, at the system prompt you would enter:
$ ash first
Your prompt also changes to an application shell prompt that looks like this:
first>
From this point on, the application shell will simply be referred to as ash.
34
Joint Mode
To move in joint mode, enter:
first> joint <axis #>, <# of degrees>
Example:
To rotate joint 1 by -45o from its current location, enter:
first> joint 1,-45
In ash, commands are case sensitive and are expected to be lower case.
World Mode
To move in world mode, you need to know what units your system uses. To find out what units are in use, you can use the units command. This indicates whether you are in English/Imperial units, meaning inches, or Metric units, meaning millimeters. Once you are aware of the units you are operating in, the robot will become so much safer! Some basic world mode commands:
wx <# of units> wy <# of units> wz <# of units> xrot <# of degrees> yrot <# of degrees > zrot <# of degrees > ;; moves the robot along the world X axis ;; moves the robot along the world Y axis ;; moves the robot along the world Z axis ;; moves the robot around the world X axis ;; moves the robot around the world Y axis ;; moves the robot around the world Z axis
Example:
Assuming metric units, to move the robot 100 mm along the world Y axis, you would enter:
first> wy 100
Tool Mode
Remember that as you move the tool, your tool coordinate system moves with it. This is important because if you were to move joint 5 by 90o, your positive tool X axis, for A series robots, would be pointing down towards the table. Now a positive tool X move will bring you closer to the table, whereas in the world coordinates its a negative Z command that brings you closer to the mounting surface.
35
Moving the robot in tool mode also requires that you know what units your system uses.
Cylindrical Mode
You cannot move the robot in cylindrical mode from within ash. You can only move the robot in cylindrical mode from the teach pendant.
36
Content:
Homing the robot Understanding ActiveRobot Locations: World Locations Motor Locations Robot Stance Motor Locations The Ready Position
World Locations
In Task: #3 Moving the Robot: Moving in Different Coordinate Systems, we discussed the world coordinate system. In ActiveRobot, we use the term world location to describe a location which is based on the world coordinate system. In the case of ActiveRobot, once weve created the locations on the controller, we copy the file containing those locations to the host computer. Each location contains 37
both the position of the tool center point (TCP) and the orientation of the arm at that point in the workspace. These are stored as a distance (positive or negative) along the X, Y, and Z axes, and the orientation of the tool flange, as defined by the rotational components xrot, yrot, and zrot. When working with ash or the teach pendant, world locations are referred to as cloc. This stands for cartesian location which was a term dating back to, and still used in, RAPL-3. You will need to know this when creating locations on the controller. ActiveRobot ; however, uses the term World Location. The data is also independent of robot stance. The location might be accessible with the arm in different stances. In other words, a world location variable does not define unique robot axis positions.
Robot Stance
You may have been wondering what the purpose of two different location types is. Well, when you use world locations, the controller only stores the end point of the robot arm (tool centre points will be discussed in Lesson 5). This means that the robot could get to the same location with several different arm orientations. The default stance for the robot has the waist facing forward, the elbow is up and the wrist is in the noflip position. There are; however, other stances that the robot can take. The waist could be facing backwards, the elbow could be down and the wrist could be in the flip position.
Motor Locations
In ActiveRobot, we use the term motor location to describe a type of location, which records the encoder pulses on each motor in the arm. Each joint contains an encoder that generates pulses as it rotates (about 200 pulses for each degree of rotation for most non-wrist joints). Any position of the arm can be defined by the number of precision pulses away from zero, for each joint. Zero is set at the factory with each joint at a certain position. For example, for joint 1, zero is set with the arm facing forward. Pulse counts for joint 1 can range from +48611 to 48611 (all robots). When working with motor locations on the teach pendant or in ash, they will be referred to as plocs. Once again this stems from the RAPL-3 language and is necessary to know in order to record motor locations.
38
Figure 17
39
The _ (underscore character) defines the location as a cloc in the v3 file. There is no value associated with the location variable yet, weve only created the variable name and defined its data type. To create a motor location, enter:
new #<locname>
1 Start the teach pendant by typing pendant in the AR Terminal window 2 Select an application.
If you were in ash when you typed pendant, you will already be in the application otherwise, you can use F3 and F4 to scroll through the applications, or type on the keypad to create a new one.
Select F1 [edit]
4 Select F1 [var] to create and edit variables 5 Use the pendant keypad to type in a name for the location 6 Select F2 [type] to scroll through the data types. 7 Choose cloc to create a world location or ploc to create a motor location 8 Select F1 [make]
40
Content:
How the Tool Transform affects locations The Default Tool Centre Point How to create a tool transform
41
F3
Figure 18
A255, A465
The tool coordinate system
By adding a tool transform, any rotation which takes place in the tool coordinate system, will now rotate around the TCP When measuring the tool offset, you should record the offsets in the order tool X, tool Y, tool Z, yaw, pitch, roll. Be sure to note that the F3 tool coordinate system is different from the A Series robots.
42
Figure 19
The above diagram is an example of a tool mounted on the F3 robot. Exercise To set the tool transform for the dispensing tool shown above, you would do the following in ash:
1 Make sure you are in ash for your current application. 2 Create a new variable called DispenseOffset by entering:
first> new _DispenseOffset
The first underscore designates it as a cloc
By doing these steps, you will be setting the tool transform in ash and creating a variable in the v3 file. When you teach your locations, the offset will be added to the value of your world locations. In this particular example, you will also note that the tool transform has a pitch of 900 which means your tool coordinate system has now changed the tool Z axis to up and down (positive being down towards the table). This tool offset will only remain active while the controller is powered. Once the controller has been turned off, you need to reset the transform by repeating steps 1 and 4.
43
You will need to use the variable from the v3 file in your ActiveRobot program. This will require declaring the variable and using the ToolTransform property. This is discussed in a later lesson.
You can also set the tool transform through hard code in your Visual Basic application. In this case you would use the components of the location object to set the transform. This would typically be part of the form_load event handler.
44
Content:
Teaching World Locations through the Teach Pendant Teaching Motor Locations through the Teach Pendant
2 Using the alphanumeric data keys on the pendant, enter a name for your 3 The Var Create screen displays the variable name you entered. Press the F1
[make] pendant key to create a new world location variable.
4 Press the F1 [sel] key to select the new variable. 5 Move the robot to the location you wish to teach. 6 Press F1 [tch] to record this position in the variable table.
Repeat the same steps for a second location by pressing the ESC key until you return to the Variable Find screen. When you teach a location, the controller records the value associated with the robot arms location in space, or the position, in encoder pulses, of each axis, at the time you select tch.
45
1 Scroll to the Variable Find window 2 Type the name of your motor location 3 Press F2 [type] until you see ploc above the variable name. 4 Press F1 [make] to create the variable 5 Press F1 [sel] to select the variable 6 Move the robot to the desired location 7 Press F1 [tch] to store the location
46
Content:
world locations motor locations
47
1 In ash type new #<location name> 2 Move the robot to the desired location 3 Type here <location name>
The # sign indicates that you are creating a ploc or motor location. Once the location is created using the # sign, you need only use the location name from then on. Once the locations have been created and taught, you can view your list of variables in the v3 file by typing list at the prompt. To view the value of a location, you can type ? <location name>.
48
Location Arrays
An array is a collection of data objects where all are the same data type and all use the same identifier, but each has a unique subscript. For the purposes of this class, we will focus on location arrays; however, you can use arrays for any data type. We discussed creation of location variables and how to teach them, it is also important to realize you can create an array of locations. Arrays not only help save memory space, it also can significantly reduce the amount of code necessary for your program, particularly if you are following a path or palletizing. To create an array, you can either use the teach pendant or ash.
By creating an array, I am referring to adding the array name and size to the v3 file, not how to teach the locations. Teaching locations will be covered in Task 5.
1 Start the teach pendant by typing pendant in the AR Terminal window. 2 Select the application
If you were in ash when you typed pendant, you will already be in the application otherwise, you can use F3 and F4 to scroll through the applications, or type on the keypad to create a new one.
3 Select F1 [edit] 4 Select F1 [var] to create and edit variables 5 Use the pendant keypad to type the name of the array 6 Select F2 [type] to scroll through the data types. 7 Choose either cloc (World location) or ploc (Motor location) 8 Select F3 [dim] 9 Enter the size of the array
It is possible to have two-dimensional arrays. If you only want a one-dimensional array, be sure to select 0 as the second dimension.
10 Select F1 [make] 11 Select F1 [make] 12 To teach a location you can use the Up Index or Down Index buttons to
select the index of the array
49
1 If you are in the system shell ($) type ash <application name> 2 Type new _<array name>[size] or new #<array name>[size]
first> new _myarray[10]
50
Content:
Joint Interpolated Motion Straight Line Motion Blended Motion Performing Straight Line Moves
51
Example:
first> move locA
Now that you know how to store locations, and move to those taught locations, we can introduce a couple of ash commands called appro and depart. The commands appro and depart use the tool axis to help you get close to taught locations with the end effector in the correct orientation.
appro allows you to approach a taught location by a certain distance. It creates an intermediate location with the same tool orientation as the actual location but shifts it back along the tool axis by the requested amount. depart backs away from its current location along the tool axis
Example:
first> appro locA, 30
where: locA is the taught location 30 is the distance it stops from the location.
first> depart 30
As you can see, depart does not require a location, it only requires a distance.
Appro and depart allow you to move to an intermediate location without having to teach another location. It works well when there is no object in the grippers but depending on the orientation of the gripper, and the tool transform, it may not be helpful once there is an object in the fingers. It may cause you to drag the part along the surface of the pick and place location.
52
locA
53
Blended Motion
In BlendMotion mode (known as online mode in RAPL-3), the motion engine enqueues as many as eight motions. Blended motion uses a different algorithm to calculate the path of the robot. Rather than going through, and pausing at, each location, it calculates the line segments and blends them together. To ensure the robot actually makes it to the taught location (i.e. where you are actually picking up a part) you would require a finish method. The finish method empties the motion queue.
You must have the BlendedMotion property enabled to move the robot in a straight line. If blended motion is not enabled, the straight line movement will seem a bit radical.
Definitions: Motion Engine Motion queue holds up to 8 locations or output commands in a queue in order to calculate a path based on line segments rather than points. If an output is part of the queue, it will be turned on as the robot passes through the location. Robot Server -
54
For motion along an axis the TCP moves in a straight line along the axis for the specified distance. Similarly for rotation around an axis the TCP remains in place, while the tool itself rotates around the axis.
You must have BlendedMotion enabled to move the robot in straight line motion. If you are in ash, you can activate BlendedMotion by typing: online on If you want to move in a straight line from the teach pendant, press shift + F4 on the pendant keypad. SL should appear in the upper right side of the pendant screen.
55
Content:
What is the CRSRobot Object? When to use an instance of the CRSRobot. What Happens When A Robot Command Is Issued? Monitoring Inputs or Robot Considerations To Be Aware Of While Polling.
Motion commands Configuration commands Status commands Input and output commands
For a full listing of all the commands available for the CRSRobot object, you can use the object browser available in Visual Basic.
56
57
58
Content:
What is the CRSV3File Object? Opening the CRSV3File Using the Contents of the V3 File Closing the CRSV3File
59
60
Content:
What is the CRSLocation Object How to Use a CRSLocation Understanding Abort Methods
61
The error handling is done using On Error Goto in Visual Basic and the abort state is cleared using the ClearAbort method.
62
Content:
Aspects of the Robot Configuration Details To Be Aware Of When Changing The Configuration How to Find List of ActiveRobot Methods and Properties
When you first receive your robot system, it comes configured with default values. The default settings for the A255/A465: Units are in imperial Gripper is configured for air Units are metric Gripper is configured for air
If you have ordered a track or a force sensor, your system will already be configured to support these items. You will need to reconfigure your system if you have a servo gripper, or if you would like to work in the opposite units. You may also need to reconfigure the system if you are adding extra axes to the robot. In this case, you would need to order the option for an extra axis.
63
Press F1 Under the project drop down menu, select object browser.
Once in the object browser, you can click on the object class and a list of all the methods and properties will be displayed. By clicking on the method or property, the object browser will display the arguments necessary, and the function of the command, in the bottom of the screen.
64
Task: #7 Programming
LESSON 7.1 Preparing the Working Directory
Objective:
To understand the concept of the working directory and how to ensure all the required elements are in the proper directory.
Content:
Creating a Directory in Explorer Transferring the V3 File from the Controller to the Host computer Understanding the Active Directory
1 Open up Windows Explorer 2 Click on the c: drive 3 Go to the File drop down menu 4 Select New
Folder
5 Type Training as the name for the folder and press Enter 6 Double click on the Training folder 7 Go to the File drop down menu 8 Select New
Folder. This will create a subfolder under Training.
9 Type First App as the name for the subfolder and press Enter
65
1 Open up Windows Explorer 2 Open up AR Explorer 3 In AR Explorer, open the app directory by double clicking it. 4 Under app, open the directory called first by double clicking it. 5 You should see your v3 file underneath this directory. Drag the v3 file to the
Windows Explorer window and drop it in the C:/Training/First App directory.
66
Task: #7 Programming
LESSON 7.2 Starting Visual Basic
Objective:
To open a Visual Basic project and reference the ActiveRobot library in order to gain access to the CRS objects, methods and properties.
Content:
Creating a Visual Basic Standard Project Referencing the Active Robot Library Saving the
67
68
Task: #7 Programming
LESSON 7.3 Building a Form
Objective:
To identify and use the standard Visual Basic controls and edit the properties to make the form look the way we would like.
Content:
Adding Controls to the Form Setting the Properties of the Form and Controls
Example:
Add three command buttons to your form.
1 Click the CommandButton control on the toolbox 2 Place your cursor on the form 3 Holding the left mouse button down, drag until the button is the size you
want
4 Repeat for other two buttons 5 Add two labels to the form following the same steps as above but with the
label controls
6 Position the labels side by side 7 Add a timer to the form as well
The timer will not appear on the form at run time but it will allow us to do timed events.
69
Project Explorer
Properties window
Figure 22
Setting properties
Properties can also be set or changed in your program code at run time. Firstly, lets change the name and caption of each of the controls so they are more descriptive. We want one of the buttons to be a START button, one to be a ABORT button and one to be a READY button. We also want the labels to monitor the status of arm power.
70
Exercise
1 On the form, click Command1 2 In the properties window, under the Name property, type cmdStart 3 Under the Caption property, type START 4 On the form, click Command2 5 Under the Name property, type cmdReady 6 For the Caption property, type READY 7 On the form, click on Command3 8 Name this control cmdAbort 9 Type ABORT for Caption property. 10 For the first label, name it lblArmPower 11 Set the caption to Arm Power Status 12 Name the second label lblArmStat 13 Erase the caption so its blank. (This will be filled in by code later) 14 Change the name of the timer to tmrArmCheck 15 Set the interval property to 500 milliseconds
71
Task: #7 Programming
LESSON 7.4 Writing Code
Objective:
To write code specific for a robot application.
Content:
Declaring Variables Setting up Form_Load Event Opening the V3 file Writing the Main Robot Application Step 3 Add Inputs and Outputs Adding Timed Polling of Robot Status Deselecting Controls during Robot Operations Aborting Robot Motion Shutdown of the Controller
72
If you are working with modules and subroutines, it is a good idea to declare the robot objects in the module and declare them as public so the entire project has access to them.
73
74
Be forewarned, if the robot is not homed, this code with cause your program to fail. It may be better to set the tool transform in the other subroutines.
75
Private Sub cmdStart_Click() Motion_Robot.Move locSafeA Motion_Robot.MoveStraight locA1 Motion_Robot.ApproachStraight locA2, 50 Motion_Robot.MoveStraight locA2 Motion_Robot.Finish ftTight Finish the move before the GripperClose starts Motion_Robot.GripperClose 70 Motion_Robot.GripperFinish Motion_Robot.JogToolStraight taZ, 75 series robots) Motion_Robot.MoveStraight locA1 Motion_Robot.Move locSafeA Motion_Robot.Finish Motion_Robot.ControlRelease End Sub rise up in tool Z (A
Exercise:
1 Create the place portion of the program using the b related locations (i.e.
locSafeB, locB1, locB2).
To turn an output on as you pass through a location, you would use the motion_robot object and add the output command to the motion queue. As long as you are only using one process to operate the robot and turn the output commands on, you can use the primary motion_robot. If there is any chance of two calls going to the robot server at the same time, i.e. using a timer, you must use a second robot object. In the event this could happen and you are already using a timer to monitor an input you will have to add a third CRSRobot object to handle the outputs. To turn an output on as part of the motion queue, the command would look as follows:
motion_robot.Output (6) = True
76
To turn on an output which is independent of the motion queue, the command would have a third argument to tell it to bypass the queue.
motion_robot.Output (6, True) = True
Where the first True tells the robot server to bypass the queue and the second True indicates the state to be ON.
77
The line - tmrArmCheck.Enabled = False disables the timer to avoid nesting calls. At the end of the subroutine, we re-enable it.
78
Example:
cmdStart.Enabled = False cmdReady.Enabled = False
Once a subroutine is completed, you will need to re-enable the buttons so you can continue to use the program. This requires setting the enabled property to true.
cmdStart.Enabled = True cmdReady.Enabled = True
The only button you want to leave active while the robot is moving, is the abort button, which will be discussed next.
Exercise:
Disable all the buttons, except the ABORT button, at the beginning of each of the subroutines that involve robot motion. Re-enable the buttons at the end of these subroutines.
This should affect the cmdStart_click and the cmdReady_click subroutines.
79
Exercise:
80
Because this is the first CRSRemote object we have used thus far, we need to add it to our list of declarations.
Public Controller as New CRSRemote
The next thing you need to be aware of is that if you have any communications going to the controller at the time you invoke the shutdown method, your application will hang up. So lets think about thisDo you have any communications going to the controller? If you dont think so, you may want to think again. The timer is set to poll the arm power status at intervals of 500ms. This is enough to hang your application. If this happens, the only way to exit is to use the task manager and kill the process (Ctrl+Alt+Del). The reason this happens is, the controller actually does shut down and the component that sent the command to query the arm power is waiting for a response; which will never come.
Exercise:
1 Add another button to the form 2 Change the caption to SHUTDOWN 3 Rename the control to cmdShutdown 4 Add the following code:
Private Sub cmdShutdown_Click() tmrArmCheck.Enabled = False Controller.Shutdown Unload Me End Sub
81
Content:
Causes of errors Identifying the error codes Understanding what they mean
82
ecAccessDenied
ecAxisIsLimp "Axis %d is limp" -1610350588 ecAxisIsLocked "Axis %d is locked" -1610350582 ecAxisRunaway "Runaway error on axis %d" -1610153982 ecBusy "resource busy" -1610612720 ecCollision "Collision error on axis %d" -1610153980
Encoder faulty
Ash could still be running on the controller Another process is accessing the same device you are accessing Circuit breaker/ fuse blown Caused by robot collision Hitting the e-stop while robot is moving quickly. User tried to move to a motor location in straight line.
ecIllegalSLMove
83
ecJointLimitExceeded "Joint %d limit exceeded" -1610350591 ecOutOfRange "index out of range" -1610612702 ecOutOfReach "Location out of reach" -1610350589 ecPathError "Path error" -1610350586 ecPermissionDenied "permission denied" -1610612725 ecPowerOff "Arm power is OFF" -1610350585
84
Content:
Trapping Errors in Visual Basic Impact of the Errors Recovering Robot from Errors
85
The On Error command lets you tell Visual Basic where to go when an error occurs. The syntax for On Error is pretty straight forward:
to
If Err.Number = ecAbortInProgress Then
This is much more reliable because you dont have to worry about whether the cases are correct or the wording is identical. Visual Basic recognizes the error code as a constant and will set the case accordingly. You can also double check the error code name by viewing the Object Browser. In some cases there is more than one layer of errors. For example you may receive an Abort in Progress error but youre not sure why because you didnt hit the estop or use the abort command. The way to check for the hidden error is by using the robot objects AsynchError property. This checks for asynchronous errors.
Example:
If Motion_Robot.AsynchError = ecJointLimitExceeded Then MsgBox Joint limit exceeded. Check location and accuracy of tool transform, vbOKonly End if
86
87
1 Add a Frame to your form 2 Add another button to the Frame 3 Name the button cmdRecover 4 Change the caption to RECOVER 5 Add two text boxes to the frame 6 Name the first text box txtUpDist 7 Name the second textbox txtDepartDist 8 Leave the text property empty for both text boxes 9 Add two labels to the frame, one beside each text box 10 For the label beside txtUpDist set the caption to UP DISTANCE 11 For the label beside txtDepartDist set the caption to DEPART DISTANCE 12 Add one more label to the frame to explain what the recover routine does
88
Figure 23
89
The following example of a recovery routine declares two new variable, UserValue and UserValue2, as variants. We then check the contents of the text box by setting UserValue = txtUpDist.Text and using the function IsNumeric. If the contents are not numeric, the value is set to zero and a message box pops up to prompt the user. The error handling in this routine is set up to capture the asynchronous errors Location out of reach and Joint limit exceeded.
Private Sub cmdRecover_Click() Dim UserValue As Variant Dim UserValue2 As Variant cmdstart.Enabled = False cmdready.Enabled = False cmdRecover.Enabled = False UserValue = txtUpDist.Text UserValue2 = txtDepartDist.Text If Not IsNumeric(UserValue) Then UserValue = "0" MsgBox "Non-numeric entry in Box 1", vbOKOnly, "Box 1 result" txtUpDist.SetFocus ElseIf Not IsNumeric(UserValue2) Then UserValue2 = "0" MsgBox "Non-numeric entry in Box 1", vbOKOnly, "Box 2 result" txtDepartDist.SetFocus ElseIf Not IsNumeric(UserValue) And Not IsNumeric(UserValue2) Then UserValue = "0" UserValue2 = "0" MsgBox "Non-numeric entry in Box 1 and Box 2", vbOKOnly, "Box 1 & 2 result" txtUpDist.SetFocus End If On Error GoTo Trouble Motion_robot.BlendedMotion = False Motion_robot.JogWorldStraight waZ, UserValue Motion_robot.Finish Motion_robot.Depart UserValue2 Motion_robot.Finish Motion_robot.BlendMotion = True
90
MsgBox "Recover routine complete. You may wish to change the values and run it again: ", vbOKOnly cmdstart.Enabled = True cmdready.Enabled = True cmdRecover.Enabled = True Exit Sub Trouble: If Err.Number = ecAbortInProgress Then If Motion_robot.AsynchError = ecOutOfReach Or Motion_robot.AsynchError = ecJointLimitExceeded Then MsgBox "Size of move may be too large. Enter a smaller value and try again", vbOKOnly, _ "Joint Limit Exceeded." txtUpDist.SetFocus cmdRecover.Enabled = True Exit Sub Else MsgBox "Asynchronous Error: " & Motion_robot.AsynchError, vbOKOnly End If Else MsgBox "Don't recognize: " & Err.Description End If End Sub _
91
Content:
Subsequent Runs GPIO Can Cause Point of Control Problems Too
Subsequent Runs
You may have noticed that after closing down your Visual Basic application and restarting it, you came across this message box when you clicked on a button requiring robot motion:
Figure 24
Releasing Control
This is happens because the previous application didnt release control of the robot before exiting. As a result, the controller requires manual intervention to ensure that it is safe for this new process to move the robot, or change the state of an output.
92
Figure 25
You must use a second robot object in order to control the GPIO if it is not part of the active motion routine. This is particularly important to remember if you are using a timer to check an input and turn on outputs.
93
Content:
Move Size VS. Speed When to use Blended Motion and When not to Adjusting Locations to Improve Cycle Time
Flushed queue
Youre probably wondering about the logic behind this. It all stems back to the way blended motion calculates its path. In order for the software to plan a continuous path, at least two locations must exist in the motion queue. The queue is filled only when the system has time. If the arm is to move very quickly through a series of tightly spaced points, the queue may not have more than one location in it, which will result in a pause in the motion. In this case, the speed can be lowered and/or the points can be spread out.
94
Demonstration:
95
Content:
Optimizing the use of BlendedMotion
Consider using the new finish accuracy option on Finish, which is a CRSRobot method. This will allow you to specify a lower then default accuracy (ftLoose), and thereby speed up your finish
96
Task: #10
LESSON 10.1
Objective:
To define the process to be automated and the components involved in interfacing the system.
Content:
Defining the cycle Potential Pitfalls Sensors Identifying Key Arm Locations Specifying Interfacing Requirements Timing Dependencies Required Operator Inputs End of Arm Tooling Performance Levels Flow of Material
If the process is poorly defined, the customer will undoubtedly be disappointed with the results of the completed system. There must be clear communication between the authorities requesting the system and those designing it. All requests should be clearly laid out and documented for future reference.
97
Sub-Systems
Sub-systems should be identified, preferably in a schematic. For example, a pick and place application might include such sub-systems as a conveyor, a vision system, and, of course, the robot system itself.
Interfacing Requirements
Identifying the interface requirements includes defining the types of signals the controller sends to actuators and receives from sensors, and the communications the controller conducts with other sub-systems, such as a personal computer or a vision sub-system. This may include baud rate and communication protocol to start actions in other components in the system. It is also important to have the correct cabling to ensure the communication can take place.
98
The last point in this list is especially helpful if you are checking to see whether you have a part in the gripper, the orientation of the part, or perhaps differentiate between parts. Air Gripper The biggest benefit of the air gripper is its speed. The air gripper is several times faster than the servo gripper. It does not; however, offer the benefit of feedback. The air gripper is either open or closed, on or off. Other benefits of the air gripper: Air grippers can be used in environments where fluids may destroy the servo gripper (i.e. cutting fluid) Air grippers are usually easier to maintain and repair Frequently they are less expensive than the servo gripper, due to the fact that they are less complex and have fewer moving parts.
Some options for end of arm tooling are: air gripper, servo gripper, dispense tool.
Performance Levels
Specifying required performance levels, refers to items such as cycle time, positioning accuracy, uptime, or parts throughput. Shaving milliseconds of the cycle time can actually save a company millions of dollars over the course of the year, depending on the application. Be sure you are aware of what the expectations are before you start to build the system. You need to do the research to ensure that the components you are purchasing can perform to meet the requirements.
99
Flow of Material
Tracing the flow of material from start to finish of the cycle. Where does the material enter the work cell? How does it move from one position to another in the work cell? How does it exit the work cell? How does the arm grasp and release the material?
100
Task: #10
LESSON 10.2
Objective:
To be able to identify the tasks involved in the robot cycle and the problems that may be encountered, as well as, how to layout the workcell to ensure robot compliance.
Content:
Robot cycle Problems and solutions in the design Tracing flow of materials Interfacing requirements
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Start the robot in the perch position. Output to signal the conveyor to start. Wait for an input to indicate part present. Move through path towards pickup location. Approach pickup location. Move to pickup location. Trigger the gripper to close. Wait for gripper to finish. Check for part in gripper. Back up through path. Move to intermediate location. Move through place path. Approach Place location. Open Gripper Wait for gripper to finish. Reverse through place path. Move to intermediate location. Return to perch position.
101
Potential Pitfalls
You need to be aware of any conditions, which may interfere with the normal operation of your application. In the example above, several things could happen: More than one item could advance on the conveyor. The device that feeds the conveyor could get jammed. The robot may not pick up the part.
There are probably many other things that could go wrong, but as this is an imaginary system well leave at the list above. Knowing these conditions could occur it would be wise to build in software to check for these things, and to notify the user in the event they occur.
102
Sensors
Because there are usually several sub systems to your main system, it is important to be able to communicate between those sub-systems. One of the easiest ways to communicate between sub-systems, is using sensors. For instance, if you have a conveyor feeding the robot a part, you want a proximity sensor to indicate that a part is present. If you are doing product testing and need to know the force that is being applied to the product, you will need some sort of force sensor. It is best to plan out all the sensors you will need for your system and include them in a wiring diagram.
Timing Dependencies
Identifying timing dependencies, both within and without the work cell. For example, if you have an inspection station as part of your system, you may need to wait until the inspection equipment is finished before moving the object to the next location. You may also have two robots in the work-cell. Obviously you don't want the two robots to collide with each other, so you will have to make sure you time the system so they are not in the same area at once. In the case of laboratory systems, you will need to wait for the instrument to finish performing its operation. You may simply time it or you may use communications to signal the end of the process.
103
104
Task: #10
LESSON 10.3
Objective:
Content:
Creating a flow-chart Teaching key locations Teaching other locations Writing the modules
Creating a flow-chart
To develop a smoothly operating program, the programmer should develop a flow chart, or step-by-step diagram, of the program before the program is written. Flowcharts are used primarily to organize the programmers thoughts about various movements and events in the program. Here are some standard flowchart symbols: Symbol Description
Used to indicate input or output data or a control signal.
Input/Output
Terminator
Indicates the location in the program where a decision will be made on the basis of input and output data from a peripheral device or from the contents of the program.
Decision
105
Symbol
Description
Indicates some process taking place in the controller, or on the host PC. For example, a process block is used to indicate that the axes are moving to a point location.
Process
Node
The node point in the programs the point where the signals are coming in from different locations for processing.
Flow
Flow symbols, or arrows, are used to connect blocks in the programs flowchart. These symbols also show the general direction of program development.
In long flowcharts the flowchart may need to be tied together at several points. This symbol identifies these points.
Annotation
On the following page is an example of a flowchart for a pick and place routine using a vision system.
106
Start
A
Move to Position 1
move to position 4
Advance Conveyor
Move to Position 1 and sound alarm Move to position 3 above conveyor line
Stop
No
Yes
107
108
Task: #10
LESSON 10.4
Objective:
To learn the steps involved in ensuring the system is operating properly before delivery to an end user.
Content:
Testing Optimizing
Testing
As part of the testing process, you want to make sure the robot arm can make all the required movements, as they occur in the program. In some instances, you may be able to move the robot from AR Terminal but the move will fail in your program. Analyze the path to ensure there are no collisions. Test how the application handles robot motion while complex operations are occurring. Observe how this affects the cycle time by running the same robot operation without the complex operations happening in the background. Simulate as many error conditions as possible to see how the system handles them. Test code coverage how much of the code has been tested during test runs. Ideally, you want to test 100% of the code, although this is not always possible as the controller can only raise certain errors that cannot be simulated. If there is error handling for any of these errors, you may not be able to test that code.
Optimizing
Adjust the locations so there is less travel or fewer points. Adjust arm speeds to improve the cycle times. Avoid tying up the processor with tight loops.
109
Task: #10
LESSON 10.5
Objective:
Content:
Determine Necessary Components Documentation Training
Documentation
Along with the delivery of the system, a complete set of instructions on the safe operation of the system and how to set up and configure the parameters for their particular site. All original documentation that may have come with different components of the system should be given to the end user. There should be a list of dos and donts so they know if there is anything that may void their warranty or cause unsafe operation.
110
Training
One of the members of the team that built and designed the system should be responsible for training the operator on the safe operation of the system. If the operator is going to be responsible for re-teaching locations on the robot, the operator should also receive training on the robot itself from the supplier of the robot.
111
Appendix A
The CRS Risk Analysis Guidelines
A team consisting of at least three members, each from a different discipline, should be formed to review the design. At least one member of this team should not have been involved in the design of the product, to provide an unbiased opinion, but must be familiar with the use of the product. Identify all the hazards, hazardous situations and hazardous events associated with the machine. Use the Annex A from EN1050 as a guideline to evaluate the possible hazards of the product. Annex B of this same document suggests several processes that can be used to carry out the process of identifying the hazards. Consider the limits of the machinery, including intended use, and also the consequences of reasonably foreseeable misuse or malfunction of the product. The next table lists some misuse considerations: Misuse considerations (from EN292-1 3.12)
1. 2. 3. 4. foreseeable incorrect behaviour resulting from normal carelessness, but not resulting from deliberate misuse of the machine the reflex behaviour of a person in case of malfunction, incident, failure, etc., during use of the machine, the behaviour resulting from taking the path of least resistance in carrying out a task, for some machines, the foreseeable behaviour of certain persons, such as children or disabled
Identify the type of injury possible as a result of the hazard. For the remaining parts of the process, use the mind set that if a hazard exists, it will happen. This may assist in determining what may be done to reduce or eliminate hazards. Carry out the risk estimation. This entails identifying the severity of the injury, the frequency of exposure, and then the possibility of avoiding the hazard. Indicate how the hazard can be eliminated, or mitigated. It is preferable to eliminate the hazard by design (i.e. eliminate the hazard altogether by using a different design approach, preventing access to the hazard, etc.). Where the hazard is an inherent function of the machine, and thus can not be eliminated, the use of barriers and interlocks is typically recommended, whereby the hazard is eliminated, or reduced by the time an operator reaches the hazard. Standard EN292 provides some guidelines for the design of safe machinery. At the completion of the hazard analysis, review it to determine the highest category of safety protection required. This will need to be documented, as this dictates to the end user the minimum safety category required to protect the work cell/environment. Special risks should be highlighted, and brought to the attention of the user in the documentation.
112
Appendix B
Robot Related Safety Standards
Relevant robot safety standards;
UL1740: Robots and Robotic Equipment; 2nd Ed; 1998 ANSI/RIA15.06-1999: ANSI for Industrial Robots and Robot Systems -- Safety Requirements EN10218: Industrial Robots - Safety
Risk Analysis
EN1050: Safety of Machinery -- Principles for risk assessment EN954-1: Safety of Machinery -- Safety related parts of control systems -- Part 1: General principles for design Here are some more relevant standards, which would be more applicable to an integrator. This is not an all-inclusive list. There may be other applicable standards. We provide this for reference only -- the integrator must do their own search to confirm no other standards apply. EN292:1 Safety of Machinery -- Basic concepts, general principles for design -Part 1: Basic terminology, methodology EN292:2 Safety of Machinery -- Basic concepts, general principles for design -Part 2: Technical principles and specifications EN954-1 Safety of Machinery -- Safety related parts of control systems -- Part 1: General principles for design EN983 Safety of Machinery -- Safety Requirements for fluid power systems and their components -- pneumatics EN953 Safety of Machinery -- General requirements for the design and construction of fixed and movable guards EN349 Safety of Machinery -- Minimum gaps to avoid crushing of parts of the human body EN1088 Safety of Machinery -- Interlocking devices associated with guards - principles for design and selection EN614-1 ES954-1 Safety of Machinery -- Ergonomic design principles Safety of Machinery -- Safety related parts of control systems
113
Appendix C
Purchasing Standards
Standards documents can be purchased from the following companies: Global Engineering Documents 240 Catherine Street, Suite 305 Ottawa, ON Canada K2P 2G8 http://global.ihs.com/ The above is the Canadian address, but this company is world-wide. RIA - Robotic Industries Association P.O. Box 3724 Ann Arbor, MI 48106 http://www.robotics.org/ OSHA Coordinator for International Affairs U.S. Department of Labor Occupational Safety & Health Administration Division of International Affairs - Room N3641 200 Constitution Avenue Washington, D.C. 20210 http://www.osha-slc.gov European Commission - list of harmonized standards http://europa.eu.int/comm/enterprise/newapproach/standardization/harmstds/reflist .html
114