design and implementation of a plc based industrial system

Download Design and Implementation of a PLC Based Industrial System

If you can't read please download the document

Upload: noman-bashir

Post on 29-Nov-2014

430 views

Category:

Documents


14 download

DESCRIPTION

This report incorporates a modern integration for controlling a complex manufacturing cell, consisting of Intelitek CIM conveyor belt and the ABB IRB 2400 Industrial Robot using the Allen Bradley’s SLC 5/03 Programmable Logical Controller (PLC). Also, high performance communication protocols are implemented in order to allow PLC – Robot – CIM Belt interaction using both I/O lines and TCP/IP. The manufacturing cell was initially designed to control the industrial robot and the conveyor belt independently parallel to each other via relays creating a synchronized operation of pick and place mechanism. Finally, the calculative results were verified experimentally and the real time implementation was carried out. It can be observed how controllers are integrated and synchronized in a system to perform a desired operation without conflict using real time applications such as in chemical, pharmaceutical, agricultural, food industries and even recycling.

TRANSCRIPT

N AT I ON AL

UN I V E R SI T Y

O F

S CI E N CE S

&

T E CH N O LOGY

COLLEGE OF ELECTRICAL & MECHANICAL ENGINEERING

DESIGN & I M P L E M E N TAT I O N O F A PLC BASED INDUSTRIAL SYSTEMD EPAR TM EN T O F M ECH ATR O NIC S ENGI N EERI NG2011

PROJECT ADVISORS:1 . D R 2 . LE C B R I G JAVAI D R AU F I Q B AL

GROUP MEMBERS:1 . 2 . 3 . N O UM AN O ME R R AO B A SH I R ALI K H AN

KO MA L

SAI F

SH A FI N

ACKNOWLEDGMENTSUndergoing a final year project is a daunting task; when we had started off, we had little idea of the difficulty that awaited us. It was an engaging journey right from the beginning till the end - the whole process, beginning with the selection of the project, to the gathering of information, accessing manuals, meeting the industry professionals, making objectives and then striving to meet those necessary goals was one of a kind.

So we would like to express gratitude to our advisors Brig. Dr. Javaid Iqbal and Ms Komal Rauf for their endless support in guiding us, supervising our work and critically analyzing the results and conclusions. Without their continuous support and guidance the completion of this project would not have been possible. We are also grateful to Mr Qasim, our lab supervisor, for his constant support.

We would specially thank all of our friends who nourished us through days that werent so sunny and helped us sail through the rough tides. Our utmost indebtedness is also reserved for our parents for their esoteric attention and amplitude efforts to make our study fruitful. Also we are passionately thankful to them for their moral support and devoted prayers to keep our spirits up for the different tasks of our lives.

Last but not the least; the dark stretches of a distressed heart are illuminated by none other than the light emanating from the sole source of all knowledge and wisdom Allah Almighty. He had been our Supreme Guide and a Best Friend all along.

2|Page

DEDICATED TO

ALL THOSE PEOPLE WHO BELIEVE IN AND FOLLOW THEIR OWN INNER VISION AND VOICE

3|Page

Abstract

The Final Year Project incorporates a modern integration for controlling a complex

manufacturing cell, consisting of Intelitek CIM conveyor belt and the ABB IRB 2400

Industrial Robot using the Allen Bradleys SLC 5/03 Programmable Logical Controller

(PLC).

Also, high performance communication protocols are implemented in order to allow PLC

Robot CIM Belt interaction using both I/O lines and TCP/IP. The manufacturing cell

was initially designed to control the industrial robot and the conveyor belt independently

parallel to each other via relays creating a synchronized operation of pick and place

mechanism.

Finally, the calculative results were verified experimentally and the real time

implementation was carried out. It can be observed how controllers are integrated and

synchronized in a system to perform a desired operation without conflict using real time

applications such as in chemical, pharmaceutical, agricultural, food industries and even

recycling.

4|Page

CONTENTS PAGE 06 11

11.1

IntroductionProject Overview

22.1 2.1.1

MethodologyHardware Specifications Programmable Logic Controller

12 13 13 18 26 30 37 41 42 43 45 47

2.1.2 ABB IRB 2400 Industrial Robot 2.1.3 Intelitek CIM Conveyor Belt 2.1.4 Electric Parallel Gripper 2.1.5 Data Acquisition Card NI DAQ 6519 2.2 Programming Module (Software Development)

2.2.1 Programmable Logic Controller Software (RS LOGIX 500) 2.2.2 ABB S4CPlus Teach Pendant 2.2.3 NI DAQ MAX Driver & Measurement Services Software 2.2.4 GUI Code in C# (MS Visual Basic 2008)

3

Results

49 55 74 82

Annexure A Annexure B List of Figures

5|Page

1. INTRODUCTIONAutomation is the use of controlled systems such as computers to control industrial machinery and processes, replacing human operators. The term automation translates to self-dictating in ancient Greek. It refers to any process or function which is self-driven and reduces, then eventually eliminates the need for human intervention. Computers have had a huge impact on our lives since their conception in the later half of the 20th century. From communication to transportation, from manufacturing to design, there is hardly a single aspect of modern life that has not been influenced greatly by the introduction of digital technology. One of the biggest and most measurable changes in the modern world since the onset of the digital age is in the areas surrounding automation and control. Automation is defined as the use of control systems to drive particular applications, thus reducing the need for human intervention. In terms of late 20th and early 21st century industrialization, automation is a step beyond mechanization, and is heavily linked with computerization and the rise of digital information technology. With a mechanized process, human operators are used to assist and work side by side with machinery in order to meet certain goals. With automated processes however, the work flow is shifted, reducing the need for sensory and mental human intervention. Automation plays an absolutely massive role in the 21st century world economy, where it is used in a number of individual control systems and processes. Some of the control systems that are regularly automated in the modern world include numerical control, logic control, industrial control, and information control. Computers are at the very heart of these processes, and automation would be almost unthinkable without them. Computers are the brains of modern automation, and advances in computer engineering are one of the major factors behind the spread and advancement of automated procedures throughout the modern world. Whether it is designing automated systems, controlling input and output, or analyzing feedback from automated mechanisms, computers are vital to every stage of automated control. For example, programmable logic computers, sensors, and computer-human interfaces often form a chain of operation within6|Page

industrialized processes and manufacturing environments. The Internet has had a huge effect of global culture, and because it is easier to build a website than ever before, this is also having an effect on the decentralization of knowledge. The everyday lives of people around the world have been changed dramatically through innovations in automation, especially in relation to the modern work place and the role of humans within it. Manufacturing and telephone operation are two widely noted impact areas, where automated processes regularly impact on real world jobs. While the role of automation in the 21st century workplace may be controversial at times, there is no denying that automated control is here to stay, and likely to grow and include a wider range of industries and economic sectors. The simplification of engineering and precise control of manufacturing process can result in significant cost savings. The most cost-effective way that can pay big dividends in the long run, is flexible automation; a planned approach towards integrated control systems. It requires a conscious effort on the part of plant managers to identify areas where automation can result in better deployment/utilization of human resources and savings in man-hours, down time. Automation need not be high ended and too sophisticated; it is the phased, step-by-step effort to automate, employing control systems tailored to ones specific requirements that achieves the most attractive results. That is where Industrial Electronics has been a breakthrough in the field of automation and control techniques. A constant demand for better and more efficient manufacturing and process machinery has led to the requirement for higher quality and reliability in control techniques. With the availability of intelligent, compact solid state electronic devices, it has been possible to provide control systems that can reduce maintenance, down time and improve productivity to a great extent. By installing efficient and user friendly industrial

electronics systems for manufacturing machinery or processors, one can obtain a precise, reliable and prolific means for generating quality products. As the automotive landscape is changing, emerging markets are forcing you to re-think production strategies. The effects of a tight economy and intense competition means you need suppliers to play a larger role in successfully executing the supply chain.7|Page

Considering the varied demand and increasing competition, one has to provide for flexible manufacturing process. The following table illustrates random instances of how automation has changed our lives. THE OLD WAY Records and data stored in binders and files and manual access. Not able to fill gas tanks if the station is closed or the attendant is absent. Washing dirty dishes in sink by soaking them in soap water. Copying by hand useful text from books. Climbing stairs in skyscrapers THE AUTOMATED WAY Storage in compact discs, hard drives enabling speedier automatic retrieval. Card readers and sensors have enabled automated gas pumps. Dishwasher with no human intervention except loading and unloading. Photocopying, scanning, printing Elevators and escalators increase accessibility. Programmed surgical operations achieve precision and accuracy. Robotic arms and cranes for machine assembly. Payment through Internet and Phones Motorized robots with cameras attached to them now perform these dangerous tasks, including collecting data for space travel and below the earths surface. Online access to information has bridged distances and broadened horizons. E-mails, faxes, sharing of data through computer networks.

Certain surgical operations were fatal and risky because of human error. Manual labor to assemble automobiles Payment of Utility bills by mailing. Accidents and time loss in working in dangerous areas like mines, volcanoes or in severe climactic conditions. Researchers and librarians waited for months to order a material from another location. Communication transmitted by delivery boys and post offices.

Table 1: Random instances of how Automation has changed our lives.

8|Page

1.1 PROJECT OVERVIEW

Figure 1: The Control Process

The integration of Allen Bradley SLC 5/03(PLC), ABB IRB 2400 (Industrial Robot) and Data Acquisition was to be achieved in the project.

Following are the steps involved in completing the integration of all of these components:

1. The PLC controls the Intelitek Belt.

2. The ABB Robot is being controlled by the S4C controller via teach Pendant, which also contains the I/Os card for communication with the IRB 2400 ROBOT.9|Page

3. The Data Acquisition Card is connected to a PC and takes inputs from the user through a Graphic User Interface (GUI).

The following sequence describes the inter-related working of the components:

1. The Allen Bradley PLC controls the Intelitek belt programmed in Ladder logic. The PLC checked the position of the pallet and recognized each individual pallet through Magnetic Sensors. 2. Pneumatic jacks are used to stop the pallet at the workstation. The ABB Controller sends the signal using the DSQC (I/O) Card to Allen Bradley (PLC) to stop or release the jack depending on the position of the Robotic arm.

3. The Robot is programmed using Rapid programming language. The objective is to achieve a pick and place mechanism, the code for which is stored in the robot controller.

4. The Data Acquisition Card, which is used to convert data from one form to another is connected to the P.C and was giving data to the robots controller.

5. The Data Acquisition card is fed data using a Graphic User Interface (GUI) which is programmed in C-sharp.

6. After receiving this data is converted into Digital Outputs. These unique outputs for each position are given as input to the Robots DSQC (I/O) card. And the robot is programmed to perform a unique action for each input.

7. The program contains various IF and Wait Digital Input conditions, and is in the form of Routines and Sub Routines.

10 | P a g e

8. After the Robot has performed the given task, the ABB controller sends a signal to the PLC to release the pneumatic jack and moves the next pallet in line to the workstation.

9. A parallel gripper is attached to the Robot which is task specific. In this case, the task is picking and placing wooden pegs.

10. The gripper is also controlled through the Robot controller. It sends sent signal to open/close the jaws of the gripper, at the desired time and by a desired amount.

11 | P a g e

2. METHODOLOGYThe Final Year Project report has been formulated by integrating, both the mechanical and software parts to come up with a working system. Not only, complete specifications of the hardware used in the project, relevant to the desired operation is being discussed, but also programming softwares, along with the codes, have been mentioned.

The Mechanical parts of the system consist of the:

1. Programmable Logic Controller (PLC),

2. ABB Industrial Robot (IRB 2400),

3. Intelitek CIM Conveyor Belt,

4. Electric Parallel Gripper 5. NI DAQ 6519

The Software parts of the system consist of the:

1. ABB S4Cplus Teach Pendant

2. NI DAQ MAX Driver & Measurement Services Software

12 | P a g e

2.1

HARDWARE SPECIFICATIONS

Hardware is the general name for the physical artifacts of a technology. it is also the vessel by which humans can interact with the content that makes technology meaningful. Hardware critical to the successful operation of the control process is described below:

2.1.1 Programmable Logic ControllerWhen it comes to flexibility and power, the Allen-BradleySLC TM 500 family from Rockwell Automation is a proven solution of small logic controllers. Designed with smaller to mid-sized automation

applications in mind, the SLC 500 provides powerful, reliable performance without requiring the unused capacity and features of full-size programmable logic controllers.

The SLC 500 was one of the first fullfeatured, small controllers on the market,Figure 2: Allen Bradley SLC TM 500

and it remains the gold standard in small logic controllers more than a decade after

its introduction.

Its a rugged chassis based platform, which means it can configure exactly the standalone or distributed system needed for dependable control of a control based application.

In fact, the SLC 500 is known for providing cost-efficient, reliable control in hundreds of thousands of applications around the world everything from amusement park rides and microbreweries to pharmaceutical and food processes.

13 | P a g e

The Small Controller for Big Applications The SLC 500 is small, chassis-based, modular family of programmable controller and I/O. The smaller size of the SLC means that it can be used in applications where the size and overhead of a traditional, full-size programmable logic controller cannot be afforded. The SLC platform has the horsepower to run all of the critical industrial applications. When tight budgets, performance, flexibility and rugged reliability are the key factors, the SLC 500 family can be the proven solution.

The SLC is suited for change. It can be stand alone or networked. It can control a single machine, or it can be distributed throughout a wide area for SCADA applications. With an SLC running the application, processor capabilities can be easily expanded or add I/O as the system grows.

Range of Capabilities The SLC 500 processors are designed to offer a wide range of choices in memory (from 1K to 64K), chassis options (4, 7, 10, or 13 slot), instruction set, power supplies and built-in network capabilities, so the control system can be tailored exactly to meet the application requirements.

These processors have an extensive installed base covering a broad range of applications. And ongoing enhancements ensure that the SLC family will grow with the application.

Processor Options The SLC 500 is an adaptable platform. The family is made up of five processor models: the 5/01, 5/02, 5/03, 5/04, and 5/05. Because of this array of processors, the SLC 500 has the flexibility to control simple machines or a complex process small or large, these processors have the scalability you need for diverse applications. The Final Year Project entails the SLC 5/03 processor for the Industrial Process.

14 | P a g e

Floor-to-Top-Floor Communications With available built-in Ethernet, the SLC 5/03's integrated Web capabilities allows to monitor production data from any computer with a standard Web browser. The SLC 500 can communicate plant-floor data in data acquisition, supervisory control, program management, statistical quality control, production scheduling, and material tracking applications over an Ethernet network.

A choice of networking options provides superior connectivity. Every SLC 500 is offered with built-in DH-485 communications. In addition, an SLC 500 processor that can support Ethernet, or one that can perform high-speed peer-to-peer communications with built-in Data Highway Plus TM.

SLC 5/03 Processor The Allen-Bradley SLC 5/03 is a small, chassis-based, modular family of programmable controllers and I/O. With its multiple processor choices, numerous power supply options and extensive I/O capacity, the SLC 5/03 allows to create a system specifically designed for the integration of ABB IRB 2400 and the Intelitek CIM conveyor belt to create the industrial application.

As one of the first full-featured small controllers on the market, it remains the gold standard in small logic controllers more than a decade after its introduction. The SLC 5/03 processors configures modular controllers of up to 4096 inputs plus 4096 outputs and a memory of 8K or 16K words.

By installing an optional scanner module into one of the 30 I/O module slots, Remote I/O or Device Net I/O can be added to the system. They offer 19 additional instructions, including a message instruction for initiating peer-to peer communication.

SLC 5/03 additionally has a second built-in communication port an RS-232-C port that can be configured for ASCII or DF1 protocol, and can be configured for connection15 | P a g e

to a 1761-NET-AIC converter to provide access to a DH-485 network. SLC 5/03 processors provide bit-instruction execution times of 0.44ms and an overall system throughput of up to 10 times faster than competitive processors.

Additional capabilities include: floating point math, online programming and run-time editing, flash memory upgrades, built-in key-switch, and a built-in real-time clock and calendar. RSLogix 500 software is a 32-bit Windows ladder logic programming package for the SLC 5/03.

Benefits Powerful, yet affordable - SLC 500 programmable controllers provide excellent value with extensive capabilities to address a broad range of applications including material handling, HVAC control, high speed assembly operations, small process control, simple motion control, and SCADA.

Modularity - Modular processes, power supplies, I/O, memory options, and communication interfaces allow for a configurable and expandable system. Configure your system for the number of I/O, the amount of memory, and the communication networks needed. Later, you can expand the system by adding I/O, memory, or communication interfaces.

Advanced instruction set - Includes indirect addressing, high level math capability, and a compute instruction.

Communication Network Versatility - Choose from on-board Ethernet, DH+, or DH485, as well as options for Control Net, Device Net, or Remote I/O communications.

16 | P a g e

Broad selection of I/O - Select from over 60 modules to control discrete, analog, and temperature signals. Third-party specialty modules are also available from Encompass partners to customize control solutions for your application needs.

Industrially hardened product - Designed to withstand the vibrations, thermal extremes, and electrical noise associated with harsh industrial environments.

Windows programming software - RSLogix 500 programming software maximizes productivity by simplifying program development and troubleshooting.

Certifications UL, C-UL, CE, C-Tick

17 | P a g e

2.1.2 ABB IRB 2400 Industrial RobotThe ABB IRB 2400 industrial robot is one of the most popular factory automation robots in its class. It comprises a complete family of application optimized robots that maximize the efficiency of interfacing options and end effectors arm control.

The IRB 2400 in its different versions and best accuracy gives excellent performance in material handling, machine tending and process applications.

IRB 2400 offers increased production rates, reduced lead times and faster delivery for your manufactured product.

Overview

Reliable High production up time IRB 2400 is the worlds most

popular

industrial robot.

The

robust

construction and use of minimum parts contribute to high reliability and long intervals between maintenance.Figure 3: IRB 2400 ABB Industrial Robot

Fast Short cycle times

ABB has a unique motion control of the robot that optimizes the acceleration and retardation, resulting in shortest cycle time possible.

18 | P a g e

Accurate Consistent parts quality

Best in class regarding path accuracy and position repeatability (RP = 0.06 mm)

Strong Maximized utilization

Payload options are between 7 -20 kg. Max reach 1.810 m.

Robust Harsh production environment

IP 67 classified, steam washable, clean room (class 100) and Foundry Plus optional.

Versatile Flexible integration and production

All models offered with inverted mounting capability.

The IRB 2400 is a real hard worker. It can take additionally 35 kg load on axis 1 and 15 kg additional load on the upper arm - still keeping 100 % duty cycle.

The IRB 2400L model has 1.8 meters reach, 7 kg load capacity, large working range and slim arm and wrist. Other models offer handling capacity of up to 20 kg, excellent motion control, large load offset and unlimited motion in axis 6.

IRB 2400 robot gives excellent performance in the material handling thus making it favorable for the pick & place application.

19 | P a g e

IRB 2400 comes with:

1. Arm

2. Control cabinet (including I/O):

S4CPlus Industrial Robot Controller Overview

S4Cplus gives you superior motion control. It features dynamic model based control,

QuickMove for short cycle times, and the TrueMove function for high precision path following ability independent of robot speed.

The S4Cplus system configuration capability and the powerful programming language RAPID make it easy to set up the controller for a wide range of applications.Figure 4: S4C plus Controller

The controller itself enables quick integration of additional hardware. The unit is adaptable for use in harsh environments and offers a high level of reliability and user safety. S4Cplus is used with all ABB robots.

S4Cplus offers extensive communications possibilities to reduce installation costs and facilitate integrated solutions. Two built-in Ethernet channels provide for easier service and factory networking. There are field bus and serial channels for PLC and PC connections.

20 | P a g e

The controller supports TCP/IP, DNS and other protocols. A dedicated robot protocol, RAP, is available for control and monitoring. Superior performance and easy maintenance are assured by extensive monitoring of fans, battery, and temperature and supply voltages.

Control Principles

Dynamic Model

Self-Optimization

Coordinated External Axes Control

12 Axes Interpolation

7-Frame Coordinate Chain

Corner Path Concept

Automatic Singularity Handling

Motion Supervision

Control Hardware Multi-Processor System

PCI Bus With DRAM

Pentium CPU

21 | P a g e

Flash Disk For Mass Storage

20s UPS Back-Up On Power Failure

Control Software Object-Oriented Design

High-Level RAPID Robot Programming Language

Portable, Open, Expandable

PC-DOS File Format

Robot ware Software Products

Pre-Loaded Software.

Electrical Connections Supply Voltage 200-600 V, 50-60 Hz Transformer Included Physical Cabinet Size (hxwxd) 950 X 800 X 620 Mm Same Size for Complete Robot Range

Weight

250 Kg

Cabinet Variants

For Process Hardware Wheels Can Be Mounted22 | P a g e

3. Cables and Teach Pendant. Superior motion control is provided by the ABB S4Cplus robot controller. With Quick Move for short cycle times and True Move for high precision, the S4Cplus system is easily programmed for multiple applications. It utilizes the RAPID programming language and is adaptable for use in harsh environments.Figure 5: Teach Pendant Panel

High reliability and extensive communication possibilities reduce installation costs. Superior performance is ensured by the advanced monitoring of fans, temperatures, and robot movements.

Control Pendant

Portable and Light

Joystick and Keypad

5 User-Designated Keys

Display 16 Lines X 40 Characters

Windows-Style Communication

Emergency Stop and Enabling Device

All Programming Functions Available

23 | P a g e

PC

Connections for PC (Ethernet and Serial Channels)

On-Line

Factory ware Interface for Monitoring and Control

Off-Line

S4Cplus software on your pc (Virtual Controller)

Quick teach for Training

Programmer for Programming

Robotstudio for Robot Simulation

RRS

For Robot Simulation Tools

Languages

Choice between 11 National Languages for Communication and Manuals. Possibility to Add User Dialogues and References

Maintenance

LEDs and Test Points

Diagnostic Software

Recovery Procedures

Logging with Time Stamp

Safety

Safety and Emergency Stops

Channel Safety Circuits with Supervision

Position Enable Device

24 | P a g e

Electrical Connections Supply voltage 200600 V, 50/60 Hz

Power consumption ISO-Cube at max speed 0.67 kW

Environment Ambient temperature for mechanical unit:

During operation: +5C (41F) to + 45C (113F)

Relative humidity Max. 95%

Main Applications Arc Welding,

Cutting/Deburring,

Gluing/Sealing,

Grinding/Polishing,

Machine Tending,

Material Handling

25 | P a g e

2.1.3 Intelitek CIM Conveyor BeltComputer Integrated Manufacturing (CIM) is the integration, through computers, of design, engineering, manufacturing, logistics, warehousing and distribution, customers and suppliers, sales and marketing activities, financial management, and the overall control of an enterprise. Over the past two decades, hundreds of manufacturing companies worldwide have introduced CIM technologies into their organizations.

The

resulting

benefits

-

reduced manufacturing costs, increased productivity,

improved product quality, greater flexibility and faster response time to customer needs - have increased these companies'Figure 6: Intelitek CIM Conveyor Belt

competitive advantages. Intelitek's CIM systems comprise industrial quality equipment that allows students to have hands-on experience with reallife industrial applications within a laboratory environment. A CIM system includes a number of control systems that are interfaced to provide both individual control of work stations and overall control ofFigure 7: Pallet Tracking System

26 | P a g e

the systems. Moreover, the OpenCIM

Windows-based software provides numerous CIM capabilities: CIM cell and station management; part, order and machine definition; inventory control and tracking; MRP; report generation andFigure 8: Individual Pallet movement on the CIM Conveyor Belt

production scheduling. The conveyor frame is constructed of extruded, black anodized aluminum, and its moving belt is a double flexible-chain rail. To maximize efficiency of part conveyance in the CIM system, pallets are not removed from the conveyor.

Instead, the pallets carry part templates (holders) that are loaded and unloaded at each station by robots and manipulators. The pallets are thus free to transport parts and materials to and from any CIM station. Magnetic codes embedded on the underside of the pallets enable tracking.

To achieve a proper pallet tracking function the following additional products are required: Conveyor stops alongside each CIM workstation include magnetic sensors for pallet detection and pneumatic pistons for halting and releasing the pallets. A PLC control unit monitors and manages the flow of pallets on the CIM conveyor. The PLC (Programmable Logic Controller) can control and monitor the flow of pallets on the conveyor with the help of sensors and actuators that are built into the stop stations. To achieve a proper pallet tracking function the following additional products are required:

27 | P a g e

Design and Construction: 1. PLC cabinet includes industrial PLC unit (ALLEN BRADLEY)

2. Hardware system for monitoring and managing the flow of pallets on the conveyor.

3. I/Os configured for up to 5 Stop Stations.

4. Pre-Programmed for real-time identification and tracking of pallets

Pallet Tracking System Hardware/software system for real-time identification and tracking of pallets,

Tracks location of all pallets and materials.

Tracks production stage and destination of each product.

Prevents interruption of production cycle if pallet is manually removed or placed elsewhere on the conveyor.

PLC Control System Hardware/software system for monitoring and managing the flow of pallets on the conveyor.

PLC cabinet includes industrial PLC unit (Allen-Bradley, Omron or Siemens); I/OS configured in accordance with customer specifications and conveyor requirements.

28 | P a g e

Station Indicator Lights Units with red and green lights for indicating the status of each conveyor station

Barcode Scanning System Hardware/software system for online identification and verification of templates.

Optional on conveyor; usually installed at ASRS station.

29 | P a g e

2.1.4 Electric Parallel GripperThe end-effector used for pick and place purposes is the Techno-Sommers Electric Parallel Gripper. Electric parallel grippers have robust T-slot guide, sealed round guide, uncomplicated startup, power adjustable via potentiometer.

Other features such as high reliability and long service life, compact design and minimal weight, central opening and closing, high precision with any desired installation

position and protection type IP67 are useful insights.

Figure 9: Electric Parallel Gripper

Features: 1) Compact electrically driven parallel gripper with gripping force up to 350 N and 6 mm stroke per jaw.

2) Easiest energy supply using 24V machine voltage, independent of pneumatics and hydraulics.

3) Position inquiry, regulable gripping force and mechanical gripping force safety (On version with 6 mm stroke per jaw)

30 | P a g e

A functional diagram illustrating the different features of the gripper is shown below:

Terms:

1) Gripping force: Arithmetic sum of the individual forces occurring at the jaws. 2) Closing/opening time: Required time for the gripper jaws to cover the maximum stroke distance 3) Repeatability: At end stops after 50/100 consecutive cycles 4) Gripping force safety: the gripping force is guaranteed by the shape of curve disc. It is only available if the curve disc travels to its stroke end during gripping. Only on versions with 6 mm stroke per jaw. 5) Cycle: Angle of rotation covered by the drive motor in an open and close movement. 6) Maintenance: Recommended at 5 mil. cycles Long maintenance intervals keep costs down Long lifespan31 | P a g e

Individual Parts

32 | P a g e

Other

components

necessary

for

the

operation

of

the

gripper

include:

1) KAG 500 gripper. 2) Position Sensor. 3) Centering Sleeves.

Figure 10: Cable (KAG500) Specifications

33 | P a g e

Gripper Specifications

The force and moments diagram of the gripper jaw are as follows:

Figure 11: Gripper Specifications

34 | P a g e

CAD Drawings: Electric Parallel Gripper

Figure 12: CAD Drawings of the Electric Parallel Gripper

35 | P a g e

Connection Cable The cable used is the KAG 500 for proximity switches. The layout of the cable is given below.

Figure 13: KAG 500 Cable Specifications

36 | P a g e

2.1.5

NI DAQ 6519

Figure 14: Circuit Diagram (NI DAQ 6519)

The 6519 is probably not the ideal card to interface between the ABB IRB 2400 and the computer, but we were still able to interface the two components with a little circuit modification which is shown above. It requires external resistors and the following connection did the trick: 1. When the line on the 6519 is driven low, current is sunk through the 6519 and all of the voltage is dropped across the pull-up resistor. 2. When the line on the 6519 is high (left floating), the 6519 does not sink any current and the voltage is divided between your pull-up resistor and your load. 3. Choosing the value of the resistor is important. From the specifications for our S4C+ controller, the input current required is 5.5 mA @ 24 V. Assuming a resistive load, let's say the load is about 4.36 k. The maximum current for the 6519 depends on a number of circumstances detailed in the specifications, but let's assume we want to keep it under 100 mA. The minimum voltage required on the 24V input to register as logic high is 15V according to the other. 4. So, the minimum value of the pull-up resistor should be 240 Ohms in order to avoid drawing over 100 mA when driving the line low on the 6519. Using a 240 Ohm resistor should drop the voltage as seen across the load to about 22.75 V.37 | P a g e

5. The maximum value of the pull-up would be about 4.6 kOhm. This would still provide the 15V across the load with the above assumptions. So we choose the value 3.3 kOhm, which was between 240 Ohms and 4.6 kOhms and provided the ultimate working conditions for the data acquisition card.

Specifications NI 6519 device is industrial 32- or 64-channel isolated digital I/O interfaces for PCI and PXI/CompactPCI systems. You can wire each input bank in a source or sink configuration and input and output at digital levels up to 30 VDC with high current switching capability. NI 6519 device is ideal for general-purpose data acquisition applications as well as industrial control and automated manufacturing test. With high current drive and isolation, you can connect the digital I/O directly to a wide array of 24 V electronic devices, sensors, and actuators. NI 6519 device offers superior features and high value for industrial control and manufacturing test applications such as factory automation, embedded machine control, and production line verification. This device has been designed to incorporate the latest hardware technologies and provide innovative features for applications requiring ease of use, high reliability, and performance. NI 6519 Signal Descriptions

Table2: Signal Description

38 | P a g e

NI PCI-6519 (16 Inputs, 16 Sink Outputs) Low-Cost 37-Pin Industrial Digital I/O -- 30 V, Bank-Isolated 1) 16 bank-isolated sink outputs (30 VDC, 475 mA for one channel, 125 mA for all channels). 2) High-reliability industrial feature set: guaranteed industrial 24 V logic thresholds. 3) Watchdogs, programmable powerup states, change detection, input filters, high current drive. 4) NI-DAQmx Measurement Services software for highest productivity and performance (v 7.2 and higher). 5) Low-cost solution with advanced features for industrial control and manufacturing test applications.

Figure 15: NI PCI 6519 Internal Architecture

6) 16 bank-isolated sink/source inputs (30 VDC).

Figure 16: Physical requirements for NI PCI 6519

39 | P a g e

Digital I/O Connector The 37-pin D-Sub connector on NI 6510/16/17/18/19 devices connects to 37-pin accessories including the SH37F-37M shielded digital I/O cable with the CB37FH DIN-rail-mountable connector block

. NI-DAQmx Software Technology NI 651x devices use NI-DAQmx measurement services software, which is included free with the purchase of an NI 651x device and is available for download from ni.com/downloads. With NI-DAQmx, you can program your NI digital I/O device in NI LabVIEW, ANSI C, Microsoft Visual C++, and the Microsoft languages C# .NET andFigure 17: 37-pin D-sub Connector

Visual Basic .NET. You can access the full functionality and state-of-the art hardware technology of your NI 651x devices.Figure 18: Isolated Outputs

Isolated Outputs Power-on state0 (open), default; user-programmable to 0 or 1 Maximum switching voltage 30 VDC

40 | P a g e

2.2

PROGRAMMING MODULE (SOFTWARE DEVELOPMENT)

Computer software, or just software, is a collection of computer programs and related data that provide the instructions for telling a computer what to do and how to do it. In other words, software is a conceptual entity which is a set of computer programs, procedures, and associated documentation concerned with the operation of a data processing system.

Software refers to one or more computer programs and data held in the storage of the computer for some purposes. In other words software is a set of programs, procedures, algorithms and its documentation. Program software performs the function of the program it implements, either by directly providing instructions to the computer hardware or by serving as input to another piece of software.

The term was coined to contrast to the old term hardware (meaning physical devices). In contrast to hardware, software is intangible, meaning it "cannot be touched". Software is also sometimes used in a more narrow sense, meaning application software only. Sometimes the term includes data that has not traditionally been associated with computers, such as film, tapes, and records.

41 | P a g e

2.2.1 Programmable Logic Controller (PLC) SoftwareRS LOGIX 500 software is used to program the PLC, which supports ladder diagram programming. Initially we read instruction set for our PLC. To understand each instruction we wrote small codes and tested them on LEDs. We then understood each field of timer instruction and how to relate them with other timers.

Though we didn't program the PLC as the pallet recognizing system code was already intact for the Conveyor Belt keeping in view the pick and pick operation. Codes were first tested on LEDs without connecting the actual hardware. During this, we found the necessity of latching the bit, even if rung conditions goes false, to maintain the status of the bit as high,. We also studied to check the status of I/Ps, O/Ps, bits and timer fields by observing the I/P, O/P, binary and timer files respectively.

We also learnt that there would not be more than 4 branches for any of the rung. In addition, any O/P can be energized in single rung only. So, we studied to eliminate this problem by using a dummy bit in different rungs and using the status of this bit, O/P can be energized in single rung only. E.g. in our code, we used dummy bits to give logic high to move one of the base motor in forward direction.

While copying timer contents to an integer file, we found that timer must be ON otherwise zero will be copied. To indicate the presence of an obstacle, sensor I/P is latched in a dummy bit and using compare instructions like LES, GRE, EQU accumulated time in corresponding timers were stored in respective integer files in order to identify the exact position of an obstacle. Also by checking the status of this dummy bit, different routines were executed to perform the predefined task.

42 | P a g e

2.2.2 ABB S4Cplus Teach PendantProgramming the robot involves choosing instructions and arguments from lists of appropriate alternatives. Users do not need to remember the format of instructions, since they are prompted in plain English. See and pick is used instead of remember and type.

The programming environment can be easily customized using the teach pendant.

Shop floor language can be used to name programs, signals, counters, etc.

New instructions can be easily written.

The most common instructions can be collected in easy-to-use pick lists.

Positions, registers, tool data, or other data, can be created.

Programs, parts of programs and any modifications can be tested immediately without having to translate (compile) the program.

Movements A sequence of movements is programmed as a number of partial movements between the positions to which you want the robot to move. The end position of a movement is selected either by manually jogging the robot to the desired position with the joystick, or by referring to a previously defined position.

43 | P a g e

Testing programs Several helpful functions can be used when testing programs. For example, it is possible to Start from any instruction Execute an incomplete program

Run a single cycle.

Execute forward/backward step-by-step.

Simulate wait conditions.

Temporarily reduce the speed.

Change a position.

Tune (displace) a position during program execution.

For programming code: Annex. A

44 | P a g e

2.2.3 NI DAQ MAX Driver & Measurement Services Software

Data acquisition (DAQ) is the process of measuring an electrical or physical phenomenon such as voltage, current, temperature, pressure, or sound. PC-based data acquisition uses a combination of modular hardware and flexible software to transform your standard laptop or desktop computer into a user- defined measurement or control system.

Data acquisition hardware acts as the interface between a computer and signals from the outside world. It primarily functions as a device that digitizes incoming analog signals so that the computer can interpret them.

Connection to Signals Data acquisitions devices typically consist of one or more of the following functions for measuring different types of signals:

Analog inputs measure analog signals

Analog outputs generate analog signals

Digital inputs/outputs measure and generate digital signals

Counter/timers count events or generate pulses

Multifunction data acquisition boards combine analog, digital, and counter operations on a single device. Additionally, some data acquisition boards include integrated signal conditioning specific to a signal or sensor type. NI-DAQmx driver software goes far beyond a basic DAQ driver to deliver increased productivity and performance.45 | P a g e

NI-DAQmx driver software and additional measurement services software included with every NI-DAQmx supported DAQ device provide:

A single programming interface for programming analog input, analog output, digital I/O, & counters on hundreds of multifunction DAQ hardware devices.

The same VIs and functions in NI LabVIEW, NI LabWindowsTM/CVI, Visual Basic, Visual Studio .NET, and C/C++

NI Measurement & Automation Explorer, DAQ Assistant, and LabVIEW Signal Express LE software to save time in configuration, development, and data logging.

The NI-DAQmx programming interface makes it easy to develop complex data acquisition applications by providing identical functions and VIs for all types of operations.

For example, rather than using a Digital Read function to read data from digital lines and an Analog Read function to read analog data, you use one function to read both digital and analog data. Functions like these, known as polymorphic functions, take on different characteristics based on their input values.

The combination of functions into one interface results in a flatter learning curve for you, not only for one device but also for an entire family of devices. Rather than learning four different ways to program the four types of operations (analog input, analog output, digital I/O, and counter/timer) available on NI's DAQ devices, you can now learn one way and reuse that knowledge to program the others.

For Visual Basic Code: Annex. B

46 | P a g e

2.2.4 GUI Code

Figure 19: Graphic User Interface for specifying the Position

Instructions for running: 1. Select the channel parameters on the DAQ device to be written. 2. The writing port can be selected using the drop down menu. 3. The writing ports are defined only for Ports 2 and 3. 4. You must specify exactly 8 lines in the channel string box. Steps: 1. Select the position by clicking on the buttons corresponding to each position.\ 2. Create a DigitalSingleChannelWriter and call the WriteSingleSampleMultiLine method to write the data to the channel. 3. Digital line one of Port 2 is used as a common line along with setting the output on all the six positions. 4. When a TRUE statement is written on a line, the output of that line is set as LOW. 5. Similarly, when a FALSE statement is written on a line, the output of the line is set as HIGH. 6. The callback function of all the six positions contains an array, which passes on Boolean data along each line of the channel selected. For example, if we select Position One, the data written on the individual lines will be TRUE, apart from47 | P a g e

line one and line two which are written as FALSE. Where line one is the common line and line two is specific for position one. 7. Dispose the Task object to clean-up any resources associated with the task using the reset button. 8. The library used for programming the card is NationalInstruments.DAQmx.

I/O Connections Overview: Make sure your signal output terminals match the Lines text box. In thiscase wire the item to receive the signal to the specified eight digitallines on your DAQ Device.

An example of the callback function of Position One is shown as below:private void button_pos_1_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = false; dataArray[3] = true; dataArray[4] = true; dataArray[5] = true; dataArray[6] = true; dataArray[7] = true; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; Thread.Sleep(tm); reset (); } }

48 | P a g e

2.3

RESULTS

A stepwise pictorial operation has been incorporated to show the complete loop:

STEP 1:

The Graphic User Interface (GUI) to select the Pallet position to start the Pick & Place process loop.

49 | P a g e

STEP 2:

The Gripper opens and the Robotic arm moves to the selected position on the pallet, in this case it is Position 1.

50 | P a g e

STEP 3:

The Gripper closes, grabs the bullet peg, and the Robotic arm picks it up from the pallet case.

51 | P a g e

STEP 4:

The Robotic arm moves to the CIM Conveyor Belt where it shall be placing the bullet peg in the pallet case at position 1. The pallets have stopped as the pneumatic jack is lifted. This is the time where work is being done on the pallet case. As the work (robotic arm places the bullet peg in the pallet case on the conveyor belt at position 1) is done, the robotic arm moves to the HOME position and waits for the next instruction (Position). Meanwhile the pneumatic jack on the belt is pulled down, the pallet moves forward, and brings in line the next pallet case.

52 | P a g e

STEP 5:

The Gripper now picks & lifts the bullet peg from Position 2, as selected on the GUI, thus continuing the whole process again.

53 | P a g e

STEP 6:

The Robotic arm now works on the selected located. The gripper opens and places the bullet peg in the pallet case at Position 2.

54 | P a g e

Annexure AProgram: Specifying the Position; Instructions for running: 1. Select the channel parameters on the DAQ device to be written. Note: You must specify exactly 8 lines in the channel string box. Steps: 1. Create a new task and a Digital Output channel. 2. Create a DigitalSingleChannelWriter and call the WriteSingleSampleMultiLine method to write the data to the channel. 3. Dispose the Task object to clean-up any resources associated with the task. 4. Handle any DAQ Exceptions, if they occur. I/O Connections Overview: Make sure your signal output terminals match the Lines text box. In this case wire the item to receive the signal to the specified eight digital lines on your DAQ Device.For more information on the input and outputterminals for your device, open the NI-DAQmx Help, and refer to the NI-DAQmx Device Terminals and Device Considerations books in the table of contents.

55 | P a g e

/ using System; usingSystem.Drawing; usingSystem.Collections; usingSystem.ComponentModel; usingSystem.Windows.Forms; usingSystem.Data; usingNationalInstruments.DAQmx; usingSystem.Threading;

namespaceNationalInstruments.Examples.WriteDigChan { /// /// Summary description for Mainform. /// public class MainForm : System.Windows.Forms.Form { privateSystem.Windows.Forms.LabelchannelParamsLabel; privateSystem.Windows.Forms.LabelwarningLabel; privateSystem.Windows.Forms.ComboBoxphysicalChannelComboBox; private Button button_pos_1; private Button button_pos_2; private Button button_pos_3; private Button button_pos_4; private Button button_pos_5; private Button button_pos_6; private Button button_close; private Button button_reset; privateint tm; privatePictureBox pictureBox1;

56 | P a g e

/// /// Required designer variable. /// privateSystem.ComponentModel.Container components = null;

publicMainForm() { // // Required for Windows Form Designer support // InitializeComponent();

tm = 2000; // // TODO: Add any constructor code after InitializeComponent call // physicalChannelComboBox.Items.AddRange(DaqSystem.Local.GetPhysicalChannels(Ph ysicalChannelTypes.DOLine, PhysicalChannelAccess.External)); }

/// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose();57 | P a g e

} } base.Dispose( disposing ); }

#region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); this.channelParamsLabel = new System.Windows.Forms.Label(); this.warningLabel = new System.Windows.Forms.Label(); this.physicalChannelComboBox = new System.Windows.Forms.ComboBox(); this.button_pos_1 = new System.Windows.Forms.Button(); this.button_pos_2 = new System.Windows.Forms.Button(); this.button_pos_3 = new System.Windows.Forms.Button(); this.button_pos_4 = new System.Windows.Forms.Button(); this.button_pos_5 = new System.Windows.Forms.Button(); this.button_pos_6 = new System.Windows.Forms.Button(); this.button_close = new System.Windows.Forms.Button(); this.button_reset = new System.Windows.Forms.Button(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // channelParamsLabel //58 | P a g e

this.channelParamsLabel.FlatStyle = System.Windows.Forms.FlatStyle.System; this.channelParamsLabel.Location = new System.Drawing.Point(16, 24); this.channelParamsLabel.Name = "channelParamsLabel"; this.channelParamsLabel.Size = new System.Drawing.Size(112, 16); this.channelParamsLabel.TabIndex = 1; this.channelParamsLabel.Text = "Select the Writing Port"; // // warningLabel // this.warningLabel.FlatStyle = System.Windows.Forms.FlatStyle.System; this.warningLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.warningLabel.Location = new System.Drawing.Point(107, 71); this.warningLabel.Name = "warningLabel"; this.warningLabel.Size = new System.Drawing.Size(320, 32); this.warningLabel.TabIndex = 3; this.warningLabel.Text = "PLEASE SPECIFY THE POSITION"; // // physicalChannelComboBox // this.physicalChannelComboBox.Items.AddRange(new object[] { "Dev1/Port2/line0:7", "Dev1/Port3/line0:7"}); this.physicalChannelComboBox.Location = new System.Drawing.Point(175, 21); this.physicalChannelComboBox.Name = "physicalChannelComboBox"; this.physicalChannelComboBox.Size = new System.Drawing.Size(184, 21); this.physicalChannelComboBox.TabIndex = 2; this.physicalChannelComboBox.Text = "Dev1/Port2/line0:7"; //

// button_pos_159 | P a g e

// this.button_pos_1.Location = new System.Drawing.Point(32, 128); this.button_pos_1.Name = "button_pos_1"; this.button_pos_1.Size = new System.Drawing.Size(75, 23); this.button_pos_1.TabIndex = 21; this.button_pos_1.Text = "Position 1"; this.button_pos_1.UseVisualStyleBackColor = true; this.button_pos_1.Click += new System.EventHandler(this.button_pos_1_Click); // // button_pos_2 // this.button_pos_2.Location = new System.Drawing.Point(352, 128); this.button_pos_2.Name = "button_pos_2"; this.button_pos_2.Size = new System.Drawing.Size(75, 23); this.button_pos_2.TabIndex = 22; this.button_pos_2.Text = "Position 2"; this.button_pos_2.UseVisualStyleBackColor = true; this.button_pos_2.Click += new System.EventHandler(this.button_pos_2_Click); // // button_pos_3 // this.button_pos_3.Location = new System.Drawing.Point(32, 192); this.button_pos_3.Name = "button_pos_3"; this.button_pos_3.Size = new System.Drawing.Size(75, 23); this.button_pos_3.TabIndex = 23; this.button_pos_3.Text = "Position 3"; this.button_pos_3.UseVisualStyleBackColor = true; this.button_pos_3.Click += new System.EventHandler(this.button_pos_3_Click); //

// button_pos_460 | P a g e

// this.button_pos_4.Location = new System.Drawing.Point(352, 192); this.button_pos_4.Name = "button_pos_4"; this.button_pos_4.Size = new System.Drawing.Size(75, 23); this.button_pos_4.TabIndex = 24; this.button_pos_4.Text = "Position 4"; this.button_pos_4.UseVisualStyleBackColor = true; this.button_pos_4.Click += new System.EventHandler(this.button_pos_4_Click); // // button_pos_5 // this.button_pos_5.Location = new System.Drawing.Point(32, 262); this.button_pos_5.Name = "button_pos_5"; this.button_pos_5.Size = new System.Drawing.Size(75, 23); this.button_pos_5.TabIndex = 25; this.button_pos_5.Text = "Position 5"; this.button_pos_5.UseVisualStyleBackColor = true; this.button_pos_5.Click += new System.EventHandler(this.button_pos_5_Click); // // button_pos_6 // this.button_pos_6.Location = new System.Drawing.Point(352, 262); this.button_pos_6.Name = "button_pos_6"; this.button_pos_6.Size = new System.Drawing.Size(75, 23); this.button_pos_6.TabIndex = 26; this.button_pos_6.Text = "Position 6"; this.button_pos_6.UseVisualStyleBackColor = true; this.button_pos_6.Click += new System.EventHandler(this.button_pos_6_Click); //

// button_close61 | P a g e

// this.button_close.Location = new System.Drawing.Point(390, 316); this.button_close.Name = "button_close"; this.button_close.Size = new System.Drawing.Size(75, 23); this.button_close.TabIndex = 27; this.button_close.Text = "Close"; this.button_close.UseVisualStyleBackColor = true; this.button_close.Click += new System.EventHandler(this.button_close_Click); // // button_reset // this.button_reset.Location = new System.Drawing.Point(284, 316); this.button_reset.Name = "button_reset"; this.button_reset.Size = new System.Drawing.Size(75, 23); this.button_reset.TabIndex = 28; this.button_reset.Text = "Reset"; this.button_reset.UseVisualStyleBackColor = true; this.button_reset.Click += new System.EventHandler(this.button_reset_Click); // // pictureBox1 // this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); this.pictureBox1.Location = new System.Drawing.Point(138, 106); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(178, 193); this.pictureBox1.TabIndex = 29; this.pictureBox1.TabStop = false; //

// MainForm62 | P a g e

// this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(477, 351); this.Controls.Add(this.pictureBox1); this.Controls.Add(this.button_reset); this.Controls.Add(this.button_close); this.Controls.Add(this.button_pos_6); this.Controls.Add(this.button_pos_5); this.Controls.Add(this.button_pos_4); this.Controls.Add(this.button_pos_3); this.Controls.Add(this.button_pos_2); this.Controls.Add(this.button_pos_1); this.Controls.Add(this.physicalChannelComboBox); this.Controls.Add(this.warningLabel); this.Controls.Add(this.channelParamsLabel); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.Name = "MainForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Write Dig Channel"; this.Load += new System.EventHandler(this.MainForm_Load); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); } #endregion /// /// The main entry point for the application. ///

[STAThread]63 | P a g e

static void Main() { Application.EnableVisualStyles(); Application.DoEvents(); Application.Run(new MainForm()); } private void WriteButton_Click(object sender, System.EventArgs e) { /* Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text,"", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = bit0CheckBox.Checked; dataArray[1] = bit1CheckBox.Checked; dataArray[2] = bit2CheckBox.Checked; dataArray[3] = bit3CheckBox.Checked; dataArray[4] = bit4CheckBox.Checked; dataArray[5] = bit5CheckBox.Checked; dataArray[6] = bit6CheckBox.Checked; dataArray[7] = bit7CheckBox.Checked; DigitalSingleChannelWriter writer = new

DigitalSingleChannelWriter(digitalWriteTask.Stream);64 | P a g e

writer.WriteSingleSampleMultiLine(true, dataArray); } } catch(DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; }*/ }

private void button_pos_1_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = false; dataArray[3] = true; dataArray[4] = true; dataArray[5] = true; dataArray[6] = true; dataArray[7] = true;65 | P a g e

DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; Thread.Sleep(tm);

reset(); } }

private void button_pos_2_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = true;66 | P a g e

dataArray[3] = false; dataArray[4] = true; dataArray[5] = true; dataArray[6] = true; dataArray[7] = true; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; Thread.Sleep(tm); reset(); } }

private void button_pos_3_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task())

{ digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "",67 | P a g e

ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = true; dataArray[3] = true; dataArray[4] = false; dataArray[5] = true; dataArray[6] = true; dataArray[7] = true; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; Thread.Sleep(tm); reset(); } }

private void button_pos_4_Click(object sender, EventArgs e) {68 | P a g e

Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = true; dataArray[3] = true; dataArray[4] = true; dataArray[5] = false; dataArray[6] = true; dataArray[7] = true; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; Thread.Sleep(tm); reset(); }69 | P a g e

}

private void button_pos_5_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = true; dataArray[3] = true; dataArray[4] = true; dataArray[5] = true; dataArray[6] = false; dataArray[7] = true; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally {70 | P a g e

Cursor.Current = Cursors.Default; Thread.Sleep(tm); reset(); } }

private void button_pos_6_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines); bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = false; dataArray[2] = true; dataArray[3] = true; dataArray[4] = true; dataArray[5] = true; dataArray[6] = true; dataArray[7] = false; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) {71 | P a g e

MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; // Set the Interval to 5 seconds. Thread.Sleep(tm); reset(); } }

private void button_close_Click(object sender, EventArgs e) { this.Close(); } private void MainForm_Load(object sender, EventArgs e) { } private void button_reset_Click(object sender, EventArgs e) { reset(); } private void reset() { Cursor.Current = Cursors.WaitCursor; try { using (Task digitalWriteTask = new Task()) { digitalWriteTask.DOChannels.CreateChannel(physicalChannelComboBox.Text, "", ChannelLineGrouping.OneChannelForAllLines);72 | P a g e

bool[] dataArray = new bool[8]; dataArray[0] = true; dataArray[1] = true; dataArray[2] = true; dataArray[3] = true; dataArray[4] = true; dataArray[5] = true; dataArray[6] = true; dataArray[7] = true; DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream); writer.WriteSingleSampleMultiLine(true, dataArray); } } catch (DaqException ex) { MessageBox.Show(ex.Message); } finally { Cursor.Current = Cursors.Default; } } } }

73 | P a g e

ANNEXURE B The program was structured to be made in two steps. Step 1 is mainly made "off-line and Step2 mainly on laboratory floor/site with help of the teach pendant. In some cases it was often feasible to do the "code writing" together with the positioning programming at the laboratory floor/site.

Step 1: Code Writing - System configuration - Modules and routines declarations - Data declarations - Program flow and logic routines

Step 2: Position Programming - Physical calibration (TCP's, Co-ordinate systems) - Positioning instructions - Robtargets - Fine tuning

74 | P a g e

NOTE: 1) The program is run in a CONTINOUS CYCLE. 2) The robot is run at a 50% SPEED. 3) The coordinate axes are defined as WORLD COORDINATE AXES prior to starting the program. 4) The robot is CALIBRATED at every start-up due to the absence of BACK-UP BATTERIES. 5) The program is structured using the program flow instruction IF, Input/ Output instructions, Motions settings, Delays. 6) The comments are inserted for only the first position; the rest of the positions can also be commented in a similar way.

75 | P a g e

CODE:

Module Main Mod MovJ MovJ Set Set Set Wait P1, Z50, V250, tool0, P2, Z50, V250, tool0, DO 10_6, 1, DO 10_8, 1, DO 10_2, 1, DI 10_9, 1, (Home Position) (Position above the pallets) (Setting 1 of the 3 Outputs for the End-Effector) (Setting the second Output for the End-Effector) (Setting the output for the NI DAQ6519) (Waiting for input, for selecting pallet position)

IF { MovJ Wait time Set Wait time MovJ Wait time Set Wait time MovJ MovJ MovJ Wait time MovJ Wait time Set MovJ position) Set Set

DI 10_10, 1,

(If position 1 is selected)

P3, Z50, V250, tool0, 5, DO10_7, 1, 5, P4, Z50, V250, tool0, 5, DO10_7, 0, 5, P5, Z50, V250, tool0, P6, Z50, V250, tool0, P7, Z50, V250, tool0, 5, P8, Z50, V250, tool0, 5, DO10_7, 1, P9, Z50, V250, tool0,

(Moving above pallet position one) (Delay) (Opening the End-Effector)

(Moving the End-Effector to hold the pallet)

(PICKING the pallet)

(Moving the pallet above position one) (Moving the robot to an intermediate position) (Moving the robot above the conveyor belt)

(PLACE the pallet on position1on the conveyor)

(Releasing the pallet on position one) (Moving the robot back to the intermediate

DO10_7, 0, DO10_1, 1, (RELEASING the pallet box on the conveyor)76 | P a g e

Wait time Set Set Set Set } END IF

1, DO10_1, 0, DO10_6, 0, DO10_8, 0, DO10_2, 0, (Turning off one of the outputs to the gripper) (Turning off the second output to the gripper) (Turning off the output to the NIDAQ6519)

IF { MovJ Wait time Set Wait time MovJ Wait time Set Wait time MovJ MovJ MovJ Wait time MovJ Set MovJ Set Set Wait time Set Set Set

DI 10_11, 1,

(If position 2 is selected)

P10, Z50, V250, tool0, 5, DO10_7, 1, 5, P11, Z50, V250, tool0, 5, DO10_7, 0, 5, P12, Z50, V250, tool0, P13, Z50, V250, tool0, P14, Z50, V250, tool0, 5, P15, Z50, V250, tool0, DO10_7, 1, P16, Z50, V250, tool0, DO10_7, 0, DO10_1, 1, 1, DO10_1, 0, DO10_6, 0, DO10_8, 0,77 | P a g e

Set } END IF

DO10_2, 0,

IF { MovJ Wait time Set Wait time MovJ Wait time Set Wait time MovJ MovJ MovJ Wait time MovJ Set MovJ Set Set Wait time Set Set Set Set } END IF

DI 10_12, 1,

(If position 3 is selected)

P17, Z50, V250, tool0, 5, DO10_7, 1, 5, P18, Z50, V250, tool0, 5, DO10_7, 0, 5, P19, Z50, V250, tool0, P20, Z50, V250, tool0, P21, Z50, V250, tool0, 5, P22, Z50, V250, tool0, DO10_7, 1, P23, Z50, V250, tool0, DO10_7, 0, DO10_1, 1, 1, DO10_1, 0, DO10_6, 0, DO10_8, 0, DO10_2, 0,

78 | P a g e

IF { MovJ Wait time Set Wait time MovJ Wait time Set Wait time MovJ MovJ MovJ Wait time MovJ Set MovJ Set Set Wait time Set Set Set Set } END IF

DI 10_13, 1,

(If position 4 is selected)

P24, Z50, V250, tool0, 5, DO10_7, 1, 5, P25, Z50, V250, tool0, 5, DO10_7, 0, 5, P26, Z50, V250, tool0, P27, Z50, V250, tool0, P28, Z50, V250, tool0, 5, P29, Z50, V250, tool0, DO10_7, 1, P30, Z50, V250, tool0, DO10_7, 0, DO10_1, 1, 1, DO10_1, 0, DO10_6, 0, DO10_8, 0, DO10_2, 0,

IF { MovJ Wait time

DI 10_14, 1,

(If position 5 is selected)

P31, Z50, V250, tool0, 5,79 | P a g e

Set Wait time MovJ Wait time Set Wait time MovJ MovJ MovJ Wait time MovJ Set MovJ Set Set Wait time Set Set Set Set } END IF

DO10_7, 1, 5, P32, Z50, V250, tool0, 5, DO10_7, 0, 5, P33, Z50, V250, tool0, P34, Z50, V250, tool0, P35, Z50, V250, tool0, 5, P36, Z50, V250, tool0, DO10_7, 1, P37, Z50, V250, tool0, DO10_7, 0, DO10_1, 1, 1, DO10_1, 0, DO10_6, 0, DO10_8, 0, DO10_2, 0,

IF { MovJ Wait time Set Wait time MovJ Wait time

DI 10_15, 1,

(If position 6 is selected)

P38, Z50, V250, tool0, 5, DO10_7, 1, 5, P39, Z50, V250, tool0, 5,80 | P a g e

Set Wait time MovJ MovJ MovJ Wait time MovJ Set MovJ Set Set Wait time Set Set Set Set } END IF

DO10_7, 0, 5, P40, Z50, V250, tool0, P41, Z50, V250, tool0, P42, Z50, V250, tool0, 5, P43, Z50, V250, tool0, DO10_7, 1, P44, Z50, V250, tool0, DO10_7, 0, DO10_1, 1, 1, DO10_1, 0, DO10_6, 0, DO10_8, 0, DO10_2, 0,

81 | P a g e

LIST OF FIGURESPAGE

Figure 1: The Control Process ......................................................................................... 9 Figure 2: Allen Bradley SLC TM 500............................................................................ 13 Figure 3: IRB 2400 ABB Industrial Robot ..................................................................... 18 Figure 4: S4C plus Controller ........................................................................................ 20 Figure 5: Teach Pendant Panel ...................................................................................... 23 Figure 6: Intelitek CIM Conveyor Belt .......................................................................... 26 Figure 7: Pallet Tracking System ................................................................................... 26 Figure 8: Individual Pallet movement on the CIM Conveyor Belt .................................. 27 Figure 9: Electric Parallel Gripper ................................................................................. 30 Figure 10: Cable (KAG500) Specifications ................................................................... 33 Figure 11: Gripper Specifications .................................................................................. 34 Figure 12: CAD Drawings of the Electric Parallel Gripper ............................................ 35 Figure 13: KAG 500 Cable Specifications ..................................................................... 36 Figure 14: Circuit Diagram (NI DAQ 6519) .................................................................. 37 Figure 15: NI PCI 6519 Internal Architecture ................................................................ 39 Figure 16: Physical requirements for NI PCI 6519 ......................................................... 39 Figure 17: 37-pin D-sub Connector ............................................................................... 40 Figure 18: Isolated Outputs............................................................................................ 40 Figure 19: Graphic User Interface for specifying the Position ........................................ 47

82 | P a g e

THE END

83 | P a g e